From 82de7493838abd8513633377930788570899535a Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Tue, 30 Jan 2024 10:26:46 -0600 Subject: [PATCH 01/75] [EPAD8-2221] Updating contact us link to use Contact Page's title rather than hard-coded 'Contact Us'. --- services/drupal/web/modules/custom/epa_core/epa_core.module | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/drupal/web/modules/custom/epa_core/epa_core.module b/services/drupal/web/modules/custom/epa_core/epa_core.module index 3151e8fe8b..8603038d03 100644 --- a/services/drupal/web/modules/custom/epa_core/epa_core.module +++ b/services/drupal/web/modules/custom/epa_core/epa_core.module @@ -386,11 +386,12 @@ function epa_core_tokens($type, $tokens, array $data, array $options, Bubbleable ->getNodeReferencingGroups($node); foreach ($groups as $group) { if ($forms = $group->field_contact_us_form->referencedEntities()) { + /** @var \Drupal\node\Entity\Node $contact_form */ $contact_form = reset($forms); $bubbleable_metadata->addCacheableDependency($group); $bubbleable_metadata->addCacheableDependency($contact_form); $url = $contact_form ? Url::fromRoute('entity.node.canonical', ['node' => $contact_form->id()]) : NULL; - $replacements[$original] = $url ? Link::fromTextAndUrl(t('Contact Us'), $url) + $replacements[$original] = $url ? Link::fromTextAndUrl($contact_form->getTitle(), $url) ->toString() : $original; } } From 082b4483cc84e4509c40909c502c31668ffc03f1 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Thu, 30 May 2024 13:40:03 -0700 Subject: [PATCH 02/75] [EPAD8-1850] Install and enable tome --- services/drupal/composer.json | 1 + services/drupal/composer.lock | 471 +++++++++++++++++- .../drupal/config/sync/core.extension.yml | 2 + 3 files changed, 473 insertions(+), 1 deletion(-) diff --git a/services/drupal/composer.json b/services/drupal/composer.json index 0fd1d187c2..c0dcecce77 100644 --- a/services/drupal/composer.json +++ b/services/drupal/composer.json @@ -300,6 +300,7 @@ "drupal/svg_image": "^3.0", "drupal/token": "^1.9", "drupal/token_filter": "^2.0", + "drupal/tome": "^1.11", "drupal/transliterate_filenames": "^2.0", "drupal/twig_field_value": "^2.0", "drupal/twig_tweak": "^3.2", diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index 1f49d55f03..8c2c4615e6 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/composer.lock @@ -4,8 +4,23 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9ecaa8fd02641d834137ee00893ef588", + "content-hash": "869278207771287f8deabba4115b9cb1", "packages": [ + { + "name": "algolia/places", + "version": "1.19.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/places.js/-/places.js-1.19.0.tgz" + }, + "type": "drupal-library", + "extra": { + "installer-name": "algolia.places" + }, + "license": [ + "MIT" + ] + }, { "name": "asm89/stack-cors", "version": "1.3.0", @@ -379,6 +394,21 @@ }, "time": "2020-12-05T05:59:11+00:00" }, + { + "name": "choices/choices", + "version": "9.0.1", + "dist": { + "type": "zip", + "url": "https://github.com/Choices-js/Choices/archive/refs/tags/v9.0.1.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "choices" + }, + "license": [ + "MIT" + ] + }, { "name": "ckeditor-plugin/fakeobjects", "version": "4.15.0", @@ -406,6 +436,21 @@ }, "type": "drupal-library" }, + { + "name": "codemirror/codemirror", + "version": "5.65.12", + "dist": { + "type": "zip", + "url": "https://github.com/components/codemirror/archive/refs/tags/5.65.12.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "codemirror" + }, + "license": [ + "MIT" + ] + }, { "name": "commerceguys/addressing", "version": "v1.4.2", @@ -10745,6 +10790,181 @@ "source": "https://git.drupalcode.org/project/token_filter" } }, + { + "name": "drupal/tome", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/tome.git", + "reference": "8.x-1.11" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/tome-8.x-1.11.zip", + "reference": "8.x-1.11", + "shasum": "957b53ec036e4acf3a53d254419e926401bbb952" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10", + "drupal/tome_static": "*", + "drupal/tome_sync": "*" + }, + "require-dev": { + "drupal/ctools": "*", + "drupal/pathauto": "*", + "drupal/redirect": "*", + "drupal/token": "*", + "drupal/tome_base": "*", + "drupal/tome_static": "*", + "drupal/tome_sync": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.11", + "datestamp": "1680663803", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "larowlan", + "homepage": "https://www.drupal.org/user/395439" + }, + { + "name": "samuel.mortenson", + "homepage": "https://www.drupal.org/user/2582268" + } + ], + "description": "Everything you need to do everything statically.", + "homepage": "https://www.drupal.org/project/tome", + "support": { + "source": "https://git.drupalcode.org/project/tome" + } + }, + { + "name": "drupal/tome_base", + "version": "1.12.0", + "require": { + "drupal/core": "^8 || ^9 || ^10", + "drupal/tome": "^1" + }, + "type": "metapackage", + "extra": { + "drupal": { + "version": "8.x-1.12", + "datestamp": "1701628903", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "larowlan", + "homepage": "https://www.drupal.org/user/395439" + }, + { + "name": "samuel.mortenson", + "homepage": "https://www.drupal.org/user/2582268" + } + ], + "description": "Contains shared services and traits between Tome Sync and Tome Static.", + "homepage": "https://www.drupal.org/project/tome", + "support": { + "source": "https://git.drupalcode.org/project/tome" + } + }, + { + "name": "drupal/tome_static", + "version": "1.12.0", + "require": { + "drupal/core": "^8 || ^9 || ^10", + "drupal/tome": "^1", + "drupal/tome_base": "*" + }, + "type": "metapackage", + "extra": { + "drupal": { + "version": "8.x-1.12", + "datestamp": "1701628903", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "larowlan", + "homepage": "https://www.drupal.org/user/395439" + }, + { + "name": "samuel.mortenson", + "homepage": "https://www.drupal.org/user/2582268" + } + ], + "description": "Exports an entire Drupal site to static HTML.", + "homepage": "https://www.drupal.org/project/tome", + "support": { + "source": "https://git.drupalcode.org/project/tome" + } + }, + { + "name": "drupal/tome_sync", + "version": "1.12.0", + "require": { + "drupal/core": "^8 || ^9 || ^10", + "drupal/tome": "^1", + "drupal/tome_base": "*" + }, + "type": "metapackage", + "extra": { + "drupal": { + "version": "8.x-1.12", + "datestamp": "1701628903", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "larowlan", + "homepage": "https://www.drupal.org/user/395439" + }, + { + "name": "samuel.mortenson", + "homepage": "https://www.drupal.org/user/2582268" + } + ], + "description": "Allows Drupal to installed from flat files and keeps content in sync.", + "homepage": "https://www.drupal.org/project/tome", + "support": { + "source": "https://git.drupalcode.org/project/tome" + } + }, { "name": "drupal/transliterate_filenames", "version": "2.0.1", @@ -13071,6 +13291,186 @@ }, "type": "drupal-library" }, + { + "name": "jquery/chosen", + "version": "1.8.7", + "dist": { + "type": "zip", + "url": "https://github.com/harvesthq/chosen/releases/download/v1.8.7/chosen_v1.8.7.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.chosen" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/geocomplete", + "version": "1.7.0", + "dist": { + "type": "zip", + "url": "https://github.com/ubilabs/geocomplete/archive/refs/tags/1.7.0.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.geocomplete" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/hotkeys", + "version": "0.2.0", + "dist": { + "type": "zip", + "url": "https://github.com/jeresig/jquery.hotkeys/archive/refs/tags/0.2.0.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.hotkeys" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/icheck", + "version": "1.0.2 ", + "dist": { + "type": "zip", + "url": "https://github.com/dargullin/icheck/archive/refs/tags/1.0.2.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.icheck" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/image-picker", + "version": "0.3.1", + "dist": { + "type": "zip", + "url": "https://github.com/rvera/image-picker/archive/refs/tags/0.3.1.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.image-picker" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/inputmask", + "version": "5.0.8", + "dist": { + "type": "zip", + "url": "https://github.com/RobinHerbots/jquery.inputmask/archive/refs/tags/5.0.8.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.inputmask" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/intl-tel-input", + "version": "17.0.19", + "dist": { + "type": "zip", + "url": "https://github.com/jackocnr/intl-tel-input/archive/refs/tags/v17.0.19.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.intl-tel-input" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/rateit", + "version": "1.1.5", + "dist": { + "type": "zip", + "url": "https://github.com/gjunge/rateit.js/archive/refs/tags/1.1.5.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.rateit" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/select2", + "version": "4.0.13", + "dist": { + "type": "zip", + "url": "https://github.com/select2/select2/archive/refs/tags/4.0.13.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.select2" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/textcounter", + "version": "0.9.1", + "dist": { + "type": "zip", + "url": "https://github.com/ractoon/jQuery-Text-Counter/archive/refs/tags/0.9.1.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.textcounter" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/timepicker", + "version": "1.14.0", + "dist": { + "type": "zip", + "url": "https://github.com/jonthornton/jquery-timepicker/archive/refs/tags/1.14.0.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.timepicker" + }, + "license": [ + "MIT" + ] + }, + { + "name": "jquery/toggles", + "version": "4.0.0", + "dist": { + "type": "zip", + "url": "https://github.com/simontabor/jquery-toggles/archive/refs/tags/v4.0.0.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "jquery.toggles" + }, + "license": [ + "MIT" + ] + }, { "name": "jsq/amazon-es-php", "version": "0.3.0", @@ -14138,6 +14538,15 @@ }, "time": "2021-09-27T03:08:05+00:00" }, + { + "name": "northernco/ckeditor5-anchor-drupal", + "version": "0.2.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/@northernco/ckeditor5-anchor-drupal/-/ckeditor5-anchor-drupal-0.2.0.tgz" + }, + "type": "drupal-library" + }, { "name": "nyholm/dsn", "version": "2.0.1", @@ -14718,6 +15127,21 @@ "MIT" ] }, + { + "name": "progress-tracker/progress-tracker", + "version": "2.0.7", + "dist": { + "type": "zip", + "url": "https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "progress-tracker" + }, + "license": [ + "MIT" + ] + }, { "name": "psr/cache", "version": "1.0.1", @@ -15508,6 +15932,21 @@ }, "time": "2022-09-26T08:40:11+00:00" }, + { + "name": "signature_pad/signature_pad", + "version": "2.3.0", + "dist": { + "type": "zip", + "url": "https://github.com/szimek/signature_pad/archive/refs/tags/v2.3.0.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "signature_pad" + }, + "license": [ + "MIT" + ] + }, { "name": "simshaun/recurr", "version": "v5.0.1", @@ -15680,6 +16119,21 @@ }, "time": "2020-01-30T12:17:27+00:00" }, + { + "name": "svg-pan-zoom/svg-pan-zoom", + "version": "3.6.1", + "dist": { + "type": "zip", + "url": "https://github.com/ariutta/svg-pan-zoom/archive/refs/tags/3.6.1.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "svg-pan-zoom" + }, + "license": [ + "BSD-2-Clause" + ] + }, { "name": "symfony-cmf/routing", "version": "2.3.4", @@ -18247,6 +18701,21 @@ ], "time": "2022-08-02T15:47:23+00:00" }, + { + "name": "tabby/tabby", + "version": "12.0.3", + "dist": { + "type": "zip", + "url": "https://github.com/cferdinandi/tabby/archive/refs/tags/v12.0.3.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "tabby" + }, + "license": [ + "MIT" + ] + }, { "name": "tippyjs/tippyjs", "version": "6.3.7", diff --git a/services/drupal/config/sync/core.extension.yml b/services/drupal/config/sync/core.extension.yml index b52cb1ec62..c07f937f21 100644 --- a/services/drupal/config/sync/core.extension.yml +++ b/services/drupal/config/sync/core.extension.yml @@ -194,6 +194,8 @@ module: token: 0 token_filter: 0 token_formatters: 0 + tome_base: 0 + tome_static: 0 toolbar: 0 transliterate_filenames: 0 twig_field_value: 0 From b7ec15271bcc3b9545d251fd67e8580b84689d1f Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Fri, 31 May 2024 10:47:39 -0500 Subject: [PATCH 03/75] [EPAD8-2454] Adding new custom module, epa_snapshot, for adding event subscriber to modify markup and insert alert markup. --- .../custom/epa_snapshot/epa_snapshot.info.yml | 8 ++ .../custom/epa_snapshot/epa_snapshot.module | 10 ++ .../epa_snapshot/epa_snapshot.services.yml | 5 + .../EventSubscriber/EpaSnapshotSubscriber.php | 102 ++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml create mode 100644 services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module create mode 100644 services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.services.yml create mode 100644 services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php diff --git a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml new file mode 100644 index 0000000000..1e4177ac7d --- /dev/null +++ b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml @@ -0,0 +1,8 @@ +name: EPA Snapshot +type: module +description: All custom code required for EPA to create a static snapshot of the site using Tome. +package: Tome +core: 8.x +core_version_requirement: ^8 || ^9 +dependencies: + - tome:tome_static diff --git a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module new file mode 100644 index 0000000000..c2cf97910b --- /dev/null +++ b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module @@ -0,0 +1,10 @@ +getHtml(); + + // Not utilizing \Drupal\Component\Utility\Html as that assumes we're using + // HTML snippets and not full HTML page markup. + $doc = new \DOMDocument(); + // Ignore warnings during HTML soup loading, ensure parser doesn't add HTML + // or Body tags and does not add a DOCTYPE. This is already included. + @$doc->loadHTML($html, LIBXML_NOBLANKS | LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); + + // Find the
element as we'll use that as + // our 'landmark' for where to place the alert markup. This is the "An + // official website of the United States Government" banner found on all + // pages. + $xpath = new \DOMXPath($doc); + $section = $xpath->query('//section[@class="usa-banner"]')->item(0); + + if ($section) { + $alert = $this->createAlertMarkup($doc); + + // If there's an element after the section (nextSibling) we'll insert our + // markup before that sibling. Otherwise, we'll append it to the section's + // parent node. + if ($section->nextSibling) { + $section->parentNode->insertBefore($alert, $section->nextSibling); + } + else { + $section->parentNode->appendChild($alert); + } + } + + $event->setHtml($doc->saveHTML()); + } + + /** + * Helper method to generate snapshot alert markup. + * + * @param \DOMDocument $doc + * The DOM Document we're working with. + * + * @return \DOMDocumentFragment|false + * The alert markup DOM Document fragment. + */ + public function createAlertMarkup(\DOMDocument $doc) { + $fragment = $doc->createDocumentFragment(); + $markup = ' +
+
+
+
+
+
Emergency
+
+
+

This is not the current EPA website. To navigate to the current EPA website, please go to + www.epa.gov. + This website is historical material reflecting the EPA website as it existed on January 19, 2025. + This website is no longer updated and links to external websites and some internal pages may not work. + More information ยป

