From f4941e961d90269d3a651b15d2eb29ea27d97c36 Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Tue, 13 Jan 2026 20:10:54 +1100 Subject: [PATCH 1/3] D11 update custom modules to work with D11 update update ckeditor_templates remove tide_test module from composer.json fixed media widget update add patches back bump lesstif/php-jira-rest-client use cweagans/composer-patches ^1.6 version. D11 upgrade. fixes simple_oauth update hook issue. Fixes status page error. add missed modules. Updates ckeditor template configs. add content_lock patch user_roles function is deprecated update patches. 1. elasticsearch_connector 2. views_data_export update jira_rest lints # Conflicts: # composer.json --- composer.dev.json | 849 +++++++--------- composer.json | 911 +++++++++--------- ...emplates.ckeditor_templates.blockquote.yml | 5 +- ...ates.ckeditor_templates.primary_button.yml | 5 +- ...es.ckeditor_templates.secondary_button.yml | 5 +- config/install/editor.editor.admin_text.yml | 7 +- config/install/editor.editor.rich_text.yml | 9 +- config/install/editor.editor.summary_text.yml | 7 +- .../field.storage.block_content.body.yml | 18 + config/install/field.storage.node.body.yml | 18 + config/install/filter.format.rich_text.yml | 7 - .../install/views.view.tide_media_browser.yml | 150 --- config/optional/views.view.media.yml | 75 -- docker-compose.yml | 7 +- modules/tide_alert/tide_alert.info.yml | 2 +- .../tide_content_collection_test.info.yml | 2 +- .../tide_content_collection.info.yml | 2 +- .../src/Controller/ShareLinkTokenResource.php | 14 +- .../tide_share_link/tide_share_link.info.yml | 2 +- modules/tide_api/tide_api.info.yml | 2 +- .../tide_block_inactive_users.info.yml | 2 +- .../ckeditor_tablecol_resize.info.yml | 2 +- .../src/Plugin/EmbeddedContent/TideIframe.php | 11 +- modules/tide_ckeditor/tide_ckeditor.info.yml | 4 +- .../tide_cms_support.info.yml | 2 +- .../tide_dashboard/tide_dashboard.info.yml | 2 +- .../tide_data_driven_component.info.yml | 2 +- .../tide_data_driven_component.install | 2 +- .../tide_demo_content.info.yml | 2 +- .../tide_edit_protection.info.yml | 2 +- .../tide_edit_protection.module | 2 +- modules/tide_event/tide_event.info.yml | 2 +- modules/tide_grant/tide_grant.info.yml | 2 +- modules/tide_jira/tide_jira.info.yml | 2 +- .../tide_landing_page.info.yml | 2 +- .../tide_landing_page.install | 4 +- .../tide_media_file_overwrite.info.yml | 2 +- .../tide_media_secure_files.info.yml | 2 +- modules/tide_media/tide_media.info.yml | 2 +- modules/tide_media/tide_media.module | 6 +- .../tide_migration/tide_migration.info.yml | 2 +- modules/tide_news/tide_news.info.yml | 2 +- .../DisallowXSimpleOauthRequests.php | 2 +- modules/tide_oauth/tide_oauth.info.yml | 2 +- modules/tide_oauth/tide_oauth.services.yml | 8 +- .../tide_paragraphs_enhanced_modal.info.yml | 2 +- modules/tide_profile/tide_profile.info.yml | 2 +- .../src/Controller/PublicationResource.php | 16 +- .../tide_publication.info.yml | 2 +- .../tide_data_pipelines_test.info.yml | 2 +- .../tide_data_pipeline.info.yml | 2 +- modules/tide_search/tide_search.info.yml | 2 +- modules/tide_search/tide_search.install | 2 +- .../tide_site_preview.info.yml | 2 +- .../tide_site_simple_sitemap.info.yml | 2 +- .../tide_site_theming.info.yml | 2 +- modules/tide_site/src/AliasManager.php | 4 +- modules/tide_site/src/AliasStorageHelper.php | 19 +- .../TideSiteGetRouteSubscriber.php | 15 +- .../TideSiteRequestEventSubscriber.php | 15 +- modules/tide_site/src/TideSiteHelper.php | 15 +- modules/tide_site/tide_site.info.yml | 2 +- .../tide_site_alert/tide_site_alert.info.yml | 2 +- .../tide_site_restriction.info.yml | 2 +- modules/tide_test/tide_test.info.yml | 2 +- modules/tide_tfa/tide_tfa.info.yml | 2 +- .../tide_ui_restriction.info.yml | 2 +- .../tide_user_expire.info.yml | 2 +- .../tide_user_expire/tide_user_expire.install | 2 +- modules/tide_webform/tide_webform.info.yml | 2 +- .../tide_workflow_notification.info.yml | 2 +- scripts/composer/DrupalSettings.php | 6 +- scripts/drupal-init-module.sh | 4 - .../views/field/SortedRolesViewsField.php | 3 +- src/TideCoreOperation.php | 2 +- tide_core.info.yml | 4 +- tide_core.install | 32 +- tide_core.module | 14 +- tide_core.post_update.php | 18 + 79 files changed, 1102 insertions(+), 1275 deletions(-) create mode 100644 config/install/field.storage.block_content.body.yml create mode 100644 config/install/field.storage.node.body.yml diff --git a/composer.dev.json b/composer.dev.json index 89ddea028..5e32fc27b 100644 --- a/composer.dev.json +++ b/composer.dev.json @@ -1,487 +1,386 @@ { - "name": "myorg/mysite", - "description": "Drupal 8 site for MYSITE", - "license": "proprietary", - "require": { - "composer/installers": "^1.9", - "cweagans/composer-patches": "^1.6.0", - "drupal/core-composer-scaffold": "^11.0", - "drupal/core": "10.5.2", - "drupal/core-recommended": "10.5.2", - "drush/drush": "^13", - "vlucas/phpdotenv": "^4.1", - "webflo/drupal-finder": "^1.0" + "name": "myorg/mysite", + "description": "Drupal 8 site for MYSITE", + "license": "proprietary", + "require": { + "composer/installers": "^1.9", + "cweagans/composer-patches": "^1.6.0", + "drupal/core-composer-scaffold": "^11.0", + "drupal/core": "11.3.x", + "drupal/core-recommended": "11.3.x", + "drush/drush": "^13", + "webflo/drupal-finder": "^1.0" + }, + "require-dev": { + "behat/behat": "~3.5", + "behat/mink": "^1.11", + "behat/mink-browserkit-driver": "^2.2", + "behat/mink-selenium2-driver": "^1.4", + "imbo/behat-api-extension": "^6.0", + "chi-teck/drupal-code-generator": "*", + "squizlabs/php_codesniffer": "3.7.1", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "doctrine/persistence": "^3.3", + "drupal/coder": "^8.3.10", + "drupal/drupal-extension": "^5.0.0rc1", + "drevops/behat-screenshot": "^1.0", + "drevops/behat-steps": "^1.2.0", + "phpcompatibility/php-compatibility": "^9.1", + "symfony/filesystem": "^7.4", + "php-http/curl-client": "*", + "phpunit/phpunit": "^8.5.14 || ^9", + "drupal/core-dev":"11.x", + "phpspec/prophecy-phpunit":"^2", + "weitzman/drupal-test-traits": "*", + "php-http/message": "~1.13", + "php-http/message-factory": "^1.1", + "guzzlehttp/psr7": "^2.8.0", + "drupal/test_helpers": "^1.2" + }, + "provide": { + "drupal/ckeditor": "*" + }, + "autoload": { + "psr-4": { + "Tide\\Tests\\Context\\": "tests/behat/bootstrap/" }, - "require-dev": { - "behat/behat": "~3.5", - "behat/mink": "^1.11", - "behat/mink-browserkit-driver": "^2.2", - "behat/mink-selenium2-driver": "^1.4", - "chi-teck/drupal-code-generator": "^3.0", - "squizlabs/php_codesniffer": "3.7.1", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "doctrine/persistence": "^3.3", - "drupal/coder": "^8.3.10", - "drupal/drupal-extension": "^5.0.0rc1", - "drevops/behat-screenshot": "^1.0", - "drevops/behat-steps": "^1.2.0", - "phpcompatibility/php-compatibility": "^9.1", - "imbo/behat-api-extension": "^6.0", - "symfony/filesystem": "^6.2", - "php-http/curl-client": "*", - "phpunit/phpunit": "^8.5.14 || ^9", - "drupal/core-dev":"10.5.x", - "phpspec/prophecy-phpunit":"^2", - "weitzman/drupal-test-traits": "^1.5", - "php-http/message": "~1.13", - "php-http/message-factory": "^1.1", - "guzzlehttp/psr7": "~2.7.0", - "dpc-sdp/tide_test": "^4.0.0", - "drupal/test_helpers": "^1.2" + "classmap": [ + "scripts/composer/" + ] + }, + "prefer-stable": true, + "minimum-stability": "dev", + "config": { + "process-timeout": 0, + "sort-packages": true, + "allow-plugins": { + "composer/installers": true, + "oomphinc/composer-installers-extender": true, + "drupal/*": true, + "cweagans/composer-patches": true, + "zaporylie/composer-drupal-optimizations": false, + "dealerdirect/phpcodesniffer-composer-installer": true, + "php-http/discovery": true, + "phpstan/extension-installer": true + } + }, + "repositories": { + "drupal": { + "type": "composer", + "url": "https://packages.drupal.org/8", + "exclude": ["drupal/token_conditions"] }, - "provide": { - "drupal/ckeditor": "*" + "asset-packagist": { + "type": "composer", + "url": "https://asset-packagist.org" }, - "autoload": { - "psr-4": { - "Tide\\Tests\\Context\\": "tests/behat/bootstrap/" - }, - "classmap": [ - "scripts/composer/" - ] + "dpc-sdp/tide": { + "type": "vcs", + "no-api": true, + "url": "https://github.com/dpc-sdp/tide.git" + }, + "dpc-sdp/tide_core": { + "type": "vcs", + "no-api": true, + "url": "https://github.com/dpc-sdp/tide_core.git" }, - "prefer-stable": true, - "minimum-stability": "dev", - "config": { - "process-timeout": 0, - "sort-packages": true, - "allow-plugins": { - "composer/installers": true, - "oomphinc/composer-installers-extender": true, - "drupal/*": true, - "cweagans/composer-patches": true, - "zaporylie/composer-drupal-optimizations": false, - "dealerdirect/phpcodesniffer-composer-installer": true, - "php-http/discovery": true, - "phpstan/extension-installer": true + + "library/dropzone": { + "type": "package", + "package": { + "name": "library/dropzone", + "version": "4.3.0", + "type": "drupal-library", + "dist": { + "url": "https://github.com/enyo/dropzone/archive/v4.3.0.zip", + "type": "zip" } + } }, - "repositories": { - "drupal": { - "type": "composer", - "url": "https://packages.drupal.org/8", - "exclude": ["drupal/token_conditions", "drupal/ckeditor_templates", "drupal/create_menus_permission"] - }, - "asset-packagist": { - "type": "composer", - "url": "https://asset-packagist.org" - }, - "dpc-sdp/tide": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide.git" - }, - "drupal/create_menus_permission": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/create_menus_permission.git" - }, - "dpc-sdp/tide_alert": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_alert.git" - }, - "dpc-sdp/tide_api": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_api.git" - }, - "dpc-sdp/tide_authenticated_content": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_authenticated_content.git" - }, - "dpc-sdp/tide_core": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_core.git" - }, - "dpc-sdp/tide_data_driven_component": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_data_driven_component.git" - }, - "dpc-sdp/tide_demo_content": { - "url": "https://github.com/dpc-sdp/tide_demo_content.git", - "type": "vcs", - "no-api": true - }, - "dpc-sdp/tide_event": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_event.git" - }, - "dpc-sdp/tide_event_atdw": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_event_atdw.git" - }, - "dpc-sdp/tide_grant": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_grant.git" - }, - "dpc-sdp/tide_landing_page": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_landing_page.git" - }, - "dpc-sdp/tide_media": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_media.git" - }, - "dpc-sdp/tide_monsido": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_monsido.git" - }, - "dpc-sdp/tide_page": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_page.git" - }, - "dpc-sdp/tide_profile": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_profile.git" - }, - "dpc-sdp/tide_publication": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_publication.git" - }, - "dpc-sdp/tide_news": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_news.git" - }, - "dpc-sdp/tide_search": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_search.git" - }, - "dpc-sdp/tide_site": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_site.git" - }, - "dpc-sdp/tide_test": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_test.git" - }, - "dpc-sdp/tide_webform": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/tide_webform.git" - }, - "library/dropzone": { - "type": "package", - "package": { - "name": "library/dropzone", - "version": "4.3.0", - "type": "drupal-library", - "dist": { - "url": "https://github.com/enyo/dropzone/archive/v4.3.0.zip", - "type": "zip" - } - } - }, - "ckeditor.autogrow": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/autogrow", - "version": "4.16.1", - "type": "drupal-library", - "dist": { - "url": "https://download.ckeditor.com/autogrow/releases/autogrow_4.16.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "ckeditor.codemirror": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/codemirror", - "version": "v1.17.12", - "type": "drupal-library", - "dist": { - "url": "https://github.com/w8tcha/CKEditor-CodeMirror-Plugin/releases/download/v1.17.12/CKEditor-CodeMirror-Plugin.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "ckeditor.image": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/image", - "version": "4.16.1", - "type": "drupal-library", - "dist": { - "url": "https://download.ckeditor.com/image/releases/image_4.16.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "ckeditor.link": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/link", - "version": "4.16.1", - "type": "drupal-library", - "dist": { - "url": "https://download.ckeditor.com/link/releases/link_4.16.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "ckeditor/templates": { - "type": "package", - "package": { - "name": "ckeditor/templates", - "type": "drupal-library", - "version": "4.11.1", - "dist": { - "type": "zip", - "url": "https://download.ckeditor.com/templates/releases/templates_4.11.1.zip" - } - } - }, - "jquery.timepicker": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/timepicker", - "version": "1.14.0", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.timepicker" - }, - "dist": { - "url": "https://github.com/jonthornton/jquery-timepicker/archive/refs/tags/1.14.0.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "jquery.textcounter": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/textcounter", - "version": "0.9.1", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.textcounter" - }, - "dist": { - "url": "https://github.com/ractoon/jQuery-Text-Counter/archive/0.9.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "choices": { - "_webform": true, - "type": "package", - "package": { - "name": "choices/choices", - "version": "9.0.1", - "type": "drupal-library", - "extra": { - "installer-name": "choices" - }, - "dist": { - "url": "https://github.com/jshjohnson/Choices/archive/v9.0.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "codemirror": { - "_webform": true, - "type": "package", - "package": { - "name": "codemirror/codemirror", - "version": "5.65.12", - "type": "drupal-library", - "extra": { - "installer-name": "codemirror" - }, - "dist": { - "url": "https://github.com/components/codemirror/archive/5.65.12.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "jquery.inputmask": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/inputmask", - "version": "5.0.8", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.inputmask" - }, - "dist": { - "url": "https://github.com/RobinHerbots/jquery.inputmask/archive/5.0.8.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "jquery.intl-tel-input": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/intl-tel-input", - "version": "17.0.19", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.intl-tel-input" - }, - "dist": { - "url": "https://github.com/jackocnr/intl-tel-input/archive/v17.0.19.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "progress-tracker": { - "_webform": true, - "type": "package", - "package": { - "name": "progress-tracker/progress-tracker", - "version": "2.0.7", - "type": "drupal-library", - "extra": { - "installer-name": "progress-tracker" - }, - "dist": { - "url": "https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "drupal/token_conditions": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/token_conditions.git" - }, - "drupal/ckeditor_templates": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/ckeditor_templates.git" + "ckeditor.autogrow": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/autogrow", + "version": "4.16.1", + "type": "drupal-library", + "dist": { + "url": "https://download.ckeditor.com/autogrow/releases/autogrow_4.16.1.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" } + } }, - "scripts": { - "pre-install-cmd": [ - "DrupalProject\\composer\\ScriptHandler::checkComposerVersion" - ], - "pre-update-cmd": [ - "DrupalProject\\composer\\ScriptHandler::checkComposerVersion" - ], - "post-install-cmd": [ - "composer drupal:scaffold", - "DrupalProject\\composer\\ScriptHandler::createRequiredFiles", - "Utilities\\composer\\DrupalSettings::create" - ], - "post-update-cmd": [ - "composer drupal:scaffold", - "DrupalProject\\composer\\ScriptHandler::createRequiredFiles", - "Utilities\\composer\\DrupalSettings::create" - ] + "ckeditor.codemirror": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/codemirror", + "version": "v1.17.12", + "type": "drupal-library", + "dist": { + "url": "https://github.com/w8tcha/CKEditor-CodeMirror-Plugin/releases/download/v1.17.12/CKEditor-CodeMirror-Plugin.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } }, - "extra": { - "drupal-scaffold": { - "allowed-packages": [ - "drupal/core" - ], - "file-mapping": { - "[web-root]/robots.txt": false - }, - "locations": { - "web-root": "./docroot" - } - }, - "enable-patching": true, - "composer-exit-on-patch-failure": true, - "installer-paths": { - "docroot/core": [ - "type:drupal-core" - ], - "docroot/modules/contrib/{$name}": [ - "type:drupal-module" - ], - "docroot/themes/contrib/{$name}": [ - "type:drupal-theme" - ], - "docroot/profiles/contrib/{$name}": [ - "type:drupal-profile" - ], - "docroot/libraries/{$name}": [ - "type:drupal-library" - ], - "drush/contrib/{$name}": [ - "type:drupal-drush" - ] - }, - "preserve-paths": [ - "docroot/modules/custom", - "docroot/themes/custom", - "docroot/drush", - "docroot/sites/default/settings.php", - "docroot/sites/default/default.settings.local.php", - "docroot/sites/default/default.services.local.yml", - "docroot/sites/default/settings.local.php", - "docroot/sites/default/services.local.yml", - "docroot/sites/default/files", - "docroot/robots.txt", - "docroot/.htaccess" - ] + "ckeditor.image": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/image", + "version": "4.16.1", + "type": "drupal-library", + "dist": { + "url": "https://download.ckeditor.com/image/releases/image_4.16.1.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "ckeditor.link": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/link", + "version": "4.16.1", + "type": "drupal-library", + "dist": { + "url": "https://download.ckeditor.com/link/releases/link_4.16.1.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "ckeditor/templates": { + "type": "package", + "package": { + "name": "ckeditor/templates", + "type": "drupal-library", + "version": "4.11.1", + "dist": { + "type": "zip", + "url": "https://download.ckeditor.com/templates/releases/templates_4.11.1.zip" + } + } + }, + "jquery.timepicker": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/timepicker", + "version": "1.14.0", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.timepicker" + }, + "dist": { + "url": "https://github.com/jonthornton/jquery-timepicker/archive/refs/tags/1.14.0.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "jquery.textcounter": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/textcounter", + "version": "0.9.1", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.textcounter" + }, + "dist": { + "url": "https://github.com/ractoon/jQuery-Text-Counter/archive/0.9.1.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "choices": { + "_webform": true, + "type": "package", + "package": { + "name": "choices/choices", + "version": "9.0.1", + "type": "drupal-library", + "extra": { + "installer-name": "choices" + }, + "dist": { + "url": "https://github.com/jshjohnson/Choices/archive/v9.0.1.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "codemirror": { + "_webform": true, + "type": "package", + "package": { + "name": "codemirror/codemirror", + "version": "5.65.12", + "type": "drupal-library", + "extra": { + "installer-name": "codemirror" + }, + "dist": { + "url": "https://github.com/components/codemirror/archive/5.65.12.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "jquery.inputmask": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/inputmask", + "version": "5.0.8", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.inputmask" + }, + "dist": { + "url": "https://github.com/RobinHerbots/jquery.inputmask/archive/5.0.8.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "jquery.intl-tel-input": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/intl-tel-input", + "version": "17.0.19", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.intl-tel-input" + }, + "dist": { + "url": "https://github.com/jackocnr/intl-tel-input/archive/v17.0.19.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "progress-tracker": { + "_webform": true, + "type": "package", + "package": { + "name": "progress-tracker/progress-tracker", + "version": "2.0.7", + "type": "drupal-library", + "extra": { + "installer-name": "progress-tracker" + }, + "dist": { + "url": "https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } + }, + "ubirak/rest-api-behat-extension": { + "type": "vcs", + "no-api": true, + "url": "https://github.com/dpc-sdp/rest-api-behat-extension.git" + }, + "drupal/token_conditions": { + "type": "vcs", + "no-api": true, + "url": "https://github.com/dpc-sdp/token_conditions.git" } + }, + "scripts": { + "pre-install-cmd": [ + "DrupalProject\\composer\\ScriptHandler::checkComposerVersion" + ], + "pre-update-cmd": [ + "DrupalProject\\composer\\ScriptHandler::checkComposerVersion" + ], + "post-install-cmd": [ + "composer drupal:scaffold", + "DrupalProject\\composer\\ScriptHandler::createRequiredFiles", + "Utilities\\composer\\DrupalSettings::create" + ], + "post-update-cmd": [ + "composer drupal:scaffold", + "DrupalProject\\composer\\ScriptHandler::createRequiredFiles", + "Utilities\\composer\\DrupalSettings::create" + ] + }, + "extra": { + "drupal-scaffold": { + "allowed-packages": [ + "drupal/core" + ], + "file-mapping": { + "[web-root]/robots.txt": false + }, + "locations": { + "web-root": "./docroot" + } + }, + "enable-patching": true, + "composer-exit-on-patch-failure": true, + "installer-paths": { + "docroot/core": [ + "type:drupal-core" + ], + "docroot/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "docroot/themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "docroot/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "docroot/libraries/{$name}": [ + "type:drupal-library" + ], + "drush/contrib/{$name}": [ + "type:drupal-drush" + ] + }, + "preserve-paths": [ + "docroot/modules/custom", + "docroot/themes/custom", + "docroot/drush", + "docroot/sites/default/settings.php", + "docroot/sites/default/default.settings.local.php", + "docroot/sites/default/default.services.local.yml", + "docroot/sites/default/settings.local.php", + "docroot/sites/default/services.local.yml", + "docroot/sites/default/files", + "docroot/robots.txt", + "docroot/.htaccess" + ] + } } diff --git a/composer.json b/composer.json index a975da3d4..faedd2333 100644 --- a/composer.json +++ b/composer.json @@ -1,484 +1,475 @@ { - "name": "dpc-sdp/tide_core", - "description": "Core functionality for Tide distribution", - "type": "drupal-module", - "license": "GPL-2.0-or-later", - "minimum-stability": "dev", - "prefer-stable": true, - "require": { - "jquery/timepicker": "1.14.0", - "jquery/textcounter": "0.9.1", - "drupal/address": "^2.0", - "drupal/allowed_formats": "^2.0", - "drupal/better_exposed_filters": "^6.0", - "drupal/clamav": "2.0.2-rc1", - "drupal/config_ignore": "^2.4", - "drupal/config_perms": "2.x-dev@dev", - "drupal/config_split": "^2.0", - "drupal/config_update": "^2.0@alpha", - "drupal/core": "10.5.2", - "drupal/core-recommended": "10.5.2", - "drupal/monitoring": "^1.13", - "drupal/ckeditor_templates": "dev-feature/d10-compatible-with-ck5-support", - "drupal/ctools": "^3.14", - "drupal/diff": "^1.1", - "drupal/editor_advanced_link": "2.3.1", - "drupal/entity_browser": "^2.9", - "drupal/entity_reference_revisions": "^1.10", - "drupal/entity_embed": "1.7", - "drupal/environment_indicator": "^4.0", - "drupal/fast_404": "^3.0", - "drupal/field_group": "^3.6", - "drupal/google_analytics": "^4.0", - "drupal/hotjar": "^3.1", - "drupal/linkit": "^7.0", - "drupal/login_redirect_per_role": "^1.9", - "drupal/m4032404": "^1.0-alpha4", - "drupal/maxlength": "^2.1", - "drupal/entity_hierarchy": "4.x", - "drupal/elasticsearch_connector": "^7.0", - "drupal/search_api": "^1.36", - "drupal/data_pipelines": "^2.2", - "drupal/data_pipelines_elasticsearch-data_pipelines_elasticsearch": "^1.0", - "drupal/key": "^1.17", - "drupal/media_entity_audio": "^3.1", - "drupal/metatag": "^2.0", - "drupal/override_node_options": "^2.7", - "drupal/paragraphs": "1.19", - "drupal/password_policy": "^4.0", - "drupal/password_strength": "^2.0@beta", - "drupal/pathauto": "^1.11", - "drupal/prlp": "^1.10", - "drupal/redirect": "^1.8", - "drupal/real_aes": "^2.5", - "drupal/role_delegation": "^1.2", - "drupal/seckit": "^2.0", - "drupal/simple_oauth": "^5.2", - "drupal/simple_sitemap": "^4.1", - "drupal/smart_trim": "^2.0", - "drupal/smtp": "^1.2", - "drupal/stage_file_proxy": "^2.0", - "drupal/tablefield": "2.4", - "drupal/tfa": "1.9", - "drupal/tfa_email_otp": "^1.0@beta", - "drupal/token_conditions": "dev-compatible-with-d10", - "drupal/token_filter": "^2.0", - "drupal/twig_field_value": "^2.0", - "drupal/views_data_export": "1.3", - "drupal/views_menu_children_filter": "^3.0@RC", - "drupal/viewsreference": "^2.0@beta", - "drupal/workbench": "^1.4", - "drupal/dynamic_entity_reference": "^3.0", - "drupal/scheduled_transitions": "2.5", - "drupal/link_field_autocomplete_filter": "^2.0", - "drupal/queue_mail": "^1.5", - "drupal/token": "1.16", - "drupal/user_created_by_field": "^1.1", - "drupal/username_enumeration_prevention": "^1.3", - "drupal/quick_node_clone": "^1.16", - "drupal/content_lock": "^2.3", - "drupal/inline_entity_form": "^1.0@RC", - "drupal/private_files_download_permission": "^3.1", - "drupal/jquery_ui_touch_punch": "^1.1", - "drupal/admin_audit_trail": "^1.0", - "drupal/block_inactive_users": "^2.1", - "drupal/user_expire": "^2.1", - "drupal/field_permissions": "^1.2", - "lesstif/php-jira-rest-client": "2.6.0", - "drupal/jira_rest": "^4.0@beta", - "drupal/yaml_content": "^1.0@alpha", - "drupal/ckeditor5_embedded_content": "1.0.1", - "respect/validation": "2.3.1", - "giggsey/libphonenumber-for-php": "^8.13", - "drupal/site_alert": "^1.3", - "drupal/migrate_source_ui": "^1.0", - "drupal/migrate_file": "^2.0", - "drupal/select2": "^1.7", - "oomphinc/composer-installers-extender": "^2.0", - "select2/select2": "^4.0", - "npm-asset/select2": "^4.0", - "lcobucci/clock": "3.2.0", - "drupal/form_options_attributes": "^2.0", - "drupal/term_reference_tree": "^2.0", - "drupal/embed": "^1.6", - "drupal/focal_point": "^2.0", - "drupal/svg_image": "^3.0", - "drupal/video_embed_field": "2.5", - "drupal/entity_usage": "^2.0@beta", - "drupal/crop": "^2.3", - "drupal/migrate_plus": "6.0.2", - "drupal/migrate_tools": "^6.0", - "drupal/range": "^1.5", - "drupal/jsonapi_extras": "^3.23", - "drupal/jsonapi_menu_items": "^1.2", - "drupal/jsonapi_resources": "^1.0.0-beta5@beta", - "drupal/schemata": "^1.0@beta", - "drupal/create_menus_permission": "dev-drupal_10_compatibility", - "drupal/key_value_field": "^1.3", - "drupal/webform": "^6.3@beta", - "choices/choices": "9.0.1", - "codemirror/codemirror": "5.65.12", - "jquery/inputmask": "5.0.8", - "jquery/intl-tel-input": "17.0.19", - "progress-tracker/progress-tracker": "2.0.7", - "drupal/shield": "^1.8", - "drupal/media_alias_display": "^2.1", - "drupal/search_api_exclude_entity": "^3.0", - "drupal/default_paragraphs": "^2.0" + "name": "dpc-sdp/tide_core", + "description": "Core functionality for Tide distribution", + "type": "drupal-module", + "license": "GPL-2.0-or-later", + "minimum-stability": "dev", + "prefer-stable": true, + "require": { + "jquery/timepicker": "1.14.0", + "jquery/textcounter": "0.9.1", + "drupal/address": "^2.0", + "drupal/allowed_formats": "^3.0.1", + "drupal/better_exposed_filters": "^7.1.1", + "drupal/clamav": "^2.1.0", + "drupal/config_ignore": "^3.3", + "drupal/config_perms": "2.x-dev@dev", + "drupal/config_split": "^2.0", + "drupal/config_update": "^2.0@alpha", + "drupal/jquery_ui_slider": "^2.1.0", + "drupal/jquery_ui_datepicker": "^2.1.1", + "drupal/core": "11.x", + "drupal/upgrade_status": "^4.3", + "drupal/core-recommended": "11.x", + "drupal/monitoring": "^1.13", + "drupal/ckeditor_templates": "^2.0", + "drupal/ctools": "^4.1.0", + "drupal/diff": "^1.1", + "drupal/editor_advanced_link": "2.3.1", + "drupal/entity_browser": "^2.9", + "drupal/entity_reference_revisions": "^1.10", + "drupal/entity_embed": "1.7", + "drupal/environment_indicator": "^4.0", + "drupal/fast_404": "^3.0", + "drupal/field_group": "^3.6", + "drupal/google_analytics": "^4.0", + "drupal/hotjar": "^4.0.2", + "drupal/linkit": "^7.0", + "drupal/login_redirect_per_role": "^1.9", + "drupal/m4032404": "^2.0.3", + "drupal/maxlength": "^3.1.3", + "drupal/entity_hierarchy": "^3.3.14", + "drupal/elasticsearch_connector": "^7.0", + "drupal/search_api": "^1.36", + "drupal/data_pipelines": "^2.2", + "drupal/data_pipelines_elasticsearch-data_pipelines_elasticsearch": "^1.0", + "drupal/key": "^1.17", + "drupal/media_entity_audio": "^3.1", + "drupal/metatag": "^2.0", + "drupal/override_node_options": "^2.7", + "drupal/paragraphs": "^1.19", + "drupal/password_policy": "^4.0", + "drupal/password_strength": "^2.0@beta", + "drupal/pathauto": "^1.11", + "drupal/prlp": "^2.0.1", + "drupal/redirect": "^1.8", + "drupal/real_aes": "^2.5", + "drupal/role_delegation": "^1.2", + "drupal/seckit": "^2.0", + "drupal/simple_oauth": "^6.1.0", + "drupal/simple_sitemap": "^4.1", + "drupal/smart_trim": "^2.0", + "drupal/smtp": "^1.2", + "drupal/stage_file_proxy": "^3.1.6", + "drupal/tablefield": "^3.0", + "drupal/tfa": "1.9", + "drupal/tfa_email_otp": "^1.0@beta", + "drupal/token_conditions": "^11.0", + "drupal/token_filter": "^2.0", + "drupal/twig_field_value": "^2.0", + "drupal/views_data_export": "^1.8", + "drupal/views_menu_children_filter": "^4.2", + "drupal/viewsreference": "^2.0@beta", + "drupal/config_filter": "^2.7", + "drupal/workbench": "^1.4", + "drupal/dynamic_entity_reference": "^3.0", + "drupal/scheduled_transitions": "2.5", + "drupal/link_field_autocomplete_filter": "^2.0", + "drupal/queue_mail": "^1.5", + "drupal/token": "^1.15", + "drupal/user_created_by_field": "dev-project-update-bot-only as 1.1.3", + "drupal/ckeditor5_embedded_content": "dev-3567622-upgrade-for-d11 as 2.0.2", + "drupal/embedded_content": "^2.0.3", + "drupal/username_enumeration_prevention": "^1.3", + "drupal/quick_node_clone": "^1.16", + "drupal/content_lock": "^3.0", + "drupal/inline_entity_form": "^3.0", + "drupal/private_files_download_permission": "^3.1", + "drupal/jquery_ui_touch_punch": "^1.1", + "drupal/admin_audit_trail": "^1.0", + "drupal/block_inactive_users": "^2.1", + "drupal/user_expire": "^2.1", + "drupal/field_permissions": "^1.2", + "drupal/jira_rest": "dev-3431131-automated-drupal-11 as 4.0.0-beta3", + "drupal/yaml_content": "dev-3435777-automated-drupal-11 as 1.0.0-alpha9", + "respect/validation": "2.3.1", + "giggsey/libphonenumber-for-php": "^8.13", + "drupal/site_alert": "^1.3", + "drupal/migrate_source_ui": "^1.0", + "drupal/migrate_file": "^3.0", + "drupal/select2": "^2.0", + "oomphinc/composer-installers-extender": "^2.0", + "select2/select2": "^4.0", + "npm-asset/select2": "^4.0", + "lcobucci/clock": "3.2.0", + "drupal/form_options_attributes": "^2.0", + "drupal/term_reference_tree": "^2.0", + "drupal/embed": "^1.6", + "drupal/focal_point": "^2.0", + "drupal/svg_image": "^3.0", + "drupal/video_embed_field": "^3.0", + "drupal/entity_usage": "^2.0@beta", + "drupal/crop": "^2.3", + "drupal/migrate_plus": "6.0.2", + "drupal/migrate_tools": "^6.0", + "drupal/range": "^1.5", + "drupal/jsonapi_extras": "^3.23", + "drupal/jsonapi_menu_items": "^1.2", + "drupal/jsonapi_resources": "^1.0.0-beta5@beta", + "drupal/schemata": "^1.0@beta", + "drupal/create_menus_permission": "^1.1", + "drupal/key_value_field": "^1.3", + "drupal/webform": "^6.3@beta", + "choices/choices": "9.0.1", + "codemirror/codemirror": "5.65.12", + "jquery/inputmask": "5.0.8", + "jquery/intl-tel-input": "17.0.19", + "progress-tracker/progress-tracker": "2.0.7", + "drupal/shield": "^1.8", + "drupal/media_alias_display": "^2.1", + "drupal/search_api_exclude_entity": "^3.0", + "drupal/default_paragraphs": "^2.0" + }, + "repositories": { + "drupal": { + "type": "composer", + "url": "https://packages.drupal.org/8", + "exclude": ["drupal/token_conditions", "drupal/user_created_by_field", "drupal/yaml_content","drupal/ckeditor5_embedded_content","drupal/jira_rest"] }, - "repositories": { - "drupal": { - "type": "composer", - "url": "https://packages.drupal.org/8", - "exclude": ["drupal/token_conditions", "drupal/ckeditor_templates", "drupal/create_menus_permission"] + "choices": { + "_webform": true, + "type": "package", + "package": { + "name": "choices/choices", + "version": "9.0.1", + "type": "drupal-library", + "extra": { + "installer-name": "choices" }, - "choices": { - "_webform": true, - "type": "package", - "package": { - "name": "choices/choices", - "version": "9.0.1", - "type": "drupal-library", - "extra": { - "installer-name": "choices" - }, - "dist": { - "url": "https://github.com/jshjohnson/Choices/archive/v9.0.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "dist": { + "url": "https://github.com/jshjohnson/Choices/archive/v9.0.1.zip", + "type": "zip" }, - "codemirror": { - "_webform": true, - "type": "package", - "package": { - "name": "codemirror/codemirror", - "version": "5.65.12", - "type": "drupal-library", - "extra": { - "installer-name": "codemirror" - }, - "dist": { - "url": "https://github.com/components/codemirror/archive/5.65.12.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } - }, - "jquery.inputmask": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/inputmask", - "version": "5.0.8", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.inputmask" - }, - "dist": { - "url": "https://github.com/RobinHerbots/jquery.inputmask/archive/5.0.8.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "require": { + "composer/installers": "~1.0" + } + } + }, + "codemirror": { + "_webform": true, + "type": "package", + "package": { + "name": "codemirror/codemirror", + "version": "5.65.12", + "type": "drupal-library", + "extra": { + "installer-name": "codemirror" }, - "jquery.intl-tel-input": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/intl-tel-input", - "version": "17.0.19", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.intl-tel-input" - }, - "dist": { - "url": "https://github.com/jackocnr/intl-tel-input/archive/v17.0.19.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "dist": { + "url": "https://github.com/components/codemirror/archive/5.65.12.zip", + "type": "zip" }, - "progress-tracker": { - "_webform": true, - "type": "package", - "package": { - "name": "progress-tracker/progress-tracker", - "version": "2.0.7", - "type": "drupal-library", - "extra": { - "installer-name": "progress-tracker" - }, - "dist": { - "url": "https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "require": { + "composer/installers": "~1.0" + } + } + }, + "jquery.inputmask": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/inputmask", + "version": "5.0.8", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.inputmask" }, - "asset-packagist": { - "type": "composer", - "url": "https://asset-packagist.org" + "dist": { + "url": "https://github.com/RobinHerbots/jquery.inputmask/archive/5.0.8.zip", + "type": "zip" }, - "drupal/create_menus_permission": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/create_menus_permission.git" + "require": { + "composer/installers": "~1.0" + } + } + }, + "jquery.intl-tel-input": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/intl-tel-input", + "version": "17.0.19", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.intl-tel-input" }, - "ckeditor.autogrow": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/autogrow", - "version": "4.16.1", - "type": "drupal-library", - "dist": { - "url": "https://download.ckeditor.com/autogrow/releases/autogrow_4.16.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "dist": { + "url": "https://github.com/jackocnr/intl-tel-input/archive/v17.0.19.zip", + "type": "zip" }, - "ckeditor.codemirror": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/codemirror", - "version": "v1.17.12", - "type": "drupal-library", - "dist": { - "url": "https://github.com/w8tcha/CKEditor-CodeMirror-Plugin/releases/download/v1.17.12/CKEditor-CodeMirror-Plugin.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "require": { + "composer/installers": "~1.0" + } + } + }, + "progress-tracker": { + "_webform": true, + "type": "package", + "package": { + "name": "progress-tracker/progress-tracker", + "version": "2.0.7", + "type": "drupal-library", + "extra": { + "installer-name": "progress-tracker" }, - "ckeditor.image": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/image", - "version": "4.16.1", - "type": "drupal-library", - "dist": { - "url": "https://download.ckeditor.com/image/releases/image_4.16.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "dist": { + "url": "https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip", + "type": "zip" }, - "ckeditor.link": { - "_webform": true, - "type": "package", - "package": { - "name": "ckeditor/link", - "version": "4.16.1", - "type": "drupal-library", - "dist": { - "url": "https://download.ckeditor.com/link/releases/link_4.16.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "require": { + "composer/installers": "~1.0" + } + } + }, + "asset-packagist": { + "type": "composer", + "url": "https://asset-packagist.org" + }, + "ckeditor.autogrow": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/autogrow", + "version": "4.16.1", + "type": "drupal-library", + "dist": { + "url": "https://download.ckeditor.com/autogrow/releases/autogrow_4.16.1.zip", + "type": "zip" }, - "jquery.timepicker": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/timepicker", - "version": "1.14.0", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.timepicker" - }, - "dist": { - "url": "https://github.com/jonthornton/jquery-timepicker/archive/refs/tags/1.14.0.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "require": { + "composer/installers": "~1.0" + } + } + }, + "ckeditor.codemirror": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/codemirror", + "version": "v1.17.12", + "type": "drupal-library", + "dist": { + "url": "https://github.com/w8tcha/CKEditor-CodeMirror-Plugin/releases/download/v1.17.12/CKEditor-CodeMirror-Plugin.zip", + "type": "zip" }, - "jquery.textcounter": { - "_webform": true, - "type": "package", - "package": { - "name": "jquery/textcounter", - "version": "0.9.1", - "type": "drupal-library", - "extra": { - "installer-name": "jquery.textcounter" - }, - "dist": { - "url": "https://github.com/ractoon/jQuery-Text-Counter/archive/0.9.1.zip", - "type": "zip" - }, - "require": { - "composer/installers": "~1.0" - } - } + "require": { + "composer/installers": "~1.0" + } + } + }, + "ckeditor.image": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/image", + "version": "4.16.1", + "type": "drupal-library", + "dist": { + "url": "https://download.ckeditor.com/image/releases/image_4.16.1.zip", + "type": "zip" }, - "drupal/token_conditions": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/token_conditions.git", - "exclude": [ - "dev-1.x", - "1.x-dev" - ] + "require": { + "composer/installers": "~1.0" + } + } + }, + "ckeditor.link": { + "_webform": true, + "type": "package", + "package": { + "name": "ckeditor/link", + "version": "4.16.1", + "type": "drupal-library", + "dist": { + "url": "https://download.ckeditor.com/link/releases/link_4.16.1.zip", + "type": "zip" }, - "drupal/ckeditor_templates": { - "type": "vcs", - "no-api": true, - "url": "https://github.com/dpc-sdp/ckeditor_templates.git" + "require": { + "composer/installers": "~1.0" } + } }, - "extra": { - "patches": { - "drupal/admin_audit_trail": { - "Add an option to allow logging in CLI - https://www.drupal.org/project/admin_audit_trail/issues/3263615#comment-16412890": "https://www.drupal.org/files/issues/2026-01-15/3263615-admin_audit_trail-option-for-cli-10.patch" - }, - "drupal/core": { - "Refactor Xss::attributes() to allow filtering of style attribute values - https://www.drupal.org/project/drupal/issues/3109650#comment-16166063": "https://www.drupal.org/files/issues/2025-06-26/xss-refactor-filter-attributes-10.5.x-3109650-85.patch", - "PathBasedBreadcrumbBuilder needs to be able to exclude pointless paths - https://www.drupal.org/project/drupal/issues/3344200": "https://www.drupal.org/files/issues/2024-06-26/3344200-17.patch", - "Add a 'machine_name' widget for string field types with a UniqueField constraint - https://www.drupal.org/project/drupal/issues/2685749#comment-15361693": "https://www.drupal.org/files/issues/2024-06-21/machine-name-widget-2685749-140.patch", - "Paragraphs fields cause overflow of content forms in Claro-https://www.drupal.org/project/drupal/issues/3145188": "https://www.drupal.org/files/issues/2023-01-25/3145188-37_0.patch", - "Form Required Class Missing from Claro - https://www.drupal.org/project/drupal/issues/3160987#comment-14609681": "https://www.drupal.org/files/issues/2022-07-17/3160987-10.patch", - "DateTimeComputed tries to compute from an empty value - https://www.drupal.org/project/drupal/issues/3052608#comment-14666671": "https://www.drupal.org/files/issues/2022-08-25/DateTimeComputed-tries-to-compute-from-an-empty-value-3052608-16.patch", - "Querying with NULL values results in warning mb_strtolower() - https://www.drupal.org/project/drupal/issues/3302838": "https://www.drupal.org/files/issues/2022-08-23/3302838-13.patch", - "ModuleHandler skips all hook implementations when invoked before the module files have been loaded - https://www.drupal.org/project/drupal/issues/3207813": "https://www.drupal.org/files/issues/2022-06-21/3207813-15.patch", - "Add filter by input field to Menu UI - https://www.drupal.org/project/drupal/issues/3170906#comment-16107432": "https://www.drupal.org/files/issues/2025-05-14/menu-filter.patch", - "Issue with HTML ` ` not being correctly filtered out from URLs - https://www.drupal.org/project/drupal/issues/3445910#comment-15586313": "https://www.drupal.org/files/issues/2024-08-06/drupal_core_non-breaking_space_issue_3445910_27_0.patch", - "Menu content is not accessible via jsonapi - https://www.drupal.org/node/2915792": "https://www.drupal.org/files/issues/menu_link_content-view-permissions-2915792.patch", - "Revisions on relations are not loaded correctly resulting in wrong data in includes - https://www.drupal.org/project/drupal/issues/3088239#comment-15519702": "https://www.drupal.org/files/issues/2024-03-25/3088239-50.patch" - }, - "drupal/video_embed_field": { - "Add support for Ckeditor 5 - https://www.drupal.org/project/video_embed_field/issues/3311063": "./patches/video_embed_field/video_embed_field_6.patch" - }, - "drupal/migrate_plus": { - "Simple XML broken with UTF-16LE - https://www.drupal.org/project/migrate_plus/issues/3051858#comment-15138496": "https://www.drupal.org/files/issues/2023-07-06/3051858-migrate_plus-simplexml_remove_trim-5.patch" - }, - "drupal/yaml_content": { - "Alter parsed values before nodes created. - https://www.drupal.org/project/yaml_content/issues/3261689#comment-15167530": "https://www.drupal.org/files/issues/2023-07-27/yaml_content-3261689_4.patch", - "Warnings when importing menus using module. - https://www.drupal.org/project/yaml_content/issues/3340448": "https://www.drupal.org/files/issues/2023-07-28/warnings-when-importing_3340448_7.patch" - }, - "drupal/token": { - "Summary token not fully handled in fields - https://www.drupal.org/project/token/issues/2924873#comment-15704936": "https://www.drupal.org/files/issues/2024-07-30/tokens_body_with_summary-2924873-18.patch" - }, - "drupal/field_group": { - "Nested groups render on other entity forms (or when fields are inaccessible) when they shouldn't: https://www.drupal.org/project/field_group/issues/3098550#comment-15712652": "https://www.drupal.org/files/issues/2024-08-05/3098550-19.patch", - "Tabs with invalid input are not focused - https://www.drupal.org/project/field_group/issues/2894351#comment-15712685": "https://www.drupal.org/files/issues/2024-08-05/2894351-32.patch" - }, - "drupal/jira_rest": { - "Automated Drupal 10 compatibility fixes - https://www.drupal.org/project/jira_rest/issues/3288088#comment-14567776": "https://www.drupal.org/files/issues/2022-06-16/jira_rest.4.x-dev.rector.patch" - }, - "drupal/webform": { - "Exporting webform submission as batch does not allowed for extended field due to static method - https://www.drupal.org/project/webform/issues/3348336#comment-16202432": "https://www.drupal.org/files/issues/2025-07-23/exporting-webform-submission-static-batch-process-3348336-9.patch" - }, - "drupal/password_policy": { - "Add password validation to the user entity as a constraint - https://www.drupal.org/project/password_policy/issues/2941526#comment-14938934": "https://www.drupal.org/files/issues/2023-02-24/password_policy-move-password-validation-to-user-entity-2941526-10.patch" - }, - "drupal/simple_oauth": { - "access:false even though permission is checked for the role - https://www.drupal.org/project/simple_oauth/issues/2958159#comment-13847450": "https://www.drupal.org/files/issues/2020-10-05/simple_oauth-refresh_token_authenticated_missing_scope-2958159-4.patch", - "Allow to add multiple redirect uri for a single client - https://www.drupal.org/project/simple_oauth/issues/3331436": "https://git.drupalcode.org/project/simple_oauth/-/merge_requests/87.patch" - }, - "drupal/tablefield": { - "[UX] Add the ability to hide or disable the import CSV option - https://www.drupal.org/project/tablefield/issues/2337743": "https://www.drupal.org/files/issues/2020-11-11/tablefield-allowed_data_sources-2337743-16.patch" - }, - "drupal/search_api": { - "Provide drush support to index a specific entity - https://www.drupal.org/project/search_api/issues/3016809": "https://www.drupal.org/files/issues/2024-11-25/search_api-index-specific-items-3016809-10.patch" - }, - "drupal/key": { - "KeyProviderInterface::getKeyValue() doesn't always return a string - https://www.drupal.org/project/key/issues/3356052#comment-16093356": "https://www.drupal.org/files/issues/2025-05-02/key_3356052_11.patch" - }, - "drupal/data_pipelines": { - "Add data-pipelines:reindex-all Drush command to reindex all datasets at once - https://www.drupal.org/project/data_pipelines/issues/3540691": "https://www.drupal.org/files/issues/2025-08-11/3228246-add-reindex-all-drush-command.patch", - "Drush data-pipelines:reindex interact hook uses wrong argument name (machine_name vs machine_names) - https://www.drupal.org/project/data_pipelines/issues/3541050#comment-16226016": "https://www.drupal.org/files/issues/2025-08-12/3541050-machine-names-argument-mismatch.patch", - "data_pipelines_update_8017 fails with `SQLSTATE[01000]: Data truncated` when updating entity keys and adding field - https://www.drupal.org/project/data_pipelines/issues/3560388#comment-16363758": "https://www.drupal.org/files/issues/2025-11-28/data_pipelines-3560388-2.patch" - }, - "drupal/data_pipelines_elasticsearch-data_pipelines_elasticsearch": { - "Complete the fix for bulk indexing on Elasticsearch endpoint - https://www.drupal.org/project/data_pipelines_elasticsearch/issues/3540879": "https://www.drupal.org/files/issues/2025-08-12/3511558-Change-bulk-deleting-on-Elasticsearch-endpoint.patch", - "False positive mappings defined at top level error triggered unconditionally in ElasticSearchDatasetPipeline constructor - https://www.drupal.org/project/data_pipelines_elasticsearch/issues/3541059#comment-16226097": "https://www.drupal.org/files/issues/2025-08-13/3541059-fix-elasticsearch-mapping-warning-in-constructor.patch" - }, - "drupal/paragraphs": { - "Add default paragraph count setting - https://www.drupal.org/project/paragraphs/issues/3089423#comment-14517270": "https://www.drupal.org/files/issues/2022-05-17/paragraphs-default-quantity-3089423-18.patch", - "Nested paragraphs title gets cut off - https://www.drupal.org/project/paragraphs/issues/3246140#comment-14698713": "https://www.drupal.org/files/issues/2022-09-20/3246140-11-fix_paragraph_title_cutoff.patch", - "Paragraph with long label name gets cut off -https://www.drupal.org/project/paragraphs/issues/3350521#comment-14984824": "https://www.drupal.org/files/issues/2023-03-27/paragraph-long-label-cut-off-3350521-2.patch", - "Dropbutton RHS highlight covers adjacent text - https://www.drupal.org/project/paragraphs/issues/3350747#comment-14986371": "https://www.drupal.org/files/issues/2023-03-28/paragraph-dropdown-button-obscure-text-2.patch" - }, - "drupal/content_lock": { - "Altering timeout message - https://www.drupal.org/project/content_lock/issues/3214877#comment-14108752": "https://www.drupal.org/files/issues/2021-05-20/content_lock_3214877_3.patch", - "Fatal error 'Truncated incorrect DOUBLE value' on MySQL 8 when deleting config entities": "https://www.drupal.org/files/issues/2026-02-03/content_lock-3571174_2.patch" - }, - "drupal/site_alert": { - "Use HTTP GET to allow caching of AJAX request-3160200/Add ability to dismiss alert-3156557": "https://git.drupalcode.org/project/site_alert/-/merge_requests/3.patch" - }, - "drupal/views_data_export": { - "Batch mode does not allow other modules to alter query - https://www.drupal.org/project/views_data_export/issues/3173296#comment-14930767": "https://www.drupal.org/files/issues/2023-02-20/views_data_export-3173296-25.patch", - "Support views data export using drush - https://www.drupal.org/project/views_data_export/issues/2887450#comment-15199879": "https://www.drupal.org/files/issues/2023-11-29/vde-drush-with-output-location-2887450-91.patch" - }, - "drupal/jsonapi_extras": { - "Make max value of page[limit] configurable per entity/bundle - https://www.drupal.org/project/jsonapi_extras/issues/2884292#comment-14794882": "https://www.drupal.org/files/issues/2022-11-21/max_page_limit_configuration-2884292-33.patch" - }, - "drupal/jsonapi_menu_items": { - "Allow filtering of response payload - https://www.drupal.org/project/jsonapi_menu_items/issues/3350524#comment-16132264": "https://www.drupal.org/files/issues/2025-06-03/3350524-filter_fields-8.patch" - }, - "drupal/linkit": { - "Unpublished nodes not included even when option is selected - https://www.drupal.org/project/linkit/issues/3049946#comment-14953079": "https://www.drupal.org/files/issues/2023-03-06/linkit-unpublished-nodes-not-included-3049946-32.patch" - }, - "drupal/tfa": { - "Force user to setup TFA when required and there are no remaining skips - https://www.drupal.org/project/tfa/issues/3223327#comment-15468410": "https://www.drupal.org/files/issues/2024-02-29/DD-1756-force-tfa-user-setup-3223327-38.patch", - "TfaLoginController enforces opaque form expiration - https://www.drupal.org/project/tfa/issues/3390083#comment-15753259": "https://www.drupal.org/files/issues/2024-09-02/3390083-3.patch" - }, - "drupal/elasticsearch_connector": { - "Allow dashes in index name": "https://gist.githubusercontent.com/nicksantamaria/95677ffa87a9e1433bfc27c3ebdefd35/raw/68d6eb055150d1e99ad6f0da49d68a6a4c2d6348/elasticsearch_connector-dashed-index.patch" - }, - "drupal/select2": { - "remove Drag to re-order entity_type description": "https://www.drupal.org/files/issues/2023-09-08/select2-remove-drag-to-reorder-description-3178287-11.patch" - }, - "drupal/redirect": { - "Latest version of Redirect module failed to run updates. - https://www.drupal.org/project/redirect/issues/3543872#comment-16363797": "https://www.drupal.org/files/issues/2025-11-28/redirect-3543872-15.patch" - }, - "drupal/consumers": { - "Entity update still required after update to 1.23": "https://www.drupal.org/files/issues/2026-01-27/drupal-consumers-3569150_07.patch" - } - }, - "installer-paths": { - "docroot/libraries/{$name}": [ - "type:drupal-library", - "type:bower-asset", - "type:npm-asset" - ] + "jquery.timepicker": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/timepicker", + "version": "1.14.0", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.timepicker" }, - "installer-types": ["bower-asset", "npm-asset"] + "dist": { + "url": "https://github.com/jonthornton/jquery-timepicker/archive/refs/tags/1.14.0.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } + } }, - "config": { - "allow-plugins": { - "composer/installers": true, - "oomphinc/composer-installers-extender": true + "jquery.textcounter": { + "_webform": true, + "type": "package", + "package": { + "name": "jquery/textcounter", + "version": "0.9.1", + "type": "drupal-library", + "extra": { + "installer-name": "jquery.textcounter" }, - "audit": { - "block-insecure": false + "dist": { + "url": "https://github.com/ractoon/jQuery-Text-Counter/archive/0.9.1.zip", + "type": "zip" + }, + "require": { + "composer/installers": "~1.0" + } } + }, + "drupal/token_conditions": { + "type": "vcs", + "no-api": true, + "url": "https://github.com/dpc-sdp/token_conditions.git" + }, + "drupal/user_created_by_field": { + "type": "vcs", + "no-api": true, + "url": "https://git.drupalcode.org/issue/user_created_by_field-3435263.git" + }, + "drupal/yaml_content": { + "type": "vcs", + "no-api": true, + "url": "https://git.drupalcode.org/issue/yaml_content-3435777.git" + }, + "drupal/ckeditor5_embedded_content": { + "type": "vcs", + "no-api": true, + "url": "https://git.drupalcode.org/issue/ckeditor5_embedded_content-3567622.git" + }, + "drupal/jira_rest": { + "no-api": true, + "type": "vcs", + "url": "https://git.drupalcode.org/issue/jira_rest-3431131.git" + } + }, + "extra": { + "patches": { + "drupal/core": { + "Refactor Xss::attributes() to allow filtering of style attribute values - https://www.drupal.org/project/drupal/issues/3109650#comment-16166063": "https://www.drupal.org/files/issues/2025-06-26/xss-refactor-filter-attributes-10.5.x-3109650-85.patch", + "Add a 'machine_name' widget for string field types with a UniqueField constraint - https://www.drupal.org/project/drupal/issues/2685749#comment-15361693": "https://www.drupal.org/files/issues/2025-10-02/machine-name-widget-2685749-149.patch", + "Paragraphs fields cause overflow of content forms in Claro-https://www.drupal.org/project/drupal/issues/3145188": "https://www.drupal.org/files/issues/2023-01-25/3145188-37_0.patch", + "DateTimeComputed tries to compute from an empty value - https://www.drupal.org/project/drupal/issues/3052608#comment-14666671": "https://www.drupal.org/files/issues/2022-08-25/DateTimeComputed-tries-to-compute-from-an-empty-value-3052608-16.patch", + "Querying with NULL values results in warning mb_strtolower() - https://www.drupal.org/project/drupal/issues/3302838": "https://www.drupal.org/files/issues/2022-08-23/3302838-13.patch", + "Add filter by input field to Menu UI - https://www.drupal.org/project/drupal/issues/3170906#comment-16107432": "https://www.drupal.org/files/issues/2025-05-14/menu-filter.patch", + "Issue with HTML ` ` not being correctly filtered out from URLs - https://www.drupal.org/project/drupal/issues/3445910#comment-15586313": "https://www.drupal.org/files/issues/2024-08-06/drupal_core_non-breaking_space_issue_3445910_27_0.patch", + "Menu content is not accessible via jsonapi - https://www.drupal.org/node/2915792": "https://www.drupal.org/files/issues/menu_link_content-view-permissions-2915792.patch", + "Revisions on relations are not loaded correctly resulting in wrong data in includes - https://www.drupal.org/project/drupal/issues/3088239#comment-15519702": "https://git.drupalcode.org/project/drupal/-/merge_requests/6055/diffs.patch" + }, + "drupal/token": { + "Summary token not fully handled in fields - https://www.drupal.org/project/token/issues/2924873#comment-15704936": "https://www.drupal.org/files/issues/2026-01-19/token_body_with_summary-2924873-22.patch" + }, + "drupal/admin_audit_trail": { + "Add an option to allow logging in CLI - https://www.drupal.org/project/admin_audit_trail/issues/3263615#comment-16351387": "https://www.drupal.org/files/issues/2026-01-15/3263615-admin_audit_trail-option-for-cli-10.patch" + }, + "drupal/migrate_plus": { + "Simple XML broken with UTF-16LE - https://www.drupal.org/project/migrate_plus/issues/3051858#comment-15138496": "https://www.drupal.org/files/issues/2023-07-06/3051858-migrate_plus-simplexml_remove_trim-5.patch" + }, + "drupal/yaml_content": { + "Alter parsed values before nodes created. - https://www.drupal.org/project/yaml_content/issues/3261689#comment-15167530": "https://www.drupal.org/files/issues/2023-07-27/yaml_content-3261689_4.patch", + "Warnings when importing menus using module. - https://www.drupal.org/project/yaml_content/issues/3340448": "https://www.drupal.org/files/issues/2023-07-28/warnings-when-importing_3340448_7.patch" + }, + "drupal/field_group": { + "Nested groups render on other entity forms (or when fields are inaccessible) when they shouldn't: https://www.drupal.org/project/field_group/issues/3098550#comment-15712652": "https://www.drupal.org/files/issues/2024-08-05/3098550-19.patch", + "Tabs with invalid input are not focused - https://www.drupal.org/project/field_group/issues/2894351#comment-15712685": "https://www.drupal.org/files/issues/2024-08-05/2894351-32.patch" + }, + "drupal/jira_rest": { + "Automated Drupal 10 compatibility fixes - https://www.drupal.org/project/jira_rest/issues/3288088#comment-14567776": "https://www.drupal.org/files/issues/2022-06-16/jira_rest.4.x-dev.rector.patch" + }, + "drupal/webform": { + "Exporting webform submission as batch does not allowed for extended field due to static method - https://www.drupal.org/project/webform/issues/3348336#comment-16202432": "https://www.drupal.org/files/issues/2025-07-23/exporting-webform-submission-static-batch-process-3348336-9.patch" + }, + "drupal/password_policy": { + "Add password validation to the user entity as a constraint - https://www.drupal.org/project/password_policy/issues/2941526#comment-16412969": "https://www.drupal.org/files/issues/2026-01-15/password_policy-move-password-validation-to-user-entity-2941526-12.patch" + }, + "drupal/search_api": { + "Provide drush support to index a specific entity - https://www.drupal.org/project/search_api/issues/3016809": "https://www.drupal.org/files/issues/2024-11-25/search_api-index-specific-items-3016809-10.patch" + }, + "drupal/key": { + "KeyProviderInterface::getKeyValue() doesn't always return a string - https://www.drupal.org/project/key/issues/3356052#comment-16093356": "https://www.drupal.org/files/issues/2025-05-02/key_3356052_11.patch" + }, + "drupal/data_pipelines": { + "Add data-pipelines:reindex-all Drush command to reindex all datasets at once - https://www.drupal.org/project/data_pipelines/issues/3540691": "https://www.drupal.org/files/issues/2025-08-11/3228246-add-reindex-all-drush-command.patch", + "Drush data-pipelines:reindex interact hook uses wrong argument name (machine_name vs machine_names) - https://www.drupal.org/project/data_pipelines/issues/3541050#comment-16226016": "https://www.drupal.org/files/issues/2025-08-12/3541050-machine-names-argument-mismatch.patch", + "data_pipelines_update_8017 fails with `SQLSTATE[01000]: Data truncated` when updating entity keys and adding field - https://www.drupal.org/project/data_pipelines/issues/3560388#comment-16363758": "https://www.drupal.org/files/issues/2025-11-28/data_pipelines-3560388-2.patch" + }, + "drupal/data_pipelines_elasticsearch-data_pipelines_elasticsearch": { + "Complete the fix for bulk indexing on Elasticsearch endpoint - https://www.drupal.org/project/data_pipelines_elasticsearch/issues/3540879": "https://www.drupal.org/files/issues/2025-08-12/3511558-Change-bulk-deleting-on-Elasticsearch-endpoint.patch", + "False positive mappings defined at top level error triggered unconditionally in ElasticSearchDatasetPipeline constructor - https://www.drupal.org/project/data_pipelines_elasticsearch/issues/3541059#comment-16226097": "https://www.drupal.org/files/issues/2025-08-13/3541059-fix-elasticsearch-mapping-warning-in-constructor.patch" + }, + "drupal/paragraphs": { + "Add default paragraph count setting - https://www.drupal.org/project/paragraphs/issues/3089423#comment-14517270": "https://www.drupal.org/files/issues/2022-05-17/paragraphs-default-quantity-3089423-18.patch" + }, + "drupal/site_alert": { + "Use HTTP GET to allow caching of AJAX request-3160200/Add ability to dismiss alert-3156557": "https://git.drupalcode.org/project/site_alert/-/merge_requests/3.patch" + }, + "drupal/views_data_export": { + "Batch mode does not allow other modules to alter query - https://www.drupal.org/project/views_data_export/issues/3173296#comment-16456090": "https://www.drupal.org/files/issues/2026-02-05/views_data_export-3173296-45.patch" + }, + "drupal/jsonapi_extras": { + "Make max value of page[limit] configurable per entity/bundle - https://www.drupal.org/project/jsonapi_extras/issues/2884292#comment-14794882": "https://www.drupal.org/files/issues/2022-11-21/max_page_limit_configuration-2884292-33.patch" + }, + "drupal/jsonapi_menu_items": { + "Allow filtering of response payload - https://www.drupal.org/project/jsonapi_menu_items/issues/3350524#comment-16132264": "https://www.drupal.org/files/issues/2025-06-03/3350524-filter_fields-8.patch" + }, + "drupal/linkit": { + "Unpublished nodes not included even when option is selected - https://www.drupal.org/project/linkit/issues/3049946#comment-14953079": "https://www.drupal.org/files/issues/2023-03-06/linkit-unpublished-nodes-not-included-3049946-32.patch" + }, + "drupal/tfa": { + "Force user to setup TFA when required and there are no remaining skips - https://www.drupal.org/project/tfa/issues/3223327#comment-15468410": "https://www.drupal.org/files/issues/2024-02-29/DD-1756-force-tfa-user-setup-3223327-38.patch", + "TfaLoginController enforces opaque form expiration - https://www.drupal.org/project/tfa/issues/3390083#comment-15753259": "https://www.drupal.org/files/issues/2024-09-02/3390083-3.patch" + }, + "drupal/elasticsearch_connector": { + "Allow dashes in index name": "https://gist.githubusercontent.com/vincent-gao/f2ba31f6b1dfa51874136621f3625fc7/raw/28079f32294cb3fd239d4c6417ac97dc46531fea/elasticsearch_connector-dashed-index.patch" + }, + "drupal/redirect": { + "Latest version of Redirect module failed to run updates. - https://www.drupal.org/project/redirect/issues/3543872#comment-16363797": "https://www.drupal.org/files/issues/2025-11-28/redirect-3543872-15.patch" + }, + "drupal/simple_oauth": { + "5.2.x -> 6.0.0 upgrade error. - https://www.drupal.org/project/simple_oauth/issues/3512143#comment-16467241": "https://www.drupal.org/files/issues/2026-02-12/simple_oauth-3512143-23.patch" + }, + "drupal/content_lock": { + "Fatal error 'Truncated incorrect DOUBLE value' on MySQL 8 when deleting config entities": "https://www.drupal.org/files/issues/2026-02-12/content_lock-3571174-3.patch" + } + }, + "installer-paths": { + "docroot/libraries/{$name}": [ + "type:drupal-library", + "type:bower-asset", + "type:npm-asset" + ] + }, + "installer-types": ["bower-asset", "npm-asset"] + }, + "config": { + "allow-plugins": { + "composer/installers": true, + "oomphinc/composer-installers-extender": true, + "drupal/core-composer-scaffold": true, + "tbachert/spi": true + }, + "audit": { + "block-insecure": false } + } } diff --git a/config/install/ckeditor_templates.ckeditor_templates.blockquote.yml b/config/install/ckeditor_templates.ckeditor_templates.blockquote.yml index 6c4b163e4..46691d43c 100644 --- a/config/install/ckeditor_templates.ckeditor_templates.blockquote.yml +++ b/config/install/ckeditor_templates.ckeditor_templates.blockquote.yml @@ -5,9 +5,12 @@ id: blockquote label: Blockquote description: 'Blockquote with 2 lines of caption' thumb: { } -code: "
\r\n

Berios sim destrum facientota nis ex eost aut prae vendis explam aliquis dolorpo rrorem reptaep elenis net.

\r\n\r\n
Her Excellency the Honourable Linda Dessau AC
\r\nGovernor of Victoria
\r\n
\r\n" +code: + value: '

Berios sim destrum facientota nis ex eost aut prae vendis explam aliquis dolorpo rrorem reptaep elenis net.

Her Excellency the Honourable Linda Dessau AC
Governor of Victoria
' + format: rich_text formats: rich_text: rich_text summary_text: summary_text admin_text: admin_text weight: 0 +thumb_alternative: '' diff --git a/config/install/ckeditor_templates.ckeditor_templates.primary_button.yml b/config/install/ckeditor_templates.ckeditor_templates.primary_button.yml index a8a6671dc..c7b6820cf 100644 --- a/config/install/ckeditor_templates.ckeditor_templates.primary_button.yml +++ b/config/install/ckeditor_templates.ckeditor_templates.primary_button.yml @@ -5,9 +5,12 @@ id: primary_button label: 'Primary Button' description: '' thumb: { } -code: '

Primary button text

' +code: + value: '

Primary button text

' + format: rich_text formats: rich_text: rich_text summary_text: summary_text admin_text: admin_text weight: 1 +thumb_alternative: '' diff --git a/config/install/ckeditor_templates.ckeditor_templates.secondary_button.yml b/config/install/ckeditor_templates.ckeditor_templates.secondary_button.yml index 77609b6e8..eb9f13dc2 100644 --- a/config/install/ckeditor_templates.ckeditor_templates.secondary_button.yml +++ b/config/install/ckeditor_templates.ckeditor_templates.secondary_button.yml @@ -5,9 +5,12 @@ id: secondary_button label: 'Secondary Button' description: '' thumb: { } -code: '

Secondary button text

' +code: + value: '

Secondary button text

' + format: rich_text formats: rich_text: rich_text summary_text: summary_text admin_text: admin_text weight: 2 +thumb_alternative: '' diff --git a/config/install/editor.editor.admin_text.yml b/config/install/editor.editor.admin_text.yml index b5bebc070..b6d6dae39 100644 --- a/config/install/editor.editor.admin_text.yml +++ b/config/install/editor.editor.admin_text.yml @@ -80,8 +80,9 @@ settings: - '' - '

' ckeditor5_list: - reversed: false - startIndex: true + properties: + reversed: false + startIndex: true ckeditor5_alignment: enabled_alignments: - left @@ -102,7 +103,7 @@ image_upload: status: false scheme: public directory: inline-images - max_size: '' + max_size: '10MB' max_dimensions: width: null height: null diff --git a/config/install/editor.editor.rich_text.yml b/config/install/editor.editor.rich_text.yml index 5c83004c8..4c7038ecf 100644 --- a/config/install/editor.editor.rich_text.yml +++ b/config/install/editor.editor.rich_text.yml @@ -15,8 +15,6 @@ settings: - strikethrough - style - superscript - - Callout - - embeddedContent - tide_media - ckeditorTemplates - subscript @@ -94,8 +92,9 @@ settings: - '' - '

