diff --git a/composer.lock b/composer.lock index d1ccce8c0fb4f79a16438f5552420ee0029d757e..a845a7ce3f02a7bd048cf55e542eea0ec3ffea9c 100644 --- a/composer.lock +++ b/composer.lock @@ -7008,20 +7008,20 @@ }, { "name": "drupal/webform", - "version": "6.2.3", + "version": "6.2.7", "source": { "type": "git", "url": "https://git.drupalcode.org/project/webform.git", - "reference": "6.2.3" + "reference": "6.2.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/webform-6.2.3.zip", - "reference": "6.2.3", - "shasum": "b23b2746643ef11ee764ac420a02e2162d727930" + "url": "https://ftp.drupal.org/files/projects/webform-6.2.7.zip", + "reference": "6.2.7", + "shasum": "7e0520773f2521d70837371b08e09a13704b4274" }, "require": { - "drupal/core": "^9.4 || ^10", + "drupal/core": "^10.1", "php": ">=8.1" }, "require-dev": { @@ -7038,6 +7038,7 @@ "drupal/group": "1.x-dev", "drupal/hal": "1 - 2", "drupal/jquery_ui": "1.x-dev", + "drupal/jquery_ui_button": "2.x-dev", "drupal/jquery_ui_checkboxradio": "2.x-dev", "drupal/jquery_ui_datepicker": "2.x-dev", "drupal/mailsystem": "4.x-dev", @@ -7061,14 +7062,14 @@ "drupal/webform_ui": "*" }, "suggest": { - "drupal/jquery_ui_checkboxradio": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", + "drupal/jquery_ui_buttons": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", "drupal/jquery_ui_datepicker": "Provides jQuery UI Datepicker library. Required to support datepickers. The Webform jQueryUI Datepicker module is deprecated because jQueryUI is no longer maintained." }, "type": "drupal-module", "extra": { "drupal": { - "version": "6.2.3", - "datestamp": "1719431562", + "version": "6.2.7", + "datestamp": "1721425228", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 168a73c3fc9f425254abcbac1e1c3ced29136fba..92e86a3a61f3af6f3d46993054662d83f09df000 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -7368,21 +7368,21 @@ }, { "name": "drupal/webform", - "version": "6.2.3", - "version_normalized": "6.2.3.0", + "version": "6.2.7", + "version_normalized": "6.2.7.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/webform.git", - "reference": "6.2.3" + "reference": "6.2.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/webform-6.2.3.zip", - "reference": "6.2.3", - "shasum": "b23b2746643ef11ee764ac420a02e2162d727930" + "url": "https://ftp.drupal.org/files/projects/webform-6.2.7.zip", + "reference": "6.2.7", + "shasum": "7e0520773f2521d70837371b08e09a13704b4274" }, "require": { - "drupal/core": "^9.4 || ^10", + "drupal/core": "^10.1", "php": ">=8.1" }, "require-dev": { @@ -7399,6 +7399,7 @@ "drupal/group": "1.x-dev", "drupal/hal": "1 - 2", "drupal/jquery_ui": "1.x-dev", + "drupal/jquery_ui_button": "2.x-dev", "drupal/jquery_ui_checkboxradio": "2.x-dev", "drupal/jquery_ui_datepicker": "2.x-dev", "drupal/mailsystem": "4.x-dev", @@ -7422,14 +7423,14 @@ "drupal/webform_ui": "*" }, "suggest": { - "drupal/jquery_ui_checkboxradio": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", + "drupal/jquery_ui_buttons": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", "drupal/jquery_ui_datepicker": "Provides jQuery UI Datepicker library. Required to support datepickers. The Webform jQueryUI Datepicker module is deprecated because jQueryUI is no longer maintained." }, "type": "drupal-module", "extra": { "drupal": { - "version": "6.2.3", - "datestamp": "1719431562", + "version": "6.2.7", + "datestamp": "1721425228", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 9ccf9a262191434d3e576bbe6f8ce13ce09d1c33..47fd22c30b5a91912ee0151f4ef9e5ae4441779b 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'osu-asc-webservices/d8-upstream', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '32b1bbd2a2e8392932155e562c704cc2dc5f9a9d', + 'reference' => 'fb901b6d5ef870c82e2313a73321a067dec23243', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -1214,9 +1214,9 @@ 'dev_requirement' => false, ), 'drupal/webform' => array( - 'pretty_version' => '6.2.3', - 'version' => '6.2.3.0', - 'reference' => '6.2.3', + 'pretty_version' => '6.2.7', + 'version' => '6.2.7.0', + 'reference' => '6.2.7', 'type' => 'drupal-module', 'install_path' => __DIR__ . '/../../web/modules/webform', 'aliases' => array(), @@ -1555,7 +1555,7 @@ 'osu-asc-webservices/d8-upstream' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '32b1bbd2a2e8392932155e562c704cc2dc5f9a9d', + 'reference' => 'fb901b6d5ef870c82e2313a73321a067dec23243', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/web/modules/webform/.gitlab-ci.yml b/web/modules/webform/.gitlab-ci.yml index ba1df6272af7772cb8eb1e844fdb10cb42d94cfd..b8dbcd71e682fc376f081aef6d2853117e67cacb 100644 --- a/web/modules/webform/.gitlab-ci.yml +++ b/web/modules/webform/.gitlab-ci.yml @@ -50,9 +50,9 @@ include: # SKIP_ESLINT: '1' variables: - _TARGET_PHP: "8.1" - _TARGET_CORE: "10.1.3" SYMFONY_DEPRECATIONS_HELPER: disabled + OPT_IN_TEST_PREVIOUS_MINOR: 1 + OPT_IN_TEST_NEXT_MINOR: 1 ################################################################################### # diff --git a/web/modules/webform/composer.json b/web/modules/webform/composer.json index ea7bf77c82c7a1c9402fefc683509da172c3cbf6..bc9b31033c1d3ca70269542a75a2467d041f37da 100644 --- a/web/modules/webform/composer.json +++ b/web/modules/webform/composer.json @@ -31,7 +31,7 @@ } }, "require": { - "drupal/core": "^9.4 || ^10", + "drupal/core": "^10.1", "php": ">=8.1" }, "require-dev": { @@ -47,6 +47,7 @@ "drupal/group": "1.x-dev", "drupal/hal" : "1 - 2", "drupal/jquery_ui": "1.x-dev", + "drupal/jquery_ui_button": "2.x-dev", "drupal/jquery_ui_checkboxradio": "2.x-dev", "drupal/jquery_ui_datepicker": "2.x-dev", "drupal/mailsystem": "4.x-dev", @@ -60,7 +61,7 @@ "drupal/variationcache": "1.x-dev" }, "suggest": { - "drupal/jquery_ui_checkboxradio": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", + "drupal/jquery_ui_buttons": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", "drupal/jquery_ui_datepicker": "Provides jQuery UI Datepicker library. Required to support datepickers. The Webform jQueryUI Datepicker module is deprecated because jQueryUI is no longer maintained." } } diff --git a/web/modules/webform/config/install/webform.settings.yml b/web/modules/webform/config/install/webform.settings.yml index c30ae577db1c586db4b5011228b386eba4fe28b7..6876c05778f41a9b99ae6bc87cda0340cda57b6f 100644 --- a/web/modules/webform/config/install/webform.settings.yml +++ b/web/modules/webform/config/install/webform.settings.yml @@ -15,7 +15,7 @@ settings: default_delete_button_label: Delete default_form_submit_once: false default_form_confidential_message: 'This form is confidential. You must <a href="[site:login-url]/logout?destination=[current-page:url:relative]">Log out</a> to submit it.' - default_form_access_denied_message: 'Please login to access this form.' + default_form_access_denied_message: 'Please log in to access this form.' default_form_disable_back: false default_form_submit_back: false default_form_unsaved: false @@ -54,7 +54,7 @@ settings: default_confirmation_back_label: 'Back to form' default_confirmation_noindex: true default_submission_label: '[webform_submission:submitted-to]: Submission #[webform_submission:serial]' - default_submission_access_denied_message: 'Please login to access this submission.' + default_submission_access_denied_message: 'Please log in to access this submission.' default_submission_exception_message: 'Unable to process this submission. Please contact the site administrator.' default_submission_locked_message: 'This submission has been locked.' default_submission_log: false @@ -206,7 +206,7 @@ html_editor: file: file_public: false file_private_redirect: true - file_private_redirect_message: 'Please login to access the uploaded file.' + file_private_redirect_message: 'Please log in to access the uploaded file.' default_max_filesize: '' default_managed_file_extensions: 'gif jpg jpeg png bmp eps tif pict psd txt rtf html odf pdf doc docx ppt pptx xls xlsx xml avi mov mp3 mp4 ogg wav bz2 dmg gz jar rar sit svg tar zip' default_audio_file_extensions: 'mp3 ogg wav' diff --git a/web/modules/webform/config/optional/views.view.webform_submissions.yml b/web/modules/webform/config/optional/views.view.webform_submissions.yml index 74c8331a8c8c896f7aecfd68c33235f10df0a9f2..9bed17d22ecd1f409ed23536f6045a48e4e54898 100644 --- a/web/modules/webform/config/optional/views.view.webform_submissions.yml +++ b/web/modules/webform/config/optional/views.view.webform_submissions.yml @@ -558,7 +558,6 @@ display: default_argument_type: fixed default_argument_options: argument: '' - default_argument_skip_url: false summary_options: base_path: '' count: true diff --git a/web/modules/webform/config/schema/webform.plugin.handler.schema.yml b/web/modules/webform/config/schema/webform.plugin.handler.schema.yml index 852cc61aa1007dcb9cd39ba5fcab7949497528c6..9c0105b7c059ccf686abb0d9ed0559558982b4e8 100644 --- a/web/modules/webform/config/schema/webform.plugin.handler.schema.yml +++ b/web/modules/webform/config/schema/webform.plugin.handler.schema.yml @@ -58,25 +58,25 @@ webform.handler.email: label: State to_mail: label: 'Email to address' - type: email + type: string to_options: label: 'Email to address options' type: ignore bcc_mail: label: 'Email BCC address' - type: email + type: string bcc_options: label: 'Email BCC address options' type: ignore cc_mail: label: 'Email CC address' - type: email + type: string cc_options: label: 'Email CC address options' type: ignore from_mail: label: 'Email from address' - type: email + type: string from_options: label: 'Email from address options' type: ignore @@ -90,7 +90,7 @@ webform.handler.email: type: label label: 'Return path email' sender_mail: - type: email + type: string label: 'Sender email' sender_name: type: label diff --git a/web/modules/webform/config/schema/webform.settings.schema.yml b/web/modules/webform/config/schema/webform.settings.schema.yml index 773cc4336cfacb45e44a87f238810468b56f482b..f0301a5d23dba6e57babe91922dd56eb2cc80b5d 100644 --- a/web/modules/webform/config/schema/webform.settings.schema.yml +++ b/web/modules/webform/config/schema/webform.settings.schema.yml @@ -467,10 +467,10 @@ webform.settings: label: 'Email default settings' mapping: default_to_mail: - type: email + type: string label: 'Default to email' default_from_mail: - type: email + type: string label: 'Default from email' default_from_name: type: label @@ -482,7 +482,7 @@ webform.settings: type: label label: 'Default return path email' default_sender_mail: - type: email + type: string label: 'Default sender email' default_sender_name: type: label diff --git a/web/modules/webform/css/webform.composite.telephone.css b/web/modules/webform/css/webform.composite.telephone.css index 7ca5c33ad6dc749c119355dc688e03c5f7d7805d..f8ab82c6061df6113ed5d229bc046acca8e453ed 100644 --- a/web/modules/webform/css/webform.composite.telephone.css +++ b/web/modules/webform/css/webform.composite.telephone.css @@ -3,20 +3,26 @@ * Telephone composite styles. */ -.form-type-webform-telephone:after { +div.webform-type-webform-telephone:after { display: table; clear: both; content: ""; } -.form-type-webform-telephone .form-item, -.form-type-webform-telephone .form-item label { +fieldset.webform-type-webform-telephone > div:after { + display: table; + clear: both; + content: ""; +} + +.webform-type-webform-telephone .form-item, +.webform-type-webform-telephone .form-item label { float: left; margin: 0 10px 0 0; vertical-align: middle; } -.form-type-webform-telephone .form-item label { +.webform-type-webform-telephone .form-item label { height: 2em; line-height: 2em; } diff --git a/web/modules/webform/css/webform.help.support.css b/web/modules/webform/css/webform.help.support.css index ecd671ef6c5af48146fa8f02502f816a3711efbc..add0bb6f1476d241f22bd5cecf71423a87cd1adf 100644 --- a/web/modules/webform/css/webform.help.support.css +++ b/web/modules/webform/css/webform.help.support.css @@ -54,12 +54,12 @@ .webform-help-support__item-icon--contribute:before { background-image: url(../icons/cccccc/drupal.svg); } +.webform-help-support__item-icon--join:before { + background-image: url(../icons/cccccc/drupal-association.svg); +} .webform-help-support__item-icon--fund:before { background-image: url(../icons/cccccc/webform.svg); } -.webform-help-support__item-icon--contact:before { - background-image: url(../icons/cccccc/person.svg); -} .webform-help-support__item-details { position: relative; diff --git a/web/modules/webform/css/webform.theme.claro.css b/web/modules/webform/css/webform.theme.claro.css index bcf1b330f580fa9c221a9a6200f4864a5a2642da..7dc187358d2fd02dda840befe47df9109b02c3e7 100644 --- a/web/modules/webform/css/webform.theme.claro.css +++ b/web/modules/webform/css/webform.theme.claro.css @@ -153,6 +153,11 @@ table td > .button:only-child { display: inline; } +.webform-results-table .sortable-heading > a { + overflow: hidden; + text-overflow: ellipsis; +} + /***************************************************************************** */ /* States and Multiple */ /***************************************************************************** */ diff --git a/web/modules/webform/css/webform.theme.gin.css b/web/modules/webform/css/webform.theme.gin.css index 3754403b74a05ee802fbda5c9e650dd1a8c70660..fecde84af60b8f67560136ef97b1413d7893fd81 100644 --- a/web/modules/webform/css/webform.theme.gin.css +++ b/web/modules/webform/css/webform.theme.gin.css @@ -29,3 +29,11 @@ div.block-help-block { .webform-message .messages.messages--webform .messages__content { margin-left: 3.5rem; } + +/** + * Issue #3384432: Tooltip incompatibility with Gin Admin Theme + * @see https://www.drupal.org/project/webform/issues/3384432s + */ +.webform-element-help-container--title label:not(.visually-hidden) { + position: static !important; +} diff --git a/web/modules/webform/docs/DEVELOPMENT-COMMIT-MESSAGES.md b/web/modules/webform/docs/DEVELOPMENT-COMMIT-MESSAGES.md index 5b499aef8410939aa86a5b6695266af414e6ec08..d299d6cc4905cb4d535224af9d8cf50ccb51abf9 100644 --- a/web/modules/webform/docs/DEVELOPMENT-COMMIT-MESSAGES.md +++ b/web/modules/webform/docs/DEVELOPMENT-COMMIT-MESSAGES.md @@ -1,9 +1,9 @@ Development Commit Messages --------------------------- -Webform uses Drupal's standard commit message format but also prepends the -type and scope to each commit message to make it easier to find the type and -scope of a commit as well know if the commit contains a minor, major, +Webform uses Drupal's standard commit message format but also prepends the +type and scope to each commit message to make it easier to find the type and +scope of a commit as well know if the commit contains a minor, major, or b/c breaking change. ``` @@ -25,13 +25,13 @@ Can be one of the following: **Scope** -The scope is the enitity or plugin that the commit affects. +The scope is the entity or plugin that the commit affects. -For Webform that can be the entity name -(example: "webform", "webform_submission", "webform_option") +For Webform that can be the entity name +(example: "webform", "webform_submission", "webform_option") or plugin name ("element", "handler", "exporter"). -Scope can also be used to denote "MAJOR", "B/C BREAKING", +Scope can also be used to denote "MAJOR", "B/C BREAKING", "B/C BREAKING POSSIBLE" changes which will be uppercased. @@ -42,7 +42,7 @@ refactor(b/c breaking): Issue #3105878 by jrockowitz: Move all webform element p ``` -**References** +**References** - [[Experimental] Commit messages - providing history and credit](https://www.drupal.org/node/2825448) - [[meta] Use the Git commit message format from AngularJS](https://www.drupal.org/project/drupal/issues/2802947) diff --git a/web/modules/webform/docs/DEVELOPMENT-NOTES.md b/web/modules/webform/docs/DEVELOPMENT-NOTES.md index 6c1e27c4d89d99b2f4435885488b2b48a4ff7eca..2bbbf120372ca63934fae4a77fe867145e151ebf 100644 --- a/web/modules/webform/docs/DEVELOPMENT-NOTES.md +++ b/web/modules/webform/docs/DEVELOPMENT-NOTES.md @@ -70,7 +70,7 @@ git archive --format zip --output webform-[issue-number]-[issue-description].zip git reset --hard # Adding changes to the last commit -git commit --amendd ../ +git commit --amend ../ # Unstage a file about to be committed git reset HEAD <file>… diff --git a/web/modules/webform/drupalci.yml b/web/modules/webform/drupalci.yml index 4ffd949ca40aebfa11065c9b6c7929659ee3b95a..74fc549728bdcf8e142199b4fa87304d1060317b 100644 --- a/web/modules/webform/drupalci.yml +++ b/web/modules/webform/drupalci.yml @@ -31,10 +31,10 @@ build: suppress-deprecations: true halt-on-fail: false run_tests.simpletest: - types: 'Simpletest' - testgroups: '--all' - suppress-deprecations: true - halt-on-fail: false + types: 'Simpletest' + testgroups: '--all' + suppress-deprecations: true + halt-on-fail: false run_tests.build: types: 'PHPUnit-Build' testgroups: '--all' diff --git a/web/modules/webform/icons/cccccc/drupal-association.svg b/web/modules/webform/icons/cccccc/drupal-association.svg new file mode 100644 index 0000000000000000000000000000000000000000..edc368fed6e056ca8be81e987b4b38bc5f7debd8 --- /dev/null +++ b/web/modules/webform/icons/cccccc/drupal-association.svg @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 2160 2880" style="enable-background:new 0 0 2160 2880;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#cccccc;} +</style> +<g id="Livello_2_1_"> + <g id="Livello_1-2_1_"> + <path class="st0" d="M1186,1080.5c-36-36-74.2-74.6-108.1-113.1c-31.7,36-65.2,68.8-98.7,102.3c-8.1,8-14.7,17.4-19.5,27.7 + c-7.4,16.2-9.8,34.3-6.8,51.9c0,1.8,0,3.6,0,5.4c3.1,9.7,7.7,18.8,13.7,27c1,1.4,1.8,2.8,2.5,4.3c22,27.4,74.2,77.8,103.4,105.9 + l173,180.2l51.9,54.8c42.8,44.4,81.4,92.6,115.3,144.1l0,0c4.1,7.1,10.6,12.3,18.4,14.8h3.6c8.4-1.4,15.3-7.4,18-15.5l0,0 + c11.2-36.2,16.9-73.8,16.9-111.7c-1-87.7-28.8-172.9-79.6-244.3c-59.9-83.7-127.9-161.2-203.2-231.3L1186,1080.5z"/> + <path class="st0" d="M1234.3,1660.7c-42.9-52.3-84.3-100.2-149.5-169.7c-55.1,63.1-105.6,111.7-147.4,161.1 + c-73.6,79.7-68.7,203.9,11,277.5c79.7,73.6,203.9,68.7,277.5-11c62.5-67.6,69.6-169.6,17.1-245.3 + C1240.4,1668.8,1237.5,1664.6,1234.3,1660.7z"/> + <path class="st0" d="M979.9,1405.5c4.8-5.5,4.8-13.6,0-19.1l-127.2-130.1l-27.4-25.9c-22,25.6-42.6,52.4-61.6,80.4 + c-30.8,44.4-53.7,93.8-67.7,145.9l0,0c-15.3,60-13.9,123.1,4.3,182.3l2.5,5.4c3.2,6.4,6.8,12.5,10.8,18.4l0,0 + c0,0,14.8,23.8,27.7,24.9h4.7c4.4-1,8-4.1,9.7-8.3c12-25.2,27-48.7,44.7-70.3l46.5-56.6l0,0L979.9,1405.5z"/> + <path class="st0" d="M1082.6,363.4C487.3,363.2,4.6,845.6,4.4,1440.8s482.2,1078,1077.4,1078.2 + c595.3,0.2,1078-482.2,1078.2-1077.4c0-0.1,0-0.2,0-0.4C2160,846.1,1677.7,363.6,1082.6,363.4z M1076.4,2124.8 + c-313.2-0.8-566.8-254.7-567.2-567.9c0-266.3,177.7-443.6,334-600.3c104.5-104.5,204.3-204,233.9-316 + c29.5,112.1,129.4,211.5,233.9,316c156.8,156.8,334,334,334,600.3C1644.7,1870.6,1390.2,2124.8,1076.4,2124.8z"/> + </g> +</g> +</svg> diff --git a/web/modules/webform/icons/cccccc/person.svg b/web/modules/webform/icons/cccccc/person.svg deleted file mode 100644 index 113a486fa20d336872088141aaeb3820b2c5d6ef..0000000000000000000000000000000000000000 --- a/web/modules/webform/icons/cccccc/person.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="287.5 37.5 225 225" enable-background="new 287.5 37.5 225 225" xml:space="preserve"> -<path fill="#cccccc" d="M400,37.5c-62.104,0-112.5,50.396-112.5,112.5S337.896,262.5,400,262.5S512.5,212.104,512.5,150 - S462.104,37.5,400,37.5z M400,50.104c55.198,0,99.896,44.698,99.896,99.896S455.198,249.896,400,249.896 - S300.104,205.198,300.104,150S344.802,50.104,400,50.104"/> -<path fill="#cccccc" d="M430.24,191.25c-2.385-4.771-4.604-9.073-5.333-10.052c-0.771-1.24-2.51-2.875-6.531-4.177 - c-0.312-1.427-0.562-2.937-0.667-4.521c-0.125-1.448-0.198-2.719-0.24-3.833c11.906-9.5,20.031-28.375,20.031-49.865 - C437.5,87.906,420.698,75,400,75s-37.5,12.896-37.5,43.802c0,21.667,8.26,40.677,20.333,50.104c-0.042,1.062-0.115,2.26-0.229,3.594 - c-0.104,1.594-0.333,3.104-0.646,4.49c-4.083,1.302-5.917,2.958-6.854,4.208c-0.74,0.865-3,5.229-5.406,10.073 - c-13.948,3.323-26.208,8.875-35.688,16.031c15.885,18.594,39.594,30.302,65.99,30.302s50.104-11.698,66-30.302 - C456.5,200.135,444.219,194.573,430.24,191.25z"/> -</svg> diff --git a/web/modules/webform/includes/webform.form_alter.inc b/web/modules/webform/includes/webform.form_alter.inc index 6ce8b8cb8a46035e201dc94671bced38f7532710..3e8eb4a5a24a2cadcb8fd8d44131799c6e273dfe 100644 --- a/web/modules/webform/includes/webform.form_alter.inc +++ b/web/modules/webform/includes/webform.form_alter.inc @@ -32,7 +32,8 @@ function webform_form_alter(&$form, FormStateInterface $form_state, $form_id) { } // Display editing original language warning. - if (\Drupal::moduleHandler()->moduleExists('config_translation') && preg_match('/^entity.webform.(?:edit|settings|assets|access|handlers|third_party_settings)_form$/', \Drupal::routeMatch()->getRouteName())) { + if (\Drupal::moduleHandler()->moduleExists('config_translation') + && preg_match('/^entity.webform.(?:edit|settings|assets|access|handlers|third_party_settings)_form$/', \Drupal::routeMatch()->getRouteName() ?? '')) { /** @var \Drupal\webform\WebformInterface $webform */ $webform = \Drupal::routeMatch()->getParameter('webform'); /** @var \Drupal\Core\Language\LanguageManagerInterface $language_manager */ diff --git a/web/modules/webform/includes/webform.install.requirements.inc b/web/modules/webform/includes/webform.install.requirements.inc index 59432d38930cb8e67f7f049665f32a4872e241ba..b25361b8464e60a3e30e4d723ac80d2a53b58a53 100644 --- a/web/modules/webform/includes/webform.install.requirements.inc +++ b/web/modules/webform/includes/webform.install.requirements.inc @@ -196,11 +196,11 @@ function webform_requirements($phase) { if (\Drupal::config('webform.settings')->get('requirements.spam')) { $spam_protection = FALSE; $installed_projects = [ - '#prefix' => '<p><hr/></p><dl>', + '#prefix' => '<hr class="webform-hr"/><dl>', '#suffix' => '</dl>', ]; $available_projects = [ - '#prefix' => '<p><hr/></p><dl>', + '#prefix' => '<hr class="webform-hr"/><dl>', '#suffix' => '</dl>', ]; diff --git a/web/modules/webform/includes/webform.libraries.inc b/web/modules/webform/includes/webform.libraries.inc index 67afc716c26b87edd49f4e7079adaa05a0becb25..315069d86530da9bdc244f2a592c03250a14f068 100644 --- a/web/modules/webform/includes/webform.libraries.inc +++ b/web/modules/webform/includes/webform.libraries.inc @@ -14,7 +14,13 @@ */ function webform_library_info_build() { $base_path = base_path(); - $default_query_string = \Drupal::state()->get('system.css_js_query_string') ?: '0'; + // @todo Remove once Drupal 10.2.x is only supported. + if (floatval(\Drupal::VERSION) < 10.2) { + $default_query_string = \Drupal::state()->get('system.css_js_query_string') ?: '0'; + } + else { + $default_query_string = \Drupal::service('asset.query_string')->get(); + } /** @var \Drupal\webform\WebformInterface[] $webforms */ $webforms = Webform::loadMultiple(); @@ -30,12 +36,12 @@ function webform_library_info_build() { $settings = ['type' => 'external', 'preprocess' => FALSE, 'minified' => FALSE]; if ($type === 'css') { $libraries["webform.css.$webform_id"] = [ - 'css' => ['theme' => ["{$base_path}webform/css/{$webform_id}?{$default_query_string}" => $settings]], + 'css' => ['theme' => ["{$base_path}webform/css/{$webform_id}/custom.css?{$default_query_string}" => $settings]], ]; } else { $libraries["webform.javascript.$webform_id"] = [ - 'js' => ["{$base_path}webform/javascript/{$webform_id}?{$default_query_string}" => $settings], + 'js' => ["{$base_path}webform/javascript/{$webform_id}/custom.js?{$default_query_string}" => $settings], ]; } } @@ -216,7 +222,7 @@ function webform_js_alter(&$javascript, AttachedAssetsInterface $assets) { */ function _webform_asset_alter(array &$items, $type) { foreach ($items as $key => &$item) { - if (strpos($key, "webform/$type/") === 0) { + if (strpos($key, "/webform/$type/") === 0) { $item['weight'] = 1000; $item['group'] = 1000; } diff --git a/web/modules/webform/includes/webform.options.inc b/web/modules/webform/includes/webform.options.inc index b6808ffa497bf5e83a23f565001c5887c42e0064..953f39dd2f18f33c10c3f2484ca8b6197620211f 100644 --- a/web/modules/webform/includes/webform.options.inc +++ b/web/modules/webform/includes/webform.options.inc @@ -5,6 +5,7 @@ * Options alter hooks. */ +use Drupal\Core\Datetime\TimeZoneFormHelper; use Drupal\Core\Language\LanguageManager; use Drupal\webform\Utility\WebformOptionsHelper; @@ -36,7 +37,7 @@ function webform_webform_options_range_alter(array &$options, array $element = [ */ function webform_webform_options_time_zones_alter(array &$options, array $element = []) { if (empty($options)) { - $options = system_time_zones(); + $options = TimeZoneFormHelper::getOptionsList(); } } diff --git a/web/modules/webform/js/webform.behaviors.js b/web/modules/webform/js/webform.behaviors.js index 39c67ffa8a57fb0445266102543425a4a1a16134..b3a8fd9710121c3acbda6e2322e05a0d5bda05e9 100644 --- a/web/modules/webform/js/webform.behaviors.js +++ b/web/modules/webform/js/webform.behaviors.js @@ -31,7 +31,7 @@ if (backButton) { var attachBehaviors = Drupal.attachBehaviors; Drupal.attachBehaviors = function (context, settings) { - setTimeout(function (context, settings) { + setTimeout(function () { attachBehaviors(context, settings); }, 300); }; diff --git a/web/modules/webform/js/webform.dialog.js b/web/modules/webform/js/webform.dialog.js index e8e992185bd5a84cf3ea68ece29f04100f4fa54b..2b56a6eaf8a2f3fcf382f2ac58d418d96c3eb5e8 100644 --- a/web/modules/webform/js/webform.dialog.js +++ b/web/modules/webform/js/webform.dialog.js @@ -80,7 +80,7 @@ var element_settings = {}; element_settings.progress = {type: 'fullscreen'}; element_settings.url = href; - element_settings.event = 'click'; + element_settings.event = 'touchstart click'; element_settings.dialogType = $a.data('dialog-type') || 'modal'; element_settings.dialog = options; element_settings.element = this; diff --git a/web/modules/webform/js/webform.element.details.toggle.js b/web/modules/webform/js/webform.element.details.toggle.js index 4a5ca9431008d03c582ec08e8537538355ac4377..814a20356bef65af6e27ca935e2f054916660cf6 100644 --- a/web/modules/webform/js/webform.element.details.toggle.js +++ b/web/modules/webform/js/webform.element.details.toggle.js @@ -44,13 +44,16 @@ .on('click', function (e) { // Get details that are not vertical tabs pane. var $details = $form.find('details:not(.vertical-tabs__pane)'); + var $summary = $details.find('summary'); var open; if (Drupal.webform.detailsToggle.isFormDetailsOpen($form)) { $details.removeAttr('open'); + $summary.attr('aria-expanded', 'false'); open = 0; } else { $details.attr('open', 'open'); + $summary.attr('aria-expanded', 'true'); open = 1; } Drupal.webform.detailsToggle.setDetailsToggleLabel($form); diff --git a/web/modules/webform/js/webform.element.inputmask.js b/web/modules/webform/js/webform.element.inputmask.js index d1c28f24a9aac730b7921cdbfd3955a84f318178..e5465f557f751279c94ba6f4d7a3ed132e26fe11 100644 --- a/web/modules/webform/js/webform.element.inputmask.js +++ b/web/modules/webform/js/webform.element.inputmask.js @@ -40,6 +40,36 @@ digits: 2, digitsOptional: false, clearMaskOnLostFocus: false + }, + decimal: { + prefix: '', + groupSeparator: ',', + alias: 'numeric', + placeholder: '0', + autoGroup: true, + digits: 3, + digitsOptional: true, + clearMaskOnLostFocus: false + }, + decimal_negative: { + prefix: '', + groupSeparator: ',', + alias: 'numeric', + placeholder: '0', + autoGroup: true, + digits: 3, + digitsOptional: true, + clearMaskOnLostFocus: false + }, + decimal_positive_negative: { + prefix: '', + groupSeparator: ',', + alias: 'numeric', + placeholder: '0', + autoGroup: true, + digits: 3, + digitsOptional: true, + clearMaskOnLostFocus: false } }); } diff --git a/web/modules/webform/js/webform.element.managed_file.js b/web/modules/webform/js/webform.element.managed_file.js index 32b38a0e2eba6a639bc45df846bb783d6fa22f05..01f1377107cc5fbd62e443cd95417738e6a486d9 100644 --- a/web/modules/webform/js/webform.element.managed_file.js +++ b/web/modules/webform/js/webform.element.managed_file.js @@ -50,7 +50,7 @@ // with file upload. if ($form.data('webform-auto-file-uploads') > 0 && (isFormActions || (isMultipleUpload && !isManagedUploadButton)) && - blockSubmit($form)) { + Drupal.webformManagedFileBlockSubmit($form)) { this.ajaxing = false; return false; } diff --git a/web/modules/webform/js/webform.states.js b/web/modules/webform/js/webform.states.js index 56b316093f84ca24f7351b1ea370c64b98acebc4..c51a1f73753d5749cfc56aebe680c667fa65bc56 100644 --- a/web/modules/webform/js/webform.states.js +++ b/web/modules/webform/js/webform.states.js @@ -323,7 +323,7 @@ */ Drupal.behaviors.webformCheckboxesRequired = { attach: function (context) { - $(once('webform-checkboxes-required', '.js-form-type-checkboxes.required, .js-form-type-webform-checkboxes-other.required, .js-webform-type-checkboxes.required, .js-webform-type-webform-checkboxes-other.required, .js-webform-type-webform-radios-other.checkboxes', context)) + $(once('webform-checkboxes-required', '.js-form-type-checkboxes.required, .webform-term-checkboxes.required, .js-form-type-webform-checkboxes-other.required, .js-webform-type-checkboxes.required, .js-webform-type-webform-checkboxes-other.required, .js-webform-type-webform-radios-other.checkboxes', context)) .each(function () { var $element = $(this); $element.find('input[type="checkbox"]').on('click', statesCheckboxesRequiredEventHandler); @@ -420,7 +420,7 @@ * @see https://stackoverflow.com/a/37825072/145846 */ function statesCheckboxesRequiredEventHandler() { - var $element = $(this).closest('.js-webform-type-checkboxes, .js-webform-type-webform-checkboxes-other'); + var $element = $(this).closest('.js-webform-type-checkboxes, .js-webform-type-webform-checkboxes-other, .js-webform-type-webform-term-checkboxes, .js-webform-tableselect tbody'); checkboxesRequired($element); } @@ -624,6 +624,9 @@ else { $input.removeAttr('required aria-required'); } + // Clear the validation state for the input. + // @see Drupal.behaviors.webformRequiredError + $input.each(function () {this.setCustomValidity && this.setCustomValidity('')}); } } diff --git a/web/modules/webform/logo.png b/web/modules/webform/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1c97d7d9bb758397f4103bfeb80de7045d0a17fc --- /dev/null +++ b/web/modules/webform/logo.png @@ -0,0 +1,17 @@ +�PNG + +��� IHDR���������V�����gAMA�����a���sRGB������� pHYs�������+���0PLTEGpL��������������Y�̗��������ܬ������������������tRNS�4z�GL)��� QIDATx��Kn�H�IzP*�����*^@$��_@ζ4[70�o���E� �{-���lt�`�,�m�*IfF�#Sm�d6����IV��.�#^Ɏ?�v�,�Bvl�2���e.��z��0k�� +&~�6���ʵ�l�qY�������@4�/��G�2mp�@�6��/3��m0:����I`��y6xj�"m0�>~y��g�я�K���O�d�`��@� �?�/��W2@� F��/�_@Y�H�@Q6�o��l���������`�&���m����l�m"��\�&� �����_ ���K �?���E����.Y �J_��u%���9�;��W�0���F����p[j��0�t0���n�L+����ڠ��xV�1`���G'��.0N��\@�f+�����I`���I ?/ l'��$�)`5%J&�Se���Yٖ�Z���L�&����t��p��@�������y`P� �� �s@�����H���L�.� ,��L�t] 1���Y)[���He���A��@d2~�.��BefPs� �����I ̌��8f^���l���6�'$; $;��Qe��i�� �HClO�D$`Q�$��f���*��Xڍ�B�@/��v��%f��n�����B��%�!��s" ~lh[ �s�(���� �i7'���b@���2����ς�K` ?��Z���:~d3p��$�/�\����I`�"~D.�F��$���,�rK@/��h`Yq'�$�b�@!�@!�@ �@ �p.�p.�p,�p,p*p�W�B��p��p��X�Lh�����N!��#p�������H���"\��K`����(ʰ�������\j��(��J��?`%��;�@�3~8 l����Q�@.\�@��a����h� b��0�0��Ƙ������K��۷�9�����o�c���� v��K��۵�����3" +`uR�$���R�M��V�HX�Ah1�d��V�����`���2��8��Gߝ�ܯ�߁s ��7�:p��p��`!R�����.��``<b�L���y�B������� +����0��f����@�"`rm��ZJ�)\���e�N�s � �n9'��D/�� D�T3��!�@ +T�ȁ� Z��VE���B�=Ql#FM@gO�o�p0~��%�T����<c-�<a��(�o�ƴ�7�`�B��v����M �`%�h�Z��6��z�s�b��f��5y�3��ֲ=p�"�=p����rA0�C�R�8��=�#�¾b{cĔj[�֍��.�oX��f� �;�} n��]0f`�^30�G�������L�Ò���b�r�]0f`�S��|��l��`��^� �� �\��Tb��Ie d �[���-���L(�� ��20j_��/����㇓����t?�����|y�J�����3"�X��Qyl{���`X +10���w���^��t�����l�ƍ �e����ڀэ�x�;��x�ٍ�X�1;�#;!���ݸ� �� �0vE��7F�L�p�1��b/Q��M�����^X<��t�1C�� ����/�@���t���X[!`Ă@���p�{�����<��@���(�x���x���x���@�����*�H ~k��Hx������R�`��/�����[c�^���,��x��0�b~�V���"�`��E�;�V?M������ �0�Ƚ����)z�00�s��q0���#f�F2r0�|����,$���?y��?gH<��g��?m��y�S��e`��Ét��O�}���s�ş<����Ig���L:}~̪O�1��I�"6� +���y�tr��g��F>'�w��9kg5��I�=p�9XG>��×�Z���W��e{ �S'{ ȃ�����W3��h�3�D�- `q���,�\p=@,�9�@���~+4��@:�u(V3D�-�� ̵�M��_���l�Z� ����z�?%f�&��Tݵ����T���ӡR/����:Tw���N��+U�_��x����*����᱿�=�C�J��w���2�@gM������꤮�����]��<�*�����u�U�v��~��jY��R�l +�C���wx�~���ӌ�/=���-xxR���Z�ԡ��6 Q �*`0�Z9p��i��������~å��P<<�w��:p̊�K_�e�N�?���F�C#t���:��A�f��N�����o~�_�����l +A��M����`;�� +4Rc�b h=��z0���a�T����:�v��L�!����ό���7z5@g�����N���ɴP��%H��2�r�w�_���a +��UO� ++��.����we��~u��˥�3�r��'Cw����U[��8\��R��b����v�.�U�[@S +�K� +04�́� +���N���4%�?�43�R�+B]�}�~�`h��KpU 5 �Q��x���r���0�h�b��:��WE�Kp��.0=���F�u:T�j���\�2 �X���5E�tj���|a�Y�T?,��c+������|�gs�V@������=o��u�S��pIA�-� �ד��0|����'u8^*�y�J�Ὼe�+Q������T-� ���;�S�@JO�@��y[ �����OL�A [+��(�J�[Xl�Xی�����Ux�ʮ��m�w��.�@.��] ��-�"~�(@�X]����B�����*~����n,�: ���4��|0_���k�����X���G�>I���~`��|����$(�.�G�i�f`I7 �' %��$HwC;�.p$��ל`�6~�I�[8,3��~u�@�K(��w�OP����-���2��1�Q�.:B$�`�����a�!��A �i�@?�b� ����{�b� ��������,� 1��� �Y�D���`�&M`�� �u@g�˭���* 5�6�Y�_�FhrÀ���{!��?�{��o�;���#nf!�oH�?��7W�ND�_��P��צH{m�h�GK-u��n�)���\2���m�%^m6��+��w��{���ư��c�k�7�_~��5�p~�w����IEND�B`� \ No newline at end of file diff --git a/web/modules/webform/modules/webform_access/src/Access/WebformAccessGroupAccess.php b/web/modules/webform/modules/webform_access/src/Access/WebformAccessGroupAccess.php index 484a86cad5698850b022797ebe0b571b3b0c06ac..880fec1a2ef34ae82e9c18a4f700fe85e93505ba 100644 --- a/web/modules/webform/modules/webform_access/src/Access/WebformAccessGroupAccess.php +++ b/web/modules/webform/modules/webform_access/src/Access/WebformAccessGroupAccess.php @@ -11,7 +11,7 @@ class WebformAccessGroupAccess { /** - * Check whether the current user is a administor or assign admin access. + * Check whether the current user is a administrator or assign admin access. * * @return \Drupal\Core\Access\AccessResultInterface * The access result. diff --git a/web/modules/webform/modules/webform_access/src/WebformAccessGroupForm.php b/web/modules/webform/modules/webform_access/src/WebformAccessGroupForm.php index f5c79649b47d1d1a345ee3443ef0089e71c6bd22..3568afe71e9b9e5a852779b098e45a809c1f2ffe 100644 --- a/web/modules/webform/modules/webform_access/src/WebformAccessGroupForm.php +++ b/web/modules/webform/modules/webform_access/src/WebformAccessGroupForm.php @@ -23,7 +23,7 @@ class WebformAccessGroupForm extends EntityForm { /** * Entity manager. * - * @var Drupal\Core\Entity\EntityTypeManagerInterface + * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ protected $entityTypeManagerInterface; diff --git a/web/modules/webform/modules/webform_access/webform_access.info.yml b/web/modules/webform/modules/webform_access/webform_access.info.yml index 66d9a5c9d804967b45037d6a50f5d2be79a48784..41a64080b1895bf5846539249828632ffaa11135 100644 --- a/web/modules/webform/modules/webform_access/webform_access.info.yml +++ b/web/modules/webform/modules/webform_access/webform_access.info.yml @@ -1,13 +1,13 @@ name: 'Webform Access' description: 'Provides webform access controls for webform nodes.' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 package: Webform type: module dependencies: - 'webform:webform' - 'webform:webform_node' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_access/webform_access.module b/web/modules/webform/modules/webform_access/webform_access.module index 80f59c0184e5af43afcafab8cf027cc7e3faefde..c228b9c0df9c0947410f1f84d4d6231db6ee2c56 100644 --- a/web/modules/webform/modules/webform_access/webform_access.module +++ b/web/modules/webform/modules/webform_access/webform_access.module @@ -76,7 +76,7 @@ function webform_access_node_delete(EntityInterface $entity) { * Implements hook_field_config_delete(). */ function webform_access_field_config_delete(EntityInterface $entity) { - /** @var Drupal\field\Entity\FieldConfig $definition */ + /** @var \Drupal\field\Entity\FieldConfig $definition */ if ($entity->getType() === 'webform' && $entity->getEntityTypeId() === 'node') { $entity_ids = \Drupal::entityQuery('webform_access_group') ->condition('type', $entity->getTargetBundle()) @@ -95,7 +95,7 @@ function webform_access_field_config_delete(EntityInterface $entity) { * Implements hook_field_storage_config_delete(). */ function webform_access_field_storage_config_delete(EntityInterface $entity) { - /** @var Drupal\field\Entity\FieldStorageConfig $entity */ + /** @var \Drupal\field\Entity\FieldStorageConfig $entity */ if ($entity->getType() === 'webform') { \Drupal::database()->delete('webform_access_group_entity') ->condition('entity_type', $entity->getEntityTypeId()) diff --git a/web/modules/webform/modules/webform_access/webform_access.tokens.inc b/web/modules/webform/modules/webform_access/webform_access.tokens.inc index 0b2cbe1d35041dc9a3b50c4c13b198bb389e0318..da92d50105e87fb69da8e6ee1febc91947750f1a 100644 --- a/web/modules/webform/modules/webform_access/webform_access.tokens.inc +++ b/web/modules/webform/modules/webform_access/webform_access.tokens.inc @@ -17,7 +17,7 @@ function webform_access_token_info() { $types = []; $types['webform_access'] = [ 'name' => t('Webform access'), - 'description' => t("Tokens related to webform access group types. <em>This token is only available to a Webform email handler's 'To', 'CC', and 'BCC' email recipents.</em>"), + 'description' => t("Tokens related to webform access group types. <em>This token is only available to a Webform email handler's 'To', 'CC', and 'BCC' email recipients.</em>"), 'needs-data' => 'webform_access', ]; @@ -37,7 +37,7 @@ function webform_access_token_info() { 'description' => t('The email addresses of all <strong>custom email addresses</strong> assigned to the current webform.'), ]; $webform_access['admins'] = [ - 'name' => t('All adminstrators'), + 'name' => t('All administrators'), 'description' => t('The email addresses of all <strong>administrators</strong> assigned to the current webform.'), ]; $webform_access['all'] = [ @@ -59,11 +59,11 @@ function webform_access_token_info() { 'description' => t('The email addresses of <strong>custom email addresses</strong> assigned to the %title access type for the current webform.', ['%title' => $webform_access_type->label()]), ]; $webform_access["type:$webform_access_type_name:admins"] = [ - 'name' => t('@label (Adminstrators)', $t_args), + 'name' => t('@label (Administrators)', $t_args), 'description' => t('The email addresses of <strong>administrators</strong> assigned to the %title access type for the current webform.', ['%title' => $webform_access_type->label()]), ]; $webform_access["type:$webform_access_type_name:all"] = [ - 'name' => t('@label (Users, custom email addresses, Adminstrators)', $t_args), + 'name' => t('@label (Users, custom email addresses, Administrators)', $t_args), 'description' => t('The email addresses of <strong>users</strong>, <strong>custom email addresses</strong>, and <strong>administrators</strong> assigned to the %title access type for the current webform.', ['%title' => $webform_access_type->label()]), ]; } @@ -106,7 +106,7 @@ function webform_access_tokens($type, $tokens, array $data, array $options, Bubb $emails = []; // Get access group administrator email addresses. - // Administrator email addresss are only returned if explicitly + // Administrator email address are only returned if explicitly // requested via [webform_access:type:admins] or // [webform_access:type:TYPE_ID:admins]. if (in_array($type, ['admins', 'all']) diff --git a/web/modules/webform/modules/webform_attachment/src/Plugin/WebformElement/WebformAttachmentBase.php b/web/modules/webform/modules/webform_attachment/src/Plugin/WebformElement/WebformAttachmentBase.php index f2ed483a37bb5b037c7fd8c55c3269ce6264c943..01744eac529a64420abfd0b2329f82490d2a2a60 100644 --- a/web/modules/webform/modules/webform_attachment/src/Plugin/WebformElement/WebformAttachmentBase.php +++ b/web/modules/webform/modules/webform_attachment/src/Plugin/WebformElement/WebformAttachmentBase.php @@ -181,7 +181,7 @@ public function form(array $form, FormStateInterface $form_state) { ]; $form['attachment']['display_on_message'] = [ '#type' => 'webform_message', - '#message_message' => $this->t("The attachment's link will only be diplayed on the form after the submission is completed."), + '#message_message' => $this->t("The attachment's link will only be displayed on the form after the submission is completed."), '#message_type' => 'warning', '#access' => TRUE, '#states' => [ diff --git a/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml b/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml index 31f56eb6b4955b246666d2258a1cfa2a9127940d..bfab6bf4e90a612f1d83e598730f7ee1602e3c14 100644 --- a/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml +++ b/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Attachment test' type: module description: 'Support module for webform attachment element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_attachment' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_attachment/tests/src/Functional/WebformAttachmentTest.php b/web/modules/webform/modules/webform_attachment/tests/src/Functional/WebformAttachmentTest.php index 09bffc20b9bc0dcfaa2c31501f3fa64fb6e1ea52..287100234c25290786b204eb725f96c1db26ce3d 100644 --- a/web/modules/webform/modules/webform_attachment/tests/src/Functional/WebformAttachmentTest.php +++ b/web/modules/webform/modules/webform_attachment/tests/src/Functional/WebformAttachmentTest.php @@ -233,11 +233,11 @@ public function testWebformAttachment() { // Sanitize. /* ********************************************************************** */ - $webform_attachment_santize = Webform::load('test_attachment_sanitize'); + $webform_attachment_sanitize = Webform::load('test_attachment_sanitize'); - $sid = $this->postSubmissionTest($webform_attachment_santize, ['textfield' => 'Some text!@#$%^&*)']); + $sid = $this->postSubmissionTest($webform_attachment_sanitize, ['textfield' => 'Some text!@#$%^&*)']); $webform_submission = WebformSubmission::load($sid); - $element = $webform_attachment_santize->getElement('webform_attachment_token'); + $element = $webform_attachment_sanitize->getElement('webform_attachment_token'); $this->assertEquals(WebformAttachmentToken::getFileName($element, $webform_submission), 'some-text.txt'); /* ********************************************************************** */ diff --git a/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml b/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml index 299efa230e44383b2f184bac7fb194bdb6d5685c..d9bd3bb10cea0b71fc93d2be412a0ff434071b2c 100644 --- a/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml +++ b/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml @@ -2,11 +2,11 @@ name: 'Webform Attachment' type: module description: 'Provides an element that generates or loads a file that can be attached to a submission or email.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml b/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml index b51f4b69f46b64adc36280d4434b17a8eea5d167..108758fa50316da9cb133531a67463f62780ee7d 100644 --- a/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml +++ b/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml @@ -2,12 +2,12 @@ name: 'Webform Test Bootstrap Helper' type: module description: 'Support module for webform bootstrap integration testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_bootstrap' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml b/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml index 4675030edf7f6bfe48e43552320dafcd2403d668..70f370e7dabea83a3f197583f37420315ac1ba66 100644 --- a/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml +++ b/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml @@ -1,4 +1,4 @@ -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 type: theme base theme: bootstrap @@ -22,7 +22,7 @@ regions: libraries: - 'webform_bootstrap_test_theme/global-styling' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml b/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml index e9b19e640dee6680f52905e95c63f2d6e7e23b00..6e99e9c8b41ed6f81d580e877944426857f6b43f 100644 --- a/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml +++ b/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml @@ -2,11 +2,11 @@ name: 'Webform Bootstrap' type: module description: 'Helps support Webform to Bootstrap integration.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_cards/js/webform_cards.js b/web/modules/webform/modules/webform_cards/js/webform_cards.js index ecabca4c1fc9352a69d8b44d30f91e87de10443b..787e42c29e3f82a171fbf4d26b33f74b269052b0 100644 --- a/web/modules/webform/modules/webform_cards/js/webform_cards.js +++ b/web/modules/webform/modules/webform_cards/js/webform_cards.js @@ -182,6 +182,13 @@ }); } + // Custom events. + // Add support for custom 'webform_cards:set_active_card' event. + $allCards.on('webform_cards:set_active_card', function (event) { + var $activeCard = $(event.target); + setActiveCard($activeCard); + }); + initialize(); /* ****************************************************************** */ diff --git a/web/modules/webform/modules/webform_cards/src/Form/WebformCardsConvertForm.php b/web/modules/webform/modules/webform_cards/src/Form/WebformCardsConvertForm.php index 7bd587bb4be79ad52bc2ad1e063c58d2ccc53dbd..04d9284c25613bd83e2835a690fd00d18775021f 100644 --- a/web/modules/webform/modules/webform_cards/src/Form/WebformCardsConvertForm.php +++ b/web/modules/webform/modules/webform_cards/src/Form/WebformCardsConvertForm.php @@ -38,7 +38,7 @@ public function buildForm(array $form, FormStateInterface $form_state, WebformIn '#markup' => '<p>' . $this->t('Cards provide an almost identical user experience to wizard pages, but moving between cards is much faster. Cards use JavaScript for pagination and client-side validation. Cards also support auto-forwarding with conditional logic.') . '</p>' . '<p><em>' . $this->t('Please note: More complex webform elements may still require server-side validation.') . '</em></p>', ]; - $form['hr'] = ['#markup' => '<p><hr/></p>']; + $form['hr'] = ['#markup' => '<hr class="webform-hr"/>']; $form['confirm'] = [ '#type' => 'checkbox', '#title' => $this->t("Please confirm that you want to convert this webform's wizard pages to cards"), diff --git a/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml b/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml index a91b9ea17ff812b9f65d18bfd44efd78fcd808b3..70081033696ec74ab50c89598897af6ab77505c3 100644 --- a/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml +++ b/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Cards test' type: module description: 'Support module for webform cards testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_cards' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAjaxJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAjaxJavaScriptTest.php index 3f2e791fc667a1329d7cd3aeb4ce8b38cd578602..56bc4b5f9a512118f8f3cf8ad1822981d3d2b774 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAjaxJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAjaxJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php index b94e990fab88e1eb98eff11b979c6291eb8d9653..066011f4e8f8de59bff10bb84e1db8911597de0e 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsDraftJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsDraftJavaScriptTest.php index 8ddcbf770913b0bbde318f1acc010fb3de5de702..29b65a74c41135c06c17b9f57c4cc4698cbd55e0 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsDraftJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsDraftJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsProgressJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsProgressJavaScriptTest.php index a5ea8ac21c12a9a293df04a3755d3552aee72297..eae25bf9d8deacc0dc5a37f9a463169512b104c3 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsProgressJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsProgressJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; use Drupal\webform\Entity\Webform; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsStatesJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsStatesJavaScriptTest.php index 7f557b0b0a1373528f5f1c71b99d95c80cb593a2..e49cbade11e3d0b686fdc507fc5676958fea6a3d 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsStatesJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsStatesJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsToggleJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsToggleJavaScriptTest.php index c07dae8c863fed80a9257b4c90dc210134eb6ba2..4d930d0c85ca1b99f2f903b31443bda212235fc6 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsToggleJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsToggleJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsUiJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsUiJavaScriptTest.php index c63efdf78b85293bd60ff4d5ceebab6d0731ae0a..013f0cad9a9cfe1d501e63212dc7bfe69796538a 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsUiJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsUiJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php index 1068c2948648f32aa429f3e08d59ae14d65d49e5..867bf7c65914db6f656854349ec55c8b8d6498a0 100644 --- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php +++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\webform_cards\FunctionalJavaScript; +namespace Drupal\Tests\webform_cards\FunctionalJavascript; use Drupal\Tests\webform\FunctionalJavascript\WebformWebDriverTestBase; diff --git a/web/modules/webform/modules/webform_cards/webform_cards.info.yml b/web/modules/webform/modules/webform_cards/webform_cards.info.yml index 05ce74eb3e6cc36aa0335522f45f6ab194c928a5..d85013f6de9e6a95d5499c88ab3b349a24ee57cb 100644 --- a/web/modules/webform/modules/webform_cards/webform_cards.info.yml +++ b/web/modules/webform/modules/webform_cards/webform_cards.info.yml @@ -2,13 +2,13 @@ name: 'Webform Cards' type: module description: 'Provides a ''Card'' container element for fast clientside multistep form pagination.' package: 'Webform' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_clientside_validation' - 'drupal:inline_form_errors' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml b/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml index 853d1903dc3f85e103ecdc4299bc01c1716a3b2a..5f1307d590b0b9656001a74fddd5c5c20b44953e 100644 --- a/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml +++ b/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Clientside Validation test' type: module description: 'Support module for webform clientside validation testing.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_clientside_validation' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml b/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml index 3e45f11c382614cb224e6969cd1c08604a78966c..c2405e2010480765041c0fce218fbe582126686a 100644 --- a/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml +++ b/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml @@ -2,13 +2,13 @@ name: 'Webform Clientside Validation' type: module description: 'Helps support Webform Clientside Validation integration.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'clientside_validation:clientside_validation' - 'clientside_validation:clientside_validation_jquery' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/config/install/views.view.webform_demo_application_evaluations.yml b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/config/install/views.view.webform_demo_application_evaluations.yml index bda333ecce75125af0474df33de926560d0af77b..7b0ae5a543b22cdd3dbe10801a2bb32334bea94e 100644 --- a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/config/install/views.view.webform_demo_application_evaluations.yml +++ b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/config/install/views.view.webform_demo_application_evaluations.yml @@ -106,7 +106,6 @@ display: default_argument_type: fixed default_argument_options: argument: '' - default_argument_skip_url: false summary_options: base_path: '' count: true diff --git a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml index 100020ef714c0574e2fd54e57570eb2f16e8411f..77de30163d24549be945a91cfc1cf0780e11c7ab 100644 --- a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml +++ b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml @@ -2,14 +2,14 @@ name: 'Webform Demo: Application/Evaluation System' type: module description: 'Demonstrates how to use the Webform module to build an application/evaluation system.' package: 'Webform Demo' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:block' - 'drupal:views' - 'webform:webform' - 'webform:webform_node' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/optional/block.block.bartik_webform_demo_event_registration.yml b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/optional/block.block.bartik_webform_demo_event_registration.yml index ebe8d5e873a57d73a7bf755a8efe65155c8db73b..3ac8636b787c07e8ae59fd02efa1024220e5c458 100644 --- a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/optional/block.block.bartik_webform_demo_event_registration.yml +++ b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/optional/block.block.bartik_webform_demo_event_registration.yml @@ -28,7 +28,7 @@ settings: entity_id: '' visibility: node_type: - id: node_type + id: entity_bundle:node bundles: webform_demo_event: webform_demo_event negate: false diff --git a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml index 8641346df63542e22790c6f35dab02c70c1b3c0d..d66c93274a76aaf1d0ad710d70ecea4300d35b29 100644 --- a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml +++ b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml @@ -2,7 +2,7 @@ name: 'Webform Demo: Event Registration System' type: module description: 'Demonstrates how to use the Webform module to build an event registration system with email reminders.' package: 'Webform Demo' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:datetime' - 'drupal:views' @@ -13,7 +13,7 @@ dependencies: - 'webform:webform_scheduled_email' - 'webform:webform_share' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml index c74aea6259e61895d9194342870f7fcd5a7ed520..389c157fe235961f76e3fcefb0f498b8628f0a75 100644 --- a/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml +++ b/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml @@ -2,7 +2,7 @@ name: 'Webform Demo: Region Contact System' type: module description: 'Demonstrates how to use the Webform module to build a region based contact system.' package: 'Webform Demo' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:datetime' - 'token:token' @@ -10,7 +10,7 @@ dependencies: - 'webform:webform_node' - 'webform:webform_access' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_devel/drush.services.yml b/web/modules/webform/modules/webform_devel/drush.services.yml index 1a4e0fc1acdb1f895cc60ec90f6826f496d6ce59..4821f0ead6e8318046da73d7a8d7d37b6c2d964f 100644 --- a/web/modules/webform/modules/webform_devel/drush.services.yml +++ b/web/modules/webform/modules/webform_devel/drush.services.yml @@ -1,6 +1,6 @@ services: webform_devel.commands: class: \Drupal\webform_devel\Commands\WebformDevelCommands - arguments: ['@file_system', '@state', '@user.data'] + arguments: ['@file_system', '@state', '@user.data', '@module_handler'] tags: - { name: drush.command } diff --git a/web/modules/webform/modules/webform_devel/src/Commands/WebformDevelCommands.php b/web/modules/webform/modules/webform_devel/src/Commands/WebformDevelCommands.php index a08b5cde15fccb9965d5c2172f531a04337b9604..93d4337d03695d0050a4f852ac93d3f4cd7e85c2 100644 --- a/web/modules/webform/modules/webform_devel/src/Commands/WebformDevelCommands.php +++ b/web/modules/webform/modules/webform_devel/src/Commands/WebformDevelCommands.php @@ -2,6 +2,7 @@ namespace Drupal\webform_devel\Commands; +use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\File\FileSystemInterface; use Drupal\Core\Serialization\Yaml; use Drupal\Core\State\StateInterface; @@ -37,6 +38,13 @@ class WebformDevelCommands extends DrushCommands { */ protected $userData; + /** + * The module handler. + * + * @var \Drupal\Core\Extension\ModuleHandlerInterface + */ + protected $moduleHandler; + /** * The construct method. * @@ -46,12 +54,15 @@ class WebformDevelCommands extends DrushCommands { * Provides the state system. * @param \Drupal\user\UserDataInterface $user_data * The user data service. + * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + * The module handler. */ - public function __construct(FileSystemInterface $file_system, StateInterface $state, UserDataInterface $user_data) { + public function __construct(FileSystemInterface $file_system, StateInterface $state, UserDataInterface $user_data, ModuleHandlerInterface $module_handler) { parent::__construct(); $this->fileSystem = $file_system; $this->state = $state; $this->userData = $user_data; + $this->moduleHandler = $module_handler; } /** @@ -61,7 +72,7 @@ public function __construct(FileSystemInterface $file_system, StateInterface $st * @aliases wfdcu,webform-devel-reset */ public function develConfigUpdate() { - \Drupal::moduleHandler()->loadInclude('webform', 'inc', 'includes/webform.install'); + $this->moduleHandler->loadInclude('webform', 'inc', 'includes/webform.install'); $files = $this->fileSystem->scanDirectory(__DIR__ . '/../../../../', '/^webform\.webform\..*\.yml$/'); $total = 0; diff --git a/web/modules/webform/modules/webform_devel/webform_devel.info.yml b/web/modules/webform/modules/webform_devel/webform_devel.info.yml index 4d052fd47aaa3e7e252e66ce5fdad99d352bb855..d23065d88814117dbca4532ff0235adc4f2565f7 100644 --- a/web/modules/webform/modules/webform_devel/webform_devel.info.yml +++ b/web/modules/webform/modules/webform_devel/webform_devel.info.yml @@ -2,12 +2,12 @@ name: 'Webform Devel' type: module description: 'Provides development tools for the Webform module.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'devel:devel' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_entity_print/includes/webform_entity_print.install.inc b/web/modules/webform/modules/webform_entity_print/includes/webform_entity_print.install.inc index fb28ade85469f5018d7fd5366812bbfd548b273a..065dcb26371e9d0f714914efcc42de52fd2f9fe6 100644 --- a/web/modules/webform/modules/webform_entity_print/includes/webform_entity_print.install.inc +++ b/web/modules/webform/modules/webform_entity_print/includes/webform_entity_print.install.inc @@ -12,5 +12,5 @@ function _webform_entity_print_update_add_new_download_pdf_submission_action() { $config = \Drupal::configFactory()->getEditable('webform.settings'); $actions = $config->get('settings.webform_submission_bulk_form_actions') ?: []; $actions[] = 'webform_submission_print_download_action'; - $config->set('settings.webform_submission_bulk_form_actions', $actions)->save(); + $config->set('settings.webform_submission_bulk_form_actions', array_unique($actions))->save(); } diff --git a/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml b/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml index c4a60c3b09a380af85a356e5c034e09acaf476b4..373df61c3d6f7ac93725278343e59bb878e6a4e7 100644 --- a/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml +++ b/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Entity Print (PDF) test' type: module description: 'Support module for webform entity print (PDF) testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_entity_print' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_entity_print/tests/src/Functional/WebformEntityPrintFunctionalTest.php b/web/modules/webform/modules/webform_entity_print/tests/src/Functional/WebformEntityPrintFunctionalTest.php index 5d8045d9a882cb2a1eccc17f5eeb0adaf20e3c16..52cbb338d7943cec1aa8b86ba05f69d43360b575 100644 --- a/web/modules/webform/modules/webform_entity_print/tests/src/Functional/WebformEntityPrintFunctionalTest.php +++ b/web/modules/webform/modules/webform_entity_print/tests/src/Functional/WebformEntityPrintFunctionalTest.php @@ -73,11 +73,13 @@ public function testEntityPrint() { $image_token_query = [WEBFORM_ENTITY_PRINT_IMAGE_TOKEN => _webform_entity_print_token_generate($image_uri)]; $assert_session->responseContains('?' . UrlHelper::buildQuery($image_token_query)); + // @todo Fix below test which broken because of changes to private file handling. + // @see https://www.drupal.org/node/3346038 // Check image style. - $image_style_uri = $base_url . '/system/files/styles/thumbnail/private/webform/test_entity_print/1/image_file_style.gif'; - $image_style_token_query = [WEBFORM_ENTITY_PRINT_IMAGE_TOKEN => _webform_entity_print_token_generate($image_style_uri)]; - $assert_session->responseContains('&' . UrlHelper::buildQuery($image_style_token_query)); - + // $image_style_uri = $base_url . '/system/files/styles/thumbnail/private/webform/test_entity_print/1/image_file_style.gif'; + // $image_style_token_query = [WEBFORM_ENTITY_PRINT_IMAGE_TOKEN => _webform_entity_print_token_generate($image_style_uri)]; + // $assert_session->responseContains('&' . UrlHelper::buildQuery($image_style_token_query)); + // // Check signature private image. $assert_session->responseContains('<label>signature_private</label>'); $assert_session->responseContains("/webform/test_entity_print/signature_private/$sid/signature-"); @@ -89,9 +91,9 @@ public function testEntityPrint() { // Check image access. $this->drupalLogout(); $this->drupalGet($image_uri); - $assert_session->responseContains('Please login to access the uploaded file.'); + $assert_session->responseContains('Please log in to access the uploaded file.'); $this->drupalGet($image_uri, ['query' => $image_token_query]); - $assert_session->responseNotContains('Please login to access the uploaded file.'); + $assert_session->responseNotContains('Please log in to access the uploaded file.'); $assert_session->statusCodeEquals(200); $this->drupalLogin($this->rootUser); diff --git a/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml b/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml index 0b3c788f8a3f075aba59918446a362d461b1b533..8be8c657c311fdb2d6b7645c1827675b9ae38382 100644 --- a/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml +++ b/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml @@ -2,12 +2,12 @@ name: 'Webform Entity Print (PDF)' type: module description: 'Provides Entity Print (PDF) integration and allows site builders to download, export, and email PDF copies of webform submissions.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'entity_print:entity_print' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml b/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml index 2992cdec66ae73b9d6a63fff318a58b80350f806..b0af24f195059f6d70d78fc539416c96a0ff41ad 100644 --- a/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml +++ b/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Entity Print (PDF) Attachment test' type: module description: 'Support module for webform entity print (PDF) attachment testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_entity_print_attachment' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml b/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml index f01ac9b77f3bb1e7a3bd42f9d3934a9fc167fcc2..7bf773319fb290672b9f14deb326b30be81825a8 100644 --- a/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml +++ b/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml @@ -2,12 +2,12 @@ name: 'Webform Entity Print (PDF) Attachment' type: module description: 'Provides Webform Entity Print (PDF) Attachment integration.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_attachment' - 'webform:webform_entity_print' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml b/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml index a65c81574f941899706fd3ec80ff766f5ffc8a98..2cccecca635021ea57d4e394998a10f36e8f5c6c 100644 --- a/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml +++ b/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml @@ -2,11 +2,11 @@ name: 'Webform Example Composite' type: module description: 'Provides an example that shows how to create a Webform composite.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml b/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml index e4f89b6657c3755ccb59cc3c7e141649373dc172..8493d3add0d6dd38ab1ef04d5213978b549ac635 100644 --- a/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml +++ b/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml @@ -2,13 +2,13 @@ name: 'Webform Custom Form Example' type: module description: 'Provides an example of custom configuration form built using the Webform module.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 configure: webform_example_custom_form.settings dependencies: - 'webform:webform' - 'webform:webform_devel' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_element/tests/src/Functional/WebformExampleElementTest.php b/web/modules/webform/modules/webform_example_element/tests/src/Functional/WebformExampleElementTest.php index 85e9d30e2f9e2c592f82ffc52c75788ee0c1b0a5..138a2c2c82809f0099c9dd70580a8b43199a163f 100644 --- a/web/modules/webform/modules/webform_example_element/tests/src/Functional/WebformExampleElementTest.php +++ b/web/modules/webform/modules/webform_example_element/tests/src/Functional/WebformExampleElementTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform_example_element\Functional; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Tests\webform\Functional\WebformBrowserTestBase; use Drupal\webform\Entity\Webform; use Drupal\webform\Entity\WebformSubmission; @@ -33,7 +34,12 @@ public function testWebformExampleElement() { // NOTE: // This is a very lazy but easy way to check that the element is rendering // as expected. - $assert_session->responseContains('<div class="js-form-item form-item js-form-type-webform-example-element form-item-webform-example-element js-form-item-webform-example-element">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item form-type-webform-example-element js-form-type-webform-example-element form-item-webform-example-element js-form-item-webform-example-element">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item js-form-type-webform-example-element form-item-webform-example-element js-form-item-webform-example-element">'), + ); $assert_session->responseContains('<label for="edit-webform-example-element">Webform Example Element</label>'); $assert_session->responseContains('<input data-drupal-selector="edit-webform-example-element" type="text" id="edit-webform-example-element" name="webform_example_element" value="" size="60" class="form-text webform-example-element" />'); diff --git a/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml b/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml index 99380cbe853b869358e958193a3bc799b1805773..11f5a2d578a2aaccd92447fcd6fe54992c16d702 100644 --- a/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml +++ b/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml @@ -2,11 +2,11 @@ name: 'Webform Element Example' type: module description: 'Provides an example that shows how to create a Webform element.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml index 91eed5ae1e9bc4c89cf9e90ef766b4b24d8e7fba..43ffc5d66bf067b3d3bcaa352c6dc512f24c9929 100644 --- a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml +++ b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml @@ -2,12 +2,12 @@ name: 'Webform Element Properties Example' type: module description: 'Provides an example that shows how to add custom properties to Webform elements.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_ui' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.module b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.module index a27bfc912f00c268757784d277de9d321cd71aa1..b8e8ef5c617776815951064fe0dc59b60c95c24c 100644 --- a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.module +++ b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.module @@ -32,7 +32,7 @@ function webform_example_element_properties_webform_element_translatable_propert function webform_example_element_properties_webform_element_configuration_form_alter(&$form, FormStateInterface $form_state) { // If you want add element properties to specific element type, you can use // the below code to the current element's type and more. - /** @var Drupal\webform_ui\Form\WebformUiElementEditForm $form_object */ + /** @var \Drupal\webform_ui\Form\WebformUiElementEditForm $form_object */ $form_object = $form_state->getFormObject(); $element_plugin = $form_object->getWebformElementPlugin(); $element_label = $element_plugin->getPluginLabel(); diff --git a/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml b/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml index 6e02352f06145080f25731221539ca492269ce28..1bb5e64e4e2baf415dcad11a59535dd8d2d3b416 100644 --- a/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml +++ b/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml @@ -2,11 +2,11 @@ name: 'Webform Handler Example' type: module description: 'Provides an example of a webform handler.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml b/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml index 2d4f7796ee99b52e75fce30130f2d626e4878886..841156bb6a274c9768d19cd2d1999f8b1282776a 100644 --- a/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml +++ b/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml @@ -2,12 +2,12 @@ name: 'Webform Remote Post Example' type: module description: 'Provides an example of a webform submission posted to a remote server.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'token:token' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml b/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml index ac5afc38aed7b0728677e3ec99c5f800c6b07689..668eaff89cf4f1768c72c416a6e3c6ebea46ea1e 100644 --- a/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml +++ b/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml @@ -2,11 +2,11 @@ name: 'Webform Variant Example' type: module description: 'Provides an example of webform variants.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_examples/webform_examples.info.yml b/web/modules/webform/modules/webform_examples/webform_examples.info.yml index 206877980450531ea74fb51da1d377e721dda2ae..00fb01a14c1722d751dbbac5b0db1678731186e7 100644 --- a/web/modules/webform/modules/webform_examples/webform_examples.info.yml +++ b/web/modules/webform/modules/webform_examples/webform_examples.info.yml @@ -2,11 +2,11 @@ name: 'Webform Examples' type: module description: 'Provides examples of all webform elements and functionality which can used for demonstrating and testing advanced functionality or used as cut-n-paste code snippets for creating new webforms.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml b/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml index a70d1cc34fc7e4f050feadd8aa26c5d8743860ad..030fd484722d01750e27433bff5a4053a6a4d43e 100644 --- a/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml +++ b/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml @@ -2,11 +2,11 @@ name: 'Webform Examples Accessibility' type: module description: 'Provides example webforms for reviewing and testing accessibility.' package: 'Webform example' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_icheck/js/webform_icheck.element.js b/web/modules/webform/modules/webform_icheck/js/webform_icheck.element.js index 86bfb17270e934a26cc24650b2b5fc7dfbad149d..b2cff7191888b0cf7c3eda56ad09a4240a31e45a 100644 --- a/web/modules/webform/modules/webform_icheck/js/webform_icheck.element.js +++ b/web/modules/webform/modules/webform_icheck/js/webform_icheck.element.js @@ -57,7 +57,7 @@ }; /** - * Enhance table select checkall. + * Enhance table select check-all. * * ISSUE: Select all is not sync'd with checkboxes because iCheck overrides all existing event handlers. * diff --git a/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml b/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml index b7cfaecd81c994b00996930eeeb46ef0b4f852cc..9cb2b64bc7dc2d212fc01803a2d0318259f8e880 100644 --- a/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml +++ b/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform iCheck test' type: module description: 'Support module for webform iCheck element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_icheck' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml b/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml index 0c8e430eb1e25480c1d0bfc2f3dbc87cc7733c46..360aa831b7e30460496f50ab2d15d1667c2e2230 100644 --- a/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml +++ b/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml @@ -2,13 +2,13 @@ name: 'Webform iCheck' type: module description: 'Provides support for highly customizable checkboxes and radio buttons. The iCheck library is no longer being maintained.' package: 'Webform [DEPRECATED]' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 lifecycle: deprecated lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequently-asked-questions/what-to-do-about-deprecated-external-libraries-in-webform-6x' dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_image_select/config/install/webform_image_select.webform_image_select_images.dogs.yml b/web/modules/webform/modules/webform_image_select/config/install/webform_image_select.webform_image_select_images.dogs.yml new file mode 100644 index 0000000000000000000000000000000000000000..d36a6f7c3c0173e3adb189d1679008a028cc3a77 --- /dev/null +++ b/web/modules/webform/modules/webform_image_select/config/install/webform_image_select.webform_image_select_images.dogs.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + enforced: + module: + - webform_image_select +id: dogs +label: 'Cute Dogs' +category: Animals +images: | + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' diff --git a/web/modules/webform/modules/webform_image_select/config/install/webform_image_select.webform_image_select_images.kittens.yml b/web/modules/webform/modules/webform_image_select/config/install/webform_image_select.webform_image_select_images.kittens.yml deleted file mode 100644 index 5d0cf94933cbe9ba10ada666898ecc0a77b8f851..0000000000000000000000000000000000000000 --- a/web/modules/webform/modules/webform_image_select/config/install/webform_image_select.webform_image_select_images.kittens.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - enforced: - module: - - webform_image_select -id: kittens -label: 'Cute Kittens' -category: Animals -images: | - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' diff --git a/web/modules/webform/modules/webform_image_select/src/Controller/WebformImageSelectImagesController.php b/web/modules/webform/modules/webform_image_select/src/Controller/WebformImageSelectImagesController.php index eedefbb18dc927aced988d3e90ce414bda04b505..c658c58fdb7e629f635ff9b2537954881f938960 100644 --- a/web/modules/webform/modules/webform_image_select/src/Controller/WebformImageSelectImagesController.php +++ b/web/modules/webform/modules/webform_image_select/src/Controller/WebformImageSelectImagesController.php @@ -27,7 +27,7 @@ public function autocomplete(Request $request) { $webform_images_storage = $this->entityTypeManager()->getStorage('webform_image_select_images'); $query = $webform_images_storage->getQuery() - ->accessCheck() + ->accessCheck(TRUE) ->range(0, 10) ->sort('label'); diff --git a/web/modules/webform/modules/webform_image_select/src/Plugin/WebformElement/WebformImageSelect.php b/web/modules/webform/modules/webform_image_select/src/Plugin/WebformElement/WebformImageSelect.php index 7b720e5cd65fd0d8f7d9ce9a2edfbbac98da60d1..b6259ed489a02ab6ddf2a72f32722d72af32d47e 100644 --- a/web/modules/webform/modules/webform_image_select/src/Plugin/WebformElement/WebformImageSelect.php +++ b/web/modules/webform/modules/webform_image_select/src/Plugin/WebformElement/WebformImageSelect.php @@ -116,7 +116,7 @@ protected function formatHtmlItem(array $element, WebformSubmissionInterface $we if (isset($element['#images'][$value]) && isset($element['#images'][$value]['src'])) { $src = $element['#images'][$value]['src']; - // Always use absolute URLs for the src so that it will load via e-mail. + // Always use absolute URLs for the src so that it will load via email. if (strpos($src, '/') === 0) { $src = $this->request->getSchemeAndHttpHost() . $src; } @@ -125,7 +125,7 @@ protected function formatHtmlItem(array $element, WebformSubmissionInterface $we '#theme' => 'image', // ISSUE: // Image src must be an absolute URL so that it can be sent - // via e-mail but template_preprocess_image() converts the #uri to + // via email but template_preprocess_image() converts the #uri to // a root-relative URL. // @see template_preprocess_image() // diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_image_select.yml b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_image_select.yml index d20b8e4d084355bf894b9035169388d7f2a7bac9..131b2f3ed76e8b69c7412a52dd849233054fcc30 100644 --- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_image_select.yml +++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_image_select.yml @@ -21,129 +21,129 @@ elements: | '#type': webform_image_select '#title': image_select_default '#images': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' '#required': true image_select_randomize: '#type': webform_image_select '#title': image_select_randomize '#images': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' '#images_randomize': true image_select_multiple: '#type': webform_image_select '#title': image_select_multiple '#multiple': true '#images': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' image_select_limit: '#type': webform_image_select '#title': 'image_select_limit (2)' '#multiple': 2 '#images': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' image_select_show_label: '#type': webform_image_select '#title': image_select_show_label '#show_label': true '#images': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' image_select_html: '#type': webform_image_select '#title': image_select_html '#show_label': true '#images': '<1>': - text: 'Cute <b style="color:red">Kitten</b> 1' - src: 'http://placekitten.com/220/200' + text: 'Cute <b style="color:red">Dog</b> 1' + src: 'https://placedog.net/220/200' '"2"': - text: 'Cute <em style="color:blue">Kitten</em> 2' - src: 'http://placekitten.com/180/200' + text: 'Cute <em style="color:blue">Dog</em> 2' + src: 'https://placedog.net/180/200' '&3': - text: 'Cute <u style="color:green">Kitten</u> 3' - src: 'http://placekitten.com/130/200' + text: 'Cute <u style="color:green">Dog</u> 3' + src: 'https://placedog.net/130/200' 4: - text: 'Cute Kitten 4 <script>alert("XSS");</script>' - src: 'http://placekitten.com/270/200' + text: 'Cute Dog 4 <script>alert("XSS");</script>' + src: 'https://placedog.net/270/200' image_select_states_trigger: '#type': webform_image_select '#title': image_select_trigger_state - '#description': 'Please select the first cute kitten.' + '#description': 'Please select the first cute dog.' '#images': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' image_select_states_target: '#type': webform_message '#title': image_select_trigger_state - '#message_message': 'You have selected the first kitten!!!' + '#message_message': 'You have selected the first dog!!!' '#states': visible: ':input[name="image_select_states_trigger"]': - value: kitten_1 + value: dog_1 image_select_animals: '#type': webform_image_select '#title': image_select_animals diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_images.yml b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_images.yml index d97b92065df851f4c7f873511f814acfaefc93ed..0a11cba2b52af432991f302077d4a44c880d4589 100644 --- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_images.yml +++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform.webform.test_element_images.yml @@ -28,18 +28,18 @@ elements: | '#type': webform_image_select_images '#title': webform_image_select_images_default_value '#default_value': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' webform_image_select_element_images_elements: '#type': details '#title': webform_image_select_element_images_elements @@ -48,24 +48,24 @@ elements: | '#type': webform_image_select_element_images '#title': webform_image_select_element_images_entity '#required': true - '#default_value': kittens + '#default_value': dogs webform_image_select_element_images_custom: '#type': webform_image_select_element_images '#title': webform_image_select_element_images_custom '#required': true '#default_value': - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' css: '' javascript: '' settings: diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform_image_select.webform_image_select_images.bears.yml b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform_image_select.webform_image_select_images.bears.yml index 81fbdbb3e66972efe00fe24a07a2d71d404f23cc..2e126018a112501a31535c91b06aab32bc9981c7 100644 --- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform_image_select.webform_image_select_images.bears.yml +++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/config/install/webform_image_select.webform_image_select_images.bears.yml @@ -5,18 +5,18 @@ dependencies: module: - webform_image_select_test id: bears -label: 'Cute Dogs' +label: Bears category: Animals images: | - dog_1: - text: 'Cute Dog 1' - src: 'http://placedog.net/220/200' - dog_2: - text: 'Cute Dog 2' - src: 'http://placedog.net/180/200' - dog_3: - text: 'Cute Dog 3' - src: 'http://placedog.net/130/200' - dog_4: - text: 'Cute Dog 4' - src: 'http://placedog.net/270/200' + bear_1: + text: 'Bear 1' + src: 'https://placebear.com/220/200' + bear_2: + text: 'Bear 2' + src: 'https://placebear.com/180/200' + bear_3: + text: 'Bear 3' + src: 'https://placebear.com/130/200' + bear_4: + text: 'Bear 4' + src: 'https://placebear.com/270/200' diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml index 7d0032bdb797b19dc4286aed036fa4aa9c4221ed..fa30062988fc013c8c1f3d8146efe7abed1e5cff 100644 --- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml +++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Image Select test' type: module description: 'Support module for webform image select element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_image_select' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.module b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.module index c56bd5fbea1978cec0f91ce7e15eb422937edffa..b6bbea522e7727da0d01f174b2ddd4dce30021bc 100644 --- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.module +++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.module @@ -11,8 +11,8 @@ * Implements hook_webform_image_select_images_WEBFORM_IMAGE_SELECT_IMAGES_ID_alter(). */ function webform_image_select_test_webform_image_select_images_animals_alter(array &$images, array &$element) { - if ($kittens = WebformImageSelectImages::load('kittens')) { - $images += $kittens->getImages(); + if ($dogs = WebformImageSelectImages::load('dogs')) { + $images += $dogs->getImages(); } } @@ -23,6 +23,6 @@ function webform_image_select_test_webform_image_select_images_alter(array &$ima if ($id === 'animals' && ($bears = WebformImageSelectImages::load('bears'))) { $images += $bears->getImages(); // Set the default value to one of the added images. - $element['#default_value'] = 'kitten_1'; + $element['#default_value'] = 'dog_1'; } } diff --git a/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementImagesTest.php b/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementImagesTest.php index edc0ca90e1bfc4d04731757d532e8323155658b0..1c00f9ddc0772eadd7c6c45f1abf87d9bb0cf4b3 100644 --- a/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementImagesTest.php +++ b/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementImagesTest.php @@ -29,32 +29,32 @@ public function testElementOptions() { $this->submitForm([], 'Submit'); $assert_session->responseContains("webform_image_select_images: { } webform_image_select_images_default_value: - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200' -webform_image_select_element_images_entity: kittens + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200' +webform_image_select_element_images_entity: dogs webform_image_select_element_images_custom: - kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' - kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' - kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' - kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200'"); + dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' + dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' + dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' + dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200'"); // Check unique key validation with image src. $this->drupalGet('/webform/test_element_images'); diff --git a/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementTest.php b/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementTest.php index adb2377cafce4611b66e340619fb128ea835902d..bfd1efa78b4fdf778cc9fe2241fc72f286877d77 100644 --- a/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementTest.php +++ b/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectElementTest.php @@ -28,13 +28,13 @@ public function testImageSelect() { $this->drupalGet('/webform/test_element_image_select'); // Check rendering of image select with required. - $assert_session->responseContains('<select data-drupal-selector="edit-image-select-default" data-images="{"kitten_1":{"text":"Cute Kitten 1","src":"http:\/\/placekitten.com\/220\/200"},"kitten_2":{"text":"Cute Kitten 2","src":"http:\/\/placekitten.com\/180\/200"},"kitten_3":{"text":"Cute Kitten 3","src":"http:\/\/placekitten.com\/130\/200"},"kitten_4":{"text":"Cute Kitten 4","src":"http:\/\/placekitten.com\/270\/200"}}" class="webform-image-select js-webform-image-select form-select required" id="edit-image-select-default" name="image_select_default" required="required" aria-required="true">'); + $assert_session->responseContains('<select data-drupal-selector="edit-image-select-default" data-images="{"dog_1":{"text":"Cute Dog 1","src":"https:\/\/placedog.net\/220\/200"},"dog_2":{"text":"Cute Dog 2","src":"https:\/\/placedog.net\/180\/200"},"dog_3":{"text":"Cute Dog 3","src":"https:\/\/placedog.net\/130\/200"},"dog_4":{"text":"Cute Dog 4","src":"https:\/\/placedog.net\/270\/200"}}" class="webform-image-select js-webform-image-select form-select required" id="edit-image-select-default" name="image_select_default" required="required" aria-required="true">'); // Check rendering of image select with limit. - $assert_session->responseContains('<select data-limit="2" data-drupal-selector="edit-image-select-limit" data-images="{"kitten_1":{"text":"Cute Kitten 1","src":"http:\/\/placekitten.com\/220\/200"},"kitten_2":{"text":"Cute Kitten 2","src":"http:\/\/placekitten.com\/180\/200"},"kitten_3":{"text":"Cute Kitten 3","src":"http:\/\/placekitten.com\/130\/200"},"kitten_4":{"text":"Cute Kitten 4","src":"http:\/\/placekitten.com\/270\/200"}}" class="webform-image-select js-webform-image-select form-select" multiple="multiple" name="image_select_limit[]" id="edit-image-select-limit">'); + $assert_session->responseContains('<select data-limit="2" data-drupal-selector="edit-image-select-limit" data-images="{"dog_1":{"text":"Cute Dog 1","src":"https:\/\/placedog.net\/220\/200"},"dog_2":{"text":"Cute Dog 2","src":"https:\/\/placedog.net\/180\/200"},"dog_3":{"text":"Cute Dog 3","src":"https:\/\/placedog.net\/130\/200"},"dog_4":{"text":"Cute Dog 4","src":"https:\/\/placedog.net\/270\/200"}}" class="webform-image-select js-webform-image-select form-select" multiple="multiple" name="image_select_limit[]" id="edit-image-select-limit">'); // Check rendering of image select with HTML markup and XSS test. - $assert_session->responseContains('<select data-drupal-selector="edit-image-select-html" data-show-label="data-show-label" data-images="{"\u003C1\u003E":{"text":"Cute \u003Cb\u003EKitten\u003C\/b\u003E 1","src":"http:\/\/placekitten.com\/220\/200"},"\u00222\u0022":{"text":"Cute \u003Cem\u003EKitten\u003C\/em\u003E 2","src":"http:\/\/placekitten.com\/180\/200"},"\u00263":{"text":"Cute \u003Cu\u003EKitten\u003C\/u\u003E 3","src":"http:\/\/placekitten.com\/130\/200"},"4":{"text":"Cute Kitten 4 alert(\u0022XSS\u0022);","src":"http:\/\/placekitten.com\/270\/200"}}" class="webform-image-select js-webform-image-select form-select" id="edit-image-select-html" name="image_select_html"><option value="" selected="selected">- None -</option><option value="<1>">Cute Kitten 1</option><option value=""2"">Cute Kitten 2</option><option value="&3">Cute Kitten 3</option><option value="4">Cute Kitten 4 alert("XSS");</option></select>'); + $assert_session->responseContains('<select data-drupal-selector="edit-image-select-html" data-show-label="data-show-label" data-images="{"\u003C1\u003E":{"text":"Cute \u003Cb\u003EDog\u003C\/b\u003E 1","src":"https:\/\/placedog.net\/220\/200"},"\u00222\u0022":{"text":"Cute \u003Cem\u003EDog\u003C\/em\u003E 2","src":"https:\/\/placedog.net\/180\/200"},"\u00263":{"text":"Cute \u003Cu\u003EDog\u003C\/u\u003E 3","src":"https:\/\/placedog.net\/130\/200"},"4":{"text":"Cute Dog 4 alert(\u0022XSS\u0022);","src":"https:\/\/placedog.net\/270\/200"}}" class="webform-image-select js-webform-image-select form-select" id="edit-image-select-html" name="image_select_html"><option value="" selected="selected">- None -</option><option value="<1>">Cute Dog 1</option><option value=""2"">Cute Dog 2</option><option value="&3">Cute Dog 3</option><option value="4">Cute Dog 4 alert("XSS");</option></select>'); // Check rendering with filter. $assert_session->responseContains('<input class="webform-form-filter-text form-search" data-focus="false" data-item-singlular="animal" data-item-plural="animals" data-summary=".js-image-select-filter-custom-filter .webform-image-select-summary" data-no-results=".js-image-select-filter-custom-filter .webform-image-select-no-results" data-element=".js-image-select-filter-custom-filter .thumbnails" data-source=".thumbnail p" data-parent="li" data-selected=".selected" title="Enter a keyword to filter by." type="search" id="edit-image-select-filter-custom-filter" name="image_select_filter_custom_filter" size="30" maxlength="128" placeholder="Find an animal" />'); @@ -45,10 +45,10 @@ public function testImageSelect() { // Check preview. $webform = Webform::load('test_element_image_select'); $edit = [ - 'image_select_default' => 'kitten_1', + 'image_select_default' => 'dog_1', ]; $this->postSubmission($webform, $edit, 'Preview'); - $assert_session->responseContains('<figure style="display: inline-block; margin: 0 6px 6px 0; padding: 6px; border: 1px solid #ddd;width: 220px"><img src="http://placekitten.com/220/200" width="220" height="200" alt="Cute Kitten 1" title="Cute Kitten 1" loading="lazy" />'); + $assert_session->responseContains('<figure style="display: inline-block; margin: 0 6px 6px 0; padding: 6px; border: 1px solid #ddd;width: 220px"><img src="https://placedog.net/220/200" width="220" height="200" alt="Cute Dog 1" title="Cute Dog 1" loading="lazy" />'); } } diff --git a/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectImagesTest.php b/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectImagesTest.php index 42ed319f1d098d3995e2e58d63b75a201026a6c1..2119c959afec92f76689cc62537d068af5146da2 100644 --- a/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectImagesTest.php +++ b/web/modules/webform/modules/webform_image_select/tests/src/Functional/WebformImageSelectImagesTest.php @@ -38,35 +38,35 @@ public function testWebformImageSelectImages() { $this->drupalLogin($normal_user); // Check get element images. - $kittens = Yaml::decode("kitten_1: - text: 'Cute Kitten 1' - src: 'http://placekitten.com/220/200' -kitten_2: - text: 'Cute Kitten 2' - src: 'http://placekitten.com/180/200' -kitten_3: - text: 'Cute Kitten 3' - src: 'http://placekitten.com/130/200' -kitten_4: - text: 'Cute Kitten 4' - src: 'http://placekitten.com/270/200'"); - $element = ['#images' => $kittens]; - $this->assertEquals(WebformImageSelectImages::getElementImages($element), $kittens); - $element = ['#images' => 'kittens']; - $this->assertEquals(WebformImageSelectImages::getElementImages($element), $kittens); + $dogs = Yaml::decode("dog_1: + text: 'Cute Dog 1' + src: 'https://placedog.net/220/200' +dog_2: + text: 'Cute Dog 2' + src: 'https://placedog.net/180/200' +dog_3: + text: 'Cute Dog 3' + src: 'https://placedog.net/130/200' +dog_4: + text: 'Cute Dog 4' + src: 'https://placedog.net/270/200'"); + $element = ['#images' => $dogs]; + $this->assertEquals(WebformImageSelectImages::getElementImages($element), $dogs); + $element = ['#images' => 'dogs']; + $this->assertEquals(WebformImageSelectImages::getElementImages($element), $dogs); $element = ['#images' => 'not-found']; $this->assertEquals(WebformImageSelectImages::getElementImages($element), []); $dogs = Yaml::decode("dog_1: text: 'Cute Dog 1' src: 'http://placedog.net/220/200' -dog_2: +dog_test_2: text: 'Cute Dog 2' src: 'http://placedog.net/180/200' -dog_3: +dog_test_3: text: 'Cute Dog 3' src: 'http://placedog.net/130/200' -dog_4: +dog_test_4: text: 'Cute Dog 4' src: 'http://placedog.net/270/200'"); @@ -78,8 +78,8 @@ public function testWebformImageSelectImages() { $webform_images = WebformImageSelectImages::create([ 'langcode' => 'en', 'status' => WebformInterface::STATUS_OPEN, - 'id' => 'dogs', - 'title' => 'Dogs', + 'id' => 'dogs_test', + 'title' => 'Dogs Test', 'images' => Yaml::encode($dogs), ]); $webform_images->save(); @@ -117,7 +117,7 @@ public function testWebformImageSelectImages() { $element = ['#images' => 'animals']; $images = WebformImageSelectImages::getElementImages($element); $this->debug($images); - $this->assertEquals(array_keys($images), ['kitten_1', 'kitten_2', 'kitten_3', 'kitten_4', 'dog_1', 'dog_2', 'dog_3', 'dog_4']); + $this->assertEquals(array_keys($images), ['dog_1', 'dog_2', 'dog_3', 'dog_4', 'bear_1', 'bear_2', 'bear_3', 'bear_4']); } } diff --git a/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml b/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml index 19eb412f0d1d61daa5273f99e9862042645e2e72..81e31436c16650d90c7ddf88a0a6b5d06541136b 100644 --- a/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml +++ b/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml @@ -2,11 +2,11 @@ name: 'Webform Image Select' type: module description: 'Provides a webform element for a selecting an image.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml b/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml index 563719ea87bc9a3e83945d5b3193e135670003f9..022a4c6bb5c91114b8b43f3df8d3d78ceba92eeb 100644 --- a/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml +++ b/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform jQueryUI Buttons test' type: module description: 'Support module for jQuery UI buttons element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_jqueryui_buttons' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml index 3573e08ebbe1160e2b7c7ea26443ebd7b326ada3..72825121aecf9dec0c39dcb27acf4e91351d0a52 100644 --- a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml +++ b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml @@ -2,14 +2,14 @@ name: 'Webform jQueryUI Buttons' type: module description: 'Provides a group of multiple buttons used for selecting a value. jQueryUI is no longer maintained.' package: 'Webform [DEPRECATED]' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 lifecycle: deprecated lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequently-asked-questions/what-to-do-about-deprecated-external-libraries-in-webform-6x' dependencies: - 'webform:webform' - - 'jquery_ui_checkboxradio:jquery_ui_checkboxradio' + - 'jquery_ui_button:jquery_ui_button' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.libraries.yml b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.libraries.yml index 58e7128ea60ea4bee3f4876266d434154b273aab..d612bf10b34c23f77c487c8cff2f1fd6357d2e2b 100644 --- a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.libraries.yml +++ b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.libraries.yml @@ -3,5 +3,5 @@ webform_jqueryui_buttons.element: js: js/webform_jqueryui_buttons.element.js: {} dependencies: - - jquery_ui_checkboxradio/checkboxradio + - jquery_ui_button/button deprecated: The "%library_id%" asset library is deprecated. jQueryUI is no longer maintained. See https://www.drupal.org/node/3064015 diff --git a/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml b/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml index 5936b7b61bb9bea8084a5ba7e0a6a4bdace74e83..d18a79845539f0ac90bc30ece702809a692412f2 100644 --- a/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml +++ b/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform jQueryUI Datepicker test' type: module description: 'Support module for jQuery UI datepicker element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_jqueryui_datepicker' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_jqueryui_datepicker/tests/src/Functional/WebformJqueryUiDatepickerTest.php b/web/modules/webform/modules/webform_jqueryui_datepicker/tests/src/Functional/WebformJqueryUiDatepickerTest.php index f416a804a81b7209927144e8ecd5f4803958a1da..20b22f9495c9783c2b417d2f526599b334be2340 100644 --- a/web/modules/webform/modules/webform_jqueryui_datepicker/tests/src/Functional/WebformJqueryUiDatepickerTest.php +++ b/web/modules/webform/modules/webform_jqueryui_datepicker/tests/src/Functional/WebformJqueryUiDatepickerTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform_jqueryui_datepicker\Functional; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Tests\webform\Functional\Element\WebformElementBrowserTestBase; /** @@ -43,7 +44,12 @@ public function testDatepickerElements() { // Check datetime picker. $now_date = date('D, m/d/Y', strtotime('now')); - $assert_session->responseContains('<input data-drupal-selector="edit-datetime-datepicker-date" title="Date (e.g. ' . $now_date . ')" type="text" min="Mon, 01/01/1900" max="Sat, 12/31/2050" data-drupal-date-format="D, m/d/Y" placeholder="YYYY-MM-DD" data-help="Enter the date using the format YYYY-MM-DD (e.g., ' . $now_date . ')." id="edit-datetime-datepicker-date" name="datetime_datepicker[date]" value="Tue, 08/18/2009" size="15" maxlength="128" class="form-text" />'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<input data-drupal-selector="edit-datetime-datepicker-date" type="text" min="Mon, 01/01/1900" max="Sat, 12/31/2050" data-drupal-date-format="D, m/d/Y" placeholder="YYYY-MM-DD" data-help="Enter the date using the format YYYY-MM-DD (e.g., ' . $now_date . ')." id="edit-datetime-datepicker-date" name="datetime_datepicker[date]" value="Tue, 08/18/2009" size="15" maxlength="128" class="form-text" />'), + deprecatedCallable: fn() => $assert_session->responseContains('<input data-drupal-selector="edit-datetime-datepicker-date" title="Date (e.g. ' . $now_date . ')" type="text" min="Mon, 01/01/1900" max="Sat, 12/31/2050" data-drupal-date-format="D, m/d/Y" placeholder="YYYY-MM-DD" data-help="Enter the date using the format YYYY-MM-DD (e.g., ' . $now_date . ')." id="edit-datetime-datepicker-date" name="datetime_datepicker[date]" value="Tue, 08/18/2009" size="15" maxlength="128" class="form-text" />'), + ); /* ********************************************************************** */ // Validate date/datetime elements. diff --git a/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml b/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml index 34bf5b8b9d8a30cc6f3b89c3dee2cc0d71f68652..e37bb6170b489f2b8423250d523ef75e95a758d7 100644 --- a/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml +++ b/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml @@ -2,12 +2,14 @@ name: 'Webform jQueryUI Datepicker' type: module description: 'Provides jQueryUI datepicker support for date and datetime elements. jQueryUI is no longer maintained.' package: 'Webform [DEPRECATED]' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 +lifecycle: deprecated +lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequently-asked-questions/what-to-do-about-deprecated-external-libraries-in-webform-6x' dependencies: - 'webform:webform' - 'jquery_ui_datepicker:jquery_ui_datepicker' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.module b/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.module index 53efe4dcce481c00d9b24d5cbb24546101f3de4d..2a8f4ce40157f40d0dea3f3b18d9b4aca2e42019 100644 --- a/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.module +++ b/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.module @@ -113,7 +113,7 @@ function webform_jqueryui_datepicker_webform_element_configuration_form_alter(&$ // Datetime element. if ($element_plugin instanceof DateTime) { - // Add dateoicker option. + // Add datepicker option. $form['date']['date_date_element']['#options']['datepicker'] = t('Date picker input - Use jQuery date picker with custom date format'); // Move none options last. diff --git a/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml b/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml index d0d725a11f80fc4264a8a9bd9830f7a777de6216..cf695fdbf7110f8cf63c31ddab2eb48b5c1216d4 100644 --- a/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml +++ b/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Location Geocomplete test' type: module description: 'Support module for location geocomplete element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_location_geocomplete' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_location_geocomplete/tests/src/Functional/WebformLocationGeocompleteTest.php b/web/modules/webform/modules/webform_location_geocomplete/tests/src/Functional/WebformLocationGeocompleteTest.php index d581635e3e014dff3f2627b9b45ea07451c3b79a..f3e78b7fe997cbd80cddb1b750c3fc32c3f70055 100644 --- a/web/modules/webform/modules/webform_location_geocomplete/tests/src/Functional/WebformLocationGeocompleteTest.php +++ b/web/modules/webform/modules/webform_location_geocomplete/tests/src/Functional/WebformLocationGeocompleteTest.php @@ -19,7 +19,7 @@ class WebformLocationGeocompleteTest extends WebformElementBrowserTestBase { protected static $modules = ['webform_location_geocomplete', 'webform_location_geocomplete_test']; /** - * Test locatin geocomplete element. + * Test location geocomplete element. */ public function testLocationGeocompleElement() { $assert_session = $this->assertSession(); diff --git a/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml b/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml index a330a33e93f56746ecf30e18d2dbafe2c914ed6f..9c8afb72b4ed1de91fbe77dc0dab5353b19d6c5d 100644 --- a/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml +++ b/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml @@ -2,13 +2,13 @@ name: 'Webform Location Geocomplete' type: module description: 'Provides a form element to collect valid location information (address, longitude, latitude, geolocation) using Google Maps API''s Geocoding and Places Autocomplete. The jQuery: Geocoding and Places Autocomplete Plugin library is no longer being maintained.' package: 'Webform [DEPRECATED]' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 lifecycle: deprecated lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequently-asked-questions/what-to-do-about-deprecated-external-libraries-in-webform-6x' dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml b/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml index 9e8cf9f99568949ad31300e7d2d3d3381b08a212..98b3545342da1c795ab059efe82f07b34a7a4250 100644 --- a/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml +++ b/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Algolia Places test' type: module description: 'Support module for location geocomplete element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_location_geocomplete' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml b/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml index 0811d604fe75fd5d3c5306f656c5e0d70d7fc775..8bdd04e046abf43ac75a7293e8d23a96f0a119a9 100644 --- a/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml +++ b/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml @@ -2,11 +2,13 @@ name: 'Webform Algolia Places' type: module description: 'Provides a form element to collect valid location information (address, longitude, latitude, geolocation) using Algolia Places.' package: Webform [DEPRECATED] -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 +lifecycle: deprecated +lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequently-asked-questions/what-to-do-about-deprecated-external-libraries-in-webform-6x' dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml index 29d3154edda1de1dcbff813b3988adecc8cb7101..8e6d91bd7621b37e9ad18a7a4ae0ae91f8251c30 100644 --- a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml +++ b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml @@ -2,7 +2,7 @@ name: 'Webform Node Multiple test' type: module description: 'Support module for webform nodes with multiple webforms testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:field' - 'drupal:menu_ui' @@ -13,7 +13,7 @@ dependencies: - 'webform:webform' - 'webform:webform_node' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml index e341456dbb70ba0defd6700831c3c83f709af5e5..1c9e4f5d7dd877dd714f84ca7cd66bcd59d90392 100644 --- a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml +++ b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml @@ -2,14 +2,14 @@ name: 'Webform Node Translation test' type: module description: 'Support module for webform node translation testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_node' - 'webform:webform_test_translation' - 'drupal:content_translation' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_node/webform_node.info.yml b/web/modules/webform/modules/webform_node/webform_node.info.yml index 784aca17ffb01bcbef28df5721d27f4976397897..7b58e068a007f838f1d4a390f432a4ecc629e38c 100644 --- a/web/modules/webform/modules/webform_node/webform_node.info.yml +++ b/web/modules/webform/modules/webform_node/webform_node.info.yml @@ -2,7 +2,7 @@ name: 'Webform Node' type: module description: 'Provides a Webform content type which allows webforms to be integrated into a website as nodes.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:field' - 'drupal:node' @@ -11,7 +11,7 @@ dependencies: - 'drupal:user' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_options_custom/images/us_states.svg b/web/modules/webform/modules/webform_options_custom/images/us_states.svg index 3669a2e6526bd0ff795f4effc50c725a4fa1a55a..8a756bd348c42bf9c0e60b700f832a9eb2ecd687 100644 --- a/web/modules/webform/modules/webform_options_custom/images/us_states.svg +++ b/web/modules/webform/modules/webform_options_custom/images/us_states.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- -************* Copyright (c) 2017 Pareto Softare, LLC DBA Simplemaps.com ******************* +************* Copyright (c) 2017 Pareto Software, LLC DBA Simplemaps.com ******************* ************* Free for Commercial Use, full terms at http://simplemaps.com/resources/svg-license ************ ************* Attribution is appreciated! http://simplemaps.com *************************** --> diff --git a/web/modules/webform/modules/webform_options_custom/src/Controller/WebformOptionsCustomController.php b/web/modules/webform/modules/webform_options_custom/src/Controller/WebformOptionsCustomController.php index 78e10bb106c3b055e2535343a0ebb66a2c8c6d32..18c0355e90a5f0d6a90f42f2426542866f5a0996 100644 --- a/web/modules/webform/modules/webform_options_custom/src/Controller/WebformOptionsCustomController.php +++ b/web/modules/webform/modules/webform_options_custom/src/Controller/WebformOptionsCustomController.php @@ -27,7 +27,7 @@ public function autocomplete(Request $request) { $webform_options_custom_storage = $this->entityTypeManager()->getStorage('webform_options_custom'); $query = $webform_options_custom_storage->getQuery() - ->accessCheck() + ->accessCheck(TRUE) ->range(0, 10) ->sort('label'); diff --git a/web/modules/webform/modules/webform_options_custom/src/Element/WebformOptionsCustomEntity.php b/web/modules/webform/modules/webform_options_custom/src/Element/WebformOptionsCustomEntity.php index e0f8934d25fb0a46f64e873740d497133abcd8e5..de8b7f9c6361e0ae152cfece75a75db9088aa4d5 100644 --- a/web/modules/webform/modules/webform_options_custom/src/Element/WebformOptionsCustomEntity.php +++ b/web/modules/webform/modules/webform_options_custom/src/Element/WebformOptionsCustomEntity.php @@ -21,7 +21,8 @@ public static function setTemplateOptions(array &$element) { return; } - // Remove any prefine #options so the entity reference options will be used. + // Remove any predefined #options so the entity reference options will be + // used. unset($element['#options']); parent::setTemplateOptions($element); } diff --git a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml index 3ea6905132406565250c13b96ae1606caf57bb39..dd3b11eb6d72119087c0cbca91da9b98621e4f94 100644 --- a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml +++ b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml @@ -2,13 +2,13 @@ name: 'Webform Custom Options Entity Reference test' type: module description: 'Support module for webform custom options entity reference element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:node' - 'webform:webform_options_limit' - 'webform:webform_options_custom' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml index 90b8b4491c53832abcf34dd043a48cd0ce5d91f0..660b9036c7ec6be859263fe3fde33098ee95d7b6 100644 --- a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml +++ b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Custom Options test' type: module description: 'Support module for webform custom options element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_options_custom' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_options_custom/tests/src/Functional/WebformOptionsCustomTest.php b/web/modules/webform/modules/webform_options_custom/tests/src/Functional/WebformOptionsCustomTest.php index 38b7b7c75df254fe0cabfe66ef4d7fad38b24d9c..05ff381cc3727f4f2c6415df93c86aa28d7eced9 100644 --- a/web/modules/webform/modules/webform_options_custom/tests/src/Functional/WebformOptionsCustomTest.php +++ b/web/modules/webform/modules/webform_options_custom/tests/src/Functional/WebformOptionsCustomTest.php @@ -36,7 +36,7 @@ public function testOptionsCustom() { $this->drupalGet('/webform/test_element_options_custom_html'); - // Check that 'data-option-value' is added to the basdic HTML markup. + // Check that 'data-option-value' is added to the basic HTML markup. // @see webform_options_custom.webform_options_custom.test_html.yml $assert_session->responseContains('<div data-id="one" data-name="One" data-option-value="one">One</div>'); $assert_session->responseContains('<div data-id="two" data-name="Two" data-option-value="two">Two</div>'); @@ -79,11 +79,11 @@ public function testOptionsCustom() { - a'); // Check CSS asset. - $this->drupalGet('/webform/css/test_element_options_custom_html'); + $this->drupalGet('/webform/css/test_element_options_custom_html/custom.css'); $assert_session->responseContains('.webform-options-custom--test-html-advanced [data-option-value]'); // Check JavaScript asset. - $this->drupalGet('/webform/javascript/test_element_options_custom_html'); + $this->drupalGet('/webform/javascript/test_element_options_custom_html/custom.js'); $assert_session->responseContains("window.console && window.console.log('Test: HTML advanced loaded.');"); /* ********************************************************************** */ diff --git a/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml b/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml index c0dcbaae8fb2caa2a62a802d4671b6169799b1b1..169a1e30f958dfcdfbb5490e00feec5f3d9ff81a 100644 --- a/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml +++ b/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml @@ -2,11 +2,11 @@ name: 'Webform Custom Options' type: module description: 'Provides a webform element for converting HTML or SVG markup into a selectable single or multiple options input.' package: 'Webform' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_options_limit/src/Plugin/WebformHandler/OptionsLimitWebformHandler.php b/web/modules/webform/modules/webform_options_limit/src/Plugin/WebformHandler/OptionsLimitWebformHandler.php index 4afbc264e98536670963d827e525009ca7bf28a6..6c73b14bc2b744f4f6dabc6725ca6cbaded53dd3 100644 --- a/web/modules/webform/modules/webform_options_limit/src/Plugin/WebformHandler/OptionsLimitWebformHandler.php +++ b/web/modules/webform/modules/webform_options_limit/src/Plugin/WebformHandler/OptionsLimitWebformHandler.php @@ -1255,6 +1255,10 @@ protected function getLimitInformation($label, $limit, $total) { protected function getOptionsReached(array $limits) { $element_key = $this->configuration['element_key']; $webform_submission = $this->getWebformSubmission(); + if (!$webform_submission) { + return []; + } + $element_values = (array) $webform_submission->getElementOriginalData($element_key) ?: []; $reached = []; foreach ($limits as $option_value => $limit) { diff --git a/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml b/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml index 2c925a3f2ef876755d9ed83406227b2158a1178e..913e819e1a6641cffadbd52b2abe26a89d344ecf 100644 --- a/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml +++ b/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml @@ -2,12 +2,12 @@ name: 'Webform Options Limit test' type: module description: 'Support module for webform options limit testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_options_limit' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitSourceEntityTest.php b/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitSourceEntityTest.php index ed01e578492a4207dabaa8553671d135a59a06e8..e04b242788b02d0b9b23f22f026237ca4211494c 100644 --- a/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitSourceEntityTest.php +++ b/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitSourceEntityTest.php @@ -25,7 +25,7 @@ class WebformOptionsLimitSourceEntityTest extends WebformNodeBrowserTestBase { /** * Test options limit source entity. */ - public function testSourceEnity() { + public function testSourceEntity() { $assert_session = $this->assertSession(); /** @var \Drupal\webform\WebformInterface $webform */ diff --git a/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitUserTest.php b/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitUserTest.php index 2d2798791ac5077c38034c5ff14011ecec1ccb13..dfa738b2ed1516e70298c230727de801170188e2 100644 --- a/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitUserTest.php +++ b/web/modules/webform/modules/webform_options_limit/tests/src/Functional/WebformOptionsLimitUserTest.php @@ -72,7 +72,7 @@ public function testOptionsLimitUserTest() { // Logout. // NOTE: // We are are testing anonymous user last because anonymous - // submission are transfered to authenticated users when they login. + // submission are transferred to authenticated users when they login. $this->drupalLogout(); // Check that options limit is not met for anonymous user. diff --git a/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml b/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml index e7ce5be63209bd065bdbcf208f5028b89e84df62..3a89faa004800609a32bb8707952313499571d7b 100644 --- a/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml +++ b/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml @@ -2,11 +2,11 @@ name: 'Webform Options Limit' type: module description: 'Allows elements with options (i.e. select, checkboxes, and radios) to have option specific submission limits.' package: 'Webform' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_scheduled_email/src/Plugin/WebformHandler/ScheduleEmailWebformHandler.php b/web/modules/webform/modules/webform_scheduled_email/src/Plugin/WebformHandler/ScheduleEmailWebformHandler.php index 85f828c00b35f4a486fedec8b8327ccc0cd82cb9..9db11e5ed0c4225971cabd4bf1037faa59da79f5 100644 --- a/web/modules/webform/modules/webform_scheduled_email/src/Plugin/WebformHandler/ScheduleEmailWebformHandler.php +++ b/web/modules/webform/modules/webform_scheduled_email/src/Plugin/WebformHandler/ScheduleEmailWebformHandler.php @@ -9,7 +9,6 @@ use Drupal\webform\Element\WebformMessage; use Drupal\webform\Element\WebformOtherBase; use Drupal\webform\Plugin\WebformHandler\EmailWebformHandler; -use Drupal\webform\Utility\WebformDateHelper; use Drupal\webform\WebformSubmissionInterface; use Drupal\webform_scheduled_email\WebformScheduledEmailManagerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -37,7 +36,7 @@ class ScheduleEmailWebformHandler extends EmailWebformHandler { protected $request; /** - * The webform scheculed email manager. + * The webform scheduled email manager. * * @var \Drupal\webform_scheduled_email\WebformScheduledEmailManagerInterface */ @@ -187,13 +186,15 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta $t_args = [ '@format' => $this->scheduledEmailManager->getDateFormatLabel(), '@type' => $this->scheduledEmailManager->getDateTypeLabel(), + ':href' => 'https://www.php.net/manual/en/function.strtotime.php', + '@site_default_tz' => $this->configFactory->get('system.date')->get('timezone.default'), ]; $form['scheduled']['send'] = [ '#type' => 'webform_select_other', '#title' => $this->t('Send email on'), '#options' => $send_options, '#other__placeholder' => $this->scheduledEmailManager->getDateFormatLabel(), - '#other__description' => $this->t('Enter a valid ISO @type (@format) or token which returns a valid ISO @type.', $t_args), + '#other__description' => $this->t('Enter a @type or token which returns in a @type in a format compatible with <a href=":href" target="_blank">PHP\'s strtotime function</a> (eg. @format). If timezone information is not provided, the @type will be interpreted in the site\'s default timezone (@site_default_tz).', $t_args), '#default_value' => $this->configuration['send'], ]; @@ -309,17 +310,17 @@ public function validateConfigurationForm(array &$form, FormStateInterface $form // Cast days string to int. $values['days'] = (int) $values['days']; - // If token skip validation. + // If token, skip 'send on' validation. if (!preg_match('/^\[[^]]+\]$/', $values['send'])) { - $date_format = $this->scheduledEmailManager->getDateFormat(); - // Validate custom 'send on' date. - if (WebformDateHelper::createFromFormat($date_format, $values['send']) === FALSE) { + // Validate that strtotime() can create a date from the 'send on' value. + if (strtotime($values['send']) === FALSE) { $t_args = [ - '%field' => $this->t('Send on'), - '%format' => $this->scheduledEmailManager->getDateFormatLabel(), + '%field' => $this->t('Send email on'), + '@format' => $this->scheduledEmailManager->getDateFormatLabel(), '@type' => $this->scheduledEmailManager->getDateTypeLabel(), + ':href' => 'https://www.php.net/manual/en/function.strtotime.php', ]; - $form_state->setError($form['settings']['scheduled']['send'], $this->t('The %field date is required. Please enter a @type in the format %format.', $t_args)); + $form_state->setError($form['settings']['scheduled']['send'], $this->t('The %field @type field is required. Please enter a @type or token which returns in a @type in a format compatible with <a href=":href" target="_blank">PHP\'s strtotime function</a> (eg. @format).', $t_args)); } } diff --git a/web/modules/webform/modules/webform_scheduled_email/src/WebformScheduledEmailManagerInterface.php b/web/modules/webform/modules/webform_scheduled_email/src/WebformScheduledEmailManagerInterface.php index c5ae03a2cc0ec0e85a249f39c583f698721be231..1d2f23aaa8c77f4225aafbd341cbf2da40c39cb4 100644 --- a/web/modules/webform/modules/webform_scheduled_email/src/WebformScheduledEmailManagerInterface.php +++ b/web/modules/webform/modules/webform_scheduled_email/src/WebformScheduledEmailManagerInterface.php @@ -280,7 +280,7 @@ public function delete(EntityInterface $entity, $handler_id = NULL); * @param int $send_limit * The maximum number of emails to be sent. * If set to 0 no emails will be sent. - * Defaults to webform.settting->batch.default_batch_email_size. + * Defaults to webform.settings->batch.default_batch_email_size. * * @return array * An associative array containing cron task stats. diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/config/install/webform.webform.test_handler_scheduled_email.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/config/install/webform.webform.test_handler_scheduled_email.yml index 92bf88b90beea8c5d1a2c9b3c53bc7195bc27c4e..ca03260efc888d7bfa5160ccee7393144cec27db 100644 --- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/config/install/webform.webform.test_handler_scheduled_email.yml +++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/config/install/webform.webform.test_handler_scheduled_email.yml @@ -226,7 +226,7 @@ access: handlers: tomorrow: id: scheduled_email - label: Tomorow + label: Tomorrow notes: '' handler_id: tomorrow status: true diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml index 20c140a213ee2409d9b7715ca200b886bdded9a8..2d678eef5538493d0815b25908316f61c6ae89ad 100644 --- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml +++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml @@ -2,12 +2,12 @@ name: 'Webform Scheduled Email test' type: module description: 'Support module for webform schedule email testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_scheduled_email' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml index a1dce7529adde7ee8f8bc22cb815da5888051a59..a4c9296178705d5700c7e39e5ad525fe80a59708 100644 --- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml +++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml @@ -2,7 +2,7 @@ name: 'Webform Scheduled Email Translation test' type: module description: 'Support module for webform schedule email translation testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:config_translation' - 'drupal:language' @@ -10,7 +10,7 @@ dependencies: - 'webform:webform' - 'webform:webform_scheduled_email' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml b/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml index 3e611d94c3a955b295a65e870c51b44524286771..c12f2a748d8827c38a495f3eb036384e41b08c42 100644 --- a/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml +++ b/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml @@ -2,11 +2,11 @@ name: 'Webform Scheduled Email Handler' type: module description: 'Provides the "Scheduled email" handler, which sends Webform submissions via scheduled email using cron.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_schema/src/WebformSchemaManager.php b/web/modules/webform/modules/webform_schema/src/WebformSchemaManager.php index 611b95e3bca07c3704ec2d39aa716e9788decb7f..0c99d3f5b0d106733ec6352b717c2018e05aff58 100644 --- a/web/modules/webform/modules/webform_schema/src/WebformSchemaManager.php +++ b/web/modules/webform/modules/webform_schema/src/WebformSchemaManager.php @@ -21,7 +21,7 @@ use Drupal\webform\WebformInterface; /** - * Provides a webform schema maaager. + * Provides a webform schema manager. */ class WebformSchemaManager implements WebformSchemaManagerInterface { diff --git a/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml b/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml index fe21b2ae51791db1fac0f58c5d08f7d1bff0ad3c..5a64559d3b04fee5d7bd64475943a893f651ccae 100644 --- a/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml +++ b/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Schema test' type: module description: 'Support module for webform schema testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_schema' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_schema/tests/src/Functional/WebformSchemaTest.php b/web/modules/webform/modules/webform_schema/tests/src/Functional/WebformSchemaTest.php index d359d602e4e120e1123db139bc2ef6b535bca3e1..8711c8c5ed56541833fec8417745eee1db18c785 100644 --- a/web/modules/webform/modules/webform_schema/tests/src/Functional/WebformSchemaTest.php +++ b/web/modules/webform/modules/webform_schema/tests/src/Functional/WebformSchemaTest.php @@ -30,7 +30,7 @@ public function testSchema() { $this->drupalGet('/admin/structure/webform/manage/test_webform_schema/schema'); $assert_session->statusCodeEquals(403); - // Create a user who has 'access webform schema' permision. + // Create a user who has 'access webform schema' permission. $account = $this->createUser(['access webform schema']); $this->drupalLogin($account); diff --git a/web/modules/webform/modules/webform_schema/webform_schema.info.yml b/web/modules/webform/modules/webform_schema/webform_schema.info.yml index db6cde2ebd721e3e8a8ce1c3566a6a1af5f80d50..595d51a348a2fd71779061ae952f31f29cf42873 100644 --- a/web/modules/webform/modules/webform_schema/webform_schema.info.yml +++ b/web/modules/webform/modules/webform_schema/webform_schema.info.yml @@ -2,11 +2,11 @@ name: 'Webform Schema' type: module description: 'Adds a ''Schema'' tab to the webform builder UI.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_share/src/Controller/WebformShareController.php b/web/modules/webform/modules/webform_share/src/Controller/WebformShareController.php index 481817095b30214f11144be7619b1118e32fda9c..edf2d73843daaddc38d103ce15c94816d0fc1ac6 100644 --- a/web/modules/webform/modules/webform_share/src/Controller/WebformShareController.php +++ b/web/modules/webform/modules/webform_share/src/Controller/WebformShareController.php @@ -83,7 +83,7 @@ public function page(Request $request, $library = NULL, $version = NULL) { $build['#attached']['library'][] = "webform_share/libraries.$library.$version"; } // Add setting notifying AjaxCommand that this page is shared via an - // embeddded iframe. + // embedded iframe. // @see Drupal.AjaxCommands.prototype.webformRefresh $build['#attached']['drupalSettings']['webform_share']['page'] = TRUE; return $build; diff --git a/web/modules/webform/modules/webform_share/webform_share.info.yml b/web/modules/webform/modules/webform_share/webform_share.info.yml index 0c83c833564a4923a67e7d4fc06417451a7b3ceb..d9802b3b6ed670c8b86bfa895fea45da156964f1 100644 --- a/web/modules/webform/modules/webform_share/webform_share.info.yml +++ b/web/modules/webform/modules/webform_share/webform_share.info.yml @@ -2,11 +2,11 @@ name: 'Webform Share' type: module description: 'Allows webforms to be shared on other websites using an iframe.' package: 'Webform' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml b/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml index 386a62681c2f464a014a5dc383353c68aeab4893..b17a41bc1639fc46ca4c401fcb9257775ef938fc 100644 --- a/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml +++ b/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml @@ -2,12 +2,12 @@ name: 'Webform Shortcuts' type: module description: 'Provides configurable keyboard shortcuts to create and save webform elements.' package: 'Webform' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' - 'webform:webform_ui' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_submission_export_import/src/Form/WebformSubmissionExportImportUploadForm.php b/web/modules/webform/modules/webform_submission_export_import/src/Form/WebformSubmissionExportImportUploadForm.php index 4de148fcaf026f08a60fc1450f5575e84e6a9cb4..b181559e43f12e805fa80966ad44c5bf45073e30 100644 --- a/web/modules/webform/modules/webform_submission_export_import/src/Form/WebformSubmissionExportImportUploadForm.php +++ b/web/modules/webform/modules/webform_submission_export_import/src/Form/WebformSubmissionExportImportUploadForm.php @@ -658,7 +658,7 @@ public static function batchFinish($success, array $results, array $operations) } /** - * Disply import status. + * Display import status. * * @param array $stats * Import stats. diff --git a/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml b/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml index 249ad1409e6fc4eb957a03ae8a45c236bbd50bc7..dd261f660c09190f11076766d5c9c52f4da5b8da 100644 --- a/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml +++ b/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml @@ -2,12 +2,12 @@ name: 'Webform Submission Export/Import test' type: module description: 'Support module for webform submission export/import testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_submission_export_import' - 'webform:webform_image_select' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php b/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php index b0376a03231e9fd0b42f6fd6972ef65bd2ef2e6a..6945245e373fe54acf94510a01a2b35a33916639 100644 --- a/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php +++ b/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform_submission_export_import\Functional; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\file\Entity\File; use Drupal\Tests\webform\Functional\WebformBrowserTestBase; use Drupal\webform\Entity\Webform; @@ -261,6 +262,12 @@ public function testSubmissionImport() { // not treated as errors. $actual_stats = $importer->import(); WebformElementHelper::convertRenderMarkupToStrings($actual_stats); + $validation_error = DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => 'The email address <em class="placeholder">not an email address</em> is not valid. Use the format user@example.com.', + deprecatedCallable: fn() => 'The email address <em class="placeholder">not an email address</em> is not valid.', + ); $expected_stats = [ 'created' => 1, 'updated' => 1, @@ -278,8 +285,8 @@ public function testSubmissionImport() { 1 => [], 2 => [], 3 => [ - 0 => 'The email address <em class="placeholder">not an email address</em> is not valid.', - 1 => 'The email address <em class="placeholder">not an email address</em> is not valid.', + 0 => $validation_error, + 1 => $validation_error, 2 => (floatval(\Drupal::VERSION) >= 10.1) ? 'The submitted value <em class="placeholder">invalid</em> in the <em class="placeholder">checkboxes</em> element is not allowed.' : 'An illegal choice has been detected. Please contact the site administrator.', diff --git a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml index 147c8410cc39e75e34e73129a52e92ab3501f157..f3492d057a478854f65d290bdf94aca7829b2cec 100644 --- a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml +++ b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml @@ -2,11 +2,11 @@ name: 'Webform Submission Export/Import' type: module description: 'Provides the ability to export and import submissions.' package: 'Webform' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.routing.yml b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.routing.yml index 85ecddfb05677dcd670d327d783a4e0097b99faf..20ebcba8e9636389e1465778cd57c5c32fc58206 100644 --- a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.routing.yml +++ b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.routing.yml @@ -44,8 +44,8 @@ entity.node.webform_submission_export_import.results_import: defaults: _form: '\Drupal\webform_submission_export_import\Form\WebformSubmissionExportImportUploadForm' _title_callback: '\Drupal\Core\Entity\Controller\EntityController::title' - operation: webform_submission_view - entity_access: 'webform.submission_view_any' + operation: webform_submission_update + entity_access: 'webform.submission_update_any' options: parameters: node: diff --git a/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml b/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml index 59b2cd4374e85b6940d0efcce569e4a87f0c4b45..913ea32b94da38b017f94fdcd3834a837f4246ff 100644 --- a/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml +++ b/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml @@ -2,11 +2,11 @@ name: 'Webform Submission Log' type: module description: 'Dedicated logging and reporting for webform submissions.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_issue.yml b/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_issue.yml index b5bbba49c72a6bc112769c8c6b0f27f9e535c5bc..4f26f283178ab574bda24ba7e72926510f22f41e 100644 --- a/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_issue.yml +++ b/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_issue.yml @@ -108,7 +108,7 @@ elements: | tags: tags auto_create: 1 auto_create_bundle: tags - summary_and_relationshsips_details: + summary_and_relationships_details: '#title': 'Issue Summary' '#type': details '#open': true diff --git a/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_user_profile.yml b/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_user_profile.yml index 2c2d4ffbe4066acfe7cc672c787ff303dc53d1db..9c0f2d8c2b032cf546dc014ecf4ab3fdbaa46920 100644 --- a/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_user_profile.yml +++ b/web/modules/webform/modules/webform_templates/config/install/webform.webform.template_user_profile.yml @@ -97,11 +97,11 @@ elements: | '#type': webform_section email: '#type': email - '#title': 'Primary E-mail Address' + '#title': 'Primary Email Address' '#description': 'Enter your primary email addresses, which will be used for all email communications.' emails: '#type': webform_email_multiple - '#title': 'Secondary E-mail Addresses' + '#title': 'Secondary Email Addresses' '#description': 'Enter multiple email addresses separated by commas.' regional_settings: '#title': 'Regional Settings' diff --git a/web/modules/webform/modules/webform_templates/webform_templates.info.yml b/web/modules/webform/modules/webform_templates/webform_templates.info.yml index ffd77734d5315f41282dadd6d7b89f44b5c2d544..8bfcf296c2aaa4efdaca9a3c98ac776f38cd4483 100644 --- a/web/modules/webform/modules/webform_templates/webform_templates.info.yml +++ b/web/modules/webform/modules/webform_templates/webform_templates.info.yml @@ -2,11 +2,11 @@ name: 'Webform Templates' type: module description: 'Provides starter templates that can be used to create new webforms.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml b/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml index 8b2b8465a3ba718cb1bbd04896862671a3ebc484..0ce37101d1b9b10be845acacd9543797d51bfd64 100644 --- a/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml +++ b/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform Toggles test' type: module description: 'Support module for webform toggles element testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform_toggles' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml b/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml index 7ade47c02b386aad44fb6a5cd6c17cdd0d2f2698..67c6cf6105c55da55af5732208ff318a153d43ef 100644 --- a/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml +++ b/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml @@ -2,13 +2,13 @@ name: 'Webform Toggles' type: module description: 'Provides a webform element for toggling a single on/off state. The Toggles library is no longer being maintained and has major accessibility issues.' package: 'Webform [DEPRECATED]' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 lifecycle: deprecated lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequently-asked-questions/what-to-do-about-deprecated-external-libraries-in-webform-6x' dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php b/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php index 9a122f49fd0416f1f0ad4fc84c53cca6da9a4d4e..7587cfd1cc3d5f4d593cbf53ddd8ac8973012605 100644 --- a/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php +++ b/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementFormBase.php @@ -280,6 +280,7 @@ public function buildForm(array $form, FormStateInterface $form_state, WebformIn if (isset($form['properties']['element']['title'])) { $form['properties']['element']['key']['#machine_name']['source'] = ['properties', 'element', 'title']; $form['properties']['element']['title']['#id'] = 'title'; + $form['properties']['element']['title']['#weight'] = -98; } // Prefix table row child elements with the table row key. diff --git a/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementTestForm.php b/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementTestForm.php index 067d59c2569ef30684d9ea8bd6d68cce6de8891e..3f0094f04c7542c42cee6b967e5f5a844614115c 100644 --- a/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementTestForm.php +++ b/web/modules/webform/modules/webform_ui/src/Form/WebformUiElementTestForm.php @@ -115,7 +115,7 @@ public function buildForm(array $form, FormStateInterface $form_state, WebformIn $form['test']['render_array'] = [ '#type' => 'details', '#title' => $this->t('Render array'), - '#desciption' => $this->t("Below is the element's final render array."), + '#description' => $this->t("Below is the element's final render array."), 'source' => [ '#theme' => 'webform_codemirror', '#type' => 'yaml', diff --git a/web/modules/webform/modules/webform_ui/src/WebformUiEntityElementsForm.php b/web/modules/webform/modules/webform_ui/src/WebformUiEntityElementsForm.php index 4b472017c1ccfe252db56da054d44176d01812ac..9cb6fb78d2a1d014abc3f55d27e843db3ec5e6ae 100644 --- a/web/modules/webform/modules/webform_ui/src/WebformUiEntityElementsForm.php +++ b/web/modules/webform/modules/webform_ui/src/WebformUiEntityElementsForm.php @@ -10,6 +10,7 @@ use Drupal\Core\Render\Markup; use Drupal\Core\Url; use Drupal\webform\Element\WebformElementStates; +use Drupal\webform\Element\WebformHtmlEditor; use Drupal\webform\Form\WebformEntityAjaxFormTrait; use Drupal\webform\Plugin\WebformElement\WebformElement; use Drupal\webform\Plugin\WebformElement\WebformTable; @@ -66,11 +67,11 @@ class WebformUiEntityElementsForm extends BundleEntityFormBase { protected $elementsValidator; /** - * The webform token manager. + * The webform libraries manager. * - * @var \Drupal\webform\WebformTokenManagerInterface + * @var \Drupal\webform\WebformLibrariesManagerInterface */ - protected $tokenManager; + protected $librariesManager; /** * {@inheritdoc} @@ -81,6 +82,7 @@ public static function create(ContainerInterface $container) { $instance->elementInfo = $container->get('plugin.manager.element_info'); $instance->elementManager = $container->get('plugin.manager.webform.element'); $instance->elementsValidator = $container->get('webform.elements_validator'); + $instance->librariesManager = $container->get('webform.libraries_manager'); return $instance; } @@ -509,12 +511,19 @@ protected function getElementRow(array $element, $delta, array $parent_options) ], ]; if (!empty($element['#admin_notes'])) { - $row['title']['notes'] = [ - '#type' => 'webform_help', - '#help_title' => $element['#admin_title'] ?: $element['#title'], - '#help' => $element['#admin_notes'], - '#weight' => 100, - ]; + if ($this->librariesManager->isIncluded('tippyjs')) { + $row['title']['notes'] = [ + '#type' => 'webform_help', + '#help_title' => $element['#admin_title'] ?: $element['#title'], + '#help' => $element['#admin_notes'], + '#weight' => 100, + ]; + } + else { + $row['title']['notes'] = WebformHtmlEditor::checkMarkup($element['#admin_notes']) + [ + '#prefix' => '<br/>', + ]; + } } if ($webform->hasContainer()) { diff --git a/web/modules/webform/modules/webform_ui/webform_ui.info.yml b/web/modules/webform/modules/webform_ui/webform_ui.info.yml index a51f6e837583daeb65a04d142c28cb5ae95623a4..d2f426a195c5b9607e4dd9e886210b5561314c2a 100644 --- a/web/modules/webform/modules/webform_ui/webform_ui.info.yml +++ b/web/modules/webform/modules/webform_ui/webform_ui.info.yml @@ -2,11 +2,11 @@ name: 'Webform UI' type: module description: 'Provides a user interface for building and maintaining webforms.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/src/Commands/WebformSanitizeSubmissionsCommands.php b/web/modules/webform/src/Commands/WebformSanitizeSubmissionsCommands.php index 0db7d1bff19ee4e972bc824bd73f8ef519db520b..b2678ab0ce87f10e3975e35971da1b9775aa1aaf 100644 --- a/web/modules/webform/src/Commands/WebformSanitizeSubmissionsCommands.php +++ b/web/modules/webform/src/Commands/WebformSanitizeSubmissionsCommands.php @@ -105,7 +105,7 @@ public function messages(&$messages, InputInterface $input) { * The enabled options value. * * @return bool - * TRUE if santize websubmission is enabled. + * TRUE if sanitize websubmission is enabled. */ protected function isEnabled($value) { return ($value !== 'no'); diff --git a/web/modules/webform/src/Controller/WebformEntityController.php b/web/modules/webform/src/Controller/WebformEntityController.php index aa3dab5431abd1a112347922d76d5faeb7954176..75a8cbb8896f98eea65e7b6fcb0fbd70b997f8f5 100644 --- a/web/modules/webform/src/Controller/WebformEntityController.php +++ b/web/modules/webform/src/Controller/WebformEntityController.php @@ -3,10 +3,13 @@ namespace Drupal\webform\Controller; use Drupal\Component\Render\FormattableMarkup; +use Drupal\Component\Utility\Html; +use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Cache\CacheableResponse; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Render\HtmlResponse; use Drupal\Core\Serialization\Yaml; use Drupal\webform\Element\Webform as WebformElement; use Drupal\webform\Routing\WebformUncacheableResponse; @@ -15,6 +18,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** @@ -29,6 +33,13 @@ class WebformEntityController extends ControllerBase implements ContainerInjecti */ protected $renderer; + /** + * The config factory. + * + * @var \Drupal\Core\Config\ConfigFactoryInterface + */ + protected $configFactory; + /** * The webform request handler. * @@ -56,6 +67,7 @@ class WebformEntityController extends ControllerBase implements ContainerInjecti public static function create(ContainerInterface $container) { $instance = parent::create($container); $instance->renderer = $container->get('renderer'); + $instance->configFactory = $container->get('config.factory'); $instance->requestHandler = $container->get('webform.request'); $instance->tokenManager = $container->get('webform.token_manager'); $instance->webformEntityReferenceManager = $container->get('webform.entity_reference_manager'); @@ -77,6 +89,53 @@ public function addForm(Request $request, WebformInterface $webform) { return $webform->getSubmissionForm(); } + /** + * Prepare a 404 response. + * + * The fast_404 feature can cause a cache invalidation issue for + * anonymous users. To fix it we need to add a similar response + * with all required cache tags instead of the default one. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * The current request. + * @param \Drupal\webform\WebformInterface $webform + * The webform. + * + * @return \Symfony\Component\HttpFoundation\Response + * The response object. + * + * @see Fast404ExceptionHtmlSubscriber::on404() + */ + protected function getNotFoundResponse(Request $request, WebformInterface $webform) { + + if (!$webform->access('update')) { + $config = $this->configFactory->get('system.performance'); + $exclude_paths = $config->get('fast_404.exclude_paths'); + if ($config->get('fast_404.enabled') && $exclude_paths && !preg_match($exclude_paths, $request->getPathInfo())) { + $fast_paths = $config->get('fast_404.paths'); + if ($fast_paths && preg_match($fast_paths, $request->getPathInfo())) { + $fast_404_html = strtr($config->get('fast_404.html'), ['@path' => Html::escape($request->getUri())]); + $response = new HtmlResponse($fast_404_html, Response::HTTP_NOT_FOUND); + // Some routes such as system.files conditionally throw a + // NotFoundHttpException depending on URL parameters instead of just + // the route and route parameters, so add the URL cache context + // to account for this. + $cacheable_metadata = new CacheableMetadata(); + $cacheable_metadata->setCacheContexts(['url']); + $cacheable_metadata->addCacheTags(['4xx-response']); + $response + ->addCacheableDependency($cacheable_metadata) + ->addCacheableDependency($webform) + ->addCacheableDependency($this->config('webform.settings')); + return $response; + } + } + } + + // Follow the default exception otherwise. + throw new NotFoundHttpException(); + } + /** * Returns a webform's CSS. * @@ -91,7 +150,7 @@ public function addForm(Request $request, WebformInterface $webform) { public function css(Request $request, WebformInterface $webform) { $assets = $webform->getAssets(); if (empty($assets['css'])) { - throw new NotFoundHttpException(); + return $this->getNotFoundResponse($request, $webform); } if ($webform->access('update')) { @@ -119,7 +178,7 @@ public function css(Request $request, WebformInterface $webform) { public function javascript(Request $request, WebformInterface $webform) { $assets = $webform->getAssets(); if (empty($assets['javascript'])) { - throw new NotFoundHttpException(); + return $this->getNotFoundResponse($request, $webform); } if ($webform->access('update')) { diff --git a/web/modules/webform/src/Element/WebformCodeMirror.php b/web/modules/webform/src/Element/WebformCodeMirror.php index c02314749a57d4655ed34cb4a760b7af76fbf0b1..4e82495a63499cb2beca39a5d06731bb9a17b86a 100644 --- a/web/modules/webform/src/Element/WebformCodeMirror.php +++ b/web/modules/webform/src/Element/WebformCodeMirror.php @@ -141,8 +141,8 @@ public static function preRenderWebformCodeMirror(array $element) { public static function validateWebformCodeMirror(&$element, FormStateInterface $form_state, &$complete_form) { // If element is disabled then use the #default_value. if (!empty($element['#disable'])) { - $element['#value'] = $element['#default_value']; - $form_state->setValueForElement($element, $element['#default_value']); + $element['#value'] = $element['#default_value'] ?? NULL; + $form_state->setValueForElement($element, $element['#default_value'] ?? NULL); } $errors = static::getErrors($element, $form_state, $complete_form); if ($errors) { diff --git a/web/modules/webform/src/Element/WebformElementAttributes.php b/web/modules/webform/src/Element/WebformElementAttributes.php index 2c88e1befa4e196fbdc1dfc24f1967876863686b..8fffae7405aec956188e74a6eead8a77e58003f8 100644 --- a/web/modules/webform/src/Element/WebformElementAttributes.php +++ b/web/modules/webform/src/Element/WebformElementAttributes.php @@ -98,7 +98,7 @@ public static function processWebformElementAttributes(&$element, FormStateInter // Custom options. $element['custom'] = [ - '#type' => 'texfield', + '#type' => 'textfield', '#placeholder' => t('Enter custom classes…'), '#states' => [ 'visible' => [ diff --git a/web/modules/webform/src/Element/WebformElementStates.php b/web/modules/webform/src/Element/WebformElementStates.php index 21633b9f2ecc5e403bd057e5e4e9bab9701d18b3..cf79876ff38583f9428f2935c58bb5bc27631d1d 100644 --- a/web/modules/webform/src/Element/WebformElementStates.php +++ b/web/modules/webform/src/Element/WebformElementStates.php @@ -585,6 +585,10 @@ public static function addStateSubmit(array &$form, FormStateInterface $form_sta $values = $element['states']['#value']; + if (!is_array($values)) { + $values = []; + } + // Add new state and condition. $values[] = [ 'state' => '', diff --git a/web/modules/webform/src/Element/WebformEntityTrait.php b/web/modules/webform/src/Element/WebformEntityTrait.php index 20bd96c3079184c79fa8d1d4b46bd382051a6bbe..3db4bce48f7bf769a3c65a225696d610bd665aa2 100644 --- a/web/modules/webform/src/Element/WebformEntityTrait.php +++ b/web/modules/webform/src/Element/WebformEntityTrait.php @@ -4,7 +4,6 @@ use Drupal\Core\Cache\Cache; use Drupal\Core\Form\OptGroup; -use Drupal\views\Plugin\EntityReferenceSelection\ViewsSelection; use Drupal\webform\Utility\WebformOptionsHelper; /** @@ -24,7 +23,7 @@ public function getInfo() { } /** - * Set referencable entities as options for an element. + * Set referenceable entities as options for an element. * * @param array $element * An element. @@ -71,14 +70,6 @@ public static function setOptions(array &$element, array $settings = []) { $options += $bundle_options; } - // If the selection handler is not using views, then translate - // the entity reference's options. - if (!\Drupal::moduleHandler()->moduleExists('views') - // phpcs:ignore Drupal.Classes.FullyQualifiedNamespace.UseStatementMissing - || !($handler instanceof ViewsSelection)) { - $options = static::translateOptions($options, $element); - } - if ($element['#type'] === 'webform_entity_select') { // Strip tags from options since <option> element does // not support HTML tags. @@ -119,35 +110,4 @@ protected static function setCacheTags(array &$element, $target_type, array $tar $element['#cache']['tags'] = Cache::mergeTags($element['#cache']['tags'] ?? [], $tags); } - /** - * Translate the select options. - * - * @param array $options - * Untranslated options. - * @param array $element - * An element. - * - * @return array - * Translated options. - */ - protected static function translateOptions(array $options, array $element) { - /** @var \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository */ - $entity_repository = \Drupal::service('entity.repository'); - - foreach ($options as $key => $value) { - if (is_array($value)) { - $options[$key] = static::translateOptions($value, $element); - } - else { - // Set the entity in the correct language for display. - $option = \Drupal::entityTypeManager() - ->getStorage($element['#target_type']) - ->load($key); - $option = $entity_repository->getTranslationFromContext($option); - $options[$key] = $option->label(); - } - } - return $options; - } - } diff --git a/web/modules/webform/src/Element/WebformExcludedElements.php b/web/modules/webform/src/Element/WebformExcludedElements.php index e0430476b81db3638c1f8169d1bb485c2c965bb7..07c0715a2ab4e47ca3bc33902806bd385c62ce68 100644 --- a/web/modules/webform/src/Element/WebformExcludedElements.php +++ b/web/modules/webform/src/Element/WebformExcludedElements.php @@ -121,7 +121,7 @@ public static function getWebformExcludedOptions(array $element) { * Get elements with or without markup and composite sub elements. * * @param array $element - * The exclued elements form element. + * The excluded elements form element. * @param \Drupal\webform\WebformInterface $webform * A webform. * diff --git a/web/modules/webform/src/Element/WebformHtmlEditor.php b/web/modules/webform/src/Element/WebformHtmlEditor.php index 4765d5e510d536e1541c6ca69c1f3ea2b126fd80..a2aa62ebcd021c0eb7dda32fbbde0f6ba2bdb6d9 100644 --- a/web/modules/webform/src/Element/WebformHtmlEditor.php +++ b/web/modules/webform/src/Element/WebformHtmlEditor.php @@ -200,7 +200,7 @@ public static function getAllowedTags() { return WebformXss::getHtmlTagList(); default: - return preg_split('/ +/', $allowed_tags); + return preg_split('/ +/', (string) $allowed_tags); } } diff --git a/web/modules/webform/src/Element/WebformLikert.php b/web/modules/webform/src/Element/WebformLikert.php index 012e1d5efbdab314809ccdfe570f3a5169969cdb..fd1672a3a484c139fe558d274b96eac7d909e6c8 100644 --- a/web/modules/webform/src/Element/WebformLikert.php +++ b/web/modules/webform/src/Element/WebformLikert.php @@ -8,7 +8,9 @@ use Drupal\Core\Render\Element\FormElement; use Drupal\webform\Utility\WebformAccessibilityHelper; use Drupal\webform\Utility\WebformElementHelper; +use Drupal\webform\Utility\WebformHtmlHelper; use Drupal\webform\Utility\WebformOptionsHelper; +use Drupal\webform\Utility\WebformXss; /** * Provides a webform element for a likert scale. @@ -128,6 +130,10 @@ public static function processWebformLikert(&$element, FormStateInterface $form_ $value = $element['#value'][$question_key] ?? NULL; + // Convert #title to HTML markup so that it can displayed properly + // in error messages. + $question_title = WebformHtmlHelper::toHtmlMarkup($question_title, WebformXss::getHtmlTagList()); + // Get question id. // @see \Drupal\Core\Form\FormBuilder::doBuildForm $question_id = 'edit-' . implode('-', array_merge($element['#parents'], ['table', $question_key, 'likert_question'])); @@ -328,6 +334,9 @@ public static function setRequiredError(array &$element, FormStateInterface $for foreach ($element['#questions'] as $question_key => $question_title) { if (is_null($value[$question_key])) { $question_element = &$element['table'][$question_key]['likert_question']; + // Convert #title to HTML markup so that it can displayed properly + // in error messages. + $question_title = WebformHtmlHelper::toHtmlMarkup($question_title, WebformXss::getHtmlTagList()); $t_args = ['@name' => $question_title]; if (!empty($element['#required_error'])) { $form_state->setError($question_element, new FormattableMarkup($element['#required_error'], $t_args)); diff --git a/web/modules/webform/src/Element/WebformMultiple.php b/web/modules/webform/src/Element/WebformMultiple.php index 577326d8985e7b4ddda1d70f9fb29aad9ca411b2..87e6e2f46586696215ba5b969b993588b0a6f293 100644 --- a/web/modules/webform/src/Element/WebformMultiple.php +++ b/web/modules/webform/src/Element/WebformMultiple.php @@ -145,7 +145,7 @@ public static function processWebformMultiple(&$element, FormStateInterface $for $number_of_empty_items = (int) $element['#empty_items']; $number_of_items = $number_of_default_values + $number_of_empty_items; - // Make sure number of items is greated than min items. + // Make sure number of items is greater than min items. $min_items = (int) $element['#min_items']; $number_of_items = ($number_of_items < $min_items) ? $min_items : $number_of_items; diff --git a/web/modules/webform/src/Element/WebformOptions.php b/web/modules/webform/src/Element/WebformOptions.php index 778149a6346044b2c7fe5d51c1fcf10909f1f0cd..bfafca7968c353a26dafa84355ce20158c38c0bc 100644 --- a/web/modules/webform/src/Element/WebformOptions.php +++ b/web/modules/webform/src/Element/WebformOptions.php @@ -215,7 +215,7 @@ public static function validateWebformOptions(&$element, FormStateInterface $for /* ************************************************************************ */ /** - * Convert values from yamform_multiple element to options. + * Convert values from webform_multiple element to options. * * @param array $values * An array of values. diff --git a/web/modules/webform/src/Element/WebformRoles.php b/web/modules/webform/src/Element/WebformRoles.php index c5f1bb2e9039313a429b2b6733f2fcdef6610024..e5008f435cd6ea7131078443d0de6d37b3a929eb 100644 --- a/web/modules/webform/src/Element/WebformRoles.php +++ b/web/modules/webform/src/Element/WebformRoles.php @@ -4,6 +4,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\Element\Checkboxes; +use Drupal\webform\Utility\WebformUserHelper; /** * Provides a webform roles (checkboxes) element. @@ -29,8 +30,8 @@ public function getInfo() { * Processes a webform roles (checkboxes) element. */ public static function processCheckboxes(&$element, FormStateInterface $form_state, &$complete_form) { - $membersonly = (empty($element['#include_anonymous'])) ? TRUE : FALSE; - $element['#options'] = array_map('\Drupal\Component\Utility\Html::escape', user_role_names($membersonly)); + $members_only = (empty($element['#include_anonymous'])) ? TRUE : FALSE; + $element['#options'] = array_map('\Drupal\Component\Utility\Html::escape', WebformUserHelper::getRoleNames($members_only)); $element['#attached']['library'][] = 'webform/webform.element.roles'; $element['#attributes']['class'][] = 'js-webform-roles-role'; return parent::processCheckboxes($element, $form_state, $complete_form); diff --git a/web/modules/webform/src/Element/WebformSignature.php b/web/modules/webform/src/Element/WebformSignature.php index ede5122792c195036ab7233da066d0fed1a343fc..7fe40e588839dfbd004553e1f425a0d8d35b971e 100644 --- a/web/modules/webform/src/Element/WebformSignature.php +++ b/web/modules/webform/src/Element/WebformSignature.php @@ -114,13 +114,34 @@ public static function isSignatureValid($value) { return FALSE; } - // Make sure signature's image size can be read. + // Create a temp webform_signature_* image. /** @var \Drupal\Core\File\FileSystemInterface $file_system */ $file_system = \Drupal::service('file_system'); $temp_image = $file_system->tempnam('temporary://', 'webform_signature_'); $encoded_image = explode(',', $value)[1]; $decoded_image = base64_decode($encoded_image); file_put_contents($temp_image, $decoded_image); + + // Validate the temp signature image. + $result = static::validateTempSignatureImage($temp_image); + + // Delete the temp webform_signature_* image. + unlink($temp_image); + + return $result; + } + + /** + * Validate the temp signature image. + * + * @param string $temp_image + * The temp signature image. + * + * @return bool + * TRUE is the temp signature image is valid. + */ + protected static function validateTempSignatureImage($temp_image) { + // Make sure we can get the image size. $image_size = getimagesize($temp_image); if (!$image_size) { return FALSE; diff --git a/web/modules/webform/src/Element/WebformTableRow.php b/web/modules/webform/src/Element/WebformTableRow.php index 1202fc949787d7472821474286eee9c8f09e7d54..4110d066378ef5562a516d28d10a6c4caf9e6158 100644 --- a/web/modules/webform/src/Element/WebformTableRow.php +++ b/web/modules/webform/src/Element/WebformTableRow.php @@ -28,7 +28,7 @@ public function getInfo() { } /** - * Processes a webfrom table row element. + * Processes a webform table row element. */ public static function processTableRow(&$element, FormStateInterface $form_state, &$complete_form) { $element['#attributes']['class'][] = 'webform-table-row'; diff --git a/web/modules/webform/src/Element/WebformTelephone.php b/web/modules/webform/src/Element/WebformTelephone.php index 02623fb546e4e2809cfe6eb9f4838d87b8b03a36..f96b96755b8beb1ea07c5259526a60fef60e7db2 100644 --- a/web/modules/webform/src/Element/WebformTelephone.php +++ b/web/modules/webform/src/Element/WebformTelephone.php @@ -52,6 +52,7 @@ public static function getCompositeElements(array $element) { */ public static function processWebformComposite(&$element, FormStateInterface $form_state, &$complete_form) { $element = parent::processWebformComposite($element, $form_state, $complete_form); + $element['#attached']['library'][] = 'webform/webform.composite.telephone'; if (!empty($element['#phone__international']) && \Drupal::service('webform.libraries_manager')->isIncluded('jquery.intl-tel-input')) { $element['#attached']['library'][] = 'webform/webform.telephone'; } diff --git a/web/modules/webform/src/Element/WebformTermReferenceTrait.php b/web/modules/webform/src/Element/WebformTermReferenceTrait.php index 6f53a44ce19f7b971b64ef7a852e811bbf320981..74f1ae2b6e2ac9f59f619e1853aa1df6c11e655b 100644 --- a/web/modules/webform/src/Element/WebformTermReferenceTrait.php +++ b/web/modules/webform/src/Element/WebformTermReferenceTrait.php @@ -10,7 +10,7 @@ trait WebformTermReferenceTrait { /** - * Set referencable term entities as options for an element. + * Set referenceable term entities as options for an element. * * @param array $element * An element. diff --git a/web/modules/webform/src/Entity/Webform.php b/web/modules/webform/src/Entity/Webform.php index 51ced03ff8bc0fd374ea8e69b76cb94f61b1ea37..f0fee45507497202f29a079ca85f8ad3661cd813 100644 --- a/web/modules/webform/src/Entity/Webform.php +++ b/web/modules/webform/src/Entity/Webform.php @@ -497,13 +497,6 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface { */ protected $hasAnonymousSubmissionTrackingHandler; - /** - * Track if the webform has message handler. - * - * @var bool - */ - private $hasMessagehandler; - /** * {@inheritdoc} */ @@ -2471,7 +2464,7 @@ public function deletePaths() { } $path_alias_storage = \Drupal::entityTypeManager()->getStorage('path_alias'); - $query = $path_alias_storage->getQuery('OR')->accessCheck(); + $query = $path_alias_storage->getQuery('OR')->accessCheck(TRUE); // Delete webform base, confirmation, submissions and drafts paths. $path_suffixes = ['', '/confirmation', '/submissions', '/drafts']; @@ -2553,20 +2546,20 @@ protected function resetHandlers() { * {@inheritdoc} */ public function hasMessageHandler() { - if (isset($this->hasMessagehandler)) { - $this->hasMessagehandler; + if (isset($this->hasMessageHandler)) { + $this->hasMessageHandler; } - $this->hasMessagehandler = FALSE; + $this->hasMessageHandler = FALSE; $handlers = $this->getHandlers(); foreach ($handlers as $handler) { if ($handler instanceof WebformHandlerMessageInterface) { - $this->hasMessagehandler = TRUE; + $this->hasMessageHandler = TRUE; break; } } - return $this->hasMessagehandler; + return $this->hasMessageHandler; } /** diff --git a/web/modules/webform/src/EntityListBuilder/WebformEntityListBuilderSortLabelTrait.php b/web/modules/webform/src/EntityListBuilder/WebformEntityListBuilderSortLabelTrait.php index f318bab59724158ab0b195dec2532152cab806a5..051262787897e8bb6707e00303a84c4c2904eb7e 100644 --- a/web/modules/webform/src/EntityListBuilder/WebformEntityListBuilderSortLabelTrait.php +++ b/web/modules/webform/src/EntityListBuilder/WebformEntityListBuilderSortLabelTrait.php @@ -16,7 +16,7 @@ trait WebformEntityListBuilderSortLabelTrait { * @see \Drupal\Core\Entity\EntityListBuilder::getEntityIds */ protected function getEntityIds() { - $query = $this->getStorage()->getQuery()->accessCheck() + $query = $this->getStorage()->getQuery()->accessCheck(TRUE) ->sort($this->entityType->getKey('label')); // Only add the pager if a limit is specified. diff --git a/web/modules/webform/src/EntitySettings/WebformEntitySettingsFormForm.php b/web/modules/webform/src/EntitySettings/WebformEntitySettingsFormForm.php index 1f88191a884040f57efb283319bb344d2c7fdf21..342fcdbb1272e7ff67ed6eed9b61d4ed179c95cf 100644 --- a/web/modules/webform/src/EntitySettings/WebformEntitySettingsFormForm.php +++ b/web/modules/webform/src/EntitySettings/WebformEntitySettingsFormForm.php @@ -196,7 +196,7 @@ public function form(array $form, FormStateInterface $form_state) { if ($settings['ajax']) { $form['form_behaviors']['form_submit_back']['#default'] = TRUE; $form['form_behaviors']['form_submit_back']['#disabled'] = TRUE; - $form['form_behaviors']['form_submit_back']['#description'] .= '<br/><br/><em>' . $this->t('This behavior is not supoported when Ajax is enabled.') . '</em>'; + $form['form_behaviors']['form_submit_back']['#description'] .= '<br/><br/><em>' . $this->t('This behavior is not supported when Ajax is enabled.') . '</em>'; } // Disable warning about drafts. if ($settings['draft'] !== WebformInterface::DRAFT_NONE) { @@ -815,7 +815,7 @@ protected function getFormBehaviors() { 'group' => $this->t('Navigation'), 'title' => $this->t('Submit previous page when browser back button is clicked'), 'all_description' => $this->t('Browser back button submits the previous page for all forms.'), - 'form_description' => $this->t("If checked, the browser back button will submit the previous page and navigate back emulating the behaviour of user clicking a wizard or preview page's back button."), + 'form_description' => $this->t("If checked, the browser back button will submit the previous page and navigate back emulating the behavior of user clicking a wizard or preview page's back button."), ], 'form_unsaved' => [ 'group' => $this->t('Navigation'), diff --git a/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigAdvancedForm.php b/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigAdvancedForm.php index e841552f2b71b72224151826b101c4018ade2c54..28ca1e6800988a8c98036f55faf30bc9dec46515 100644 --- a/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigAdvancedForm.php +++ b/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigAdvancedForm.php @@ -287,38 +287,28 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#help' => FALSE, '#weight' => 100, ]; - $form['repair']['warning'] = [ - '#type' => 'webform_message', - '#message_type' => 'warning', - '#message_message' => $this->t('Repair and remove older Webform configuration files.') . '<br/>' . - '<strong>' . $this->t('This action cannot be undone.') . '</strong>', + $form['repair']['title'] = [ + '#markup' => $this->t('This action will…'), ]; - $form['repair'] += [ - 'title' => [ - '#markup' => $this->t('This action will…'), - ], - 'list' => [ - '#theme' => 'item_list', - '#items' => [ - $this->t('Repair webform submission storage schema'), - $this->t('Repair admin configuration'), - $this->t('Repair webform settings'), - $this->t('Repair webform handlers'), - $this->t('Repair webform field storage definitions'), - $this->t('Repair webform submission storage schema'), - $this->t('Remove webform submission translation settings'), - ], + $form['repair']['list'] = [ + '#theme' => 'item_list', + '#items' => [ + $this->t('Repair webform submission storage schema'), + $this->t('Repair admin configuration'), + $this->t('Repair webform settings'), + $this->t('Repair webform handlers'), + $this->t('Repair webform field storage definitions'), + $this->t('Repair webform submission storage schema'), + $this->t('Remove webform submission translation settings'), ], ]; - $form['repair']['action'] = ['#type' => 'actions']; - $form['repair']['action']['repair_configuration'] = [ - '#type' => 'submit', - '#value' => $this->t('Repair configuration'), - '#attributes' => [ - 'onclick' => 'return confirm("' . $this->t('Are you sure you want to repair and remove older webform configuration?') - . PHP_EOL - . $this->t('This cannot be undone!!!') . '");', - ], + $form['repair']['link'] = [ + '#type' => 'link', + '#title' => $this->t('Repair webform configuration'), + '#url' => Url::fromRoute('webform.config.repair'), + '#attributes' => ['class' => ['button', 'button--small']], + '#prefix' => '<p>', + '#suffix' => '</p>', ]; return parent::buildForm($form, $form_state); @@ -328,85 +318,40 @@ public function buildForm(array $form, FormStateInterface $form_state) { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { - $op = (string) $form_state->getValue('op'); - if ($op === (string) $this->t('Repair configuration')) { - // Copied from: - // @see \Drupal\webform\Commands\WebformCliService::drush_webform_repair - \Drupal::moduleHandler()->loadInclude('webform', 'install'); - - $this->messenger()->addMessage($this->t('Repairing webform submission storage schema…')); - _webform_update_webform_submission_storage_schema(); - - $this->messenger()->addMessage($this->t('Repairing admin configuration…')); - _webform_update_admin_settings(TRUE); - - $this->messenger()->addMessage($this->t('Repairing webform HTML editor…')); - _webform_update_html_editor(); - - $this->messenger()->addMessage($this->t('Repairing webform settings…')); - _webform_update_webform_settings(); - - $this->messenger()->addMessage($this->t('Repairing webform handlers…')); - _webform_update_webform_handler_settings(); - - $this->messenger()->addMessage($this->t('Repairing webform actions…')); - _webform_update_actions(); - - $this->messenger()->addMessage($this->t('Repairing webform field storage definitions…')); - _webform_update_field_storage_definitions(); - - $this->messenger()->addMessage($this->t('Repairing webform submission storage schema…')); - _webform_update_webform_submission_storage_schema(); - - if ($this->moduleHandler->moduleExists('webform_entity_print')) { - $this->messenger()->addMessage($this->t('Repairing webform entity print settings…')); - $this->moduleHandler->loadInclude('webform_entity_print', 'install'); - webform_entity_print_install(); - } - - $this->messenger()->addMessage($this->t('Removing (unneeded) webform submission translation settings…')); - _webform_update_webform_submission_translation(); - + // Update config and submit form. + $config = $this->config('webform.settings'); + $config->set('ui', $form_state->getValue('ui')); + $config->set('requirements', $form_state->getValue('requirements')); + $config->set('test', $form_state->getValue('test')); + $config->set('batch', $form_state->getValue('batch')); + + // Track if help is disabled. + // @todo Figure out how to clear cached help block. + $is_help_disabled = ($config->getOriginal('ui.help_disabled') !== $config->get('ui.help_disabled')); + $is_toolbar_item = ($config->getOriginal('ui.toolbar_item') !== $config->get('ui.toolbar_item')); + + parent::submitForm($form, $form_state); + + // Clear cached data. + if ($is_help_disabled || $is_toolbar_item) { + // Flush cache when help is being enabled. + // @see webform_help() drupal_flush_all_caches(); - - $this->messenger()->addStatus($this->t('Webform configuration has been repaired.')); } else { - // Update config and submit form. - $config = $this->config('webform.settings'); - $config->set('ui', $form_state->getValue('ui')); - $config->set('requirements', $form_state->getValue('requirements')); - $config->set('test', $form_state->getValue('test')); - $config->set('batch', $form_state->getValue('batch')); - - // Track if help is disabled. - // @todo Figure out how to clear cached help block. - $is_help_disabled = ($config->getOriginal('ui.help_disabled') !== $config->get('ui.help_disabled')); - $is_toolbar_item = ($config->getOriginal('ui.toolbar_item') !== $config->get('ui.toolbar_item')); - - parent::submitForm($form, $form_state); - - // Clear cached data. - if ($is_help_disabled || $is_toolbar_item) { - // Flush cache when help is being enabled. - // @see webform_help() - drupal_flush_all_caches(); - } - else { - // Clear render cache so that local tasks can be updated to hide/show - // the 'Contribute' tab. - // @see webform_local_tasks_alter() - $this->renderCache->deleteAll(); - $this->routerBuilder->rebuild(); - } + // Clear render cache so that local tasks can be updated to hide/show + // the 'Contribute' tab. + // @see webform_local_tasks_alter() + $this->renderCache->deleteAll(); + $this->routerBuilder->rebuild(); + } - // Redirect to the update advanced admin configuration form. - if ($is_toolbar_item) { - $path = $config->get('ui.toolbar_item') - ? '/admin/webform/config/advanced' - : '/admin/structure/webform/config/advanced'; - $form_state->setRedirectUrl(Url::fromUserInput($path)); - } + // Redirect to the update advanced admin configuration form. + if ($is_toolbar_item) { + $path = $config->get('ui.toolbar_item') + ? '/admin/webform/config/advanced' + : '/admin/structure/webform/config/advanced'; + $form_state->setRedirectUrl(Url::fromUserInput($path)); } } diff --git a/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigRepairForm.php b/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigRepairForm.php new file mode 100644 index 0000000000000000000000000000000000000000..ebfe4218278633dbd7b52f0790c65ecdf31d878c --- /dev/null +++ b/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigRepairForm.php @@ -0,0 +1,138 @@ +<?php + +namespace Drupal\webform\Form\AdminConfig; + +use Drupal\Core\Form\ConfirmFormBase; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Url; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Repare webform configuration form. + */ +class WebformAdminConfigRepairForm extends ConfirmFormBase { + + /** + * The module handler. + * + * @var \Drupal\Core\Extension\ModuleHandlerInterface + */ + protected $moduleHandler; + + /** + * {@inheritdoc} + */ + public function getFormId() { + return 'webform_admin_config_repair_form'; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + $instance = parent::create($container); + $instance->moduleHandler = $container->get('module_handler'); + return $instance; + } + + /** + * {@inheritdoc} + */ + public function getQuestion() { + return $this->t('Repair webform configuration'); + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state) { + $form = parent::buildForm($form, $form_state); + $form['description'] = [ + 'warning' => [ + '#type' => 'webform_message', + '#message_type' => 'warning', + '#message_message' => $this->t('Repair and remove older Webform configuration files.') . '<br/>' . + '<strong>' . $this->t('This action cannot be undone.') . '</strong>', + ], + 'title' => [ + '#markup' => $this->t('This action will…'), + ], + 'list' => [ + '#theme' => 'item_list', + '#items' => [ + $this->t('Repair webform submission storage schema'), + $this->t('Repair admin configuration'), + $this->t('Repair webform settings'), + $this->t('Repair webform handlers'), + $this->t('Repair webform field storage definitions'), + $this->t('Repair webform submission storage schema'), + $this->t('Remove webform submission translation settings'), + ], + ], + ]; + return $form; + } + + /** + * {@inheritdoc} + */ + public function getConfirmText() { + return $this->t('Repair configuration'); + } + + /** + * {@inheritdoc} + */ + public function getCancelUrl() { + return Url::fromRoute('webform.config.advanced'); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + // Copied from: + // @see \Drupal\webform\Commands\WebformCliService::drush_webform_repair + \Drupal::moduleHandler()->loadInclude('webform', 'install'); + + $this->messenger()->addMessage($this->t('Repairing webform submission storage schema…')); + _webform_update_webform_submission_storage_schema(); + + $this->messenger()->addMessage($this->t('Repairing admin configuration…')); + _webform_update_admin_settings(TRUE); + + $this->messenger()->addMessage($this->t('Repairing webform HTML editor…')); + _webform_update_html_editor(); + + $this->messenger()->addMessage($this->t('Repairing webform settings…')); + _webform_update_webform_settings(); + + $this->messenger()->addMessage($this->t('Repairing webform handlers…')); + _webform_update_webform_handler_settings(); + + $this->messenger()->addMessage($this->t('Repairing webform actions…')); + _webform_update_actions(); + + $this->messenger()->addMessage($this->t('Repairing webform field storage definitions…')); + _webform_update_field_storage_definitions(); + + $this->messenger()->addMessage($this->t('Repairing webform submission storage schema…')); + _webform_update_webform_submission_storage_schema(); + + if ($this->moduleHandler->moduleExists('webform_entity_print')) { + $this->messenger()->addMessage($this->t('Repairing webform entity print settings…')); + $this->moduleHandler->loadInclude('webform_entity_print', 'install'); + webform_entity_print_install(); + } + + $this->messenger()->addMessage($this->t('Removing (unneeded) webform submission translation settings…')); + _webform_update_webform_submission_translation(); + + drupal_flush_all_caches(); + + $this->messenger()->addStatus($this->t('Webform configuration has been repaired.')); + + $form_state->setRedirectUrl($this->getCancelUrl()); + } + +} diff --git a/web/modules/webform/src/Form/WebformConfigEntityDeleteFormBase.php b/web/modules/webform/src/Form/WebformConfigEntityDeleteFormBase.php index 94cf005c91c1c80dba79875034856afe9de67aae..00140888843846508bb9c4b15efe592aae460bfb 100644 --- a/web/modules/webform/src/Form/WebformConfigEntityDeleteFormBase.php +++ b/web/modules/webform/src/Form/WebformConfigEntityDeleteFormBase.php @@ -149,7 +149,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { $form['details'] = $details; } if (!$details && $confirm_input) { - $form['hr'] = ['#markup' => '<p><hr/></p>']; + $form['hr'] = ['#markup' => '<hr class="webform-hr"/>']; } if ($confirm_input) { $form['confirm'] = $confirm_input; diff --git a/web/modules/webform/src/Form/WebformDeleteFormBase.php b/web/modules/webform/src/Form/WebformDeleteFormBase.php index c4f36934c4df60dec56b7fad9083acc206f5ba1c..d9c5da713b684b52c3f2551169d2bccf9e9a9ab1 100644 --- a/web/modules/webform/src/Form/WebformDeleteFormBase.php +++ b/web/modules/webform/src/Form/WebformDeleteFormBase.php @@ -44,7 +44,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { $form['details'] = $details; } if (!$details && $confirm_input) { - $form['hr'] = ['#markup' => '<p><hr/></p>']; + $form['hr'] = ['#markup' => '<hr class="webform-hr"/>']; } if ($confirm_input) { $form['confirm'] = $confirm_input; diff --git a/web/modules/webform/src/Form/WebformDeleteMultipleFormBase.php b/web/modules/webform/src/Form/WebformDeleteMultipleFormBase.php index 8303f9a0d07dbeb7328af6c3822ebe108e23ffa6..8e78b27db02eec772d5e652456713a8acba013c1 100644 --- a/web/modules/webform/src/Form/WebformDeleteMultipleFormBase.php +++ b/web/modules/webform/src/Form/WebformDeleteMultipleFormBase.php @@ -47,10 +47,10 @@ public function buildForm(array $form, FormStateInterface $form_state, $entity_t '@item' => $this->entityType->getSingularLabel(), '@items' => $this->entityType->getPluralLabel(), ]), - '#suffix' => '<p><hr/></p>', + '#suffix' => '<hr class="webform-hr"/>', ]; $form['description'] = $this->getDescription(); - $form['hr'] = ['#markup' => '<p><hr/></p>']; + $form['hr'] = ['#markup' => '<hr class="webform-hr"/>']; $form['confirm_input'] = $this->getConfirmInput(); return $form; } diff --git a/web/modules/webform/src/Form/WebformSubmissionFilterForm.php b/web/modules/webform/src/Form/WebformSubmissionFilterForm.php index 4f542f90e4eabf8386e480b3763fc2e2f2da7b11..a884a9dcb0506f6a1389da6945c0ca4c4ef674e7 100644 --- a/web/modules/webform/src/Form/WebformSubmissionFilterForm.php +++ b/web/modules/webform/src/Form/WebformSubmissionFilterForm.php @@ -96,7 +96,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { 'entity' => trim($entity), ]; $query = array_filter($query); - if (!empty($query['entity']) && preg_match('#\(([^)]+)\)#', $query['entity'], $match)) { + if (!empty($query['entity']) && preg_match('#\(([^)]+)\)\s*$#', $query['entity'], $match)) { $query['entity'] = $match[1]; } $form_state->setRedirect($this->getRouteMatch()->getRouteName(), $this->getRouteMatch()->getRawParameters()->all(), [ diff --git a/web/modules/webform/src/Plugin/Field/FieldType/WebformEntityReferenceItem.php b/web/modules/webform/src/Plugin/Field/FieldType/WebformEntityReferenceItem.php index 2ab4f6a1741a88b8b6ebe61537a79fca51db9f91..7f64bf7ca76486cbe28bd8b241d3a01c56762c1e 100644 --- a/web/modules/webform/src/Plugin/Field/FieldType/WebformEntityReferenceItem.php +++ b/web/modules/webform/src/Plugin/Field/FieldType/WebformEntityReferenceItem.php @@ -18,7 +18,7 @@ * id = "webform", * label = @Translation("Webform"), * description = @Translation("A webform containing default submission values."), - * category = @Translation("Reference"), + * category = "reference", * default_widget = "webform_entity_reference_select", * default_formatter = "webform_entity_reference_entity_view", * list_class = "\Drupal\webform\Plugin\Field\FieldType\WebformEntityReferenceFieldItemList", diff --git a/web/modules/webform/src/Plugin/WebformElement/Captcha.php b/web/modules/webform/src/Plugin/WebformElement/Captcha.php index 135fc2e064f733df4af1398436c530e1077cc4ae..e0136ccfd1cfcf43f55ed1eec44f98fa1e4e14c4 100644 --- a/web/modules/webform/src/Plugin/WebformElement/Captcha.php +++ b/web/modules/webform/src/Plugin/WebformElement/Captcha.php @@ -100,6 +100,14 @@ public function prepare(array &$element, WebformSubmissionInterface $webform_sub $element['#captcha_admin_mode'] = TRUE; } + // Hide and solve the element if the user is exempt by IP address. + $is_exempt = function_exists('captcha_whitelist_ip_whitelisted') + && captcha_whitelist_ip_whitelisted(); + if ($is_exempt) { + $element['#access'] = FALSE; + $element['#captcha_admin_mode'] = TRUE; + } + // Always enable admin mode for test. $is_test = (strpos($this->routeMatch->getRouteName(), '.webform.test_form') !== FALSE) ? TRUE : FALSE; if ($is_test) { diff --git a/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php b/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php index 98a778239575e74db49c1bcb5edac49c87c048bf..b352211485396195b7833f35e817fb1a8ffce533 100644 --- a/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php +++ b/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php @@ -213,7 +213,7 @@ public function prepare(array &$element, WebformSubmissionInterface $webform_sub // Make sure submitted value is not lost if the element's #options were // altered after the submission was completed. - // This only applies to the main webforom element with a #webform_key + // This only applies to the main webform element with a #webform_key // and not a webform composite's sub elements. $is_completed = $webform_submission && $webform_submission->isCompleted(); $has_default_value = (isset($element['#default_value']) && $element['#default_value'] !== '' && $element['#default_value'] !== NULL); diff --git a/web/modules/webform/src/Plugin/WebformElement/TextBase.php b/web/modules/webform/src/Plugin/WebformElement/TextBase.php index dd84d7207c28a58ddb42bfe2b844ce983e34e4eb..c5f663b6c35fdc23d33935517bec14f1b1406684 100644 --- a/web/modules/webform/src/Plugin/WebformElement/TextBase.php +++ b/web/modules/webform/src/Plugin/WebformElement/TextBase.php @@ -238,13 +238,17 @@ public static function validateCounter(array &$element, FormStateInterface $form } // Validate character/word count. - if ($max && $length > $max) { + if ($max && $min && $max === $min && $length !== $max) { + $t_args['%max'] = $max; + $form_state->setError($element, t('@name must be %max @type but is currently %length @type long.', $t_args)); + } + elseif ($max && $length > $max) { $t_args['%max'] = $max; $form_state->setError($element, t('@name cannot be longer than %max @type but is currently %length @type long.', $t_args)); } elseif ($min && $length < $min) { $t_args['%min'] = $min; - $form_state->setError($element, t('@name must be longer than %min @type but is currently %length @type long.', $t_args)); + $form_state->setError($element, t('@name must be at least %min @type but is currently %length @type long.', $t_args)); } } @@ -285,6 +289,9 @@ public static function isDefaultInputMask(array $element, $value) { "'alias': 'currency'" => '$ 0.00', "'alias': 'currency_negative'" => '-$ 0.00', "'alias': 'currency_positive_negative'" => '$ 0.00', + "'alias': 'decimal'" => '0.0', + "'alias': 'decimal_negative'" => '-0.0', + "'alias': 'decimal_positive_negative'" => '0.0', ]; return (isset($input_masks[$input_mask]) && $input_masks[$input_mask] === $value) ? TRUE : FALSE; } @@ -381,6 +388,16 @@ protected function getInputMasks() { 'example' => '1.234', 'pattern' => '^\d+(\.\d+)?$', ], + "'alias': 'decimal_negative'" => [ + 'title' => $this->t('Decimal (-)'), + 'example' => '-1.234', + 'pattern' => '^(-\d+(\.\d+)?)$', + ], + "'alias': 'decimal_positive_negative'" => [ + 'title' => $this->t('Decimal (+/-)'), + 'example' => '1.234', + 'pattern' => '^-?\d+(.\d+)?$', + ], "'alias': 'email'" => [ 'title' => $this->t('Email'), 'example' => 'example@example.com', diff --git a/web/modules/webform/src/Plugin/WebformElement/TextFormat.php b/web/modules/webform/src/Plugin/WebformElement/TextFormat.php index 61ed93e2155b96245eab8904f86eadfdd9322236..e88778d21c7a546e6c414a89f7459ea914fe4231 100644 --- a/web/modules/webform/src/Plugin/WebformElement/TextFormat.php +++ b/web/modules/webform/src/Plugin/WebformElement/TextFormat.php @@ -67,6 +67,23 @@ public function isInput(array $element) { public function prepare(array &$element, WebformSubmissionInterface $webform_submission = NULL) { parent::prepare($element, $webform_submission); $this->setElementDefaultCallback($element, 'process'); + + // Make sure allowed formats are supported for the current user. + // @see \Drupal\filter\Element\TextFormat::processFormat + if (isset($element['#allowed_formats'])) { + $formats = array_intersect_key( + filter_formats($this->currentUser), + array_flip($element['#allowed_formats']) + ); + if (empty($formats)) { + // Unsetting the allowed formats allows the user's default format + // to be used. + unset($element['#allowed_formats']); + // Set the #format to empty string to disable the text format. + $element['#format'] = ''; + } + } + $element['#process'][] = [get_class($this), 'process']; $element['#after_build'] = [[get_class($this), 'afterBuild']]; $element['#attached']['library'][] = 'webform/webform.element.text_format'; diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformActions.php b/web/modules/webform/src/Plugin/WebformElement/WebformActions.php index ae860f31a9fed089026957d01b51a56df05e6dec..1b0a1a0f12916e3b9235b364c79382c860af0c6a 100644 --- a/web/modules/webform/src/Plugin/WebformElement/WebformActions.php +++ b/web/modules/webform/src/Plugin/WebformElement/WebformActions.php @@ -138,6 +138,7 @@ public function form(array $form, FormStateInterface $form_state) { 'update' => [ 'title' => $this->t('Update'), 'label' => $this->t('update'), + 'default_label' => $this->t('Save'), 'description' => $this->t('This is used after a submission has been saved and finalized to the database.'), 'access' => !$webform->isResultsDisabled(), ], @@ -212,7 +213,7 @@ public function form(array $form, FormStateInterface $form_state) { $form[$name . '_settings'][$name . '__label'] = [ '#type' => 'textfield', '#title' => $this->t('@title button label', $t_args), - '#description' => $this->t('Defaults to: %value', ['%value' => $this->configFactory->get('webform.settings')->get('settings.default_' . $name . '_button_label')]), + '#description' => $this->t('Defaults to: %value', ['%value' => $button['default_label'] ?? $this->configFactory->get('webform.settings')->get('settings.default_' . $name . '_button_label')]), '#size' => 20, '#attributes' => [ // Make sure default value is never cleared by #states API. diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php b/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php index 371debeeacbb5e40ea55c87d92606724be6bcd5a..0ead5790a34e30f254cd25f6a63383f0b15bfb71 100644 --- a/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php +++ b/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php @@ -298,7 +298,7 @@ public function prepare(array &$element, WebformSubmissionInterface $webform_sub // @see \Drupal\webform\Plugin\WebformElementBase::preRenderFixFlexboxWrapper $request_params = \Drupal::request()->request->all(); if (\Drupal::request()->request->get('_drupal_ajax') - && !empty($request_params['files'])) { + && (!empty($request_params['files']) || !empty($request_params[$element['#webform_key']]))) { $element['#webform_wrapper'] = FALSE; } @@ -1379,6 +1379,9 @@ public static function accessFileDownload($uri) { $filename = $file_system->basename($uri); // Fallback name in case file name contains none ASCII characters. $filename_fallback = \Drupal::transliteration()->transliterate($filename); + // Remove other characters not removed by Transliteration. + $illegal_characters = '/[%#&{}\<>*?\/ $!\'":@+`|=]/'; + $filename_fallback = preg_replace($illegal_characters, '', $filename_fallback); // Force blacklisted files to be downloaded instead of opening in the browser. if (in_array($headers['Content-Type'], static::$blacklistedMimeTypes)) { $headers['Content-Disposition'] = HeaderUtils::makeDisposition(HeaderUtils::DISPOSITION_ATTACHMENT, (string) $filename, $filename_fallback); diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformTable.php b/web/modules/webform/src/Plugin/WebformElement/WebformTable.php index 9d754c740c0875d405d70c8acfc3427732b7e9a0..48592021956363e2483e6e446066d27842c5d600 100644 --- a/web/modules/webform/src/Plugin/WebformElement/WebformTable.php +++ b/web/modules/webform/src/Plugin/WebformElement/WebformTable.php @@ -77,7 +77,7 @@ public function prepare(array &$element, WebformSubmissionInterface $webform_sub } /** - * Prepare webform talble header for rendering. + * Prepare webform table header for rendering. * * @param array &$element * A webform table element. diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformVariant.php b/web/modules/webform/src/Plugin/WebformElement/WebformVariant.php index 498580ff65b479c7dfaa7523b0384701083bda55..b65ee77dc27880fd73800893612eda72912c27fe 100644 --- a/web/modules/webform/src/Plugin/WebformElement/WebformVariant.php +++ b/web/modules/webform/src/Plugin/WebformElement/WebformVariant.php @@ -204,7 +204,7 @@ public function form(array $form, FormStateInterface $form_state) { ]; $form['variant']['prepopulate'] = $form['form']['prepopulate']; $form['variant']['prepopulate']['#title'] = $this->t('Prepopulate this variant'); - $form['variant']['prepopulate']['#description'] .= ' ' . $this->t('If checked, variants will be availalbe using query string parameters.'); + $form['variant']['prepopulate']['#description'] .= ' ' . $this->t('If checked, variants will be available using query string parameters.'); unset( $form['form']['prepopulate'], $form['variant']['prepopulate']['#weight'] diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformWizardPage.php b/web/modules/webform/src/Plugin/WebformElement/WebformWizardPage.php index bdebd2afbedd2f589c4c9e1f7351f6e20f2b948a..81800554321765ec97c61120774fa429dd3c8afe 100644 --- a/web/modules/webform/src/Plugin/WebformElement/WebformWizardPage.php +++ b/web/modules/webform/src/Plugin/WebformElement/WebformWizardPage.php @@ -116,13 +116,13 @@ public function form(array $form, FormStateInterface $form_state) { $form['wizard_page']['prev_button_label'] = [ '#type' => 'textfield', '#title' => $this->t('Previous page button label'), - '#description' => $this->t('This is used for the Next Page button on the page before this page break.') . '<br /><br />' . + '#description' => $this->t('This is used for the Previous Page button on the page before this page break.') . '<br /><br />' . $this->t('Defaults to: %value', ['%value' => $webform->getSetting('wizard_prev_button_label', TRUE)]), ]; $form['wizard_page']['next_button_label'] = [ '#type' => 'textfield', '#title' => $this->t('Next page button label'), - '#description' => $this->t('This is used for the Previous Page button on the page after this page break.') . '<br /><br />' . + '#description' => $this->t('This is used for the Next Page button on the page after this page break.') . '<br /><br />' . $this->t('Defaults to: %value', ['%value' => $webform->getSetting('wizard_next_button_label', TRUE)]), ]; diff --git a/web/modules/webform/src/Plugin/WebformElementAttachmentInterface.php b/web/modules/webform/src/Plugin/WebformElementAttachmentInterface.php index c0be8e8da15033e4f7543bbe8eabd88d7e0c19ee..e84f700d39d1d4575dac152a416f7ee9c4413163 100644 --- a/web/modules/webform/src/Plugin/WebformElementAttachmentInterface.php +++ b/web/modules/webform/src/Plugin/WebformElementAttachmentInterface.php @@ -55,7 +55,7 @@ public function getExportAttachments(array $element, WebformSubmissionInterface /** * Determine if the element type has export attachments. * - * @return boolearn + * @return bool * TRUE if the element type has export attachments. */ public function hasExportAttachments(); diff --git a/web/modules/webform/src/Plugin/WebformExporter/DelimitedWebformExporter.php b/web/modules/webform/src/Plugin/WebformExporter/DelimitedWebformExporter.php index 731939c5553f0cbad14ff9df7201909a74132f6e..b24a1acc567a6bcaad8490d22f294b96b5335304 100644 --- a/web/modules/webform/src/Plugin/WebformExporter/DelimitedWebformExporter.php +++ b/web/modules/webform/src/Plugin/WebformExporter/DelimitedWebformExporter.php @@ -45,10 +45,18 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta ':injection_href' => 'https://www.google.com/search?q=spreadsheet+formula+injection', ':excel_href' => 'https://www.drupal.org/project/webform_xlsx_export', ]; + + // Alter the warning if the safer format is already available. + if (\Drupal::moduleHandler()->moduleExists('webform_xlsx_export')) { + $warning = $this->t('<strong>Warning:</strong> Opening %type files with spreadsheet applications may expose you to <a href=":injection_href">formula injection</a> or other security vulnerabilities. When the submissions contain data from untrusted users and the downloaded file will be used with Microsoft Excel, use the <strong>XLSX</strong> export format.', $t_args); + } + else { + $warning = $this->t('<strong>Warning:</strong> Opening %type files with spreadsheet applications may expose you to <a href=":injection_href">formula injection</a> or other security vulnerabilities. When the submissions contain data from untrusted users and the downloaded file will be used with Microsoft Excel, use the <a href=":excel_href">Webform XLSX export</a> module.', $t_args); + } $form['warning'] = [ '#type' => 'webform_message', '#message_type' => 'warning', - '#message_message' => $this->t('<strong>Warning:</strong> Opening %type files with spreadsheet applications may expose you to <a href=":injection_href">formula injection</a> or other security vulnerabilities. When the submissions contain data from untrusted users and the downloaded file will be used with Microsoft Excel, use the <a href=":excel_href">Webform XLSX export</a> module.', $t_args), + '#message_message' => $warning, ]; $form['delimiter'] = [ '#type' => 'select', diff --git a/web/modules/webform/src/Plugin/WebformExporter/TableWebformExporter.php b/web/modules/webform/src/Plugin/WebformExporter/TableWebformExporter.php index 874e41aa75c36afcb36677262ea53c9746c03376..cea3d09b3ceaf59c080fb7644a7ba631f29eeb86 100644 --- a/web/modules/webform/src/Plugin/WebformExporter/TableWebformExporter.php +++ b/web/modules/webform/src/Plugin/WebformExporter/TableWebformExporter.php @@ -35,10 +35,18 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta ':injection_href' => 'https://www.google.com/search?q=spreadsheet+formula+injection', ':excel_href' => 'https://www.drupal.org/project/webform_xlsx_export', ]; + + // Alter the warning if the safer format is already available. + if (\Drupal::moduleHandler()->moduleExists('webform_xlsx_export')) { + $warning = $this->t('<strong>Warning:</strong> Opening %type files with spreadsheet applications may expose you to <a href=":injection_href">formula injection</a> or other security vulnerabilities. When the submissions contain data from untrusted users and the downloaded file will be used with Microsoft Excel, use the <strong>XLSX</strong> export format.', $t_args); + } + else { + $warning = $this->t('<strong>Warning:</strong> Opening %type files with spreadsheet applications may expose you to <a href=":injection_href">formula injection</a> or other security vulnerabilities. When the submissions contain data from untrusted users and the downloaded file will be used with Microsoft Excel, use the <a href=":excel_href">Webform XLSX export</a> module.', $t_args); + } $form['warning'] = [ '#type' => 'webform_message', '#message_type' => 'warning', - '#message_message' => $this->t('<strong>Warning:</strong> Opening %type files with spreadsheet applications may expose you to <a href=":injection_href">formula injection</a> or other security vulnerabilities. When the submissions contain data from untrusted users and the downloaded file will be used with Microsoft Excel, use the <a href=":excel_href">Webform XLSX export</a> module.', $t_args), + '#message_message' => $warning, ]; $form['excel'] = [ '#type' => 'checkbox', diff --git a/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php b/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php index 35f07ada38201381e8bfb23763b6d02e0fc0269e..98494de42feadd4eefbc5b411dbf25f1a3e471f7 100644 --- a/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php +++ b/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php @@ -19,6 +19,7 @@ use Drupal\webform\Utility\WebformElementHelper; use Drupal\webform\Utility\WebformMailHelper; use Drupal\webform\Utility\WebformOptionsHelper; +use Drupal\webform\Utility\WebformUserHelper; use Drupal\webform\WebformSubmissionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -382,7 +383,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta // Get roles. $roles_element_options = []; if ($roles = $this->configFactory->get('webform.settings')->get('mail.roles')) { - $role_names = array_map('\Drupal\Component\Utility\Html::escape', user_role_names(TRUE)); + $role_names = array_map('\Drupal\Component\Utility\Html::escape', WebformUserHelper::getRoleNames(TRUE)); if (!in_array('authenticated', $roles)) { $role_names = array_intersect_key($role_names, array_combine($roles, $roles)); } diff --git a/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php b/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php index 52bbb5c0e4531365f9687496c118c367f9efc29d..8c922aa65ba79cbb1f10ad3223ef3bd7dcafaa8b 100644 --- a/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php +++ b/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php @@ -378,6 +378,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta '401' => $this->t('401 Unauthorized'), '403' => $this->t('403 Forbidden'), '404' => $this->t('404 Not Found'), + '444' => $this->t('444 No Response'), '500' => $this->t('500 Internal Server Error'), '502' => $this->t('502 Bad Gateway'), '503' => $this->t('503 Service Unavailable'), @@ -542,7 +543,8 @@ protected function remotePost($state, WebformSubmissionInterface $webform_submis // Display submission exception if response code is not 2xx. if ($this->responseHasError($response)) { - $message = $this->t('Remote post request return @status_code status code.', ['@status_code' => $response->getStatusCode()]); + $t_args = ['@status_code' => $this->getStatusCode($response)]; + $message = $this->t('Remote post request return @status_code status code.', $t_args); $this->handleError($state, $message, $request_url, $request_method, $request_type, $request_options, $response); return; } @@ -1119,8 +1121,8 @@ protected function handleError($state, $message, $request_url, $request_method, * A custom response message. */ protected function getCustomResponseMessage($response, $default = TRUE) { - if (!empty($this->configuration['messages']) && $response instanceof ResponseInterface) { - $status_code = $response->getStatusCode(); + if (!empty($this->configuration['messages'])) { + $status_code = $this->getStatusCode($response); foreach ($this->configuration['messages'] as $message_item) { if ((int) $message_item['code'] === (int) $status_code) { return $this->replaceTokens($message_item['message'], $this->getWebformSubmission()); @@ -1149,11 +1151,16 @@ protected function displayCustomResponseMessage($response, $default = TRUE) { return FALSE; } - $token_data = [ - 'webform_handler' => [ - $this->getHandlerId() => $this->getResponseData($response), - ], - ]; + $token_data = []; + + if ($response instanceof ResponseInterface) { + $token_data = [ + 'webform_handler' => [ + $this->getHandlerId() => $this->getResponseData($response), + ], + ]; + } + $build_message = [ '#markup' => $this->replaceTokens($custom_response_message, $this->getWebform(), $token_data), ]; @@ -1173,10 +1180,25 @@ protected function displayCustomResponseMessage($response, $default = TRUE) { * TRUE if response status code reflects an unsuccessful value. */ protected function responseHasError($response) { - $status_code = $response->getStatusCode(); + $status_code = $this->getStatusCode($response); return $status_code < 200 || $status_code >= 300; } + /** + * Gets the response status code. + * + * @param \Psr\Http\Message\ResponseInterface|null $response + * The response returned by the remote server. + * + * @return int + * The response status code. Defaults to 444 if there is no response. + */ + protected function getStatusCode($response) { + return ($response instanceof ResponseInterface) + ? $response->getStatusCode() + : 444; + } + /** * {@inheritdoc} */ diff --git a/web/modules/webform/src/Plugin/WebformHandlerInterface.php b/web/modules/webform/src/Plugin/WebformHandlerInterface.php index 2fea25719ef1408abea19bc12b01c32a8ec2e938..3d26148a2951e5524c8cd295ee3a2ccbda73d5e9 100644 --- a/web/modules/webform/src/Plugin/WebformHandlerInterface.php +++ b/web/modules/webform/src/Plugin/WebformHandlerInterface.php @@ -471,6 +471,9 @@ public function preSave(WebformSubmissionInterface $webform_submission); /** * Acts on a saved webform submission before the insert or update hook is invoked. * + * Implementing a postSave at your side be careful because if your code breaks + * the PHP execution it may prevent the sql transaction from committing. + * * @param \Drupal\webform\WebformSubmissionInterface $webform_submission * A webform submission. * @param bool $update @@ -529,7 +532,7 @@ public function postDelete(WebformSubmissionInterface $webform_submission); * The account trying to access the entity. * * @return \Drupal\Core\Core\AccessResultInterface - * The result of the access check. No option returns a nuetral result. + * The result of the access check. No option returns a neutral result. */ public function access(WebformSubmissionInterface $webform_submission, $operation, AccountInterface $account = NULL); diff --git a/web/modules/webform/src/Utility/WebformElementHelper.php b/web/modules/webform/src/Utility/WebformElementHelper.php index 5eebf17852e111dc8ca07459dd7e65175be432e6..3df281f786b6ffe002a0449b6f15acd48df7c369 100644 --- a/web/modules/webform/src/Utility/WebformElementHelper.php +++ b/web/modules/webform/src/Utility/WebformElementHelper.php @@ -542,14 +542,15 @@ protected static function isIgnoredProperty($property) { * An array of options to be merged. */ public static function mergeOptions(array &$options, array $source_options) { - foreach ($options as $key => &$option) { + foreach ($options as $key => $option) { if (isset($source_options[$key]) && is_scalar($option) && gettype($option) === gettype($source_options[$key])) { - $option = $source_options[$key]; + $options[$key] = $source_options[$key]; } elseif (is_array($option)) { unset($options[$key]); } } + unset($option); foreach ($source_options as $key => $option) { if (is_array($option)) { $options[$key] = $option; @@ -750,7 +751,7 @@ public static function convertToString($element) { */ public static function setElementValidate(array $element, array $element_validate = [WebformElementHelper::class, 'suppressElementValidate']) { // Element validation can only overridden once so we need to reset - // the #eleemnt_validate callback. + // the #element_validate callback. if (isset($element['#_element_validate'])) { $element['#element_validate'] = $element['#_element_validate']; unset($element['#_element_validate']); @@ -889,7 +890,7 @@ public static function getRequiredFromVisibleStates(array $element) { } /** - * Randomoize an associative array of element values and disable page caching. + * Randomize an associative array of element values and disable page caching. * * @param array $values * An associative array of element values. diff --git a/web/modules/webform/src/Utility/WebformLogicHelper.php b/web/modules/webform/src/Utility/WebformLogicHelper.php index fbb25b9fbeec2ae29ab965e5e1551cb299f2e2f8..b777986a17eac8f97e7f33eb7d8671e074a97e9d 100644 --- a/web/modules/webform/src/Utility/WebformLogicHelper.php +++ b/web/modules/webform/src/Utility/WebformLogicHelper.php @@ -20,7 +20,7 @@ class WebformLogicHelper { * @param string $value * A string value typically a token. * @param bool $increment - * TRUE to increment tracking and FALSE to deincrement tracking. + * TRUE to increment tracking and FALSE to decrement tracking. * * @return bool * FALSE when recursion is detected. diff --git a/web/modules/webform/src/Utility/WebformUserHelper.php b/web/modules/webform/src/Utility/WebformUserHelper.php new file mode 100644 index 0000000000000000000000000000000000000000..05680df8f8063b453cc84d034186b81889934395 --- /dev/null +++ b/web/modules/webform/src/Utility/WebformUserHelper.php @@ -0,0 +1,32 @@ +<?php + +namespace Drupal\webform\Utility; + +use Drupal\user\Entity\Role; +use Drupal\user\RoleInterface; + +/** + * Helper class for webform user/role based methods. + */ +class WebformUserHelper { + + /** + * Retrieves the names of roles matching specified conditions. + * + * @param bool $members_only + * (optional) Set this to TRUE to exclude the 'anonymous' role. Defaults to + * FALSE. + * + * @return array + * An associative array with the role id as the key and the role name as + * value. + */ + public static function getRoleNames(bool $members_only = FALSE): array { + $roles = Role::loadMultiple(); + if ($members_only) { + unset($roles[RoleInterface::ANONYMOUS_ID]); + } + return array_map(fn ($role) => $role->label(), $roles); + } + +} diff --git a/web/modules/webform/src/WebformAddonsManager.php b/web/modules/webform/src/WebformAddonsManager.php index af32ee274bb1b9b76f682c9c55820cb952d672d3..e693910cd51638b3df1a9be8454bed164b77ae44 100644 --- a/web/modules/webform/src/WebformAddonsManager.php +++ b/web/modules/webform/src/WebformAddonsManager.php @@ -168,7 +168,7 @@ protected function initProjects() { // Element: Tax Number. $projects['tax_number'] = [ 'title' => $this->t('Tax Number'), - 'description' => $this->t('Defines a new plugin type to manage tax number valitation. Additionally provides a webform element that uses the same plugin'), + 'description' => $this->t('Defines a new plugin type to manage tax number validation. Additionally provides a webform element that uses the same plugin'), 'url' => Url::fromUri('https://www.drupal.org/project/tax_number'), 'category' => 'element', ]; @@ -852,7 +852,7 @@ protected function initProjects() { // Integrations: Ecomail webform. $projects['ecomail_webform'] = [ 'title' => $this->t('Ecomail webform'), - 'description' => $this->t('Provides a Webform handler to add contact to the list of direct e-mailing service Ecomail.cz.'), + 'description' => $this->t('Provides a Webform handler to add contact to the list of direct emailing service Ecomail.cz.'), 'url' => Url::fromUri('https://www.drupal.org/project/ecomail_webform'), 'category' => 'integration', ]; @@ -1713,10 +1713,10 @@ protected function initProjects() { ]; // Spam: Protected Submissions. - $projects['protected_submissions'] = [ - 'title' => $this->t('Protected Submissions'), - 'description' => $this->t('A light-weight, non-intrusive spam protection module that enables rejection of webform submissions which contain preset patterns.'), - 'url' => Url::fromUri('https://www.drupal.org/project/protected_submissions'), + $projects['protected_forms'] = [ + 'title' => $this->t('Protected Forms'), + 'description' => $this->t('Protected Forms is a light-weight, non-intrusive spam protection module that enables rejection of node, comment, webform, user profile, contact form, private message and revision log submissions which contain undesired language characters or preset patterns.'), + 'url' => Url::fromUri('https://www.drupal.org/project/protected_forms'), 'category' => 'spam', ]; @@ -1829,7 +1829,7 @@ protected function initProjects() { // Submissions: Webform double opt-in. $projects['webform_double_opt_in'] = [ 'title' => $this->t('Webform double opt-in'), - 'description' => $this->t('Provides e-mail double opt-in functionality.'), + 'description' => $this->t('Provides email double opt-in functionality.'), 'url' => Url::fromUri('https://www.drupal.org/project/webform_double_opt_in'), 'category' => 'submission', ]; @@ -2070,7 +2070,7 @@ protected function initProjects() { ]; // Utility: Webform Config Key Value. - $projects[' webform_config_key_value'] = [ + $projects['webform_config_key_value'] = [ 'title' => $this->t('Webform Config Key Value'), 'description' => $this->t('Use the KeyValueStorage to save webform config instead of yaml config storage, allowing webforms to be treated more like content than configuration and are excluded from the configuration imports/exports.'), 'url' => Url::fromUri('https://www.drupal.org/sandbox/thtas/2994250'), diff --git a/web/modules/webform/src/WebformEntityReferenceManager.php b/web/modules/webform/src/WebformEntityReferenceManager.php index f32025e4a42737ad899d990d886fd8e759ac7cb3..5340f9daa9cceac36033fe5aadc46c808e2e8865 100644 --- a/web/modules/webform/src/WebformEntityReferenceManager.php +++ b/web/modules/webform/src/WebformEntityReferenceManager.php @@ -275,9 +275,9 @@ public function getWebforms(EntityInterface $entity = NULL) { * @param \Drupal\Core\Entity\EntityInterface $entity * An entity. * @param array $target_entities - * An associate array of targeted webfrom entities. + * An associate array of targeted webform entities. * @param array $sorted_entities - * An associate array of sorted webfrom entities by weight. + * An associate array of sorted webform entities by weight. */ protected function getParagraphWebformsRecursive(EntityInterface $entity, array &$target_entities, array &$sorted_entities) { // Add paragraphs check. diff --git a/web/modules/webform/src/WebformHelpManager.php b/web/modules/webform/src/WebformHelpManager.php index 26171a64cae4cfaf55844543666c3fa5802bb1b0..2bdf6481bf7e8c16d63de2496a1c5b11b124d58c 100644 --- a/web/modules/webform/src/WebformHelpManager.php +++ b/web/modules/webform/src/WebformHelpManager.php @@ -1582,13 +1582,13 @@ protected function initHelp() { // Promotions: Webform. $t_args = [ ':href_involved' => 'https://www.drupal.org/getting-involved', + ':href_join' => 'https://www.drupal.org/association', ':href_opencollective' => 'https://opencollective.com/webform', - ':href_support' => 'https://www.jrockowitz.com', ]; $help['promotion_webform'] = [ 'group' => 'promotions', 'title' => $this->t('Promotions: Drupal Association'), - 'content' => $this->t('If you enjoy and value Drupal and the Webform module consider <a href=":href_involved">getting involved in the Drupal community</a>, <a href=":href_opencollective">contributing funds to the Webform module\'s Open Collective</a>, and <a href=":href_support">hiring professional support</a>.', $t_args), + 'content' => $this->t('If you enjoy and value Drupal and the Webform module consider <a href=":href_involved">getting involved in the Drupal community</a>, <a href=":href_join">joining the Drupal Association</a>, and <a href=":href_opencollective">contributing funds to the Webform module\'s Open Collective</a>.', $t_args), 'message_type' => 'webform', 'message_close' => TRUE, 'message_storage' => WebformMessage::STORAGE_STATE, diff --git a/web/modules/webform/src/WebformHelpManagerInterface.php b/web/modules/webform/src/WebformHelpManagerInterface.php index 729a2327c4a3a828ca234c9617483902ef7d3c03..e7d49b703a66d18699428fa3f53dcda5f4876770 100644 --- a/web/modules/webform/src/WebformHelpManagerInterface.php +++ b/web/modules/webform/src/WebformHelpManagerInterface.php @@ -134,7 +134,7 @@ public function buildVideos($docs = FALSE); * @param string $video_id * Video id. * @param string|null $video_display - * Video displa type. + * Video display type. * @param string|null $title * Link title. * @param array $options diff --git a/web/modules/webform/src/WebformInterface.php b/web/modules/webform/src/WebformInterface.php index 593dce0972148dbacb06f0aaa0e26e5d233bd7f8..b0e3a0b65bd6b5f1b2ab829e2760e6d171266f3f 100644 --- a/web/modules/webform/src/WebformInterface.php +++ b/web/modules/webform/src/WebformInterface.php @@ -812,7 +812,7 @@ public function getElementsVariant(); * Get webform element's selectors as options. * * @param array $options - * (Optional) Options to be appled to element selectors. + * (Optional) Options to be applied to element selectors. * * @return array * Webform elements selectors as options. diff --git a/web/modules/webform/src/WebformLibrariesManager.php b/web/modules/webform/src/WebformLibrariesManager.php index 77dba8cb15699c9d96699bd449bc7e19c8f8a764..c1c6fea3c38adf8a2bea7ae3fa6a367f2911acb7 100644 --- a/web/modules/webform/src/WebformLibrariesManager.php +++ b/web/modules/webform/src/WebformLibrariesManager.php @@ -88,7 +88,7 @@ public function requirements($cli = FALSE) { $libraries = $this->getLibraries(); // Defined REQUIREMENT constants which may not be loaded. - // @see ~/Sites/drupal_webfor/mweb/core/includes/install.inc + // @see ~/Sites/drupal_webform/mweb/core/includes/install.inc if (!defined('REQUIREMENT_OK')) { define('REQUIREMENT_INFO', -1); define('REQUIREMENT_OK', 0); @@ -107,7 +107,7 @@ public function requirements($cli = FALSE) { // Build library info array. $info = [ - '#prefix' => '<p><hr/></p><dl>', + '#prefix' => '<hr class="webform-hr"/><dl>', '#suffix' => '</dl>', ]; diff --git a/web/modules/webform/src/WebformMessageManager.php b/web/modules/webform/src/WebformMessageManager.php index 046acba08d6f3e2aed84d412623dfba09dd4be9a..9ab981a2dd7c22826f60b5a6e8491b6ca9685445 100644 --- a/web/modules/webform/src/WebformMessageManager.php +++ b/web/modules/webform/src/WebformMessageManager.php @@ -356,7 +356,8 @@ protected function getSetting($key) { $webform_settings = ($this->webform) ? $this->webform->getSettings() : []; if (!empty($webform_settings[$key])) { $value = $webform_settings[$key]; - if ($value === '[none]' || $value === (string) $this->t('[none]')) { + $none_value = trim(strip_tags($value)); + if ($none_value === '[none]' || $none_value === (string) $this->t('[none]')) { return FALSE; } else { diff --git a/web/modules/webform/src/WebformSubmissionConditionsValidator.php b/web/modules/webform/src/WebformSubmissionConditionsValidator.php index c03460cf6333d3e9ed17ba81d9846dda0c3d52b0..0ef12abc2f8dd2ea10981bf00e2ce1f7327ce904 100644 --- a/web/modules/webform/src/WebformSubmissionConditionsValidator.php +++ b/web/modules/webform/src/WebformSubmissionConditionsValidator.php @@ -267,7 +267,7 @@ public function replaceCrossPageTargets(array $conditions, WebformSubmissionInte // Using a random value to make sure users can't determine a hidden // or computed element's value/result. if (!isset($cross_page_values[$target_name])) { - $cross_page_values[$target_name] = rand(); + $cross_page_values[$target_name] = random_int(0, mt_getrandmax()); } $target_value = $cross_page_values[$target_name]; @@ -494,7 +494,7 @@ public static function elementAfterBuild(array $element, FormStateInterface $for */ public static function elementValidate(array &$element, FormStateInterface $form_state) { // Element validation is trigger sequentially. - // Triggers must be validated before dependants. + // Triggers must be validated before dependents. // // Build webform submission with validated and processed data. // Webform submission must be rebuilt every time since the diff --git a/web/modules/webform/src/WebformSubmissionExporter.php b/web/modules/webform/src/WebformSubmissionExporter.php index f7594bae43b39bf15050e79ec298e721ff5b0d9e..b617330b8dfe947043b0878a578b3e5411bac182 100644 --- a/web/modules/webform/src/WebformSubmissionExporter.php +++ b/web/modules/webform/src/WebformSubmissionExporter.php @@ -1108,7 +1108,7 @@ protected function getWebformExportAttachmentElements() { } /** - * Determin if the webform c elements with files that can be exported. + * Determine if the webform c elements with files that can be exported. * * @return array * An associative array of attachment elements with files diff --git a/web/modules/webform/src/WebformSubmissionForm.php b/web/modules/webform/src/WebformSubmissionForm.php index 074e8274e6bcc70e89dd87a0fc56c06ce5b55494..b21d27c7264ab754fbf1b40fa74dca51b7310f08 100644 --- a/web/modules/webform/src/WebformSubmissionForm.php +++ b/web/modules/webform/src/WebformSubmissionForm.php @@ -280,7 +280,7 @@ protected function init(FormStateInterface $form_state) { * @see \Drupal\Core\Entity\EntityFormBuilder::getForm */ public function setEntity(EntityInterface $entity) { - // Create new metadata to be applie when the form is built. + // Create new metadata to be applied when the form is built. // @see \Drupal\webform\WebformSubmissionForm::buildForm $this->bubbleableMetadata = new WebformBubbleableMetadata(); @@ -767,31 +767,6 @@ public function form(array $form, FormStateInterface $form_state) { // @see \Drupal\webform\WebformSubmissionForm::addStatesPrefix $this->statesPrefix = '.' . end($class); - // Check for a custom webform, track it, and return it. - if ($custom_form = $this->getCustomForm($form, $form_state)) { - $custom_form['#custom_form'] = TRUE; - return $custom_form; - } - - $form = parent::form($form, $form_state); - - /* Information */ - - // Prepend webform submission data using the default view without the data. - if (!$webform_submission->isNew() && !$webform_submission->isDraft()) { - $form['navigation'] = [ - '#type' => 'webform_submission_navigation', - '#webform_submission' => $webform_submission, - '#weight' => -20, - ]; - $form['information'] = [ - '#type' => 'webform_submission_information', - '#webform_submission' => $webform_submission, - '#source_entity' => $this->sourceEntity, - '#weight' => -19, - ]; - } - /* Confirmation */ // Add confirmation modal. @@ -818,6 +793,31 @@ public function form(array $form, FormStateInterface $form_state) { ]; } + // Check for a custom webform, track it, and return it. + if ($custom_form = $this->getCustomForm($form, $form_state)) { + $custom_form['#custom_form'] = TRUE; + return $custom_form; + } + + $form = parent::form($form, $form_state); + + /* Information */ + + // Prepend webform submission data using the default view without the data. + if (!$webform_submission->isNew() && !$webform_submission->isDraft()) { + $form['navigation'] = [ + '#type' => 'webform_submission_navigation', + '#webform_submission' => $webform_submission, + '#weight' => -20, + ]; + $form['information'] = [ + '#type' => 'webform_submission_information', + '#webform_submission' => $webform_submission, + '#source_entity' => $this->sourceEntity, + '#weight' => -19, + ]; + } + /* Data */ // Get and prepopulate (via query string) submission data. diff --git a/web/modules/webform/src/WebformSubmissionListBuilder.php b/web/modules/webform/src/WebformSubmissionListBuilder.php index a7146443da835356488f29d715d477c4b237f7ea..a865dc8487ca9d0d13af0875716a500f992575d0 100644 --- a/web/modules/webform/src/WebformSubmissionListBuilder.php +++ b/web/modules/webform/src/WebformSubmissionListBuilder.php @@ -628,7 +628,7 @@ protected function buildSubmissionViewsMenu() { '#type' => 'operations', '#links' => $links, '#prefix' => '<div class="webform-dropbutton webform-submission-views-dropbutton">', - '#suffix' => '</div>' . ($this->submissionView ? '<p><hr/></p>' : ''), + '#suffix' => '</div>' . ($this->submissionView ? '<hr class="webform-hr"/>' : ''), ]; return $build; } diff --git a/web/modules/webform/src/WebformSubmissionStorage.php b/web/modules/webform/src/WebformSubmissionStorage.php index 07c7c04c56aaecccf104d5b1dedcb3f29a0dfb65..4e14c3c093919d4f581d6d1d7780bd069d930ff8 100644 --- a/web/modules/webform/src/WebformSubmissionStorage.php +++ b/web/modules/webform/src/WebformSubmissionStorage.php @@ -239,12 +239,14 @@ protected function buildPropertyQuery(QueryInterface $entity_query, array $value if (isset($values['uid'])) { $uids = (array) $values['uid']; $accounts = User::loadMultiple($uids); - $or_condition_group = $entity_query->orConditionGroup(); - foreach ($accounts as $account) { - $this->addQueryConditions($or_condition_group, NULL, NULL, $account); + if ($accounts) { + $or_condition_group = $entity_query->orConditionGroup(); + foreach ($accounts as $account) { + $this->addQueryConditions($or_condition_group, NULL, NULL, $account); + } + $entity_query->condition($or_condition_group); + unset($values['uid']); } - $entity_query->condition($or_condition_group); - unset($values['uid']); } parent::buildPropertyQuery($entity_query, $values); diff --git a/web/modules/webform/src/WebformThirdPartySettingsManager.php b/web/modules/webform/src/WebformThirdPartySettingsManager.php index d19315acc60df398d29d9eaaaf166c9c39e2929f..637856558775fa3c98f870ad2244c20776b1b612 100644 --- a/web/modules/webform/src/WebformThirdPartySettingsManager.php +++ b/web/modules/webform/src/WebformThirdPartySettingsManager.php @@ -116,7 +116,7 @@ public function getThirdPartySetting($module, $key, $default = NULL) { * {@inheritdoc} */ public function getThirdPartySettings($module) { - $this->config->get("third_party_settings.$module") ?: []; + return $this->config->get("third_party_settings.$module") ?: []; } /** diff --git a/web/modules/webform/src/WebformTranslationConfigManager.php b/web/modules/webform/src/WebformTranslationConfigManager.php index ba6d0a18c63d7ae61bc7be8e62f8edeb2ef06ebf..5b9e9586a8c60bdd35ba03563e64f3d76f7312f3 100644 --- a/web/modules/webform/src/WebformTranslationConfigManager.php +++ b/web/modules/webform/src/WebformTranslationConfigManager.php @@ -31,7 +31,7 @@ class WebformTranslationConfigManager implements WebformTranslationConfigManager use StringTranslationTrait; /** - * A unsaved webfofrm used to get element properties by element type. + * A unsaved webform used to get element properties by element type. * * @var \Drupal\webform\WebformInterface */ diff --git a/web/modules/webform/templates/webform-help-support.html.twig b/web/modules/webform/templates/webform-help-support.html.twig index 725fe6992ad15abb134344df550afe2df7b20aec..82faefd4aa5bec5aab711239da2bcae51f019562 100644 --- a/web/modules/webform/templates/webform-help-support.html.twig +++ b/web/modules/webform/templates/webform-help-support.html.twig @@ -19,21 +19,21 @@ </div> </div> <div class="webform-help-support__item"> - <span class="webform-help-support__item-icon webform-help-support__item-icon--fund" id="contribute-info-membership"></span> + <span class="webform-help-support__item-icon webform-help-support__item-icon--join" id="contribute-info-association"></span> <div class="webform-help-support__item-details"> - <h3 class="webform-help-support__item-title">{{ 'Fund development'|t }}</h3> - {{ 'Help fund the day-to-day tasks required to maintain the Webform module. Funds are used to triage issues, resolve security issues, and tag new releases.'|t }}<br/> - <a href="https://opencollective.com/webform" class="button button--small button--primary webform-help-support__button">{{ 'Fund'|t }}</a><br/> + <h3 class="webform-help-support__item-title">{{ 'Drupal Association'|t }}</h3> + {{ "The Drupal Association is an educational non-profit organization that tasks itself with fostering and supporting the Drupal software project, the community and its growth."|t }}<br/> + <a href="https://www.drupal.org/association" class="button button--small button--primary webform-help-support__button">{{ 'Join'|t }}</a><br/> <em>{{ 'Starting at $5 a month'|t }}</em> </div> </div> <div class="webform-help-support__item"> - <span class="webform-help-support__item-icon webform-help-support__item-icon--contact" id="contribute-info-contribution"></span> + <span class="webform-help-support__item-icon webform-help-support__item-icon--fund" id="contribute-info-membership"></span> <div class="webform-help-support__item-details"> - <h3 class="webform-help-support__item-title">{{ 'Professional support'|t }}</h3> - {{ "Hire the Webform module's subject matter expert (SME) to ensure the success of your project. I can review your project plan, recommend solutions, and implement custom features."|t }}<br/> - <a href="https://www.jrockowitz.com" class="button button--small button--primary webform-help-support__button">{{ 'Contact'|t }}</a><br/> - <em>{{ 'Starting at $800'|t }}</em> + <h3 class="webform-help-support__item-title">{{ 'Fund development'|t }}</h3> + {{ 'Help fund the day-to-day tasks required to maintain the Webform module. Funds are used to triage issues, resolve security issues, and tag new releases.'|t }}<br/> + <a href="https://opencollective.com/webform" class="button button--small button--primary webform-help-support__button">{{ 'Fund'|t }}</a><br/> + <em>{{ 'Starting at $5 a month'|t }}</em> </div> </div> </div> diff --git a/web/modules/webform/templates/webform-html-editor-markup.html.twig b/web/modules/webform/templates/webform-html-editor-markup.html.twig index 2560548dc248d1b547b8829ce6f9347f21eb51fa..6527cfc02e70ea43e4f00bccb5d60189cd1fab5d 100644 --- a/web/modules/webform/templates/webform-html-editor-markup.html.twig +++ b/web/modules/webform/templates/webform-html-editor-markup.html.twig @@ -8,7 +8,7 @@ * - allowed_tags: Allowed tags. * - content: Renderable HTML markup. * - * Using Twig output modifer to remove extra carriage returns at the end of + * Using Twig output modifier to remove extra carriage returns at the end of * the generated markup. * * @see template_preprocess_webform_html_editor_markup() diff --git a/web/modules/webform/templates/webform-progress-bar.html.twig b/web/modules/webform/templates/webform-progress-bar.html.twig index cd371b3185e6e6763895ab1e94a7c50db8d116ce..65bc4b27a8dfb9c78f3a116948b0251ea5f472cf 100644 --- a/web/modules/webform/templates/webform-progress-bar.html.twig +++ b/web/modules/webform/templates/webform-progress-bar.html.twig @@ -29,7 +29,7 @@ ] %} <li{{ attributes.setAttribute('data-webform-page', page.name).setAttribute('class', '').addClass(classes) }}> - <b class="webform-progress-bar__page-title">{{ page.title }}</b>{% if (loop.first or loop.last) %}<span></span>{% endif %} + <b class="webform-progress-bar__page-title">{{ page.title }}</b>{% if (loop.first or loop.last) %}<span></span>{% endif %} </li>{% endfor %} </ol> {% endif %} diff --git a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_input_mask.yml b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_input_mask.yml index 5bcd22f9824536d73e057ca86cb9158a33edf278..3568df75130f62400201b0d44302acc2b216e592 100644 --- a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_input_mask.yml +++ b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_input_mask.yml @@ -43,6 +43,14 @@ elements: | '#type': textfield '#title': decimal '#input_mask': '''alias'': ''decimal''' + decimal_negative: + '#type': textfield + '#title': decimal_negative + '#input_mask': '''alias'': ''decimal_negative''' + decimal_positive_negative: + '#type': textfield + '#title': decimal_positive_negative + '#input_mask': '''alias'': ''decimal_positive_negative''' email: '#type': textfield '#title': email diff --git a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_likert.yml b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_likert.yml index 90edf784c3321ea6b2679b59e5129049c3deed66..2187926634e0fd0459755a2f0960dcf0f94fb40a 100644 --- a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_likert.yml +++ b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_likert.yml @@ -68,6 +68,18 @@ elements: | 1: 'Option 1 -- This is help text' 2: 'Option 2 -- This is help text' 3: 'Option 3 -- This is help text' + likert_html: + '#type': webform_likert + '#title': likert_html + '#required': true + '#questions': + q1: 'Question <strong>1</strong>' + q2: 'Question <strong>2</strong>' + q3: 'Question <strong>3</strong>' + '#answers': + 1: 'Option 1' + 2: 'Option 2' + 3: 'Option 3' likert_values: '#type': webform_likert '#title': likert_values diff --git a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_form_access_denied.yml b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_form_access_denied.yml index b61452820e33e9c2d98e16e10d6cbca795ff486e..72ab9890764a143b98e1a3ac53acdbca282ad90a 100644 --- a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_form_access_denied.yml +++ b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_form_access_denied.yml @@ -58,7 +58,7 @@ settings: form_details_toggle: false form_access_denied: login form_access_denied_title: 'Webform: Access denied' - form_access_denied_message: 'Please login to access <b>[webform:title]</b>.' + form_access_denied_message: 'Please log in to access <b>[webform:title]</b>.' form_access_denied_attributes: { } form_file_limit: '' form_method: '' @@ -77,7 +77,7 @@ settings: submission_user_duplicate: false submission_access_denied: login submission_access_denied_title: 'Webform submission: Access Denied' - submission_access_denied_message: 'Please login to access <b>[webform_submission:label]</b>.' + submission_access_denied_message: 'Please log in to access <b>[webform_submission:label]</b>.' submission_access_denied_attributes: { } submission_exception_message: '' submission_locked_message: '' diff --git a/web/modules/webform/tests/modules/webform_test/webform_test.info.yml b/web/modules/webform/tests/modules/webform_test/webform_test.info.yml index 94dc8da5e6d623512da0862d15a263d5cdf8629f..958788a379b8a04476224d26fa25f6e00a45c04c 100644 --- a/web/modules/webform/tests/modules/webform_test/webform_test.info.yml +++ b/web/modules/webform/tests/modules/webform_test/webform_test.info.yml @@ -2,11 +2,11 @@ name: 'Webform test' type: module description: 'Support module for webform testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml b/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml index 5156a238905d447c3d526d8e030a95180733f899..b7e91dab29bcdeb55ea514ebc75c1d8dd52e3c2c 100644 --- a/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml +++ b/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml @@ -2,12 +2,12 @@ name: 'Webform Ajax test' type: module description: 'Support module for webform Ajax testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:block' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml b/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml index 2d1c42c17ef14bdda503addd243d0b09e09ad3a3..041bc63481b1b13b0ba1eb9e86eb64dcd8ab26f6 100644 --- a/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml +++ b/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml @@ -2,11 +2,11 @@ name: 'Webform Alter Hooks test' type: module description: 'Support module for webform form and element alter hooks testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml b/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml index 3b6157473fc29675951f0fd5d463c0625ba022dc..303b878e44b0ec3b4820ec6328228b6dd9454bba 100644 --- a/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml +++ b/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml @@ -2,12 +2,12 @@ name: 'Webform Block Context test' type: module description: 'Support module for webform block context testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:block' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml b/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml index 1af473b24cdecc040c68b99bc4d3258632cc7247..75562625a0810d77fa532bdecfe0f448967c0368 100644 --- a/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml +++ b/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml @@ -2,13 +2,13 @@ name: 'Webform Block Custom test' type: module description: 'Support module for webform block custom testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:block' - 'drupal:block_content' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml b/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml index fbdce4af5df8d11df95f8c34a2445bf9597a8f3b..e189bfa65bd12e1633d437ce190018453bf1c4bb 100644 --- a/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml +++ b/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml @@ -2,12 +2,12 @@ name: 'Webform Block Submission Liimit test' type: module description: 'Support module for webform block submission limit testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:block' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml b/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml index f2dd1ea5af33286cff4415b64b7d5666ca597c23..4e9c89f1e585c62f7b2a64b794460e5a7c89428f 100644 --- a/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml +++ b/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml @@ -2,11 +2,11 @@ name: 'Webform Config Performance test' type: module description: 'Support module for webform config performance testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml b/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml index 894a8d9e48896c7b7b43f7a0e88f1f9599715e34..200c85fcecf423b12b7d9ff2aa3b41db316a3e61 100644 --- a/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml +++ b/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml @@ -2,12 +2,12 @@ name: 'Webform Test Editorial' type: module description: 'Provides editorial management tools for the Webform module.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 configure: webform_test_editorial.index dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_element/config/install/webform.webform.test_element_plugin.yml b/web/modules/webform/tests/modules/webform_test_element/config/install/webform.webform.test_element_plugin.yml index 0f2055bf5e909ba4d20405019e1fca3fe9c99ed4..7088a4e1c920f525c57155e7123349afcf478bbf 100644 --- a/web/modules/webform/tests/modules/webform_test_element/config/install/webform.webform.test_element_plugin.yml +++ b/web/modules/webform/tests/modules/webform_test_element/config/install/webform.webform.test_element_plugin.yml @@ -19,8 +19,8 @@ categories: elements: | description: '#markup': | - <p>This webform includes a #test elememt which will trigger all methods associated with a WebformElement plugin.</p> - + <p>This webform includes a #test element which will trigger all methods associated with a WebformElement plugin.</p> + test: '#type': webform_test_element '#title': 'This is a test element' diff --git a/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml b/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml index 6612d12710ac7dbe6c818367c04b061140c7cd42..eb5b2432bc97acc0b01130abe76852bd9af4cfc9 100644 --- a/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml +++ b/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml @@ -2,11 +2,11 @@ name: 'Webform Element test' type: module description: 'Support module for webform element plugin testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml b/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml index 16832a7bcca040164102e6beb8a509256e13cce8..b3f1b2961e3f931ca30e56cfc80644c036deb9f9 100644 --- a/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml +++ b/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml @@ -2,11 +2,11 @@ name: 'Webform Element Input Masks test' type: module description: 'Support module for webform input mask testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_entity_reference_views/config/install/webform.webform.test_element_entity_reference_vs.yml b/web/modules/webform/tests/modules/webform_test_entity_reference_views/config/install/webform.webform.test_element_entity_reference_vs.yml index 0624a884c9d4ce9857a1b2e62daff674290ce602..6e10b87a3d4d929adca6905433da3c56e86cdaa5 100644 --- a/web/modules/webform/tests/modules/webform_test_entity_reference_views/config/install/webform.webform.test_element_entity_reference_vs.yml +++ b/web/modules/webform/tests/modules/webform_test_entity_reference_views/config/install/webform.webform.test_element_entity_reference_vs.yml @@ -95,7 +95,7 @@ css: | margin: 0 0 5px 0; } - /* Checkboex and radios */ + /* Checkboxes and radios */ .webform-entity-reference-options .fieldset-wrapper > div { display: flex; diff --git a/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml b/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml index 91750383ba239ebf34553c3c44c2a073b63ee486..1404b3a672a2d0501884b28d1ffbfd10b67e0d11 100644 --- a/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml +++ b/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml @@ -2,14 +2,14 @@ name: 'Webform Entity Reference Views test' type: module description: 'Support module for webform entity reference testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:node' - 'drupal:user' - 'drupal:views' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml b/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml index 9da8a7e61435a00b262035f624afcdbef1cb1726..4de6f8bbca4004681e4fd44510f3e4e230078677 100644 --- a/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml +++ b/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml @@ -2,11 +2,11 @@ name: 'Webform Exporter test' type: module description: 'Support module for webform exporter plugin testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml b/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml index 5a062feb9bbfeeb043c8331e28aa661e25bbc930..85ec04ad0bc431d61ccdc78382aabb68dd95a19a 100644 --- a/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml +++ b/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml @@ -2,11 +2,11 @@ name: 'Webform Handler test' type: module description: 'Support module for webform handler plugin testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml b/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml index 1d4a3fea1a0d9f29e633ce7b5c7cd8a74fc2c8df..121f7f6d767e4b47bc93f12cfddfdf2a044e5809 100644 --- a/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml +++ b/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml @@ -2,11 +2,11 @@ name: 'Webform Handler Invoke test' type: module description: 'Support module for webform handler invoke alter testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml b/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml index ef5102ebbaefc08fde1ca9991847b5f485e8a2e0..c4746a2d4945737cfb50a61160e3a470e39bb90a 100644 --- a/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml +++ b/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml @@ -2,11 +2,11 @@ name: 'Webform Remote Post test' type: module description: 'Support module for webform remote post testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml b/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml index 90c70ae8478086fde5bfb020615248f9c7a9dba3..df01c40f393eb7fbc82321fb4cedd09d45bf6678 100644 --- a/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml +++ b/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml @@ -2,11 +2,11 @@ name: 'Webform Markup test' type: module description: 'Support module for webform markup testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml b/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml index 0e0be46f09013d75e02215a4667b17dd4b097837..6c6a637287c3bb7baeb768091cbd09b02d189a01 100644 --- a/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml +++ b/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml @@ -2,11 +2,11 @@ name: 'Webform Custom Messag test' type: module description: 'Support module for webform custom message testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml b/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml index b56715c2b1691bd70ef9170d2c15f3e0bc5d0667..f9be80bf6e7b4ae9dc6807ed29c4780b4a6e1d6c 100644 --- a/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml +++ b/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml @@ -2,11 +2,11 @@ name: 'Webform Options test' type: module description: 'Support module for webform options testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_node_value.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_node_value.yml index 8a29cc7dda2c63c95b18bbf5b90912885a050ecb..b70f807dba5beb7c6961e0f853d10d0e698fe4ce 100644 --- a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_node_value.yml +++ b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_node_value.yml @@ -3,7 +3,7 @@ status: true dependencies: module: - node - enfourced: + enforced: module: - webform_test_paragraphs id: node.field_webform_test_node_value diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_value.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_value.yml index 986b28edf820ba01c07a77394fb3cf84c044ceb7..59eeafceac9b6243e8979c8a0a84287e17158650 100644 --- a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_value.yml +++ b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/field.storage.node.field_webform_test_value.yml @@ -3,7 +3,7 @@ status: true dependencies: module: - node - enfourced: + enforced: module: - webform_test_paragraphs id: node.field_webform_test_value diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_inline_no_source.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_inline_no_source.yml index 6df08da54963e0f55d9e4e16e98fe4f9cbbba227..a2406380ffc9e688a50e34e7ccbfa883152550a5 100644 --- a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_inline_no_source.yml +++ b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_inline_no_source.yml @@ -1,7 +1,7 @@ langcode: en status: true dependencies: - enfourced: + enforced: module: - webform_test_paragraphs id: webform_test_inline_no_source diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_link.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_link.yml index cb0ff7f9f80760b91e10b14f471a3c6e38f10fa1..7fd68273fee08399522c807e416dfa61721fe29c 100644 --- a/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_link.yml +++ b/web/modules/webform/tests/modules/webform_test_paragraphs/config/install/paragraphs.paragraphs_type.webform_test_link.yml @@ -1,7 +1,7 @@ langcode: en status: true dependencies: - enfourced: + enforced: module: - webform_test_paragraphs id: webform_test_link diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml index 393420ebb00fe699be10ee4e9cb872aadd746f34..19d71716002c219fb9b9f91e27bb3a560330329d 100644 --- a/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml +++ b/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml @@ -2,14 +2,14 @@ name: 'Webform Paragraphs test' type: module description: 'Support module for webform paragraphs integration testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:node' - 'token:token' - 'paragraphs:paragraphs' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml b/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml index 887e5652d952ea4893e524e66397a1c4ec6bdb8b..facc71f38fdf8063c16a0b764c0f3fea4db26244 100644 --- a/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml +++ b/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml @@ -2,14 +2,14 @@ name: 'Webform REST API test' type: module description: 'Support module for webform REST API testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:hal' - 'drupal:rest' - 'drupal:serialization' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml b/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml index 7d8065a7dfaaf17a4161c6ef4eb7af7c5c5fa5ae..9ba16e7348a1924eb8cb92804c5b7eede75c9e48 100644 --- a/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml +++ b/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml @@ -2,11 +2,11 @@ name: 'Webform #states API test' type: module description: 'Support module for webform #states API testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml b/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml index a9c62eec8f9f8e969cedeb3d9b3c5083fbd87333..caabc849c4ce6f8a69eb6c17f3338d766f6a61aa 100644 --- a/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml +++ b/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml @@ -2,12 +2,12 @@ name: 'Webform Submissions test' type: module description: 'Support module for webform submission testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:node' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml b/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml index 7618d1af26e5221908d1cca5b5c1370da4b37d92..bd4bbcb9e90e88efd3f98fa12a192ecfbda4cf7c 100644 --- a/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml +++ b/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml @@ -2,11 +2,11 @@ name: 'Webform Third Party Settings test' type: module description: 'Support module for webform third party settings testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml b/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml index f892654735d538b70a20cb4c5987794ee978a9c7..38e34a2303a5a3b3e9550a3caa392db1445fde38 100644 --- a/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml +++ b/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml @@ -2,7 +2,7 @@ name: 'Webform Translation test' type: module description: 'Support module for webform translation testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:config_translation' - 'drupal:language' @@ -10,7 +10,7 @@ dependencies: - 'webform:webform' - 'webform:webform_image_select' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml b/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml index 670ef142592e0bcba6f0a3dbfdfca576168fc9aa..992d95e4fcb336f60015b027f40d83e105f82544 100644 --- a/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml +++ b/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml @@ -2,7 +2,7 @@ name: 'Webform Translation Lingotek test' type: module description: 'Support module for webform Lingotek integration testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:config_translation' - 'drupal:language' @@ -10,7 +10,7 @@ dependencies: - 'lingotek:lingotek' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml b/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml index a0f131ef19d5970f6c574f7b9e741c7b56a83605..33aa02a938016a713151a2a78d7e8743ce9ecf1f 100644 --- a/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml +++ b/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml @@ -2,11 +2,11 @@ name: 'Webform Validate test' type: module description: 'Support module for webform validate testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml b/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml index c081c4ec85bab411249d3468f5287ef8e350c927..ed43769de28428402f1aa776b64534cdfe6e9eea 100644 --- a/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml +++ b/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml @@ -2,11 +2,11 @@ name: 'Webform Variant test' type: module description: 'Support module for webform variant plugin testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml b/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml index 68c908c03b1c46605b52434fe68fa823c6e2a2ba..54ec496c7c3a4d9fbbb77b496d00561bdb110503 100644 --- a/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml +++ b/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml @@ -2,14 +2,14 @@ name: 'Webform Views test' type: module description: 'Support module for webform views integration testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'drupal:node' - 'drupal:user' - 'drupal:views' - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml b/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml index 60640cc73b5e9e7d23e08b50a3f338d2918ac671..82f95680d0067999e9ad120444a94122a7c96b57 100644 --- a/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml +++ b/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml @@ -2,11 +2,11 @@ name: 'Webform Wizard Custom test' type: module description: 'Support module for webform for wizard customization testing.' package: 'Webform Testing' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 dependencies: - 'webform:webform' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityJsonApiTest.php b/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityJsonApiTest.php index ba27caa0ae08614bcab87c61b5de7e1284afffb8..d9eaa178a7b9275d24e8dda6592ff91637e47fcd 100644 --- a/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityJsonApiTest.php +++ b/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityJsonApiTest.php @@ -20,7 +20,7 @@ class WebformAccessEntityJsonApiTest extends WebformBrowserTestBase { protected static $modules = ['webform', 'jsonapi']; /** - * Tests webform entity REST acces. + * Tests webform entity REST access. */ public function testRestAccess() { $assert_session = $this->assertSession(); diff --git a/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityRestTest.php b/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityRestTest.php index 5c2706ced08fef620c5fa5c0424ad2f08de6b169..5e8ebf7f5b61e86e7938212f0fa1ec2e73f516f3 100644 --- a/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityRestTest.php +++ b/web/modules/webform/tests/src/Functional/Access/WebformAccessEntityRestTest.php @@ -20,7 +20,7 @@ class WebformAccessEntityRestTest extends WebformBrowserTestBase { protected static $modules = ['webform', 'webform_test_rest']; /** - * Tests webform entity REST acces. + * Tests webform entity REST access. */ public function testRestAccess() { $assert_session = $this->assertSession(); diff --git a/web/modules/webform/tests/src/Functional/Cache/WebformCacheTest.php b/web/modules/webform/tests/src/Functional/Cache/WebformCacheTest.php index 5282ab7006c319cb132b22d124c619d5c53ea06f..62d4c34cda53826dd0a95d7e83c08e94e12cbe70 100644 --- a/web/modules/webform/tests/src/Functional/Cache/WebformCacheTest.php +++ b/web/modules/webform/tests/src/Functional/Cache/WebformCacheTest.php @@ -33,18 +33,23 @@ public function testCache() { // Check that the form includes 'user.roles:authenticated' because the // '[current-user:mail]' token. - $this->assertEqualsCanonicalizing($form['#cache'], [ + $expected = [ 'contexts' => [ 'user.roles:authenticated', ], 'tags' => [ + 'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form', 'config:core.entity_form_display.webform_submission.contact.add', 'config:webform.settings', 'config:webform.webform.contact', 'webform:contact', ], 'max-age' => -1, - ]); + ]; + if (version_compare(\Drupal::VERSION, '10.3', '<')) { + array_shift($expected['tags']); + } + $this->assertEqualsCanonicalizing($expected, $form['#cache']); // Check that the name element does not have #cache because the // '[current-user:mail]' is set via @@ -66,12 +71,13 @@ public function testCache() { // Check that the form includes 'user.roles:authenticated' because the // '[current-user:mail]' token. - $this->assertEqualsCanonicalizing($form['#cache'], [ + $expected = [ 'contexts' => [ 'user', 'user.roles:authenticated', ], 'tags' => [ + 'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form', 'config:core.entity_form_display.webform_submission.contact.add', 'config:webform.settings', 'config:webform.webform.contact', @@ -79,7 +85,11 @@ public function testCache() { 'webform:contact', ], 'max-age' => -1, - ]); + ]; + if (version_compare(\Drupal::VERSION, '10.3', '<')) { + array_shift($expected['tags']); + } + $this->assertEqualsCanonicalizing($expected, $form['#cache']); $this->assertFalse(isset($form['elements']['email']['#cache'])); $this->assertEquals($form['elements']['email']['#default_value'], $account->getEmail()); @@ -94,7 +104,7 @@ public function testCache() { // Check that the 'email' element does have '#cache' property because the // '#description' is using the '[current-user:mail]' token. - $this->assertEqualsCanonicalizing($form['elements']['email']['#cache'], [ + $expected = [ 'contexts' => [ 'user', ], @@ -105,7 +115,8 @@ public function testCache() { 'webform:contact', ], 'max-age' => -1, - ]); + ]; + $this->assertEqualsCanonicalizing($expected, $form['elements']['email']['#cache']); $this->assertEquals($form['elements']['email']['#default_value'], $account->getEmail()); $this->assertEquals($form['elements']['email']['#description']['#markup'], $account->getEmail()); } diff --git a/web/modules/webform/tests/src/Functional/Composite/WebformCompositeTest.php b/web/modules/webform/tests/src/Functional/Composite/WebformCompositeTest.php index 2023b2a88ae0b44ae403013793257fc110359edb..ecd66936c417725d48b85ea2409a265f5c3265d3 100644 --- a/web/modules/webform/tests/src/Functional/Composite/WebformCompositeTest.php +++ b/web/modules/webform/tests/src/Functional/Composite/WebformCompositeTest.php @@ -85,7 +85,7 @@ public function testComposite() { $this->drupalLogin($this->rootUser); - // Check editing custom options are renderd. + // Check editing custom options are rendered. $this->drupalGet('/webform/test_composite'); $assert_session->responseContains('<select data-drupal-selector="edit-address-custom-options-state-province" id="edit-address-custom-options-state-province" name="address_custom_options[state_province]" class="form-select"><option value="" selected="selected">- None -</option><option value="Yes">Yes</option><option value="No">No</option></select>'); $assert_session->responseContains('<select data-drupal-selector="edit-address-custom-options-country" id="edit-address-custom-options-country" name="address_custom_options[country]" class="form-select"><option value="" selected="selected">- None -</option><option value="one">One</option><option value="two">Two</option><option value="three">Three</option></select>'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementCheckboxesTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementCheckboxesTest.php index d277d9a087a591e8eee3075442faa4550a6b4135..a2d8209c41c13ea207b8b525ed1029a9263e39df 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementCheckboxesTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementCheckboxesTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; /** @@ -43,7 +44,12 @@ public function testCheckboxes() { $assert_session->responseContains('<label class="webform-options-display-buttons-label option" for="edit-checkboxes-buttons-description-one"><div class="webform-options-display-buttons-title">One</div><div class="webform-options-display-buttons-description description">This is a description</div></label>'); // Check options (custom) properties wrapper attributes. - $assert_session->responseContains('<div data-custom="custom wrapper data" style="border: red 1px solid" class="one-custom-wrapper-class js-form-item form-item js-form-type-checkbox form-item-checkboxes-options-properties-two js-form-item-checkboxes-options-properties-two">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div data-custom="custom wrapper data" style="border: red 1px solid" class="one-custom-wrapper-class js-form-item form-item form-type-checkbox js-form-type-checkbox form-item-checkboxes-options-properties-two js-form-item-checkboxes-options-properties-two">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div data-custom="custom wrapper data" style="border: red 1px solid" class="one-custom-wrapper-class js-form-item form-item js-form-type-checkbox form-item-checkboxes-options-properties-two js-form-item-checkboxes-options-properties-two">'), + ); // Check options (custom) properties label attributes. $assert_session->responseContains('<label data-custom="custom label data" style="border: blue 1px solid" class="one-custom-label-class option" for="edit-checkboxes-options-properties-two">Two</label>'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementCompositeTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementCompositeTest.php index a8dd5ec3d19375b70c198637ae7a795aa7288f22..5f47ea8cfe11662e59dbf7f313fb48d08ddc8944 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementCompositeTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementCompositeTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; /** @@ -125,7 +126,12 @@ public function testComposite() { $assert_session->responseContains('<fieldset data-drupal-selector="edit-radios-wrapper-fieldset-hidden-title" id="edit-radios-wrapper-fieldset-hidden-title--wrapper" class="radios--wrapper fieldgroup form-composite webform-composite-hidden-title required js-webform-type-radios webform-type-radios js-form-item form-item js-form-wrapper form-wrapper">'); // Check form element wrapper. - $assert_session->responseContains('<div class="js-form-item form-item js-form-type-radios form-item-radios-wrapper-form-element js-form-item-radios-wrapper-form-element">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item form-type-radio js-form-type-radio form-item-radios-wrapper-form-element js-form-item-radios-wrapper-form-element">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item js-form-type-radios form-item-radios-wrapper-form-element js-form-item-radios-wrapper-form-element">'), + ); // Check container wrapper. $assert_session->responseContains('<div data-drupal-selector="edit-radios-wrapper-container" id="edit-radios-wrapper-container--wrapper" class="radios--wrapper fieldgroup form-composite js-form-wrapper form-wrapper">'); @@ -136,7 +142,12 @@ public function testComposite() { // Check wrapper with #states. $assert_session->responseContains('<fieldset data-drupal-selector="edit-states-fieldset" class="js-webform-states-hidden radios--wrapper fieldgroup form-composite webform-composite-visible-title js-webform-type-radios webform-type-radios js-form-item form-item js-form-wrapper form-wrapper" id="edit-states-fieldset--wrapper" data-drupal-states="{"visible":{".webform-submission-test-element-composite-wrapper-add-form :input[name=\u0022states_checkbox\u0022]":{"checked":true}}}">'); - $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-radios form-item-states-form-item js-form-item-states-form-item" data-drupal-states="{"visible":{".webform-submission-test-element-composite-wrapper-add-form :input[name=\u0022states_checkbox\u0022]":{"checked":true}}}">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item form-type-radios js-form-type-radios form-item-states-form-item js-form-item-states-form-item" data-drupal-states="{"visible":{".webform-submission-test-element-composite-wrapper-add-form :input[name=\u0022states_checkbox\u0022]":{"checked":true}}}">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-radios form-item-states-form-item js-form-item-states-form-item" data-drupal-states="{"visible":{".webform-submission-test-element-composite-wrapper-add-form :input[name=\u0022states_checkbox\u0022]":{"checked":true}}}">'), + ); $assert_session->responseContains('<div data-drupal-selector="edit-states-container" class="js-webform-states-hidden radios--wrapper fieldgroup form-composite js-form-wrapper form-wrapper" id="edit-states-container--wrapper" data-drupal-states="{"visible":{".webform-submission-test-element-composite-wrapper-add-form :input[name=\u0022states_checkbox\u0022]":{"checked":true}}}">'); // Below tests are only failing on Drupal.org and pass locally. diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementComputedTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementComputedTest.php index 84e53759935899b74b70369d6791f33357d4cf84..2f6fd170f3c2ec3ab1e70171910575a2da06d6d1 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementComputedTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementComputedTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; use Drupal\webform\Entity\WebformSubmission; @@ -75,7 +76,12 @@ public function testComputedElement() { $assert_session->responseContains('<b class="webform_computed_token_html">xss:</b> <script>alert("XSS");</script><br />'); // Check token plain text rendering. - $assert_session->responseContains(' <div class="webform-element webform-element-type-webform-computed-token js-form-item form-item js-form-type-item form-item-webform-computed-token-text js-form-item-webform-computed-token-text" id="test_element_computed_token--webform_computed_token_text">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="webform-element webform-element-type-webform-computed-token js-form-item form-item form-type-item js-form-type-item form-item-webform-computed-token-text js-form-item-webform-computed-token-text" id="test_element_computed_token--webform_computed_token_text">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="webform-element webform-element-type-webform-computed-token js-form-item form-item js-form-type-item form-item-webform-computed-token-text js-form-item-webform-computed-token-text" id="test_element_computed_token--webform_computed_token_text">'), + ); $assert_session->responseContains('<label>webform_computed_token_text</label>'); $assert_session->responseContains('simple string: This is a string<br />'); $assert_session->responseContains('complex string : This is a <strong>complex</strong> string, which contains "double" and 'single' quotes with special characters like >, <, ><, and <>.<br />'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementCounterTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementCounterTest.php index b105cf9ca81a2a0c735a0e5bc8b0574914507355..74c5f4fd5886184c5fe5b887e932c8c35c5ad891 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementCounterTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementCounterTest.php @@ -41,9 +41,9 @@ public function testCounter() { 'counter_words_max' => 'one two three four five six seven eight nine ten eleven', ]; $this->submitForm($edit, 'Submit'); - $assert_session->responseContains('counter_characters_min (5) must be longer than <em class="placeholder">5</em> characters but is currently <em class="placeholder">3</em> characters long.'); + $assert_session->responseContains('counter_characters_min (5) must be at least <em class="placeholder">5</em> characters but is currently <em class="placeholder">3</em> characters long.'); $assert_session->responseContains('counter_characters_max (10) cannot be longer than <em class="placeholder">10</em> characters but is currently <em class="placeholder">13</em> characters long.'); - $assert_session->responseContains('counter_words_min (5) must be longer than <em class="placeholder">5</em> words but is currently <em class="placeholder">3</em> words long.'); + $assert_session->responseContains('counter_words_min (5) must be at least <em class="placeholder">5</em> words but is currently <em class="placeholder">3</em> words long.'); $assert_session->responseContains('counter_words_max (10) cannot be longer than <em class="placeholder">10</em> words but is currently <em class="placeholder">11</em> words long.'); // Check counter validation passes (min: 5 / max: 10). @@ -55,9 +55,9 @@ public function testCounter() { 'counter_words_max' => 'one two three four five six seven eight nine ten', ]; $this->submitForm($edit, 'Submit'); - $assert_session->responseNotContains('counter_characters_min (5) must be longer than <em class="placeholder">5</em> characters'); + $assert_session->responseNotContains('counter_characters_min (5) must be at least <em class="placeholder">5</em> characters'); $assert_session->responseNotContains('counter_characters_max (10) cannot be longer than <em class="placeholder">10</em> characters'); - $assert_session->responseNotContains('counter_words_min (5) must be longer than <em class="placeholder">5</em> words'); + $assert_session->responseNotContains('counter_words_min (5) must be at least <em class="placeholder">5</em> words'); $assert_session->responseNotContains('counter_words_max (10) cannot be longer than <em class="placeholder">10</em> words'); } diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementDateTimeTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementDateTimeTest.php index 563d75bde15c5ac21949b16a9fa44b52ad25ad98..60b490ad2f6d6b62eb5ef33d7041109e97414d43 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementDateTimeTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementDateTimeTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Core\Datetime\DrupalDateTime; use Drupal\webform\Entity\Webform; use Drupal\webform\Entity\WebformSubmission; @@ -54,7 +55,14 @@ public function testDateTime() { // Check timepicker. $now_date = date('D, m/d/Y', strtotime('now')); - $assert_session->responseContains('<input data-drupal-selector="edit-datetime-timepicker-date" title="Date (e.g. ' . $now_date . ')" type="text" min="Mon, 01/01/1900" max="Sat, 12/31/2050" placeholder="YYYY-MM-DD" data-help="Enter the date using the format YYYY-MM-DD (e.g., ' . $now_date . ')." id="edit-datetime-timepicker-date" name="datetime_timepicker[date]" value="Tue, 08/18/2009" size="15" class="form-text" />'); + + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains(' <input data-drupal-selector="edit-datetime-timepicker-date" type="text" min="Mon, 01/01/1900" max="Sat, 12/31/2050" placeholder="YYYY-MM-DD" data-help="Enter the date using the format YYYY-MM-DD (e.g., ' . $now_date . ')." id="edit-datetime-timepicker-date" name="datetime_timepicker[date]" value="Tue, 08/18/2009" size="15" class="form-text" />'), + deprecatedCallable: fn() => $assert_session->responseContains('<input data-drupal-selector="edit-datetime-timepicker-date" title="Date (e.g. ' . $now_date . ')" type="text" min="Mon, 01/01/1900" max="Sat, 12/31/2050" placeholder="YYYY-MM-DD" data-help="Enter the date using the format YYYY-MM-DD (e.g., ' . $now_date . ')." id="edit-datetime-timepicker-date" name="datetime_timepicker[date]" value="Tue, 08/18/2009" size="15" class="form-text" />'), + ); + $assert_session->responseContains('<input data-drupal-selector="edit-datetime-timepicker-time"'); // Skip time which can change during the tests. // phpcs:ignore diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementDetailsTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementDetailsTest.php index b18b873dedd76682bacd4b03ee0e6735accd5170..2330091affab065ef70471c22837823de4583e5d 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementDetailsTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementDetailsTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; + /** * Tests for details element. * @@ -28,12 +30,22 @@ public function testDetails() { // and more. Also, check that invalid 'required' and 'aria-required' // attributes are removed. $assert_session->responseContains('<details data-webform-key="details" data-drupal-selector="edit-details" aria-describedby="edit-details--description" id="edit-details" class="js-form-wrapper form-wrapper required webform-element-help-container--title webform-element-help-container--title-after" open="open">'); - $assert_session->responseContains('<summary role="button" aria-controls="edit-details" aria-expanded="true" aria-pressed="true" class="js-form-required form-required">details<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="details" data-webform-help="<div class="webform-element-help--title">details</div><div class="webform-element-help--content">This is help text.</div>"><span aria-hidden="true">?</span>'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-details" aria-expanded="true" class="js-form-required form-required">details<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="details" data-webform-help="<div class="webform-element-help--title">details</div><div class="webform-element-help--content">This is help text.</div>"><span aria-hidden="true">?</span>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-details" aria-expanded="true" aria-pressed="true" class="js-form-required form-required">details<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="details" data-webform-help="<div class="webform-element-help--title">details</div><div class="webform-element-help--content">This is help text.</div>"><span aria-hidden="true">?</span>'), + ); $assert_session->responseContains('<div id="edit-details--description" class="webform-element-description">This is a description.</div>'); $assert_session->responseContains('<div id="edit-details--more" class="js-webform-element-more webform-element-more">'); // Check details title_display: invisible. - $assert_session->responseContains('<summary role="button" aria-controls="edit-details-title-invisible" aria-expanded="false" aria-pressed="false"><span class="visually-hidden">Details title invisible</span></summary>'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-details-title-invisible" aria-expanded="false"><span class="visually-hidden">Details title invisible</span></summary>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-details-title-invisible" aria-expanded="false" aria-pressed="false"><span class="visually-hidden">Details title invisible</span></summary>'), + ); } } diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php index 97c74e74b55cba5fc7a1019f6585236ed00e9d01..23e5a9ba3a0f23851c8e46caf336e1b9b1073c8a 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; + /** * Tests for email_confirm element. * @@ -27,21 +29,41 @@ public function testEmailConfirm() { // Check basic email confirm. $assert_session->responseContains('<fieldset id="edit-email-confirm-basic" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">'); $assert_session->responseContains('<span class="visually-hidden fieldset-legend">email_confirm_basic</span>'); - $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-basic-mail-1 js-form-item-email-confirm-basic-mail-1">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item form-type-email js-form-type-email form-item-email-confirm-basic-mail-1 js-form-item-email-confirm-basic-mail-1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-basic-mail-1 js-form-item-email-confirm-basic-mail-1">'), + ); $assert_session->responseContains('<label for="edit-email-confirm-basic-mail-1">email_confirm_basic</label>'); $assert_session->responseContains('<input data-drupal-selector="edit-email-confirm-basic-mail-1" class="webform-email form-email" type="email" id="edit-email-confirm-basic-mail-1" name="email_confirm_basic[mail_1]" value="" size="60" maxlength="254" />'); - $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-basic-mail-2 js-form-item-email-confirm-basic-mail-2">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item form-type-email js-form-type-email form-item-email-confirm-basic-mail-2 js-form-item-email-confirm-basic-mail-2">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-basic-mail-2 js-form-item-email-confirm-basic-mail-2">'), + ); $assert_session->responseContains('<label for="edit-email-confirm-basic-mail-2">Confirm email</label>'); $assert_session->responseContains('<input data-drupal-selector="edit-email-confirm-basic-mail-2" class="webform-email-confirm form-email" type="email" id="edit-email-confirm-basic-mail-2" name="email_confirm_basic[mail_2]" value="" size="60" maxlength="254" />'); // Check advanced email confirm w/ custom label. $assert_session->responseContains('<fieldset id="edit-email-confirm-advanced" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">'); $assert_session->responseContains('<span class="visually-hidden fieldset-legend">Email address</span>'); - $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-advanced-mail-1 js-form-item-email-confirm-advanced-mail-1">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item form-type-email js-form-type-email form-item-email-confirm-advanced-mail-1 js-form-item-email-confirm-advanced-mail-1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-advanced-mail-1 js-form-item-email-confirm-advanced-mail-1">'), + ); $assert_session->responseContains('<label for="edit-email-confirm-advanced-mail-1">Email address</label>'); $assert_session->responseContains('<input data-drupal-selector="edit-email-confirm-advanced-mail-1" aria-describedby="edit-email-confirm-advanced-mail-1--description" class="webform-email form-email" type="email" id="edit-email-confirm-advanced-mail-1" name="email_confirm_advanced[mail_1]" value="" size="60" maxlength="254" placeholder="Enter email address" />'); $assert_session->responseContains('<div id="edit-email-confirm-advanced-mail-1--description" class="webform-element-description">Please make sure to review your email address</div>'); - $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-advanced-mail-2 js-form-item-email-confirm-advanced-mail-2">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item form-type-email js-form-type-email form-item-email-confirm-advanced-mail-2 js-form-item-email-confirm-advanced-mail-2">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-advanced-mail-2 js-form-item-email-confirm-advanced-mail-2">'), + ); $assert_session->responseContains('<label for="edit-email-confirm-advanced-mail-2">Please confirm your email address</label>'); $assert_session->responseContains('<input data-drupal-selector="edit-email-confirm-advanced-mail-2" aria-describedby="edit-email-confirm-advanced-mail-2--description" class="webform-email-confirm form-email" type="email" id="edit-email-confirm-advanced-mail-2" name="email_confirm_advanced[mail_2]" value="" size="60" maxlength="254" placeholder="Enter confirmation email address" />'); $assert_session->responseContains('<div id="edit-email-confirm-advanced-mail-2--description" class="webform-element-description">Please make sure to review your confirmation email address</div>'); @@ -51,8 +73,18 @@ public function testEmailConfirm() { // Check inline title. $assert_session->responseContains('<fieldset id="edit-email-confirm-inline" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">'); - $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item js-form-type-email form-item-email-confirm-inline-mail-1 js-form-item-email-confirm-inline-mail-1">'); - $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item js-form-type-email form-item-email-confirm-inline-mail-2 js-form-item-email-confirm-inline-mail-2">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item form-type-email js-form-type-email form-item-email-confirm-inline-mail-1 js-form-item-email-confirm-inline-mail-1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item js-form-type-email form-item-email-confirm-inline-mail-1 js-form-item-email-confirm-inline-mail-1">'), + ); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item form-type-email js-form-type-email form-item-email-confirm-inline-mail-2 js-form-item-email-confirm-inline-mail-2">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item js-form-type-email form-item-email-confirm-inline-mail-2 js-form-item-email-confirm-inline-mail-2">'), + ); // Check flexbox submit. $this->drupalGet('/webform/test_element_email_confirm'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementEntityAutocompleteTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementEntityAutocompleteTest.php index b9ae14633a316c5b200f6bdd9c2bcec0c7dd93db..55ba98d00fe1bc54e5e1e4f09b15cd32928b58cf 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementEntityAutocompleteTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementEntityAutocompleteTest.php @@ -7,7 +7,7 @@ use Drupal\webform\Entity\Webform; /** - * Tests for entity automcomplete element. + * Tests for entity autocomplete element. * * @group webform */ diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementExcludedColumnsTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementExcludedColumnsTest.php index a5d1f48c6f7399fede724844d0d5bd9e88b472ab..d16d32b81b97fce881b79a4f7a70f6be71f683f1 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementExcludedColumnsTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementExcludedColumnsTest.php @@ -19,7 +19,7 @@ class WebformElementExcludedColumnsTest extends WebformElementBrowserTestBase { /** * Test excluded columns element. */ - public function testExcluedElements() { + public function testExcludedElements() { $assert_session = $this->assertSession(); $this->drupalGet('/webform/test_element_excluded_columns'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php index b97757c58ad87ebea872dfbbcf131c6aeaa0d0a4..2be95411e0e4fc89f1f5651792dfd3b14e42d31a 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\file\Entity\File; use Drupal\Tests\TestFileCreationTrait; use Drupal\webform\Entity\Webform; @@ -120,7 +121,12 @@ public function testFormatCustom() { // Check fieldset displayed as details. $assert_session->responseContains('<details class="webform-container webform-container-type-details js-form-wrapper form-wrapper" data-webform-element-id="test_element_format_custom--fieldset_custom" id="test_element_format_custom--fieldset_custom" open="open">'); - $assert_session->responseContains('<summary role="button" aria-controls="test_element_format_custom--fieldset_custom" aria-expanded="true" aria-pressed="true">fieldset_custom</summary>'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="test_element_format_custom--fieldset_custom" aria-expanded="true">fieldset_custom</summary>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="test_element_format_custom--fieldset_custom" aria-expanded="true" aria-pressed="true">fieldset_custom</summary>'), + ); // Check container custom HTML format. $assert_session->responseContains('<h3>fieldset_custom_children</h3>' . PHP_EOL . '<hr />'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementHelpTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementHelpTest.php index cdd5f3f59b45bdac76456c9f6b79706e84509775..1d785da0698a4790579c22e361b253950fb8afb4 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementHelpTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementHelpTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; + /** * Tests for element help. * @@ -53,7 +55,12 @@ public function testHelp() { $assert_session->responseContains('<span class="fieldset-legend">help_radios<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="help_radios" data-webform-help="<div class="webform-element-help--title">help_radios</div><div class="webform-element-help--content">{This is an example of help for radio buttons}</div>"><span aria-hidden="true">?</span></span>'); // Check details. - $assert_session->responseContains('<summary role="button" aria-controls="edit-help-details" aria-expanded="false" aria-pressed="false">help_details<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="help_details" data-webform-help="<div class="webform-element-help--title">help_details</div><div class="webform-element-help--content">{This is an example of help for a details element}</div>"><span aria-hidden="true">?</span>'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-help-details" aria-expanded="false">help_details<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="help_details" data-webform-help="<div class="webform-element-help--title">help_details</div><div class="webform-element-help--content">{This is an example of help for a details element}</div>"><span aria-hidden="true">?</span>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-help-details" aria-expanded="false" aria-pressed="false">help_details<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="help_details" data-webform-help="<div class="webform-element-help--title">help_details</div><div class="webform-element-help--content">{This is an example of help for a details element}</div>"><span aria-hidden="true">?</span>'), + ); // Check section. $assert_session->responseContains('<h2 class="webform-section-title">help_section<span class="webform-element-help js-webform-element-help" role="tooltip" tabindex="0" aria-label="help_section" data-webform-help="<div class="webform-element-help--title">help_section</div><div class="webform-element-help--content">{This is an example of help for a section element}</div>"><span aria-hidden="true">?</span></span>'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementInputMaskTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementInputMaskTest.php index ab756f9e10995e4eb742187010c384773e9e7fb1..febbfc6779995c78b3cb6526e2bd6b665f34ea19 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementInputMaskTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementInputMaskTest.php @@ -40,6 +40,8 @@ public function testInputMask() { currency_positive_negative: '$ 1.00' datetime: '' decimal: '' +decimal_negative: '' +decimal_positive_negative: '' email: '' ip: '' license_plate: '' @@ -59,6 +61,8 @@ public function testInputMask() { 'email' => 'example@example.com', 'datetime' => '2007-06-09\'T\'17:46:21', 'decimal' => '9.9', + 'decimal_negative' => '-9.999', + 'decimal_positive_negative' => '-9.999', 'ip' => '255.255.255.255', 'currency' => '$ 9.99', 'currency_negative' => '-$ 9.99', @@ -80,6 +84,8 @@ public function testInputMask() { currency_positive_negative: '-$ 9.99' datetime: '2007-06-09''T''17:46:21' decimal: '9.9' +decimal_negative: '-9.999' +decimal_positive_negative: '-9.999' email: example@example.com ip: 255.255.255.255 license_plate: 9-AAA-999 @@ -100,6 +106,8 @@ public function testInputMask() { 'currency_negative' => '-$ 9.9_', 'currency_positive_negative' => '-$ 9.9_', 'decimal' => '9._', + 'decimal_negative' => '-9._', + 'decimal_positive_negative' => '-9._', 'ip' => '255.255.255.__', 'mac' => '99-99-99-99-99-_)', 'percentage' => '_ %', diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementLikertTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementLikertTest.php index 9437c892e6c8072dfcec3539b061f40e8d3e7108..7d9dc810b3104934170634d70784b23bb47b634c 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementLikertTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementLikertTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; + /** * Tests for likert element. * @@ -25,16 +27,32 @@ public function testLikertElement() { $this->drupalGet('/webform/test_element_likert'); // Check default likert element. - $assert_session->responseContains('<table class="webform-likert-table sticky-enabled responsive-enabled" data-likert-answers-count="3" data-drupal-selector="edit-likert-default-table" id="edit-likert-default-table" data-striping="1">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<table class="webform-likert-table sticky-header responsive-enabled" data-likert-answers-count="3" data-drupal-selector="edit-likert-default-table" id="edit-likert-default-table" data-striping="1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<table class="webform-likert-table sticky-enabled responsive-enabled" data-likert-answers-count="3" data-drupal-selector="edit-likert-default-table" id="edit-likert-default-table" data-striping="1">'), + ); $assert_session->responseMatches('#<tr>\s+<th><span class="visually-hidden">Questions</span></th>\s+<th>Option 1</th>\s+<th>Option 2</th>\s+<th>Option 3</th>\s+</tr>#'); $assert_session->responseContains('<label>Question 1</label>'); - $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-radio form-item-likert-default-q1 js-form-item-likert-default-q1">'); + + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item form-type-radio js-form-type-radio form-item-likert-default-q1 js-form-item-likert-default-q1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-radio form-item-likert-default-q1 js-form-item-likert-default-q1">'), + ); $assert_session->responseContains('<input aria-labelledby="edit-likert-default-table-q1-likert-question" data-drupal-selector="edit-likert-default-q1" type="radio" id="edit-likert-default-q1" name="likert_default[q1]" value="1" class="form-radio" />'); $assert_session->responseContains('<label for="edit-likert-default-q1" class="option"><span class="webform-likert-label visually-hidden">Option 1</span></label>'); // Check advanced likert element with N/A. $assert_session->responseMatches('#<tr>\s+<th><span class="visually-hidden">Questions</span></th>\s+<th>Option 1</th>\s+<th>Option 2</th>\s+<th>Option 3</th>\s+<th>Not applicable</th>\s+</tr>#'); - $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-radio form-item-likert-advanced-q1 js-form-item-likert-advanced-q1">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item form-type-radio js-form-type-radio form-item-likert-advanced-q1 js-form-item-likert-advanced-q1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-radio form-item-likert-advanced-q1 js-form-item-likert-advanced-q1">'), + ); $assert_session->responseContains('<input aria-labelledby="edit-likert-advanced-table-q1-likert-question" required="required" data-drupal-selector="edit-likert-advanced-q1" type="radio" id="edit-likert-advanced-q1--4" name="likert_advanced[q1]" value="N/A" class="form-radio" />'); $assert_session->responseContains('<label for="edit-likert-advanced-q1--4" class="option"><span class="webform-likert-label visually-hidden">Not applicable</span></label>'); @@ -60,6 +78,13 @@ public function testLikertElement() { $assert_session->responseContains('{custom error for Question 2}'); $assert_session->responseContains('{custom error for Question 3}'); + // Check likert with HTMl required error. + $this->drupalGet('/webform/test_element_likert'); + $this->submitForm([], 'Submit'); + $assert_session->responseContains('Question <strong>1</strong> field is required.'); + $assert_session->responseContains('Question <strong>2</strong> field is required.'); + $assert_session->responseContains('Question <strong>3</strong> field is required.'); + // Check likert processing. $this->drupalGet('/webform/test_element_likert'); $edit = [ @@ -69,6 +94,9 @@ public function testLikertElement() { 'likert_values[0]' => '0', 'likert_values[1]' => '1', 'likert_values[2]' => 'N/A', + 'likert_html[q1]' => '1', + 'likert_html[q2]' => '1', + 'likert_html[q3]' => '1', ]; $this->submitForm($edit, 'Submit'); $assert_session->responseContains("likert_default: @@ -87,10 +115,19 @@ public function testLikertElement() { q1: null q2: null q3: null +likert_html: + q1: '1' + q2: '1' + q3: '1' likert_values: - '0' - '1' - - N/A"); + - N/A +likert_trigger_required: 0 +likert_states_required: + q1: null + q2: null + q3: null"); } } diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementMediaFileTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementMediaFileTest.php index b4bfd57178c284b24a829f716ec126414431f730..90f8261438f631ee3e7d963801e2767a7dca0984 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementMediaFileTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementMediaFileTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\file\Entity\File; use Drupal\webform\Entity\WebformSubmission; @@ -64,7 +65,12 @@ public function testMediaFileUpload() { // Check image file link to modal. $assert_session->responseContains('/system/files/webform/test_element_media_file/_sid_/image_file_jpg_modal.jpg" class="js-webform-image-file-modal webform-image-file-modal">'); - $assert_session->responseContains('/system/files/styles/thumbnail/private/webform/test_element_media_file/_sid_/image_file_jpg_modal.jpg?itok='); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('/system/files/styles/thumbnail/private/webform/test_element_media_file/_sid_/image_file_jpg_modal.jpg.webp?itok='), + deprecatedCallable: fn() => $assert_session->responseContains('/system/files/styles/thumbnail/private/webform/test_element_media_file/_sid_/image_file_jpg_modal.jpg?itok='), + ); // Check video file preview. $assert_session->responseContains('<source src="' . $this->getAbsoluteUrl('/system/files/webform/test_element_media_file/_sid_/video_file_mp4.mp4') . '" type="video/mp4">'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementMultipleTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementMultipleTest.php index 03180dcffeb9039d91d93e01a0832a222d0d13a9..5cbbe1390302e6c79e886e1b83ee6060a8067c23 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementMultipleTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementMultipleTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; /** @@ -128,10 +129,20 @@ public function testMultiple() { // Check first tr. $assert_session->responseContains('<tr class="draggable" data-drupal-selector="edit-webform-multiple-default-items-0">'); - $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-textfield form-item-webform-multiple-default-items-0--item- js-form-item-webform-multiple-default-items-0--item- form-no-label">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item form-type-textfield js-form-type-textfield form-item-webform-multiple-default-items-0--item- js-form-item-webform-multiple-default-items-0--item- form-no-label">'), + deprecatedCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-textfield form-item-webform-multiple-default-items-0--item- js-form-item-webform-multiple-default-items-0--item- form-no-label">'), + ); $assert_session->responseContains('<label for="edit-webform-multiple-default-items-0-item-" class="visually-hidden">Item value</label>'); $assert_session->responseContains('<input data-drupal-selector="edit-webform-multiple-default-items-0-item-" type="text" id="edit-webform-multiple-default-items-0-item-" name="webform_multiple_default[items][0][_item_]" value="One" size="60" maxlength="128" placeholder="Enter value…" class="form-text" />'); - $assert_session->responseContains('<td class="webform-multiple-table--weight"><div class="webform-multiple-table--weight js-form-item form-item js-form-type-number form-item-webform-multiple-default-items-0-weight js-form-item-webform-multiple-default-items-0-weight form-no-label">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<td class="webform-multiple-table--weight"><div class="webform-multiple-table--weight js-form-item form-item form-type-number js-form-type-number form-item-webform-multiple-default-items-0-weight js-form-item-webform-multiple-default-items-0-weight form-no-label">'), + deprecatedCallable: fn() => $assert_session->responseContains('<td class="webform-multiple-table--weight"><div class="webform-multiple-table--weight js-form-item form-item js-form-type-number form-item-webform-multiple-default-items-0-weight js-form-item-webform-multiple-default-items-0-weight form-no-label">'), + ); $assert_session->responseContains('<label for="edit-webform-multiple-default-items-0-weight" class="visually-hidden">Item weight</label>'); $assert_session->responseContains('<input class="webform-multiple-sort-weight form-number" data-drupal-selector="edit-webform-multiple-default-items-0-weight" type="number" id="edit-webform-multiple-default-items-0-weight" name="webform_multiple_default[items][0][weight]" value="0" step="1" size="10" />'); $assert_session->responseContains('<td class="webform-multiple-table--operations webform-multiple-table--operations-two"><input data-drupal-selector="edit-webform-multiple-default-items-0-operations-add" formnovalidate="formnovalidate" type="image" id="edit-webform-multiple-default-items-0-operations-add" name="webform_multiple_default_table_add_0"'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementOtherTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementOtherTest.php index ebd34e32dcf339ecdd4c1ebb269c18c6615d499c..e6d121cd08963040071dfe531a9d3a0f87e17145 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementOtherTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementOtherTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; /** @@ -94,8 +95,12 @@ public function testBuildingOtherElements() { /* ********************************************************************** */ // Check form_item wrapper type. - $assert_session->responseContains('<div class="js-webform-select-other webform-select-other js-form-item form-item js-form-type-webform-select-other form-item-wrapper-other-form-element js-form-item-wrapper-other-form-element" id="edit-wrapper-other-form-element">'); - + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-webform-select-other webform-select-other js-form-item form-item form-type-webform-select-other js-form-type-webform-select-other form-item-wrapper-other-form-element js-form-item-wrapper-other-form-element" id="edit-wrapper-other-form-element">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-webform-select-other webform-select-other js-form-item form-item js-form-type-webform-select-other form-item-wrapper-other-form-element js-form-item-wrapper-other-form-element" id="edit-wrapper-other-form-element">'), + ); // Check container wrapper type. $assert_session->responseContains('<div data-drupal-selector="edit-wrapper-other-container" class="js-webform-select-other webform-select-other webform-select-other--wrapper fieldgroup form-composite js-form-wrapper form-wrapper" id="edit-wrapper-other-container">'); } @@ -188,7 +193,7 @@ public function testProcessingOtherElements() { 'select_other_advanced[other]' => 'X', ]; $this->submitForm($edit, 'Submit'); - $assert_session->responseContains('Other must be longer than <em class="placeholder">4</em> characters but is currently <em class="placeholder">1</em> characters long.'); + $assert_session->responseContains('Other must be at least <em class="placeholder">4</em> characters but is currently <em class="placeholder">1</em> characters long.'); // Check select other processing w/ other. $this->drupalGet('/webform/test_element_other'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementRadiosTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementRadiosTest.php index 4534a6cda62c19c651c3675c4325c654bba37645..da6f6df7ae5e9388e6d39b15cf4d33c981589cd0 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementRadiosTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementRadiosTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; + /** * Tests for webform element radios. * @@ -50,8 +52,12 @@ public function testElementRadios() { $assert_session->responseContains('<label class="webform-options-display-buttons-label option" for="edit-radios-buttons-description-one"><div class="webform-options-display-buttons-title">One</div><div class="webform-options-display-buttons-description description">This is a description</div></label>'); // Check options (custom) properties wrapper attributes. - $assert_session->responseContains('<div data-custom="custom wrapper data" style="border: red 1px solid" class="one-custom-wrapper-class js-form-item form-item js-form-type-radio form-item-radios-options-properties js-form-item-radios-options-properties">'); - + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div data-custom="custom wrapper data" style="border: red 1px solid" class="one-custom-wrapper-class js-form-item form-item form-type-radio js-form-type-radio form-item-radios-options-properties js-form-item-radios-options-properties">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div data-custom="custom wrapper data" style="border: red 1px solid" class="one-custom-wrapper-class js-form-item form-item js-form-type-radio form-item-radios-options-properties js-form-item-radios-options-properties">'), + ); // Check options (custom) properties label attributes. $assert_session->responseContains('<label data-custom="custom label data" style="border: blue 1px solid" class="one-custom-label-class option" for="edit-radios-options-properties-two">Two</label>'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementRangeTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementRangeTest.php index f75b904bf58e276929f83e41842f3936ffca1f79..91e2049f60b4ed1326e8bdabd1a7ab2ec93edbaf 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementRangeTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementRangeTest.php @@ -2,6 +2,8 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; + /** * Tests for range element. * @@ -40,12 +42,22 @@ public function testRating() { $assert_session->responseContains('<output style="background-color: yellow" for="range_output_below" data-display="below" data-field-prefix="$" data-field-suffix=".00"></output>'); // Check output left range element. - $assert_session->responseContains('<span class="field-prefix"><div class="js-form-item form-item js-form-type-number form-item-range-output-left__output js-form-item-range-output-left__output form-no-label">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<span class="field-prefix"><div class="js-form-item form-item form-type-number js-form-type-number form-item-range-output-left__output js-form-item-range-output-left__output form-no-label">'), + deprecatedCallable: fn() => $assert_session->responseContains('<span class="field-prefix"><div class="js-form-item form-item js-form-type-number form-item-range-output-left__output js-form-item-range-output-left__output form-no-label">'), + ); $assert_session->responseContains('<label for="range_output_left__output" class="visually-hidden">range_output_left</label>'); $assert_session->responseContains('<input style="background-color: yellow;width:6em" type="number" id="range_output_left__output" step="100" min="0" max="10000" class="form-number" />'); // Check output right range element. - $assert_session->responseContains('<span class="field-suffix"><span class="webform-range-output-delimiter"></span><div class="js-form-item form-item js-form-type-number form-item-range-output-disabled__output js-form-item-range-output-disabled__output form-no-label form-disabled">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<span class="field-suffix"><span class="webform-range-output-delimiter"></span><div class="js-form-item form-item form-type-number js-form-type-number form-item-range-output-disabled__output js-form-item-range-output-disabled__output form-no-label form-disabled">'), + deprecatedCallable: fn() => $assert_session->responseContains('<span class="field-suffix"><span class="webform-range-output-delimiter"></span><div class="js-form-item form-item js-form-type-number form-item-range-output-disabled__output js-form-item-range-output-disabled__output form-no-label form-disabled">'), + ); $assert_session->responseContains('<label for="range_output_right__output" class="visually-hidden">range_output_right</label>'); $assert_session->responseContains('<input style="width:4em" type="number" id="range_output_right__output" step="1" min="0" max="100" class="form-number" />'); diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementScaleTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementScaleTest.php index c3e2e32ee858a35dbb22b96660ed7de1fced313a..c769cbd9e67a944fef6c1e0b76cd7de1563bea96 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementScaleTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementScaleTest.php @@ -36,9 +36,9 @@ public function testRating() { // Check processing. $this->drupalGet('/webform/test_element_scale'); $edit = [ - 'scale' => 1, - 'scale_required' => 1, - 'scale_text' => 2, + 'scale' => '1', + 'scale_required' => '1', + 'scale_text' => '2', ]; $this->submitForm($edit, 'Submit'); $assert_session->responseContains("scale: '1' diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementSignatureTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementSignatureTest.php index 0cf48c9134c07c6adfbbbf4c2bc52e4051e4e475..f47923eafd67fa3124ee28c40484628bea428a95 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementSignatureTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementSignatureTest.php @@ -90,7 +90,7 @@ public function testSignature() { // Check public and private file access is denied. $this->drupalGet($private_file_url); - $assert_session->responseContains('Please login to access the uploaded file.'); + $assert_session->responseContains('Please log in to access the uploaded file.'); $assert_session->addressEquals('/user/login'); /* ********************************************************************** */ @@ -107,6 +107,12 @@ public function testSignature() { $image = file_get_contents(__DIR__ . '/../../../files/sample.png'); $this->assertSignature('data:image/png;base64,' . base64_encode($image), FALSE); + // Check that the temp signature files are deleted. + /** @var \Drupal\Core\File\FileSystemInterface $file_system */ + $file_system = \Drupal::service('file_system'); + $files = $file_system->scanDirectory($file_system->getTempDirectory(), '/^webform_signature_.*/'); + $this->assertEmpty($files); + /* ********************************************************************** */ // Delete. /* ********************************************************************** */ diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementTableTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementTableTest.php index 3cde798a9ded985ddde7418c2864156f54fd42bf..cdc92de4f5231be0264ffbfe81b12751ebf2134b 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementTableTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementTableTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Element; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; /** @@ -46,7 +47,12 @@ public function testTable() { $assert_session->responseContains('<table class="js-form-wrapper responsive-enabled" data-drupal-selector="edit-table" id="edit-table" data-striping="1">'); $assert_session->responseMatches('#<th>First Name</th>\s+<th>Last Name</th>\s+<th>Gender</th>#'); $assert_session->responseContains('<tr data-drupal-selector="edit-table-1">'); - $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-textfield form-item-table__1__first-name js-form-item-table__1__first-name form-no-label">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item form-type-textfield js-form-type-textfield form-item-table__1__first-name js-form-item-table__1__first-name form-no-label">'), + deprecatedCallable: fn() => $assert_session->responseContains('<td><div class="js-form-item form-item js-form-type-textfield form-item-table__1__first-name js-form-item-table__1__first-name form-no-label">'), + ); $assert_session->responseContains('<input data-drupal-selector="edit-table-1-first-name" type="text" id="edit-table-1-first-name" name="table__1__first_name" value="John" size="20" maxlength="255" class="form-text" />'); // Check webform table basic rendering. @@ -55,7 +61,12 @@ public function testTable() { $assert_session->responseContains('<input data-drupal-selector="edit-table-basic-01-first-name" type="text" id="edit-table-basic-01-first-name" name="table_basic_01_first_name" value="" size="60" maxlength="255" class="form-text" />'); // Check webform table advanced rendering. - $assert_session->responseContains('<table data-drupal-selector="edit-table-advanced" class="webform-table sticky-enabled responsive-enabled" id="edit-table-advanced" data-striping="1">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<table data-drupal-selector="edit-table-advanced" class="webform-table sticky-header responsive-enabled" id="edit-table-advanced" data-striping="1">'), + deprecatedCallable: fn() => $assert_session->responseContains('<table data-drupal-selector="edit-table-advanced" class="webform-table sticky-enabled responsive-enabled" id="edit-table-advanced" data-striping="1">'), + ); $assert_session->responseMatches('#<th width="50%">Composite</th>\s+<th width="50%">Nested</th>#'); // Check webform table states rendering. @@ -112,7 +123,12 @@ public function testTable() { $assert_session->responseContains('<section class="js-form-item form-item js-form-wrapper form-wrapper webform-section" id="test_element_table--table_advanced_01_container">'); // Check states table display. - $assert_session->responseMatches('<div class="webform-element webform-element-type-webform-table js-form-item form-item js-form-type-item form-item-table-states js-form-item-table-states" id="test_element_table--table_states">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseMatches('<div class="webform-element webform-element-type-webform-table js-form-item form-item form-type-item js-form-type-item form-item-table-states js-form-item-table-states" id="test_element_table--table_states">'), + deprecatedCallable: fn() => $assert_session->responseMatches('<div class="webform-element webform-element-type-webform-table js-form-item form-item js-form-type-item form-item-table-states js-form-item-table-states" id="test_element_table--table_states">'), + ); /* ********************************************************************** */ // User interface. diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementTelephoneTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementTelephoneTest.php index eea952843d4e305163e97c3055e3655474fd9c99..4ba3828f94420525e940eec3bf9917c37dcef090 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementTelephoneTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementTelephoneTest.php @@ -37,7 +37,7 @@ public function testTelephone() { // Check international tel. $assert_session->responseContains('<input class="js-webform-telephone-international webform-webform-telephone-international form-tel" data-drupal-selector="edit-tel-international" type="tel" id="edit-tel-international" name="tel_international" value="" size="30" maxlength="128" />'); - // Check international telephone valddation. + // Check international telephone validation. $assert_session->responseContains('<input data-drupal-selector="edit-tel-validation-e164" type="tel" id="edit-tel-validation-e164" name="tel_validation_e164" value="" size="30" maxlength="128" class="form-tel" />'); // Check USE telephone validation. diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementTest.php index 87f92774cbeab63374aa01aed8b4f58222a049a1..6c519a52ac074e88d82afb8dbe7c0f1fe4ff9da9 100644 --- a/web/modules/webform/tests/src/Functional/Element/WebformElementTest.php +++ b/web/modules/webform/tests/src/Functional/Element/WebformElementTest.php @@ -74,7 +74,7 @@ public function testWebform() { // Check submission access denied message is displayed. $this->drupalGet('/webform_test_element', ['query' => ['sid' => $sid]]); - $assert_session->responseContains("Please login to access this form."); + $assert_session->responseContains("Please log in to access this form."); // Login as root. $this->drupalLogin($this->rootUser); diff --git a/web/modules/webform/tests/src/Functional/Handler/WebformHandlerEmailAdvancedTest.php b/web/modules/webform/tests/src/Functional/Handler/WebformHandlerEmailAdvancedTest.php index e2fb3a579d31cdc5b15369e55552f1c09f5822fd..9545a27d2a63dd719f1dbc9833cd151a3ab288a4 100644 --- a/web/modules/webform/tests/src/Functional/Handler/WebformHandlerEmailAdvancedTest.php +++ b/web/modules/webform/tests/src/Functional/Handler/WebformHandlerEmailAdvancedTest.php @@ -130,7 +130,7 @@ public function testAdvancedEmailHandler() { // Drupal strip_tags() from mail subject. // @see \Drupal\Core\Mail\MailManager::doMail // @see http://cgit.drupalcode.org/drupal/tree/core/lib/Drupal/Core/Mail/MailManager.php#n285 - 'subject' => 'This has <removed>"special" \'chararacters\'', + 'subject' => 'This has <removed>"special" \'characters\'', 'message[value]' => '<p><em>Please enter a message.</em> Test that double "quotes" are not encoded.</p>', 'checkbox' => FALSE, ]; @@ -139,13 +139,13 @@ public function testAdvancedEmailHandler() { $sent_email = $this->getLastEmail(); // Check email subject with special characters. - $this->assertEquals($sent_email['subject'], 'This has "special" \'chararacters\''); + $this->assertEquals($sent_email['subject'], 'This has "special" \'characters\''); // Check email body is HTML. $this->assertStringContainsString('<b>First name</b><br />John<br /><br />', $sent_email['params']['body']); $this->assertStringContainsString('<b>Last name</b><br />Smith<br /><br />', $sent_email['params']['body']); $this->assertStringContainsString('<b>Email</b><br /><a href="mailto:from@example.com">from@example.com</a><br /><br />', $sent_email['params']['body']); - $this->assertStringContainsString('<b>Subject</b><br />This has <removed>"special" 'chararacters'<br /><br />', $sent_email['params']['body']); + $this->assertStringContainsString('<b>Subject</b><br />This has <removed>"special" 'characters'<br /><br />', $sent_email['params']['body']); $this->assertStringContainsString('<b>Message</b><br /><p><em>Please enter a message.</em> Test that double "quotes" are not encoded.</p><br /><br />', $sent_email['params']['body']); $this->assertStringContainsString('<p style="color:yellow"><em>Custom styled HTML markup</em></p>', $sent_email['params']['body']); $this->assertStringContainsString('<b>File</b><br />', $sent_email['params']['body']); @@ -214,7 +214,7 @@ public function testAdvancedEmailHandler() { $this->assertStringContainsString('<b>Optional</b><br />{Empty}<br /><br />', $sent_email['params']['body']); $this->assertStringContainsString('<b>Checkbox</b><br />No<br /><br />', $sent_email['params']['body']); - // Logut and use anonymous user account. + // Logout and use anonymous user account. $this->drupalLogout(); // Check that private is include in email because 'ignore_access' is TRUE. diff --git a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAccessDeniedTest.php b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAccessDeniedTest.php index 7570e27c3b3137eeb971a7953bd78cdf18454932..53e3b856bf47f88eac72cb64c29dcaa347ebd9c5 100644 --- a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAccessDeniedTest.php +++ b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAccessDeniedTest.php @@ -59,7 +59,7 @@ public function testWebformAccessDenied() { // Check form message is displayed and user is redirected to the login form. $this->drupalGet('/admin/structure/webform/manage/test_form_access_denied'); - $assert_session->responseContains('Please login to access <b>Test: Webform: Access Denied</b>.'); + $assert_session->responseContains('Please log in to access <b>Test: Webform: Access Denied</b>.'); $route_options = [ 'query' => [ 'destination' => $webform_edit_route_url->toString(), @@ -78,7 +78,7 @@ public function testWebformAccessDenied() { // Check default access denied page. $this->drupalGet('/admin/structure/webform/manage/test_form_access_denied'); $assert_session->responseContains('You are not authorized to access this page.'); - $assert_session->responseNotContains('Please login to access <b>Test: Webform: Access Denied</b>.'); + $assert_session->responseNotContains('Please log in to access <b>Test: Webform: Access Denied</b>.'); /* ********************************************************************** */ // Page. @@ -94,7 +94,7 @@ public function testWebformAccessDenied() { $this->drupalGet('/admin/structure/webform/manage/test_form_access_denied'); $assert_session->responseContains('<h1>Webform: Access denied</h1>'); $assert_session->responseContains('<div style="border: 1px solid red" class="webform-access-denied">'); - $assert_session->responseContains('Please login to access <b>Test: Webform: Access Denied</b>.'); + $assert_session->responseContains('Please log in to access <b>Test: Webform: Access Denied</b>.'); /* ********************************************************************** */ // Message via a block. @@ -112,7 +112,7 @@ public function testWebformAccessDenied() { // Check block does not displays access denied message. $this->drupalGet('<front>'); $assert_session->responseNotContains('<div style="border: 1px solid red" class="webform-access-denied">'); - $assert_session->responseNotContains('Please login to access <b>Test: Webform: Access Denied</b>.'); + $assert_session->responseNotContains('Please log in to access <b>Test: Webform: Access Denied</b>.'); // Set access denied to display a message. $webform->setSetting('form_access_denied', WebformInterface::ACCESS_DENIED_MESSAGE); @@ -121,7 +121,7 @@ public function testWebformAccessDenied() { // Check block displays access denied message. $this->drupalGet('<front>'); $assert_session->responseContains('<div style="border: 1px solid red" class="webform-access-denied">'); - $assert_session->responseContains('Please login to access <b>Test: Webform: Access Denied</b>.'); + $assert_session->responseContains('Please log in to access <b>Test: Webform: Access Denied</b>.'); // Login. $this->drupalLogin($this->rootUser); @@ -129,7 +129,7 @@ public function testWebformAccessDenied() { // Check block displays wth webform. $this->drupalGet('<front>'); $assert_session->responseNotContains('<div class="webform-access-denied">'); - $assert_session->responseNotContains('Please login to access <b>Test: Webform: Access Denied</b>.'); + $assert_session->responseNotContains('Please log in to access <b>Test: Webform: Access Denied</b>.'); $assert_session->responseContains('id="webform-submission-test-form-access-denied-user-1-add-form"'); } @@ -151,7 +151,7 @@ public function testWebformSubmissionAccessDenied() { // Check submission message is displayed. $this->drupalGet("admin/structure/webform/manage/test_form_access_denied/submission/$sid"); - $assert_session->responseContains("Please login to access <b>Test: Webform: Access Denied: Submission #$sid</b>."); + $assert_session->responseContains("Please log in to access <b>Test: Webform: Access Denied: Submission #$sid</b>."); /* ********************************************************************** */ // Default. @@ -164,7 +164,7 @@ public function testWebformSubmissionAccessDenied() { // Check default access denied page. $this->drupalGet("admin/structure/webform/manage/test_form_access_denied/submission/$sid"); $assert_session->responseContains('You are not authorized to access this page.'); - $assert_session->responseNotContains("Please login to access <b>Test: Webform: Access Denied: Submission #$sid</b>."); + $assert_session->responseNotContains("Please log in to access <b>Test: Webform: Access Denied: Submission #$sid</b>."); /* ********************************************************************** */ // Page. @@ -181,7 +181,7 @@ public function testWebformSubmissionAccessDenied() { $assert_session->responseNotContains('You are not authorized to access this page.'); $assert_session->responseContains('<h1>Webform submission: Access denied</h1>'); $assert_session->responseContains('<div style="border: 1px solid red" class="webform-submission-access-denied">'); - $assert_session->responseContains('Please login to access <b>Test: Webform: Access Denied: Submission #' . $sid . '</b>.'); + $assert_session->responseContains('Please log in to access <b>Test: Webform: Access Denied: Submission #' . $sid . '</b>.'); } } diff --git a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAssetsTest.php b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAssetsTest.php index 2ba954ce294442cf68f698a382e2f51fa6c073c6..c540ef9e7622beb946b46a7d3b9d1608bd2d87e9 100644 --- a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAssetsTest.php +++ b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAssetsTest.php @@ -28,23 +28,23 @@ public function testAssets() { $webform_assets = Webform::load('test_form_assets'); // Check that 404 status is returned to pages without any CSS or JS. - $this->drupalGet('/webform/javascript/contact'); + $this->drupalGet('/webform/javascript/contact/custom.js'); $assert_session->statusCodeEquals(404); - $this->drupalGet('/webform/css/contact'); + $this->drupalGet('/webform/css/contact/custom.css'); $assert_session->statusCodeEquals(404); // Check has CSS (href) and JavaScript (src). $this->drupalGet('/webform/test_form_assets'); - $assert_session->responseContains('href="' . base_path() . 'webform/css/test_form_assets?'); - $assert_session->responseContains('src="' . base_path() . 'webform/javascript/test_form_assets?'); + $assert_session->responseContains('href="' . base_path() . 'webform/css/test_form_assets/custom.css?'); + $assert_session->responseContains('src="' . base_path() . 'webform/javascript/test_form_assets/custom.js?'); // Clear CSS (href) and JavaScript (src). $webform_assets->setCss('')->setJavaScript('')->save(); // Check has no CSS (href) and JavaScript (src). $this->drupalGet('/webform/test_form_assets'); - $assert_session->responseNotContains('href="' . base_path() . 'webform/css/test_form_assets?'); - $assert_session->responseNotContains('src="' . base_path() . 'webform/javascript/test_form_assets?'); + $assert_session->responseNotContains('href="' . base_path() . 'webform/css/test_form_assets/custom.css?'); + $assert_session->responseNotContains('src="' . base_path() . 'webform/javascript/test_form_assets/custom.js?'); // Add global CSS and JS on all webforms. \Drupal::configFactory()->getEditable('webform.settings') @@ -54,13 +54,13 @@ public function testAssets() { // Check has global CSS (href) and JavaScript (src). $this->drupalGet('/webform/test_form_assets'); - $assert_session->responseContains('href="' . base_path() . 'webform/css/test_form_assets?'); - $assert_session->responseContains('src="' . base_path() . 'webform/javascript/test_form_assets?'); + $assert_session->responseContains('href="' . base_path() . 'webform/css/test_form_assets/custom.css?'); + $assert_session->responseContains('src="' . base_path() . 'webform/javascript/test_form_assets/custom.js?'); // Check that 200 status is returned to pages without any CSS or JS. - $this->drupalGet('/webform/javascript/contact'); + $this->drupalGet('/webform/javascript/contact/custom.js'); $assert_session->statusCodeEquals(200); - $this->drupalGet('/webform/css/contact'); + $this->drupalGet('/webform/css/contact/custom.css'); $assert_session->statusCodeEquals(200); } diff --git a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAutofillTest.php b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAutofillTest.php index 70a37009d90f118b0ab57a36d6d4e32a89e5c6bc..8c424f12cc8e3c294b916a0178bf4cb9d2ed992f 100644 --- a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAutofillTest.php +++ b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsAutofillTest.php @@ -124,7 +124,7 @@ public function testAutofill() { $assert_session->fieldValueEquals('textfield_autofill', '{textfield_autofill}'); $assert_session->responseNotContains('This submission has been autofilled with your previous submission.'); - // Set custom automfill message. + // Set custom autofill message. $webform ->setSetting('autofill_message', '{autofill_message}') ->save(); diff --git a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPrepopulateTest.php b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPrepopulateTest.php index 9aa03730cc0ebfa0a398562cc95c9cc21025d3e2..70ad7f730898f6f4e15e054773c58140f84e6847 100644 --- a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPrepopulateTest.php +++ b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPrepopulateTest.php @@ -141,7 +141,7 @@ public function testPrepopulate() { $this->drupalLogin($this->rootUser); - // Check query string parameters to be transfered from canonical to test. + // Check query string parameters to be transferred from canonical to test. // @see webform_menu_local_tasks_alter $route_options = ['query' => ['source_entity_type' => 'webform', 'source_entity_id' => 'contact']]; $this->drupalGet('/webform/test_form_prepopulate', $route_options); diff --git a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPreviewTest.php b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPreviewTest.php index c76d6f86b0302be806a7a0b336bb728059d2a4fa..c8d88a07fb0c596f0999b6d16d7656de69f14607 100644 --- a/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPreviewTest.php +++ b/web/modules/webform/tests/src/Functional/Settings/WebformSettingsPreviewTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Settings; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Tests\webform\Functional\WebformBrowserTestBase; use Drupal\webform\Entity\Webform; @@ -64,14 +65,29 @@ public function testPreview() { $assert_session->responseContains('<div class="webform-preview js-form-wrapper form-wrapper" data-drupal-selector="edit-preview" id="edit-preview">'); $assert_session->responseContains('<div data-drupal-selector="edit-submission" class="webform-submission-data webform-submission-data--webform-test-form-preview webform-submission-data--view-mode-preview">'); $assert_session->responseContains('<fieldset class="format-attributes-class webform-container webform-container-type-fieldset js-form-item form-item js-form-wrapper form-wrapper" id="test_form_preview--fieldset">'); - $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-textfield js-form-item form-item js-form-type-item form-item-name js-form-item-name" id="test_form_preview--name">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-textfield js-form-item form-item form-type-item js-form-type-item form-item-name js-form-item-name" id="test_form_preview--name">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-textfield js-form-item form-item js-form-type-item form-item-name js-form-item-name" id="test_form_preview--name">'), + ); $assert_session->responseContains('<label>Name</label>' . PHP_EOL . ' test'); $assert_session->responseContains('<section class="format-attributes-class js-form-item form-item js-form-wrapper form-wrapper webform-section" id="test_form_preview--container">'); - $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-email js-form-item form-item js-form-type-item form-item-email js-form-item-email" id="test_form_preview--email">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-email js-form-item form-item form-type-item js-form-type-item form-item-email js-form-item-email" id="test_form_preview--email">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-email js-form-item form-item js-form-type-item form-item-email js-form-item-email" id="test_form_preview--email">'), + ); $assert_session->responseContains('<label>Email</label>' . PHP_EOL . ' <a href="mailto:example@example.com">example@example.com</a>'); - $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-checkbox js-form-item form-item js-form-type-item form-item-checkbox js-form-item-checkbox" id="test_form_preview--checkbox">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-checkbox js-form-item form-item form-type-item js-form-type-item form-item-checkbox js-form-item-checkbox" id="test_form_preview--checkbox">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-checkbox js-form-item form-item js-form-type-item form-item-checkbox js-form-item-checkbox" id="test_form_preview--checkbox">'), + ); $assert_session->responseContains('<section class="format-attributes-class js-form-item form-item js-form-wrapper form-wrapper webform-section" id="test_form_preview--section">'); $assert_session->responseContains('<label>Checkbox</label>' . PHP_EOL . ' Yes'); $assert_session->responseContains('<div class="webform-preview js-form-wrapper form-wrapper" data-drupal-selector="edit-preview" id="edit-preview">'); @@ -120,7 +136,12 @@ public function testPreview() { $edit = ['name' => '', 'email' => '', 'checkbox' => FALSE]; $this->submitForm($edit, 'Preview'); $assert_session->responseContains('<label>Name</label>' . PHP_EOL . ' {Empty}'); - $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-email js-form-item form-item js-form-type-item form-item-email js-form-item-email" id="test_form_preview--email">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-email js-form-item form-item form-type-item js-form-type-item form-item-email js-form-item-email" id="test_form_preview--email">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="format-attributes-class webform-element webform-element-type-email js-form-item form-item js-form-type-item form-item-email js-form-item-email" id="test_form_preview--email">'), + ); $assert_session->responseContains('<label>Email</label>' . PHP_EOL . ' {Empty}'); $assert_session->responseContains('<label>Checkbox</label>' . PHP_EOL . ' No'); diff --git a/web/modules/webform/tests/src/Functional/States/WebformStatesHiddenTest.php b/web/modules/webform/tests/src/Functional/States/WebformStatesHiddenTest.php index a90520d1bdaa14220700cb49f9ad31de28fe2113..023d04580d255d54c59d570468f26e698099d7c0 100644 --- a/web/modules/webform/tests/src/Functional/States/WebformStatesHiddenTest.php +++ b/web/modules/webform/tests/src/Functional/States/WebformStatesHiddenTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\States; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Tests\webform\Functional\WebformBrowserTestBase; /** @@ -44,13 +45,23 @@ public function testFormStatesHidden() { $this->drupalGet('/webform/test_states_server_hidden'); // Text field. - $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-textfield form-item-dependent-textfield js-form-item-dependent-textfield">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item form-type-textfield js-form-type-textfield form-item-dependent-textfield js-form-item-dependent-textfield">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-textfield form-item-dependent-textfield js-form-item-dependent-textfield">'), + ); // Text field multiple. $assert_session->responseContains('<div class="js-webform-states-hidden js-form-wrapper" data-drupal-states="{"visible":{".webform-submission-test-states-server-hidden-add-form :input[name=\u0022trigger_checkbox\u0022]":{"checked":true}}}"><div id="dependent_textfield_multiple_table">'); // Checkbox. - $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-checkbox form-item-dependent-checkbox js-form-item-dependent-checkbox">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item form-type-checkbox js-form-type-checkbox form-item-dependent-checkbox js-form-item-dependent-checkbox">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-checkbox form-item-dependent-checkbox js-form-item-dependent-checkbox">'), + ); // Radios. $assert_session->responseContains('<fieldset data-drupal-selector="edit-dependent-radios" class="js-webform-states-hidden radios--wrapper fieldgroup form-composite webform-composite-visible-title js-webform-type-radios webform-type-radios js-form-item form-item js-form-wrapper form-wrapper" id="edit-dependent-radios--wrapper" data-drupal-states="{"visible":{".webform-submission-test-states-server-hidden-add-form :input[name=\u0022trigger_checkbox\u0022]":{"checked":true}}}">'); @@ -65,7 +76,12 @@ public function testFormStatesHidden() { $assert_session->responseContains('<div class="js-webform-states-hidden js-form-wrapper" data-drupal-states="{"visible":{".webform-submission-test-states-server-hidden-add-form :input[name=\u0022trigger_checkbox\u0022]":{"checked":true}}}"><fieldset data-drupal-selector="edit-dependent-address" class="webform-address--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-address webform-type-webform-address js-form-item form-item js-form-wrapper form-wrapper" id="edit-dependent-address--wrapper">'); // Table select sort. - $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-webform-tableselect-sort form-item-dependent-tableselect-sort js-form-item-dependent-tableselect-sort form-no-label">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item form-type-webform-tableselect-sort js-form-type-webform-tableselect-sort form-item-dependent-tableselect-sort js-form-item-dependent-tableselect-sort form-no-label">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="js-webform-states-hidden js-form-item form-item js-form-type-webform-tableselect-sort form-item-dependent-tableselect-sort js-form-item-dependent-tableselect-sort form-no-label">'), + ); // Details. $assert_session->responseContains('<details data-webform-states-no-clear data-webform-key="dependent_details" class="js-webform-states-hidden js-form-wrapper form-wrapper" data-drupal-selector="edit-dependent-details" id="edit-dependent-details" data-drupal-states="{"visible":{".webform-submission-test-states-server-hidden-add-form :input[name=\u0022trigger_checkbox\u0022]":{"checked":true}}}">'); diff --git a/web/modules/webform/tests/src/Functional/WebformBlockCacheTest.php b/web/modules/webform/tests/src/Functional/WebformBlockCacheTest.php index 8a7643b19b1ad3026c3ec0b793392833be5bf5ff..f999edcca1ee59f7687c65b14d037ef36c403092 100644 --- a/web/modules/webform/tests/src/Functional/WebformBlockCacheTest.php +++ b/web/modules/webform/tests/src/Functional/WebformBlockCacheTest.php @@ -10,7 +10,7 @@ * * These tests proof that the webform block which * renders the webform as a block provides the correct - * cache tags / cache contexts so that cachability works. + * cache tags / cache contexts so that cacheability works. * * @group webform_browser */ diff --git a/web/modules/webform/tests/src/Functional/WebformEntityTranslationTest.php b/web/modules/webform/tests/src/Functional/WebformEntityTranslationTest.php index fa5ef381cfb8b80303f86b1ba1a17e7fae60d096..29263344e301824724ad64edf220c8d817376af4 100644 --- a/web/modules/webform/tests/src/Functional/WebformEntityTranslationTest.php +++ b/web/modules/webform/tests/src/Functional/WebformEntityTranslationTest.php @@ -90,10 +90,10 @@ public function testWebformTranslate() { // Check translations. $this->drupalGet('/admin/structure/webform/manage/test_translation/translate'); - $assert_session->responseContains('<a href="' . base_path() . 'webform/test_translation"><strong>English (original)</strong></a>'); - $assert_session->responseContains('<a href="' . base_path() . 'es/webform/test_translation" hreflang="es">Spanish</a>'); - $assert_session->responseNotContains('<a href="' . base_path() . 'fr/webform/test_translation" hreflang="fr">French</a>'); - $assert_session->responseContains('<a href="' . base_path() . 'admin/structure/webform/manage/test_translation/translate/es/edit">Edit</a>'); + $assert_session->linkByHrefExists('/webform/test_translation'); + $assert_session->linkByHrefExists('/es/webform/test_translation'); + $assert_session->linkByHrefNotExists('/fr/webform/test_translation'); + $assert_session->linkByHrefExists('/admin/structure/webform/manage/test_translation/translate/es/edit'); // Check Spanish translation. $this->drupalGet('/admin/structure/webform/manage/test_translation/translate/es/edit'); diff --git a/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php b/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php index 7910f9202cb60f89143a8f54520e228eb472f3ed..3666709c8b3ab3185e9aad86c3d9d75ed53a1442 100644 --- a/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php +++ b/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; use Drupal\webform\Utility\WebformElementHelper; use Drupal\webform\WebformSubmissionForm; @@ -48,6 +49,12 @@ public function testApi() { $this->assertEquals($webform_submission->id(), $this->getLastSubmissionId($contact_webform)); // Check validating a simple webform. + $email_validation_error = DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => 'The email address <em class="placeholder">invalid</em> is not valid. Use the format user@example.com.', + deprecatedCallable: fn() => 'The email address <em class="placeholder">invalid</em> is not valid.', + ); $values = [ 'webform_id' => 'contact', 'data' => [ @@ -58,7 +65,7 @@ public function testApi() { WebformElementHelper::convertRenderMarkupToStrings($errors); $this->assertEquals($errors, [ 'name' => 'Your Name field is required.', - 'email' => 'The email address <em class="placeholder">invalid</em> is not valid.', + 'email' => $email_validation_error, 'subject' => 'Subject field is required.', 'message' => 'Message field is required.', ]); @@ -121,7 +128,7 @@ public function testApi() { WebformElementHelper::convertRenderMarkupToStrings($errors); // $this->debug($errors); $this->assertEquals($errors, [ - 'email' => 'The email address <em class="placeholder">invalid</em> is not valid.', + 'email' => $email_validation_error, ]); // Check validating a multi-step form with invalid #options. diff --git a/web/modules/webform/tests/src/Functional/WebformSubmissionListBuilderCustomizeTest.php b/web/modules/webform/tests/src/Functional/WebformSubmissionListBuilderCustomizeTest.php index 52af22894cb77545ee0c9196779ae91106bdf497..ec7250f5624d9007fd8f7bf6541efc8801927d88 100644 --- a/web/modules/webform/tests/src/Functional/WebformSubmissionListBuilderCustomizeTest.php +++ b/web/modules/webform/tests/src/Functional/WebformSubmissionListBuilderCustomizeTest.php @@ -339,7 +339,7 @@ public function testCustomize() { $this->drupalLogin($own_submission_user); // Check view own submissions. - $this->drupalget('/webform/test_submissions/submissions'); + $this->drupalGet('/webform/test_submissions/submissions'); $assert_session->responseContains('<th specifier="serial">'); $assert_session->responseContains('<th specifier="created" class="priority-medium is-active" aria-sort="descending">'); $assert_session->responseContains('<th specifier="remote_addr" class="priority-low">'); @@ -349,7 +349,7 @@ public function testCustomize() { ->save(); // Check view own submissions only include first name and last name. - $this->drupalget('/webform/test_submissions/submissions'); + $this->drupalGet('/webform/test_submissions/submissions'); $assert_session->responseNotContains('<th specifier="serial">'); $assert_session->responseNotContains('<th specifier="created" class="priority-medium is-active" aria-sort="descending">'); $assert_session->responseNotContains('<th specifier="remote_addr" class="priority-low">'); diff --git a/web/modules/webform/tests/src/Functional/WebformSubmissionViewTest.php b/web/modules/webform/tests/src/Functional/WebformSubmissionViewTest.php index 5fad7a2c49fc4345d16a9866232f3a5e47aaa507..6388205591766dd63040e826ec36486ea690ba84 100644 --- a/web/modules/webform/tests/src/Functional/WebformSubmissionViewTest.php +++ b/web/modules/webform/tests/src/Functional/WebformSubmissionViewTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\user\Entity\User; use Drupal\webform\Entity\Webform; use Drupal\webform\Entity\WebformSubmission; @@ -91,7 +92,12 @@ public function testView() { } // Check details element. - $assert_session->responseContains('<summary role="button" aria-controls="test_element--standard_elements" aria-expanded="true" aria-pressed="true">Standard Elements</summary>'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="test_element--standard_elements" aria-expanded="true">Standard Elements</summary>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="test_element--standard_elements" aria-expanded="true" aria-pressed="true">Standard Elements</summary>'), + ); // Check empty details element removed. $assert_session->responseNotContains('Markup Elements'); diff --git a/web/modules/webform/tests/src/Functional/Wizard/WebformWizardAdvancedTest.php b/web/modules/webform/tests/src/Functional/Wizard/WebformWizardAdvancedTest.php index 62659265656e2c0c457953811fa551bc245897c6..0fc71b461067eadbc757686413ba8e35ea6a5861 100644 --- a/web/modules/webform/tests/src/Functional/Wizard/WebformWizardAdvancedTest.php +++ b/web/modules/webform/tests/src/Functional/Wizard/WebformWizardAdvancedTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Wizard; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\Core\Serialization\Yaml; use Drupal\webform\Entity\Webform; use Drupal\webform\WebformInterface; @@ -155,7 +156,12 @@ public function testAdvancedWizard() { $assert_session->responseContains('<a href="mailto:janesmith@example.com">janesmith@example.com</a>'); $assert_session->responseContains('<label>Phone</label>'); $assert_session->responseContains('<a href="tel:111-111-1111">111-111-1111</a>'); - $assert_session->responseContains('<div class="webform-element webform-element-type-textarea js-form-item form-item js-form-type-item form-item-comments js-form-item-comments form-no-label" id="test_form_wizard_advanced--comments">'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.2', + currentCallable: fn() => $assert_session->responseContains('<div class="webform-element webform-element-type-textarea js-form-item form-item form-type-item js-form-type-item form-item-comments js-form-item-comments form-no-label" id="test_form_wizard_advanced--comments">'), + deprecatedCallable: fn() => $assert_session->responseContains('<div class="webform-element webform-element-type-textarea js-form-item form-item js-form-type-item form-item-comments js-form-item-comments form-no-label" id="test_form_wizard_advanced--comments">'), + ); $assert_session->responseContains('This is working fine.'); // Submit the webform. diff --git a/web/modules/webform/tests/src/Functional/Wizard/WebformWizardBasicTest.php b/web/modules/webform/tests/src/Functional/Wizard/WebformWizardBasicTest.php index 89b144d69040e1cce4179bc33badf050d8c1f675..9e0df078236b05a6eaa0d10614cf8a1b88a37fb7 100644 --- a/web/modules/webform/tests/src/Functional/Wizard/WebformWizardBasicTest.php +++ b/web/modules/webform/tests/src/Functional/Wizard/WebformWizardBasicTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\webform\Functional\Wizard; +use Drupal\Component\Utility\DeprecationHelper; use Drupal\webform\Entity\Webform; /** @@ -47,8 +48,18 @@ public function testBasicWizard() { $assert_session->statusCodeEquals(200); // Check that page 1 and 2 are displayed. - $assert_session->responseContains('<summary role="button" aria-controls="edit-page-1" aria-expanded="false" aria-pressed="false">Page 1</summary>'); - $assert_session->responseContains('<summary role="button" aria-controls="edit-page-2" aria-expanded="false" aria-pressed="false">Page 2</summary>'); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-page-1" aria-expanded="false">Page 1</summary>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-page-1" aria-expanded="false" aria-pressed="false">Page 1</summary>'), + ); + DeprecationHelper::backwardsCompatibleCall( + currentVersion: \Drupal::VERSION, + deprecatedVersion: '10.3', + currentCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-page-2" aria-expanded="false">Page 2</summary>'), + deprecatedCallable: fn() => $assert_session->responseContains('<summary role="button" aria-controls="edit-page-2" aria-expanded="false" aria-pressed="false">Page 2</summary>'), + ); // Create a contact form submission. $contact_webform = Webform::load('contact'); diff --git a/web/modules/webform/tests/src/Traits/WebformBrowserTestTrait.php b/web/modules/webform/tests/src/Traits/WebformBrowserTestTrait.php index c05167322b018ccd9cfbe1d1c9521404c0bbe1e3..210fd02d2f690027b487db18a90ea589686d9251 100644 --- a/web/modules/webform/tests/src/Traits/WebformBrowserTestTrait.php +++ b/web/modules/webform/tests/src/Traits/WebformBrowserTestTrait.php @@ -341,7 +341,7 @@ protected function getWebformSubmitButtonLabel(WebformInterface $webform, $submi return $actions_element['#submit__label']; } - return t('Submit'); + return 'Submit'; } /** diff --git a/web/modules/webform/tests/src/Unit/WebformEntityAccessControlHandlerTest.php b/web/modules/webform/tests/src/Unit/WebformEntityAccessControlHandlerTest.php index bb59b1aee0b9fd9ff8076a21fa7b90d463f4f82b..0e421c8aa49a81f83d25532e474fa88d9313c13f 100644 --- a/web/modules/webform/tests/src/Unit/WebformEntityAccessControlHandlerTest.php +++ b/web/modules/webform/tests/src/Unit/WebformEntityAccessControlHandlerTest.php @@ -587,7 +587,7 @@ public function providerCheckAccess() { $tests[] = [ 'duplicate', [ - 'permisssions' => ['create webform', 'edit own webform'], + 'permissions' => ['create webform', 'edit own webform'], 'account_is_webform_owner' => FALSE, ], [ diff --git a/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml b/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml index 6b01b209e7c000e34f3a9641e6c7faf66dd8030f..d81632039a20175c706bf950b8671146ac42e78c 100644 --- a/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml +++ b/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml @@ -1,11 +1,11 @@ -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 type: theme base theme: olivero name: 'Webform Olivero test' description: 'Support theme for webform Olivero integration testing.' package: 'Webform Testing' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/third_party_settings/webform.antibot.inc b/web/modules/webform/third_party_settings/webform.antibot.inc index 6a4279ab892ea313e00a090f77ecf952910a8be5..31ea355349ffe27edc65504f4f6ea074191f846c 100644 --- a/web/modules/webform/third_party_settings/webform.antibot.inc +++ b/web/modules/webform/third_party_settings/webform.antibot.inc @@ -33,7 +33,7 @@ function _webform_antibot_enabled() { /** @var \Drupal\Core\Path\PathMatcherInterface $path_matcher */ $path_matcher = \Drupal::service('path.matcher'); $form_ids = \Drupal::config('antibot.settings')->get('form_ids') ?? []; - return $path_matcher->matchPath('webform_submission_asdas', implode("\n", $form_ids)); + return $path_matcher->matchPath('webform_submission_', implode("\n", $form_ids)); } /** diff --git a/web/modules/webform/webform.api.php b/web/modules/webform/webform.api.php index b42ee642d97afe07d527f9e20c9eb8bfc966f095..d616741f42d062f872472b0dc085b9c04cb1bb3f 100644 --- a/web/modules/webform/webform.api.php +++ b/web/modules/webform/webform.api.php @@ -99,7 +99,7 @@ function hook_webform_element_translatable_properties_alter(array &$properties, * @ingroup form_api */ function hook_webform_element_configuration_form_alter(array &$form, \Drupal\Core\Form\FormStateInterface $form_state) { - /** @var Drupal\webform_ui\Form\WebformUiElementEditForm $form_object */ + /** @var \Drupal\webform_ui\Form\WebformUiElementEditForm $form_object */ $form_object = $form_state->getFormObject(); $element_plugin = $form_object->getWebformElementPlugin(); diff --git a/web/modules/webform/webform.info.yml b/web/modules/webform/webform.info.yml index ca5cd96649841ca8749d70db90f80c741b54a74e..2e7a277686e333d4711495742e28c0ef7972541a 100644 --- a/web/modules/webform/webform.info.yml +++ b/web/modules/webform/webform.info.yml @@ -2,7 +2,7 @@ name: Webform type: module description: 'Enables the creation of webforms and questionnaires.' package: Webform -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.1 configure: entity.webform.collection php: 8.1 dependencies: @@ -10,7 +10,7 @@ dependencies: - 'drupal:filter' - 'drupal:user' -# Information added by Drupal.org packaging script on 2024-06-25 -version: '6.2.3' +# Information added by Drupal.org packaging script on 2024-07-19 +version: '6.2.7' project: 'webform' -datestamp: 1719330030 +datestamp: 1721425240 diff --git a/web/modules/webform/webform.module b/web/modules/webform/webform.module index b31328157d4414ddbd24125f1a3dce0fd1e8ae74..363e8f52eee2deffbbbe2ab21164139b858cf41b 100644 --- a/web/modules/webform/webform.module +++ b/web/modules/webform/webform.module @@ -15,6 +15,7 @@ use Drupal\Core\Render\Markup; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Session\AccountInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; use Drupal\file\FileInterface; use Drupal\webform\Entity\Webform; @@ -264,7 +265,7 @@ function webform_menu_local_tasks_alter(&$data, $route_name, RefinableCacheableD if (strpos($route_name, 'entity.webform_submission.devel_') === 0 || $route_name === 'entity.webform_submission.token_devel') { foreach ($data['tabs'] as $tab_level) { foreach ($tab_level as $tab) { - /** @var Drupal\Core\Url $url */ + /** @var \Drupal\Core\Url $url */ $url = $tab['#link']['url']; $tab_route_name = $url->getRouteName(); $tab_route_parameters = $url->getRouteParameters(); @@ -953,6 +954,16 @@ function webform_webform_access_rules() { ]; } +/** + * Implements hook_field_info_alter(). + */ +function webform_field_info_alter(&$info) { + // @todo Remove once Drupal 10.2.x is only supported. + if (floatval(\Drupal::VERSION) < 10.2) { + $info['webform']['category'] = new TranslatableMarkup("Reference"); + } +} + /* ************************************************************************** */ // Devel generate info hooks. /* ************************************************************************** */ diff --git a/web/modules/webform/webform.routing.yml b/web/modules/webform/webform.routing.yml index 103fc1bd5825c85056a15e028dd5181971310a4a..f8b62e508b73bb6c7ebc8c59be5480d44eee4ceb 100644 --- a/web/modules/webform/webform.routing.yml +++ b/web/modules/webform/webform.routing.yml @@ -64,6 +64,14 @@ webform.config.advanced: requirements: _permission: 'administer webform' +webform.config.repair: + path: '/admin/structure/webform/config/repair' + defaults: + _form: '\Drupal\webform\Form\AdminConfig\WebformAdminConfigRepairForm' + _title: 'Webforms: Repair webform configuration' + requirements: + _permission: 'administer webform' + # Add-ons webform.addons: @@ -134,14 +142,14 @@ entity.webform.access_denied: _access: 'TRUE' entity.webform.assets.javascript: - path: '/webform/javascript/{webform}' + path: '/webform/javascript/{webform}/custom.js' defaults: _controller: '\Drupal\webform\Controller\WebformEntityController::javascript' requirements: _entity_access: 'webform.view' entity.webform.assets.css: - path: '/webform/css/{webform}' + path: '/webform/css/{webform}/custom.css' defaults: _controller: '\Drupal\webform\Controller\WebformEntityController::css' requirements: diff --git a/web/modules/webform/webform.tokens.inc b/web/modules/webform/webform.tokens.inc index d30f880e8aa897e1ee1d3e9af0a1baf781e90f23..9ef58c1dbe2a791acab4aee19b94d0fb19dcfa37 100644 --- a/web/modules/webform/webform.tokens.inc +++ b/web/modules/webform/webform.tokens.inc @@ -22,6 +22,7 @@ use Drupal\webform\Utility\WebformDateHelper; use Drupal\webform\Utility\WebformHtmlHelper; use Drupal\webform\Utility\WebformLogicHelper; +use Drupal\webform\Utility\WebformUserHelper; use Drupal\webform\WebformInterface; use Drupal\webform\WebformSubmissionInterface; @@ -416,7 +417,7 @@ function webform_token_info() { ]; $webform_role = []; - $role_names = array_map('\Drupal\Component\Utility\Html::escape', user_role_names(TRUE)); + $role_names = array_map('\Drupal\Component\Utility\Html::escape', WebformUserHelper::getRoleNames(TRUE)); if (!in_array('authenticated', $roles)) { $role_names = array_intersect_key($role_names, array_combine($roles, $roles)); }