+
+
+
+
+
+
+
'; + + $fragment->appendXML($markup); + return $fragment; + } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() { + return [ + TomeStaticEvents::MODIFY_HTML => ['onModifyHTML'], + ]; + } + +} From 0ced0e99f2dce34eb9fe8821feea4bc0d54bd087 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Fri, 31 May 2024 10:48:44 -0500 Subject: [PATCH 04/75] [EPAD8-2454] Enabling epa_snapshot module. --- services/drupal/config/sync/core.extension.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/services/drupal/config/sync/core.extension.yml b/services/drupal/config/sync/core.extension.yml index c07f937f21..32292e1e92 100644 --- a/services/drupal/config/sync/core.extension.yml +++ b/services/drupal/config/sync/core.extension.yml @@ -78,6 +78,7 @@ module: epa_metatag: 0 epa_node_export: 0 epa_rss: 0 + epa_snapshot: 0 epa_viewsreference: 0 epa_web_areas: 0 epa_workflow: 0 From 7e39e13d610b51d33151adf0207bfb4c7daa3dd9 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Fri, 31 May 2024 10:50:01 -0500 Subject: [PATCH 05/75] [EPAD8-2454] Removing unnecessary empty module file. --- .../modules/custom/epa_snapshot/epa_snapshot.module | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module diff --git a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module deleted file mode 100644 index c2cf97910b..0000000000 --- a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.module +++ /dev/null @@ -1,10 +0,0 @@ - Date: Mon, 3 Jun 2024 09:01:22 -0700 Subject: [PATCH 06/75] [EPAD8-2450] Install flysystem --- services/drupal/.env.example | 1 + services/drupal/composer.json | 2 + services/drupal/composer.lock | 508 +++++++++++++++++- .../web/sites/default/settings.local.env.php | 6 + .../drupal/web/sites/default/settings.php | 21 + 5 files changed, 537 insertions(+), 1 deletion(-) diff --git a/services/drupal/.env.example b/services/drupal/.env.example index 98e6f66615..2da2af1a27 100644 --- a/services/drupal/.env.example +++ b/services/drupal/.env.example @@ -5,6 +5,7 @@ WEBCMS_HASH_SALT=abcdefg WEBCMS_S3_BUCKET=drupal +WEBCMS_S3_SNAPSHOT_BUCKET=f1-webcms-snapshot-testing WEBCMS_S3_REGION=us-east-1 WEBCMS_CF_DISTRIBUTIONID=abcdef diff --git a/services/drupal/composer.json b/services/drupal/composer.json index c0dcecce77..3d58faf024 100644 --- a/services/drupal/composer.json +++ b/services/drupal/composer.json @@ -230,6 +230,8 @@ "drupal/fixed_block_content": "^1.1", "drupal/flag": "^4.0@beta", "drupal/flood_control": "^2.1", + "drupal/flysystem": "^2.0@beta", + "drupal/flysystem_s3": "^2.1", "drupal/focal_point": "^2.0@alpha", "drupal/gcontent_moderation": "^1.0@beta", "drupal/gin": "^3.0", diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index 8c2c4615e6..29c06c98f5 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/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": "869278207771287f8deabba4115b9cb1", + "content-hash": "3947fd7450df1b2094f1f2d0b76d7e2a", "packages": [ { "name": "algolia/places", @@ -6149,6 +6149,158 @@ "source": "https://git.drupalcode.org/project/flood_control" } }, + { + "name": "drupal/flysystem", + "version": "2.0.0-beta2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/flysystem.git", + "reference": "2.0.0-beta2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/flysystem-2.0.0-beta2.zip", + "reference": "2.0.0-beta2", + "shasum": "10a57198877b1975e184dd0fda0212d3099bc5ca" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "league/flysystem": "^1.0.3", + "league/flysystem-replicate-adapter": "~1.0", + "twistor/flysystem-stream-wrapper": "^1.0.5" + }, + "require-dev": { + "league/flysystem-memory": "~1.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0-beta2", + "datestamp": "1684769799", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "autoload": { + "psr-4": { + "Drupal\\flysystem\\": "src/" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "benjifisher", + "homepage": "https://www.drupal.org/user/683300" + }, + { + "name": "bradjones1", + "homepage": "https://www.drupal.org/user/405824" + }, + { + "name": "jungle", + "homepage": "https://www.drupal.org/user/2919723" + }, + { + "name": "lhridley", + "homepage": "https://www.drupal.org/user/1223730" + }, + { + "name": "mglaman", + "homepage": "https://www.drupal.org/user/2416470" + }, + { + "name": "robbin.zhao", + "homepage": "https://www.drupal.org/user/616818" + }, + { + "name": "twistor", + "homepage": "https://www.drupal.org/user/473738" + }, + { + "name": "vijaycs85", + "homepage": "https://www.drupal.org/user/93488" + } + ], + "description": "Provides access to various filesystem backends using Flysystem.", + "homepage": "https://www.drupal.org/project/flysystem", + "support": { + "source": "https://git.drupalcode.org/project/flysystem" + } + }, + { + "name": "drupal/flysystem_s3", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/flysystem_s3.git", + "reference": "2.1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/flysystem_s3-2.1.2.zip", + "reference": "2.1.2", + "shasum": "644b1c0af2c59a88f64501044aad454467437d93" + }, + "require": { + "aws/aws-sdk-php": "^3.288.1", + "drupal/core": "^9.2 || ^10", + "drupal/flysystem": "^2.0", + "league/flysystem": "^1.0.20", + "league/flysystem-aws-s3-v3": "^1.0, !=1.0.12, !=1.0.13" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.1.2", + "datestamp": "1709673059", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "cweagans", + "homepage": "https://www.drupal.org/user/404732" + }, + { + "name": "Eli-T", + "homepage": "https://www.drupal.org/user/516878" + }, + { + "name": "Leon Kessler", + "homepage": "https://www.drupal.org/user/595374" + }, + { + "name": "MiSc", + "homepage": "https://www.drupal.org/user/382892" + }, + { + "name": "twistor", + "homepage": "https://www.drupal.org/user/473738" + }, + { + "name": "vijaycs85", + "homepage": "https://www.drupal.org/user/93488" + } + ], + "description": "Provides an Amazon S3 plugin for Flysystem.", + "homepage": "https://drupal.org/project/flysystem_s3", + "support": { + "source": "https://git.drupalcode.org/project/flysystem_s3", + "issues": "https://drupal.org/project/issues/flysystem_s3" + } + }, { "name": "drupal/focal_point", "version": "2.0.0-alpha2", @@ -14050,6 +14202,271 @@ ], "time": "2022-01-04T00:13:07+00:00" }, + { + "name": "league/flysystem", + "version": "1.1.10", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2022-10-04T09:16:37+00:00" + }, + { + "name": "league/flysystem-aws-s3-v3", + "version": "1.0.30", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "af286f291ebab6877bac0c359c6c2cb017eb061d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/af286f291ebab6877bac0c359c6c2cb017eb061d", + "reference": "af286f291ebab6877bac0c359c6c2cb017eb061d", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "^3.20.0", + "league/flysystem": "^1.0.40", + "php": ">=5.5.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3v3\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Flysystem adapter for the AWS S3 SDK v3.x", + "support": { + "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.30" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-07-02T13:51:38+00:00" + }, + { + "name": "league/flysystem-replicate-adapter", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-replicate-adapter.git", + "reference": "864e80409c0918b0ed6921c3941247017d9db77c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-replicate-adapter/zipball/864e80409c0918b0ed6921c3941247017d9db77c", + "reference": "864e80409c0918b0ed6921c3941247017d9db77c", + "shasum": "" + }, + "require": { + "league/flysystem": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\Replicate\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Flysystem adapter for Replica's", + "support": { + "issues": "https://github.com/thephpleague/flysystem-replicate-adapter/issues", + "source": "https://github.com/thephpleague/flysystem-replicate-adapter/tree/master" + }, + "time": "2015-08-18T21:07:17+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-01-28T23:22:08+00:00" + }, { "name": "liuggio/statsd-php-client", "version": "v1.0.18", @@ -18811,6 +19228,95 @@ ], "time": "2023-05-03T17:49:41+00:00" }, + { + "name": "twistor/flysystem-stream-wrapper", + "version": "v1.0.9", + "source": { + "type": "git", + "url": "https://github.com/twistor/flysystem-stream-wrapper.git", + "reference": "c97389f188a6493759389861f9fc732652460c58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twistor/flysystem-stream-wrapper/zipball/c97389f188a6493759389861f9fc732652460c58", + "reference": "c97389f188a6493759389861f9fc732652460c58", + "shasum": "" + }, + "require": { + "league/flysystem": "^1.0.9", + "twistor/stream-util": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twistor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Leppanen", + "email": "chris.leppanen@gmail.com" + } + ], + "description": "Adapts Flysystem filesystems to PHP stream wrappers.", + "homepage": "http://github.com/twistor/flysystem-stream-wrapper", + "support": { + "issues": "https://github.com/twistor/flysystem-stream-wrapper/issues", + "source": "https://github.com/twistor/flysystem-stream-wrapper/tree/master" + }, + "time": "2018-11-14T06:41:03+00:00" + }, + { + "name": "twistor/stream-util", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/twistor/stream-util.git", + "reference": "226e74e6234508a53639b960c4a2752aee61799a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twistor/stream-util/zipball/226e74e6234508a53639b960c4a2752aee61799a", + "reference": "226e74e6234508a53639b960c4a2752aee61799a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twistor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Leppanen", + "email": "chris.leppanen@gmail.com" + } + ], + "description": "Helper utilities for dealing with streams.", + "homepage": "http://github.com/twistor/stream-util", + "support": { + "issues": "https://github.com/twistor/stream-util/issues", + "source": "https://github.com/twistor/stream-util/tree/master" + }, + "time": "2015-06-12T11:33:28+00:00" + }, { "name": "typo3/phar-stream-wrapper", "version": "v3.1.7", diff --git a/services/drupal/web/sites/default/settings.local.env.php b/services/drupal/web/sites/default/settings.local.env.php index 067082bd9f..7364132bd9 100644 --- a/services/drupal/web/sites/default/settings.local.env.php +++ b/services/drupal/web/sites/default/settings.local.env.php @@ -39,6 +39,12 @@ // Minio doesn't support ListObjectVersions $config['s3fs.settings']['disable_version_sync'] = TRUE; +// Unset Flysystem schemes so we can use private filesystem for tome. +unset($settings['flysystem']); + +// Use private filesystem for Tome. +$settings['tome_static_directory'] = 'private://snapshot'; + // Map twig cache onto shared filesystem to allow drush to clear and write twig cache for local development. $settings['php_storage']['twig']['directory'] = '/var/www/html/web/sites/default/files/tmp/cache/twig'; diff --git a/services/drupal/web/sites/default/settings.php b/services/drupal/web/sites/default/settings.php index 4c478ad17d..a4f472a10d 100644 --- a/services/drupal/web/sites/default/settings.php +++ b/services/drupal/web/sites/default/settings.php @@ -979,6 +979,27 @@ $settings['fast404_exts'] = '/^(?!\/robots)^(?!\/system\/files)^(?!\/sites\/production\/files).*\.(txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; $settings['fast404_HTML_error_page'] = 'themes/epa_theme/source/fast-404.html'; +/** + * Create s3 stream wrapper for snapshots. + */ +$schemes = [ + 's3-snapshot' => [ + 'driver' => 's3', + 'config' => [ + 'region' => getenv('WEBCMS_S3_REGION'), + 'bucket' => getenv('WEBCMS_S3_SNAPSHOT_BUCKET'), + ], + 'cache' => TRUE, + ], +]; + +$settings['flysystem'] = $schemes; + +/** + * Set static directory for tome. + */ +$settings['tome_static_directory'] = 's3-snapshot://html'; + /** * Load local development override configuration, if available. * From f2b327c70e0aac98faeb52183e0b2f11cd744b70 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 3 Jun 2024 09:05:42 -0700 Subject: [PATCH 07/75] [EPAD8-2450] Enable flysystem --- services/drupal/config/sync/core.extension.yml | 2 ++ .../sync/ultimate_cron.job.flysystem_cron.yml | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 services/drupal/config/sync/ultimate_cron.job.flysystem_cron.yml diff --git a/services/drupal/config/sync/core.extension.yml b/services/drupal/config/sync/core.extension.yml index c07f937f21..9ed9cd4800 100644 --- a/services/drupal/config/sync/core.extension.yml +++ b/services/drupal/config/sync/core.extension.yml @@ -97,6 +97,8 @@ module: fixed_block_content: 0 flag: 0 flood_control: 0 + flysystem: 0 + flysystem_s3: 0 focal_point: 0 gcontent_moderation: 0 gesso_helper: 0 diff --git a/services/drupal/config/sync/ultimate_cron.job.flysystem_cron.yml b/services/drupal/config/sync/ultimate_cron.job.flysystem_cron.yml new file mode 100644 index 0000000000..53fa5e14f0 --- /dev/null +++ b/services/drupal/config/sync/ultimate_cron.job.flysystem_cron.yml @@ -0,0 +1,17 @@ +uuid: 90226924-2d72-4c4c-9bf3-f603f364f640 +langcode: en +status: true +dependencies: + module: + - flysystem +title: 'Default cron handler' +id: flysystem_cron +weight: 0 +module: flysystem +callback: flysystem_cron +scheduler: + id: simple +launcher: + id: serial +logger: + id: database From a275f4048635f5e14c7d8254246e95e9bdb16a8a Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 3 Jun 2024 09:13:25 -0700 Subject: [PATCH 08/75] [EPAD8-2450] Patch tome to allow building assets --- services/drupal/composer.patches.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 79b2ae2510..790ad8a78d 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -102,6 +102,9 @@ "Add option to email Revision Author": "patches/content_moderation_notifications-3133940-23-rolled-to-apply-with-3015276-42.patch", "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, + "drupal/tome": { + "CSS on Amazon S3 not processing properly": "https://www.drupal.org/files/issues/2020-08-06/3161384-4.patch" + }, "drupal/paragraphs": { "Fix integrity constraint violation when embedding paragraphs on blocks in layout builder": "https://www.drupal.org/files/issues/2019-07-10/paragraphs-set_langcode_widgets-2901390-29.patch", "Fixes paragraphs not rendering on current revision when they have been edited on forward revision": "https://www.drupal.org/files/issues/2020-07-08/access-controll-issue-3090200-22.patch" From 21739c378c0f41ab44e7fb70f404870701915a49 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 3 Jun 2024 09:16:23 -0700 Subject: [PATCH 09/75] [EPAD8-2450] Allow accessing minio ui locally --- services/drupal/.ddev/docker-compose.minio.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/drupal/.ddev/docker-compose.minio.yaml b/services/drupal/.ddev/docker-compose.minio.yaml index b60e40664b..e8a43f024a 100644 --- a/services/drupal/.ddev/docker-compose.minio.yaml +++ b/services/drupal/.ddev/docker-compose.minio.yaml @@ -10,13 +10,17 @@ services: - minio - server - /data + - --console-address + - :9090 environment: MINIO_ACCESS_KEY: minio_access MINIO_SECRET_KEY: minio_secret + MINIO_UID: $DDEV_UID + MINIO_GUID: $DDEV_UID MINIO_DOMAIN: minio VIRTUAL_HOST: $DDEV_HOSTNAME - HTTP_EXPOSE: 9001:9000 - HTTPS_EXPOSE: 9002:9000 + HTTP_EXPOSE: "9001:9000,9089:9090" + HTTPS_EXPOSE: "9002:9000,9090:9090" labels: com.ddev.site-name: ${DDEV_SITENAME} com.ddev.approot: $DDEV_APPROOT From 6e5439208a5aec9f26c223ed48a38265df10fb4f Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 3 Jun 2024 10:10:57 -0700 Subject: [PATCH 10/75] [EPAD8-2450] Prevent crawling while running tome --- services/drupal/composer.patches.json | 3 +- .../drupal/patches/tome-disable_crawl.patch | 65 +++++++++++++++++++ .../drupal/web/sites/default/settings.php | 6 +- 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 services/drupal/patches/tome-disable_crawl.patch diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 790ad8a78d..aee7d5eccc 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -103,7 +103,8 @@ "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, "drupal/tome": { - "CSS on Amazon S3 not processing properly": "https://www.drupal.org/files/issues/2020-08-06/3161384-4.patch" + "CSS on Amazon S3 not processing properly": "https://www.drupal.org/files/issues/2020-08-06/3161384-4.patch", + "Add a method to disable crawling": "patches/tome-disable_crawl.patch" }, "drupal/paragraphs": { "Fix integrity constraint violation when embedding paragraphs on blocks in layout builder": "https://www.drupal.org/files/issues/2019-07-10/paragraphs-set_langcode_widgets-2901390-29.patch", diff --git a/services/drupal/patches/tome-disable_crawl.patch b/services/drupal/patches/tome-disable_crawl.patch new file mode 100644 index 0000000000..89162c1ebc --- /dev/null +++ b/services/drupal/patches/tome-disable_crawl.patch @@ -0,0 +1,65 @@ +diff --git a/README.txt b/README.txt +index ec7d4da..b8438f6 100644 +--- a/README.txt ++++ b/README.txt +@@ -36,6 +36,8 @@ in settings.php are: + - tome_static_cache_exclude: An array of paths to always exclude from cache. + - tome_static_path_exclude: An array of paths to exclude from static site + generation. Useful for system paths. ++ - tome_static_crawl: A boolean indicating that Tome should crawl paths found ++ in HTML, for example from anchor tags. Defaults to TRUE. + - tome_sync_encoder: The encoder to use when exporting content. Defaults to + "json" but "yaml" is also available in an experimental state. + +diff --git a/modules/tome_static/src/StaticGenerator.php b/modules/tome_static/src/StaticGenerator.php +index 845568f..218b2ff 100644 +--- a/modules/tome_static/src/StaticGenerator.php ++++ b/modules/tome_static/src/StaticGenerator.php +@@ -475,12 +475,6 @@ class StaticGenerator implements StaticGeneratorInterface { + } + } + /** @var \DOMElement $node */ +- foreach ($document->getElementsByTagName('a') as $node) { +- if ($node->hasAttribute('href')) { +- $paths[] = $node->getAttribute('href'); +- } +- } +- /** @var \DOMElement $node */ + foreach ($document->getElementsByTagName('script') as $node) { + if ($node->hasAttribute('src')) { + $paths[] = $node->getAttribute('src'); +@@ -493,12 +487,6 @@ class StaticGenerator implements StaticGeneratorInterface { + foreach ($xpath->query('//*[@style]') as $node) { + $paths = array_merge($paths, $this->getCssAssets($node->getAttribute('style'), $root)); + } +- /** @var \DOMElement $node */ +- foreach ($document->getElementsByTagName('iframe') as $node) { +- if ($node->hasAttribute('src')) { +- $paths[] = $node->getAttribute('src'); +- } +- } + + // Recursive call in HTML comments in order to retrieve conditional assets. + /** @var \DOMElement $node */ +@@ -506,6 +494,21 @@ class StaticGenerator implements StaticGeneratorInterface { + $paths = array_merge($paths, $this->getHtmlAssets($node->nodeValue, $root)); + } + ++ if (Settings::get('tome_static_crawl', TRUE)) { ++ /** @var \DOMElement $node */ ++ foreach ($document->getElementsByTagName('a') as $node) { ++ if ($node->hasAttribute('href')) { ++ $paths[] = $node->getAttribute('href'); ++ } ++ } ++ /** @var \DOMElement $node */ ++ foreach ($document->getElementsByTagName('iframe') as $node) { ++ if ($node->hasAttribute('src')) { ++ $paths[] = $node->getAttribute('src'); ++ } ++ } ++ } ++ + return $paths; + } + diff --git a/services/drupal/web/sites/default/settings.php b/services/drupal/web/sites/default/settings.php index a4f472a10d..e59924768d 100644 --- a/services/drupal/web/sites/default/settings.php +++ b/services/drupal/web/sites/default/settings.php @@ -996,10 +996,14 @@ $settings['flysystem'] = $schemes; /** - * Set static directory for tome. + * Settings for tome. + * + * Set static directory for tome and prevent crawling anchors and iframes. */ $settings['tome_static_directory'] = 's3-snapshot://html'; +$settings['tome_static_crawl'] = FALSE; + /** * Load local development override configuration, if available. * From 7c6f0706829dd9a21984e6e6d78578c779763d07 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 3 Jun 2024 13:50:12 -0700 Subject: [PATCH 11/75] [EPAD8-2457] Add snapshot buckent environment variable --- terraform/webcms/shared.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/terraform/webcms/shared.tf b/terraform/webcms/shared.tf index bf82f48a9b..c6f52ca32b 100644 --- a/terraform/webcms/shared.tf +++ b/terraform/webcms/shared.tf @@ -161,6 +161,7 @@ locals { drupal_environment = [ { name = "WEBCMS_S3_BUCKET", value = data.aws_ssm_parameter.drupal_s3_bucket.value }, + { name = "WEBCMS_S3_SNAPSHOT_BUCKET", value = data.aws_ssm_parameter.drupal_s3_snapshot_bucket.value }, { name = "WEBCMS_S3_REGION", value = var.aws_region }, { name = "WEBCMS_CF_DISTRIBUTIONID", value = var.cloudfront_distributionid }, { name = "WEBCMS_SITE_URL", value = "https://${var.drupal_hostname}" }, From 1e17731219fddc40857293649dfc6482c3682133 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 3 Jun 2024 14:33:18 -0700 Subject: [PATCH 12/75] [EPAD8-2457] Add resource for parameter --- terraform/infrastructure/parameters.tf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/terraform/infrastructure/parameters.tf b/terraform/infrastructure/parameters.tf index 2d2f050b2f..9379281ab8 100644 --- a/terraform/infrastructure/parameters.tf +++ b/terraform/infrastructure/parameters.tf @@ -107,6 +107,16 @@ resource "aws_ssm_parameter" "drupal_s3_bucket" { tags = var.tags } +resource "aws_ssm_parameter" "drupal_s3_snapshot_bucket" { + for_each = local.sites + + name = "/webcms/${var.environment}/${each.value.site}/${each.value.lang}/drupal/s3-snapshot-bucket" + type = "String" + value = aws_secretsmanager_secret.s3_snapshot_bucket[each.key].arn + + tags = var.tags +} + resource "aws_ssm_parameter" "drupal_s3_domain" { for_each = local.sites From 25d768853ae887873bb0c1b8854d0ad0fcbb520a Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 4 Jun 2024 15:45:40 -0700 Subject: [PATCH 13/75] [EPAD8-2457] Set snapshot bucket --- terraform/infrastructure/parameters.tf | 10 ---------- terraform/webcms/shared.tf | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/terraform/infrastructure/parameters.tf b/terraform/infrastructure/parameters.tf index 9379281ab8..2d2f050b2f 100644 --- a/terraform/infrastructure/parameters.tf +++ b/terraform/infrastructure/parameters.tf @@ -107,16 +107,6 @@ resource "aws_ssm_parameter" "drupal_s3_bucket" { tags = var.tags } -resource "aws_ssm_parameter" "drupal_s3_snapshot_bucket" { - for_each = local.sites - - name = "/webcms/${var.environment}/${each.value.site}/${each.value.lang}/drupal/s3-snapshot-bucket" - type = "String" - value = aws_secretsmanager_secret.s3_snapshot_bucket[each.key].arn - - tags = var.tags -} - resource "aws_ssm_parameter" "drupal_s3_domain" { for_each = local.sites diff --git a/terraform/webcms/shared.tf b/terraform/webcms/shared.tf index c6f52ca32b..81aaf27980 100644 --- a/terraform/webcms/shared.tf +++ b/terraform/webcms/shared.tf @@ -161,7 +161,7 @@ locals { drupal_environment = [ { name = "WEBCMS_S3_BUCKET", value = data.aws_ssm_parameter.drupal_s3_bucket.value }, - { name = "WEBCMS_S3_SNAPSHOT_BUCKET", value = data.aws_ssm_parameter.drupal_s3_snapshot_bucket.value }, + { name = "WEBCMS_S3_SNAPSHOT_BUCKET", value = "f1-webcms-snapshot-testing" }, { name = "WEBCMS_S3_REGION", value = var.aws_region }, { name = "WEBCMS_CF_DISTRIBUTIONID", value = var.cloudfront_distributionid }, { name = "WEBCMS_SITE_URL", value = "https://${var.drupal_hostname}" }, From 32dc04f9706f4c679d853e4ac7be7706a45ec391 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Mon, 15 Jul 2024 11:33:48 -0500 Subject: [PATCH 14/75] [EPAD8-2479] Initial commit of Featured links paragraph type. --- ...splay.paragraph.featured_links.default.yml | 42 +++++++++++++++++++ ...splay.paragraph.featured_links.default.yml | 37 ++++++++++++++++ ...d.paragraph.featured_links.field_links.yml | 23 ++++++++++ ...d.paragraph.featured_links.field_title.yml | 21 ++++++++++ ...agraphs.paragraphs_type.featured_links.yml | 10 +++++ 5 files changed, 133 insertions(+) create mode 100644 services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml create mode 100644 services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml create mode 100644 services/drupal/config/sync/field.field.paragraph.featured_links.field_links.yml create mode 100644 services/drupal/config/sync/field.field.paragraph.featured_links.field_title.yml create mode 100644 services/drupal/config/sync/paragraphs.paragraphs_type.featured_links.yml diff --git a/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml b/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml new file mode 100644 index 0000000000..ea3b53c277 --- /dev/null +++ b/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml @@ -0,0 +1,42 @@ +uuid: 833c9588-ac51-4e8c-9def-13bbc7187c83 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.featured_links.field_links + - field.field.paragraph.featured_links.field_title + - paragraphs.paragraphs_type.featured_links + module: + - limited_field_widgets + - link + - maxlength +id: paragraph.featured_links.default +targetEntityType: paragraph +bundle: featured_links +mode: default +content: + field_links: + type: link_default + weight: 2 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: + maxlength: + maxlength_js: null + maxlength_js_label: 'Content limited to @limit characters, remaining: @remaining' + maxlength_js_enforce: false + limited_field_widgets: + limit_values: '4' + field_title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml b/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml new file mode 100644 index 0000000000..fc9038299f --- /dev/null +++ b/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml @@ -0,0 +1,37 @@ +uuid: c18ebd1b-023a-4798-9cc2-4c50b7273a94 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.featured_links.field_links + - field.field.paragraph.featured_links.field_title + - paragraphs.paragraphs_type.featured_links + module: + - epa_links +id: paragraph.featured_links.default +targetEntityType: paragraph +bundle: featured_links +mode: default +content: + field_links: + type: epa_links_link_with_entity_title_or_link_text + label: hidden + settings: + trim_length: '' + url_only: false + url_plain: false + rel: 0 + target: 0 + third_party_settings: { } + weight: 2 + region: content + field_title: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/services/drupal/config/sync/field.field.paragraph.featured_links.field_links.yml b/services/drupal/config/sync/field.field.paragraph.featured_links.field_links.yml new file mode 100644 index 0000000000..fe5b4f1a82 --- /dev/null +++ b/services/drupal/config/sync/field.field.paragraph.featured_links.field_links.yml @@ -0,0 +1,23 @@ +uuid: 7331cb7a-8819-48d4-a255-a6ba62a7bad8 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_links + - paragraphs.paragraphs_type.featured_links + module: + - link +id: paragraph.featured_links.field_links +field_name: field_links +entity_type: paragraph +bundle: featured_links +label: Links +description: '' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 1 + link_type: 17 +field_type: link diff --git a/services/drupal/config/sync/field.field.paragraph.featured_links.field_title.yml b/services/drupal/config/sync/field.field.paragraph.featured_links.field_title.yml new file mode 100644 index 0000000000..5652c986ed --- /dev/null +++ b/services/drupal/config/sync/field.field.paragraph.featured_links.field_title.yml @@ -0,0 +1,21 @@ +uuid: 86cf6813-7597-4437-abc8-011fa1dd6376 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_title + - paragraphs.paragraphs_type.featured_links +id: paragraph.featured_links.field_title +field_name: field_title +entity_type: paragraph +bundle: featured_links +label: Headline +description: '' +required: true +translatable: false +default_value: + - + value: 'Popular links' +default_value_callback: '' +settings: { } +field_type: string diff --git a/services/drupal/config/sync/paragraphs.paragraphs_type.featured_links.yml b/services/drupal/config/sync/paragraphs.paragraphs_type.featured_links.yml new file mode 100644 index 0000000000..a536c1de51 --- /dev/null +++ b/services/drupal/config/sync/paragraphs.paragraphs_type.featured_links.yml @@ -0,0 +1,10 @@ +uuid: 9ede5a0e-5556-4c87-bf20-1f66ecb8bae8 +langcode: en +status: true +dependencies: { } +id: featured_links +label: 'Featured links' +icon_uuid: null +icon_default: null +description: 'Use Featured links to promote up to 4 links to be featured to users.' +behavior_plugins: { } From 0257f8f2640754013e73444cd9ee8a327e3bd024 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Mon, 15 Jul 2024 11:34:28 -0500 Subject: [PATCH 15/75] [EPAD8-2479] Adding Featured links paragraph to Web Area homepage. --- .../field.field.node.web_area.field_paragraphs.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml index 18b80ea5ef..b6005de797 100644 --- a/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml @@ -9,18 +9,14 @@ dependencies: - paragraphs.paragraphs_type.box - paragraphs.paragraphs_type.card_group - paragraphs.paragraphs_type.dynamic_list + - paragraphs.paragraphs_type.featured_links - paragraphs.paragraphs_type.from_library - paragraphs.paragraphs_type.header - paragraphs.paragraphs_type.html - paragraphs.paragraphs_type.link_list - paragraphs.paragraphs_type.slideshow module: - - custom_add_another - entity_reference_revisions -third_party_settings: - custom_add_another: - custom_add_another: '' - custom_remove: '' id: node.web_area.field_paragraphs field_name: field_paragraphs entity_type: node @@ -44,6 +40,7 @@ settings: from_library: from_library card_group: card_group before_after_swipe_component: before_after_swipe_component + featured_links: featured_links negate: 0 target_bundles_drag_drop: applicants_or_respondents: @@ -79,6 +76,9 @@ settings: dynamic_list: weight: -42 enabled: true + featured_links: + weight: 38 + enabled: true frc: weight: -34 enabled: false From a3c2bf8870b960fc6be4ed2a8b7d38afb7e3cd02 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 16 Jul 2024 00:52:19 -0700 Subject: [PATCH 16/75] [EPAD8-2455] Add replacements for views and forms --- .../custom/epa_snapshot/epa_snapshot.info.yml | 3 +- .../EventSubscriber/EpaSnapshotSubscriber.php | 145 +++++++++++++++++- .../listing-pages/listing-page.twig | 1 + 3 files changed, 145 insertions(+), 4 deletions(-) diff --git a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml index 1e4177ac7d..9c6a53537e 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml +++ b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.info.yml @@ -2,7 +2,6 @@ name: EPA Snapshot type: module description: All custom code required for EPA to create a static snapshot of the site using Tome. package: Tome -core: 8.x -core_version_requirement: ^8 || ^9 +core_version_requirement: ^9 || ^10 dependencies: - tome:tome_static diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index 0f9cd1e307..fc83a67e22 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -18,6 +18,7 @@ class EpaSnapshotSubscriber implements EventSubscriberInterface { * The ModifyHtmlEvent from Tome. * * @return void + * Nothing. */ public function onModifyHtml(ModifyHtmlEvent $event) { $html = $event->getHtml(); @@ -34,6 +35,50 @@ public function onModifyHtml(ModifyHtmlEvent $event) { // official website of the United States Government" banner found on all // pages. $xpath = new \DOMXPath($doc); + + // Add the alert markup. + $this->addAlertMarkup($xpath, $doc); + + // Disable all form elements. + $this->removeFormElements($xpath, $doc); + + // Add search listing replacement. + $this->addListingReplacement($xpath, $doc); + + $event->setHtml($doc->saveHTML()); + } + + /** + * Helper method to check and set alert markup. + * + * @param \DOMXPath $xpath + * The DOMXPath object. + * @param \DOMDocument $doc + * The DOM Document we're working with. + * + * @return void + * Nothing. + */ + protected function removeFormElements(\DOMXPath $xpath, \DOMDocument &$doc) { + $forms = $xpath->query('//form'); + + foreach ($forms as $form) { + $form->parentNode->removeChild($form); + } + } + + /** + * Helper method to check and set alert markup. + * + * @param \DOMXPath $xpath + * The DOMXPath object. + * @param \DOMDocument $doc + * The DOM Document we're working with. + * + * @return void + * Nothing. + */ + protected function addAlertMarkup(\DOMXPath $xpath, \DOMDocument &$doc) { $section = $xpath->query('//section[@class="usa-banner"]')->item(0); if ($section) { @@ -49,8 +94,31 @@ public function onModifyHtml(ModifyHtmlEvent $event) { $section->parentNode->appendChild($alert); } } + } - $event->setHtml($doc->saveHTML()); + /** + * Helper method to check and set alert markup. + * + * @param \DOMXPath $xpath + * The DOMXPath object. + * @param \DOMDocument $doc + * The DOM Document we're working with. + * + * @return void + * Nothing. + */ + protected function addListingReplacement(\DOMXPath $xpath, \DOMDocument &$doc) { + // Select the listing wrapper. + $listing_wrapper = $xpath->query('//div[contains(@class, "epa-listing-page")]//div[contains(@class, "l-sidebar-first")]')->item(0); + + // If listing wrapper replace page title and listing wrapper. + if ($listing_wrapper) { + $title = $xpath->query('//h1')->item(0); + $title->nodeValue = 'January 19, 2025 Snapshot'; + + $listing_replacement = $this->createListingReplacementMarkup($doc); + $listing_wrapper->parentNode->replaceChild($listing_replacement, $listing_wrapper); + } } /** @@ -62,7 +130,7 @@ public function onModifyHtml(ModifyHtmlEvent $event) { * @return \DOMDocumentFragment|false * The alert markup DOM Document fragment. */ - public function createAlertMarkup(\DOMDocument $doc) { + protected function createAlertMarkup(\DOMDocument $doc) { $fragment = $doc->createDocumentFragment(); $markup = '
@@ -90,6 +158,79 @@ public function createAlertMarkup(\DOMDocument $doc) { return $fragment; } + /** + * Helper method to generate snapshot listing page replacement. + * + * @param \DOMDocument $doc + * The DOM Document we're working with. + * + * @return \DOMDocumentFragment|false + * The alert markup DOM Document fragment. + */ + protected function createListingReplacementMarkup(\DOMDocument $doc) { + $fragment = $doc->createDocumentFragment(); + $markup = ' +

+ You have reached the help page for the January 19, 2025 Web Snapshot. This is + not the current EPA website. + To navigate to the current EPA website, please go to + www.epa.gov. +

+ +

What is included in the Web Snapshot?

+ +

+ The Web Snapshot consists of static content, such as webpages and reports in + Portable Document Format (PDF), as that content appeared on EPA\'s website as + of January 19, 2025. +

+ +

What is not included in the Web Snapshot?

+ +

+ There are technical limitations to what could be included in the Web Snapshot. + For example, many of the links from EPA\'s website are to databases that are + updated with new information on a regular basis. These databases are not part + of the static content that comprises the Web Snapshot. Links in the Web + Snapshot to dynamic databases will take you to the current version of the + database. Searches there will yield the latest data, rather than the data that + would have been returned for a search conducted on January 19, 2025. Alerts + should appear when you are leaving the Web Snapshot and linking elsewhere. +

+

Contact us and other forms have all been disabled.

+ +

+ Links may have been broken in the website as it appeared on January 19, 2025. + Those links will appear as broken on the Web Snapshot. Likewise, links which + may have been working on January 19, 2025 but are now no longer active will + appear as broken links in the Web Snapshot. +

+ +

+ Finally, certain dynamic collections of content were not included in the + Snapshot due to their size. Those collections remain available on the current + EPA website at the following links: +

+ + '; + + $fragment->appendXML($markup); + return $fragment; + } + /** * {@inheritdoc} */ diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig b/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig index 6ac0138ebe..74a5a53610 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig +++ b/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig @@ -35,6 +35,7 @@ {% embed '@layouts/page/page.twig' with { 'has_header': has_header, 'has_footer': has_footer, + 'modifier_classes': 'epa-listing-page', } %} {% block info %} {{ header_info }} From c406632b4c7b746b12a2c44aa4d139cda677da8e Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Wed, 17 Jul 2024 08:06:46 -0500 Subject: [PATCH 17/75] [EPAD8-2479] Adding featured_links to Wide Content field on Web Area Homepage nodes. --- ...field.node.web_area.field_wide_content.yml | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml b/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml index 8405187c96..8c0707ab92 100644 --- a/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml +++ b/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml @@ -9,6 +9,7 @@ dependencies: - paragraphs.paragraphs_type.box - paragraphs.paragraphs_type.card_group - paragraphs.paragraphs_type.dynamic_list + - paragarphs.paragraphs_type.featured_links - paragraphs.paragraphs_type.from_library - paragraphs.paragraphs_type.graphic_list - paragraphs.paragraphs_type.header @@ -42,6 +43,7 @@ settings: box: box card_group: card_group dynamic_list: dynamic_list + featured_links: featured_links from_library: from_library header: header html: html @@ -85,46 +87,49 @@ settings: dynamic_list: weight: -41 enabled: true - frc: + featured_links: weight: -40 + enabled: true + frc: + weight: -39 enabled: false from_library: - weight: -39 + weight: -38 enabled: true graphic_list: - weight: -34 + weight: -37 enabled: true header: - weight: -38 + weight: -36 enabled: true html: - weight: -37 + weight: -35 enabled: true legal_authorities: - weight: -36 + weight: -34 enabled: false link_list: - weight: -35 + weight: -33 enabled: true locations_of_prop_actions: - weight: -33 + weight: -32 enabled: false media_block: - weight: -32 + weight: -31 enabled: false press_officers: - weight: -31 + weight: -30 enabled: false section: weight: -29 enabled: true slide: - weight: -30 + weight: -38 enabled: false slideshow: - weight: -28 + weight: -27 enabled: true tagline: - weight: -27 + weight: -26 enabled: false field_type: entity_reference_revisions From b11d5c9df6c8f25bf1f3087c20d558d38727c2b7 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Wed, 17 Jul 2024 08:34:48 -0500 Subject: [PATCH 18/75] [EPAD8-2479] Updating config. --- .../field.field.node.web_area.field_wide_content.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml b/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml index 8c0707ab92..cdaff919ca 100644 --- a/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml +++ b/services/drupal/config/sync/field.field.node.web_area.field_wide_content.yml @@ -9,7 +9,7 @@ dependencies: - paragraphs.paragraphs_type.box - paragraphs.paragraphs_type.card_group - paragraphs.paragraphs_type.dynamic_list - - paragarphs.paragraphs_type.featured_links + - paragraphs.paragraphs_type.featured_links - paragraphs.paragraphs_type.from_library - paragraphs.paragraphs_type.graphic_list - paragraphs.paragraphs_type.header @@ -17,14 +17,8 @@ dependencies: - paragraphs.paragraphs_type.link_list - paragraphs.paragraphs_type.section - paragraphs.paragraphs_type.slideshow - - paragraphs.paragraphs_type.tagline module: - - custom_add_another - entity_reference_revisions -third_party_settings: - custom_add_another: - custom_add_another: '' - custom_remove: '' id: node.web_area.field_wide_content field_name: field_wide_content entity_type: node @@ -45,13 +39,12 @@ settings: dynamic_list: dynamic_list featured_links: featured_links from_library: from_library + graphic_list: graphic_list header: header html: html link_list: link_list - graphic_list: graphic_list section: section slideshow: slideshow - tagline: tagline negate: 0 target_bundles_drag_drop: applicants_or_respondents: From ae09df339b2ce86fdcf009e90c0ff861b9daf11b Mon Sep 17 00:00:00 2001 From: Deborah Fuzetto <11602-drfuzetto@users.noreply.drupalcode.org> Date: Wed, 24 Jul 2024 12:28:18 -0600 Subject: [PATCH 19/75] EPAD8-2465: Upgrade to PHP 8.2. --- services/drupal/.ddev/config.yaml | 2 +- services/drupal/.ddev/docker-compose.aws.yaml | 1 - .../.ddev/docker-compose.elasticsearch.yaml | 1 - .../drupal/.ddev/docker-compose.gesso.yaml | 1 - .../.ddev/docker-compose.localstack.yaml | 1 - .../.ddev/docker-compose.memcached.yaml | 4 +- .../drupal/.ddev/docker-compose.minio.yaml | 2 - .../drupal/.ddev/docker-compose.mysql.yaml | 2 - .../.ddev/docker-compose.simplesaml.yaml | 2 - .../drupal/.ddev/docker-compose.volumes.yaml | 1 - services/drupal/Dockerfile | 8 +- services/drupal/composer.json | 10 +- services/drupal/composer.lock | 399 +++++------------- services/drupal/composer.patches.json | 9 +- services/drupal/phpstan.neon.dist | 2 +- 15 files changed, 114 insertions(+), 331 deletions(-) diff --git a/services/drupal/.ddev/config.yaml b/services/drupal/.ddev/config.yaml index 9265a1534b..545321868f 100644 --- a/services/drupal/.ddev/config.yaml +++ b/services/drupal/.ddev/config.yaml @@ -1,7 +1,7 @@ name: epa type: drupal9 docroot: web -php_version: "8.1" +php_version: "8.2" webserver_type: nginx-fpm router_http_port: "80" router_https_port: "443" diff --git a/services/drupal/.ddev/docker-compose.aws.yaml b/services/drupal/.ddev/docker-compose.aws.yaml index c97a0d37e2..be14ffae3f 100644 --- a/services/drupal/.ddev/docker-compose.aws.yaml +++ b/services/drupal/.ddev/docker-compose.aws.yaml @@ -1,4 +1,3 @@ -version: "3.6" services: # AWS cli image set to talk to Minio. `f1 run aws s3 [ARG...]' is the replacement for # `aws s3 [ARG...]' with overrides set. diff --git a/services/drupal/.ddev/docker-compose.elasticsearch.yaml b/services/drupal/.ddev/docker-compose.elasticsearch.yaml index a78c2c423d..776d4b6d5b 100644 --- a/services/drupal/.ddev/docker-compose.elasticsearch.yaml +++ b/services/drupal/.ddev/docker-compose.elasticsearch.yaml @@ -1,4 +1,3 @@ -version: '3.6' services: elasticsearch: container_name: ddev-${DDEV_SITENAME}-elasticsearch diff --git a/services/drupal/.ddev/docker-compose.gesso.yaml b/services/drupal/.ddev/docker-compose.gesso.yaml index 23e51f8170..e1d633f9c2 100644 --- a/services/drupal/.ddev/docker-compose.gesso.yaml +++ b/services/drupal/.ddev/docker-compose.gesso.yaml @@ -1,4 +1,3 @@ -version: '3.6' services: gesso: container_name: ddev-${DDEV_SITENAME}-gesso diff --git a/services/drupal/.ddev/docker-compose.localstack.yaml b/services/drupal/.ddev/docker-compose.localstack.yaml index 8a8470e83b..61b7076f33 100644 --- a/services/drupal/.ddev/docker-compose.localstack.yaml +++ b/services/drupal/.ddev/docker-compose.localstack.yaml @@ -1,4 +1,3 @@ -version: "3.6" services: localstack: container_name: ddev-${DDEV_SITENAME}-localstack diff --git a/services/drupal/.ddev/docker-compose.memcached.yaml b/services/drupal/.ddev/docker-compose.memcached.yaml index 614e978b18..b3a889fae5 100644 --- a/services/drupal/.ddev/docker-compose.memcached.yaml +++ b/services/drupal/.ddev/docker-compose.memcached.yaml @@ -1,5 +1,3 @@ -version: '3.6' - services: memcached: container_name: ddev-${DDEV_SITENAME}-memcached @@ -17,4 +15,4 @@ services: - ".:/mnt/ddev_config" web: links: - - memcached:memcached \ No newline at end of file + - memcached:memcached diff --git a/services/drupal/.ddev/docker-compose.minio.yaml b/services/drupal/.ddev/docker-compose.minio.yaml index b60e40664b..39c3db1d66 100644 --- a/services/drupal/.ddev/docker-compose.minio.yaml +++ b/services/drupal/.ddev/docker-compose.minio.yaml @@ -1,5 +1,3 @@ -version: "3.6" - services: minio: container_name: ddev-${DDEV_SITENAME}-minio diff --git a/services/drupal/.ddev/docker-compose.mysql.yaml b/services/drupal/.ddev/docker-compose.mysql.yaml index d1a372905f..cb16e5da29 100644 --- a/services/drupal/.ddev/docker-compose.mysql.yaml +++ b/services/drupal/.ddev/docker-compose.mysql.yaml @@ -1,5 +1,3 @@ -version: "3.6" - services: mysql: container_name: ddev-${DDEV_SITENAME}-mysql diff --git a/services/drupal/.ddev/docker-compose.simplesaml.yaml b/services/drupal/.ddev/docker-compose.simplesaml.yaml index 06c2ff18a3..d679968c51 100644 --- a/services/drupal/.ddev/docker-compose.simplesaml.yaml +++ b/services/drupal/.ddev/docker-compose.simplesaml.yaml @@ -1,5 +1,3 @@ -version: "3.6" - services: simplesaml: container_name: ddev-${DDEV_SITENAME}-simplesaml diff --git a/services/drupal/.ddev/docker-compose.volumes.yaml b/services/drupal/.ddev/docker-compose.volumes.yaml index 15dedcc3ca..239d0eed43 100644 --- a/services/drupal/.ddev/docker-compose.volumes.yaml +++ b/services/drupal/.ddev/docker-compose.volumes.yaml @@ -1,4 +1,3 @@ -version: "3.6" services: web: volumes: diff --git a/services/drupal/Dockerfile b/services/drupal/Dockerfile index 283713d442..7b09d23c83 100644 --- a/services/drupal/Dockerfile +++ b/services/drupal/Dockerfile @@ -1,4 +1,4 @@ -FROM public.ecr.aws/docker/library/php:8.1-fpm-alpine AS memcached-ext +FROM public.ecr.aws/docker/library/php:8.2-fpm-alpine AS memcached-ext # Set working directory to /tmp WORKDIR /tmp @@ -23,7 +23,7 @@ RUN set -ex \ && make \ && make install -FROM public.ecr.aws/docker/library/php:8.1-fpm-alpine AS base +FROM public.ecr.aws/docker/library/php:8.2-fpm-alpine AS base # Bump system packages RUN apk upgrade @@ -149,7 +149,7 @@ RUN composer install \ RUN rm auth.json # Build Gesso, the WebCMS' theme -FROM forumone/gesso:3-node-v18-php-8.1 AS gesso +FROM forumone/gesso:3-node-v18-php-8.2 AS gesso WORKDIR /app @@ -236,7 +236,7 @@ CMD [ "nginx", "-g", "daemon off;" ] # Build a drush-specific image: this image includes command-line utilities such as mysql # and ssh that are inappropriate for a server container image. -FROM public.ecr.aws/docker/library/php:8.1-cli-alpine AS drush +FROM public.ecr.aws/docker/library/php:8.2-cli-alpine AS drush # Bump system packages RUN apk upgrade diff --git a/services/drupal/composer.json b/services/drupal/composer.json index 2372dd776e..a51ecc7e7e 100644 --- a/services/drupal/composer.json +++ b/services/drupal/composer.json @@ -153,7 +153,7 @@ } ], "require": { - "php": ">=8.1", + "php": ">=8.2", "briancherne/jquery-hoverintent": "^1.10", "ckeditor-plugin/fakeobjects": "^4.15", "ckeditor-plugin/iframe": "^4.15", @@ -171,7 +171,7 @@ "drupal/anchor_link": "3.0.x-dev", "drupal/auto_entitylabel": "^3.0", "drupal/autologout": "^1.3", - "drupal/autosave_form": "^1.3", + "drupal/autosave_form": "^1.6", "drupal/block_content_permissions": "^1.8", "drupal/block_list_override": "^1.0", "drupal/ckeditor": "^1.0", @@ -217,7 +217,7 @@ "drupal/filter_html_plus": "^2.0", "drupal/fixed_block_content": "^1.1", "drupal/flag": "^4.0@beta", - "drupal/flood_control": "^2.1", + "drupal/flood_control": "^2.3", "drupal/focal_point": "^2.0@alpha", "drupal/gcontent_moderation": "1.x-dev", "drupal/gin": "^3.0", @@ -289,7 +289,7 @@ "drupal/twig_field_value": "^2.0", "drupal/twig_tweak": "^3.2", "drupal/ultimate_cron": "^2.0-alpha5", - "drupal/upgrade_status": "^4.0", + "drupal/upgrade_status": "^4.3", "drupal/user_permission_condition": "^1.1", "drupal/uswds_ckeditor_integration": "^2.0", "drupal/view_modes_display": "^3.0", @@ -342,7 +342,7 @@ "ext-gd": "1.0.0", "ext-opcache": "1.0.0", "ext-pdo": "1.0.0", - "php": "8.1.16" + "php": "8.2" }, "allow-plugins": { "composer/installers": true, diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index 68f95ee368..648178b750 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/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": "67bf378652e5b608f05818e75ed6ca34", + "content-hash": "953f6a232824332776129464129bb695", "packages": [ { "name": "algolia/places", @@ -1329,6 +1329,55 @@ }, "type": "drupal-library" }, + { + "name": "dekor/php-array-table", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/deniskoronets/php-array-table.git", + "reference": "ca40b21ba84eee6a9658a33fc5f897d76baaf8e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/deniskoronets/php-array-table/zipball/ca40b21ba84eee6a9658a33fc5f897d76baaf8e5", + "reference": "ca40b21ba84eee6a9658a33fc5f897d76baaf8e5", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^10" + }, + "type": "library", + "autoload": { + "psr-4": { + "dekor\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Denis Koronets", + "email": "deniskoronets@woo.zp.ua", + "homepage": "https://woo.zp.ua/" + } + ], + "description": "PHP Library for printing associative arrays as text table (similar to mysql terminal console)", + "keywords": [ + "library", + "php" + ], + "support": { + "issues": "https://github.com/deniskoronets/php-array-table/issues", + "source": "https://github.com/deniskoronets/php-array-table/tree/2.0" + }, + "time": "2023-02-10T10:13:42+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.2", @@ -2566,26 +2615,26 @@ }, { "name": "drupal/autosave_form", - "version": "1.4.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/autosave_form.git", - "reference": "8.x-1.4" + "reference": "8.x-1.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/autosave_form-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "b1e99ff38d11986b311dac91f7d2cfcfb2152875" + "url": "https://ftp.drupal.org/files/projects/autosave_form-8.x-1.6.zip", + "reference": "8.x-1.6", + "shasum": "f0ed6303b886570a2dcc7e7e4580b45d8245c83a" }, "require": { - "drupal/core": "^9 || ^10" + "drupal/core": "^9.5 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.4", - "datestamp": "1664203243", + "version": "8.x-1.6", + "datestamp": "1719140847", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6053,17 +6102,17 @@ }, { "name": "drupal/flood_control", - "version": "2.3.2", + "version": "2.3.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/flood_control.git", - "reference": "2.3.2" + "reference": "2.3.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/flood_control-2.3.2.zip", - "reference": "2.3.2", - "shasum": "a4381858a24ae684cdcdc0952011f76cb2a22eee" + "url": "https://ftp.drupal.org/files/projects/flood_control-2.3.4.zip", + "reference": "2.3.4", + "shasum": "dcb5d8dd52501489caff222b3d7f66e80bf6b044" }, "require": { "drupal/core": "^9 || ^10" @@ -6071,8 +6120,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.3.2", - "datestamp": "1677856736", + "version": "2.3.4", + "datestamp": "1713292696", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -10807,32 +10856,35 @@ }, { "name": "drupal/upgrade_status", - "version": "4.0.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/upgrade_status.git", - "reference": "4.0.0" + "reference": "4.3.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/upgrade_status-4.0.0.zip", - "reference": "4.0.0", - "shasum": "013afdb46a03c9db0119cb1ce60ca49631d64368" + "url": "https://ftp.drupal.org/files/projects/upgrade_status-4.3.1.zip", + "reference": "4.3.1", + "shasum": "18390306878f8abe2c2c68d471217655e5b7b31c" }, "require": { + "dekor/php-array-table": "^2.0", "drupal/core": "^9 || ^10", - "mathieuviossat/arraytotexttable": "~1.0.0", "mglaman/phpstan-drupal": "^1.0.0", - "nikic/php-parser": "^4.0.0", + "nikic/php-parser": "^4.0.0|^5.0.0", "phpstan/phpstan-deprecation-rules": "^1.0.0", "symfony/process": "^3.4|^4.0|^5.0|^6.0", "webflo/drupal-finder": "^1.2" }, + "require-dev": { + "drush/drush": "^11|^12" + }, "type": "drupal-module", "extra": { "drupal": { - "version": "4.0.0", - "datestamp": "1678815090", + "version": "4.3.1", + "datestamp": "1714463117", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -10849,29 +10901,9 @@ "GPL-2.0-or-later" ], "authors": [ - { - "name": "colan", - "homepage": "https://www.drupal.org/user/58704" - }, { "name": "Gรกbor Hojtsy", "homepage": "https://www.drupal.org/user/4166" - }, - { - "name": "herczogzoltan", - "homepage": "https://www.drupal.org/user/3528391" - }, - { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" - }, - { - "name": "webchick", - "homepage": "https://www.drupal.org/user/24967" - }, - { - "name": "xjm", - "homepage": "https://www.drupal.org/user/65776" } ], "description": "Review Drupal major upgrade readiness of the environment and components of the site.", @@ -13161,213 +13193,6 @@ }, "time": "2019-10-17T18:05:24+00:00" }, - { - "name": "laminas/laminas-servicemanager", - "version": "3.15.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "65910ef6a8066b0369fab77fbec9e030be59c866" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/65910ef6a8066b0369fab77fbec9e030be59c866", - "reference": "65910ef6a8066b0369fab77fbec9e030be59c866", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0", - "laminas/laminas-stdlib": "^3.2.1", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0", - "psr/container": "^1.1 || ^2.0.2" - }, - "conflict": { - "ext-psr": "*", - "laminas/laminas-code": "<3.3.1", - "zendframework/zend-code": "<3.3.1", - "zendframework/zend-servicemanager": "*" - }, - "provide": { - "psr/container-implementation": "^1.1 || ^2.0" - }, - "replace": { - "container-interop/container-interop": "^1.2.0" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", - "mikey179/vfsstream": "^1.6.10@alpha", - "ocramius/proxy-manager": "^2.11", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.8" - }, - "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" - }, - "bin": [ - "bin/generate-deps-for-config-factory", - "bin/generate-factory-for-class" - ], - "type": "library", - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ServiceManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Factory-Driven Dependency Injection Container", - "homepage": "https://laminas.dev", - "keywords": [ - "PSR-11", - "dependency-injection", - "di", - "dic", - "laminas", - "service-manager", - "servicemanager" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-servicemanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-servicemanager/issues", - "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", - "source": "https://github.com/laminas/laminas-servicemanager" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2022-07-18T21:18:56+00:00" - }, - { - "name": "laminas/laminas-stdlib", - "version": "3.19.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "6a192dd0882b514e45506f533b833b623b78fff3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", - "reference": "6a192dd0882b514e45506f533b833b623b78fff3", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "conflict": { - "zendframework/zend-stdlib": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.15", - "phpunit/phpunit": "^10.5.8", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.20.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Stdlib\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "SPL extensions, array utilities, error handlers, and more", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "stdlib" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-stdlib/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-stdlib/issues", - "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", - "source": "https://github.com/laminas/laminas-stdlib" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-01-19T12:39:49+00:00" - }, - { - "name": "laminas/laminas-text", - "version": "2.9.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-text.git", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/8879e75d03e09b0d6787e6680cfa255afd4645a7", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7", - "shasum": "" - }, - "require": { - "laminas/laminas-servicemanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "conflict": { - "zendframework/zend-text": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Text\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Create FIGlets and text-based tables", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "text" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-text/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-text/issues", - "rss": "https://github.com/laminas/laminas-text/releases.atom", - "source": "https://github.com/laminas/laminas-text" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-09-02T16:50:53+00:00" - }, { "name": "league/container", "version": "4.2.0", @@ -13712,57 +13537,6 @@ }, "time": "2023-05-10T11:58:31+00:00" }, - { - "name": "mathieuviossat/arraytotexttable", - "version": "v1.0.9", - "source": { - "type": "git", - "url": "https://github.com/viossat/arraytotexttable.git", - "reference": "518ec338fe62e92c064a9d3d3bc8c64fb6e77d1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/viossat/arraytotexttable/zipball/518ec338fe62e92c064a9d3d3bc8c64fb6e77d1c", - "reference": "518ec338fe62e92c064a9d3d3bc8c64fb6e77d1c", - "shasum": "" - }, - "require": { - "laminas/laminas-text": "^2.9", - "php": ">=5.3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "MathieuViossat\\Util\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mathieu Viossat", - "email": "mathieu@viossat.fr", - "homepage": "https://viossat.fr" - } - ], - "description": "Display arrays in terminal", - "homepage": "https://github.com/viossat/arraytotexttable", - "keywords": [ - "array", - "ascii", - "table", - "terminal", - "text", - "unicode" - ], - "support": { - "issues": "https://github.com/viossat/arraytotexttable/issues", - "source": "https://github.com/viossat/arraytotexttable/tree/v1.0.9" - }, - "time": "2022-08-30T15:33:10+00:00" - }, { "name": "mck89/peast", "version": "v1.15.4", @@ -15051,6 +14825,21 @@ "MIT" ] }, + { + "name": "progress-tracker/progress-tracker", + "version": "2.0.7", + "dist": { + "type": "zip", + "url": "https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip" + }, + "type": "drupal-library", + "extra": { + "installer-name": "progress-tracker" + }, + "license": [ + "MIT" + ] + }, { "name": "psr/cache", "version": "3.0.0", @@ -24203,14 +23992,14 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.1" + "php": ">=8.2" }, "platform-dev": [], "platform-overrides": { "ext-gd": "1.0.0", "ext-opcache": "1.0.0", "ext-pdo": "1.0.0", - "php": "8.1.16" + "php": "8.2" }, "plugin-api-version": "2.6.0" } diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index c48a5fd494..ce9c303399 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -54,7 +54,8 @@ "Access to Revisions of Group Content is Broken": "https://www.drupal.org/files/issues/2022-03-30/group-3256998-35.patch", "Fix uasort deprecation notice in PHP 8": "https://www.drupal.org/files/issues/2021-04-26/uasort-comparison-3210808-2.patch", "Fix translation issue on permissions page": "https://www.drupal.org/files/issues/2022-07-27/group-3294949-2.patch", - "Duplicate revision tab": "patches/145.diff" + "Duplicate revision tab": "patches/145.diff", + "Fix deprecated code": "https://www.drupal.org/files/issues/2023-07-25/3349565-6.patch" }, "drupal/groupmedia": { "Display media bundles in alpha order": "https://www.drupal.org/files/issues/2020-10-20/groupmedia-order_bundles-3178034-3.patch" @@ -246,6 +247,12 @@ }, "drupal/address_formatter": { "Automated Drupal 10 compatibility fixes": "https://www.drupal.org/files/issues/2022-07-18/address_formatter.2.0-alpha5.rector.patch" + }, + "drupal/mediaelement": { + "Fix deprecated code.": "https://www.drupal.org/files/issues/2023-10-26/3396834-3.patch" + }, + "drupal/ultimate_cron": { + "Fix deprecated code.": "https://www.drupal.org/files/issues/2023-04-03/3351276-4.patch" } } } diff --git a/services/drupal/phpstan.neon.dist b/services/drupal/phpstan.neon.dist index f639f352c8..c8b3dea7e1 100644 --- a/services/drupal/phpstan.neon.dist +++ b/services/drupal/phpstan.neon.dist @@ -5,7 +5,7 @@ parameters: level: 4 # https://phpstan.org/config-reference#phpversion - phpVersion: 80000 + phpVersion: 80100 # https://phpstan.org/config-reference#inferprivatepropertytypefromconstructor inferPrivatePropertyTypeFromConstructor: true From 7bec9270dd9eea0cf7362cfaf51d19f569431cca Mon Sep 17 00:00:00 2001 From: Deborah Fuzetto <11602-drfuzetto@users.noreply.drupalcode.org> Date: Wed, 24 Jul 2024 12:51:47 -0600 Subject: [PATCH 20/75] EPAD8-2465: Update Dockerfile. --- services/drupal/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/drupal/Dockerfile b/services/drupal/Dockerfile index 7b09d23c83..e3e0c8899f 100644 --- a/services/drupal/Dockerfile +++ b/services/drupal/Dockerfile @@ -149,7 +149,7 @@ RUN composer install \ RUN rm auth.json # Build Gesso, the WebCMS' theme -FROM forumone/gesso:3-node-v18-php-8.2 AS gesso +FROM forumone/gesso:3-node-v18-php-8.1 AS gesso WORKDIR /app From 85672f96db7ee9df960eeb5febb775b408edf851 Mon Sep 17 00:00:00 2001 From: Deborah Fuzetto <11602-drfuzetto@users.noreply.drupalcode.org> Date: Wed, 24 Jul 2024 13:07:31 -0600 Subject: [PATCH 21/75] EPAD8-2465: Update Dockerfile. --- services/drupal/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/drupal/Dockerfile b/services/drupal/Dockerfile index e3e0c8899f..f19f84d53f 100644 --- a/services/drupal/Dockerfile +++ b/services/drupal/Dockerfile @@ -1,4 +1,4 @@ -FROM public.ecr.aws/docker/library/php:8.2-fpm-alpine AS memcached-ext +FROM public.ecr.aws/docker/library/php:8.1-fpm-alpine AS memcached-ext # Set working directory to /tmp WORKDIR /tmp @@ -23,7 +23,7 @@ RUN set -ex \ && make \ && make install -FROM public.ecr.aws/docker/library/php:8.2-fpm-alpine AS base +FROM public.ecr.aws/docker/library/php:8.1-fpm-alpine AS base # Bump system packages RUN apk upgrade From bc8b4abf2fe503ed1737c3e99a811d1597805a72 Mon Sep 17 00:00:00 2001 From: gustavderdrache Date: Wed, 24 Jul 2024 16:54:35 -0400 Subject: [PATCH 22/75] Upgrade PHP to 8.2 --- services/drupal/Dockerfile | 48 +++++--------------------------------- 1 file changed, 6 insertions(+), 42 deletions(-) diff --git a/services/drupal/Dockerfile b/services/drupal/Dockerfile index f19f84d53f..d2e9698cb3 100644 --- a/services/drupal/Dockerfile +++ b/services/drupal/Dockerfile @@ -1,29 +1,4 @@ -FROM public.ecr.aws/docker/library/php:8.1-fpm-alpine AS memcached-ext - -# Set working directory to /tmp -WORKDIR /tmp - -# First, install compile-time dependencies -RUN apk add --no-cache $PHPIZE_DEPS libmemcached-dev zlib-dev - -# Next, install the prequisite igbinary extension -RUN pecl install igbinary - -# Finally, build and install memcached. We have to do this instead of the -# traditional pecl install method because we pass custom flags to memcached's -# ./configure script, which does not appear to be supported by the pecl command. -RUN set -ex \ - && PECL_MEMCACHED_VERSION=3.2.0 \ - && cd /tmp \ - && pecl download memcached-$PECL_MEMCACHED_VERSION \ - && tar xzf memcached-$PECL_MEMCACHED_VERSION.tgz \ - && cd memcached-$PECL_MEMCACHED_VERSION \ - && phpize \ - && ./configure --enable-memcached-igbinary \ - && make \ - && make install - -FROM public.ecr.aws/docker/library/php:8.1-fpm-alpine AS base +FROM public.ecr.aws/docker/library/php:8.2-fpm-alpine AS base # Bump system packages RUN apk upgrade @@ -48,15 +23,9 @@ RUN set -ex \ WORKDIR /var/www/html -# Copy and enable the memcached extension (and its dependency, igbinary) -COPY --from=memcached-ext \ - /usr/local/lib/php/extensions/no-debug-non-zts-20210902/igbinary.so \ - /usr/local/lib/php/extensions/no-debug-non-zts-20210902/memcached.so \ - /usr/local/lib/php/extensions/no-debug-non-zts-20210902/ -RUN docker-php-ext-enable igbinary && docker-php-ext-enable memcached - -# APK packages needed by this image -RUN install-php-extensions apcu sockets \ +# PHP packages needed by this image +RUN install-php-extensions apcu sockets igbinary memcached \ + # APK packages needed by this image && apk add --no-cache \ # Needed by the memcached extension libmemcached \ @@ -250,6 +219,8 @@ RUN set -ex \ opcache \ pdo_mysql \ zip \ + igbinary \ + memcached \ && apk add --no-cache \ mysql-client \ openssh \ @@ -262,13 +233,6 @@ RUN set -ex \ ENV PATH=${PATH}:/var/www/html/vendor/bin WORKDIR /var/www/html -# Copy and enable the memcached extension (and its dependency, igbinary) -COPY --from=memcached-ext \ - /usr/local/lib/php/extensions/no-debug-non-zts-20210902/igbinary.so \ - /usr/local/lib/php/extensions/no-debug-non-zts-20210902/memcached.so \ - /usr/local/lib/php/extensions/no-debug-non-zts-20210902/ -RUN docker-php-ext-enable igbinary && docker-php-ext-enable memcached - # APK packages needed by this image RUN install-php-extensions apcu sockets \ && apk add --no-cache \ From 05671070703da78fd68d532f4b9cfcb3cabb1821 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 25 Jul 2024 15:53:56 -0500 Subject: [PATCH 23/75] [EPAD8-2465] Adding cr before running deploy to clear out service registry to prevent issue with FloodControl service not having enough arguments after upgrade. --- ci/drush.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/drush.js b/ci/drush.js index 261174e9a8..403bef67a8 100644 --- a/ci/drush.js +++ b/ci/drush.js @@ -24,6 +24,7 @@ const util = require("./util"); // `; const drushScript = dedent` + drush --debug --uri="$WEBCMS_SITE_URL" cr drush --debug --uri="$WEBCMS_SITE_URL" deploy -y drush --debug --uri="$WEBCMS_SITE_URL" cr `; From 1af848c372548294f16f493745bc66d201ab78cb Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Mon, 12 Aug 2024 21:18:37 -0500 Subject: [PATCH 24/75] [EPAD8-2479] Adding a Web Area Description and a Popular Links field to Web Area nodes. Adjusting web area homepage templates to accomodate and correctly place the new fields where we want them. --- ...ity_form_display.node.web_area.default.yml | 61 +++++++--- ...ity_view_display.node.web_area.default.yml | 8 ++ ...entity_view_display.node.web_area.full.yml | 4 + ...entity_view_display.node.web_area.link.yml | 4 + ...iew_display.node.web_area.search_index.yml | 4 + ...tity_view_display.node.web_area.teaser.yml | 4 + ...ntity_view_display.node.web_area.token.yml | 4 + ...de.web_area.field_web_area_description.yml | 28 +++++ ....web_area.field_web_area_popular_links.yml | 106 ++++++++++++++++++ ...torage.node.field_web_area_description.yml | 19 ++++ ...rage.node.field_web_area_popular_links.yml | 21 ++++ .../web-area-homepages/microsite.twig | 6 + .../content/node--web-area--full.html.twig | 14 ++- 13 files changed, 267 insertions(+), 16 deletions(-) create mode 100644 services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml create mode 100644 services/drupal/config/sync/field.field.node.web_area.field_web_area_popular_links.yml create mode 100644 services/drupal/config/sync/field.storage.node.field_web_area_description.yml create mode 100644 services/drupal/config/sync/field.storage.node.field_web_area_popular_links.yml diff --git a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml index b8d73a1371..e46ef03609 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml @@ -22,6 +22,8 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description + - field.field.node.web_area.field_web_area_popular_links - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -35,6 +37,7 @@ dependencies: - metatag - paragraphs - shs + - text third_party_settings: field_group: group_metadata: @@ -95,7 +98,7 @@ third_party_settings: label: 'Additional Fields' region: content parent_name: '' - weight: 6 + weight: 8 format_type: tabs format_settings: classes: '' @@ -108,7 +111,7 @@ mode: default content: created: type: datetime_timestamp - weight: 8 + weight: 10 region: content settings: { } third_party_settings: { } @@ -165,7 +168,7 @@ content: third_party_settings: { } field_expiration_date: type: datetime_default - weight: 47 + weight: 48 region: content settings: { } third_party_settings: { } @@ -197,14 +200,15 @@ content: third_party_settings: { } field_meta_tags: type: metatag_firehose - weight: 50 + weight: 17 region: content settings: sidebar: true + use_details: true third_party_settings: { } field_owning_office: type: entity_reference_autocomplete_tags - weight: 48 + weight: 49 region: content settings: match_operator: CONTAINS @@ -214,7 +218,7 @@ content: third_party_settings: { } field_page_head: type: string_textarea - weight: 49 + weight: 9 region: content settings: rows: 20 @@ -227,7 +231,7 @@ content: maxlength_js_truncate_html: false field_paragraphs: type: paragraphs - weight: 4 + weight: 6 region: content settings: title: Paragraph @@ -255,9 +259,36 @@ content: region: content settings: { } third_party_settings: { } + field_web_area_description: + type: text_textarea + weight: 4 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } + field_web_area_popular_links: + type: paragraphs + weight: 5 + region: content + settings: + title: ' Popular Links' + title_plural: ' Popular Links' + edit_mode: closed + closed_mode: summary + autocollapse: none + closed_mode_threshold: 0 + add_mode: dropdown + form_display_mode: default + default_paragraph_type: featured_links + features: + add_above: '0' + collapse_edit_all: collapse_edit_all + duplicate: duplicate + third_party_settings: { } field_wide_content: type: layout_paragraphs - weight: 5 + weight: 7 region: content settings: preview_view_mode: default @@ -274,32 +305,32 @@ content: third_party_settings: { } moderation_state: type: moderation_state_default - weight: 12 + weight: 15 region: content settings: { } third_party_settings: { } promote: type: boolean_checkbox - weight: 9 + weight: 11 region: content settings: display_label: true third_party_settings: { } simple_sitemap: - weight: 10 + weight: 13 region: content settings: { } third_party_settings: { } status: type: boolean_checkbox - weight: 11 + weight: 14 region: content settings: display_label: true third_party_settings: { } sticky: type: boolean_checkbox - weight: 10 + weight: 12 region: content settings: display_label: true @@ -314,7 +345,7 @@ content: third_party_settings: { } uid: type: entity_reference_autocomplete - weight: 7 + weight: 9 region: content settings: match_operator: CONTAINS @@ -323,7 +354,7 @@ content: placeholder: '' third_party_settings: { } url_redirects: - weight: 13 + weight: 16 region: content settings: { } third_party_settings: { } diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml index 242d4e7fed..39da482ed8 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml @@ -22,6 +22,7 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -296,6 +297,13 @@ content: third_party_settings: { } weight: 106 region: content + field_web_area_description: + type: text_default + label: above + settings: { } + third_party_settings: { } + weight: 138 + region: main field_wide_content: type: entity_reference_revisions_entity_view label: above diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.full.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.full.yml index a231beee2f..7b38746c6f 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.full.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.full.yml @@ -23,6 +23,8 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description + - field.field.node.web_area.field_web_area_popular_links - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -216,6 +218,8 @@ hidden: field_meta_tags: true field_owning_office: true field_search_text: true + field_web_area_description: true + field_web_area_popular_links: true field_wide_content: true langcode: true layout_builder__layout: true diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.link.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.link.yml index cc09f7426b..9eed77df28 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.link.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.link.yml @@ -23,6 +23,8 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description + - field.field.node.web_area.field_web_area_popular_links - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -99,6 +101,8 @@ hidden: field_scheduled_transition: true field_search_text: true field_type: true + field_web_area_description: true + field_web_area_popular_links: true field_wide_content: true langcode: true layout_builder__layout: true diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.search_index.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.search_index.yml index 2b267bc676..1726c2e97f 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.search_index.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.search_index.yml @@ -23,6 +23,8 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description + - field.field.node.web_area.field_web_area_popular_links - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -116,6 +118,8 @@ hidden: field_scheduled_transition: true field_search_text: true field_type: true + field_web_area_description: true + field_web_area_popular_links: true field_wide_content: true langcode: true layout_builder__layout: true diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.teaser.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.teaser.yml index a7bbcb62e1..6bf46e64cb 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.teaser.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.teaser.yml @@ -23,6 +23,8 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description + - field.field.node.web_area.field_web_area_popular_links - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -63,6 +65,8 @@ hidden: field_scheduled_transition: true field_search_text: true field_type: true + field_web_area_description: true + field_web_area_popular_links: true field_wide_content: true langcode: true layout_builder__layout: true diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.token.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.token.yml index 9e5be22da4..0faf1b8383 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.token.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.token.yml @@ -23,6 +23,8 @@ dependencies: - field.field.node.web_area.field_scheduled_transition - field.field.node.web_area.field_search_text - field.field.node.web_area.field_type + - field.field.node.web_area.field_web_area_description + - field.field.node.web_area.field_web_area_popular_links - field.field.node.web_area.field_wide_content - field.field.node.web_area.layout_builder__layout - node.type.web_area @@ -204,6 +206,8 @@ hidden: field_meta_tags: true field_owning_office: true field_search_text: true + field_web_area_description: true + field_web_area_popular_links: true field_wide_content: true layout_builder__layout: true search_api_excerpt: true diff --git a/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml b/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml new file mode 100644 index 0000000000..953e101e4b --- /dev/null +++ b/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml @@ -0,0 +1,28 @@ +uuid: 92d898d5-31f2-45ae-a05e-218ddaf0ce12 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_web_area_description + - filter.format.restricted_html + - node.type.web_area + module: + - allowed_formats + - text +third_party_settings: + allowed_formats: + allowed_formats: { } +id: node.web_area.field_web_area_description +field_name: field_web_area_description +entity_type: node +bundle: web_area +label: 'Web Area Description' +description: "This description field will be displayed directly beneath the Web Area Homepage's banner. Use this to provide a short introduction to the Web Area." +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - restricted_html +field_type: text_long diff --git a/services/drupal/config/sync/field.field.node.web_area.field_web_area_popular_links.yml b/services/drupal/config/sync/field.field.node.web_area.field_web_area_popular_links.yml new file mode 100644 index 0000000000..b15a3d6e9e --- /dev/null +++ b/services/drupal/config/sync/field.field.node.web_area.field_web_area_popular_links.yml @@ -0,0 +1,106 @@ +uuid: bc8f8cf1-c5c6-4963-91b9-f43a6170cf6a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_web_area_popular_links + - node.type.web_area + - paragraphs.paragraphs_type.featured_links + module: + - entity_reference_revisions +id: node.web_area.field_web_area_popular_links +field_name: field_web_area_popular_links +entity_type: node +bundle: web_area +label: 'Popular Links' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:paragraph' + handler_settings: + target_bundles: + featured_links: featured_links + negate: 0 + target_bundles_drag_drop: + applicants_or_respondents: + weight: 27 + enabled: false + author: + weight: 28 + enabled: false + banner: + weight: 29 + enabled: false + banner_slide: + weight: 30 + enabled: false + before_after_swipe_component: + weight: 31 + enabled: false + box: + weight: 32 + enabled: false + card: + weight: 33 + enabled: false + card_group: + weight: 34 + enabled: false + cfr: + weight: 35 + enabled: false + docket: + weight: 36 + enabled: false + dynamic_list: + weight: 37 + enabled: false + featured_links: + weight: 38 + enabled: true + frc: + weight: 39 + enabled: false + from_library: + weight: 40 + enabled: false + graphic_list: + weight: 41 + enabled: false + header: + weight: 42 + enabled: false + html: + weight: 43 + enabled: false + legal_authorities: + weight: 44 + enabled: false + link_list: + weight: 45 + enabled: false + locations_of_prop_actions: + weight: 46 + enabled: false + media_block: + weight: 47 + enabled: false + press_officers: + weight: 48 + enabled: false + section: + weight: 49 + enabled: false + slide: + weight: 50 + enabled: false + slideshow: + weight: 51 + enabled: false + tagline: + weight: 52 + enabled: false +field_type: entity_reference_revisions diff --git a/services/drupal/config/sync/field.storage.node.field_web_area_description.yml b/services/drupal/config/sync/field.storage.node.field_web_area_description.yml new file mode 100644 index 0000000000..b989ba09ba --- /dev/null +++ b/services/drupal/config/sync/field.storage.node.field_web_area_description.yml @@ -0,0 +1,19 @@ +uuid: 1195d55a-f5d2-4150-ab9e-cbf7bb5fadee +langcode: en +status: true +dependencies: + module: + - node + - text +id: node.field_web_area_description +field_name: field_web_area_description +entity_type: node +type: text_long +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/services/drupal/config/sync/field.storage.node.field_web_area_popular_links.yml b/services/drupal/config/sync/field.storage.node.field_web_area_popular_links.yml new file mode 100644 index 0000000000..626ab35da0 --- /dev/null +++ b/services/drupal/config/sync/field.storage.node.field_web_area_popular_links.yml @@ -0,0 +1,21 @@ +uuid: 8dac5cfa-0db7-4a31-9a30-093ccfeffa7b +langcode: en +status: true +dependencies: + module: + - entity_reference_revisions + - node + - paragraphs +id: node.field_web_area_popular_links +field_name: field_web_area_popular_links +entity_type: node +type: entity_reference_revisions +settings: + target_type: paragraph +module: entity_reference_revisions +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/web-area-homepages/microsite.twig b/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/web-area-homepages/microsite.twig index 2fd0b60659..d3a914a225 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/web-area-homepages/microsite.twig +++ b/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/web-area-homepages/microsite.twig @@ -10,6 +10,12 @@ {% endif %} {{ slideshow }} + {% if description %} + {{ description }} + {% endif %} + {% if popular_links %} + {{ popular_links }} + {% endif %} {{ body }} {% endset %} diff --git a/services/drupal/web/themes/epa_theme/templates/content/node--web-area--full.html.twig b/services/drupal/web/themes/epa_theme/templates/content/node--web-area--full.html.twig index 1f355d4cab..34c8cb61f9 100644 --- a/services/drupal/web/themes/epa_theme/templates/content/node--web-area--full.html.twig +++ b/services/drupal/web/themes/epa_theme/templates/content/node--web-area--full.html.twig @@ -54,11 +54,21 @@ {{ node.field_banner|view({settings: {}}) }} {% endset %} +{% set description %} + {{ node.field_web_area_description|view({label: 'hidden', settings: {view_mode: 'default'}}) }} +{% endset %} + +{% set popular_links %} + {{ node.field_web_area_popular_links|view({type: 'entity_reference_revisions_entity_view', label: 'hidden', settings: {view_mode: 'default'}}) }} +{% endset %} + {% set body %} {{ content|without( 'epa_content_moderation_info_box', 'field_banner', - 'field_wide_content' + 'field_wide_content', + 'field_web_area_description', + 'field_web_area_popular_links' ) }} {{ node.field_wide_content|view({type: 'layout_paragraphs', label: 'hidden', settings: {view_mode: 'default'}}) }} {% endset %} @@ -73,5 +83,7 @@ 'show_admin_info': show_admin_info, 'slideshow': slideshow, 'body': body, + 'description': description, + 'popular_links': popular_links, 'footer': footer, } %} From 9e4e4cd6e6d708ead06dbaebb600968011a02136 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Tue, 13 Aug 2024 08:04:55 -0500 Subject: [PATCH 25/75] [EPAD8-2479] Adding featured links to basic page's body field. --- ...field.field.node.page.field_paragraphs.yml | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml index d0e3984e36..adc88b84c9 100644 --- a/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml @@ -9,18 +9,14 @@ dependencies: - paragraphs.paragraphs_type.box - paragraphs.paragraphs_type.card_group - paragraphs.paragraphs_type.dynamic_list + - paragraphs.paragraphs_type.featured_links - paragraphs.paragraphs_type.from_library - paragraphs.paragraphs_type.header - paragraphs.paragraphs_type.html - paragraphs.paragraphs_type.link_list - paragraphs.paragraphs_type.slideshow module: - - custom_add_another - entity_reference_revisions -third_party_settings: - custom_add_another: - custom_add_another: '' - custom_remove: '' id: node.page.field_paragraphs field_name: field_paragraphs entity_type: node @@ -44,6 +40,7 @@ settings: from_library: from_library card_group: card_group before_after_swipe_component: before_after_swipe_component + featured_links: featured_links negate: 0 target_bundles_drag_drop: applicants_or_respondents: @@ -79,12 +76,18 @@ settings: dynamic_list: weight: -29 enabled: true + featured_links: + weight: 38 + enabled: true frc: weight: -23 enabled: false from_library: weight: -27 enabled: true + graphic_list: + weight: 41 + enabled: false header: weight: -30 enabled: true @@ -100,13 +103,22 @@ settings: locations_of_prop_actions: weight: -19 enabled: false + media_block: + weight: 47 + enabled: false press_officers: weight: -18 enabled: false + section: + weight: 49 + enabled: false slide: weight: 33 enabled: false slideshow: weight: -28 enabled: true + tagline: + weight: 52 + enabled: false field_type: entity_reference_revisions From 43533bbd0ed42cf4666f5b62f7e27c98f97b8bf7 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Tue, 13 Aug 2024 08:40:34 -0500 Subject: [PATCH 26/75] [EPAD8-2479] Adjusting description text to watch EPA wants. --- .../field.field.node.web_area.field_web_area_description.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml b/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml index 953e101e4b..f8d31d0dc5 100644 --- a/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml +++ b/services/drupal/config/sync/field.field.node.web_area.field_web_area_description.yml @@ -17,7 +17,7 @@ field_name: field_web_area_description entity_type: node bundle: web_area label: 'Web Area Description' -description: "This description field will be displayed directly beneath the Web Area Homepage's banner. Use this to provide a short introduction to the Web Area." +description: "The web area description is a brief introduction to your web area topic. Write the description in the present tense and focus on the value that your web area offers." required: false translatable: false default_value: { } From bdb2040cf448853e1aedfed59d81be5ae92d736f Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 20 Aug 2024 15:40:31 -0700 Subject: [PATCH 27/75] [EPAD8-2514] Strip host from metatags --- .../epa_snapshot/epa_snapshot.services.yml | 1 + .../EventSubscriber/EpaSnapshotSubscriber.php | 78 +++++++++++++++++-- 2 files changed, 71 insertions(+), 8 deletions(-) diff --git a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.services.yml b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.services.yml index c09183499c..ceaedb4631 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.services.yml +++ b/services/drupal/web/modules/custom/epa_snapshot/epa_snapshot.services.yml @@ -1,5 +1,6 @@ services: epa_snapshot.event_subscriber: class: Drupal\epa_snapshot\EventSubscriber\EpaSnapshotSubscriber + arguments: ['@request_stack'] tags: - { name: event_subscriber } diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index fc83a67e22..d3995b2b22 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -5,12 +5,30 @@ use Drupal\tome_static\Event\ModifyHtmlEvent; use Drupal\tome_static\Event\TomeStaticEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\RequestStack; /** * EPA Snapshot event subscriber. */ class EpaSnapshotSubscriber implements EventSubscriberInterface { + /** + * The request stacks service. + * + * @var \Symfony\Component\HttpFoundation\RequestStack + */ + protected $requestStack; + + /** + * Constructs an EpaSnapshotSubscriber object. + * + * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack + * The request stack service. + */ + public function __construct(RequestStack $requestStack) { + $this->requestStack = $requestStack; + } + /** * Event subscriber method for modifying HTML. * @@ -36,11 +54,14 @@ public function onModifyHtml(ModifyHtmlEvent $event) { // pages. $xpath = new \DOMXPath($doc); + // Update metatags. + $this->updateMetaTags($xpath); + // Add the alert markup. $this->addAlertMarkup($xpath, $doc); // Disable all form elements. - $this->removeFormElements($xpath, $doc); + $this->removeFormElements($xpath); // Add search listing replacement. $this->addListingReplacement($xpath, $doc); @@ -49,21 +70,45 @@ public function onModifyHtml(ModifyHtmlEvent $event) { } /** - * Helper method to check and set alert markup. + * Helper method to replace references to the site url. * * @param \DOMXPath $xpath * The DOMXPath object. - * @param \DOMDocument $doc - * The DOM Document we're working with. * * @return void * Nothing. */ - protected function removeFormElements(\DOMXPath $xpath, \DOMDocument &$doc) { - $forms = $xpath->query('//form'); + protected function updateMetaTags(\DOMXPath $xpath) { + // Set the host url used for search and replace. + $host = $this->requestStack->getCurrentRequest()->getSchemeAndHttpHost(); - foreach ($forms as $form) { - $form->parentNode->removeChild($form); + // Get link meta tags with href attribute starting with host. + $links = $xpath->query("//link[starts-with(@href,'$host')]"); + $this->stripAttributeTextFromList($links, 'href', $host); + + // Get link meta tags with content attribute starting with host. + // Strip the host from the content attribute. + $metatags = $xpath->query("//meta[starts-with(@content,'$host')]"); + $this->stripAttributeTextFromList($metatags, 'content', $host); + } + + /** + * Helper method to strip text element attributes in a node list. + * + * @param \DOMNodeList $items + * The node list to process. + * @param string $attribute + * The attribute of which values to strip. + * @param string $text + * The the text to strip. + */ + protected function stripAttributeTextFromList(\DOMNodeList $items, string $attribute, string $text) { + // Get meta tags with content attribute starting with host. + if (!empty($items)) { + foreach ($items as $item) { + /** @var \DOMElement $item */ + $item->setAttribute($attribute, str_replace($text, '', $item->getAttribute($attribute))); + } } } @@ -96,6 +141,23 @@ protected function addAlertMarkup(\DOMXPath $xpath, \DOMDocument &$doc) { } } + /** + * Helper method to check and set alert markup. + * + * @param \DOMXPath $xpath + * The DOMXPath object. + * + * @return void + * Nothing. + */ + protected function removeFormElements(\DOMXPath $xpath) { + $forms = $xpath->query('//form'); + + foreach ($forms as $form) { + $form->parentNode->removeChild($form); + } + } + /** * Helper method to check and set alert markup. * From d3e5ea403de6a7ac7b1e7b1a6cf339ad577af62a Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 20 Aug 2024 21:52:10 -0700 Subject: [PATCH 28/75] [EPAD8-2517] Patch tome removing deprecated function to copy files --- services/drupal/composer.patches.json | 2 +- .../patches/tome-aws-image-copy-3161384.patch | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 services/drupal/patches/tome-aws-image-copy-3161384.patch diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 41078731d6..67450ff09d 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -87,7 +87,7 @@ "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, "drupal/tome": { - "CSS on Amazon S3 not processing properly": "https://www.drupal.org/files/issues/2020-08-06/3161384-4.patch", + "CSS on Amazon S3 not processing properly": "patches/tome-aws-image-copy-3161384.patch", "Add a method to disable crawling": "patches/tome-disable_crawl.patch" }, "drupal/paragraphs": { diff --git a/services/drupal/patches/tome-aws-image-copy-3161384.patch b/services/drupal/patches/tome-aws-image-copy-3161384.patch new file mode 100644 index 0000000000..beae64a36c --- /dev/null +++ b/services/drupal/patches/tome-aws-image-copy-3161384.patch @@ -0,0 +1,69 @@ +diff --git a/modules/tome_static/src/StaticGenerator.php b/modules/tome_static/src/StaticGenerator.php +index 845568f..d2fbaf0 100644 +--- a/modules/tome_static/src/StaticGenerator.php ++++ b/modules/tome_static/src/StaticGenerator.php +@@ -23,6 +23,7 @@ use Symfony\Component\HttpFoundation\Request; + use Symfony\Component\HttpFoundation\RequestStack; + use Symfony\Component\HttpKernel\HttpKernelInterface; + use Drupal\Core\File\FileSystemInterface; ++use Drupal\Core\File\FileUrlGeneratorInterface; + + /** + * Handles static site generation. +@@ -82,6 +83,13 @@ class StaticGenerator implements StaticGeneratorInterface { + */ + protected $requestStack; + ++ /** ++ * The file URL generator. ++ * ++ * @var \Drupal\Core\File\FileUrlGeneratorInterface ++ */ ++ protected $fileUrlGenerator; ++ + /** + * Creates a StaticGenerator object. + * +@@ -97,8 +105,10 @@ class StaticGenerator implements StaticGeneratorInterface { + * The account switcher. + * @param \Drupal\Core\File\FileSystemInterface $file_system + * The file system. ++ * @param \Drupal\Core\File\FileUrlGeneratorInterface $file_url_generator ++ * The file URL generator. + */ +- public function __construct(HttpKernelInterface $http_kernel, RequestStack $request_stack, EventDispatcherInterface $event_dispatcher, StaticCacheInterface $cache, AccountSwitcherInterface $account_switcher, FileSystemInterface $file_system) { ++ public function __construct(HttpKernelInterface $http_kernel, RequestStack $request_stack, EventDispatcherInterface $event_dispatcher, StaticCacheInterface $cache, AccountSwitcherInterface $account_switcher, FileSystemInterface $file_system, FileUrlGeneratorInterface $file_url_generator) { + $this->httpKernel = $http_kernel; + $this->currentRequest = $request_stack->getCurrentRequest(); + $this->eventDispatcher = $event_dispatcher; +@@ -106,7 +116,7 @@ class StaticGenerator implements StaticGeneratorInterface { + $this->accountSwitcher = $account_switcher; + $this->requestStack = $request_stack; + $this->fileSystem = $file_system; +- ++ $this->fileUrlGenerator = $file_url_generator; + } + + /** +@@ -173,7 +183,7 @@ class StaticGenerator implements StaticGeneratorInterface { + // This is probably an image style derivative. + if ($response instanceof BinaryFileResponse) { + $file_path = $response->getFile()->getPathname(); +- $this->copyPath($file_path, $destination); ++ $invoke_paths[] = $this->fileUrlGenerator->generateAbsoluteString($file_path); + } + else { + $content = $response->getContent(); +diff --git a/modules/tome_static/tome_static.services.yml b/modules/tome_static/tome_static.services.yml +index 921f2dd..610c43e 100644 +--- a/modules/tome_static/tome_static.services.yml ++++ b/modules/tome_static/tome_static.services.yml +@@ -1,7 +1,7 @@ + services: + tome_static.generator: + class: Drupal\tome_static\StaticGenerator +- arguments: ['@http_kernel', '@request_stack', '@event_dispatcher', '@cache.tome_static', '@account_switcher', '@file_system'] ++ arguments: ['@http_kernel', '@request_stack', '@event_dispatcher', '@cache.tome_static', '@account_switcher', '@file_system', '@file_url_generator'] + cache.tome_static: + class: Drupal\tome_static\StaticCache + arguments: ['@database', '@cache_tags.invalidator.checksum'] From 31cdd02f5fda5b572e617139755016b31ff738d5 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Sun, 25 Aug 2024 09:55:55 -0700 Subject: [PATCH 29/75] [EPAD8-2518] Update snapshot implementation [EPAD8-2518] Exclude additional routes from snapshot [EPAD8-2518] Add snapshot settings file [EPAD8-2515] Add search functionality to snapshot [EPAD8-2519] Exclude listing pages from snapshot --- .../EventSubscriber/EpaSnapshotSubscriber.php | 203 ++++++++++-------- .../drupal/web/sites/default/settings.php | 27 +-- .../web/sites/default/settings.snapshot.php | 34 +++ 3 files changed, 148 insertions(+), 116 deletions(-) create mode 100644 services/drupal/web/sites/default/settings.snapshot.php diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index fc83a67e22..347bdf6a24 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -2,15 +2,79 @@ namespace Drupal\epa_snapshot\EventSubscriber; +use Drupal\tome_static\Event\CollectPathsEvent; use Drupal\tome_static\Event\ModifyHtmlEvent; use Drupal\tome_static\Event\TomeStaticEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\RequestStack; /** * EPA Snapshot event subscriber. */ class EpaSnapshotSubscriber implements EventSubscriberInterface { + /** + * The request stacks service. + * + * @var \Symfony\Component\HttpFoundation\RequestStack + */ + protected $requestStack; + + /** + * Excluded path patterns. + * + * @var array + */ + protected $excludedPatterns = [ + '/entity:webform_submission:/', + '/entity:user:/', + '/entity:taxonomy_term:/', + '/entity:danse_event:/', + '/\/forms\//', + '/\/perspectives\/search\//', + '/\/faqs\/search\//', + '/\/publicnotices\/notices-search\//', + '/\/newsreleases\/search\//', + '/\/speeches\/search\//', + ]; + + /** + * Constructs an EpaSnapshotSubscriber object. + * + * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack + * The request stack service. + */ + public function __construct(RequestStack $requestStack) { + $this->requestStack = $requestStack; + } + + /** + * Event subscriber method for collecting paths. + * + * @param \Drupal\tome_static\Event\CollectPathsEvent $event + * The CollectPathsEvent from Tome. + * + * @return void + * Nothing. + */ + public function onCollectPaths(CollectPathsEvent $event) { + $excluded_patterns = $this->excludedPatterns; + + // Get the paths from the event with metadata to text excluded patterns + // against the path and the original path. + $paths = $event->getPaths(TRUE); + + // Remove paths that match the excluded patterns. + foreach ($paths as $path => $metadata) { + foreach ($excluded_patterns as $pattern) { + if (preg_match($pattern, $path) || (isset($metadata['original_path']) && preg_match($pattern, $metadata['original_path']))) { + unset($paths[$path]); + } + } + } + $event->replacePaths($paths); + } + /** * Event subscriber method for modifying HTML. * @@ -42,31 +106,12 @@ public function onModifyHtml(ModifyHtmlEvent $event) { // Disable all form elements. $this->removeFormElements($xpath, $doc); - // Add search listing replacement. - $this->addListingReplacement($xpath, $doc); + // Add the search markup. + $this->addSearchMarkup($xpath, $doc); $event->setHtml($doc->saveHTML()); } - /** - * Helper method to check and set alert markup. - * - * @param \DOMXPath $xpath - * The DOMXPath object. - * @param \DOMDocument $doc - * The DOM Document we're working with. - * - * @return void - * Nothing. - */ - protected function removeFormElements(\DOMXPath $xpath, \DOMDocument &$doc) { - $forms = $xpath->query('//form'); - - foreach ($forms as $form) { - $form->parentNode->removeChild($form); - } - } - /** * Helper method to check and set alert markup. * @@ -97,7 +142,7 @@ protected function addAlertMarkup(\DOMXPath $xpath, \DOMDocument &$doc) { } /** - * Helper method to check and set alert markup. + * Helper method to check and set search markup. * * @param \DOMXPath $xpath * The DOMXPath object. @@ -107,17 +152,30 @@ protected function addAlertMarkup(\DOMXPath $xpath, \DOMDocument &$doc) { * @return void * Nothing. */ - protected function addListingReplacement(\DOMXPath $xpath, \DOMDocument &$doc) { - // Select the listing wrapper. - $listing_wrapper = $xpath->query('//div[contains(@class, "epa-listing-page")]//div[contains(@class, "l-sidebar-first")]')->item(0); + protected function addSearchMarkup(\DOMXPath $xpath, \DOMDocument &$doc) { + $search_drawer = $xpath->query('//div[@id="header-search-drawer"]')->item(0); + + if ($search_drawer) { + $search_form = $this->createSearchMarkup($doc); - // If listing wrapper replace page title and listing wrapper. - if ($listing_wrapper) { - $title = $xpath->query('//h1')->item(0); - $title->nodeValue = 'January 19, 2025 Snapshot'; + $search_drawer->appendChild($search_form); + } + } - $listing_replacement = $this->createListingReplacementMarkup($doc); - $listing_wrapper->parentNode->replaceChild($listing_replacement, $listing_wrapper); + /** + * Helper method to check and set alert markup. + * + * @param \DOMXPath $xpath + * The DOMXPath object. + * + * @return void + * Nothing. + */ + protected function removeFormElements(\DOMXPath $xpath) { + $forms = $xpath->query('//form'); + + foreach ($forms as $form) { + $form->parentNode->removeChild($form); } } @@ -159,7 +217,7 @@ protected function createAlertMarkup(\DOMDocument $doc) { } /** - * Helper method to generate snapshot listing page replacement. + * Helper method to generate snapshot search markup. * * @param \DOMDocument $doc * The DOM Document we're working with. @@ -167,65 +225,26 @@ protected function createAlertMarkup(\DOMDocument $doc) { * @return \DOMDocumentFragment|false * The alert markup DOM Document fragment. */ - protected function createListingReplacementMarkup(\DOMDocument $doc) { + protected function createSearchMarkup(\DOMDocument $doc) { $fragment = $doc->createDocumentFragment(); $markup = ' -

- You have reached the help page for the January 19, 2025 Web Snapshot. This is - not the current EPA website. - To navigate to the current EPA website, please go to - www.epa.gov. -

- -

What is included in the Web Snapshot?

- -

- The Web Snapshot consists of static content, such as webpages and reports in - Portable Document Format (PDF), as that content appeared on EPA\'s website as - of January 19, 2025. -

- -

What is not included in the Web Snapshot?

- -

- There are technical limitations to what could be included in the Web Snapshot. - For example, many of the links from EPA\'s website are to databases that are - updated with new information on a regular basis. These databases are not part - of the static content that comprises the Web Snapshot. Links in the Web - Snapshot to dynamic databases will take you to the current version of the - database. Searches there will yield the latest data, rather than the data that - would have been returned for a search conducted on January 19, 2025. Alerts - should appear when you are leaving the Web Snapshot and linking elsewhere. -

-

Contact us and other forms have all been disabled.

- -

- Links may have been broken in the website as it appeared on January 19, 2025. - Those links will appear as broken on the Web Snapshot. Likewise, links which - may have been working on January 19, 2025 but are now no longer active will - appear as broken links in the Web Snapshot. -

- -

- Finally, certain dynamic collections of content were not included in the - Snapshot due to their size. Those collections remain available on the current - EPA website at the following links: -

- - '; + '; $fragment->appendXML($markup); return $fragment; @@ -235,9 +254,9 @@ protected function createListingReplacementMarkup(\DOMDocument $doc) { * {@inheritdoc} */ public static function getSubscribedEvents() { - return [ - TomeStaticEvents::MODIFY_HTML => ['onModifyHTML'], - ]; + $events[TomeStaticEvents::MODIFY_HTML][] = ['onModifyHTML']; + $events[TomeStaticEvents::COLLECT_PATHS][] = ['onCollectPaths', -3]; + return $events; } } diff --git a/services/drupal/web/sites/default/settings.php b/services/drupal/web/sites/default/settings.php index 13d86cf6d4..84afe0333e 100644 --- a/services/drupal/web/sites/default/settings.php +++ b/services/drupal/web/sites/default/settings.php @@ -982,30 +982,9 @@ $settings['fast404_exts'] = '/^(?!\/robots)^(?!\/system\/files)^(?!\/sites\/production\/files).*\.(txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; $settings['fast404_HTML_error_page'] = 'themes/epa_theme/source/fast-404.html'; -/** - * Create s3 stream wrapper for snapshots. - */ -$schemes = [ - 's3-snapshot' => [ - 'driver' => 's3', - 'config' => [ - 'region' => getenv('WEBCMS_S3_REGION'), - 'bucket' => getenv('WEBCMS_S3_SNAPSHOT_BUCKET'), - ], - 'cache' => TRUE, - ], -]; - -$settings['flysystem'] = $schemes; - -/** - * Settings for tome. - * - * Set static directory for tome and prevent crawling anchors and iframes. - */ -$settings['tome_static_directory'] = 's3-snapshot://html'; - -$settings['tome_static_crawl'] = FALSE; +if (file_exists($app_root . '/' . $site_path . '/settings.snapshot.php')) { + include $app_root . '/' . $site_path . '/settings.snapshot.php'; +} /** * Load local development override configuration, if available. diff --git a/services/drupal/web/sites/default/settings.snapshot.php b/services/drupal/web/sites/default/settings.snapshot.php new file mode 100644 index 0000000000..57f454f62b --- /dev/null +++ b/services/drupal/web/sites/default/settings.snapshot.php @@ -0,0 +1,34 @@ + [ + 'driver' => 's3', + 'config' => [ + 'region' => getenv('WEBCMS_S3_REGION'), + 'bucket' => getenv('WEBCMS_S3_SNAPSHOT_BUCKET'), + ], + 'cache' => TRUE, + ], +]; + +$settings['flysystem'] = $schemes; + +/** + * Settings for tome. + * + * Set static directory for tome and prevent crawling anchors and iframes. + */ +$settings['tome_static_directory'] = 's3-snapshot://html'; + +$settings['tome_static_crawl'] = FALSE; + +$settings['tome_static_path_exclude'] = [ + '/perspectives/search', + '/faqs/search', + '/publicnotices/notices-search', + '/newsreleases/search', + '/speeches/search', +]; From 2d1c583109c3086110a9047381b312c2977c3536 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Sun, 25 Aug 2024 14:08:53 -0700 Subject: [PATCH 30/75] [EPAD8-2517] Send a response event for S3 media --- .../src/EventSubscriber/EPAMediaS3fsSubscriber.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/drupal/web/modules/custom/epa_media_s3fs/src/EventSubscriber/EPAMediaS3fsSubscriber.php b/services/drupal/web/modules/custom/epa_media_s3fs/src/EventSubscriber/EPAMediaS3fsSubscriber.php index e151a01e2e..e58ccf5d0b 100644 --- a/services/drupal/web/modules/custom/epa_media_s3fs/src/EventSubscriber/EPAMediaS3fsSubscriber.php +++ b/services/drupal/web/modules/custom/epa_media_s3fs/src/EventSubscriber/EPAMediaS3fsSubscriber.php @@ -7,7 +7,7 @@ use Symfony\Component\HttpKernel\Event\ExceptionEvent; /** - * High-performance 404 exception subscriber for redirecting users to S3 when necessary. + * High-performance 404 exception subscriber to redirect users to S3 as needed. */ class EPAMediaS3fsSubscriber extends Fast404ExceptionHtmlSubscriber { @@ -31,7 +31,8 @@ public function on404(ExceptionEvent $event) { $new_path = preg_replace('/^\/sites\/.*\/files\/(.*)/i', 'public://$1', $path, -1, $count); if ($count) { - $response = \Drupal::service('file_url_generator')->generateAbsoluteString($new_path); + $file_path = \Drupal::service('file_url_generator')->generateAbsoluteString($new_path); + $response = new TrustedRedirectResponse($file_path, 302); $event->setResponse($response); } } From b310e5c276aa832da38ef2a45a9abf16ff24d3d0 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Thu, 29 Aug 2024 23:16:41 -0700 Subject: [PATCH 31/75] [EPAD8-2517] Remove tome patch --- services/drupal/composer.patches.json | 1 - 1 file changed, 1 deletion(-) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 67450ff09d..efbf1fcf99 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -87,7 +87,6 @@ "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, "drupal/tome": { - "CSS on Amazon S3 not processing properly": "patches/tome-aws-image-copy-3161384.patch", "Add a method to disable crawling": "patches/tome-disable_crawl.patch" }, "drupal/paragraphs": { From 1017ab63bbf90133599b6081ab2010404ac93c62 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 2 Sep 2024 11:59:11 -0700 Subject: [PATCH 32/75] [EPAD8-2532] Add color option to featured links --- ....entity_form_display.node.page.default.yml | 6 ++- ...ity_form_display.node.web_area.default.yml | 7 ++- ...splay.paragraph.featured_links.complex.yml | 50 +++++++++++++++++++ ...splay.paragraph.featured_links.default.yml | 4 +- ...ore.entity_form_mode.paragraph.complex.yml | 11 ++++ ...splay.paragraph.featured_links.default.yml | 4 +- ...graph.featured_links.field_theme_color.yml | 21 ++++++++ ...ld.storage.paragraph.field_theme_color.yml | 27 ++++++++++ 8 files changed, 124 insertions(+), 6 deletions(-) create mode 100644 services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.complex.yml create mode 100644 services/drupal/config/sync/core.entity_form_mode.paragraph.complex.yml create mode 100644 services/drupal/config/sync/field.field.paragraph.featured_links.field_theme_color.yml create mode 100644 services/drupal/config/sync/field.storage.paragraph.field_theme_color.yml diff --git a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml index 45d5fd92f0..455437e568 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml @@ -236,13 +236,15 @@ content: autocollapse: none closed_mode_threshold: 0 add_mode: dropdown - form_display_mode: default + form_display_mode: complex default_paragraph_type: html features: add_above: '0' collapse_edit_all: collapse_edit_all duplicate: duplicate - third_party_settings: { } + third_party_settings: + limited_field_widgets: + limit_values: '0' field_paragraphs_1: type: paragraphs weight: 4 diff --git a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml index e46ef03609..7c177bb8fd 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml @@ -241,12 +241,15 @@ content: autocollapse: none closed_mode_threshold: 0 add_mode: dropdown - form_display_mode: default + form_display_mode: complex default_paragraph_type: html features: + add_above: '0' collapse_edit_all: collapse_edit_all duplicate: duplicate - third_party_settings: { } + third_party_settings: + limited_field_widgets: + limit_values: '0' field_publish_date: type: datetime_default weight: 46 diff --git a/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.complex.yml b/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.complex.yml new file mode 100644 index 0000000000..d7a85b5412 --- /dev/null +++ b/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.complex.yml @@ -0,0 +1,50 @@ +uuid: 201e6960-6537-44b8-a9a8-8411583a10c4 +langcode: en +status: true +dependencies: + config: + - core.entity_form_mode.paragraph.complex + - field.field.paragraph.featured_links.field_theme_color + - field.field.paragraph.featured_links.field_links + - field.field.paragraph.featured_links.field_title + - paragraphs.paragraphs_type.featured_links + module: + - limited_field_widgets + - link + - maxlength +id: paragraph.featured_links.complex +targetEntityType: paragraph +bundle: featured_links +mode: complex +content: + field_links: + type: link_default + weight: 2 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: + maxlength: + maxlength_js: null + maxlength_js_label: 'Content limited to @limit characters, remaining: @remaining' + maxlength_js_enforce: false + limited_field_widgets: + limit_values: '4' + field_theme_color: + type: options_select + weight: 3 + region: content + settings: { } + third_party_settings: { } + field_title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml b/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml index ea3b53c277..47a1a6b7cd 100644 --- a/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.paragraph.featured_links.default.yml @@ -3,6 +3,7 @@ langcode: en status: true dependencies: config: + - field.field.paragraph.featured_links.field_theme_color - field.field.paragraph.featured_links.field_links - field.field.paragraph.featured_links.field_title - paragraphs.paragraphs_type.featured_links @@ -17,7 +18,7 @@ mode: default content: field_links: type: link_default - weight: 2 + weight: 1 region: content settings: placeholder_url: '' @@ -39,4 +40,5 @@ content: third_party_settings: { } hidden: created: true + field_theme_color: true status: true diff --git a/services/drupal/config/sync/core.entity_form_mode.paragraph.complex.yml b/services/drupal/config/sync/core.entity_form_mode.paragraph.complex.yml new file mode 100644 index 0000000000..1212a8ac6b --- /dev/null +++ b/services/drupal/config/sync/core.entity_form_mode.paragraph.complex.yml @@ -0,0 +1,11 @@ +uuid: 6e5f8ab4-2c9e-4147-ae8e-9d806c7fdbb1 +langcode: en +status: true +dependencies: + module: + - paragraphs +id: paragraph.complex +label: Complex +description: 'Form mode that provides additional fields for more complex displays.' +targetEntityType: paragraph +cache: true diff --git a/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml b/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml index fc9038299f..ad781839ae 100644 --- a/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml +++ b/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml @@ -3,6 +3,7 @@ langcode: en status: true dependencies: config: + - field.field.paragraph.featured_links.field_theme_color - field.field.paragraph.featured_links.field_links - field.field.paragraph.featured_links.field_title - paragraphs.paragraphs_type.featured_links @@ -23,7 +24,7 @@ content: rel: 0 target: 0 third_party_settings: { } - weight: 2 + weight: 1 region: content field_title: type: string @@ -34,4 +35,5 @@ content: weight: 0 region: content hidden: + field_theme_color: true search_api_excerpt: true diff --git a/services/drupal/config/sync/field.field.paragraph.featured_links.field_theme_color.yml b/services/drupal/config/sync/field.field.paragraph.featured_links.field_theme_color.yml new file mode 100644 index 0000000000..c826b5e154 --- /dev/null +++ b/services/drupal/config/sync/field.field.paragraph.featured_links.field_theme_color.yml @@ -0,0 +1,21 @@ +uuid: 29012c2d-f343-4378-a149-5f0acd7dd9ee +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_theme_color + - paragraphs.paragraphs_type.featured_links + module: + - options +id: paragraph.featured_links.field_theme_color +field_name: field_theme_color +entity_type: paragraph +bundle: featured_links +label: 'Theme Color' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/services/drupal/config/sync/field.storage.paragraph.field_theme_color.yml b/services/drupal/config/sync/field.storage.paragraph.field_theme_color.yml new file mode 100644 index 0000000000..8ac2f0a204 --- /dev/null +++ b/services/drupal/config/sync/field.storage.paragraph.field_theme_color.yml @@ -0,0 +1,27 @@ +uuid: 642565af-86ff-4049-8cf9-616f77ea15f2 +langcode: en +status: true +dependencies: + module: + - options + - paragraphs +id: paragraph.field_theme_color +field_name: field_theme_color +entity_type: paragraph +type: list_string +settings: + allowed_values: + - + value: gray + label: 'Light (gray)' + - + value: dark_blue + label: 'Dark (blue)' + allowed_values_function: '' +module: options +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false From f8fece60d707cced1b2ce174e123c8d78f758983 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 2 Sep 2024 12:01:29 -0700 Subject: [PATCH 33/75] [EPAD8-2532] Add preprocess for featured links --- .../themes/epa_theme/includes/paragraph.inc | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/services/drupal/web/themes/epa_theme/includes/paragraph.inc b/services/drupal/web/themes/epa_theme/includes/paragraph.inc index bf60f0d52e..4194b7ecaf 100644 --- a/services/drupal/web/themes/epa_theme/includes/paragraph.inc +++ b/services/drupal/web/themes/epa_theme/includes/paragraph.inc @@ -6,7 +6,6 @@ */ use Drupal\Core\Render\Element; -use Drupal\Core\Template\Attribute; /** * Implements theme_preprocess_paragraph() @@ -98,3 +97,24 @@ function epa_theme_preprocess_paragraph__card(&$variables) { $variables['image_placement_style'] = $parent->get('field_image_style')->value; } } + +/** + * Implements template_preprocess_paragraph() + */ +function epa_theme_preprocess_paragraph__featured_links(&$variables) { + $paragraph = $variables['paragraph']; + + // Get parent component. + $parent_uuid = $paragraph->getBehaviorSetting('layout_paragraphs', 'parent_uuid'); + + // If parent component is set, load it and get behavior settings. + if (!empty($parent_uuid)) { + $parent_component = \Drupal::service('entity.repository')->loadEntityByUuid('paragraph', $parent_uuid); + + // If parent component has a color class, pass it to the paragraph template. + $parent_class_color = $parent_component->getBehaviorSetting('layout_paragraphs', ['config', 'classes', 'color']); + if (!empty($parent_class_color)) { + $variables['parent_class_color'] = $parent_class_color; + } + } +} From fe09ff64bf99d4f9f77e4f33bdcfe1ea6528fc4f Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Fri, 6 Sep 2024 09:13:15 -0700 Subject: [PATCH 34/75] [EPAD8-2548] Update export location --- services/drupal/web/sites/default/settings.snapshot.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/drupal/web/sites/default/settings.snapshot.php b/services/drupal/web/sites/default/settings.snapshot.php index 57f454f62b..cfc9408be1 100644 --- a/services/drupal/web/sites/default/settings.snapshot.php +++ b/services/drupal/web/sites/default/settings.snapshot.php @@ -19,9 +19,11 @@ /** * Settings for tome. * - * Set static directory for tome and prevent crawling anchors and iframes. + * - Set static directory. + * - Prevent crawling anchors and iframes. + * - Set paths to exclude from static generation. */ -$settings['tome_static_directory'] = 's3-snapshot://html'; +$settings['tome_static_directory'] = 's3-snapshot://'; $settings['tome_static_crawl'] = FALSE; From ca0c2b6fe3e096cc360d31b35883eb63c91c8df6 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Fri, 6 Sep 2024 13:56:36 -0700 Subject: [PATCH 35/75] [EPAD8-2548] Exclude snapshot home from removing forms --- .../src/EventSubscriber/EpaSnapshotSubscriber.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index a319be8058..edf98183bb 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -100,6 +100,9 @@ public function onModifyHtml(ModifyHtmlEvent $event) { // pages. $xpath = new \DOMXPath($doc); + // Get current path. + $current_path = $this->requestStack->getCurrentRequest()->getPathInfo(); + // Update metatags. $this->updateMetaTags($xpath); @@ -107,7 +110,9 @@ public function onModifyHtml(ModifyHtmlEvent $event) { $this->addAlertMarkup($xpath, $doc); // Disable all form elements. - $this->removeFormElements($xpath); + if (strpos($current_path, '/home/january-19-2025-snapshot') === FALSE) { + $this->removeFormElements($xpath); + } // Add the search markup. $this->addSearchMarkup($xpath, $doc); From 1fc5e45bc61fd7d9bc3b4fa25bd5240d67873e1b Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Sat, 7 Sep 2024 14:35:57 -0700 Subject: [PATCH 36/75] [EPAD8-2548] Strip the EPA host url explicitly - Strips www.epa.gov from the URLs in the EPA snapshot content. - Refines the form exclusion for the snapshot home --- .../EventSubscriber/EpaSnapshotSubscriber.php | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index edf98183bb..97750b34fe 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -38,6 +38,13 @@ class EpaSnapshotSubscriber implements EventSubscriberInterface { '/\/speeches\/search\//', ]; + /** + * Host address to explicitly strip. + * + * @var string + */ + protected $hostString = 'https://www.epa.gov'; + /** * Constructs an EpaSnapshotSubscriber object. * @@ -100,19 +107,17 @@ public function onModifyHtml(ModifyHtmlEvent $event) { // pages. $xpath = new \DOMXPath($doc); - // Get current path. - $current_path = $this->requestStack->getCurrentRequest()->getPathInfo(); - // Update metatags. $this->updateMetaTags($xpath); + // Strip the host string from anchor tags. + $this->stripHostStringFromAnchors($xpath); + // Add the alert markup. $this->addAlertMarkup($xpath, $doc); - // Disable all form elements. - if (strpos($current_path, '/home/january-19-2025-snapshot') === FALSE) { - $this->removeFormElements($xpath); - } + // Disable form elements except paths to be excluded. + $this->removeFormElements($xpath); // Add the search markup. $this->addSearchMarkup($xpath, $doc); @@ -224,8 +229,13 @@ protected function addSearchMarkup(\DOMXPath $xpath, \DOMDocument &$doc) { */ protected function removeFormElements(\DOMXPath $xpath) { $forms = $xpath->query('//form'); + $snapshot_inputs = $xpath->query('//input[@name="site" and @value="snapshot2025"]'); + $snapshot_input = $snapshot_inputs->item(0); foreach ($forms as $form) { + if (!empty($snapshot_input) && $form->isSameNode($snapshot_input->parentNode->parentNode)) { + continue; + } $form->parentNode->removeChild($form); } } @@ -301,6 +311,25 @@ protected function createSearchMarkup(\DOMDocument $doc) { return $fragment; } + /** + * Helper method to strip anchor tags of $hostString. + * + * @param \DOMXPath $xpath + * The DOMXPath object. + * + * @return void + * Nothing. + */ + protected function stripHostStringFromAnchors(\DOMXPath $xpath) { + $anchors = $xpath->query('//a'); + + foreach ($anchors as $anchor) { + /** @var \DOMElement $anchor */ + $href = $anchor->getAttribute('href'); + $anchor->setAttribute('href', str_replace($this->hostString, '', $href)); + } + } + /** * {@inheritdoc} */ From 7c1fa5cf2737870e09ea8b7fe1802653a20eea3a Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 9 Sep 2024 09:17:32 -0700 Subject: [PATCH 37/75] [EPAD8-2514] Replace instead of strip host in metatags --- .../EventSubscriber/EpaSnapshotSubscriber.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index 97750b34fe..0cfae1863d 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -45,6 +45,13 @@ class EpaSnapshotSubscriber implements EventSubscriberInterface { */ protected $hostString = 'https://www.epa.gov'; + /** + * Snapshot host address. + * + * @var string + */ + protected $snapshotHost = 'https://19january2025snapshot.epa.gov'; + /** * Constructs an EpaSnapshotSubscriber object. * @@ -140,12 +147,12 @@ protected function updateMetaTags(\DOMXPath $xpath) { // Get link meta tags with href attribute starting with host. $links = $xpath->query("//link[starts-with(@href,'$host')]"); - $this->stripAttributeTextFromList($links, 'href', $host); + $this->stripAttributeTextFromList($links, 'href', $host, $this->snapshotHost); // Get link meta tags with content attribute starting with host. // Strip the host from the content attribute. $metatags = $xpath->query("//meta[starts-with(@content,'$host')]"); - $this->stripAttributeTextFromList($metatags, 'content', $host); + $this->stripAttributeTextFromList($metatags, 'content', $host, $this->snapshotHost); } /** @@ -157,13 +164,15 @@ protected function updateMetaTags(\DOMXPath $xpath) { * The attribute of which values to strip. * @param string $text * The the text to strip. + * @param string $replacement + * The replacement text. */ - protected function stripAttributeTextFromList(\DOMNodeList $items, string $attribute, string $text) { + protected function stripAttributeTextFromList(\DOMNodeList $items, string $attribute, string $text, $replacement = '') { // Get meta tags with content attribute starting with host. if (!empty($items)) { foreach ($items as $item) { /** @var \DOMElement $item */ - $item->setAttribute($attribute, str_replace($text, '', $item->getAttribute($attribute))); + $item->setAttribute($attribute, str_replace($text, $replacement, $item->getAttribute($attribute))); } } } From 8ff31163e91eb37cc195d3c4ccf483f52aa879e9 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 10 Sep 2024 20:44:08 -0700 Subject: [PATCH 38/75] [EPAD8-2548] Add patch to ensure public files are copied --- services/drupal/composer.patches.json | 1 + .../patches/tome-public-files-copy.patch | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 services/drupal/patches/tome-public-files-copy.patch diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index b3df00fd48..b78379579b 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -87,6 +87,7 @@ "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, "drupal/tome": { + "Add condition to copy public files": "patches/tome-public-files-copy.patch", "Add a method to disable crawling": "patches/tome-disable_crawl.patch" }, "drupal/paragraphs": { diff --git a/services/drupal/patches/tome-public-files-copy.patch b/services/drupal/patches/tome-public-files-copy.patch new file mode 100644 index 0000000000..b761bbafcf --- /dev/null +++ b/services/drupal/patches/tome-public-files-copy.patch @@ -0,0 +1,44 @@ +diff --git a/modules/tome_static/src/StaticGenerator.php b/modules/tome_static/src/StaticGenerator.php +index 845568f..90505a3 100644 +--- a/modules/tome_static/src/StaticGenerator.php ++++ b/modules/tome_static/src/StaticGenerator.php +@@ -167,6 +167,14 @@ class StaticGenerator implements StaticGeneratorInterface { + } + + $destination = $this->getDestination($path); ++ if ($response->isRedirection() && strpos($response->getTargetUrl(), 'sites/default/files') !== FALSE) { ++ $redirection_url = $this->makeExternalUrlLocal($response->getTargetUrl()); ++ if (!UrlHelper::isExternal($redirection_url)) { ++ $redirection_path = str_replace('sites/default/files', '', ltrim(parse_url($redirection_url, PHP_URL_PATH), '/')); ++ $redirection_uri = 'public://' . ltrim($redirection_path, '/'); ++ $response = new BinaryFileResponse($redirection_uri, 200); ++ } ++ } + if ($response->isRedirection() || $response->isOk()) { + $directory = dirname($destination); + $this->fileSystem->prepareDirectory($directory, FileSystemInterface::CREATE_DIRECTORY); +@@ -475,12 +483,6 @@ class StaticGenerator implements StaticGeneratorInterface { + } + } + /** @var \DOMElement $node */ +- foreach ($document->getElementsByTagName('a') as $node) { +- if ($node->hasAttribute('href')) { +- $paths[] = $node->getAttribute('href'); +- } +- } +- /** @var \DOMElement $node */ + foreach ($document->getElementsByTagName('script') as $node) { + if ($node->hasAttribute('src')) { + $paths[] = $node->getAttribute('src'); +@@ -499,11 +501,6 @@ class StaticGenerator implements StaticGeneratorInterface { + $paths[] = $node->getAttribute('src'); + } + } +- +- // Recursive call in HTML comments in order to retrieve conditional assets. +- /** @var \DOMElement $node */ +- foreach ($xpath->query('//comment()') as $node) { +- $paths = array_merge($paths, $this->getHtmlAssets($node->nodeValue, $root)); + } + + return $paths; From e85e6596202d2c077c9b3d774eb8c9ac84ab9f25 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 10 Sep 2024 21:02:16 -0700 Subject: [PATCH 39/75] [EPAD8-2548] Fix tome patch --- .../patches/tome-public-files-copy.patch | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/services/drupal/patches/tome-public-files-copy.patch b/services/drupal/patches/tome-public-files-copy.patch index b761bbafcf..309b9792a4 100644 --- a/services/drupal/patches/tome-public-files-copy.patch +++ b/services/drupal/patches/tome-public-files-copy.patch @@ -1,5 +1,5 @@ diff --git a/modules/tome_static/src/StaticGenerator.php b/modules/tome_static/src/StaticGenerator.php -index 845568f..90505a3 100644 +index 845568f..76df462 100644 --- a/modules/tome_static/src/StaticGenerator.php +++ b/modules/tome_static/src/StaticGenerator.php @@ -167,6 +167,14 @@ class StaticGenerator implements StaticGeneratorInterface { @@ -17,28 +17,3 @@ index 845568f..90505a3 100644 if ($response->isRedirection() || $response->isOk()) { $directory = dirname($destination); $this->fileSystem->prepareDirectory($directory, FileSystemInterface::CREATE_DIRECTORY); -@@ -475,12 +483,6 @@ class StaticGenerator implements StaticGeneratorInterface { - } - } - /** @var \DOMElement $node */ -- foreach ($document->getElementsByTagName('a') as $node) { -- if ($node->hasAttribute('href')) { -- $paths[] = $node->getAttribute('href'); -- } -- } -- /** @var \DOMElement $node */ - foreach ($document->getElementsByTagName('script') as $node) { - if ($node->hasAttribute('src')) { - $paths[] = $node->getAttribute('src'); -@@ -499,11 +501,6 @@ class StaticGenerator implements StaticGeneratorInterface { - $paths[] = $node->getAttribute('src'); - } - } -- -- // Recursive call in HTML comments in order to retrieve conditional assets. -- /** @var \DOMElement $node */ -- foreach ($xpath->query('//comment()') as $node) { -- $paths = array_merge($paths, $this->getHtmlAssets($node->nodeValue, $root)); - } - - return $paths; From 8554aa8623a9c40ac42cefb13ae25d5bb4940eda Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 10 Sep 2024 21:15:48 -0700 Subject: [PATCH 40/75] [EPAD8-2518] Add additional excludes for danse entities --- .../epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php index 0cfae1863d..2fbe3581a2 100644 --- a/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php +++ b/services/drupal/web/modules/custom/epa_snapshot/src/EventSubscriber/EpaSnapshotSubscriber.php @@ -30,6 +30,8 @@ class EpaSnapshotSubscriber implements EventSubscriberInterface { '/entity:user:/', '/entity:taxonomy_term:/', '/entity:danse_event:/', + '/entity:danse_notification:/', + '/entity:danse_notification_action:/', '/\/forms\//', '/\/perspectives\/search\//', '/\/faqs\/search\//', From c6657059acf1d7b0c3bc7672ce89f64b03ae6c42 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 11:54:05 -0500 Subject: [PATCH 41/75] [EPAD8-2491] Adding node_title_help_text contrib module to allow easy adding of help text. Adjusting help text for title on all content types. --- services/drupal/composer.json | 1 + services/drupal/composer.lock | 63 ++++++++++++++++++- .../drupal/config/sync/node.type.event.yml | 3 + services/drupal/config/sync/node.type.faq.yml | 3 + .../config/sync/node.type.news_release.yml | 3 + .../drupal/config/sync/node.type.page.yml | 3 + .../config/sync/node.type.perspective.yml | 3 + .../config/sync/node.type.public_notice.yml | 3 + .../config/sync/node.type.regulation.yml | 3 + .../drupal/config/sync/node.type.speeches.yml | 3 + .../drupal/config/sync/node.type.web_area.yml | 3 + .../drupal/config/sync/node.type.webform.yml | 3 + 12 files changed, 91 insertions(+), 3 deletions(-) diff --git a/services/drupal/composer.json b/services/drupal/composer.json index 762f3571e3..01e89799fb 100644 --- a/services/drupal/composer.json +++ b/services/drupal/composer.json @@ -253,6 +253,7 @@ "drupal/metatag": "^1.11", "drupal/module_filter": "^4.0", "drupal/native_lazy_loading": "^1.1@RC", + "drupal/node_title_help_text": "^1.4", "drupal/page_manager": "^4.0@RC", "drupal/paragraphs": "^1.9", "drupal/paragraphs_entity_embed": "2.x-dev", diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index 1ec7daa9e8..9c321ac1f3 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/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": "39fc039dd4447c442ffa436d90c59718", + "content-hash": "459e340adf1b7e79c3764eb0bfc985e5", "packages": [ { "name": "algolia/places", @@ -8491,6 +8491,65 @@ "source": "https://git.drupalcode.org/project/native_lazy_loading" } }, + { + "name": "drupal/node_title_help_text", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/node_title_help_text.git", + "reference": "8.x-1.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/node_title_help_text-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "d756fc4f3783abae03c1e6c99e0e228b01edb506" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10 || ^11" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.4", + "datestamp": "1724759210", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Devendra Jadhav", + "homepage": "https://www.drupal.org/u/jadhavdevendra", + "role": "Maintainer" + }, + { + "name": "jadhavdevendra", + "homepage": "https://www.drupal.org/user/485984" + }, + { + "name": "makbul_khan8", + "homepage": "https://www.drupal.org/user/991152" + }, + { + "name": "vinmassaro", + "homepage": "https://www.drupal.org/user/525104" + } + ], + "description": "Allows you to add help text to node title.", + "homepage": "https://www.drupal.org/project/node_title_help_text", + "support": { + "source": "https://cgit.drupalcode.org/node_title_help_text", + "issues": "https://drupal.org/project/issues/node_title_help_text", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, { "name": "drupal/page_manager", "version": "4.0.0-rc2", @@ -24186,9 +24245,7 @@ "drupal/default_content": 15, "drupal/domain": 10, "drupal/entity_clone": 10, - "drupal/entity_embed": 20, "drupal/entitygroupfield": 20, - "drupal/fast_404": 15, "drupal/flag": 10, "drupal/focal_point": 15, "drupal/gcontent_moderation": 20, diff --git a/services/drupal/config/sync/node.type.event.yml b/services/drupal/config/sync/node.type.event.yml index 73bdbdfb0f..0bdd42f541 100644 --- a/services/drupal/config/sync/node.type.event.yml +++ b/services/drupal/config/sync/node.type.event.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Events type: event description: 'are useful for creating web pages for conferences, webinars and other types of events that have start and end dates and times.' diff --git a/services/drupal/config/sync/node.type.faq.yml b/services/drupal/config/sync/node.type.faq.yml index 5a2236b71a..3ca6e4b1a7 100644 --- a/services/drupal/config/sync/node.type.faq.yml +++ b/services/drupal/config/sync/node.type.faq.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Frequent Question' type: faq description: 'are Question and Answer format pages that are easily searchable and provide a quick response to what users may be looking for.' diff --git a/services/drupal/config/sync/node.type.news_release.yml b/services/drupal/config/sync/node.type.news_release.yml index fa664b8eaf..a04398a57a 100644 --- a/services/drupal/config/sync/node.type.news_release.yml +++ b/services/drupal/config/sync/node.type.news_release.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'News Releases' type: news_release description: 'are the Agencyโ€™s primary way to release Agency news items.' diff --git a/services/drupal/config/sync/node.type.page.yml b/services/drupal/config/sync/node.type.page.yml index 4a4087c1bb..1218d6d564 100644 --- a/services/drupal/config/sync/node.type.page.yml +++ b/services/drupal/config/sync/node.type.page.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Basic page' type: page description: 'are the most common content type.' diff --git a/services/drupal/config/sync/node.type.perspective.yml b/services/drupal/config/sync/node.type.perspective.yml index 58a976299b..0865349e2d 100644 --- a/services/drupal/config/sync/node.type.perspective.yml +++ b/services/drupal/config/sync/node.type.perspective.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Perspectives type: perspective description: 'are commentaries about environmental and public health topics.' diff --git a/services/drupal/config/sync/node.type.public_notice.yml b/services/drupal/config/sync/node.type.public_notice.yml index 38563e4d13..8e12c33576 100644 --- a/services/drupal/config/sync/node.type.public_notice.yml +++ b/services/drupal/config/sync/node.type.public_notice.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Public Notice' type: public_notice description: 'present a consistent look and feel across http://epa.gov for all public notices.' diff --git a/services/drupal/config/sync/node.type.regulation.yml b/services/drupal/config/sync/node.type.regulation.yml index 1e23d60975..ab83c17d30 100644 --- a/services/drupal/config/sync/node.type.regulation.yml +++ b/services/drupal/config/sync/node.type.regulation.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Regulation type: regulation description: 'are a standard layout for providing information about regulations.' diff --git a/services/drupal/config/sync/node.type.speeches.yml b/services/drupal/config/sync/node.type.speeches.yml index 5ca9c19a4a..7239eec8cf 100644 --- a/services/drupal/config/sync/node.type.speeches.yml +++ b/services/drupal/config/sync/node.type.speeches.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Speeches and Remarks' type: speeches description: 'are versions of Administrator speeches, as prepared for delivery.' diff --git a/services/drupal/config/sync/node.type.web_area.yml b/services/drupal/config/sync/node.type.web_area.yml index 1f2784f5a1..24a29465d0 100644 --- a/services/drupal/config/sync/node.type.web_area.yml +++ b/services/drupal/config/sync/node.type.web_area.yml @@ -4,10 +4,13 @@ status: true dependencies: module: - menu_ui + - node_title_help_text third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Web Area Homepage' type: web_area description: 'are landing pages for the web area and help the user navigate to their desired content inside the web area. You can have one home page and multiple landing pages.' diff --git a/services/drupal/config/sync/node.type.webform.yml b/services/drupal/config/sync/node.type.webform.yml index 7257ccc12c..9c21d524ae 100644 --- a/services/drupal/config/sync/node.type.webform.yml +++ b/services/drupal/config/sync/node.type.webform.yml @@ -4,6 +4,7 @@ status: true dependencies: module: - menu_ui + - node_title_help_text enforced: module: - webform_node @@ -11,6 +12,8 @@ third_party_settings: menu_ui: available_menus: { } parent: '' + node_title_help_text: + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Form type: webform description: 'are a content type that have a Webform attached to them. Webforms can include form elements that allow your audience to send information to you. Contact us forms are an example of this content type.' From 5c86136f3062474a1677f6d49fe335d2c62ec8c0 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 11:54:27 -0500 Subject: [PATCH 42/75] [EPAD8-2491] Adding paragraphs patch to fix a spacing issue with label and button. --- services/drupal/composer.patches.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index a13a3d2bde..b527729f56 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -91,7 +91,8 @@ "drupal/paragraphs": { "Fix integrity constraint violation when embedding paragraphs on blocks in layout builder": "https://www.drupal.org/files/issues/2019-07-10/paragraphs-set_langcode_widgets-2901390-29.patch", "Fixes paragraphs not rendering on current revision when they have been edited on forward revision": "https://www.drupal.org/files/issues/2020-07-08/access-controll-issue-3090200-22.patch", - "Add paragraph button too large when using Claro admin theme": "https://www.drupal.org/files/issues/2024-03-13/add-paragraph-button-styles-claro-3424471-5.patch" + "Add paragraph button too large when using Claro admin theme": "https://www.drupal.org/files/issues/2024-03-13/add-paragraph-button-styles-claro-3424471-5.patch", + "Space missing between the word \"to\" and the emphasis tag near the add button" : "https://git.drupalcode.org/project/paragraphs/-/merge_requests/101.diff" }, "drupal/subpathauto": { "Shows page not found when url has encoded characters": "https://www.drupal.org/files/issues/shows_page_not_found-2865039-3.patch" From 45909ae036cfd2ff38d9d5f6c22aa16da23d8989 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 11:54:46 -0500 Subject: [PATCH 43/75] [EPAD8-2491] Enabling node_title_help_text module. --- services/drupal/config/sync/core.extension.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/services/drupal/config/sync/core.extension.yml b/services/drupal/config/sync/core.extension.yml index d85c5ad230..538cf01025 100644 --- a/services/drupal/config/sync/core.extension.yml +++ b/services/drupal/config/sync/core.extension.yml @@ -147,6 +147,7 @@ module: mysql: 0 native_lazy_loading: 0 node: 0 + node_title_help_text: 0 options: 0 page_cache: 0 page_manager: 0 From d2674d63d628080288f5b51b8d8498eb49f20002 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 12:49:19 -0500 Subject: [PATCH 44/75] [EPAD8-2491] Adding help text to all node Body (field_paragraphs) fields. --- .../sync/field.field.node.event.field_paragraphs.yml | 2 +- .../field.field.node.news_release.field_paragraphs.yml | 2 +- .../config/sync/field.field.node.page.field_paragraphs.yml | 7 +------ .../sync/field.field.node.perspective.field_paragraphs.yml | 2 +- .../sync/field.field.node.speeches.field_paragraphs.yml | 2 +- .../sync/field.field.node.web_area.field_paragraphs.yml | 2 +- .../sync/field.field.node.webform.field_paragraphs.yml | 2 +- 7 files changed, 7 insertions(+), 12 deletions(-) diff --git a/services/drupal/config/sync/field.field.node.event.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.event.field_paragraphs.yml index 24911fe1df..5b9a85cedb 100644 --- a/services/drupal/config/sync/field.field.node.event.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.event.field_paragraphs.yml @@ -26,7 +26,7 @@ field_name: field_paragraphs entity_type: node bundle: event label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: false translatable: true default_value: { } diff --git a/services/drupal/config/sync/field.field.node.news_release.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.news_release.field_paragraphs.yml index 5f89e5c1c4..d99c8bd610 100644 --- a/services/drupal/config/sync/field.field.node.news_release.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.news_release.field_paragraphs.yml @@ -26,7 +26,7 @@ field_name: field_paragraphs entity_type: node bundle: news_release label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: false translatable: true default_value: { } diff --git a/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml index d0e3984e36..9537bc79f5 100644 --- a/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.page.field_paragraphs.yml @@ -15,18 +15,13 @@ dependencies: - paragraphs.paragraphs_type.link_list - paragraphs.paragraphs_type.slideshow module: - - custom_add_another - entity_reference_revisions -third_party_settings: - custom_add_another: - custom_add_another: '' - custom_remove: '' id: node.page.field_paragraphs field_name: field_paragraphs entity_type: node bundle: page label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: true translatable: true default_value: { } diff --git a/services/drupal/config/sync/field.field.node.perspective.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.perspective.field_paragraphs.yml index d6c94cb409..ba54947528 100644 --- a/services/drupal/config/sync/field.field.node.perspective.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.perspective.field_paragraphs.yml @@ -26,7 +26,7 @@ field_name: field_paragraphs entity_type: node bundle: perspective label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: true translatable: true default_value: { } diff --git a/services/drupal/config/sync/field.field.node.speeches.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.speeches.field_paragraphs.yml index 1f3728f6d7..ef78fe084e 100644 --- a/services/drupal/config/sync/field.field.node.speeches.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.speeches.field_paragraphs.yml @@ -26,7 +26,7 @@ field_name: field_paragraphs entity_type: node bundle: speeches label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: true translatable: true default_value: { } diff --git a/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml index 18b80ea5ef..403b8110ca 100644 --- a/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.web_area.field_paragraphs.yml @@ -26,7 +26,7 @@ field_name: field_paragraphs entity_type: node bundle: web_area label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: false translatable: false default_value: { } diff --git a/services/drupal/config/sync/field.field.node.webform.field_paragraphs.yml b/services/drupal/config/sync/field.field.node.webform.field_paragraphs.yml index 8712fe70d2..a11ff4ad54 100644 --- a/services/drupal/config/sync/field.field.node.webform.field_paragraphs.yml +++ b/services/drupal/config/sync/field.field.node.webform.field_paragraphs.yml @@ -26,7 +26,7 @@ field_name: field_paragraphs entity_type: node bundle: webform label: Body -description: '' +description: 'You can add paragraphs in using this dropdown menu, or you can embed paragraphs directly into the editor by selecting the paragraphs buttons.' required: false translatable: true default_value: { } From 4665693e0fa18db6f004d51b200d44335056cdf8 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 13:01:27 -0500 Subject: [PATCH 45/75] [EPAD8-2491] Adding help text to Primary Metadata tab on all content types. : --- .../sync/core.entity_form_display.node.event.default.yml | 4 +++- .../sync/core.entity_form_display.node.faq.default.yml | 3 ++- .../core.entity_form_display.node.news_release.default.yml | 4 +++- .../sync/core.entity_form_display.node.page.default.yml | 4 +++- .../core.entity_form_display.node.perspective.default.yml | 5 ++++- .../core.entity_form_display.node.public_notice.default.yml | 3 ++- .../core.entity_form_display.node.regulation.default.yml | 3 ++- .../sync/core.entity_form_display.node.speeches.default.yml | 3 ++- .../sync/core.entity_form_display.node.web_area.default.yml | 4 +++- .../sync/core.entity_form_display.node.webform.default.yml | 3 ++- 10 files changed, 26 insertions(+), 10 deletions(-) diff --git a/services/drupal/config/sync/core.entity_form_display.node.event.default.yml b/services/drupal/config/sync/core.entity_form_display.node.event.default.yml index 0149d87156..f42e966427 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.event.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.event.default.yml @@ -81,9 +81,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_javascript: children: @@ -185,6 +186,7 @@ content: separator: to add_abbreviations: before allday: true + remove_seconds: false third_party_settings: { } field_deadline: type: datetime_default diff --git a/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml b/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml index 98c1712130..c03f303e43 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml @@ -71,9 +71,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml b/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml index 9ed70db49c..6aa7896a37 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml @@ -72,9 +72,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_additional_fields: children: @@ -185,6 +186,7 @@ content: region: content settings: sidebar: true + use_details: true third_party_settings: { } field_owning_office: type: entity_reference_autocomplete_tags diff --git a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml index 45d5fd92f0..9916782bfd 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml @@ -67,9 +67,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''s internal search engine.' required_fields: true group_other_metadata: children: @@ -99,6 +100,7 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed description: '' diff --git a/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml b/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml index 24a8f66f71..e447503d96 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml @@ -22,6 +22,7 @@ dependencies: - field.field.node.perspective.field_publisher - field.field.node.perspective.field_release - field.field.node.perspective.field_review_deadline + - field.field.node.perspective.field_scheduled_transition - field.field.node.perspective.field_search_text - field.field.node.perspective.field_subjects - field.field.node.perspective.field_type @@ -67,9 +68,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_page_javascript: children: @@ -232,6 +234,7 @@ content: region: content settings: sidebar: true + use_details: true third_party_settings: { } field_owning_office: type: entity_reference_autocomplete_tags diff --git a/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml b/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml index 0a676cb238..5fec0a5b66 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml @@ -82,9 +82,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml b/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml index 45ce208899..a869f6149a 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml @@ -78,9 +78,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml b/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml index 69c8f09d16..8879d3f051 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml @@ -78,9 +78,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_page_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml index b8d73a1371..b54ec0f528 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml @@ -52,9 +52,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_other_metadata: children: @@ -201,6 +202,7 @@ content: region: content settings: sidebar: true + use_details: true third_party_settings: { } field_owning_office: type: entity_reference_autocomplete_tags diff --git a/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml b/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml index 4706c6748b..be4b1819c3 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml @@ -46,9 +46,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: open - description: '' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' required_fields: true group_other_metadata: children: From ceb844b0ae96caf0a7977f3654d2fefd8013fa7e Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 13:10:42 -0500 Subject: [PATCH 46/75] [EPAD8-2491] Updating help text for the Page Javascript tab to have help text. --- .../sync/core.entity_form_display.node.event.default.yml | 3 ++- .../config/sync/core.entity_form_display.node.faq.default.yml | 3 ++- .../config/sync/core.entity_form_display.node.page.default.yml | 2 +- .../sync/core.entity_form_display.node.perspective.default.yml | 3 ++- .../core.entity_form_display.node.public_notice.default.yml | 3 ++- .../sync/core.entity_form_display.node.regulation.default.yml | 3 ++- .../sync/core.entity_form_display.node.speeches.default.yml | 3 ++- .../sync/core.entity_form_display.node.web_area.default.yml | 3 ++- .../sync/core.entity_form_display.node.webform.default.yml | 3 ++- 9 files changed, 17 insertions(+), 9 deletions(-) diff --git a/services/drupal/config/sync/core.entity_form_display.node.event.default.yml b/services/drupal/config/sync/core.entity_form_display.node.event.default.yml index f42e966427..644699d801 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.event.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.event.default.yml @@ -96,9 +96,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_additional_fields: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml b/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml index c03f303e43..a68a835935 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml @@ -86,9 +86,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_additional_fields: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml index 9916782bfd..0b73f03ffc 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml @@ -103,7 +103,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true id: node.page.default targetEntityType: node diff --git a/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml b/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml index e447503d96..7468cebafe 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml @@ -83,9 +83,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_other_metadata: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml b/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml index 5fec0a5b66..01b610d788 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml @@ -97,9 +97,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_public_notice_comments: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml b/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml index a869f6149a..e7565b4745 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml @@ -93,9 +93,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_additional_fields: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml b/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml index 8879d3f051..cf9f4520b3 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml @@ -93,9 +93,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_other_metadata: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml index b54ec0f528..eedbb3d95f 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml @@ -84,9 +84,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_additional_fields: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml b/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml index be4b1819c3..8256fc211e 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml @@ -79,9 +79,10 @@ third_party_settings: format_type: tab format_settings: classes: '' + show_empty_fields: false id: '' formatter: closed - description: '' + description: 'This is the only place you can add JavaScript to your web page. Any content added here will be inserted in the footer of the published page. Read the JavaScript Web Standards to learn more about the requirements.' required_fields: true group_additional_fields: children: From 3e2ae83c26f5885d135297fe7cc03f25eef6ca45 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Thu, 12 Sep 2024 13:12:47 -0500 Subject: [PATCH 47/75] [EPAD8-2491] Adding help text to sidebar field for basic pages. --- ...eld.field.node.page.field_paragraphs_1.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/services/drupal/config/sync/field.field.node.page.field_paragraphs_1.yml b/services/drupal/config/sync/field.field.node.page.field_paragraphs_1.yml index 6d63cf16aa..318bd4c133 100644 --- a/services/drupal/config/sync/field.field.node.page.field_paragraphs_1.yml +++ b/services/drupal/config/sync/field.field.node.page.field_paragraphs_1.yml @@ -14,18 +14,13 @@ dependencies: - paragraphs.paragraphs_type.link_list - paragraphs.paragraphs_type.slideshow module: - - custom_add_another - entity_reference_revisions -third_party_settings: - custom_add_another: - custom_add_another: '' - custom_remove: '' id: node.page.field_paragraphs_1 field_name: field_paragraphs_1 entity_type: node bundle: page label: Sidebar -description: '' +description: 'The Sidebar field allow you to place content in a narrower column on the right side of the page. It is optional.' required: false translatable: false default_value: { } @@ -83,6 +78,9 @@ settings: from_library: weight: -27 enabled: true + graphic_list: + weight: 39 + enabled: false header: weight: -30 enabled: true @@ -98,13 +96,22 @@ settings: locations_of_prop_actions: weight: -19 enabled: false + media_block: + weight: 45 + enabled: false press_officers: weight: -18 enabled: false + section: + weight: 47 + enabled: false slide: weight: 41 enabled: false slideshow: weight: -28 enabled: true + tagline: + weight: 50 + enabled: false field_type: entity_reference_revisions From 5eecec6c3b322b0283648aa252a2daf7549e7b69 Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Tue, 17 Sep 2024 16:17:44 -0400 Subject: [PATCH 48/75] EPAD8-2541 use facet processor to generate link to perspectives by same author --- ..._view_display.paragraph.author.default.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/services/drupal/config/sync/core.entity_view_display.paragraph.author.default.yml b/services/drupal/config/sync/core.entity_view_display.paragraph.author.default.yml index c1c2240d9d..8830259d37 100644 --- a/services/drupal/config/sync/core.entity_view_display.paragraph.author.default.yml +++ b/services/drupal/config/sync/core.entity_view_display.paragraph.author.default.yml @@ -10,9 +10,9 @@ dependencies: - field.field.paragraph.author.field_position - paragraphs.paragraphs_type.author module: + - epa_core - layout_builder - layout_builder_restrictions - - linked_field - text third_party_settings: layout_builder: @@ -30,17 +30,16 @@ bundle: author mode: default content: field_author: - type: entity_reference_label + type: epa_core_hierarchical_term_facet_formatter label: hidden settings: - link: false - third_party_settings: - linked_field: - linked: '1' - type: custom - destination: 'internal:/perspectives/search/perspectives_author/[paragraph:field_author:target_id]' - advanced: { } - token: '' + display: leaf + link: true + wrap: none + separator: ' ยป ' + reverse: false + facet_source: perspectives_author + third_party_settings: { } weight: 0 region: content field_biography: From a1ff8c58821c92ec774df066f2377cb8472fb428 Mon Sep 17 00:00:00 2001 From: Dan Mouyard Date: Tue, 17 Sep 2024 18:03:53 -0400 Subject: [PATCH 49/75] EPAD8-2528: Add helpful paragraph variables --- .../web/themes/epa_theme/includes/paragraph.inc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/drupal/web/themes/epa_theme/includes/paragraph.inc b/services/drupal/web/themes/epa_theme/includes/paragraph.inc index 4194b7ecaf..1a300444dc 100644 --- a/services/drupal/web/themes/epa_theme/includes/paragraph.inc +++ b/services/drupal/web/themes/epa_theme/includes/paragraph.inc @@ -7,6 +7,20 @@ use Drupal\Core\Render\Element; +/** + * Implements theme_preprocess_paragraph(). + */ +function epa_theme_preprocess_paragraph(&$variables) { + if (isset($variables['paragraph']->parent_field_name)) { + $variables['parent_field'] = $variables['paragraph']->parent_field_name->value; + } + + if ($variables['paragraph']->getParentEntity()) { + $variables['parent_type'] = $variables['paragraph']->getParentEntity()->getEntityTypeId(); + $variables['parent_bundle'] = $variables['paragraph']->getParentEntity()->bundle(); + } +} + /** * Implements theme_preprocess_paragraph() */ From 87d924da0d08c63ab42df13d1d88e703d073452f Mon Sep 17 00:00:00 2001 From: Dan Mouyard Date: Tue, 17 Sep 2024 18:05:08 -0400 Subject: [PATCH 50/75] EPAD8-2528: Add star-circle icon and doubled space classes --- .../epa_theme/images/_sprite-source-files/star-circle.svg | 1 + .../source/_patterns/05-components/icon/_icon.scss | 8 ++++++++ .../source/_patterns/05-components/icon/icon.twig | 1 + 3 files changed, 10 insertions(+) create mode 100644 services/drupal/web/themes/epa_theme/images/_sprite-source-files/star-circle.svg diff --git a/services/drupal/web/themes/epa_theme/images/_sprite-source-files/star-circle.svg b/services/drupal/web/themes/epa_theme/images/_sprite-source-files/star-circle.svg new file mode 100644 index 0000000000..cddafd1762 --- /dev/null +++ b/services/drupal/web/themes/epa_theme/images/_sprite-source-files/star-circle.svg @@ -0,0 +1 @@ + diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/_icon.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/_icon.scss index b5cf57b6bd..9ec584e338 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/_icon.scss +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/_icon.scss @@ -26,6 +26,14 @@ &.is-spaced-after { margin-right: 0.25em; } + + &.is-double-spaced-before { + margin-left: 0.5em; + } + + &.is-double-spaced-after { + margin-right: 0.5em; + } } .icon--exit, diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/icon.twig b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/icon.twig index 3fa7b7640c..8727f934a8 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/icon.twig +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/icon/icon.twig @@ -14,6 +14,7 @@ 'file', 'magnifying-glass', 'rss', + 'star-circle', 'xmark', 'warning', 'chevron-circle-left', From a76d0dde045a5cf5cfcd0322ecf96408c1293c78 Mon Sep 17 00:00:00 2001 From: Dan Mouyard Date: Tue, 17 Sep 2024 18:22:36 -0400 Subject: [PATCH 51/75] EPAD8-2528: Create popular links component in Pattern Lab --- .../_patterns/05-components/_index.scss | 1 + .../popular-links/_popular-links.scss | 90 +++++++++++++++++++ .../popular-links/popular-links.md | 14 +++ .../popular-links/popular-links.twig | 32 +++++++ .../popular-links/popular-links.yml | 10 +++ .../popular-links/popular-links~dark-blue.yml | 11 +++ .../popular-links~light-gray.yml | 11 +++ 7 files changed, 169 insertions(+) create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.md create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.twig create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.yml create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~dark-blue.yml create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~light-gray.yml diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/_index.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/_index.scss index 394ab1b358..4f71b0f830 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/_index.scss +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/_index.scss @@ -43,6 +43,7 @@ $wysiwyg: false !default; @forward 'new/new'; @forward 'page-title/page-title'; @forward 'pager'; +@forward 'popular-links/popular-links'; @forward 'progress/progress'; @forward 'pull-quote/pull-quote'; @forward 'rss-feed/rss-feed'; diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss new file mode 100644 index 0000000000..c52da1a2d8 --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss @@ -0,0 +1,90 @@ +// @file +// Styles for Popular Links. + +@use '../../00-config' as *; + +$breakpoint-2-cols: 450px; +$breakpoint-4-cols: 900px; + +.popular-links { + --epa-color-bg: #{gesso-grayscale(white)}; + --epa-color-border: #{gesso-brand(blue, base)}; + --epa-color-link: #{gesso-color(text, primary)}; + --epa-color-link-bg-hover: #{gesso-brand(blue, base)}; + --epa-color-link-text-hover: #{gesso-grayscale(white)}; + --epa-color-star: #{gesso-brand(blue, base)}; + --epa-color-text: #{gesso-color(text, primary)}; + background: var(--epa-color-bg); + color: var(--epa-color-text); + margin-block-end: rem(gesso-spacing(5)); + padding-block: rem(gesso-spacing(4)); +} + +.popular-links__title { + color: var(--epa-color-text) !important; +} + +.popular-links__title-icon { + color: var(--epa-color-star); +} + +.popular-links__list { + @include list-clean(); + display: flex; + flex-wrap: wrap; + gap: rem(gesso-spacing(3)); + + li { + flex-basis: 100%; + flex-grow: 1; + + @include breakpoint($breakpoint-2-cols) { + flex-basis: 46%; + } + + @include breakpoint($breakpoint-4-cols) { + flex-basis: 22%; + } + } + + a { + border-left: 2px solid var(--epa-color-border); + display: inline-flex; + font-family: font-family(heading); + font-size: font-size(heading, $theme-h4-font-size); + font-weight: gesso-font-weight(bold); + height: 100%; + line-height: line-height(heading, $theme-heading-line-height); + padding: rem(units('105')) rem(gesso-spacing(2)); + text-decoration: none; + width: 100%; + + &:link, + &:visited { + background: transparent; + color: var(--epa-color-link); + } + + &:hover, + &:focus, + &:active { + background-color: var(--epa-color-link-bg-hover); + color: var(--epa-color-link-text-hover); + text-decoration: underline; + } + } +} + +.popular-links--dark-blue { + --epa-color-bg: #{gesso-brand(blue, dark)}; + --epa-color-border: #{gesso-grayscale(white)}; + --epa-color-link: #{gesso-grayscale(white)}; + --epa-color-link-active: #{gesso-grayscale(white)}; + --epa-color-link-hover: #{gesso-grayscale(white)}; + --epa-color-star: #{gesso-grayscale(white)}; + --epa-color-text: #{gesso-grayscale(white)}; +} + +.popular-links--light-gray { + --epa-color-bg: #{color('base-lightest')}; +} diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.md b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.md new file mode 100644 index 0000000000..9991e16c3b --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.md @@ -0,0 +1,14 @@ +--- +el: .popular-links +title: Popular Links +state: inreview +--- + +__Variables:__ +* modifier_classes: [string] Classes to modify the default component styling +* has_constrain: [boolean] Whether to add a constrain wrapper. +* constrain_modifier_classes: [string] Additional constrain classes used to +control layout. +* title_element: [string] HTML element to use for the title. +* title: [string] Title for the component. +* links: [object] Links for the component. diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.twig b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.twig new file mode 100644 index 0000000000..27a8b339e5 --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.twig @@ -0,0 +1,32 @@ +{% set classes = [ + 'popular-links', + modifier_classes ? modifier_classes, +]|join(' ')|trim %} + +{% set constrain_classes = [ + 'l-constrain', + constrain_modifier_classes ? constrain_modifier_classes, +]|join(' ')|trim %} + +
+ {% if has_constrain %} +
+ {% endif %} + + {% if title %} + <{{ title_element ?: 'h3' }} class="h2 popular-links__title"> + {% include '@components/icon/icon.twig' with { + 'is_hidden': true, + 'modifier_classes': 'popular-links__title-icon is-double-spaced-after', + 'icon_name': 'star-circle' + } -%} + {{ title }} + + {% endif %} + + {{ links }} + + {% if has_constrain %} +
+ {% endif %} +
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.yml b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.yml new file mode 100644 index 0000000000..9501465543 --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links.yml @@ -0,0 +1,10 @@ +--- +has_constrain: true +title: 'Title' +links: |- + diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~dark-blue.yml b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~dark-blue.yml new file mode 100644 index 0000000000..3592edab6b --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~dark-blue.yml @@ -0,0 +1,11 @@ +--- +modifier_classes: 'popular-links--dark-blue' +has_constrain: true +title: 'Title' +links: |- + diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~light-gray.yml b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~light-gray.yml new file mode 100644 index 0000000000..54ef2b50ac --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/popular-links~light-gray.yml @@ -0,0 +1,11 @@ +--- +modifier_classes: 'popular-links--light-gray' +has_constrain: true +title: 'Title' +links: |- + From 1db66193c3040c864434a971023013857c4c38cb Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Tue, 17 Sep 2024 17:58:43 -0500 Subject: [PATCH 52/75] [EPAD8-2465] Updating ultimate_cron and mediaelement to latest release to incorporate PHP 8.2 fixes. --- services/drupal/composer.lock | 44 ++++++++++++--------------- services/drupal/composer.patches.json | 6 ---- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index 95eb4a202d..ee69d069a6 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/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": "dea3d9747292da3e2763c2ac14570a1d", + "content-hash": "96ad3a3516a194f389004a716b789ee4", "packages": [ { "name": "algolia/places", @@ -8384,26 +8384,26 @@ }, { "name": "drupal/mediaelement", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/mediaelement.git", - "reference": "2.0.0" + "reference": "2.0.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/mediaelement-2.0.0.zip", - "reference": "2.0.0", - "shasum": "3bbe60c6818d627cbbce413436f0b83f7f10ac79" + "url": "https://ftp.drupal.org/files/projects/mediaelement-2.0.2.zip", + "reference": "2.0.2", + "shasum": "092d5c6059117df592f46695a35eaea9609a6edf" }, "require": { - "drupal/core": "^8 || ^9 || ^10" + "drupal/core": "^10.1 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0", - "datestamp": "1664559391", + "version": "2.0.2", + "datestamp": "1725998138", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8420,12 +8420,8 @@ "homepage": "https://www.drupal.org/u/jnettik" }, { - "name": "jnettik", - "homepage": "https://www.drupal.org/user/741478" - }, - { - "name": "mfer", - "homepage": "https://www.drupal.org/user/25701" + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" } ], "description": "Provide MediaElement.js to be used on the entire site or just with Filefields.", @@ -10934,26 +10930,26 @@ }, { "name": "drupal/ultimate_cron", - "version": "2.0.0-alpha6", + "version": "2.0.0-alpha8", "source": { "type": "git", "url": "https://git.drupalcode.org/project/ultimate_cron.git", - "reference": "8.x-2.0-alpha6" + "reference": "8.x-2.0-alpha8" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/ultimate_cron-8.x-2.0-alpha6.zip", - "reference": "8.x-2.0-alpha6", - "shasum": "42ab6df8e94a9b3772876a378062534552a32826" + "url": "https://ftp.drupal.org/files/projects/ultimate_cron-8.x-2.0-alpha8.zip", + "reference": "8.x-2.0-alpha8", + "shasum": "1774cdd8e65964069e993cb66f74a11fe7929d8c" }, "require": { - "drupal/core": "^9 || ^10" + "drupal/core": "^9 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.0-alpha6", - "datestamp": "1666471448", + "version": "8.x-2.0-alpha8", + "datestamp": "1723755483", "security-coverage": { "status": "not-covered", "message": "Alpha releases are not covered by Drupal security advisories." @@ -10975,7 +10971,7 @@ "homepage": "https://www.drupal.org/user/245635" }, { - "name": "Berdir", + "name": "berdir", "homepage": "https://www.drupal.org/user/214652" }, { diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index df760dc855..081d9f0ed1 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -252,12 +252,6 @@ }, "drupal/address_formatter": { "Automated Drupal 10 compatibility fixes": "https://www.drupal.org/files/issues/2022-07-18/address_formatter.2.0-alpha5.rector.patch" - }, - "drupal/mediaelement": { - "Fix deprecated code.": "https://www.drupal.org/files/issues/2023-10-26/3396834-3.patch" - }, - "drupal/ultimate_cron": { - "Fix deprecated code.": "https://www.drupal.org/files/issues/2023-04-03/3351276-4.patch" } } } From 804467b5dfcb1f5c4bf1f926097c52b987d1b724 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Wed, 18 Sep 2024 09:49:43 -0500 Subject: [PATCH 53/75] [EPAD8-2541] Updating config for all search facet pages to use query string parameters instead of pretty paths. --- ...facet_source.search_api__views_page__search_faqs__page_1.yml | 2 +- ...urce.search_api__views_page__search_perspectives__page_1.yml | 2 +- ...ce.search_api__views_page__search_public_notices__page_1.yml | 2 +- ...rch_api__views_page__search_speeches_and_remarks__page_1.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_faqs__page_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_faqs__page_1.yml index f89468b64d..06a42ad249 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_faqs__page_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_faqs__page_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_page__search_faqs__page_1 name: 'search_api:views_page__search_faqs__page_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_perspectives__page_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_perspectives__page_1.yml index 558687725b..1398bb8f18 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_perspectives__page_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_perspectives__page_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_page__search_perspectives__page_1 name: 'search_api:views_page__search_perspectives__page_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_public_notices__page_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_public_notices__page_1.yml index 43c75c37bd..4d654d702e 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_public_notices__page_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_public_notices__page_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_page__search_public_notices__page_1 name: 'search_api:views_page__search_public_notices__page_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_speeches_and_remarks__page_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_speeches_and_remarks__page_1.yml index 1b02b62cf2..5f702be74b 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_speeches_and_remarks__page_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__search_speeches_and_remarks__page_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_page__search_speeches_and_remarks__page_1 name: 'search_api:views_page__search_speeches_and_remarks__page_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true From d48489c820ac68f7018c50364f56fd8456baee98 Mon Sep 17 00:00:00 2001 From: Dan Mouyard Date: Wed, 18 Sep 2024 13:26:32 -0400 Subject: [PATCH 54/75] EPAD8-2528: Theme popular links paragraph --- ...ity_view_display.node.web_area.default.yml | 1 + ...splay.paragraph.featured_links.default.yml | 15 +++++-- ...field--paragraph--featured-links.html.twig | 12 ++++++ .../paragraph--featured-links.html.twig | 43 +++++++++++++++++++ 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 services/drupal/web/themes/epa_theme/templates/field/field--paragraph--featured-links.html.twig create mode 100644 services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--featured-links.html.twig diff --git a/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml index 39da482ed8..6096eaec4d 100644 --- a/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_view_display.node.web_area.default.yml @@ -322,6 +322,7 @@ hidden: content_moderation_control: true entitygroupfield: true field_banner: true + field_web_area_popular_links: true langcode: true layout_builder__layout: true search_api_excerpt: true diff --git a/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml b/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml index ad781839ae..b10810df2e 100644 --- a/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml +++ b/services/drupal/config/sync/core.entity_view_display.paragraph.featured_links.default.yml @@ -3,12 +3,13 @@ langcode: en status: true dependencies: config: - - field.field.paragraph.featured_links.field_theme_color - field.field.paragraph.featured_links.field_links + - field.field.paragraph.featured_links.field_theme_color - field.field.paragraph.featured_links.field_title - paragraphs.paragraphs_type.featured_links module: - epa_links + - options id: paragraph.featured_links.default targetEntityType: paragraph bundle: featured_links @@ -24,7 +25,14 @@ content: rel: 0 target: 0 third_party_settings: { } - weight: 1 + weight: 2 + region: content + field_theme_color: + type: list_key + label: hidden + settings: { } + third_party_settings: { } + weight: 0 region: content field_title: type: string @@ -32,8 +40,7 @@ content: settings: link_to_entity: false third_party_settings: { } - weight: 0 + weight: 1 region: content hidden: - field_theme_color: true search_api_excerpt: true diff --git a/services/drupal/web/themes/epa_theme/templates/field/field--paragraph--featured-links.html.twig b/services/drupal/web/themes/epa_theme/templates/field/field--paragraph--featured-links.html.twig new file mode 100644 index 0000000000..e3e1bc245b --- /dev/null +++ b/services/drupal/web/themes/epa_theme/templates/field/field--paragraph--featured-links.html.twig @@ -0,0 +1,12 @@ +{# +/** + * @file + * Theme override for a field. + */ +#} + + diff --git a/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--featured-links.html.twig b/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--featured-links.html.twig new file mode 100644 index 0000000000..6d865e8ade --- /dev/null +++ b/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--featured-links.html.twig @@ -0,0 +1,43 @@ +{# +/** + * @file + * Theme override to display a paragraph. + */ +#} +{% set modifier_classes = [] %} + +{% if parent_field is same as('field_web_area_popular_links') %} + {% set modifier_classes = modifier_classes|merge([ + 'popular-links--dark-blue', + 'u-full-width', + ]) %} +{% elseif parent_field is same as('field_paragraphs') %} + {% set theme = content.field_theme_color|field_value|render|trim %} + {% if theme is same as('gray') %} + {% set modifier_classes = modifier_classes|merge([ + 'popular-links--light-gray', + ]) %} + {% elseif theme is same as('dark_blue') %} + {% set modifier_classes = modifier_classes|merge([ + 'popular-links--dark-blue', + ]) %} + {% else %} + {% set modifier_classes = modifier_classes|merge([ + 'popular-links--light-gray', + ]) %} + {% endif %} +{% elseif parent_field is same as('field_wide_content') %} + {% if parent_class_color is same as('default') %} + {% set modifier_classes = modifier_classes|merge([ + 'popular-links--dark-blue', + ]) %} + {% endif %} +{% endif %} + +{% include '@components/popular-links/popular-links.twig' with { + 'attributes': attributes, + 'modifier_classes': modifier_classes|join(' ')|trim, + 'has_constrain': true, + 'title': content.field_title|field_value|render, + 'links': content.field_links|render, +} %} From e46eb5a0e2178df32e9c14d9d015fda3278c27da Mon Sep 17 00:00:00 2001 From: Dan Mouyard Date: Wed, 18 Sep 2024 13:58:14 -0400 Subject: [PATCH 55/75] EPAD8-2528: Add container query mixin --- .../drupal/web/themes/epa_theme/README.md | 77 ++++++++++++++++ .../_patterns/00-config/01-mixins/_index.scss | 1 + .../01-mixins/_mixins.container-query.scss | 87 +++++++++++++++++++ .../_patterns/00-config/_config.settings.scss | 1 + 4 files changed, 166 insertions(+) create mode 100644 services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_mixins.container-query.scss diff --git a/services/drupal/web/themes/epa_theme/README.md b/services/drupal/web/themes/epa_theme/README.md index 6a031950d3..eaba46dfe5 100644 --- a/services/drupal/web/themes/epa_theme/README.md +++ b/services/drupal/web/themes/epa_theme/README.md @@ -253,6 +253,83 @@ example: z-index: gesso-z-index(modal); ``` +### Container queries + +Gesso uses custom mixins to specify container queries: + +- `container-query`: min-width container queries +- `container-query-max`: max-width container queries +- `container-query-min-max`: container queries with both a min and max width + +Each mixin takes one or two width parameters, which can be a straight value +(e.g., 800px, 40em) or a design token value called using the `gesso-breakpoint` +function (e.g., `gesso-breakpoint(tablet-lg)`). The `container-max` and +`container-min-max` mixins can also take an optional parameter to subtract one +pixel from the max-width value, which can be useful when you want your query to +go up to the value but not to include it, such as when using Gesso breakpoint +token values. + +In order for container queries to work, you need to set a containment context +on a parent element. + +```scss +container-type: inline-size; +``` + +```scss +container: container-name / inline-size; +``` + +#### `@include container-query($width) { // styles }` + +Output a min-width based media query. + +```scss +@include container-query(800px) { + display: flex; +} + +@include container-query(gesso-breakpoint(desktop)) { + display: none; +} +``` + +#### `@include container-query-max($width, $subtract_1_from_max) { // styles }` + +Output a max-width based container query. The optional `$subtract_1_from_max` +parameter will subtract 1px from the width value if set to `true` (default: +`false`). + +```scss +@include container-query-max(900px) { + display: block; +} + +@include container-query-max(gesso-breakpoint(mobile), true) { + display: none; +} +``` + +#### `@include container-query-min-max($min-width, $max-width, $subtract_1_from_max) { // styles }` + +Output a container query with both a min-width and max-width. The optional +$subtract_1_from_max parameter will subtract 1px from the max-width value if +set to `true` (default: `false`). + +```scss +@include container-query-min-max(400px, 700px) { + display: flex; +} + +@include container-query-min-max( + gesso-breakpoint(mobile), + gesso-breakpoint(tablet), + true +) { + display: block; +} +``` + ### Creating New Components Gesso includes a script to generate new component files. To use, run the diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_index.scss b/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_index.scss index 3153a4fb67..220cbaf3c2 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_index.scss +++ b/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_index.scss @@ -4,6 +4,7 @@ @forward 'mixins.aspect-ratio'; @forward 'mixins.breakpoint'; @forward 'mixins.button'; +@forward 'mixins.container-query'; @forward 'mixins.display-text-style'; @forward 'mixins.focus'; @forward 'mixins.grids'; diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_mixins.container-query.scss b/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_mixins.container-query.scss new file mode 100644 index 0000000000..73bd7925ff --- /dev/null +++ b/services/drupal/web/themes/epa_theme/source/_patterns/00-config/01-mixins/_mixins.container-query.scss @@ -0,0 +1,87 @@ +// Mixins: Container Query + +@use 'sass:string'; +@use '../config.settings' as *; +@use '../00-functions' as *; + +// Create a min-width container query. +// @param {Number} $breakpoint - width value. +// @param {String} $container-name - name of container. +@mixin container-query-min($breakpoint, $container-name: null) { + @if $container-queries-rems { + $breakpoint: rem($breakpoint); + } + @if $container-name { + @container #{$container-name} (min-width: #{$breakpoint}) { + @content; + } + } @else { + @container (min-width: #{$breakpoint}) { + @content; + } + } +} + +// Assume min-width if shorthand container-query mixin is used. +// @param {Number} $breakpoint - width value. +// @param {String} $container-name - name of container. +@mixin container-query($breakpoint, $container-name: null) { + @include container-query-min($breakpoint, $container-name) { + @content; + } +} + +// Create a max-width container query. +// @param {Number} $breakpoint - width value. +// @param {String} $container-name - name of container. +// @param {Boolean} $subtract_1_from_max - whether to subtract 1px from $breakpoint value. +@mixin container-query-max( + $breakpoint, + $container-name: null, + $subtract_1_from_max: false +) { + @if $subtract_1_from_max { + $breakpoint: px($breakpoint) - 1px; + } + @if $container-queries-rems { + $breakpoint: rem($breakpoint); + } + @if $container-name { + @container #{$container-name} (max-width: #{$breakpoint}) { + @content; + } + } @else { + @container (max-width: #{$breakpoint}) { + @content; + } + } +} + +// Create a container query with both min-width and max-width. +// @param {Number} $breakpoint-min - width value. +// @param {Number} $breakpoint-max - width value. +// @param {String} $container-name - name of container. +// @param {Boolean} $subtract_1_from_max - whether to subtract 1px from $breakpoint-max value. +@mixin container-query-min-max( + $breakpoint-min, + $breakpoint-max, + $container-name: null, + $subtract_1_from_max: false +) { + @if $subtract_1_from_max { + $breakpoint-max: px($breakpoint-max) - 1px; + } + @if $container-queries-rems { + $breakpoint-min: rem($breakpoint-min); + $breakpoint-max: rem($breakpoint-max); + } + @if $container-name { + @container #{$container-name} (min-width: #{$breakpoint-min}) and (max-width: #{$breakpoint-max}) { + @content; + } + } @else { + @container (min-width: #{$breakpoint-min}) and (max-width: #{$breakpoint-max}) { + @content; + } + } +} diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/00-config/_config.settings.scss b/services/drupal/web/themes/epa_theme/source/_patterns/00-config/_config.settings.scss index acbcdc9690..ca3b9f2611 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/00-config/_config.settings.scss +++ b/services/drupal/web/themes/epa_theme/source/_patterns/00-config/_config.settings.scss @@ -4,3 +4,4 @@ $support-for-rtl: true !default; $breakpoints-ems: true !default; +$container-queries-rems: true !default; From ee24fca10b400e3ba51299bd04abed672cee3908 Mon Sep 17 00:00:00 2001 From: Dan Mouyard Date: Wed, 18 Sep 2024 13:58:39 -0400 Subject: [PATCH 56/75] EPAD8-2528: Update popular links component to use container query --- .../05-components/popular-links/_popular-links.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss index c52da1a2d8..bb011f9c79 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss +++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/popular-links/_popular-links.scss @@ -16,6 +16,7 @@ $breakpoint-4-cols: 900px; --epa-color-text: #{gesso-color(text, primary)}; background: var(--epa-color-bg); color: var(--epa-color-text); + container-type: inline-size; margin-block-end: rem(gesso-spacing(5)); padding-block: rem(gesso-spacing(4)); } @@ -38,11 +39,11 @@ $breakpoint-4-cols: 900px; flex-basis: 100%; flex-grow: 1; - @include breakpoint($breakpoint-2-cols) { + @include container-query($breakpoint-2-cols) { flex-basis: 46%; } - @include breakpoint($breakpoint-4-cols) { + @include container-query($breakpoint-4-cols) { flex-basis: 22%; } } From ce228b4db6db240dad14cd64f65c423064d5dcad Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Fri, 20 Sep 2024 09:27:20 -0500 Subject: [PATCH 57/75] [EPAD8-2541] Modifying all remaining facet sources to use query_string facet parameters instead of pretty_paths. --- ...ata_export__group_media_search_api__data_export_1.yml | 9 +++++++++ ...iews_data_export__media_search_api__data_export_1.yml | 9 +++++++++ ...ource.search_api__views_feed__search_faqs__feed_1.yml | 2 +- ...rch_api__views_feed__search_news_releases__feed_1.yml | 2 +- ...arch_api__views_feed__search_perspectives__feed_1.yml | 2 +- ...ch_api__views_feed__search_public_notices__feed_1.yml | 2 +- ...__views_feed__search_speeches_and_remarks__feed_1.yml | 2 +- ...h_api__views_page__group_media_search_api__page_1.yml | 9 +++++++++ ...rce.search_api__views_page__media_library__widget.yml | 9 +++++++++ ...arch_api__views_page__media_library__widget_table.yml | 9 +++++++++ ...pi__views_page__media_search_api__media_page_list.yml | 9 +++++++++ 11 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 services/drupal/config/sync/facets.facet_source.search_api__views_data_export__group_media_search_api__data_export_1.yml create mode 100644 services/drupal/config/sync/facets.facet_source.search_api__views_data_export__media_search_api__data_export_1.yml create mode 100644 services/drupal/config/sync/facets.facet_source.search_api__views_page__group_media_search_api__page_1.yml create mode 100644 services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget.yml create mode 100644 services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget_table.yml create mode 100644 services/drupal/config/sync/facets.facet_source.search_api__views_page__media_search_api__media_page_list.yml diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_data_export__group_media_search_api__data_export_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_data_export__group_media_search_api__data_export_1.yml new file mode 100644 index 0000000000..94e6802b7a --- /dev/null +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_data_export__group_media_search_api__data_export_1.yml @@ -0,0 +1,9 @@ +uuid: 048492f1-c618-464f-91cf-7edc5b045f0c +langcode: en +status: true +dependencies: { } +id: search_api__views_data_export__group_media_search_api__data_export_1 +name: 'search_api:views_data_export__group_media_search_api__data_export_1' +filter_key: null +url_processor: query_string +breadcrumb: { } diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_data_export__media_search_api__data_export_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_data_export__media_search_api__data_export_1.yml new file mode 100644 index 0000000000..607a243937 --- /dev/null +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_data_export__media_search_api__data_export_1.yml @@ -0,0 +1,9 @@ +uuid: 329ec0e6-77f9-4d9a-863d-2699f33f1f41 +langcode: en +status: true +dependencies: { } +id: search_api__views_data_export__media_search_api__data_export_1 +name: 'search_api:views_data_export__media_search_api__data_export_1' +filter_key: null +url_processor: query_string +breadcrumb: { } diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_faqs__feed_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_faqs__feed_1.yml index bf028467a8..a7538f0b73 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_faqs__feed_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_faqs__feed_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_feed__search_faqs__feed_1 name: 'search_api:views_feed__search_faqs__feed_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_news_releases__feed_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_news_releases__feed_1.yml index 474d3ef7da..4740fcb9e6 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_news_releases__feed_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_news_releases__feed_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_feed__search_news_releases__feed_1 name: 'search_api:views_feed__search_news_releases__feed_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_perspectives__feed_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_perspectives__feed_1.yml index f593e68a30..b594883380 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_perspectives__feed_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_perspectives__feed_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_feed__search_perspectives__feed_1 name: 'search_api:views_feed__search_perspectives__feed_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_public_notices__feed_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_public_notices__feed_1.yml index 8c068fd313..404a0e476d 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_public_notices__feed_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_public_notices__feed_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_feed__search_public_notices__feed_1 name: 'search_api:views_feed__search_public_notices__feed_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_speeches_and_remarks__feed_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_speeches_and_remarks__feed_1.yml index bb9ada4159..3dcf509954 100644 --- a/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_speeches_and_remarks__feed_1.yml +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_feed__search_speeches_and_remarks__feed_1.yml @@ -5,7 +5,7 @@ dependencies: { } id: search_api__views_feed__search_speeches_and_remarks__feed_1 name: 'search_api:views_feed__search_speeches_and_remarks__feed_1' filter_key: '' -url_processor: facets_pretty_paths +url_processor: query_string breadcrumb: active: false before: true diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__group_media_search_api__page_1.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__group_media_search_api__page_1.yml new file mode 100644 index 0000000000..05715dc8e1 --- /dev/null +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__group_media_search_api__page_1.yml @@ -0,0 +1,9 @@ +uuid: 55bed03d-c861-4676-9a88-1e56c3a254a7 +langcode: en +status: true +dependencies: { } +id: search_api__views_page__group_media_search_api__page_1 +name: 'search_api:views_page__group_media_search_api__page_1' +filter_key: null +url_processor: query_string +breadcrumb: { } diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget.yml new file mode 100644 index 0000000000..366feb7891 --- /dev/null +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget.yml @@ -0,0 +1,9 @@ +uuid: c71a15ca-f842-4074-bc65-a84b9d49a0db +langcode: en +status: true +dependencies: { } +id: search_api__views_page__media_library__widget +name: 'search_api:views_page__media_library__widget' +filter_key: null +url_processor: query_string +breadcrumb: { } diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget_table.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget_table.yml new file mode 100644 index 0000000000..33a38fc540 --- /dev/null +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_library__widget_table.yml @@ -0,0 +1,9 @@ +uuid: c9cd7788-4308-499a-8ae4-4fadb06e7b00 +langcode: en +status: true +dependencies: { } +id: search_api__views_page__media_library__widget_table +name: 'search_api:views_page__media_library__widget_table' +filter_key: null +url_processor: query_string +breadcrumb: { } diff --git a/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_search_api__media_page_list.yml b/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_search_api__media_page_list.yml new file mode 100644 index 0000000000..1a715079fb --- /dev/null +++ b/services/drupal/config/sync/facets.facet_source.search_api__views_page__media_search_api__media_page_list.yml @@ -0,0 +1,9 @@ +uuid: 6f67d5a6-bdde-4317-a108-25203b42e3f0 +langcode: en +status: true +dependencies: { } +id: search_api__views_page__media_search_api__media_page_list +name: 'search_api:views_page__media_search_api__media_page_list' +filter_key: null +url_processor: query_string +breadcrumb: { } From c8b19a3e485052cf293ff5e0b5222d8ed0fb0284 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Fri, 20 Sep 2024 09:29:24 -0500 Subject: [PATCH 58/75] [EPAD8-2541] Disabling facet_pretty_paths module entirely. --- services/drupal/config/sync/core.extension.yml | 1 - services/drupal/config/sync/facets.facet.faqs_topic.yml | 6 +----- services/drupal/config/sync/facets.facet.faqs_webarea.yml | 4 ---- .../facets.facet.news_releases_geographic_locations.yml | 4 ---- .../config/sync/facets.facet.news_releases_language.yml | 4 ---- .../config/sync/facets.facet.news_releases_press_office.yml | 6 +----- .../config/sync/facets.facet.news_releases_subjects.yml | 6 +----- .../drupal/config/sync/facets.facet.news_releases_year.yml | 4 ---- .../drupal/config/sync/facets.facet.perspectives_author.yml | 4 ---- .../config/sync/facets.facet.perspectives_publisher.yml | 6 +----- .../config/sync/facets.facet.perspectives_subjects.yml | 6 +----- .../drupal/config/sync/facets.facet.perspectives_year.yml | 4 ---- ...cets.facet.public_notices_computed_comments_due_date.yml | 4 ---- .../facets.facet.public_notices_location_of_prop_action.yml | 4 ---- .../sync/facets.facet.public_notices_program_or_statute.yml | 4 ---- .../sync/facets.facet.public_notices_proposed_actions.yml | 4 ---- .../drupal/config/sync/facets.facet.speeches_publisher.yml | 4 ---- services/drupal/config/sync/facets.facet.speeches_year.yml | 4 ---- 18 files changed, 5 insertions(+), 74 deletions(-) diff --git a/services/drupal/config/sync/core.extension.yml b/services/drupal/config/sync/core.extension.yml index 4064595237..5ef708a08b 100644 --- a/services/drupal/config/sync/core.extension.yml +++ b/services/drupal/config/sync/core.extension.yml @@ -87,7 +87,6 @@ module: epa_wysiwyg: 0 f1_sso: 0 facets: 0 - facets_pretty_paths: 0 facets_summary: 0 fakeobjects: 0 fast404: 0 diff --git a/services/drupal/config/sync/facets.facet.faqs_topic.yml b/services/drupal/config/sync/facets.facet.faqs_topic.yml index 28eaf0a3e8..310f1a3868 100644 --- a/services/drupal/config/sync/facets.facet.faqs_topic.yml +++ b/services/drupal/config/sync/facets.facet.faqs_topic.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.frequent_questions - views.view.search_faqs module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: faqs_topic name: Topic weight: 0 @@ -71,7 +67,7 @@ processor_configs: build: 15 settings: { } hierarchy_processor: - id: hierarchy_processor weights: build: 100 settings: { } + id: hierarchy_processor diff --git a/services/drupal/config/sync/facets.facet.faqs_webarea.yml b/services/drupal/config/sync/facets.facet.faqs_webarea.yml index 37619ef23d..4de4f7aa54 100644 --- a/services/drupal/config/sync/facets.facet.faqs_webarea.yml +++ b/services/drupal/config/sync/facets.facet.faqs_webarea.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.frequent_questions - views.view.search_faqs module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: faqs_webarea name: 'Web Area' weight: 0 diff --git a/services/drupal/config/sync/facets.facet.news_releases_geographic_locations.yml b/services/drupal/config/sync/facets.facet.news_releases_geographic_locations.yml index b0c780c2b8..666515d8d4 100644 --- a/services/drupal/config/sync/facets.facet.news_releases_geographic_locations.yml +++ b/services/drupal/config/sync/facets.facet.news_releases_geographic_locations.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.news_releases - views.view.search_news_releases module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: news_releases_geographic_locations name: State/Territory weight: 0 diff --git a/services/drupal/config/sync/facets.facet.news_releases_language.yml b/services/drupal/config/sync/facets.facet.news_releases_language.yml index 82881fd657..711da3e68f 100644 --- a/services/drupal/config/sync/facets.facet.news_releases_language.yml +++ b/services/drupal/config/sync/facets.facet.news_releases_language.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.news_releases - views.view.search_news_releases module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: news_releases_language name: Language weight: 0 diff --git a/services/drupal/config/sync/facets.facet.news_releases_press_office.yml b/services/drupal/config/sync/facets.facet.news_releases_press_office.yml index 0240047977..d23c2325d8 100644 --- a/services/drupal/config/sync/facets.facet.news_releases_press_office.yml +++ b/services/drupal/config/sync/facets.facet.news_releases_press_office.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.news_releases - views.view.search_news_releases module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: news_releases_press_office name: 'Press Office' weight: 0 @@ -77,7 +73,7 @@ processor_configs: build: 15 settings: { } hierarchy_processor: - id: hierarchy_processor weights: build: 100 settings: { } + id: hierarchy_processor diff --git a/services/drupal/config/sync/facets.facet.news_releases_subjects.yml b/services/drupal/config/sync/facets.facet.news_releases_subjects.yml index 864fab2570..6bcb16d8e6 100644 --- a/services/drupal/config/sync/facets.facet.news_releases_subjects.yml +++ b/services/drupal/config/sync/facets.facet.news_releases_subjects.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.news_releases - views.view.search_news_releases module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: news_releases_subjects name: Subject weight: 0 @@ -71,7 +67,7 @@ processor_configs: build: 15 settings: { } hierarchy_processor: - id: hierarchy_processor weights: build: 100 settings: { } + id: hierarchy_processor diff --git a/services/drupal/config/sync/facets.facet.news_releases_year.yml b/services/drupal/config/sync/facets.facet.news_releases_year.yml index 689d031bd4..43028320eb 100644 --- a/services/drupal/config/sync/facets.facet.news_releases_year.yml +++ b/services/drupal/config/sync/facets.facet.news_releases_year.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.news_releases - views.view.search_news_releases module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: news_releases_year name: 'Release Year' weight: 0 diff --git a/services/drupal/config/sync/facets.facet.perspectives_author.yml b/services/drupal/config/sync/facets.facet.perspectives_author.yml index 7711b851e9..e5f4818a57 100644 --- a/services/drupal/config/sync/facets.facet.perspectives_author.yml +++ b/services/drupal/config/sync/facets.facet.perspectives_author.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.perspectives - views.view.search_perspectives module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: perspectives_author name: Author weight: 0 diff --git a/services/drupal/config/sync/facets.facet.perspectives_publisher.yml b/services/drupal/config/sync/facets.facet.perspectives_publisher.yml index 4e3e38b0a6..42b7b0b593 100644 --- a/services/drupal/config/sync/facets.facet.perspectives_publisher.yml +++ b/services/drupal/config/sync/facets.facet.perspectives_publisher.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.perspectives - views.view.search_perspectives module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: perspectives_publisher name: Publisher weight: 0 @@ -71,7 +67,7 @@ processor_configs: build: 15 settings: { } hierarchy_processor: - id: hierarchy_processor weights: build: 100 settings: { } + id: hierarchy_processor diff --git a/services/drupal/config/sync/facets.facet.perspectives_subjects.yml b/services/drupal/config/sync/facets.facet.perspectives_subjects.yml index d7da48d888..3f68806902 100644 --- a/services/drupal/config/sync/facets.facet.perspectives_subjects.yml +++ b/services/drupal/config/sync/facets.facet.perspectives_subjects.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.perspectives - views.view.search_perspectives module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: perspectives_subjects name: Subject weight: 0 @@ -71,7 +67,7 @@ processor_configs: build: 15 settings: { } hierarchy_processor: - id: hierarchy_processor weights: build: 100 settings: { } + id: hierarchy_processor diff --git a/services/drupal/config/sync/facets.facet.perspectives_year.yml b/services/drupal/config/sync/facets.facet.perspectives_year.yml index b47355ae09..b3ea052a32 100644 --- a/services/drupal/config/sync/facets.facet.perspectives_year.yml +++ b/services/drupal/config/sync/facets.facet.perspectives_year.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.perspectives - views.view.search_perspectives module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: perspectives_year name: Year weight: 0 diff --git a/services/drupal/config/sync/facets.facet.public_notices_computed_comments_due_date.yml b/services/drupal/config/sync/facets.facet.public_notices_computed_comments_due_date.yml index 3f42071d59..959634f98f 100644 --- a/services/drupal/config/sync/facets.facet.public_notices_computed_comments_due_date.yml +++ b/services/drupal/config/sync/facets.facet.public_notices_computed_comments_due_date.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.public_notices - views.view.search_public_notices module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: public_notices_computed_comments_due_date name: 'Comments Due Date' weight: 0 diff --git a/services/drupal/config/sync/facets.facet.public_notices_location_of_prop_action.yml b/services/drupal/config/sync/facets.facet.public_notices_location_of_prop_action.yml index a654b703a9..74b7d17dc4 100644 --- a/services/drupal/config/sync/facets.facet.public_notices_location_of_prop_action.yml +++ b/services/drupal/config/sync/facets.facet.public_notices_location_of_prop_action.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.public_notices - views.view.search_public_notices module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: public_notices_location_of_prop_action name: 'Location of Proposed Action' weight: 0 diff --git a/services/drupal/config/sync/facets.facet.public_notices_program_or_statute.yml b/services/drupal/config/sync/facets.facet.public_notices_program_or_statute.yml index 4b44ef8f53..a76f61b8ed 100644 --- a/services/drupal/config/sync/facets.facet.public_notices_program_or_statute.yml +++ b/services/drupal/config/sync/facets.facet.public_notices_program_or_statute.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.public_notices - views.view.search_public_notices module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: public_notices_program_or_statute name: 'Program or Statute' weight: 0 diff --git a/services/drupal/config/sync/facets.facet.public_notices_proposed_actions.yml b/services/drupal/config/sync/facets.facet.public_notices_proposed_actions.yml index e9ca4610b3..2a455bafd8 100644 --- a/services/drupal/config/sync/facets.facet.public_notices_proposed_actions.yml +++ b/services/drupal/config/sync/facets.facet.public_notices_proposed_actions.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.public_notices - views.view.search_public_notices module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: public_notices_proposed_actions name: 'Proposed Action' weight: 0 diff --git a/services/drupal/config/sync/facets.facet.speeches_publisher.yml b/services/drupal/config/sync/facets.facet.speeches_publisher.yml index 1e10cac2ab..38ed911fae 100644 --- a/services/drupal/config/sync/facets.facet.speeches_publisher.yml +++ b/services/drupal/config/sync/facets.facet.speeches_publisher.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.speeches_and_remarks - views.view.search_speeches_and_remarks module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: taxonomy_term_coder id: speeches_publisher name: Publisher weight: 0 diff --git a/services/drupal/config/sync/facets.facet.speeches_year.yml b/services/drupal/config/sync/facets.facet.speeches_year.yml index 3cf9ef1361..f7ff4c8355 100644 --- a/services/drupal/config/sync/facets.facet.speeches_year.yml +++ b/services/drupal/config/sync/facets.facet.speeches_year.yml @@ -6,11 +6,7 @@ dependencies: - search_api.index.speeches_and_remarks - views.view.search_speeches_and_remarks module: - - facets_pretty_paths - search_api -third_party_settings: - facets_pretty_paths: - coder: default_coder id: speeches_year name: Year weight: 0 From e914397c7d95862e807bfafde2a7076abb916b9b Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Mon, 23 Sep 2024 12:55:19 -0500 Subject: [PATCH 59/75] [EPAD8-2491] Adjusting all node type title help text to not use a link, but to instead use tag to indicate how the title will look. Resolving issue with escaping of field group description causing duplicate apostrophes to appear in the help text. --- .../config/sync/core.entity_form_display.node.event.default.yml | 2 +- .../config/sync/core.entity_form_display.node.faq.default.yml | 2 +- .../sync/core.entity_form_display.node.news_release.default.yml | 2 +- .../config/sync/core.entity_form_display.node.page.default.yml | 2 +- .../sync/core.entity_form_display.node.perspective.default.yml | 2 +- .../core.entity_form_display.node.public_notice.default.yml | 2 +- .../sync/core.entity_form_display.node.regulation.default.yml | 2 +- .../sync/core.entity_form_display.node.speeches.default.yml | 2 +- .../sync/core.entity_form_display.node.web_area.default.yml | 2 +- .../sync/core.entity_form_display.node.webform.default.yml | 2 +- services/drupal/config/sync/node.type.event.yml | 2 +- services/drupal/config/sync/node.type.faq.yml | 2 +- services/drupal/config/sync/node.type.news_release.yml | 2 +- services/drupal/config/sync/node.type.page.yml | 2 +- services/drupal/config/sync/node.type.perspective.yml | 2 +- services/drupal/config/sync/node.type.public_notice.yml | 2 +- services/drupal/config/sync/node.type.regulation.yml | 2 +- services/drupal/config/sync/node.type.speeches.yml | 2 +- services/drupal/config/sync/node.type.web_area.yml | 2 +- services/drupal/config/sync/node.type.webform.yml | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/services/drupal/config/sync/core.entity_form_display.node.event.default.yml b/services/drupal/config/sync/core.entity_form_display.node.event.default.yml index 644699d801..e856e12335 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.event.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.event.default.yml @@ -84,7 +84,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml b/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml index a68a835935..57c17082b0 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.faq.default.yml @@ -74,7 +74,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml b/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml index 6aa7896a37..034e65045f 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.news_release.default.yml @@ -75,7 +75,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_additional_fields: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml index 0b73f03ffc..311c301e04 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.page.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.page.default.yml @@ -70,7 +70,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_other_metadata: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml b/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml index 7468cebafe..08ada14735 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.perspective.default.yml @@ -71,7 +71,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_page_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml b/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml index 01b610d788..b31207a8d1 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.public_notice.default.yml @@ -85,7 +85,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml b/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml index e7565b4745..ec8ca77b29 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.regulation.default.yml @@ -81,7 +81,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml b/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml index cf9f4520b3..798c25518b 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.speeches.default.yml @@ -81,7 +81,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_page_javascript: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml index eedbb3d95f..3d3a73bf94 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.web_area.default.yml @@ -55,7 +55,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_other_metadata: children: diff --git a/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml b/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml index 8256fc211e..e8ded51466 100644 --- a/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml +++ b/services/drupal/config/sync/core.entity_form_display.node.webform.default.yml @@ -49,7 +49,7 @@ third_party_settings: show_empty_fields: false id: '' formatter: open - description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA''''s internal search engine.' + description: 'Metadata is information that describes your content: it should be succinct, descriptive information about the page or document. It also improves your page rank in EPA's internal search engine.' required_fields: true group_other_metadata: children: diff --git a/services/drupal/config/sync/node.type.event.yml b/services/drupal/config/sync/node.type.event.yml index 0bdd42f541..55ffad36cd 100644 --- a/services/drupal/config/sync/node.type.event.yml +++ b/services/drupal/config/sync/node.type.event.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Events type: event description: 'are useful for creating web pages for conferences, webinars and other types of events that have start and end dates and times.' diff --git a/services/drupal/config/sync/node.type.faq.yml b/services/drupal/config/sync/node.type.faq.yml index 3ca6e4b1a7..99443bd78a 100644 --- a/services/drupal/config/sync/node.type.faq.yml +++ b/services/drupal/config/sync/node.type.faq.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Frequent Question' type: faq description: 'are Question and Answer format pages that are easily searchable and provide a quick response to what users may be looking for.' diff --git a/services/drupal/config/sync/node.type.news_release.yml b/services/drupal/config/sync/node.type.news_release.yml index a04398a57a..9d5dca2b21 100644 --- a/services/drupal/config/sync/node.type.news_release.yml +++ b/services/drupal/config/sync/node.type.news_release.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Headline field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'News Releases' type: news_release description: 'are the Agencyโ€™s primary way to release Agency news items.' diff --git a/services/drupal/config/sync/node.type.page.yml b/services/drupal/config/sync/node.type.page.yml index 1218d6d564..da45da9796 100644 --- a/services/drupal/config/sync/node.type.page.yml +++ b/services/drupal/config/sync/node.type.page.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Basic page' type: page description: 'are the most common content type.' diff --git a/services/drupal/config/sync/node.type.perspective.yml b/services/drupal/config/sync/node.type.perspective.yml index 0865349e2d..9fe2ce4443 100644 --- a/services/drupal/config/sync/node.type.perspective.yml +++ b/services/drupal/config/sync/node.type.perspective.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Perspectives type: perspective description: 'are commentaries about environmental and public health topics.' diff --git a/services/drupal/config/sync/node.type.public_notice.yml b/services/drupal/config/sync/node.type.public_notice.yml index 8e12c33576..201b751b3a 100644 --- a/services/drupal/config/sync/node.type.public_notice.yml +++ b/services/drupal/config/sync/node.type.public_notice.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Public Notice' type: public_notice description: 'present a consistent look and feel across http://epa.gov for all public notices.' diff --git a/services/drupal/config/sync/node.type.regulation.yml b/services/drupal/config/sync/node.type.regulation.yml index ab83c17d30..581d83a407 100644 --- a/services/drupal/config/sync/node.type.regulation.yml +++ b/services/drupal/config/sync/node.type.regulation.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Regulation type: regulation description: 'are a standard layout for providing information about regulations.' diff --git a/services/drupal/config/sync/node.type.speeches.yml b/services/drupal/config/sync/node.type.speeches.yml index 7239eec8cf..07693df92f 100644 --- a/services/drupal/config/sync/node.type.speeches.yml +++ b/services/drupal/config/sync/node.type.speeches.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Speeches and Remarks' type: speeches description: 'are versions of Administrator speeches, as prepared for delivery.' diff --git a/services/drupal/config/sync/node.type.web_area.yml b/services/drupal/config/sync/node.type.web_area.yml index 24a29465d0..ff44fd6e62 100644 --- a/services/drupal/config/sync/node.type.web_area.yml +++ b/services/drupal/config/sync/node.type.web_area.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: 'Web Area Homepage' type: web_area description: 'are landing pages for the web area and help the user navigate to their desired content inside the web area. You can have one home page and multiple landing pages.' diff --git a/services/drupal/config/sync/node.type.webform.yml b/services/drupal/config/sync/node.type.webform.yml index 9c21d524ae..1b42c62ccb 100644 --- a/services/drupal/config/sync/node.type.webform.yml +++ b/services/drupal/config/sync/node.type.webform.yml @@ -13,7 +13,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' name: Form type: webform description: 'are a content type that have a Webform attached to them. Webforms can include form elements that allow your audience to send information to you. Contact us forms are an example of this content type.' From 85b80a07c460e2905b2818add7615bd036fffcaf Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 23 Sep 2024 18:26:21 -0700 Subject: [PATCH 60/75] [EPAD8-2548] Update patch to accomodate encoded urls and s3/files --- .../drupal/patches/public-files-copy.patch | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 services/drupal/patches/public-files-copy.patch diff --git a/services/drupal/patches/public-files-copy.patch b/services/drupal/patches/public-files-copy.patch new file mode 100644 index 0000000000..8b2c1556cb --- /dev/null +++ b/services/drupal/patches/public-files-copy.patch @@ -0,0 +1,22 @@ +diff --git a/modules/tome_static/src/StaticGenerator.php b/modules/tome_static/src/StaticGenerator.php +index 845568f..41a5d51 100644 +--- a/modules/tome_static/src/StaticGenerator.php ++++ b/modules/tome_static/src/StaticGenerator.php +@@ -167,6 +167,17 @@ class StaticGenerator implements StaticGeneratorInterface { + } + + $destination = $this->getDestination($path); ++ if ($response->isRedirection()) { ++ preg_match('/(sites\/default\/files|s3\/files)/i', $response->getTargetUrl(), $matches); ++ if (!empty($matches)) { ++ $redirection_url = $this->makeExternalUrlLocal($response->getTargetUrl()); ++ if (!UrlHelper::isExternal($redirection_url)) { ++ $redirection_path = str_replace($matches[0], '', ltrim(parse_url($redirection_url, PHP_URL_PATH), '/')); ++ $redirection_uri = 'public://' . ltrim(rawurldecode(rawurldecode($redirection_path)), '/'); ++ $response = new BinaryFileResponse($redirection_uri, 200); ++ } ++ } ++ } + if ($response->isRedirection() || $response->isOk()) { + $directory = dirname($destination); + $this->fileSystem->prepareDirectory($directory, FileSystemInterface::CREATE_DIRECTORY); From cda9cf711b3257745ebd700ddeaa4858ead5ecf5 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 23 Sep 2024 21:23:25 -0700 Subject: [PATCH 61/75] [EPAD8-2611] Try to catch ajax request --- services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js | 4 +++- .../_patterns/06-templates/listing-pages/listing-page.twig | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js index 312d3df6f3..4ac932eb6f 100644 --- a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js +++ b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js @@ -85,7 +85,9 @@ import Drupal from 'drupal'; Drupal.ajax.instances[this.instanceIndex] = null; }; - getAlerts.execute(); + getAlerts.execute().fail(() => { + console.error('Failed to load alerts.'); + }); }); }, }; diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig b/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig index 6fd8a8a1fa..dc7a2f0171 100644 --- a/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig +++ b/services/drupal/web/themes/epa_theme/source/_patterns/06-templates/listing-pages/listing-page.twig @@ -35,7 +35,6 @@ {% embed '@layouts/page/page.twig' with { 'has_header': has_header, 'has_footer': has_footer, - 'modifier_classes': 'epa-listing-page', } %} {% block info %} {% endblock %} From 43a928f15bc768f67fafbccb4d246e3ca5b9ee52 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 23 Sep 2024 21:49:55 -0700 Subject: [PATCH 62/75] [EPAD8-2611] Add disable no-console --- services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js | 1 + 1 file changed, 1 insertion(+) diff --git a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js index 4ac932eb6f..f3e7b74a06 100644 --- a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js +++ b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js @@ -86,6 +86,7 @@ import Drupal from 'drupal'; }; getAlerts.execute().fail(() => { + // eslint-disable-next-line no-console console.error('Failed to load alerts.'); }); }); From 31d6ecfeff13e4ddf9b8388bcaf971f01daa425b Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 23 Sep 2024 23:34:33 -0700 Subject: [PATCH 63/75] [EPAD8-2611] Undo changes to alert js --- .../drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js index f3e7b74a06..312d3df6f3 100644 --- a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js +++ b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js @@ -85,10 +85,7 @@ import Drupal from 'drupal'; Drupal.ajax.instances[this.instanceIndex] = null; }; - getAlerts.execute().fail(() => { - // eslint-disable-next-line no-console - console.error('Failed to load alerts.'); - }); + getAlerts.execute(); }); }, }; From f097d113a0beba1feb98c702d72cb4a09018418a Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 23 Sep 2024 23:48:12 -0700 Subject: [PATCH 64/75] [EPAD8-2611] Patch core ajax to hide error messages --- services/drupal/composer.patches.json | 1 + services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js | 1 + 2 files changed, 2 insertions(+) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 306b911c8f..8c17ad2414 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -38,6 +38,7 @@ "CKEditor 5 toolbar items of multi-value field (typically Paragraphs) overflowing on narrow viewports and overlapping with node form's sidebar on wide viewports": "https://www.drupal.org/files/issues/2024-04-09/3332416-79.patch", "Error: Call to a member function label() on null in Drupal\\menu_link_content\\Form\\MenuLinkContentForm->form() (line 99 of /var/www/html/docroot/core/modules/menu_link_content/src/Form/MenuLinkContentForm.php).": "patches/7228.patch", "Media Type links in Media Library modal missing vertical tabs styling in Claro": "https://www.drupal.org/files/issues/2024-01-04/missing_variables_in_claro-3404866-41.patch", + "Allows hiding ajax errors": "https://www.drupal.org/files/issues/2024-02-05/2987444-53.patch", "Background colour of UI widgets get overridden on Ajax load.": "https://www.drupal.org/files/issues/2023-08-29/3383631-7_0.patch" }, "drupal/group": { diff --git a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js index 312d3df6f3..72eb318e1d 100644 --- a/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js +++ b/services/drupal/web/themes/epa_theme/js/src/epa-alerts.es6.js @@ -39,6 +39,7 @@ import Drupal from 'drupal'; Drupal.behaviors.epaAlerts = { attach(context, settings) { const alerts = once('loadEpaAlerts', 'body', context); + drupalSettings.ajax.hide_ajax_errors = true; alerts.forEach(alert => { const alertContext = drupalSettings.epaAlerts.context; const viewInfo = { From 26422dccf8a7782318d0362fd5f6762e83df4e81 Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Mon, 23 Sep 2024 23:57:50 -0700 Subject: [PATCH 65/75] [EPAD8-2548] Rename tome file copy patch --- services/drupal/composer.patches.json | 2 +- ...e-public-files-copy.patch => tome-public-files-copy-2.patch} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename services/drupal/patches/{tome-public-files-copy.patch => tome-public-files-copy-2.patch} (100%) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 306b911c8f..5e569871ea 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -92,7 +92,7 @@ "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, "drupal/tome": { - "Add condition to copy public files": "patches/tome-public-files-copy.patch", + "Add condition to copy public files": "patches/tome-public-files-copy-2.patch", "Add a method to disable crawling": "patches/tome-disable_crawl.patch" }, "drupal/paragraphs": { diff --git a/services/drupal/patches/tome-public-files-copy.patch b/services/drupal/patches/tome-public-files-copy-2.patch similarity index 100% rename from services/drupal/patches/tome-public-files-copy.patch rename to services/drupal/patches/tome-public-files-copy-2.patch From 46b0b146ed596f97e01965ab3dde6af5e3e5b34d Mon Sep 17 00:00:00 2001 From: Olu Adeyanju Date: Tue, 24 Sep 2024 08:08:52 -0700 Subject: [PATCH 66/75] Fix reference to tome patch --- services/drupal/composer.patches.json | 2 +- .../patches/tome-public-files-copy-2.patch | 19 ------------------- ...opy.patch => tome-public-files-copy.patch} | 0 3 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 services/drupal/patches/tome-public-files-copy-2.patch rename services/drupal/patches/{public-files-copy.patch => tome-public-files-copy.patch} (100%) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 5a3f000be9..8c17ad2414 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -93,7 +93,7 @@ "Flag module support": "patches/content_moderation_notifications-3316633-9-rolled-to-apply-with-3133940-23-and-3015276-42.patch" }, "drupal/tome": { - "Add condition to copy public files": "patches/tome-public-files-copy-2.patch", + "Add condition to copy public files": "patches/tome-public-files-copy.patch", "Add a method to disable crawling": "patches/tome-disable_crawl.patch" }, "drupal/paragraphs": { diff --git a/services/drupal/patches/tome-public-files-copy-2.patch b/services/drupal/patches/tome-public-files-copy-2.patch deleted file mode 100644 index 309b9792a4..0000000000 --- a/services/drupal/patches/tome-public-files-copy-2.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/modules/tome_static/src/StaticGenerator.php b/modules/tome_static/src/StaticGenerator.php -index 845568f..76df462 100644 ---- a/modules/tome_static/src/StaticGenerator.php -+++ b/modules/tome_static/src/StaticGenerator.php -@@ -167,6 +167,14 @@ class StaticGenerator implements StaticGeneratorInterface { - } - - $destination = $this->getDestination($path); -+ if ($response->isRedirection() && strpos($response->getTargetUrl(), 'sites/default/files') !== FALSE) { -+ $redirection_url = $this->makeExternalUrlLocal($response->getTargetUrl()); -+ if (!UrlHelper::isExternal($redirection_url)) { -+ $redirection_path = str_replace('sites/default/files', '', ltrim(parse_url($redirection_url, PHP_URL_PATH), '/')); -+ $redirection_uri = 'public://' . ltrim($redirection_path, '/'); -+ $response = new BinaryFileResponse($redirection_uri, 200); -+ } -+ } - if ($response->isRedirection() || $response->isOk()) { - $directory = dirname($destination); - $this->fileSystem->prepareDirectory($directory, FileSystemInterface::CREATE_DIRECTORY); diff --git a/services/drupal/patches/public-files-copy.patch b/services/drupal/patches/tome-public-files-copy.patch similarity index 100% rename from services/drupal/patches/public-files-copy.patch rename to services/drupal/patches/tome-public-files-copy.patch From c5d96b0db0a97b0c5af2a570ca64017f8520b3b2 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Tue, 24 Sep 2024 14:26:35 -0500 Subject: [PATCH 67/75] [EPAD8-2491] Adjusting help text to be what EPA wants after confirming stop words are removed. --- services/drupal/config/sync/node.type.event.yml | 2 +- services/drupal/config/sync/node.type.faq.yml | 2 +- services/drupal/config/sync/node.type.news_release.yml | 2 +- services/drupal/config/sync/node.type.page.yml | 2 +- services/drupal/config/sync/node.type.perspective.yml | 2 +- services/drupal/config/sync/node.type.public_notice.yml | 2 +- services/drupal/config/sync/node.type.regulation.yml | 2 +- services/drupal/config/sync/node.type.speeches.yml | 2 +- services/drupal/config/sync/node.type.web_area.yml | 2 +- services/drupal/config/sync/node.type.webform.yml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/services/drupal/config/sync/node.type.event.yml b/services/drupal/config/sync/node.type.event.yml index 55ffad36cd..830979d651 100644 --- a/services/drupal/config/sync/node.type.event.yml +++ b/services/drupal/config/sync/node.type.event.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: Events type: event description: 'are useful for creating web pages for conferences, webinars and other types of events that have start and end dates and times.' diff --git a/services/drupal/config/sync/node.type.faq.yml b/services/drupal/config/sync/node.type.faq.yml index 99443bd78a..a5d4664708 100644 --- a/services/drupal/config/sync/node.type.faq.yml +++ b/services/drupal/config/sync/node.type.faq.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: 'Frequent Question' type: faq description: 'are Question and Answer format pages that are easily searchable and provide a quick response to what users may be looking for.' diff --git a/services/drupal/config/sync/node.type.news_release.yml b/services/drupal/config/sync/node.type.news_release.yml index 9d5dca2b21..09df83539f 100644 --- a/services/drupal/config/sync/node.type.news_release.yml +++ b/services/drupal/config/sync/node.type.news_release.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Headline field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Headline field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: 'News Releases' type: news_release description: 'are the Agencyโ€™s primary way to release Agency news items.' diff --git a/services/drupal/config/sync/node.type.page.yml b/services/drupal/config/sync/node.type.page.yml index da45da9796..88a9d810db 100644 --- a/services/drupal/config/sync/node.type.page.yml +++ b/services/drupal/config/sync/node.type.page.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: 'Basic page' type: page description: 'are the most common content type.' diff --git a/services/drupal/config/sync/node.type.perspective.yml b/services/drupal/config/sync/node.type.perspective.yml index 9fe2ce4443..ebd8a6a842 100644 --- a/services/drupal/config/sync/node.type.perspective.yml +++ b/services/drupal/config/sync/node.type.perspective.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: Perspectives type: perspective description: 'are commentaries about environmental and public health topics.' diff --git a/services/drupal/config/sync/node.type.public_notice.yml b/services/drupal/config/sync/node.type.public_notice.yml index 201b751b3a..31947e875c 100644 --- a/services/drupal/config/sync/node.type.public_notice.yml +++ b/services/drupal/config/sync/node.type.public_notice.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: 'Public Notice' type: public_notice description: 'present a consistent look and feel across http://epa.gov for all public notices.' diff --git a/services/drupal/config/sync/node.type.regulation.yml b/services/drupal/config/sync/node.type.regulation.yml index 581d83a407..3ea3417f26 100644 --- a/services/drupal/config/sync/node.type.regulation.yml +++ b/services/drupal/config/sync/node.type.regulation.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: Regulation type: regulation description: 'are a standard layout for providing information about regulations.' diff --git a/services/drupal/config/sync/node.type.speeches.yml b/services/drupal/config/sync/node.type.speeches.yml index 07693df92f..a00e4d2848 100644 --- a/services/drupal/config/sync/node.type.speeches.yml +++ b/services/drupal/config/sync/node.type.speeches.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: 'Speeches and Remarks' type: speeches description: 'are versions of Administrator speeches, as prepared for delivery.' diff --git a/services/drupal/config/sync/node.type.web_area.yml b/services/drupal/config/sync/node.type.web_area.yml index ff44fd6e62..ff042f35ae 100644 --- a/services/drupal/config/sync/node.type.web_area.yml +++ b/services/drupal/config/sync/node.type.web_area.yml @@ -10,7 +10,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: 'Web Area Homepage' type: web_area description: 'are landing pages for the web area and help the user navigate to their desired content inside the web area. You can have one home page and multiple landing pages.' diff --git a/services/drupal/config/sync/node.type.webform.yml b/services/drupal/config/sync/node.type.webform.yml index 1b42c62ccb..9861bef833 100644 --- a/services/drupal/config/sync/node.type.webform.yml +++ b/services/drupal/config/sync/node.type.webform.yml @@ -13,7 +13,7 @@ third_party_settings: available_menus: { } parent: '' node_title_help_text: - title_help: 'The Title field will be replicated in the URL and will look like this: www.epa.gov/webarea/page-title' + title_help: 'The Title field will be mostly replicated in the URL (certain stop words are omitted) and will look like this: www.epa.gov/webarea/page-title' name: Form type: webform description: 'are a content type that have a Webform attached to them. Webforms can include form elements that allow your audience to send information to you. Contact us forms are an example of this content type.' From a8ab76ece4141578192e0c66006f228cb11d2c07 Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Fri, 27 Sep 2024 16:40:20 -0400 Subject: [PATCH 68/75] EPAD8-2477 remove git hash from toolbar; display it on status report --- .../modules/custom/epa_core/epa_core.module | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/services/drupal/web/modules/custom/epa_core/epa_core.module b/services/drupal/web/modules/custom/epa_core/epa_core.module index 8c0159b605..904037c134 100644 --- a/services/drupal/web/modules/custom/epa_core/epa_core.module +++ b/services/drupal/web/modules/custom/epa_core/epa_core.module @@ -49,14 +49,27 @@ function epa_core_theme($existing, $type, $theme, $path) { } /** - * Implements hook_rebuild(). + * Implements hook_requirements(). */ -function epa_core_rebuild() { - $release = getenv('GIT_COMMIT'); - if ($tag = getenv('GIT_TAG')) { - $release = $tag; +function epa_core_requirements($phase) { + $requirements = array(); + + if ($phase == 'runtime') { + $release = getenv('GIT_COMMIT'); + if ($tag = getenv('GIT_TAG')) { + $release = $tag; + } + if (empty($release)) { + $release = 'Neither the GIT_TAG nor GIT_COMMIT environment variables have been set.'; + } + $requirements['epa_core_release_version'] = array( + 'title' => t('EPA Drupal WebCMS Release Version'), + 'value' => $release, + 'severity' => REQUIREMENT_OK, + ); } - \Drupal::state()->set('environment_indicator.current_release', $release); + + return $requirements; } /** From f81acde60ebe52cb3cf4e7b55432a4081662b94a Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Mon, 30 Sep 2024 14:38:40 -0400 Subject: [PATCH 69/75] EPAD8-2511 add Full Name to group member list --- .../config/sync/views.view.group_members.yml | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/services/drupal/config/sync/views.view.group_members.yml b/services/drupal/config/sync/views.view.group_members.yml index 49840c877d..b6bd18ced5 100644 --- a/services/drupal/config/sync/views.view.group_members.yml +++ b/services/drupal/config/sync/views.view.group_members.yml @@ -4,6 +4,7 @@ status: true dependencies: config: - field.storage.group_content.group_roles + - field.storage.user.field_full_name module: - group - user @@ -91,6 +92,69 @@ display: multi_type: separator separator: ', ' field_api_classes: false + field_full_name: + id: field_full_name + table: user__field_full_name + field: field_full_name + relationship: gc__user + group_type: group + admin_label: '' + plugin_id: field + label: 'Full Name' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false group_roles: id: group_roles table: group_content__group_roles @@ -875,6 +939,7 @@ display: - user.group_permissions tags: - 'config:field.storage.group_content.group_roles' + - 'config:field.storage.user.field_full_name' page_1: id: page_1 display_title: Page @@ -906,3 +971,4 @@ display: - user.group_permissions tags: - 'config:field.storage.group_content.group_roles' + - 'config:field.storage.user.field_full_name' From 07ef3d1bc93b22ad79191712ac8dde6221942cf8 Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Mon, 30 Sep 2024 16:48:46 -0400 Subject: [PATCH 70/75] EPAD8-2477 un-set the environment indicator release version so it no longer displays in the toolbar --- .../web/modules/custom/epa_core/epa_core.deploy.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/drupal/web/modules/custom/epa_core/epa_core.deploy.php b/services/drupal/web/modules/custom/epa_core/epa_core.deploy.php index 345ec6fcb0..473fb9334c 100644 --- a/services/drupal/web/modules/custom/epa_core/epa_core.deploy.php +++ b/services/drupal/web/modules/custom/epa_core/epa_core.deploy.php @@ -448,3 +448,11 @@ function epa_core_deploy_0004_set_card_field_default_values(&$sandbox) { } } } + +/** + * Un-sets the release name so that it does not appear in the admin toolbar. + * @return void + */ +function epa_core_deploy_0005_clear_environment_indicator_release() { + \Drupal::state()->set('environment_indicator.current_release', null); +} From d3eb3b1d81d8043b0e509f24d7b6878b2818dd27 Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Tue, 1 Oct 2024 10:27:13 -0400 Subject: [PATCH 71/75] EPAD8-2539 add google scholar module and configure it to allow setting its metatags on basic pages --- services/drupal/composer.json | 1 + services/drupal/composer.lock | 59 ++++++++++++++++++- .../drupal/config/sync/core.extension.yml | 1 + .../drupal/config/sync/metatag.settings.yml | 15 +++++ 4 files changed, 75 insertions(+), 1 deletion(-) diff --git a/services/drupal/composer.json b/services/drupal/composer.json index 9bdc97be7e..b9330ee9b9 100644 --- a/services/drupal/composer.json +++ b/services/drupal/composer.json @@ -253,6 +253,7 @@ "drupal/mediaelement": "^2.0", "drupal/memcache": "^2.3", "drupal/metatag": "^1.11", + "drupal/metatag_google_scholar": "^1.2", "drupal/module_filter": "^4.0", "drupal/native_lazy_loading": "^1.1@RC", "drupal/page_manager": "^4.0@RC", diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index aed64434b6..c0132d26af 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/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": "dea3d9747292da3e2763c2ac14570a1d", + "content-hash": "3ed08293ae2d17cb355e1c81dfba14b5", "packages": [ { "name": "algolia/places", @@ -8529,6 +8529,63 @@ "docs": "https://www.drupal.org/docs/8/modules/metatag" } }, + { + "name": "drupal/metatag_google_scholar", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/metatag_google_scholar.git", + "reference": "8.x-1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/metatag_google_scholar-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "111d0a1a8f52ee1e52d822cd9e22b298165c1a62" + }, + "require": { + "drupal/core": "^9 || ^10 || ^11", + "drupal/metatag": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.2", + "datestamp": "1723418275", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "adcillc", + "homepage": "https://www.drupal.org/user/366450" + }, + { + "name": "antongp", + "homepage": "https://www.drupal.org/user/1060446" + }, + { + "name": "hxdef", + "homepage": "https://www.drupal.org/user/2622115" + } + ], + "description": "Provides meta tags for indexing scholarly articles in Google Scholar.", + "homepage": "https://www.drupal.org/project/metatag_google_scholar", + "keywords": [ + "Drupal" + ], + "support": { + "source": "https://git.drupalcode.org/project/metatag_google_scholar", + "issues": "https://www.drupal.org/project/issues/metatag_google_scholar" + } + }, { "name": "drupal/module_filter", "version": "4.0.1", diff --git a/services/drupal/config/sync/core.extension.yml b/services/drupal/config/sync/core.extension.yml index 4064595237..9fcdc69063 100644 --- a/services/drupal/config/sync/core.extension.yml +++ b/services/drupal/config/sync/core.extension.yml @@ -145,6 +145,7 @@ module: menu_ui: 0 metatag: 0 metatag_facebook: 0 + metatag_google_scholar: 0 metatag_open_graph: 0 metatag_twitter_cards: 0 module_filter: 0 diff --git a/services/drupal/config/sync/metatag.settings.yml b/services/drupal/config/sync/metatag.settings.yml index 58bd7ac6a5..2a7821652a 100644 --- a/services/drupal/config/sync/metatag.settings.yml +++ b/services/drupal/config/sync/metatag.settings.yml @@ -13,6 +13,7 @@ entity_type_groups: twitter_cards: twitter_cards schema_special_announcement: schema_special_announcement page: + google_scholar: google_scholar open_graph: open_graph twitter_cards: twitter_cards schema_special_announcement: schema_special_announcement @@ -36,3 +37,17 @@ entity_type_groups: open_graph: open_graph twitter_cards: twitter_cards schema_special_announcement: schema_special_announcement +tag_trim_method: beforeValue +use_maxlength: true +tag_trim_maxlength: + metatag_maxlength_title: null + metatag_maxlength_description: null + metatag_maxlength_abstract: null + metatag_maxlength_og_site_name: null + metatag_maxlength_og_title: null + metatag_maxlength_og_description: null + metatag_maxlength_twitter_cards_description: null + metatag_maxlength_twitter_cards_title: null + metatag_maxlength_twitter_cards_label1: null + metatag_maxlength_twitter_cards_label2: null +tag_scroll_max_height: '' From 470493856fbdee30af353432ac720b7166f31993 Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Tue, 1 Oct 2024 11:42:54 -0400 Subject: [PATCH 72/75] EPAD8-2584 add help text on dashboard as normal text rather than in an alert style --- .../views.view.group_moderated_content.yml | 19 ++++++++---- .../sync/views.view.moderated_content.yml | 17 ++++++++--- .../custom/epa_web_areas/epa_web_areas.module | 29 ------------------- 3 files changed, 27 insertions(+), 38 deletions(-) diff --git a/services/drupal/config/sync/views.view.group_moderated_content.yml b/services/drupal/config/sync/views.view.group_moderated_content.yml index 01b3ce3210..d95d4cb43e 100644 --- a/services/drupal/config/sync/views.view.group_moderated_content.yml +++ b/services/drupal/config/sync/views.view.group_moderated_content.yml @@ -1428,7 +1428,20 @@ display: entity_field: uid plugin_id: standard required: false - header: { } + header: + area: + id: area + table: views + field: area + relationship: none + group_type: group + admin_label: '' + plugin_id: text + empty: true + content: + value: 'Add new content or use these filters to find content that you are looking for. Type your User ID into the Author or the Last Updated By fields to find content you''ve worked on.' + format: ckeditor_5_test + tokenize: false footer: { } display_extenders: views_ajax_get: @@ -1442,7 +1455,6 @@ display: - route.group - url - url.query_args - - user - user.group_permissions - 'user.node_grants:view' tags: @@ -2675,7 +2687,6 @@ display: - route.group - url - url.query_args - - user - user.group_permissions - 'user.node_grants:view' tags: @@ -3424,7 +3435,6 @@ display: - route - route.group - url - - user - user.group_permissions - 'user.node_grants:view' tags: @@ -3460,7 +3470,6 @@ display: - route.group - url - url.query_args - - user - user.group_permissions - 'user.node_grants:view' tags: diff --git a/services/drupal/config/sync/views.view.moderated_content.yml b/services/drupal/config/sync/views.view.moderated_content.yml index 48158cbf48..0d74df32f3 100644 --- a/services/drupal/config/sync/views.view.moderated_content.yml +++ b/services/drupal/config/sync/views.view.moderated_content.yml @@ -1878,7 +1878,6 @@ display: - 'languages:language_interface' - url - url.query_args - - user - 'user.node_grants:view' - user.permissions tags: @@ -3472,7 +3471,6 @@ display: - 'languages:language_interface' - request_format - url - - user - 'user.node_grants:view' - user.permissions tags: @@ -5181,6 +5179,19 @@ display: required: false display_description: '' header: + area: + id: area + table: views + field: area + relationship: none + group_type: group + admin_label: '' + plugin_id: text + empty: true + content: + value: '

Use these filters to find content that you are looking for. Type your User ID into the Author or the Last Updated By fields to find content you''ve worked on.

' + format: ckeditor_5_test + tokenize: false display_link: id: display_link table: views @@ -5217,7 +5228,6 @@ display: - 'languages:language_interface' - url - url.query_args - - user - 'user.node_grants:view' - user.permissions tags: @@ -5241,7 +5251,6 @@ display: - 'languages:language_interface' - url - url.query_args - - user - 'user.node_grants:view' - user.permissions tags: diff --git a/services/drupal/web/modules/custom/epa_web_areas/epa_web_areas.module b/services/drupal/web/modules/custom/epa_web_areas/epa_web_areas.module index 1e6d5f3ce4..0bd30860be 100644 --- a/services/drupal/web/modules/custom/epa_web_areas/epa_web_areas.module +++ b/services/drupal/web/modules/custom/epa_web_areas/epa_web_areas.module @@ -502,32 +502,3 @@ function epa_web_areas_views_data_alter(array &$data) { $data["search_api_index_media"]["gid"]["filter"]['id'] = 'search_api_entity_reference'; } } - -/** - * Implements hook_preprocess_HOOK() for the page variable. - * - * Adds custom status message to the below routes. - * @link https://forumone.atlassian.net/browse/EPAD8-2490 - */ -function epa_web_areas_preprocess_page(&$variables) { - $routes = [ - 'entity.group.canonical', - 'system.admin_content' - ]; - if (in_array(\Drupal::routeMatch()->getRouteName(), $routes)) { - $message = Markup::create('Add new content or use these filters to find content that you are looking for. Type your User ID into the Author or the Last Updated By fields to find content you\'ve worked on.'); - $variables['page']['highlighted']['#attached']['library'][] = 'epa_web_areas/custom_message'; - $variables['page']['highlighted']['custom_message'] = [ - '#theme' => 'status_messages', - '#attributes' => [ - 'class' => ['epa-web-areas-custom-message'], - ], - '#message_list' => [ - 'warning' => [$message] - ], - '#status_headings' => [ - 'warning' => '', - ], - ]; - } -} From ae3164a4f538337a763d617003b9d6d67587089a Mon Sep 17 00:00:00 2001 From: Aaron Zinck Date: Thu, 3 Oct 2024 09:55:20 -0400 Subject: [PATCH 73/75] EPAD8-2623 update to drush 13 --- services/drupal/composer.json | 2 +- services/drupal/composer.lock | 660 +++++++++++++++++++++++++--------- 2 files changed, 487 insertions(+), 175 deletions(-) diff --git a/services/drupal/composer.json b/services/drupal/composer.json index 019eb362a8..21ba809edc 100644 --- a/services/drupal/composer.json +++ b/services/drupal/composer.json @@ -306,7 +306,7 @@ "drupal/webform": "^6.2@beta", "drupal/webform_validation": "^2.0@RC", "drupal_git/viewsreference_filter": "1.x-dev", - "drush/drush": "^12", + "drush/drush": "^13", "highlightjs/highlight.js": "^9.7", "jsq/amazon-es-php": "^0.3.0", "kint-php/kint": "^3.3", diff --git a/services/drupal/composer.lock b/services/drupal/composer.lock index 62787eb5dc..0b12f036fa 100644 --- a/services/drupal/composer.lock +++ b/services/drupal/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": "96ad3a3516a194f389004a716b789ee4", + "content-hash": "14838b98dfd9d42c465ac565bb4f0f28", "packages": [ { "name": "algolia/places", @@ -344,16 +344,16 @@ }, { "name": "chi-teck/drupal-code-generator", - "version": "3.2.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/Chi-teck/drupal-code-generator.git", - "reference": "6883a423f21446b16f8b9a2d90cc5abd4bc3e5d6" + "reference": "2dbd8d231945681a398862a3282ade3cf0ea23ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/6883a423f21446b16f8b9a2d90cc5abd4bc3e5d6", - "reference": "6883a423f21446b16f8b9a2d90cc5abd4bc3e5d6", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/2dbd8d231945681a398862a3282ade3cf0ea23ab", + "reference": "2dbd8d231945681a398862a3282ade3cf0ea23ab", "shasum": "" }, "require": { @@ -371,16 +371,16 @@ "squizlabs/php_codesniffer": "<3.6" }, "require-dev": { - "chi-teck/drupal-coder-extension": "^2.0.0-alpha4", - "drupal/coder": "8.3.20", - "drupal/core": "10.1.x-dev", + "chi-teck/drupal-coder-extension": "^2.0.0-beta3", + "drupal/coder": "8.3.23", + "drupal/core": "10.3.x-dev", "ext-simplexml": "*", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.7", - "symfony/var-dumper": "^6.3", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^9.6", + "squizlabs/php_codesniffer": "^3.9", + "symfony/var-dumper": "^6.4", "symfony/yaml": "^6.3", - "vimeo/psalm": "^5.14.0" + "vimeo/psalm": "^5.22.2" }, "bin": [ "bin/dcg" @@ -398,9 +398,9 @@ "description": "Drupal code generator", "support": { "issues": "https://github.com/Chi-teck/drupal-code-generator/issues", - "source": "https://github.com/Chi-teck/drupal-code-generator/tree/3.2.0" + "source": "https://github.com/Chi-teck/drupal-code-generator/tree/3.6.1" }, - "time": "2023-08-06T11:19:01+00:00" + "time": "2024-06-06T17:36:37+00:00" }, { "name": "choices/choices", @@ -676,24 +676,24 @@ }, { "name": "composer/semver", - "version": "3.4.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -737,7 +737,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -753,29 +753,29 @@ "type": "tidelift" } ], - "time": "2024-07-12T11:35:52+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "consolidation/annotated-command", - "version": "4.9.1", + "version": "4.10.0", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9" + "reference": "1e830ba908c9ffb1ba7ca056203531b27188812c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", - "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/1e830ba908c9ffb1ba7ca056203531b27188812c", + "reference": "1e830ba908c9ffb1ba7ca056203531b27188812c", "shasum": "" }, "require": { "consolidation/output-formatters": "^4.3.1", "php": ">=7.1.3", "psr/log": "^1 || ^2 || ^3", - "symfony/console": "^4.4.8 || ^5 || ^6", - "symfony/event-dispatcher": "^4.4.8 || ^5 || ^6", - "symfony/finder": "^4.4.8 || ^5 || ^6" + "symfony/console": "^4.4.8 || ^5 || ^6 || ^7", + "symfony/event-dispatcher": "^4.4.8 || ^5 || ^6 || ^7", + "symfony/finder": "^4.4.8 || ^5 || ^6 || ^7" }, "require-dev": { "composer-runtime-api": "^2.0", @@ -807,9 +807,9 @@ "description": "Initialize Symfony Console commands from annotated command class methods.", "support": { "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/4.9.1" + "source": "https://github.com/consolidation/annotated-command/tree/4.10.0" }, - "time": "2023-05-20T04:19:01+00:00" + "time": "2024-04-05T21:05:39+00:00" }, { "name": "consolidation/config", @@ -923,32 +923,32 @@ }, { "name": "consolidation/log", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/consolidation/log.git", - "reference": "caaad9d70dae54eb49002666f000e3c607066878" + "reference": "c27a3beb36137c141ccbce0d89f64befb243c015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/log/zipball/caaad9d70dae54eb49002666f000e3c607066878", - "reference": "caaad9d70dae54eb49002666f000e3c607066878", + "url": "https://api.github.com/repos/consolidation/log/zipball/c27a3beb36137c141ccbce0d89f64befb243c015", + "reference": "c27a3beb36137c141ccbce0d89f64befb243c015", "shasum": "" }, "require": { "php": ">=8.0.0", "psr/log": "^3", - "symfony/console": "^5 || ^6" + "symfony/console": "^5 || ^6 || ^7" }, "require-dev": { - "phpunit/phpunit": ">=7.5.20", + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", "squizlabs/php_codesniffer": "^3", "yoast/phpunit-polyfills": "^0.2.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.x-dev" + "platform": { + "php": "8.2.17" } }, "autoload": { @@ -969,36 +969,36 @@ "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", "support": { "issues": "https://github.com/consolidation/log/issues", - "source": "https://github.com/consolidation/log/tree/3.0.0" + "source": "https://github.com/consolidation/log/tree/3.1.0" }, - "time": "2022-04-05T16:53:32+00:00" + "time": "2024-04-04T23:50:25+00:00" }, { "name": "consolidation/output-formatters", - "version": "4.3.2", + "version": "4.5.0", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "06711568b4cd169700ff7e8075db0a9a341ceb58" + "reference": "7a611b01eb48eb19cd54672339fc08c0985bf540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/06711568b4cd169700ff7e8075db0a9a341ceb58", - "reference": "06711568b4cd169700ff7e8075db0a9a341ceb58", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/7a611b01eb48eb19cd54672339fc08c0985bf540", + "reference": "7a611b01eb48eb19cd54672339fc08c0985bf540", "shasum": "" }, "require": { "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "php": ">=7.1.3", - "symfony/console": "^4 || ^5 || ^6", - "symfony/finder": "^4 || ^5 || ^6" + "symfony/console": "^4 || ^5 || ^6 || ^7", + "symfony/finder": "^4 || ^5 || ^6 || ^7" }, "require-dev": { "php-coveralls/php-coveralls": "^2.4.2", "phpunit/phpunit": "^7 || ^8 || ^9", "squizlabs/php_codesniffer": "^3", - "symfony/var-dumper": "^4 || ^5 || ^6", - "symfony/yaml": "^4 || ^5 || ^6", + "symfony/var-dumper": "^4 || ^5 || ^6 || ^7", + "symfony/yaml": "^4 || ^5 || ^6 || ^7", "yoast/phpunit-polyfills": "^1" }, "suggest": { @@ -1023,9 +1023,9 @@ "description": "Format text by applying transformations provided by plug-in formatters.", "support": { "issues": "https://github.com/consolidation/output-formatters/issues", - "source": "https://github.com/consolidation/output-formatters/tree/4.3.2" + "source": "https://github.com/consolidation/output-formatters/tree/4.5.0" }, - "time": "2023-07-06T04:45:41+00:00" + "time": "2024-04-02T15:18:52+00:00" }, { "name": "consolidation/robo", @@ -1157,23 +1157,23 @@ }, { "name": "consolidation/site-alias", - "version": "4.0.1", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/consolidation/site-alias.git", - "reference": "b0eeb8c8f3d54d072824ee31b5e00cb5181f91c5" + "reference": "1056ceb93f6aafe6f7600d7bbe1b62b8488abccf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/site-alias/zipball/b0eeb8c8f3d54d072824ee31b5e00cb5181f91c5", - "reference": "b0eeb8c8f3d54d072824ee31b5e00cb5181f91c5", + "url": "https://api.github.com/repos/consolidation/site-alias/zipball/1056ceb93f6aafe6f7600d7bbe1b62b8488abccf", + "reference": "1056ceb93f6aafe6f7600d7bbe1b62b8488abccf", "shasum": "" }, "require": { - "consolidation/config": "^1.2.1 || ^2", + "consolidation/config": "^1.2.1 || ^2 || ^3", "php": ">=7.4", - "symfony/filesystem": "^5.4 || ^6", - "symfony/finder": "^5 || ^6" + "symfony/filesystem": "^5.4 || ^6 || ^7", + "symfony/finder": "^5 || ^6 || ^7" }, "require-dev": { "php-coveralls/php-coveralls": "^2.4.2", @@ -1210,30 +1210,30 @@ "description": "Manage alias records for local and remote sites.", "support": { "issues": "https://github.com/consolidation/site-alias/issues", - "source": "https://github.com/consolidation/site-alias/tree/4.0.1" + "source": "https://github.com/consolidation/site-alias/tree/4.1.0" }, - "time": "2023-04-29T17:18:10+00:00" + "time": "2024-04-05T15:58:04+00:00" }, { "name": "consolidation/site-process", - "version": "5.2.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/consolidation/site-process.git", - "reference": "6c44638d7af8a8b4abe12c3180701243f480539d" + "reference": "7ab3ffe4195a89b8dc334ea22e7881abe79ffd9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/site-process/zipball/6c44638d7af8a8b4abe12c3180701243f480539d", - "reference": "6c44638d7af8a8b4abe12c3180701243f480539d", + "url": "https://api.github.com/repos/consolidation/site-process/zipball/7ab3ffe4195a89b8dc334ea22e7881abe79ffd9a", + "reference": "7ab3ffe4195a89b8dc334ea22e7881abe79ffd9a", "shasum": "" }, "require": { - "consolidation/config": "^2", + "consolidation/config": "^2 || ^3", "consolidation/site-alias": "^3 || ^4", "php": ">=8.0.14", - "symfony/console": "^5.4 || ^6", - "symfony/process": "^6" + "symfony/console": "^5.4 || ^6 || ^7", + "symfony/process": "^6 || ^7" }, "require-dev": { "phpunit/phpunit": "^9", @@ -1267,9 +1267,9 @@ "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.", "support": { "issues": "https://github.com/consolidation/site-process/issues", - "source": "https://github.com/consolidation/site-process/tree/5.2.0" + "source": "https://github.com/consolidation/site-process/tree/5.4.0" }, - "time": "2022-12-06T17:57:16+00:00" + "time": "2024-04-06T00:00:28+00:00" }, { "name": "cweagans/composer-patches", @@ -1380,16 +1380,16 @@ }, { "name": "dflydev/dot-access-data", - "version": "v3.0.2", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { @@ -1449,9 +1449,9 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" }, - "time": "2022-10-27T11:44:00+00:00" + "time": "2024-07-08T12:26:09+00:00" }, { "name": "doctrine/annotations", @@ -11903,54 +11903,57 @@ }, { "name": "drush/drush", - "version": "12.4.3", + "version": "13.2.0", "source": { "type": "git", "url": "https://github.com/drush-ops/drush.git", - "reference": "8245acede57ecc62a90aa0f19ff3b29e5f11f971" + "reference": "6a3f0cfe0abab49f42e83602469049506d75035d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/8245acede57ecc62a90aa0f19ff3b29e5f11f971", - "reference": "8245acede57ecc62a90aa0f19ff3b29e5f11f971", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/6a3f0cfe0abab49f42e83602469049506d75035d", + "reference": "6a3f0cfe0abab49f42e83602469049506d75035d", "shasum": "" }, "require": { - "chi-teck/drupal-code-generator": "^3.0", + "chi-teck/drupal-code-generator": "^3.6 || ^4@alpha", "composer-runtime-api": "^2.2", "composer/semver": "^1.4 || ^3", - "consolidation/annotated-command": "^4.9.1", - "consolidation/config": "^2.1.2", + "consolidation/annotated-command": "^4.9.2", + "consolidation/config": "^2.1.2 || ^3", "consolidation/filter-via-dot-access-data": "^2.0.2", "consolidation/output-formatters": "^4.3.2", - "consolidation/robo": "^4.0.6", + "consolidation/robo": "^4.0.6 || ^5", "consolidation/site-alias": "^4", "consolidation/site-process": "^5.2.0", + "dflydev/dot-access-data": "^3.0.2", "ext-dom": "*", "grasmash/yaml-cli": "^3.1", "guzzlehttp/guzzle": "^7.0", - "league/container": "^4", - "php": ">=8.1", - "psy/psysh": "~0.11", - "symfony/event-dispatcher": "^6", - "symfony/filesystem": "^6.1", - "symfony/finder": "^6", - "symfony/var-dumper": "^6.0", - "symfony/yaml": "^6.0", - "webflo/drupal-finder": "^1.2" + "laravel/prompts": "^0.1.21", + "league/container": "^4.2", + "php": ">=8.2", + "psy/psysh": "~0.12", + "symfony/event-dispatcher": "^6 || ^7", + "symfony/filesystem": "^6.1 || ^7", + "symfony/finder": "^6 || ^7", + "symfony/var-dumper": "^6.0 || ^7", + "symfony/yaml": "^6.0 || ^7" }, "conflict": { - "drupal/core": "< 10.0", + "drupal/core": "< 10.2", "drupal/migrate_run": "*", "drupal/migrate_tools": "<= 5" }, "require-dev": { "composer/installers": "^2", - "cweagans/composer-patches": "~1.0", - "drupal/core-recommended": "^10", + "cweagans/composer-patches": "~1.7.3", + "drupal/core-recommended": "^10.2.5 || 11.0.x-dev", "drupal/semver_example": "2.3.0", - "phpunit/phpunit": "^9", - "rector/rector": "^0.12", + "jetbrains/phpstorm-attributes": "^1.0", + "mglaman/phpstan-drupal": "^1.2", + "phpunit/phpunit": "^9 || ^10", + "rector/rector": "^1", "squizlabs/php_codesniffer": "^3.7" }, "bin": [ @@ -12035,7 +12038,7 @@ "issues": "https://github.com/drush-ops/drush/issues", "security": "https://github.com/drush-ops/drush/security/advisories", "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/12.4.3" + "source": "https://github.com/drush-ops/drush/tree/13.2.0" }, "funding": [ { @@ -12043,7 +12046,7 @@ "type": "github" } ], - "time": "2023-11-16T22:57:24+00:00" + "time": "2024-09-10T13:16:15+00:00" }, { "name": "egulias/email-validator", @@ -12638,24 +12641,24 @@ }, { "name": "grasmash/yaml-cli", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/grasmash/yaml-cli.git", - "reference": "00f3fd775f6abbfacd44432f1999c3c3b02791f0" + "reference": "09a8860566958a1576cc54bbe910a03477e54971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grasmash/yaml-cli/zipball/00f3fd775f6abbfacd44432f1999c3c3b02791f0", - "reference": "00f3fd775f6abbfacd44432f1999c3c3b02791f0", + "url": "https://api.github.com/repos/grasmash/yaml-cli/zipball/09a8860566958a1576cc54bbe910a03477e54971", + "reference": "09a8860566958a1576cc54bbe910a03477e54971", "shasum": "" }, "require": { "dflydev/dot-access-data": "^3", "php": ">=8.0", - "symfony/console": "^6", - "symfony/filesystem": "^6", - "symfony/yaml": "^6" + "symfony/console": "^6 || ^7", + "symfony/filesystem": "^6 || ^7", + "symfony/yaml": "^6 || ^7" }, "require-dev": { "php-coveralls/php-coveralls": "^2", @@ -12688,9 +12691,9 @@ "description": "A command line tool for reading and manipulating yaml files.", "support": { "issues": "https://github.com/grasmash/yaml-cli/issues", - "source": "https://github.com/grasmash/yaml-cli/tree/3.1.0" + "source": "https://github.com/grasmash/yaml-cli/tree/3.2.1" }, - "time": "2022-05-09T20:22:34+00:00" + "time": "2024-04-23T02:10:57+00:00" }, { "name": "guzzlehttp/guzzle", @@ -13027,6 +13030,201 @@ }, "type": "drupal-library" }, + { + "name": "illuminate/collections", + "version": "v11.26.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/collections.git", + "reference": "4d333ea19a27230b424b9af56f34cd658b5bbce2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/collections/zipball/4d333ea19a27230b424b9af56f34cd658b5bbce2", + "reference": "4d333ea19a27230b424b9af56f34cd658b5bbce2", + "shasum": "" + }, + "require": { + "illuminate/conditionable": "^11.0", + "illuminate/contracts": "^11.0", + "illuminate/macroable": "^11.0", + "php": "^8.2" + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^7.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "11.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-09-27T14:54:48+00:00" + }, + { + "name": "illuminate/conditionable", + "version": "v11.26.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/conditionable.git", + "reference": "362dd761b9920367bca1427a902158225e9e3a23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/conditionable/zipball/362dd761b9920367bca1427a902158225e9e3a23", + "reference": "362dd761b9920367bca1427a902158225e9e3a23", + "shasum": "" + }, + "require": { + "php": "^8.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Conditionable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-06-28T20:10:30+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v11.26.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "56312862af937bd6da8e6dc8bbd88188dfb478f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/56312862af937bd6da8e6dc8bbd88188dfb478f8", + "reference": "56312862af937bd6da8e6dc8bbd88188dfb478f8", + "shasum": "" + }, + "require": { + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/simple-cache": "^1.0|^2.0|^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-09-22T15:08:08+00:00" + }, + { + "name": "illuminate/macroable", + "version": "v11.26.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/macroable.git", + "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed", + "reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Macroable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-06-28T20:10:30+00:00" + }, { "name": "jquery/chosen", "version": "1.8.7", @@ -13332,18 +13530,76 @@ }, "time": "2019-10-17T18:05:24+00:00" }, + { + "name": "laravel/prompts", + "version": "v0.1.25", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.25" + }, + "time": "2024-08-12T22:06:33+00:00" + }, { "name": "league/container", - "version": "4.2.0", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/thephpleague/container.git", - "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab" + "reference": "ff346319ca1ff0e78277dc2311a42107cc1aab88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/container/zipball/375d13cb828649599ef5d48a339c4af7a26cd0ab", - "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab", + "url": "https://api.github.com/repos/thephpleague/container/zipball/ff346319ca1ff0e78277dc2311a42107cc1aab88", + "reference": "ff346319ca1ff0e78277dc2311a42107cc1aab88", "shasum": "" }, "require": { @@ -13404,7 +13660,7 @@ ], "support": { "issues": "https://github.com/thephpleague/container/issues", - "source": "https://github.com/thephpleague/container/tree/4.2.0" + "source": "https://github.com/thephpleague/container/tree/4.2.2" }, "funding": [ { @@ -13412,7 +13668,7 @@ "type": "github" } ], - "time": "2021-11-16T10:29:06+00:00" + "time": "2024-03-13T13:12:53+00:00" }, { "name": "league/csv", @@ -13996,25 +14252,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.19.1", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3abf7425cd284141dc5d8d14a9ee444de3345d1a", + "reference": "3abf7425cd284141dc5d8d14a9ee444de3345d1a", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -14022,7 +14280,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -14046,9 +14304,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.0" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-09-29T13:56:26+00:00" }, { "name": "nodespark/des-connector", @@ -15341,27 +15599,78 @@ }, "time": "2024-09-11T13:17:53+00:00" }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, { "name": "psy/psysh", - "version": "v0.11.20", + "version": "v0.12.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b" + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -15372,8 +15681,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -15381,7 +15689,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -15413,9 +15725,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" }, - "time": "2023-07-31T14:32:22+00:00" + "time": "2024-06-10T01:18:23+00:00" }, { "name": "ralouphie/getallheaders", @@ -16093,16 +16405,16 @@ }, { "name": "symfony/console", - "version": "v6.4.11", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998" + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765", "shasum": "" }, "require": { @@ -16167,7 +16479,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.11" + "source": "https://github.com/symfony/console/tree/v6.4.12" }, "funding": [ { @@ -16183,7 +16495,7 @@ "type": "tidelift" } ], - "time": "2024-08-15T22:48:29+00:00" + "time": "2024-09-20T08:15:52+00:00" }, { "name": "symfony/css-selector", @@ -16252,16 +16564,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.11", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e" + "reference": "cfb9d34a1cdd4911bc737a5358fd1cf8ebfb536e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e", - "reference": "e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/cfb9d34a1cdd4911bc737a5358fd1cf8ebfb536e", + "reference": "cfb9d34a1cdd4911bc737a5358fd1cf8ebfb536e", "shasum": "" }, "require": { @@ -16313,7 +16625,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.11" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.12" }, "funding": [ { @@ -16329,7 +16641,7 @@ "type": "tidelift" } ], - "time": "2024-08-29T08:15:38+00:00" + "time": "2024-09-20T08:18:25+00:00" }, { "name": "symfony/deprecation-contracts", @@ -16698,16 +17010,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.9", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b51ef8059159330b74a4d52f68e671033c0fe463" + "reference": "f810e3cbdf7fdc35983968523d09f349fa9ada12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b51ef8059159330b74a4d52f68e671033c0fe463", - "reference": "b51ef8059159330b74a4d52f68e671033c0fe463", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/f810e3cbdf7fdc35983968523d09f349fa9ada12", + "reference": "f810e3cbdf7fdc35983968523d09f349fa9ada12", "shasum": "" }, "require": { @@ -16744,7 +17056,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.9" + "source": "https://github.com/symfony/filesystem/tree/v6.4.12" }, "funding": [ { @@ -16760,7 +17072,7 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:49:33+00:00" + "time": "2024-09-16T16:01:33+00:00" }, { "name": "symfony/finder", @@ -18061,16 +18373,16 @@ }, { "name": "symfony/process", - "version": "v6.4.8", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", - "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "url": "https://api.github.com/repos/symfony/process/zipball/3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3", "shasum": "" }, "require": { @@ -18102,7 +18414,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.8" + "source": "https://github.com/symfony/process/tree/v6.4.12" }, "funding": [ { @@ -18118,7 +18430,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-09-17T12:47:12+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -18468,16 +18780,16 @@ }, { "name": "symfony/string", - "version": "v6.4.11", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b" + "reference": "f8a1ccebd0997e16112dfecfd74220b78e5b284b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5bc3eb632cf9c8dbfd6529d89be9950d1518883b", - "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b", + "url": "https://api.github.com/repos/symfony/string/zipball/f8a1ccebd0997e16112dfecfd74220b78e5b284b", + "reference": "f8a1ccebd0997e16112dfecfd74220b78e5b284b", "shasum": "" }, "require": { @@ -18534,7 +18846,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.11" + "source": "https://github.com/symfony/string/tree/v6.4.12" }, "funding": [ { @@ -18550,7 +18862,7 @@ "type": "tidelift" } ], - "time": "2024-08-12T09:55:28+00:00" + "time": "2024-09-20T08:15:52+00:00" }, { "name": "symfony/translation-contracts", @@ -18891,16 +19203,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.11", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "be37e7f13195e05ab84ca5269365591edd240335" + "reference": "762ee56b2649659380e0ef4d592d807bc17b7971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/be37e7f13195e05ab84ca5269365591edd240335", - "reference": "be37e7f13195e05ab84ca5269365591edd240335", + "url": "https://api.github.com/repos/symfony/yaml/zipball/762ee56b2649659380e0ef4d592d807bc17b7971", + "reference": "762ee56b2649659380e0ef4d592d807bc17b7971", "shasum": "" }, "require": { @@ -18943,7 +19255,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.11" + "source": "https://github.com/symfony/yaml/tree/v6.4.12" }, "funding": [ { @@ -18959,7 +19271,7 @@ "type": "tidelift" } ], - "time": "2024-08-12T09:55:28+00:00" + "time": "2024-09-17T12:47:12+00:00" }, { "name": "tabby/tabby", @@ -24144,7 +24456,7 @@ "platform": { "php": ">=8.2" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "ext-gd": "1.0.0", "ext-opcache": "1.0.0", From b96ebc11498043604244e2addad99ca9077871a2 Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Mon, 7 Oct 2024 10:20:00 -0500 Subject: [PATCH 74/75] [EPAD8-2542] Adding search page paths to disallow list of robots.prod.txt file. --- services/drupal/web/robots.prod.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/drupal/web/robots.prod.txt b/services/drupal/web/robots.prod.txt index 6062a7172a..5d9e6bb7fc 100644 --- a/services/drupal/web/robots.prod.txt +++ b/services/drupal/web/robots.prod.txt @@ -59,6 +59,12 @@ Disallow: /index.php/user/password/ Disallow: /index.php/user/register/ Disallow: /index.php/user/login/ Disallow: /index.php/user/logout/ +# Search pages per EPAD8-2542 +Disallow: /newsreleases/search/ +Disallow: /faqs/search/ +Disallow: /perspectives/search/ +Disallow: /publicnotices/notices-search/ +Disallow: /speeches/search/ # Theme artifacts (including pattern lab): Disallow: /themes/ Allow: /themes/*.css$ From 7e2e168c0579aae45cc052ac688aeb79501ce30e Mon Sep 17 00:00:00 2001 From: Carson Oldson Date: Mon, 21 Oct 2024 11:59:35 -0500 Subject: [PATCH 75/75] Resolving issue with filter_html_plus patch not applying. --- services/drupal/composer.patches.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/drupal/composer.patches.json b/services/drupal/composer.patches.json index 1fb6526c23..2f05a6f544 100644 --- a/services/drupal/composer.patches.json +++ b/services/drupal/composer.patches.json @@ -233,7 +233,7 @@ "Fix problem with adding content into nested paragraphs containing same field name": "patches/layout_paragraphs-unique_field_ids-3258029-MR-eb1df.patch" }, "drupal/filter_html_plus": { - "CKEditor5 readiness": "https://git.drupalcode.org/project/filter_html_plus/-/merge_requests/1.diff" + "CKEditor5 readiness": "https://www.drupal.org/files/issues/2024-10-18/3322249-ckeditor5-10.patch" }, "drupal/anchor_link": { "Start a 3.0.x branch for CKEditor Anchor Link for semantic versioning and better integration with Drupal 10, CKEditor 5, and LinkIt" : "https://www.drupal.org/files/issues/2023-08-22/anchor_link-ckeditor5-compatibility-3206676-98.patch"