diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 869cae81bd47aab168cb91d6b5acf8babd7484e2..a869d90b533a939fac656db599e8aa7d43f8d3e4 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -415,6 +415,7 @@ function install_begin_request($class_loader, &$install_state) { else { $environment = 'prod'; } + $GLOBALS['conf']['container_service_providers']['InstallerConfigOverride'] = 'Drupal\Core\Installer\ConfigOverride'; // Only allow dumping the container once the hash salt has been created. $kernel = InstallerKernel::createFromRequest($request, $class_loader, $environment, (bool) Settings::get('hash_salt', FALSE)); diff --git a/core/lib/Drupal/Core/Installer/ConfigOverride.php b/core/lib/Drupal/Core/Installer/ConfigOverride.php new file mode 100644 index 0000000000000000000000000000000000000000..ff8d068b2fec360582815ad675a8e3457126098d --- /dev/null +++ b/core/lib/Drupal/Core/Installer/ConfigOverride.php @@ -0,0 +1,62 @@ +register('core.install_config_override', static::class) + ->addTag('config.factory.override'); + } + + /** + * {@inheritdoc} + */ + public function loadOverrides($names) { + $overrides = []; + if (drupal_installation_attempted() && function_exists('drupal_install_profile_distribution_name')) { + // Early in the installer the site name is unknown. In this case we need + // to fallback to the distribution's name. + $overrides['system.site'] = [ + 'name' => drupal_install_profile_distribution_name(), + ]; + } + return $overrides; + } + + /** + * {@inheritdoc} + */ + public function getCacheSuffix() { + return 'core.install_config_override'; + } + + /** + * {@inheritdoc} + */ + public function createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) { + return NULL; + } + + /** + * {@inheritdoc} + */ + public function getCacheableMetadata($name) { + return new CacheableMetadata(); + } + +} diff --git a/core/modules/system/config/install/system.site.yml b/core/modules/system/config/install/system.site.yml index b5a932b6cbbc55df6f26746d21222529fb054f77..d1ab8de7c6bdc9098bd5e08060875fadb6a53d30 100644 --- a/core/modules/system/config/install/system.site.yml +++ b/core/modules/system/config/install/system.site.yml @@ -1,5 +1,5 @@ uuid: '' -name: 'Drupal' +name: '' mail: '' slogan: '' page: diff --git a/core/modules/system/src/Tests/Installer/DistributionProfileTest.php b/core/modules/system/src/Tests/Installer/DistributionProfileTest.php index e52b0469bbf49848819d3fa5596931cbdc541892..3d2c4c44ab6fe7d37d3f0b23cec659a842d8787a 100644 --- a/core/modules/system/src/Tests/Installer/DistributionProfileTest.php +++ b/core/modules/system/src/Tests/Installer/DistributionProfileTest.php @@ -46,6 +46,8 @@ protected function setUp() { protected function setUpLanguage() { // Verify that the distribution name appears. $this->assertRaw($this->info['distribution']['name']); + // Verify that the distribution name is used in the site title. + $this->assertTitle('Choose language | ' . $this->info['distribution']['name']); // Verify that the requested theme is used. $this->assertRaw($this->info['distribution']['install']['theme']); // Verify that the "Choose profile" step does not appear. diff --git a/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php b/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php index a608cada77f342b30a1096ef0b10d2a029395d90..dcde753d767d61acd15b10b6c168f6d3055a8bc1 100644 --- a/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php +++ b/core/modules/system/src/Tests/Installer/InstallerTranslationMultipleLanguageTest.php @@ -51,13 +51,29 @@ protected function getPo($langcode) { msgid "Language" msgstr "Language $langcode" + +#: Testing site name configuration during the installer. +msgid "Drupal" +msgstr "Drupal" ENDPO; } + /** + * {@inheritdoc} + */ + protected function installParameters() { + $params = parent::installParameters(); + $params['forms']['install_configure_form']['site_name'] = 'SITE_NAME_' . $this->langcode; + return $params; + } + /** * Tests that translations ended up at the expected places. */ public function testTranslationsLoaded() { + // Ensure the title is correct. + $this->assertEqual('SITE_NAME_' . $this->langcode, \Drupal::config('system.site')->get('name')); + // Verify German and Spanish were configured. $this->drupalGet('admin/config/regional/language'); $this->assertText('German');