' ckeditor5_list: - reversed: true - startIndex: true + properties: + reversed: true + startIndex: true ckeditor5_alignment: enabled_alignments: - left @@ -108,7 +107,7 @@ image_upload: status: true scheme: public directory: inline-images - max_size: '' + max_size: '10MB' max_dimensions: width: null height: null diff --git a/config/install/editor.editor.summary_text.yml b/config/install/editor.editor.summary_text.yml index 5c141929e..8cd200353 100644 --- a/config/install/editor.editor.summary_text.yml +++ b/config/install/editor.editor.summary_text.yml @@ -56,8 +56,9 @@ settings: - '

' - '

' ckeditor5_list: - reversed: false - startIndex: true + properties: + reversed: false + startIndex: true ckeditor5_alignment: enabled_alignments: - left @@ -78,7 +79,7 @@ image_upload: status: true scheme: public directory: inline-images - max_size: '' + max_size: '10MB' max_dimensions: width: null height: null diff --git a/config/install/field.storage.block_content.body.yml b/config/install/field.storage.block_content.body.yml new file mode 100644 index 000000000..f7c504d04 --- /dev/null +++ b/config/install/field.storage.block_content.body.yml @@ -0,0 +1,18 @@ +langcode: en +status: true +dependencies: + module: + - block_content + - text +id: block_content.body +field_name: body +entity_type: block_content +type: text_with_summary +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: true +custom_storage: false diff --git a/config/install/field.storage.node.body.yml b/config/install/field.storage.node.body.yml new file mode 100644 index 000000000..73edd1666 --- /dev/null +++ b/config/install/field.storage.node.body.yml @@ -0,0 +1,18 @@ +langcode: en +status: true +dependencies: + module: + - node + - text +id: node.body +field_name: body +entity_type: node +type: text_with_summary +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: true +custom_storage: false diff --git a/config/install/filter.format.rich_text.yml b/config/install/filter.format.rich_text.yml index 0237b62d1..1f87aa4e6 100644 --- a/config/install/filter.format.rich_text.yml +++ b/config/install/filter.format.rich_text.yml @@ -2,7 +2,6 @@ langcode: en status: true dependencies: module: - - ckeditor5_embedded_content - editor - entity_embed - linkit @@ -90,9 +89,3 @@ filters: weight: -48 settings: title: true - ckeditor5_embedded_content: - id: ckeditor5_embedded_content - provider: ckeditor5_embedded_content - status: true - weight: 100 - settings: { } diff --git a/config/install/views.view.tide_media_browser.yml b/config/install/views.view.tide_media_browser.yml index f1e2c92c9..597bcc9b5 100644 --- a/config/install/views.view.tide_media_browser.yml +++ b/config/install/views.view.tide_media_browser.yml @@ -918,72 +918,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - filemime_1: - id: filemime_1 - table: file_managed - field: filemime - relationship: field_secure_file_target_id - group_type: group - admin_label: '' - entity_type: file - entity_field: filemime - plugin_id: field - label: 'File MIME type' - exclude: true - 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: file_filemime - settings: - link_to_file: false - filemime_image: 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 thumbnail__target_id: id: thumbnail__target_id table: media_field_data @@ -1455,15 +1389,6 @@ display: admin_label: File plugin_id: standard required: false - field_secure_file_target_id: - id: field_secure_file_target_id - table: media__field_secure_file - field: field_secure_file_target_id - relationship: none - group_type: group - admin_label: 'file from field_secure_file' - plugin_id: standard - required: false display_description: '' display_extenders: { } cache_metadata: @@ -2651,72 +2576,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - filemime_1: - id: filemime_1 - table: file_managed - field: filemime - relationship: field_secure_file_target_id - group_type: group - admin_label: '' - entity_type: file - entity_field: filemime - plugin_id: field - label: 'File MIME type' - exclude: true - 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: file_filemime - settings: - link_to_file: false - filemime_image: 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 thumbnail__target_id: id: thumbnail__target_id table: media_field_data @@ -3062,15 +2921,6 @@ display: admin_label: File plugin_id: standard required: false - field_secure_file_target_id: - id: field_secure_file_target_id - table: media__field_secure_file - field: field_secure_file_target_id - relationship: none - group_type: group - admin_label: 'file from field_secure_file' - plugin_id: standard - required: false display_description: '' display_extenders: { } cache_metadata: diff --git a/config/optional/views.view.media.yml b/config/optional/views.view.media.yml index dca4d6f0f..81f7b5162 100644 --- a/config/optional/views.view.media.yml +++ b/config/optional/views.view.media.yml @@ -90,72 +90,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - filemime_1: - id: filemime_1 - table: file_managed - field: filemime - relationship: field_secure_file_target_id - group_type: group - admin_label: '' - entity_type: file - entity_field: filemime - plugin_id: field - label: 'File MIME type' - exclude: true - 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: file_filemime - settings: - link_to_file: false - filemime_image: 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 thumbnail__target_id: id: thumbnail__target_id table: media_field_data @@ -967,15 +901,6 @@ display: admin_label: 'file from field_media_file' plugin_id: standard required: false - field_secure_file_target_id: - id: field_secure_file_target_id - table: media__field_secure_file - field: field_secure_file_target_id - relationship: none - group_type: group - admin_label: 'file from field_secure_file' - plugin_id: standard - required: false header: { } footer: { } display_extenders: { } diff --git a/docker-compose.yml b/docker-compose.yml index 5ea841ded..3e07d3b04 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,6 @@ # - Using a single file to work in local, CI and production environments. # - Local overrides are possible using docker-composer.override.yml file. # - Use inline comments starting with ### to have the line removed in CI. -version: '2.3' x-bay-image-version: &bay-image-version ${BAY_IMAGE_VERSION:-6.x} @@ -110,16 +109,16 @@ services: lagoon.name: nginx-php mariadb: - image: "ghcr.io/dpc-sdp/bay/mariadb:${BAY_IMAGE_VERSION:-6.x}" + image: "uselagoon/mariadb-10.6-drupal:latest" environment: << : *default-environment ports: - - "3306" # Find port on host with `ahoy info` or `docker-compose port mariadb 3306` + - "3306" # Find port on host with `ahoy info` or `docker-compose port mariadb 3306` labels: lagoon.type: mariadb-shared redis: - image: amazeeio/redis + image: uselagoon/redis-5:latest labels: lagoon.type: redis diff --git a/modules/tide_alert/tide_alert.info.yml b/modules/tide_alert/tide_alert.info.yml index 843ef0641..a15c020c1 100644 --- a/modules/tide_alert/tide_alert.info.yml +++ b/modules/tide_alert/tide_alert.info.yml @@ -2,7 +2,7 @@ name: Tide Alert type: module description: 'Provides Alert content type and related configuration. ' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:menu_ui - tide_core:tide_core diff --git a/modules/tide_api/modules/tide_content_collection/tests/modules/tide_content_collection_test/tide_content_collection_test.info.yml b/modules/tide_api/modules/tide_content_collection/tests/modules/tide_content_collection_test/tide_content_collection_test.info.yml index e34c3967d..faf51d97d 100644 --- a/modules/tide_api/modules/tide_content_collection/tests/modules/tide_content_collection_test/tide_content_collection_test.info.yml +++ b/modules/tide_api/modules/tide_content_collection/tests/modules/tide_content_collection_test/tide_content_collection_test.info.yml @@ -5,5 +5,5 @@ package: Testing dependencies: - tide_content_collection:tide_content_collection - tide_test:tide_test -core_version_requirement: ^8.8 || ^9 +core_version_requirement: ^10.5 || ^11 hidden: true diff --git a/modules/tide_api/modules/tide_content_collection/tide_content_collection.info.yml b/modules/tide_api/modules/tide_content_collection/tide_content_collection.info.yml index 5ed2a172c..f70a007a2 100644 --- a/modules/tide_api/modules/tide_content_collection/tide_content_collection.info.yml +++ b/modules/tide_api/modules/tide_content_collection/tide_content_collection.info.yml @@ -2,7 +2,7 @@ name: Tide Content Collection type: module description: 'Provides automated content collection component for Tide Drupal 10 distribution.' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_core - dpc-sdp:tide_api diff --git a/modules/tide_api/modules/tide_share_link/src/Controller/ShareLinkTokenResource.php b/modules/tide_api/modules/tide_share_link/src/Controller/ShareLinkTokenResource.php index 160375fda..25b19644d 100644 --- a/modules/tide_api/modules/tide_share_link/src/Controller/ShareLinkTokenResource.php +++ b/modules/tide_api/modules/tide_share_link/src/Controller/ShareLinkTokenResource.php @@ -7,7 +7,7 @@ use Drupal\jsonapi\ResourceType\ResourceType; use Drupal\node\NodeInterface; use Drupal\tide_share_link\Entity\ShareLinkTokenInterface; -use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Psr\Container\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -19,7 +19,17 @@ */ class ShareLinkTokenResource extends EntityResource { - use ContainerAwareTrait; + /** + * The service container. + */ + protected ContainerInterface $container; + + /** + * Sets the service container. + */ + public function setContainer(ContainerInterface $container): void { + $this->container = $container; + } /** * Gets the individual Share Link Token. diff --git a/modules/tide_api/modules/tide_share_link/tide_share_link.info.yml b/modules/tide_api/modules/tide_share_link/tide_share_link.info.yml index e8c693e3b..649155457 100644 --- a/modules/tide_api/modules/tide_share_link/tide_share_link.info.yml +++ b/modules/tide_api/modules/tide_share_link/tide_share_link.info.yml @@ -2,7 +2,7 @@ name: Tide Share Link description: Provides functionality to share non-published content to anyone. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:node - entity_reference_revisions:entity_reference_revisions diff --git a/modules/tide_api/tide_api.info.yml b/modules/tide_api/tide_api.info.yml index 4027fafd0..1032ca071 100644 --- a/modules/tide_api/tide_api.info.yml +++ b/modules/tide_api/tide_api.info.yml @@ -2,7 +2,7 @@ name: 'Tide API' description: 'Content API functionality.' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:jsonapi_extras (>=8.x-3.8) - drupal:jsonapi_menu_items (^1.2) diff --git a/modules/tide_block_inactive_users/tide_block_inactive_users.info.yml b/modules/tide_block_inactive_users/tide_block_inactive_users.info.yml index d385186a7..5aa3fdeaa 100644 --- a/modules/tide_block_inactive_users/tide_block_inactive_users.info.yml +++ b/modules/tide_block_inactive_users/tide_block_inactive_users.info.yml @@ -2,7 +2,7 @@ name: Tide Block Inactive Users type: module package: Tide description: An extension of block_inactive_users module. -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 configure: tide_block_inactive_users.block_user_settings dependencies: - tide_core:tide_core diff --git a/modules/tide_ckeditor/modules/ckeditor_tablecol_resize/ckeditor_tablecol_resize.info.yml b/modules/tide_ckeditor/modules/ckeditor_tablecol_resize/ckeditor_tablecol_resize.info.yml index 7c02589bf..a8c846a72 100644 --- a/modules/tide_ckeditor/modules/ckeditor_tablecol_resize/ckeditor_tablecol_resize.info.yml +++ b/modules/tide_ckeditor/modules/ckeditor_tablecol_resize/ckeditor_tablecol_resize.info.yml @@ -2,6 +2,6 @@ name: Ckeditor Table Column Resize type: module description: Provides a ckeditor5 plugin that allows resizing of table columns package: Custom -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:tide_ckeditor diff --git a/modules/tide_ckeditor/src/Plugin/EmbeddedContent/TideIframe.php b/modules/tide_ckeditor/src/Plugin/EmbeddedContent/TideIframe.php index f888c654f..b39ff6436 100644 --- a/modules/tide_ckeditor/src/Plugin/EmbeddedContent/TideIframe.php +++ b/modules/tide_ckeditor/src/Plugin/EmbeddedContent/TideIframe.php @@ -2,10 +2,10 @@ namespace Drupal\tide_ckeditor\Plugin\EmbeddedContent; -use Drupal\ckeditor5_embedded_content\EmbeddedContentInterface; -use Drupal\ckeditor5_embedded_content\EmbeddedContentPluginBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\embedded_content\EmbeddedContentInterface; +use Drupal\embedded_content\EmbeddedContentPluginBase; /** * Plugin iframes. @@ -18,6 +18,13 @@ */ class TideIframe extends EmbeddedContentPluginBase implements EmbeddedContentInterface { + /** + * {@inheritdoc} + */ + public function isInline(): bool { + return FALSE; + } + use StringTranslationTrait; /** diff --git a/modules/tide_ckeditor/tide_ckeditor.info.yml b/modules/tide_ckeditor/tide_ckeditor.info.yml index d54d5289d..55a9b34ef 100644 --- a/modules/tide_ckeditor/tide_ckeditor.info.yml +++ b/modules/tide_ckeditor/tide_ckeditor.info.yml @@ -2,7 +2,7 @@ name: Tide CKEDITOR5 Module type: module description: "Tide CKEDITOR5 Module" package: CKEditor 5 -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:ckeditor5 - - ckeditor5_embedded_content:ckeditor5_embedded_content + - embedded_content:embedded_content diff --git a/modules/tide_cms_support/tide_cms_support.info.yml b/modules/tide_cms_support/tide_cms_support.info.yml index 8a6756a68..b6c772960 100644 --- a/modules/tide_cms_support/tide_cms_support.info.yml +++ b/modules/tide_cms_support/tide_cms_support.info.yml @@ -2,4 +2,4 @@ name: Tide CMS Support description: Tide CMS Support Related Content. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 diff --git a/modules/tide_dashboard/tide_dashboard.info.yml b/modules/tide_dashboard/tide_dashboard.info.yml index 84b24d6dd..160292985 100644 --- a/modules/tide_dashboard/tide_dashboard.info.yml +++ b/modules/tide_dashboard/tide_dashboard.info.yml @@ -2,7 +2,7 @@ name: Tide Dashboard description: Provides Dashboard for Tide distro. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - admin_toolbar:admin_toolbar - admin_toolbar:admin_toolbar_tools diff --git a/modules/tide_data_driven_component/tide_data_driven_component.info.yml b/modules/tide_data_driven_component/tide_data_driven_component.info.yml index d2ba6b867..4c15c80a6 100644 --- a/modules/tide_data_driven_component/tide_data_driven_component.info.yml +++ b/modules/tide_data_driven_component/tide_data_driven_component.info.yml @@ -2,7 +2,7 @@ name: Data Driven Component type: module description: 'Data Driven Component content type and related configuration for Tide Drupal 8 distribution.' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_landing_page - dpc-sdp:tide_api diff --git a/modules/tide_data_driven_component/tide_data_driven_component.install b/modules/tide_data_driven_component/tide_data_driven_component.install index 5939542b6..824eb1918 100644 --- a/modules/tide_data_driven_component/tide_data_driven_component.install +++ b/modules/tide_data_driven_component/tide_data_driven_component.install @@ -9,7 +9,7 @@ * Adds json text area field to data driven component. */ function tide_data_driven_component_update_10001() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $config_location = [\Drupal::service('extension.list.module')->getPath('tide_data_driven_component') . '/config/install']; $configs = [ diff --git a/modules/tide_demo_content/tide_demo_content.info.yml b/modules/tide_demo_content/tide_demo_content.info.yml index b788b1450..d086da29b 100644 --- a/modules/tide_demo_content/tide_demo_content.info.yml +++ b/modules/tide_demo_content/tide_demo_content.info.yml @@ -2,7 +2,7 @@ name: Tide Demo Content type: module description: Create demo content for Tide modules. package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:content_moderation - drupal:yaml_content diff --git a/modules/tide_edit_protection/tide_edit_protection.info.yml b/modules/tide_edit_protection/tide_edit_protection.info.yml index 521e7d3da..b5bfac954 100644 --- a/modules/tide_edit_protection/tide_edit_protection.info.yml +++ b/modules/tide_edit_protection/tide_edit_protection.info.yml @@ -1,7 +1,7 @@ name: Tide edit protection type: module description: Extends Node Edit Protection module to provide custom functions -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 package: tide dependencies: - tide_site:tide_site diff --git a/modules/tide_edit_protection/tide_edit_protection.module b/modules/tide_edit_protection/tide_edit_protection.module index 715c377e5..f53abfee9 100644 --- a/modules/tide_edit_protection/tide_edit_protection.module +++ b/modules/tide_edit_protection/tide_edit_protection.module @@ -179,5 +179,5 @@ function tide_edit_protection_preprocess_status_messages(&$variables) { */ function tide_edit_protection_entity_predelete(EntityInterface $entity) { \Drupal::service('content_lock') - ->release($entity->id(), LanguageInterface::LANGCODE_NOT_SPECIFIED); + ->release($entity, LanguageInterface::LANGCODE_NOT_SPECIFIED); } diff --git a/modules/tide_event/tide_event.info.yml b/modules/tide_event/tide_event.info.yml index 945e93be8..f3d48e39b 100644 --- a/modules/tide_event/tide_event.info.yml +++ b/modules/tide_event/tide_event.info.yml @@ -2,7 +2,7 @@ name: Tide Event description: 'Provides Event content type and related configuration. ' type: module package: Tide -core_version_requirement: ^9.5 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:datetime_range - drupal:menu_ui diff --git a/modules/tide_grant/tide_grant.info.yml b/modules/tide_grant/tide_grant.info.yml index b7aa4b2c4..87a73d666 100644 --- a/modules/tide_grant/tide_grant.info.yml +++ b/modules/tide_grant/tide_grant.info.yml @@ -2,7 +2,7 @@ name: Tide Grant type: module description: 'Provides Grant content type and related configuration. ' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - tide_api:tide_api - tide_core:tide_core diff --git a/modules/tide_jira/tide_jira.info.yml b/modules/tide_jira/tide_jira.info.yml index b7c50ecea..ab5e0cb0f 100644 --- a/modules/tide_jira/tide_jira.info.yml +++ b/modules/tide_jira/tide_jira.info.yml @@ -1,7 +1,7 @@ name: Tide Jira type: module description: Tide Jira integration -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 package: tide dependencies: - jira_rest:jira_rest diff --git a/modules/tide_landing_page/tide_landing_page.info.yml b/modules/tide_landing_page/tide_landing_page.info.yml index 7ef9f3ca5..1f03cb9fe 100644 --- a/modules/tide_landing_page/tide_landing_page.info.yml +++ b/modules/tide_landing_page/tide_landing_page.info.yml @@ -2,7 +2,7 @@ name: Tide Landing Page description: 'Provides Landing Page content type and related configuration. ' type: module package: Tide -core_version_requirement: ^9.5 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:datetime - drupal:datetime_range diff --git a/modules/tide_landing_page/tide_landing_page.install b/modules/tide_landing_page/tide_landing_page.install index f045b135e..05ebebda6 100644 --- a/modules/tide_landing_page/tide_landing_page.install +++ b/modules/tide_landing_page/tide_landing_page.install @@ -100,7 +100,7 @@ function tide_landing_page_update_10102() { * Remove style option field from call to action component. */ function tide_landing_page_update_10103() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $config_location = [\Drupal::service('extension.list.module')->getPath('tide_landing_page') . '/config/install']; // Delete field configuration manually. $field_names = ['field_paragraph_cta_style']; @@ -133,7 +133,7 @@ function tide_landing_page_update_10103() { * Change weight of paragraph types. */ function tide_landing_page_update_10104() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $config_location = [\Drupal::service('extension.list.module')->getPath('tide_landing_page') . '/config/install']; $config = 'field.field.node.landing_page.field_landing_page_component'; // Read only from /config/install. diff --git a/modules/tide_media/modules/tide_media_file_overwrite/tide_media_file_overwrite.info.yml b/modules/tide_media/modules/tide_media_file_overwrite/tide_media_file_overwrite.info.yml index 40c975d0a..52a30216f 100644 --- a/modules/tide_media/modules/tide_media_file_overwrite/tide_media_file_overwrite.info.yml +++ b/modules/tide_media/modules/tide_media_file_overwrite/tide_media_file_overwrite.info.yml @@ -2,7 +2,7 @@ name: 'Tide Media File Overwrite' description: 'Gives the author option to overwrite file, and keeping the same filename when upload.' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_core - dpc-sdp:tide_media diff --git a/modules/tide_media/modules/tide_media_secure_files/tide_media_secure_files.info.yml b/modules/tide_media/modules/tide_media_secure_files/tide_media_secure_files.info.yml index 2ae618b32..6992b82bb 100644 --- a/modules/tide_media/modules/tide_media_secure_files/tide_media_secure_files.info.yml +++ b/modules/tide_media/modules/tide_media_secure_files/tide_media_secure_files.info.yml @@ -2,7 +2,7 @@ name: 'Tide Media Secure Files' description: 'Gives the author option to create secure files.' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_core - dpc-sdp:tide_media diff --git a/modules/tide_media/tide_media.info.yml b/modules/tide_media/tide_media.info.yml index 264491688..9167112cf 100644 --- a/modules/tide_media/tide_media.info.yml +++ b/modules/tide_media/tide_media.info.yml @@ -2,7 +2,7 @@ name: Tide Media description: 'Provides Media and related configuration. ' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - crop:crop - drupal:field diff --git a/modules/tide_media/tide_media.module b/modules/tide_media/tide_media.module index 1a36ba83c..70dc67f79 100644 --- a/modules/tide_media/tide_media.module +++ b/modules/tide_media/tide_media.module @@ -14,8 +14,10 @@ use Drupal\Core\Field\WidgetBase; use Drupal\Core\File\FileSystemInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Link; +use Drupal\Core\StringTranslation\ByteSizeMarkup; use Drupal\Core\Url; use Drupal\file\FileInterface; +use Drupal\file\IconMimeTypes; use Drupal\views\ViewExecutable; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -186,10 +188,10 @@ function tide_media_preprocess_file_link(&$variables) { } $description = $variables['description']; - $file_size = format_size($file->getSize()); + $file_size = ByteSizeMarkup::create($file->getSize()); $mime_type = $file->getMimeType(); - $mime_category = file_icon_class($mime_type); + $mime_category = IconMimeTypes::getIconClass($mime_type); switch ($mime_category) { case 'application-pdf': $file_type = 'PDF'; diff --git a/modules/tide_migration/tide_migration.info.yml b/modules/tide_migration/tide_migration.info.yml index 6aab42a0d..69c6ff977 100644 --- a/modules/tide_migration/tide_migration.info.yml +++ b/modules/tide_migration/tide_migration.info.yml @@ -1,7 +1,7 @@ name: Tide Migrations type: module description: The Tide Migration module provides the functionality to import content from various sources to SDP sites. -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 package: tide_migration dependencies: - migrate_plus:migrate_plus diff --git a/modules/tide_news/tide_news.info.yml b/modules/tide_news/tide_news.info.yml index 9bc706747..b0e169c71 100644 --- a/modules/tide_news/tide_news.info.yml +++ b/modules/tide_news/tide_news.info.yml @@ -2,7 +2,7 @@ name: Tide News description: 'Provides News content type and related configuration. ' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:field - drupal:menu_ui diff --git a/modules/tide_oauth/src/PageCache/DisallowXSimpleOauthRequests.php b/modules/tide_oauth/src/PageCache/DisallowXSimpleOauthRequests.php index eb8b7da69..ebb49a74f 100644 --- a/modules/tide_oauth/src/PageCache/DisallowXSimpleOauthRequests.php +++ b/modules/tide_oauth/src/PageCache/DisallowXSimpleOauthRequests.php @@ -21,7 +21,7 @@ class DisallowXSimpleOauthRequests extends DisallowSimpleOauthRequests { /** * {@inheritdoc} */ - public function isOauth2Request(Request $request) { + public function isOauth2Request(Request $request): bool { $is_oauth2_requests = parent::isOauth2Request($request); if ($is_oauth2_requests) { return TRUE; diff --git a/modules/tide_oauth/tide_oauth.info.yml b/modules/tide_oauth/tide_oauth.info.yml index d1ac9804f..e48f52606 100644 --- a/modules/tide_oauth/tide_oauth.info.yml +++ b/modules/tide_oauth/tide_oauth.info.yml @@ -2,7 +2,7 @@ name: Tide Simple OAuth description: Provides Simple OAuth for Tide. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - consumers:consumers - simple_oauth:simple_oauth diff --git a/modules/tide_oauth/tide_oauth.services.yml b/modules/tide_oauth/tide_oauth.services.yml index 3e82b7e8a..7416029e9 100644 --- a/modules/tide_oauth/tide_oauth.services.yml +++ b/modules/tide_oauth/tide_oauth.services.yml @@ -2,9 +2,15 @@ services: tide_oauth.authentication.x_simple_oauth: class: Drupal\tide_oauth\Authentication\Provider\XSimpleOauthAuthenticationProvider arguments: - - '@simple_oauth.server.resource_server' + - '@simple_oauth.server.resource_server.factory' - '@entity_type.manager' - '@tide_oauth.page_cache_request_policy.disallow_x_oauth2_token_requests' + - '@psr7.http_message_factory' + - '@psr7.http_foundation_factory' + - '@path.validator' + - '@router.route_provider' + - '@request_stack' + - '@permission_checker' tags: - { name: authentication_provider, provider_id: tide_oauth2, global: TRUE, priority: 35 } tide_oauth.page_cache_request_policy.disallow_x_oauth2_token_requests: diff --git a/modules/tide_paragraphs_enhanced_modal/tide_paragraphs_enhanced_modal.info.yml b/modules/tide_paragraphs_enhanced_modal/tide_paragraphs_enhanced_modal.info.yml index 7a026fe6c..68e76bf1c 100644 --- a/modules/tide_paragraphs_enhanced_modal/tide_paragraphs_enhanced_modal.info.yml +++ b/modules/tide_paragraphs_enhanced_modal/tide_paragraphs_enhanced_modal.info.yml @@ -2,7 +2,7 @@ name: Tide Paragraphs Enhanced Modal description: Provides enhancements for modal dialog of paragraph widget. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - paragraphs:paragraphs config_devel: diff --git a/modules/tide_profile/tide_profile.info.yml b/modules/tide_profile/tide_profile.info.yml index 00d85af35..7ac1c9716 100644 --- a/modules/tide_profile/tide_profile.info.yml +++ b/modules/tide_profile/tide_profile.info.yml @@ -2,7 +2,7 @@ name: Tide Profile type: module description: 'Provides Profile content type and related configuration. ' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - tide_core:tide_core - tide_landing_page:tide_landing_page diff --git a/modules/tide_publication/src/Controller/PublicationResource.php b/modules/tide_publication/src/Controller/PublicationResource.php index 609acfe60..c12c99228 100644 --- a/modules/tide_publication/src/Controller/PublicationResource.php +++ b/modules/tide_publication/src/Controller/PublicationResource.php @@ -17,7 +17,7 @@ use Drupal\jsonapi\JsonApiResource\LinkCollection; use Drupal\jsonapi\Routing\Routes; use Drupal\taxonomy\TermInterface; -use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Psr\Container\ContainerInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; @@ -27,7 +27,19 @@ * @package Drupal\tide_publication\Controller */ class PublicationResource extends EntityResource { - use ContainerAwareTrait; + + + /** + * The service container. + */ + protected ContainerInterface $container; + + /** + * Sets the service container. + */ + public function setContainer(ContainerInterface $container): void { + $this->container = $container; + } /** * The NestedSetStorageFactory service. diff --git a/modules/tide_publication/tide_publication.info.yml b/modules/tide_publication/tide_publication.info.yml index 5835c84c6..d86ee6e5e 100644 --- a/modules/tide_publication/tide_publication.info.yml +++ b/modules/tide_publication/tide_publication.info.yml @@ -2,7 +2,7 @@ name: Tide Publication type: module description: 'Provides Publication content type and related configuration. ' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - tide_core:tide_landing_page - tide_core:tide_media diff --git a/modules/tide_search/modules/tide_data_pipeline/tests/modules/tide_data_pipelines_test/tide_data_pipelines_test.info.yml b/modules/tide_search/modules/tide_data_pipeline/tests/modules/tide_data_pipelines_test/tide_data_pipelines_test.info.yml index f7e218bd0..a8987a7ea 100644 --- a/modules/tide_search/modules/tide_data_pipeline/tests/modules/tide_data_pipelines_test/tide_data_pipelines_test.info.yml +++ b/modules/tide_search/modules/tide_data_pipeline/tests/modules/tide_data_pipelines_test/tide_data_pipelines_test.info.yml @@ -1,7 +1,7 @@ name: Data Pipelines - Test Pipelines package: Testing description: 'Provides tests data set plugins' -core_version_requirement: ^10.1 +core_version_requirement: ^10.5 || ^11 php: 8.0 type: module dependencies: diff --git a/modules/tide_search/modules/tide_data_pipeline/tide_data_pipeline.info.yml b/modules/tide_search/modules/tide_data_pipeline/tide_data_pipeline.info.yml index 09a4aeafe..5fc40cb26 100644 --- a/modules/tide_search/modules/tide_data_pipeline/tide_data_pipeline.info.yml +++ b/modules/tide_search/modules/tide_data_pipeline/tide_data_pipeline.info.yml @@ -1,7 +1,7 @@ name: Tide Data Pipeline type: module description: Data pipeline for SDP -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 package: data_pipelines dependencies: - data_pipelines:data_pipelines diff --git a/modules/tide_search/tide_search.info.yml b/modules/tide_search/tide_search.info.yml index 8b6492193..157e863e3 100644 --- a/modules/tide_search/tide_search.info.yml +++ b/modules/tide_search/tide_search.info.yml @@ -2,7 +2,7 @@ name: Tide Search description: 'Provides Search and related configuration.' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - elasticsearch_connector:elasticsearch_connector - tide_core:tide_core diff --git a/modules/tide_search/tide_search.install b/modules/tide_search/tide_search.install index 7b0cc1e29..37d49bbdb 100644 --- a/modules/tide_search/tide_search.install +++ b/modules/tide_search/tide_search.install @@ -74,7 +74,7 @@ function tide_search_update_10002() { * Adds field_above_results_content field to search listing. */ function tide_search_update_10003() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $config_location = [\Drupal::service('extension.list.module')->getPath('tide_search') . '/config/optional']; $configs = [ diff --git a/modules/tide_site/modules/tide_site_preview/tide_site_preview.info.yml b/modules/tide_site/modules/tide_site_preview/tide_site_preview.info.yml index 030094a5a..1729f83c2 100644 --- a/modules/tide_site/modules/tide_site_preview/tide_site_preview.info.yml +++ b/modules/tide_site/modules/tide_site_preview/tide_site_preview.info.yml @@ -2,7 +2,7 @@ name: 'Tide Site - Preview links' description: Provides frontend preview links for content managed with Tide Site. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_site - dpc-sdp:tide_api diff --git a/modules/tide_site/modules/tide_site_simple_sitemap/tide_site_simple_sitemap.info.yml b/modules/tide_site/modules/tide_site_simple_sitemap/tide_site_simple_sitemap.info.yml index 30115b77b..aad2aa7d5 100644 --- a/modules/tide_site/modules/tide_site_simple_sitemap/tide_site_simple_sitemap.info.yml +++ b/modules/tide_site/modules/tide_site_simple_sitemap/tide_site_simple_sitemap.info.yml @@ -2,7 +2,7 @@ name: 'Tide Site - Simple Sitemap' description: 'Functionality to extend Simple Sitemap with support of multiple sites.' type: module package: Tide -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_site - simple_sitemap:simple_sitemap diff --git a/modules/tide_site/modules/tide_site_theming/tide_site_theming.info.yml b/modules/tide_site/modules/tide_site_theming/tide_site_theming.info.yml index aa5eda36f..aa32a0a1f 100644 --- a/modules/tide_site/modules/tide_site_theming/tide_site_theming.info.yml +++ b/modules/tide_site/modules/tide_site_theming/tide_site_theming.info.yml @@ -2,7 +2,7 @@ name: 'Tide Site Theming' description: 'Functionality to apply theming to ripple front end.' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_site - key_value_field:key_value_field diff --git a/modules/tide_site/src/AliasManager.php b/modules/tide_site/src/AliasManager.php index 7bd15d762..b1caa3ddc 100644 --- a/modules/tide_site/src/AliasManager.php +++ b/modules/tide_site/src/AliasManager.php @@ -6,8 +6,8 @@ use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Language\LanguageManagerInterface; use Drupal\path_alias\AliasManager as CoreAliasManager; +use Drupal\path_alias\AliasPrefixListInterface; use Drupal\path_alias\AliasRepositoryInterface; -use Drupal\path_alias\AliasWhitelistInterface; /** * Class alias manager. @@ -26,7 +26,7 @@ class AliasManager extends CoreAliasManager { /** * {@inheritdoc} */ - public function __construct(AliasRepositoryInterface $repository, AliasWhitelistInterface $whitelist, LanguageManagerInterface $language_manager, CacheBackendInterface $cache, protected ?TimeInterface $time, AliasStorageHelper $alias_helper) { + public function __construct(AliasRepositoryInterface $repository, AliasPrefixListInterface $whitelist, LanguageManagerInterface $language_manager, CacheBackendInterface $cache, protected TimeInterface $time, AliasStorageHelper $alias_helper) { parent::__construct($repository, $whitelist, $language_manager, $cache, $time); $this->aliasHelper = $alias_helper; } diff --git a/modules/tide_site/src/AliasStorageHelper.php b/modules/tide_site/src/AliasStorageHelper.php index 266495b01..b9d294eb0 100644 --- a/modules/tide_site/src/AliasStorageHelper.php +++ b/modules/tide_site/src/AliasStorageHelper.php @@ -7,7 +7,7 @@ use Drupal\Core\Url; use Drupal\node\NodeInterface; use Drupal\path_alias\PathAliasInterface; -use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Psr\Container\ContainerInterface; /** * Class alias storage helper. @@ -15,7 +15,18 @@ * @package Drupal\tide_site */ class AliasStorageHelper { - use ContainerAwareTrait; + + /** + * The service container. + */ + protected ContainerInterface $container; + + /** + * Sets the service container. + */ + public function setContainer(ContainerInterface $container): void { + $this->container = $container; + } const ALIAS_SCHEMA_MAX_LENGTH = 255; @@ -118,7 +129,7 @@ public function getPathAliasWithoutSitePrefix(array $path, $site_base_url = '') * @return string[] * The list of aliases, keyed by site ID. */ - public function getAllSiteAliases(PathAliasInterface $path, NodeInterface $node = NULL) { + public function getAllSiteAliases(PathAliasInterface $path, ?NodeInterface $node = NULL) { $aliases = []; if (!$node) { $node = $this->getNodeFromPathEntity($path); @@ -148,7 +159,7 @@ public function getAllSiteAliases(PathAliasInterface $path, NodeInterface $node * @param int[] $site_ids * The list of site to create alias (optional). */ - public function createSiteAliases(PathAliasInterface $path, NodeInterface $node = NULL, array $site_ids = []) { + public function createSiteAliases(PathAliasInterface $path, ?NodeInterface $node = NULL, array $site_ids = []) { if (!$node) { $node = $this->getNodeFromPathEntity($path); } diff --git a/modules/tide_site/src/EventSubscriber/TideSiteGetRouteSubscriber.php b/modules/tide_site/src/EventSubscriber/TideSiteGetRouteSubscriber.php index e7f39b16f..57924e3ca 100644 --- a/modules/tide_site/src/EventSubscriber/TideSiteGetRouteSubscriber.php +++ b/modules/tide_site/src/EventSubscriber/TideSiteGetRouteSubscriber.php @@ -8,7 +8,7 @@ use Drupal\tide_api\TideApiEvents; use Drupal\tide_api\TideApiHelper; use Drupal\tide_site\TideSiteHelper; -use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Psr\Container\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; @@ -18,9 +18,20 @@ * @package Drupal\tide_site\EventSubscriber */ class TideSiteGetRouteSubscriber implements EventSubscriberInterface { - use ContainerAwareTrait; use StringTranslationTrait; + /** + * The service container. + */ + protected ContainerInterface $container; + + /** + * Sets the service container. + */ + public function setContainer(ContainerInterface $container): void { + $this->container = $container; + } + /** * Tide Site Helper. * diff --git a/modules/tide_site/src/EventSubscriber/TideSiteRequestEventSubscriber.php b/modules/tide_site/src/EventSubscriber/TideSiteRequestEventSubscriber.php index 5e6e85488..e7c334efb 100644 --- a/modules/tide_site/src/EventSubscriber/TideSiteRequestEventSubscriber.php +++ b/modules/tide_site/src/EventSubscriber/TideSiteRequestEventSubscriber.php @@ -12,7 +12,7 @@ use Drupal\jsonapi_extras\ResourceType\ConfigurableResourceType; use Drupal\tide_site\TideSiteFields; use Drupal\tide_site\TideSiteHelper; -use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Psr\Container\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; @@ -27,9 +27,20 @@ * @package Drupal\tide_api\EventSubscriber */ class TideSiteRequestEventSubscriber implements EventSubscriberInterface { - use ContainerAwareTrait; use StringTranslationTrait; + /** + * The service container. + */ + protected ContainerInterface $container; + + /** + * Sets the service container. + */ + public function setContainer(ContainerInterface $container): void { + $this->container = $container; + } + /** * The module handler. * diff --git a/modules/tide_site/src/TideSiteHelper.php b/modules/tide_site/src/TideSiteHelper.php index 30b682192..94dddda55 100644 --- a/modules/tide_site/src/TideSiteHelper.php +++ b/modules/tide_site/src/TideSiteHelper.php @@ -9,7 +9,7 @@ use Drupal\Core\Entity\RevisionableInterface; use Drupal\node\NodeInterface; use Drupal\taxonomy\TermInterface; -use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Psr\Container\ContainerInterface; /** * Provides helper functions for tide_site. @@ -17,7 +17,18 @@ * @package Drupal\tide_site */ class TideSiteHelper { - use ContainerAwareTrait; + + /** + * The service container. + */ + protected ContainerInterface $container; + + /** + * Sets the service container. + */ + public function setContainer(ContainerInterface $container): void { + $this->container = $container; + } /** * List of allowed entity types. diff --git a/modules/tide_site/tide_site.info.yml b/modules/tide_site/tide_site.info.yml index 8bd64888a..aa3889188 100644 --- a/modules/tide_site/tide_site.info.yml +++ b/modules/tide_site/tide_site.info.yml @@ -2,7 +2,7 @@ name: 'Tide site' description: 'Functionality to allow post content to multiple sites and sections.' type: module package: Tide -core_version_requirement: ^9.5 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:field - drupal:field_ui diff --git a/modules/tide_site_alert/tide_site_alert.info.yml b/modules/tide_site_alert/tide_site_alert.info.yml index 47dec39c8..1a294050d 100644 --- a/modules/tide_site_alert/tide_site_alert.info.yml +++ b/modules/tide_site_alert/tide_site_alert.info.yml @@ -1,7 +1,7 @@ name: 'Tide site alert' type: module description: 'The extension of Site alert module.' -core_version_requirement: ^9.4 || ^10 +core_version_requirement: ^10.5 || ^11 package: Tide dependencies: - site_alert:site_alert diff --git a/modules/tide_site_restriction/tide_site_restriction.info.yml b/modules/tide_site_restriction/tide_site_restriction.info.yml index f958b4094..fba60c0be 100644 --- a/modules/tide_site_restriction/tide_site_restriction.info.yml +++ b/modules/tide_site_restriction/tide_site_restriction.info.yml @@ -2,7 +2,7 @@ name: Tide Site Restriction type: module description: 'Provides user restriction by Sites.' package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - tide_core:tide_core - tide_core:tide_site diff --git a/modules/tide_test/tide_test.info.yml b/modules/tide_test/tide_test.info.yml index 6b3d3e92c..3e0cb14f9 100644 --- a/modules/tide_test/tide_test.info.yml +++ b/modules/tide_test/tide_test.info.yml @@ -2,7 +2,7 @@ name: Tide Test description: 'Provides Test content type and related configuration. ' type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - drupal:field - drupal:media diff --git a/modules/tide_tfa/tide_tfa.info.yml b/modules/tide_tfa/tide_tfa.info.yml index ad80f1210..9d1a12f16 100644 --- a/modules/tide_tfa/tide_tfa.info.yml +++ b/modules/tide_tfa/tide_tfa.info.yml @@ -1,7 +1,7 @@ name: 'Tide TFA' type: module description: 'The extension of TFA module.' -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 package: Tide dependencies: - drupal:real_aes diff --git a/modules/tide_ui_restriction/tide_ui_restriction.info.yml b/modules/tide_ui_restriction/tide_ui_restriction.info.yml index 2f0435c16..9572a36f3 100644 --- a/modules/tide_ui_restriction/tide_ui_restriction.info.yml +++ b/modules/tide_ui_restriction/tide_ui_restriction.info.yml @@ -1,7 +1,7 @@ name: Tide UI restriction type: module description: Admin UI restriction -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 package: tide dependencies: - config_perms:config_perms diff --git a/modules/tide_user_expire/tide_user_expire.info.yml b/modules/tide_user_expire/tide_user_expire.info.yml index f2b54778a..e5da25f76 100644 --- a/modules/tide_user_expire/tide_user_expire.info.yml +++ b/modules/tide_user_expire/tide_user_expire.info.yml @@ -2,7 +2,7 @@ name: Tide User Expire type: module package: Tide description: An extension of user_expire module. -core_version_requirement: ^8.9 || ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - dpc-sdp:tide_core - user_expire:user_expire diff --git a/modules/tide_user_expire/tide_user_expire.install b/modules/tide_user_expire/tide_user_expire.install index 07e202dcd..d20012724 100644 --- a/modules/tide_user_expire/tide_user_expire.install +++ b/modules/tide_user_expire/tide_user_expire.install @@ -16,7 +16,7 @@ function tide_user_expire_uninstall() { * Import user expire settings. */ function tide_user_expire_update_10001() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $config_id = 'user_expire.settings'; $config = \Drupal::configFactory()->getEditable($config_id); $config_location = [\Drupal::service('extension.list.module')->getPath('tide_user_expire') . '/config/optional']; diff --git a/modules/tide_webform/tide_webform.info.yml b/modules/tide_webform/tide_webform.info.yml index bf42d1b5d..d88d682cd 100644 --- a/modules/tide_webform/tide_webform.info.yml +++ b/modules/tide_webform/tide_webform.info.yml @@ -2,7 +2,7 @@ name: Tide Webform description: 'Provides Webform and related configuration.' type: module package: Tide -core_version_requirement: ^9.5 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - config_filter:config_filter - config_ignore:config_ignore diff --git a/modules/tide_workflow_notification/tide_workflow_notification.info.yml b/modules/tide_workflow_notification/tide_workflow_notification.info.yml index 3bea37e04..0718a2e9e 100644 --- a/modules/tide_workflow_notification/tide_workflow_notification.info.yml +++ b/modules/tide_workflow_notification/tide_workflow_notification.info.yml @@ -2,7 +2,7 @@ name: Tide Workflow Notification description: Functionality to send notifications upon workflow state changes. type: module package: Tide -core_version_requirement: ^9 || ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - queue_mail:queue_mail config_devel: diff --git a/scripts/composer/DrupalSettings.php b/scripts/composer/DrupalSettings.php index 433230376..5ed87663e 100644 --- a/scripts/composer/DrupalSettings.php +++ b/scripts/composer/DrupalSettings.php @@ -96,6 +96,7 @@ public static function delete(Event $event) { * Return content for default Drupal settings file. */ protected static function getDefaultDrupalSettingsContent($options) { + $db_port = $options['mysql_port'] ?: 3306; return << '${options['mysql_user']}', 'password' => '${options['mysql_password']}', 'host' => '${options['mysql_host']}', - 'port' => '${options['mysql_port']}', + 'port' => '$db_port', 'driver' => 'mysql', 'prefix' => '${options['mysql_prefix']}', ], @@ -126,6 +127,9 @@ protected static function getDefaultDrupalSettingsContent($options) { // Allow installing extensions under tests directory. \$settings['extension_discovery_scan_tests'] = TRUE; +// Hash Salt. +\$settings['hash_salt'] = hash('sha256', getenv('LAGOON_PROJECT')); + FILE; } diff --git a/scripts/drupal-init-module.sh b/scripts/drupal-init-module.sh index 8d3f6b0e0..4d4534c74 100755 --- a/scripts/drupal-init-module.sh +++ b/scripts/drupal-init-module.sh @@ -13,7 +13,6 @@ INSTALL_SUGGEST=${INSTALL_SUGGEST:-} COMPOSER=${COMPOSER:-composer.build.json} APP=${APP:-/app} WEBROOT=${WEBROOT:-docroot} -TEST_PACKAGE_NAME=${TEST_PACKAGE_NAME:-tide_test} TEST_PACKAGE_VERSION=${TEST_PACKAGE_VERSION:-^4.0} URI=${LOCALDEV_URL:-dev} @@ -32,9 +31,6 @@ else exit 0 fi -# Require an additional test package. -[ "${PACKAGE_NAME}" != "${TEST_PACKAGE_NAME}" ] && composer require --prefer-source ${PACKAGE_ORG}/${TEST_PACKAGE_NAME}:${TEST_PACKAGE_VERSION} - # Require module from local repository. composer require --prefer-source ${PACKAGE_ORG}/${PACKAGE_NAME}:@dev diff --git a/src/Plugin/views/field/SortedRolesViewsField.php b/src/Plugin/views/field/SortedRolesViewsField.php index 8e4ac36bf..5676872ba 100644 --- a/src/Plugin/views/field/SortedRolesViewsField.php +++ b/src/Plugin/views/field/SortedRolesViewsField.php @@ -2,6 +2,7 @@ namespace Drupal\tide_core\Plugin\views\field; +use Drupal\user\Entity\Role; use Drupal\user\Plugin\views\field\Roles; /** @@ -28,7 +29,7 @@ public function preRender(&$values) { } if ($uids) { - $roles = user_roles(); + $roles = Role::loadMultiple(); asort($roles); $result = $this->database->query( 'SELECT [u].[entity_id] AS [uid], [u].[roles_target_id] AS [rid] diff --git a/src/TideCoreOperation.php b/src/TideCoreOperation.php index fbf7b78f5..16c939c0c 100644 --- a/src/TideCoreOperation.php +++ b/src/TideCoreOperation.php @@ -203,7 +203,7 @@ public function addBusinessFieldsToUserAccountForm() { * Updates files view. */ public function useCustomFilesView() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $config_location = [\Drupal::service('extension.list.module')->getPath('tide_core') . '/config/optional']; $config_read = _tide_read_config('views.view.enhanced_files', $config_location, TRUE); $storage = \Drupal::entityTypeManager()->getStorage('view'); diff --git a/tide_core.info.yml b/tide_core.info.yml index 416ea46e4..4841bb5cc 100644 --- a/tide_core.info.yml +++ b/tide_core.info.yml @@ -2,12 +2,11 @@ name: 'Tide Core' description: 'Provides core components required by other features.' type: module package: Tide -core_version_requirement: ^10 +core_version_requirement: ^10.5 || ^11 dependencies: - address:address - allowed_formats:allowed_formats - better_exposed_filters:better_exposed_filters - - ckeditor5_embedded_content:ckeditor5_embedded_content - clamav:clamav - config_split:config_split - config_update:config_update @@ -16,7 +15,6 @@ dependencies: - drupal:block - drupal:block_content - drupal:content_moderation - - drupal:ckeditor5 - drupal:datetime_range - drupal:dynamic_page_cache - drupal:entity_embed diff --git a/tide_core.install b/tide_core.install index a0c0917c6..ab210ef89 100644 --- a/tide_core.install +++ b/tide_core.install @@ -119,7 +119,7 @@ function tide_core_update_10002() { * Add description field to accordion. */ function tide_core_update_10003() { - module_load_include('inc', 'tide_core', 'includes/helpers'); + \Drupal::moduleHandler()->loadInclude('tide_core', 'inc', 'includes/helpers'); $configs = [ 'field.field.paragraph.accordion.field_paragraph_body' => 'field_config', ]; @@ -1219,3 +1219,33 @@ function tide_core_update_10031() { } $approver_role->save(); } + +/** + * Updates ckeditor template configs. + */ +function tide_core_update_11001() { + $templates = [ + 'ckeditor_templates.ckeditor_templates.blockquote', + 'ckeditor_templates.ckeditor_templates.primary_button', + 'ckeditor_templates.ckeditor_templates.secondary_button', + ]; + $config_factory = \Drupal::configFactory(); + foreach ($templates as $template) { + $config = $config_factory->getEditable($template); + $old_code = $config->get('code'); + if (is_string($old_code)) { + $html = str_replace(["\r\n", "\r", "\n"], '', $old_code); + $html = preg_replace('/>\s+<', $html); + $html = trim($html); + $config->set('code', [ + 'value' => $html, + 'format' => 'rich_text', + ]); + } + // Add thumb_alternative if not set. + if ($config->get('thumb_alternative') === NULL) { + $config->set('thumb_alternative', ''); + } + $config->save(TRUE); + } +} diff --git a/tide_core.module b/tide_core.module index 5b3c92b6d..46451bff3 100644 --- a/tide_core.module +++ b/tide_core.module @@ -617,15 +617,11 @@ function tide_core_node_access_records(NodeInterface $node) { * Implements hook_node_grants(). */ function tide_core_node_grants(AccountInterface $account, $op) { - if ($op === 'view') { - $view_unpublished_content_roles = array_keys(user_roles(TRUE, 'view any unpublished content')); - $account_roles = $account->getRoles(); - if (!empty(array_intersect($account_roles, $view_unpublished_content_roles))) { - $grants = []; - $grants['tide_core'][] = 1; - - return $grants; - } + if ($op === 'view' && $account->hasPermission('view any unpublished content')) { + $grants = []; + $grants['tide_core'][] = 1; + + return $grants; } return []; } diff --git a/tide_core.post_update.php b/tide_core.post_update.php index ca291b45d..146505963 100644 --- a/tide_core.post_update.php +++ b/tide_core.post_update.php @@ -36,3 +36,21 @@ function tide_core_post_update_fix_status_page() { } } } + +/** + * Fixes mismatched entity and/or field definitions" error. + */ +function tide_core_post_update_fixes_mismatched_entity_01() { + $entity_type_manager = \Drupal::entityTypeManager(); + $entity_type_manager->clearCachedDefinitions(); + $entity_type_ids = []; + $change_summary = \Drupal::service('entity.definition_update_manager')->getChangeSummary(); + if (!empty($change_summary)) { + foreach ($change_summary as $entity_type_id => $change_list) { + $entity_type = $entity_type_manager->getDefinition($entity_type_id); + \Drupal::entityDefinitionUpdateManager()->installEntityType($entity_type); + $entity_type_ids[] = $entity_type_id; + } + Drush::output()->writeln('Installed/Updated the entity type(s): ' . implode(', ', $entity_type_ids)); + } +} From 2ffe06e0100580510dcbe72587f6bfa6d726bb87 Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Thu, 19 Feb 2026 22:31:37 +1100 Subject: [PATCH 2/3] refactor TideMediaSettingsForm class --- modules/tide_media/src/Form/TideMediaSettingsForm.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/tide_media/src/Form/TideMediaSettingsForm.php b/modules/tide_media/src/Form/TideMediaSettingsForm.php index 2a07881ae..c7909e0e8 100644 --- a/modules/tide_media/src/Form/TideMediaSettingsForm.php +++ b/modules/tide_media/src/Form/TideMediaSettingsForm.php @@ -4,6 +4,7 @@ use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; +use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Language\LanguageManagerInterface; @@ -33,8 +34,8 @@ class TideMediaSettingsForm extends ConfigFormBase { /** * {@inheritdoc} */ - public function __construct(ConfigFactoryInterface $config_factory, CacheBackendInterface $discovery_cache, LanguageManagerInterface $language_manager) { - parent::__construct($config_factory); + public function __construct(ConfigFactoryInterface $config_factory, TypedConfigManagerInterface $typed_config_manager, CacheBackendInterface $discovery_cache, LanguageManagerInterface $language_manager) { + parent::__construct($config_factory, $typed_config_manager); $this->cacheDiscovery = $discovery_cache; $this->languageManager = $language_manager; } @@ -45,6 +46,7 @@ public function __construct(ConfigFactoryInterface $config_factory, CacheBackend public static function create(ContainerInterface $container) { return new static( $container->get('config.factory'), + $container->get('config.typed'), $container->get('cache.discovery'), $container->get('language_manager') ); From f7f84843b896dc7da253551b888dd4da61e71ab2 Mon Sep 17 00:00:00 2001 From: Vincent Gao Date: Fri, 20 Feb 2026 15:49:03 +1100 Subject: [PATCH 3/3] Fixes media preview issue. more details: https://www.drupal.org/project/stage_file_proxy/issues/3574729 --- composer.json | 3 +++ modules/tide_media/tide_media.module | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index faedd2333..f44a9dcce 100644 --- a/composer.json +++ b/composer.json @@ -450,6 +450,9 @@ }, "drupal/content_lock": { "Fatal error 'Truncated incorrect DOUBLE value' on MySQL 8 when deleting config entities": "https://www.drupal.org/files/issues/2026-02-12/content_lock-3571174-3.patch" + }, + "drupal/stage_file_proxy": { + "Image style derivatives broken for filenames with multiple dots - https://www.drupal.org/project/stage_file_proxy/issues/3574729#comment-16478435": "https://www.drupal.org/files/issues/2026-02-20/stage_file_proxy-3574729-2.patch" } }, "installer-paths": { diff --git a/modules/tide_media/tide_media.module b/modules/tide_media/tide_media.module index 70dc67f79..5290cdab0 100644 --- a/modules/tide_media/tide_media.module +++ b/modules/tide_media/tide_media.module @@ -188,6 +188,11 @@ function tide_media_preprocess_file_link(&$variables) { } $description = $variables['description']; + // Fallback to filename when description is NULL to prevent TypeError + // in Html::escape() via FormattableMarkup. + if (empty($description)) { + $description = $file->getFilename(); + } $file_size = ByteSizeMarkup::create($file->getSize()); $mime_type = $file->getMimeType(); @@ -291,11 +296,17 @@ function tide_media_entity_base_field_info_alter(&$fields, EntityTypeInterface $ function tide_media_preprocess_image(&$variables) { // Return the absolute URL for images. if (!empty($variables['uri'])) { - $config = \Drupal::config('tide_media.settings'); - if ($config->get('file_absolute_url')) { - $variables['attributes']['src'] = \Drupal::service('file_url_generator')->generateAbsoluteString($variables['uri']); - if ($config->get('force_https')) { - $variables['attributes']['src'] = str_replace('http://', 'https://', $variables['attributes']['src']); + $uri = $variables['uri']; + // Only process stream wrapper URIs (e.g. public://, private://). + // Skip URIs that are already full URLs (e.g. from focal_point preview) + // to avoid double-processing which breaks filenames with spaces. + if (strpos($uri, '://') !== FALSE && !preg_match('#^https?://#', $uri)) { + $config = \Drupal::config('tide_media.settings'); + if ($config->get('file_absolute_url')) { + $variables['attributes']['src'] = \Drupal::service('file_url_generator')->generateAbsoluteString($uri); + if ($config->get('force_https')) { + $variables['attributes']['src'] = str_replace('http://', 'https://', $variables['attributes']['src']); + } } } }