Issue #2245721 by vijaycs85, YesCT: Add missing configuration schema in language component.
							parent
							
								
									f710a6c92e
								
							
						
					
					
						commit
						26eb01c06d
					
				| 
						 | 
				
			
			@ -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';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
<?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();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue