Commit e97a786c authored by alexpott's avatar alexpott

Issue #1947814 by vijaycs85, Gábor Hojtsy, tim.plunkett: Fixed New config...

Issue #1947814 by vijaycs85, Gábor Hojtsy, tim.plunkett: Fixed New config entities often save as langcode: und incorrectly.
parent a6ef0106
......@@ -284,6 +284,9 @@ protected function attachLoad(&$queried_entities, $revision_id = FALSE) {
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 @@ public function form(array $form, array &$form_state, EntityInterface $entity) {
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 @@ public function testCustomBlockTypeCreation() {
$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 @@ protected function createTests() {
'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 @@ public static function getInfo() {
*/
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 @@ function testCRUD() {
$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 @@ function testCRUD() {
$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 @@ function testNew() {
'label' => 'New',
'style' => '',
'status' => '1',
'langcode' => 'und',
'langcode' => language_default()->langcode,
'protected_property' => '',
);
$staging->write($dynamic_name, $original_dynamic_data);
......
......@@ -61,7 +61,7 @@ function testImport() {
'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 @@ function testSiteWideContact() {
$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 @@ function testTextFormatCrud() {
*/
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 @@ function verifyTextFormat($format) {
$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();
......
id: anonymous
label: Anonymous user
weight: 0
langcode: en
id: authenticated
label: Authenticated user
weight: 1
langcode: en
......@@ -32,6 +32,7 @@ function setUp() {
*/
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 @@ function testRoleAdministration() {
$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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment