Skip to content
Snippets Groups Projects
Commit 0069d077 authored by catch's avatar catch
Browse files

Issue #2613222 by webflo, alexpott, ameymudras, pooja saraah, _utsavsharma,...

Issue #2613222 by webflo, alexpott, ameymudras, pooja saraah, _utsavsharma, penyaskito, Janvi Dasani: Language module shouldn't alter config in sync mode

(cherry picked from commit 7e2db381)
parent 1b4b5e52
No related branches found
No related tags found
26 merge requests!11185Issue #3477324 by andypost, alexpott: Fix usage of str_getcsv() and fgetcsv() for PHP 8.4,!10602Issue #3438769 by vinmayiswamy, antonnavi, michelle, amateescu: Sub workspace does not clear,!10301Issue #3469309 by mstrelan, smustgrave, moshe weitzman: Use one-time login...,!10187Issue #3487488 by dakwamine: ExtensionMimeTypeGuesser::guessMimeType must support file names with "0" (zero) like foo.0.zip,!9944Issue #3483353: Consider making the createCopy config action optionally fail...,!9929Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9787Resolve issue 3479427 - bootstrap barrio issue under Windows,!9742Issue #3463908 by catch, quietone: Split OptionsFieldUiTest into two,!9526Issue #3458177 by mondrake, catch, quietone, godotislate, longwave, larowlan,...,!8738Issue #3424162 by camilledavis, dineshkumarbollu, smustgrave: Claro...,!8704Make greek characters available in ckeditor5,!8597Draft: Issue #3442259 by catch, quietone, dww: Reduce time of Migrate Upgrade tests...,!8533Issue #3446962 by kim.pepper: Remove incorrectly added...,!8517Issue #3443748 by NexusNovaz, smustgrave: Testcase creates false positive,!8325Update file Sort.php,!8095Expose document root on install,!7930Resolve #3427374 "Taxonomytid viewsargumentdefault plugin",!7627Issue #3439440 by nicxvan, Binoli Lalani, longwave: Remove country support from DateFormatter,!7445Issue #3440169: When using drupalGet(), provide an associative array for $headers,!7401#3271894 Fix documented StreamWrapperInterface return types for realpath() and dirname(),!7384Add constraints to system.advisories,!7078Issue #3320569 by Spokje, mondrake, smustgrave, longwave, quietone, Lendude,...,!6622Issue #2559833 by piggito, mohit_aghera, larowlan, guptahemant, vakulrai,...,!6502Draft: Resolve #2938524 "Plach testing issue",!38582585169-10.1.x,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key
Pipeline #103983 passed with warnings
Pipeline: drupal

#104009

    Pipeline: drupal

    #103999

      Pipeline: drupal

      #103992

        +1
        ......@@ -7,12 +7,15 @@
        use Drupal\Core\Url;
        use Drupal\Core\Access\AccessResult;
        use Drupal\Core\Config\FileStorage;
        use Drupal\Core\Config\InstallStorage;
        use Drupal\Core\Entity\ContentEntityFormInterface;
        use Drupal\Core\Entity\EntityFormInterface;
        use Drupal\Core\Entity\EntityInterface;
        use Drupal\Core\Field\FieldDefinitionInterface;
        use Drupal\Core\Field\FieldItemListInterface;
        use Drupal\Core\Form\FormStateInterface;
        use Drupal\Core\Installer\InstallerKernel;
        use Drupal\Core\Language\LanguageInterface;
        use Drupal\Core\Routing\RouteMatchInterface;
        use Drupal\Core\Session\AccountInterface;
        ......@@ -289,8 +292,26 @@ function language_negotiation_url_prefixes_update() {
        /**
        * Implements hook_modules_installed().
        */
        function language_modules_installed($modules) {
        function language_modules_installed($modules, $is_syncing) {
        if ($is_syncing) {
        return;
        }
        if (!in_array('language', $modules)) {
        if (InstallerKernel::installationAttempted()) {
        // If the install profile provides its own language.types configuration do
        // not overwrite it.
        $profile_directory = \Drupal::service('extension.list.profile')->getPath(\Drupal::installProfile());
        $profile_storages = [
        new FileStorage($profile_directory . '/' . InstallStorage::CONFIG_INSTALL_DIRECTORY),
        new FileStorage($profile_directory . '/' . InstallStorage::CONFIG_OPTIONAL_DIRECTORY),
        ];
        foreach ($profile_storages as $storage) {
        if ($storage->exists('language.types')) {
        return;
        }
        }
        }
        // Since newly (un)installed modules may change the default settings for
        // non-locked language types (e.g. content language), we need to resave the
        // language type configuration.
        ......@@ -318,8 +339,8 @@ function language_modules_installed($modules) {
        /**
        * Implements hook_modules_uninstalled().
        */
        function language_modules_uninstalled($modules) {
        language_modules_installed($modules);
        function language_modules_uninstalled($modules, $is_syncing) {
        language_modules_installed($modules, $is_syncing);
        }
        /**
        ......
        <?php
        namespace Drupal\Tests\language\Functional;
        use Drupal\Tests\BrowserTestBase;
        /**
        * Ensures the language config is installed but not altered on install.
        *
        * @group language
        */
        class LanguageConfigInstallOverrideExistingTest extends BrowserTestBase {
        /**
        * {@inheritdoc}
        */
        protected $profile = 'test_language_negotiation';
        /**
        * {@inheritdoc}
        */
        protected $defaultTheme = 'stark';
        /**
        * Tests when language config is installed existing config is not overridden.
        */
        public function testLanguageConfigInstallOverrideExisting() {
        /** @var \Drupal\Core\Config\StorageInterface $storage */
        $storage = $this->container->get('config.storage');
        $config = $this->config('language.types');
        // The negotiation methods that have been removed should be disabled after
        // purging if not avoided in language_modules_installed().
        $language_types_data = $storage->read('language.types');
        $this->assertTrue(isset($language_types_data['negotiation']['language_content']['enabled']['test_language_negotiation_method']));
        $this->assertTrue(isset($language_types_data['negotiation']['language_content']['enabled']['language-selected']));
        $this->assertEquals(-10, $config->get('negotiation.language_content.enabled.test_language_negotiation_method'));
        $this->assertEquals(12, $config->get('negotiation.language_content.enabled.language-selected'));
        }
        }
        all:
        - language_interface
        - language_content
        - language_url
        configurable:
        - language_interface
        - language_content
        negotiation:
        language_content:
        enabled:
        test_language_negotiation_method: -10
        language-url: -8
        language-selected: 12
        method_weights:
        test_language_negotiation_method: -10
        language-content-entity: -9
        language-url: -8
        language-session: -6
        language-user: -4
        language-browser: -2
        language-interface: 9
        language-selected: 12
        language_url:
        enabled:
        language-url: 0
        language-url-fallback: 1
        language_interface:
        enabled:
        language-user-admin: -20
        language-user: -19
        language-url: -18
        language-selected: -15
        method_weights:
        language-user-admin: -20
        language-user: -19
        language-url: -18
        language-session: -17
        language-browser: -16
        language-selected: -15
        name: Testing language negotiation
        type: profile
        description: 'Minimal profile for running tests related the language negotiation.'
        version: VERSION
        hidden: true
        install:
        - drupal:language
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment