Issue #1947814 by vijaycs85, Gábor Hojtsy, tim.plunkett: Fixed New config entities often save as langcode: und incorrectly.
parent
a6ef010633
commit
e97a786c05
|
@ -284,6 +284,9 @@ class ConfigStorageController implements EntityStorageControllerInterface {
|
|||
public function create(array $values) {
|
||||
$class = $this->entityInfo['class'];
|
||||
|
||||
// Set default language to site default if not provided.
|
||||
$values += array('langcode' => language_default()->langcode);
|
||||
|
||||
$entity = new $class($values, $this->entityType);
|
||||
// Mark this entity as new, so isNew() returns TRUE. This does not check
|
||||
// whether a configuration entity with the same ID (if any) already exists.
|
||||
|
|
|
@ -80,6 +80,15 @@ class EntityFormController implements EntityFormControllerInterface {
|
|||
if (!empty($info['fieldable'])) {
|
||||
field_attach_form($entity, $form, $form_state, $this->getFormLangcode($form_state));
|
||||
}
|
||||
if (!isset($form['langcode'])) {
|
||||
// If the form did not specify otherwise, default to keeping the existing
|
||||
// language of the entity or defaulting to the site default language for
|
||||
// new entities.
|
||||
$form['langcode'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => !$entity->isNew() ? $entity->langcode : language_default()->langcode,
|
||||
);
|
||||
}
|
||||
return $form;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,3 +2,4 @@ id: basic
|
|||
label: Basic block
|
||||
revision: '0'
|
||||
description: A basic block contains a title and a body.
|
||||
langcode: en
|
||||
|
|
|
@ -64,6 +64,10 @@ class CustomBlockTypeTest extends CustomBlockTestBase {
|
|||
$this->drupalPost('admin/structure/custom-blocks/add', $edit, t('Save'));
|
||||
$block_type = entity_load('custom_block_type', 'foo');
|
||||
$this->assertTrue($block_type, 'The new block type has been created.');
|
||||
|
||||
// Check that the block type was created in site default language.
|
||||
$default_langcode = language_default()->langcode;
|
||||
$this->assertEqual($block_type->langcode, $default_langcode);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -104,7 +104,7 @@ class BlockStorageUnitTest extends DrupalUnitTestBase {
|
|||
'cache' => '1',
|
||||
'admin_label' => t('Test block html id'),
|
||||
),
|
||||
'langcode' => LANGUAGE_NOT_SPECIFIED,
|
||||
'langcode' => language_default()->langcode,
|
||||
);
|
||||
$this->assertIdentical($actual_properties, $expected_properties, 'The block properties are exported correctly.');
|
||||
|
||||
|
|
|
@ -35,13 +35,14 @@ class ConfigEntityTest extends WebTestBase {
|
|||
*/
|
||||
function testCRUD() {
|
||||
$manifest_name = 'manifest.config_test.dynamic';
|
||||
$default_langcode = language_default()->langcode;
|
||||
// Verify default properties on a newly created empty entity.
|
||||
$empty = entity_create('config_test', array());
|
||||
$this->assertIdentical($empty->id, NULL);
|
||||
$this->assertTrue($empty->uuid);
|
||||
$this->assertIdentical($empty->label, NULL);
|
||||
$this->assertIdentical($empty->style, NULL);
|
||||
$this->assertIdentical($empty->langcode, LANGUAGE_NOT_SPECIFIED);
|
||||
$this->assertIdentical($empty->langcode, $default_langcode);
|
||||
|
||||
// Verify ConfigEntity properties/methods on the newly created empty entity.
|
||||
$this->assertIdentical($empty->isNew(), TRUE);
|
||||
|
@ -55,7 +56,7 @@ class ConfigEntityTest extends WebTestBase {
|
|||
$this->assertTrue($empty->get('uuid'));
|
||||
$this->assertIdentical($empty->get('label'), NULL);
|
||||
$this->assertIdentical($empty->get('style'), NULL);
|
||||
$this->assertIdentical($empty->get('langcode'), LANGUAGE_NOT_SPECIFIED);
|
||||
$this->assertIdentical($empty->get('langcode'), $default_langcode);
|
||||
|
||||
// Verify Entity properties/methods on the newly created empty entity.
|
||||
$this->assertIdentical($empty->isNewRevision(), FALSE);
|
||||
|
@ -97,7 +98,7 @@ class ConfigEntityTest extends WebTestBase {
|
|||
$this->assertNotEqual($config_test->uuid, $empty->uuid);
|
||||
$this->assertIdentical($config_test->label, $expected['label']);
|
||||
$this->assertIdentical($config_test->style, $expected['style']);
|
||||
$this->assertIdentical($config_test->langcode, LANGUAGE_NOT_SPECIFIED);
|
||||
$this->assertIdentical($config_test->langcode, $default_langcode);
|
||||
|
||||
// Verify methods on the newly created entity.
|
||||
$this->assertIdentical($config_test->isNew(), TRUE);
|
||||
|
|
|
@ -110,7 +110,7 @@ class ConfigImportTest extends DrupalUnitTestBase {
|
|||
'label' => 'New',
|
||||
'style' => '',
|
||||
'status' => '1',
|
||||
'langcode' => 'und',
|
||||
'langcode' => language_default()->langcode,
|
||||
'protected_property' => '',
|
||||
);
|
||||
$staging->write($dynamic_name, $original_dynamic_data);
|
||||
|
|
|
@ -61,7 +61,7 @@ class ConfigImportUITest extends WebTestBase {
|
|||
'label' => 'New',
|
||||
'style' => '',
|
||||
'status' => '1',
|
||||
'langcode' => 'und',
|
||||
'langcode' => language_default()->langcode,
|
||||
'protected_property' => '',
|
||||
);
|
||||
$staging->write($dynamic_name, $original_dynamic_data);
|
||||
|
|
|
@ -3,3 +3,4 @@ label: 'Website feedback'
|
|||
recipients: []
|
||||
reply: ''
|
||||
weight: '0'
|
||||
langcode: en
|
||||
|
|
|
@ -82,6 +82,11 @@ class ContactSitewideTest extends WebTestBase {
|
|||
$this->addCategory($id = drupal_strtolower($this->randomName(16)), $label = $this->randomName(16), implode(',', array($recipients[0])), '', TRUE);
|
||||
$this->assertRaw(t('Category %label has been added.', array('%label' => $label)));
|
||||
|
||||
// Check that the category was created in site default language.
|
||||
$langcode = config('contact.category.' . $id)->get('langcode');
|
||||
$default_langcode = language_default()->langcode;
|
||||
$this->assertEqual($langcode, $default_langcode);
|
||||
|
||||
// Make sure the newly created category is included in the list of categories.
|
||||
$this->assertNoUniqueText($label, 'New category included in categories list.');
|
||||
|
||||
|
|
|
@ -169,6 +169,11 @@ function filter_admin_format_form($form, &$form_state, $format) {
|
|||
'#disabled' => !empty($format->format),
|
||||
'#weight' => -20,
|
||||
);
|
||||
// @todo Remove once moved to FilterFormatFormController.
|
||||
$form['langcode'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => !$format->isNew() ? $format->langcode : language_default()->langcode,
|
||||
);
|
||||
|
||||
// Add user role access selection.
|
||||
$form['roles'] = array(
|
||||
|
|
|
@ -84,6 +84,7 @@ class FilterCrudTest extends WebTestBase {
|
|||
*/
|
||||
function verifyTextFormat($format) {
|
||||
$t_args = array('%format' => $format->name);
|
||||
$default_langcode = language_default()->langcode;
|
||||
|
||||
// Verify filter_format_load().
|
||||
$filter_format = filter_format_load($format->format);
|
||||
|
@ -91,6 +92,8 @@ class FilterCrudTest extends WebTestBase {
|
|||
$this->assertEqual($filter_format->name, $format->name, format_string('filter_format_load: Proper title for text format %format.', $t_args));
|
||||
$this->assertEqual($filter_format->cache, $format->cache, format_string('filter_format_load: Proper cache indicator for text format %format.', $t_args));
|
||||
$this->assertEqual($filter_format->weight, $format->weight, format_string('filter_format_load: Proper weight for text format %format.', $t_args));
|
||||
// Check that the filter was created in site default language.
|
||||
$this->assertEqual($format->langcode, $default_langcode, format_string('filter_format_load: Proper language code for text format %format.', $t_args));
|
||||
|
||||
// Verify the 'cache' text format property according to enabled filters.
|
||||
$filter_info = filter_get_filters();
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
id: anonymous
|
||||
label: Anonymous user
|
||||
weight: 0
|
||||
langcode: en
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
id: authenticated
|
||||
label: Authenticated user
|
||||
weight: 1
|
||||
langcode: en
|
||||
|
|
|
@ -32,6 +32,7 @@ class UserRoleAdminTest extends WebTestBase {
|
|||
*/
|
||||
function testRoleAdministration() {
|
||||
$this->drupalLogin($this->admin_user);
|
||||
$default_langcode = language_default()->langcode;
|
||||
|
||||
// Test adding a role. (In doing so, we use a role name that happens to
|
||||
// correspond to an integer, to test that the role administration pages
|
||||
|
@ -43,6 +44,9 @@ class UserRoleAdminTest extends WebTestBase {
|
|||
$role = entity_load('user_role', $role_name);
|
||||
$this->assertTrue(is_object($role), 'The role was successfully retrieved from the database.');
|
||||
|
||||
// Check that the role was created in site default language.
|
||||
$this->assertEqual($role->langcode, $default_langcode);
|
||||
|
||||
// Try adding a duplicate role.
|
||||
$this->drupalPost(NULL, $edit, t('Add role'));
|
||||
$this->assertRaw(t('The machine-readable name is already in use. It must be unique.'), 'Duplicate role warning displayed.');
|
||||
|
|
|
@ -1004,6 +1004,11 @@ function user_admin_role($form, $form_state, $role) {
|
|||
'source' => array('role', 'label'),
|
||||
),
|
||||
);
|
||||
// @todo Remove once moved to RoleFormController.
|
||||
$form['role']['langcode'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => !$role->isNew() ? $role->langcode : language_default()->langcode,
|
||||
);
|
||||
$form['role']['weight'] = array(
|
||||
'#type' => 'value',
|
||||
'#value' => $role->weight,
|
||||
|
|
Loading…
Reference in New Issue