diff --git a/composer.json b/composer.json index 85922a5d..67fb5996 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,18 @@ "type": "composer", "url": "https://packages.drupal.org/8" }, + { + "type": "package", + "package": { + "name": "northernco/ckeditor5-anchor-drupal", + "version": "0.5.0", + "type": "drupal-library", + "dist": { + "url": "https://registry.npmjs.org/@northernco/ckeditor5-anchor-drupal/-/ckeditor5-anchor-drupal-0.5.0.tgz", + "type": "tar" + } + } + }, { "type": "package", "package": { @@ -37,11 +49,13 @@ "composer/installers": "^2.0", "cweagans/composer-patches": "^1.7", "drupal/admin_toolbar": "^3.4", + "drupal/anchor_link": "^3.0@beta", "drupal/autocomplete_deluxe": "^2.0", "drupal/chosen": "^4.0", "drupal/components": "^3.0@beta", "drupal/config_ignore": "^3.3", "drupal/config_split": "^2.0", + "drupal/cookies": "^1.2", "drupal/core-composer-scaffold": "^10.1", "drupal/core-project-message": "^10.1", "drupal/core-recommended": "^10.1", @@ -80,6 +94,7 @@ "mattsqd/drupal-env": "dev-main", "mattsqd/drupal-env-lando": "dev-main", "mattsqd/robovalidate": "@alpha", + "northernco/ckeditor5-anchor-drupal": "^0.5.0", "platformsh/config-reader": "^2.4" }, "conflict": { diff --git a/composer.lock b/composer.lock index 3aee2494..e7032ecd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ff089adb674ac2dbbcb3aa04198d9037", + "content-hash": "711a420f24d8d98b9b13da22122312cd", "packages": [ { "name": "asm89/stack-cors", @@ -1627,6 +1627,64 @@ "issues": "https://www.drupal.org/project/issues/admin_toolbar" } }, + { + "name": "drupal/anchor_link", + "version": "3.0.0-beta1", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/anchor_link.git", + "reference": "3.0.0-beta1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/anchor_link-3.0.0-beta1.zip", + "reference": "3.0.0-beta1", + "shasum": "a05fafd3b9f2e808b67d07f396ba80d30f748afc" + }, + "require": { + "drupal/core": "^9 || ^10 || ^11" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "3.0.0-beta1", + "datestamp": "1718879208", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + }, + "branch-alias": { + "dev-3.0.x": "3.0.x-dev" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Vardot", + "homepage": "https://www.drupal.org/vardot", + "role": "Maintainer" + }, + { + "name": "Northern Commerce", + "homepage": "https://www.drupal.org/northern-commerce", + "role": "Maintainer" + }, + { + "name": "Rajab Natshah", + "homepage": "https://www.drupal.org/user/1414312" + } + ], + "description": "This plugin module adds the better link dialog and anchor related features to CKEditor in Drupal.", + "homepage": "https://www.drupal.org/project/anchor_link", + "support": { + "source": "http://cgit.drupalcode.org/anchor_link", + "issues": "https://www.drupal.org/project/issues/anchor_link" + } + }, { "name": "drupal/autocomplete_deluxe", "version": "2.0.3", @@ -2108,6 +2166,75 @@ "slack": "https://drupal.slack.com/archives/C45342CDD" } }, + { + "name": "drupal/cookies", + "version": "1.2.13", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/cookies.git", + "reference": "1.2.13" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/cookies-1.2.13.zip", + "reference": "1.2.13", + "shasum": "9f5b398283d728c065b85b4b64e5e9a05ec4c060" + }, + "require": { + "drupal/core": "^9 || ^10 || ^11", + "jfeltkamp/cookiesjsr": "^1.0.12" + }, + "require-dev": { + "drupal/asset_injector": "^2", + "drupal/facebook_pixel": "^2.0", + "drupal/google_analytics": "^4.0", + "drupal/google_tag": "^2.0", + "drupal/ivw_integration": "^2.0", + "drupal/matomo": "^1.0", + "drupal/media_entity_instagram": "^3.0", + "drupal/media_entity_twitter": "^2.0", + "drupal/recaptcha": "^3.4" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.2.13", + "datestamp": "1724152774", + "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": "Anybody", + "homepage": "https://www.drupal.org/user/291091" + }, + { + "name": "grevil", + "homepage": "https://www.drupal.org/user/3668491" + }, + { + "name": "JFeltkamp", + "homepage": "https://www.drupal.org/user/2471686" + }, + { + "name": "thomas.frobieter", + "homepage": "https://www.drupal.org/user/409335" + } + ], + "description": "Cookie consent tool.", + "homepage": "https://www.drupal.org/project/cookies", + "support": { + "source": "http://cgit.drupalcode.org/cookies", + "issues": "https://www.drupal.org/project/issues/cookies" + } + }, { "name": "drupal/core", "version": "10.3.2", @@ -5702,6 +5829,33 @@ }, "time": "2024-06-28T20:10:30+00:00" }, + { + "name": "jfeltkamp/cookiesjsr", + "version": "1.0.13", + "source": { + "type": "git", + "url": "https://github.com/jfeltkamp/cookiesjsr.git", + "reference": "a25132aadb01975cbe77dc7746fd5cf15f06d246" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jfeltkamp/cookiesjsr/zipball/a25132aadb01975cbe77dc7746fd5cf15f06d246", + "reference": "a25132aadb01975cbe77dc7746fd5cf15f06d246", + "shasum": "" + }, + "type": "drupal-library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Cookie consent tool.", + "homepage": "https://github.com/jfeltkamp/cookiesjsr", + "support": { + "issues": "https://github.com/jfeltkamp/cookiesjsr/issues", + "source": "https://github.com/jfeltkamp/cookiesjsr.git" + }, + "time": "2022-03-25T09:05:23+00:00" + }, { "name": "jjj/chosen", "version": "2.2.1", @@ -6834,6 +6988,15 @@ }, "time": "2024-07-01T20:03:41+00:00" }, + { + "name": "northernco/ckeditor5-anchor-drupal", + "version": "0.5.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/@northernco/ckeditor5-anchor-drupal/-/ckeditor5-anchor-drupal-0.5.0.tgz" + }, + "type": "drupal-library" + }, { "name": "pear/archive_tar", "version": "1.5.0", @@ -16078,6 +16241,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { + "drupal/anchor_link": 10, "drupal/components": 10, "drupal/default_content": 15, "drupal/maillog": 20, diff --git a/composer.log b/composer.log index bc00aab5..9649fd8c 100644 --- a/composer.log +++ b/composer.log @@ -35,3 +35,6 @@ d0b264b8bfd2f16b57808145e6c7b950|Matt Poole|feature/BSD-212-smpt-enable|Tue Jul 59d81fa4a3cb5b4021dd9824956e194c|Matt Poole|feature/BSD-271-validation-action|Tue Aug 6 13:13:48 EDT 2024|./composer.sh update mattsqd/robovalidate 8a08b6d45145b305c16131bd11430688|Matt Poole|feature/BSD-278-update-deps|Thu Aug 15 12:05:25 EDT 2024|./composer.sh update bb805ef6ca0a258d1c8306f0b36fafec|Matt Poole|feature/BSD-287-update-deps|Wed Sep 4 10:41:04 EDT 2024|./composer.sh update +30ef2bb0122b978360bda4a19c3c9b00|Matt Poole|feature/BSD-284-gdpr-compliance|Wed Sep 4 16:48:48 EDT 2024|./composer.sh require drupal/cookies +45572e7bbb597f5c3740a8c9063c9496|Matt Poole|feature/BSD-284-gdpr-compliance|Wed Sep 4 16:48:59 EDT 2024|./composer.sh require drupal/anchor_link:^3.0@beta +a64a80ee97032a4a2898228866cf865f|Matt Poole|feature/BSD-284-gdpr-compliance|Wed Sep 4 16:49:08 EDT 2024|./composer.sh require northernco/ckeditor5-anchor-drupal diff --git a/config/sync/block.block.bixal_uswds_cookiesui.yml b/config/sync/block.block.bixal_uswds_cookiesui.yml new file mode 100644 index 00000000..5e80dc68 --- /dev/null +++ b/config/sync/block.block.bixal_uswds_cookiesui.yml @@ -0,0 +1,20 @@ +uuid: ae133bf2-90dd-4aa5-b9c0-a4401a5af62a +langcode: en +status: true +dependencies: + module: + - cookies + theme: + - bixal_uswds +id: bixal_uswds_cookiesui +theme: bixal_uswds +region: footer +weight: 0 +provider: null +plugin: cookies_ui_block +settings: + id: cookies_ui_block + label: 'Cookies UI' + label_display: '0' + provider: cookies +visibility: { } diff --git a/config/sync/cookies.config.yml b/config/sync/cookies.config.yml new file mode 100644 index 00000000..e1132484 --- /dev/null +++ b/config/sync/cookies.config.yml @@ -0,0 +1,18 @@ +_core: + default_config_hash: cd8_DBKdTaJPQesJJM8CEbPA744-Uc-0lOqnotq28PE +langcode: en +cookie_name: cookiesjsr +cookie_expires: 365 +cookie_domain: '' +cookie_secure: false +cookie_same_site: Lax +open_settings_hash: editCookieSettings +show_deny_all: true +deny_all_on_layer_close: false +settings_as_link: false +group_consent: false +cookie_docs: true +lib_load_from_cdn: true +lib_scroll_limit: 0 +use_default_styles: true +store_auth_user_consent: false diff --git a/config/sync/cookies.cookies_service.functional.yml b/config/sync/cookies.cookies_service.functional.yml new file mode 100644 index 00000000..35351cc2 --- /dev/null +++ b/config/sync/cookies.cookies_service.functional.yml @@ -0,0 +1,21 @@ +uuid: ded440ef-5550-4c17-ba89-8ec4f019397f +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: N-O3629vb-jExOxfM0FYcfPzEu6QVzgWHMm06jMERLg +id: functional +label: 'Required functional' +group: functional +info: + value: '
Cookie nameDefault expiration timeDescription
SSESS<ID>1 monthIf you are logged in to this website, a session cookie is required to identify and connect your browser to your user account in the server backend of this website.
cookiesjsr1 yearWhen you visited this website for the first time, you were asked for your permission to use several services (including those from third parties) that require data to be saved in your browser (cookies, local storage). Your decisions about each service (allow, deny) are stored in this cookie and are reused each time you visit this website.
' + format: html_text +consentRequired: false +purpose: 'Essential functional cookies to provide general functionality' +placeholderMainText: 'This content is blocked because required functional cookies have not been accepted.' +placeholderAcceptText: 'Only accept required functional cookies' +processor: '' +processorContact: '' +processorUrl: '' +processorPrivacyPolicyUrl: '' +processorCookiePolicyUrl: '' diff --git a/config/sync/cookies.cookies_service.gtag.yml b/config/sync/cookies.cookies_service.gtag.yml new file mode 100644 index 00000000..606f10bc --- /dev/null +++ b/config/sync/cookies.cookies_service.gtag.yml @@ -0,0 +1,24 @@ +uuid: ba824dd8-8ba0-43f4-beda-becf0ae6c777 +langcode: en +status: true +dependencies: + enforced: + module: + - cookies_gtag +_core: + default_config_hash: lHZB6nbi9jwgzbywo19UKvtGNvMKA3nMWl6fE-rkZ3k +id: gtag +label: 'Google Tag Manager' +group: performance +info: + format: full_html + value: '' +consentRequired: true +purpose: '' +processor: '' +processorContact: '' +processorUrl: 'https://tagmanager.google.com/' +processorPrivacyPolicyUrl: 'https://policies.google.com/privacy' +processorCookiePolicyUrl: '' +placeholderMainText: 'This content is blocked because Google Tag Manager cookies have not been accepted.' +placeholderAcceptText: 'Only accept Google Tag Manager cookies' diff --git a/config/sync/cookies.cookies_service_group.functional.yml b/config/sync/cookies.cookies_service_group.functional.yml new file mode 100644 index 00000000..b0381eca --- /dev/null +++ b/config/sync/cookies.cookies_service_group.functional.yml @@ -0,0 +1,11 @@ +uuid: e1568f99-796d-4caf-a9f9-b26bb3ac9aab +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: aHm4Q63Ge97tcktTa_qmUqJMir45iyGY2lEvvqPW68g +id: functional +label: Functional +weight: 1 +title: Functional +details: 'Cookies are small text files that are placed by your browser on your device in order to store certain information. Using the information that is stored and returned, a website can recognize that you have previously accessed and visited it using the browser on your end device. We use this information to arrange and display the website optimally in accordance with your preferences. Within this process, only the cookie itself is identified on your device. Personal data is only stored following your express consent or where this is absolutely necessary to enable use the service provided by us and accessed by you.' diff --git a/config/sync/cookies.cookies_service_group.marketing.yml b/config/sync/cookies.cookies_service_group.marketing.yml new file mode 100644 index 00000000..21f462cb --- /dev/null +++ b/config/sync/cookies.cookies_service_group.marketing.yml @@ -0,0 +1,11 @@ +uuid: b7249bce-9e9f-42ee-b5c9-c364f61ad6b0 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: JkP6try0AxX_f4RpFEletep5NHSlVB1BbGw0snW4MO8 +id: marketing +label: Marketing +weight: 20 +title: Marketing +details: 'Customer communication and marketing tools.' diff --git a/config/sync/cookies.cookies_service_group.performance.yml b/config/sync/cookies.cookies_service_group.performance.yml new file mode 100644 index 00000000..eee106b1 --- /dev/null +++ b/config/sync/cookies.cookies_service_group.performance.yml @@ -0,0 +1,11 @@ +uuid: 81224654-6cee-4175-bdbc-ca69083e7247 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: Jv3uIJviBj7D282Qu1ZpEQwuOEb3lCcDvx-XVHeOJpw +id: performance +label: Performance +weight: 30 +title: 'Performance Cookies' +details: 'Performance cookies collect aggregated information about how our website is used. The purpose of this is to improve its attractiveness, content and functionality. These cookies help us to determine whether, how often and for how long particular sub-pages of our website are accessed and which content users are particularly interested in. Search terms, country, region and (where applicable) the city from which the website is accessed are also recorded, as is the proportion of mobile devices that are used to access the website. We use this information to compile statistical reports that help us tailor the content of our website to your needs and optimize our offer.' diff --git a/config/sync/cookies.cookies_service_group.social.yml b/config/sync/cookies.cookies_service_group.social.yml new file mode 100644 index 00000000..ff9df3c8 --- /dev/null +++ b/config/sync/cookies.cookies_service_group.social.yml @@ -0,0 +1,11 @@ +uuid: 0a45fe5a-a4c1-4678-8f19-8d1acd99b889 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: w9uS0Ktbh58ffWxW1ue_MKgB_he6iZPMx2Pc6tN4K4o +id: social +label: 'Social Plugins' +weight: 20 +title: 'Social Plugins' +details: 'Social media widgets provide additional content originally published on third party platforms.' diff --git a/config/sync/cookies.cookies_service_group.tracking.yml b/config/sync/cookies.cookies_service_group.tracking.yml new file mode 100644 index 00000000..58cddb24 --- /dev/null +++ b/config/sync/cookies.cookies_service_group.tracking.yml @@ -0,0 +1,11 @@ +uuid: 11912e8a-5bc1-4ddb-a07e-76081050595d +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: _gYDe3qoEc6L5uYR6zhu5V-3ARLlyis9gl1diq7Tnf4 +id: tracking +label: Tracking +weight: 10 +title: 'Tracking cookies' +details: 'Marketing cookies come from external advertising companies ("third-party cookies") and are used to collect information about the websites visited by the user. The purpose of this is to create and display target group-oriented content and advertising for the user.' diff --git a/config/sync/cookies.cookies_service_group.video.yml b/config/sync/cookies.cookies_service_group.video.yml new file mode 100644 index 00000000..1d300478 --- /dev/null +++ b/config/sync/cookies.cookies_service_group.video.yml @@ -0,0 +1,11 @@ +uuid: 33d85f77-2def-43a8-8b8b-5f621010b046 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: w1WnCmP2Xfgx24xbx5u9T27XLF_ZFw5R0MlO-eDDPpQ +id: video +label: Videos +weight: 40 +title: Video +details: 'Video sharing services help to add rich media on the site and increase its visibility.' diff --git a/config/sync/cookies.texts.yml b/config/sync/cookies.texts.yml new file mode 100644 index 00000000..5d5e35dc --- /dev/null +++ b/config/sync/cookies.texts.yml @@ -0,0 +1,33 @@ +_core: + default_config_hash: PpB_t3-mnEd5Lckhxc9rfquSMa0CndPslGvJZlcg61E +langcode: en +bannerText: 'We use a selection of our own and third-party cookies on the pages of this website: Essential cookies, which are required in order to use the website; functional cookies, which provide better easy of use when using the website; performance cookies, which we use to generate aggregated data on website use and statistics; and marketing cookies, which are used to display relevant content and advertising. If you choose "ACCEPT ALL", you consent to the use of all cookies. You can accept and reject individual cookie types and revoke your consent for the future at any time at "Settings".' +privacyPolicy: 'Privacy policy' +privacyUri: /node/29 +imprint: Imprint +imprintUri: '' +cookieDocs: 'Cookie documentation' +cookieDocsUri: /cookies/documentation +officialWebsite: '' +denyAll: 'Deny all' +alwaysActive: 'Always active' +settings: 'Cookie settings' +acceptAll: 'Accept all' +requiredCookies: 'Required cookies' +cookieSettings: 'Cookie settings' +close: Close +readMore: 'Read more' +allowed: Allowed +denied: Denied +settingsAllServices: 'Settings for all services' +saveSettings: Save +default_langcode: en +disclaimerText: 'All cookie information is subject to change by the service providers. We update this information regularly.' +disclaimerTextPosition: above +processorDetailsLabel: 'Processor Company Details' +processorLabel: Company +processorWebsiteUrlLabel: 'Company Website' +processorPrivacyPolicyUrlLabel: 'Company Privacy Policy' +processorCookiePolicyUrlLabel: 'Company Cookie Policy' +processorContactLabel: 'Data Protection Contact Details' +placeholderAcceptAllText: 'Accept All Cookies' diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 8cdd7c41..e70a9555 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -4,10 +4,12 @@ module: admin_toolbar: 0 admin_toolbar_search: 0 admin_toolbar_tools: 0 + anchor_link: 0 autocomplete_deluxe: 0 bixal_captcha: 0 bixal_default_content: 0 bixal_drush_commands: 0 + bixal_gdpr: 0 block: 0 block_node: 0 breakpoint: 0 @@ -20,8 +22,10 @@ module: config: 0 config_ignore: 0 config_split: 0 + config_translation: 0 contact: 0 contextual: 0 + cookies: 0 ctools: 0 datetime: 0 dblog: 0 @@ -44,6 +48,7 @@ module: key: 0 language: 0 link: 0 + locale: 0 maillog: 0 mailsystem: 0 media: 0 @@ -87,6 +92,7 @@ module: pathauto: 1 xmlsitemap: 1 views: 10 + cookies_gtag: 11 paragraphs: 11 minimal: 1000 theme: diff --git a/config/sync/editor.editor.html_text.yml b/config/sync/editor.editor.html_text.yml index c37a1ed7..5265222c 100644 --- a/config/sync/editor.editor.html_text.yml +++ b/config/sync/editor.editor.html_text.yml @@ -17,6 +17,7 @@ settings: - drupalInsertImage - underline - link + - anchor - blockQuote - bulletedList - numberedList @@ -25,6 +26,7 @@ settings: - sourceEditing - code - codeBlock + - insertTable plugins: ckeditor5_alignment: enabled_alignments: diff --git a/config/sync/filter.format.html_text.yml b/config/sync/filter.format.html_text.yml index 38aa0a88..70a0f039 100644 --- a/config/sync/filter.format.html_text.yml +++ b/config/sync/filter.format.html_text.yml @@ -39,7 +39,7 @@ filters: status: true weight: -47 settings: - allowed_html: '