Skip to content
Snippets Groups Projects
Verified Commit 73ec2854 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3428652 by nod_, jmaxant, alexpott, prashant.c, godotislate,...

Issue #3428652 by nod_, jmaxant, alexpott, prashant.c, godotislate, UserOne.se, smustgrave: Broken auto creation of machine name field
parent 6aae9276
No related branches found
No related tags found
23 merge requests!12227Issue #3181946 by jonmcl, mglaman,!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8736Update the Documention As per the Function uses.,!8513Issue #3453786: DefaultSelection should document why values for target_bundles NULL and [] behave as they do,!5423Draft: Resolve #3329907 "Test2",!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3478Issue #3337882: Deleted menus are not removed from content type config,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #261225 passed with warnings
Pipeline: drupal

#261253

    Pipeline: drupal

    #261245

      Pipeline: drupal

      #261234

        ...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
        "once": true, "once": true,
        "CKEditor5": true, "CKEditor5": true,
        "tabbable": true, "tabbable": true,
        "slugify": true, "transliterate": true,
        "bodyScrollLock" : true, "bodyScrollLock" : true,
        "FloatingUIDOM": true "FloatingUIDOM": true
        }, },
        ......
        ...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
        * @internal * @internal
        */ */
        (function ($, Drupal, drupalSettings, slugify) { (function ($, Drupal, drupalSettings, transliterateLibrary) {
        /** /**
        * Trims string by a character. * Trims string by a character.
        * *
        ...@@ -294,21 +294,17 @@ ...@@ -294,21 +294,17 @@
        drupalSettings.transliteration_language_overrides[ drupalSettings.transliteration_language_overrides[
        drupalSettings.langcode drupalSettings.langcode
        ]; ];
        const normalizedLanguageOverrides = {}; const replace = {};
        if (languageOverrides) { if (languageOverrides) {
        Object.keys(languageOverrides).forEach((key) => { Object.keys(languageOverrides).forEach((key) => {
        // Updates the keys from hexadecimal to strings. // Updates the keys from hexadecimal to strings.
        normalizedLanguageOverrides[String.fromCharCode(key)] = replace[String.fromCharCode(key)] = languageOverrides[key];
        languageOverrides[key];
        }); });
        } }
        slugify.config({
        separator: settings.replace,
        allowedChars: settings.replace_pattern,
        replace: normalizedLanguageOverrides,
        });
        return prepareMachineName(slugify(source), settings); const transliteratedSource = transliterateLibrary(source, { replace });
        return prepareMachineName(transliteratedSource, settings);
        }, },
        }; };
        })(jQuery, Drupal, drupalSettings, slugify); })(jQuery, Drupal, drupalSettings, transliterate);
        ...@@ -61,8 +61,7 @@ public function testMachineNameTransliterations($langcode, $input, $output): voi ...@@ -61,8 +61,7 @@ public function testMachineNameTransliterations($langcode, $input, $output): voi
        $this->drupalGet("/admin/people/roles/add"); $this->drupalGet("/admin/people/roles/add");
        $page->find('css', '[data-drupal-selector="edit-label"]')->setValue($input); $page->find('css', '[data-drupal-selector="edit-label"]')->setValue($input);
        $this->assertSession()->pageTextContains($output); $this->assertSession()->elementTextEquals('css', 'span.machine-name-value', $output);
        } }
        /** /**
        ...@@ -78,13 +77,13 @@ public static function machineNameInputOutput(): array { ...@@ -78,13 +77,13 @@ public static function machineNameInputOutput(): array {
        ['de', 'Äwesome', 'aewesome'], ['de', 'Äwesome', 'aewesome'],
        ['da', 'äöüåøhello', 'aouaaoehello'], ['da', 'äöüåøhello', 'aouaaoehello'],
        ['fr', 'ц', 'c'], ['fr', 'ц', 'c'],
        // These tests are not working with chromedriver as ['fr', 'ᐑ', 'wii'],
        // 'ᐑ','𐌰𐌸' chars are not accepted. // This test is not working with chromedriver as '𐌰𐌸' chars are not
        // ['fr', 'ᐑ', 'wii'], // accepted.
        // ['en', '𐌰𐌸', '__'], // ['en', '𐌰𐌸', '__'],
        ['en', 'Ä Ö Ü Å Ø äöüåøhello', 'a_o_u_a_o_aouaohello'], ['en', 'Ä Ö Ü Å Ø äöüåøhello', 'a_o_u_a_o_aouaohello'],
        ['de', 'Ä Ö Ü Å Ø äöüåøhello', 'ae_oe_ue_a_o_aeoeueaohello'], ['de', 'Ä Ö Ü Å Ø äöüåøhello', 'ae_oe_ue_a_o_aeoeueaohello'],
        ['de', ']URY&m_G^;', ' ury_m_g'], ['de', ']URY&m_G^;', 'ury_m_g'],
        ['da', 'Ä Ö Ü Å Ø äöüåøhello', 'a_o_u_aa_oe_aouaaoehello'], ['da', 'Ä Ö Ü Å Ø äöüåøhello', 'a_o_u_aa_oe_aouaaoehello'],
        ['kg', 'ц', 'ts'], ['kg', 'ц', 'ts'],
        ['en', ' Hello Abventor! ', 'hello_abventor'], ['en', ' Hello Abventor! ', 'hello_abventor'],
        ......
        ...@@ -2,42 +2,42 @@ ...@@ -2,42 +2,42 @@
        const MachineNameTestArray = [ const MachineNameTestArray = [
        { {
        machineName: 'Bob', machineName: 'Bob',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'bob', expectedMachineName: 'bob',
        }, },
        { {
        machineName: 'Äwesome', machineName: 'Äwesome',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'awesome', expectedMachineName: 'awesome',
        }, },
        { {
        machineName: 'B?!"@\\/-ob@e', machineName: 'B?!"@\\/-ob@e',
        replacePattern: 'a-zA-Z0-9_.~', replacePattern: '[^a-zA-Z0-9_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'b_ob_e', expectedMachineName: 'b_ob_e',
        }, },
        { {
        machineName: 'Bob@e\\0', machineName: 'Bob@e\\0',
        replacePattern: 'a-zA-Z0-9_.~@', replacePattern: '[^a-zA-Z0-9_.~@]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'bob@e_0', expectedMachineName: 'bob@e_0',
        }, },
        { {
        machineName: 'Bobby', machineName: 'Bobby',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'bobby', expectedMachineName: 'bobby',
        }, },
        { {
        machineName: 'ǍǎǏ', machineName: 'ǍǎǏ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'aai', expectedMachineName: 'aai',
        ...@@ -46,140 +46,140 @@ const MachineNameTestArray = [ ...@@ -46,140 +46,140 @@ const MachineNameTestArray = [
        // the removeDiacritics() function present in PhpTranliteration.php. // the removeDiacritics() function present in PhpTranliteration.php.
        { {
        machineName: 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ', machineName: 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'aaaaaaaeceeeeiiii', expectedMachineName: 'aaaaaaaeceeeeiiii',
        }, },
        { {
        machineName: 'ÐÑÒÓÔÕÖרÙÚÛÜÝÞß', machineName: 'ÐÑÒÓÔÕÖרÙÚÛÜÝÞß',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'dnoooooxouuuuuthss', expectedMachineName: 'dnoooooxouuuuuthss',
        }, },
        { {
        machineName: 'àáâãäåæçèéêëìíîï', machineName: 'àáâãäåæçèéêëìíîï',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'aaaaaaaeceeeeiiii', expectedMachineName: 'aaaaaaaeceeeeiiii',
        }, },
        { {
        machineName: 'ðñòóôõö÷øùúûüýþÿ', machineName: 'ðñòóôõö÷øùúûüýþÿ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'dnooooo_ouuuuythy', expectedMachineName: 'dnooooo_ouuuuythy',
        }, },
        { {
        machineName: 'ĀāĂ㥹ĆćĈĉĊċČčĎď', machineName: 'ĀāĂ㥹ĆćĈĉĊċČčĎď',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'aaaaaaccccccccdd', expectedMachineName: 'aaaaaaccccccccdd',
        }, },
        { {
        machineName: 'ĐđĒēĔĕĖėĘęĚěĜĝĞğ', machineName: 'ĐđĒēĔĕĖėĘęĚěĜĝĞğ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'ddeeeeeeeeeegggg', expectedMachineName: 'ddeeeeeeeeeegggg',
        }, },
        { {
        machineName: 'ĠġĢģĤĥĦħĨĩĪīĬĭĮį', machineName: 'ĠġĢģĤĥĦħĨĩĪīĬĭĮį',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'gggghhhhiiiiiiii', expectedMachineName: 'gggghhhhiiiiiiii',
        }, },
        { {
        machineName: 'İıIJijĴĵĶķĸĹĺĻļĽľĿ', machineName: 'İıIJijĴĵĶķĸĹĺĻļĽľĿ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'iiijijjjkkklllllll', expectedMachineName: 'iiijijjjkkklllllll',
        }, },
        { {
        machineName: 'ŀŁłŃńŅņŇňʼnŊŋŌōŎŏ', machineName: 'ŀŁłŃńŅņŇňʼnŊŋŌōŎŏ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'lllnnnnnn_nngngoooo', expectedMachineName: 'lllnnnnnn_nngngoooo',
        }, },
        { {
        machineName: 'ŐőŒœŔŕŖŗŘřŚśŜŝŞş', machineName: 'ŐőŒœŔŕŖŗŘřŚśŜŝŞş',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'oooeoerrrrrrssssss', expectedMachineName: 'oooeoerrrrrrssssss',
        }, },
        { {
        machineName: 'ŠšŢţŤťŦŧŨũŪūŬŭŮů', machineName: 'ŠšŢţŤťŦŧŨũŪūŬŭŮů',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'ssttttttuuuuuuuu', expectedMachineName: 'ssttttttuuuuuuuu',
        }, },
        { {
        machineName: 'ŰűŲųŴŵŶŷŸŹźŻżŽž', machineName: 'ŰűŲųŴŵŶŷŸŹźŻżŽž',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'uuuuwwyyyzzzzzz', expectedMachineName: 'uuuuwwyyyzzzzzz',
        }, },
        { {
        machineName: 'ǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟ', machineName: 'ǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'ioouuuuuuuuuu_aa', expectedMachineName: 'ioouuuuuuuuuu_aa',
        }, },
        { {
        machineName: 'ǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯ', machineName: 'ǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'aaaeaeggggkkoooozhzh', expectedMachineName: 'aaaeaeggggkkoooozhzh',
        }, },
        { {
        machineName: 'ǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ', machineName: 'ǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'jdzddzgghvwnnaaaeaeoo', expectedMachineName: 'jdzddzgghvwnnaaaeaeoo',
        }, },
        { {
        machineName: 'ȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏ', machineName: 'ȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'aaaaeeeeiiiioooo', expectedMachineName: 'aaaaeeeeiiiioooo',
        }, },
        { {
        machineName: 'ȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟ', machineName: 'ȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'rrrruuuussttyyhh', expectedMachineName: 'rrrruuuussttyyhh',
        }, },
        { {
        machineName: 'ȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯ', machineName: 'ȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'ndououzzaaeeoooooo', expectedMachineName: 'ndououzzaaeeoooooo',
        }, },
        { {
        machineName: 'ȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ', machineName: 'ȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'ooyylntjdbqpacclts', expectedMachineName: 'ooyylntjdbqpacclts',
        }, },
        { {
        machineName: 'ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏ', machineName: 'ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏ',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'z_buveejjqqrryy', expectedMachineName: 'z_buveejjqqrryy',
        ...@@ -187,25 +187,39 @@ const MachineNameTestArray = [ ...@@ -187,25 +187,39 @@ const MachineNameTestArray = [
        // Test for maximum length of machine-name // Test for maximum length of machine-name
        { {
        machineName: 'This is the test for max length', machineName: 'This is the test for max length',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 20, maxlength: 20,
        expectedMachineName: 'this_is_the_test_for', expectedMachineName: 'this_is_the_test_for',
        }, },
        { {
        machineName: 'Ma@Chi!~', machineName: 'Ma@Chi!~',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '_', replaceChar: '_',
        maxlength: 5, maxlength: 5,
        expectedMachineName: 'ma_ch', expectedMachineName: 'ma_ch',
        }, },
        { {
        machineName: 'Test for custom replace character', machineName: 'Test for custom replace character',
        replacePattern: 'a-zA-Z0-9-_.~', replacePattern: '[^a-zA-Z0-9-_.~]+',
        replaceChar: '-', replaceChar: '-',
        maxlength: 64, maxlength: 64,
        expectedMachineName: 'test-for-custom-replace-character', expectedMachineName: 'test-for-custom-replace-character',
        }, },
        {
        machineName: 'Test for unusual replace pattern',
        replacePattern: '([^a-z0-9_]+)|(^custom$)',
        replaceChar: '_',
        maxlength: 64,
        expectedMachineName: 'test_for_unusual_replace_pattern',
        },
        {
        machineName: 'custom',
        replacePattern: '([^a-z0-9_]+)|(^custom$)',
        replaceChar: '_',
        maxlength: 64,
        expectedMachineName: '_',
        },
        // cSpell:enable // cSpell:enable
        ]; ];
        module.exports = { module.exports = {
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Please register or to comment