diff --git a/composer.json b/composer.json index 997c43fd1c24a04b0cde6f0267b0fb8adf83186a..4e8e903e3843883784db8f8476a7291575a00fb5 100644 --- a/composer.json +++ b/composer.json @@ -107,7 +107,7 @@ "drupal/core-recommended": "9.5.11", "drupal/crop": "2.3", "drupal/ctools": "3.14", - "drupal/decorative_image_widget": "1.0", + "drupal/decorative_image_widget": "^1.0", "drupal/dropzonejs": "2.8", "drupal/editor_advanced_link": "2.2.4", "drupal/embed": "1.6", @@ -278,9 +278,6 @@ "drupal/addtocalendar": { "UTC Time Adjustment": "patches/utc-time-adjustment.patch" }, - "drupal/decorative_image_widget": { - "3383305": "https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch" - }, "drupal/entity_embed": { "3077225": "https://www.drupal.org/files/issues/2019-12-11/3077225-10.reduce-invalid-config-logs.patch" }, diff --git a/composer.lock b/composer.lock index 13686b244a677140bb0a2a2a6cb4d3722d059466..91f05b24059ebc4b8eed0d21f3dfc3e574a5c7cd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "104ad135cd2c808452366057a8c99003", + "content-hash": "fa23752cf2e7b6427ecb75714646b0b3", "packages": [ { "name": "asm89/stack-cors", @@ -2749,17 +2749,17 @@ }, { "name": "drupal/decorative_image_widget", - "version": "1.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/decorative_image_widget.git", - "reference": "1.0.0" + "reference": "1.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.0.zip", - "reference": "1.0.0", - "shasum": "da118d519d20ba2d3ed4ffeb037259a267cbc0f7" + "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.1.zip", + "reference": "1.0.1", + "shasum": "1bcd473add81bc96296a98796880cb2f6a0ccb47" }, "require": { "drupal/core": "^9.2 || ^10" @@ -2767,8 +2767,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "1.0.0", - "datestamp": "1691175827", + "version": "1.0.1", + "datestamp": "1696726436", "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 4e8c17303389996c657721ba42e3144456ef07c2..4e25253531ff228d7cbfd47abfefe1dbe2de2ec5 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2867,18 +2867,18 @@ }, { "name": "drupal/decorative_image_widget", - "version": "1.0.0", - "version_normalized": "1.0.0.0", + "version": "1.0.1", + "version_normalized": "1.0.1.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/decorative_image_widget.git", - "reference": "1.0.0" + "reference": "1.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.0.zip", - "reference": "1.0.0", - "shasum": "da118d519d20ba2d3ed4ffeb037259a267cbc0f7" + "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.1.zip", + "reference": "1.0.1", + "shasum": "1bcd473add81bc96296a98796880cb2f6a0ccb47" }, "require": { "drupal/core": "^9.2 || ^10" @@ -2886,15 +2886,12 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "1.0.0", - "datestamp": "1691175827", + "version": "1.0.1", + "datestamp": "1696726436", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } - }, - "patches_applied": { - "3383305": "https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch" } }, "installation-source": "dist", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index d744a9272466ba1a335998fd773535837bd120fb..12dacd85266d508b6b47269e01503ecab37d8259 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'osu-asc-webservices/d8-upstream', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'fe8daab509c90a8c984673aa0c6d6770fdfd1cab', + 'reference' => 'c3c2c4898587953ab94a0ac39e0658dbaecc8751', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -563,9 +563,9 @@ 'dev_requirement' => false, ), 'drupal/decorative_image_widget' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'reference' => '1.0.0', + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'reference' => '1.0.1', 'type' => 'drupal-module', 'install_path' => __DIR__ . '/../../web/modules/decorative_image_widget', 'aliases' => array(), @@ -1450,7 +1450,7 @@ 'osu-asc-webservices/d8-upstream' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'fe8daab509c90a8c984673aa0c6d6770fdfd1cab', + 'reference' => 'c3c2c4898587953ab94a0ac39e0658dbaecc8751', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/web/modules/decorative_image_widget/PATCHES.txt b/web/modules/decorative_image_widget/PATCHES.txt deleted file mode 100644 index 96c127dca0a71456cfa52c86cd7513bc1959ad8d..0000000000000000000000000000000000000000 --- a/web/modules/decorative_image_widget/PATCHES.txt +++ /dev/null @@ -1,7 +0,0 @@ -This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches) -Patches applied to this directory: - -3383305 -Source: https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch - - diff --git a/web/modules/decorative_image_widget/decorative_image_widget.info.yml b/web/modules/decorative_image_widget/decorative_image_widget.info.yml index db12e16c72a0510b9b6bf8edad3445c0312990e5..d9b241136b4bd3e80400f057854309548f3e8d36 100644 --- a/web/modules/decorative_image_widget/decorative_image_widget.info.yml +++ b/web/modules/decorative_image_widget/decorative_image_widget.info.yml @@ -6,7 +6,7 @@ package: Media dependencies: - drupal:image -# Information added by Drupal.org packaging script on 2023-08-04 -version: '1.0.0' +# Information added by Drupal.org packaging script on 2023-10-08 +version: '1.0.1' project: 'decorative_image_widget' -datestamp: 1691175829 +datestamp: 1696726438 diff --git a/web/modules/decorative_image_widget/decorative_image_widget.module b/web/modules/decorative_image_widget/decorative_image_widget.module index ad8a87739e65c7b09c8906e12a3a69dc1fe7a657..5a700449edc2c5e337c0fe311d78a8af51663c94 100644 --- a/web/modules/decorative_image_widget/decorative_image_widget.module +++ b/web/modules/decorative_image_widget/decorative_image_widget.module @@ -36,15 +36,17 @@ function decorative_image_widget_field_widget_settings_summary_alter(array &$sum * Implements hook_field_widget_form_alter(). */ function decorative_image_widget_field_widget_form_alter(array &$element, FormStateInterface $form_state, array $context) { + // Note this hook is only executed for Drupal 9. if ($context['widget'] instanceof ImageWidget) { DecorativeImageWidgetHelper::alter($element, $context['widget']); } } /** - * Implements hook_field_widget_single_element_WIDGET_TYPE_form_alter(). + * Implements hook_field_widget_single_element_form_alter(). */ -function decorative_image_widget_field_widget_single_element_image_image_form_alter(array &$element, FormStateInterface $form_state, array $context) { +function decorative_image_widget_field_widget_single_element_form_alter(array &$element, FormStateInterface $form_state, array $context) { + // Note this hook is only executed for Drupal 10+. if ($context['widget'] instanceof ImageWidget) { DecorativeImageWidgetHelper::alter($element, $context['widget']); } diff --git a/web/modules/decorative_image_widget/js/decorative-image-widget.js b/web/modules/decorative_image_widget/js/decorative-image-widget.js index 8ea643323797c3ecb060a9f963831ad724476ab9..81b271557f94b3d38995796d3f74e46f14345cfc 100644 --- a/web/modules/decorative_image_widget/js/decorative-image-widget.js +++ b/web/modules/decorative_image_widget/js/decorative-image-widget.js @@ -20,14 +20,30 @@ function enableOrDisableAltTextField($altTextField, enable) { if (!enable) { + // Edit input field attributes. $altTextField - .prop('disabled', true) - .parent().addClass('form-disabled'); + .prop("disabled", true) + .prop("required", false) + .removeClass("required"); + + // Edit parent element classes. + $altTextField.parent().addClass("form-disabled"); + + // Edit label element. + $altTextField.parent().find("label").removeClass("form-required"); } else { + // Edit input field attributes. $altTextField - .prop('disabled', false) - .parent().removeClass('form-disabled'); + .prop("disabled", false) + .prop("required", true) + .addClass("required"); + + // Edit parent element classes. + $altTextField.parent().removeClass("form-disabled"); + + // Edit label element. + $altTextField.parent().find("label").addClass("form-required"); } } }, diff --git a/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php b/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php index df0139c2caeea335b545090f8febed2160a1d69c..12c078fca206ba9e6a18cd0a5e224ef6ceca8b65 100644 --- a/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php +++ b/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php @@ -170,15 +170,20 @@ public static function validateAltText(array $element, FormStateInterface $formS return; } - // If the alt text is empty, then throw a validation error if the - // decorative checkbox was left unchecked. - if (empty($formState->getValue($element['#parents']))) { - $parents = $element['#parents']; - array_pop($parents); - $parents[] = 'decorative'; - if (empty($formState->getValue($parents))) { - $formState->setErrorByName(implode('][', $element['#parents']), t('You must provide alternative text or indicate the image is decorative.')); - } + $parents = $element['#parents']; + array_pop($parents); + + // Back out if no image was submitted. + $fid_form_element = array_merge($parents, ['fids']); + if (empty($formState->getValue($fid_form_element))) { + return; + } + + $missing_alt_text = empty($formState->getValue($element['#parents'])); + $decorative_form_element = array_merge($parents, ['decorative']); + $decorative_checked = (bool) $formState->getValue($decorative_form_element); + if ($missing_alt_text && !$decorative_checked) { + $formState->setErrorByName(implode('][', $element['#parents']), t('You must provide alternative text or indicate the image is decorative.')); } }