Commit 26eb01c0 authored by alexpott's avatar alexpott

Issue #2245721 by vijaycs85, YesCT: Add missing configuration schema in language component.

parent f710a6c9
......@@ -106,3 +106,32 @@ language.entity.*:
langcode:
type: string
label: 'Default language'
language.settings:
type: mapping
label: 'Language settings'
mapping:
entities:
type: sequence
label: 'Entity type'
sequence:
- type: sequence
label: 'Bundle'
sequence:
- type: mapping
label: 'Custom language settings'
mapping:
language:
type: mapping
label: 'Custom language settings'
mapping:
default_configuration:
type: mapping
label: 'Default language'
mapping:
langcode:
type: string
label: 'Default language'
language_show:
type: boolean
label: 'Show language selector on create and edit pages'
......@@ -348,7 +348,7 @@ function language_get_default_configuration_settings_key($entity_type, $bundle)
// Replace all the characters that are not letters, numbers or "_" with "_".
$entity_type = preg_replace('/[^0-9a-zA-Z_]/', "_", $entity_type);
$bundle = preg_replace('/[^0-9a-zA-Z_]/', "_", $bundle);
return $entity_type . '.' . $bundle . '.language.default_configuration';
return 'entities.' . $entity_type . '.' . $bundle . '.language.default_configuration';
}
/**
......
<?php
/**
* @file
* Contains \Drupal\language\Tests\LanguageConfigSchemaTest.
*/
namespace Drupal\language\Tests;
use Drupal\config\Tests\ConfigSchemaTestBase;
/**
* Tests the language config schema.
*/
class LanguageConfigSchemaTest extends ConfigSchemaTestBase {
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array('language');
/**
* A user with administrative permissions.
*
* @var \Drupal\user\UserInterface
*/
protected $adminUser;
public static function getInfo() {
return array(
'name' => 'Language config schema',
'description' => 'Ensures the language config schema is correct.',
'group' => 'Language',
);
}
/**
* {@inheritdoc}
*/
function setUp() {
parent::setUp();
// Create user.
$this->adminUser = $this->drupalCreateUser(array('administer languages'));
$this->drupalLogin($this->adminUser);
}
/**
* Tests whether the language config schema is valid.
*/
function testValidLanguageConfigSchema() {
// Make sure no language configuration available by default.
$config_data = \Drupal::config('language.settings')->get();
$this->assertTrue(empty($config_data));
$settings_path = 'admin/config/regional/content-language';
// Enable translation for menu link.
$edit['entity_types[menu_link]'] = TRUE;
$edit['settings[menu_link][menu_link][settings][language][language_show]'] = TRUE;
// Enable translation for user.
$edit['entity_types[user]'] = TRUE;
$edit['settings[user][user][settings][language][language_show]'] = TRUE;
$edit['settings[user][user][settings][language][langcode]'] = 'en';
$this->drupalPostForm($settings_path, $edit, t('Save'));
$config_data = \Drupal::config('language.settings')->get();
// Make sure configuration saved correctly.
$this->assertTrue($config_data['entities']['menu_link']['menu_link']['language']['default_configuration']['language_show']);
$this->assertConfigSchema(\Drupal::service('config.typed'), 'language.settings', $config_data);
}
}
......@@ -460,7 +460,8 @@ function node_uninstall() {
foreach ($types as $config_name) {
$type = \Drupal::config($config_name)->get('type');
if (\Drupal::moduleHandler()->moduleExists('language')) {
\Drupal::config('language.settings')->clear('node. ' . $type . '.language.default_configuration')->save();
$key = language_get_default_configuration_settings_key('node', $type);
\Drupal::config('language.settings')->clear($key)->save();
}
}
......
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