diff --git a/.env b/.env index 6effd593..302d8943 100644 --- a/.env +++ b/.env @@ -19,7 +19,7 @@ DRUPAL_HOSTNAME=helfi-rekry.docker.so # Docker image DRUPAL_IMAGE=ghcr.io/city-of-helsinki/drupal-web:8.3 -COMPOSE_PROFILES=search,queue +COMPOSE_PROFILES=search # Public webroot DRUPAL_WEBROOT=public diff --git a/.platform/schema b/.platform/schema index 9a037142..3cacc0b9 100644 --- a/.platform/schema +++ b/.platform/schema @@ -1 +1 @@ -10 \ No newline at end of file +12 \ No newline at end of file diff --git a/README.md b/README.md index fbfd1195..36401cd4 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ search found on the site and provides other recruitment information for the city Env | Branch | Drush alias | URL --- | ------ | ----------- | --- development | * | - | http://helfi-rekry.docker.so/ -production | main | @main | TBD +production | main | @main | https://www.hel.fi/fi/avoimet-tyopaikat ## Requirements @@ -110,7 +110,7 @@ listings are published for indexing. - The `helfi_rekry_content` module code can be found from [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/tree/dev/public/modules/custom/helfi_rekry_content). - The migration interval for the new job listings can be checked from the cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/migrate-job-listings.sh). -- The migration interval for changed job listings poll is written on this cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/migrate-changed-job-listings.sh). +- The migration interval for images, taxonomy terms, etc. is written on this cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/migrate-helbit-data.sh). - The scheduled publishing interval can be checked from this cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/content-scheduler.sh). ### Testing on local diff --git a/compose.yaml b/compose.yaml index c680d449..8e5cc53e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -151,13 +151,12 @@ services: - search artemis: container_name: "${COMPOSE_PROJECT_NAME}-artemis" - image: quay.io/artemiscloud/activemq-artemis-broker - environment: - AMQ_EXTRA_ARGS: "--user admin --password admin" + image: apache/activemq-artemis depends_on: - app networks: - internal + - stonehenge-network profiles: - queue chromium: diff --git a/composer.json b/composer.json index e970c776..af8b72af 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ "google/apiclient": "^2.17" }, "require-dev": { + "dg/bypass-finals": "^1.5", "donatj/mock-webserver": "^2.4", "drupal/coder": "^8.3", "drupal/core-dev": "^10.0", diff --git a/composer.lock b/composer.lock index 5d756d6c..f007492f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ef6cdda581f3e033a501b50a748d87df", + "content-hash": "e55e79c2ce0734738a2fda7b70b2694e", "packages": [ { "name": "asm89/stack-cors", @@ -2319,16 +2319,16 @@ }, { "name": "drupal/core", - "version": "10.3.8", + "version": "10.3.10", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "4006024a8dd7c9976fad0a2af7c9034d120c8e44" + "reference": "3ebb71e9c4ef0c13f683353547551fca49f9a144" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/4006024a8dd7c9976fad0a2af7c9034d120c8e44", - "reference": "4006024a8dd7c9976fad0a2af7c9034d120c8e44", + "url": "https://api.github.com/repos/drupal/core/zipball/3ebb71e9c4ef0c13f683353547551fca49f9a144", + "reference": "3ebb71e9c4ef0c13f683353547551fca49f9a144", "shasum": "" }, "require": { @@ -2412,29 +2412,29 @@ "extra": { "drupal-scaffold": { "file-mapping": { - "[project-root]/.editorconfig": "assets/scaffold/files/editorconfig", - "[project-root]/.gitattributes": "assets/scaffold/files/gitattributes", - "[web-root]/.csslintrc": "assets/scaffold/files/csslintrc", - "[web-root]/.eslintignore": "assets/scaffold/files/eslintignore", - "[web-root]/.eslintrc.json": "assets/scaffold/files/eslintrc.json", - "[web-root]/.ht.router.php": "assets/scaffold/files/ht.router.php", "[web-root]/.htaccess": "assets/scaffold/files/htaccess", - "[web-root]/example.gitignore": "assets/scaffold/files/example.gitignore", - "[web-root]/index.php": "assets/scaffold/files/index.php", - "[web-root]/INSTALL.txt": "assets/scaffold/files/drupal.INSTALL.txt", "[web-root]/README.md": "assets/scaffold/files/drupal.README.md", + "[web-root]/index.php": "assets/scaffold/files/index.php", + "[web-root]/.csslintrc": "assets/scaffold/files/csslintrc", "[web-root]/robots.txt": "assets/scaffold/files/robots.txt", "[web-root]/update.php": "assets/scaffold/files/update.php", "[web-root]/web.config": "assets/scaffold/files/web.config", + "[web-root]/INSTALL.txt": "assets/scaffold/files/drupal.INSTALL.txt", + "[web-root]/.eslintignore": "assets/scaffold/files/eslintignore", + "[web-root]/.eslintrc.json": "assets/scaffold/files/eslintrc.json", + "[web-root]/.ht.router.php": "assets/scaffold/files/ht.router.php", "[web-root]/sites/README.txt": "assets/scaffold/files/sites.README.txt", + "[project-root]/.editorconfig": "assets/scaffold/files/editorconfig", + "[web-root]/example.gitignore": "assets/scaffold/files/example.gitignore", + "[web-root]/themes/README.txt": "assets/scaffold/files/themes.README.txt", + "[project-root]/.gitattributes": "assets/scaffold/files/gitattributes", + "[web-root]/modules/README.txt": "assets/scaffold/files/modules.README.txt", + "[web-root]/profiles/README.txt": "assets/scaffold/files/profiles.README.txt", + "[web-root]/sites/example.sites.php": "assets/scaffold/files/example.sites.php", "[web-root]/sites/development.services.yml": "assets/scaffold/files/development.services.yml", "[web-root]/sites/example.settings.local.php": "assets/scaffold/files/example.settings.local.php", - "[web-root]/sites/example.sites.php": "assets/scaffold/files/example.sites.php", "[web-root]/sites/default/default.services.yml": "assets/scaffold/files/default.services.yml", - "[web-root]/sites/default/default.settings.php": "assets/scaffold/files/default.settings.php", - "[web-root]/modules/README.txt": "assets/scaffold/files/modules.README.txt", - "[web-root]/profiles/README.txt": "assets/scaffold/files/profiles.README.txt", - "[web-root]/themes/README.txt": "assets/scaffold/files/themes.README.txt" + "[web-root]/sites/default/default.settings.php": "assets/scaffold/files/default.settings.php" } } }, @@ -2477,13 +2477,13 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.3.8" + "source": "https://github.com/drupal/core/tree/10.3.10" }, - "time": "2024-11-12T09:52:10+00:00" + "time": "2024-11-22T12:51:33+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.3.8", + "version": "10.3.10", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", @@ -2527,7 +2527,7 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.3.8" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.3.10" }, "time": "2024-08-22T14:31:34+00:00" }, @@ -2933,17 +2933,17 @@ }, { "name": "drupal/easy_breadcrumb", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://git.drupalcode.org/project/easy_breadcrumb.git", - "reference": "2.0.8" + "reference": "2.0.9" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/easy_breadcrumb-2.0.8.zip", - "reference": "2.0.8", - "shasum": "49bfd9b8b0ec664963d05e360449876745cf2868" + "url": "https://ftp.drupal.org/files/projects/easy_breadcrumb-2.0.9.zip", + "reference": "2.0.9", + "shasum": "9e7c33e2ec0637d37d509776795a476f2f2d9bb8" }, "require": { "drupal/core": "^9.2 || ^10 || ^11" @@ -2951,8 +2951,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.8", - "datestamp": "1723545040", + "version": "2.0.9", + "datestamp": "1732752214", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3467,17 +3467,17 @@ }, { "name": "drupal/entity_usage", - "version": "2.0.0-beta14", + "version": "2.0.0-beta16", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity_usage.git", - "reference": "8.x-2.0-beta14" + "reference": "8.x-2.0-beta16" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_usage-8.x-2.0-beta14.zip", - "reference": "8.x-2.0-beta14", - "shasum": "68124ea440273a8f4e40bc7d07421c8a230c287b" + "url": "https://ftp.drupal.org/files/projects/entity_usage-8.x-2.0-beta16.zip", + "reference": "8.x-2.0-beta16", + "shasum": "af6533149a0926d2d539f279e7e08073f8f08c55" }, "require": { "drupal/core": "^10.2 || ^11" @@ -3490,15 +3490,15 @@ "drupal/entity_browser_block": "~1.0", "drupal/entity_embed": "~1.0", "drupal/entity_reference_revisions": "~1.0", - "drupal/inline_entity_form": "^1.0@RC", + "drupal/inline_entity_form": "^1.0@RC || ^3.0@RC", "drupal/paragraphs": "~1.0", "drupal/webform": "^6.0.0-alpha4" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.0-beta14", - "datestamp": "1724498300", + "version": "8.x-2.0-beta16", + "datestamp": "1733149424", "security-coverage": { "status": "not-covered", "message": "Beta releases are not covered by Drupal security advisories." @@ -3516,7 +3516,7 @@ ], "authors": [ { - "name": "Lullabot", + "name": "lullabot", "homepage": "https://www.drupal.org/user/3815489" }, { @@ -3524,7 +3524,7 @@ "homepage": "https://www.drupal.org/user/1288796" }, { - "name": "seanB", + "name": "seanb", "homepage": "https://www.drupal.org/user/545912" } ], @@ -3661,7 +3661,7 @@ "homepage": "https://www.drupal.org/user/423148" }, { - "name": "Hanno", + "name": "hanno", "homepage": "https://www.drupal.org/user/18826" }, { @@ -4200,16 +4200,16 @@ }, { "name": "drupal/hdbt", - "version": "6.8.8", + "version": "6.8.16", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-hdbt.git", - "reference": "9ef262cd864f75cf4972075624e5b6415c909999" + "reference": "7078104991314db54aa0301b508dba947f2e4a87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/9ef262cd864f75cf4972075624e5b6415c909999", - "reference": "9ef262cd864f75cf4972075624e5b6415c909999", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/7078104991314db54aa0301b508dba947f2e4a87", + "reference": "7078104991314db54aa0301b508dba947f2e4a87", "shasum": "" }, "require": { @@ -4228,10 +4228,10 @@ "Drupal" ], "support": { - "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.8.8", + "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.8.16", "issues": "https://github.com/City-of-Helsinki/drupal-hdbt/issues" }, - "time": "2024-11-20T08:03:52+00:00" + "time": "2024-12-04T05:47:34+00:00" }, { "name": "drupal/hdbt_admin", @@ -4329,16 +4329,16 @@ }, { "name": "drupal/helfi_api_base", - "version": "2.7.15", + "version": "2.7.19", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base.git", - "reference": "bfada1ee33120497e8dde6dbde201320f41e2dfc" + "reference": "096a75dd49d1ae4db5959980337de4b77d10cce5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-api-base/zipball/bfada1ee33120497e8dde6dbde201320f41e2dfc", - "reference": "bfada1ee33120497e8dde6dbde201320f41e2dfc", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-api-base/zipball/096a75dd49d1ae4db5959980337de4b77d10cce5", + "reference": "096a75dd49d1ae4db5959980337de4b77d10cce5", "shasum": "" }, "require": { @@ -4360,7 +4360,9 @@ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "dg/bypass-finals": "^1.0", "donatj/mock-webserver": "dev-master", - "drupal/coder": "^8.3" + "drupal/coder": "^8.3", + "drupal/elasticsearch_connector": "^8.0@alpha", + "drupal/search_api": "^1.0" }, "type": "drupal-module", "license": [ @@ -4368,10 +4370,10 @@ ], "description": "Helfi - API Base", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/tree/2.7.15", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/tree/2.7.19", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/issues" }, - "time": "2024-11-08T08:31:53+00:00" + "time": "2024-11-29T09:44:21+00:00" }, { "name": "drupal/helfi_azure_fs", @@ -4425,17 +4427,20 @@ "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-tools.git", - "reference": "53ad81c4249c6dd38deea3f6014ad0b1be47f2db" + "reference": "2abe26c3735150f630dd1203c3e60a77173d90fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-tools/zipball/53ad81c4249c6dd38deea3f6014ad0b1be47f2db", - "reference": "53ad81c4249c6dd38deea3f6014ad0b1be47f2db", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-tools/zipball/2abe26c3735150f630dd1203c3e60a77173d90fd", + "reference": "2abe26c3735150f630dd1203c3e60a77173d90fd", "shasum": "" }, "require": { "drupal/helfi_api_base": "*", - "drush/drush": "^11 || ^12 || ^13" + "drush/drush": "^12 || ^13" + }, + "conflict": { + "drush/drush": "< 12.5" }, "require-dev": { "composer/installers": "^2", @@ -4502,7 +4507,7 @@ "source": "https://github.com/City-of-Helsinki/drupal-tools/tree/main", "issues": "https://github.com/City-of-Helsinki/drupal-tools/issues" }, - "time": "2024-10-23T10:28:01+00:00" + "time": "2024-12-03T06:30:07+00:00" }, { "name": "drupal/helfi_navigation", @@ -4540,16 +4545,16 @@ }, { "name": "drupal/helfi_platform_config", - "version": "4.7.5", + "version": "4.8.10", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config.git", - "reference": "760d470ec819fcc7749d77d319b904a42812ac85" + "reference": "2e1c2a4d090084042954e56b0a61e3077d1daf4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/760d470ec819fcc7749d77d319b904a42812ac85", - "reference": "760d470ec819fcc7749d77d319b904a42812ac85", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/2e1c2a4d090084042954e56b0a61e3077d1daf4f", + "reference": "2e1c2a4d090084042954e56b0a61e3077d1daf4f", "shasum": "" }, "require": { @@ -4618,7 +4623,7 @@ "ruflin/elastica": "^8.0" }, "conflict": { - "drupal/core": "<10.3", + "drupal/core": "<10.3.10", "drupal/core-composer-scaffold": "<10.3", "drupal/ctools": "<3.11 || ^4.0.1", "drupal/default_content": ">2.0.0-alpha2", @@ -4646,8 +4651,7 @@ "[#UHF-9388] Process configuration translation files for custom modules (https://www.drupal.org/i/2845437)": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/fd68277191b8f8ec290e53b5fbbae699b2260384/patches/drupal-2845437-process-custom-module-translation-config-10.3.x.patch", "[#UHF-9690] Allow updating lists when switching from allowed values to allowed values function (https://www.drupal.org/i/2873353)": "https://www.drupal.org/files/issues/2021-05-18/allow-allowed-values-function-update-D9-2873353_1.patch", "[#UHF-9952, #UHF-9980] Duplicate
tags (https://www.drupal.org/i/3083786)": "https://www.drupal.org/files/issues/2024-08-08/3083786--mr-8066--10-3-backport.patch", - "[#UHF-10716] Ensure consistent ordering when calculating library asset order (https://www.drupal.org/i/3467860)": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/955e2fc9493c6574ab070187b8a5a8634da7daab/patches/drupal-3467860-optimized-js-assets-mismatch.patch", - "[#UHF-10967] Performance Degraded after update to twig 3.14.2 (https://www.drupal.org/project/drupal/issues/3487031)": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/90b44ce5a778d05bbe89f7eaca6412b7bd34efa0/patches/10177.patch" + "[#UHF-10716] Ensure consistent ordering when calculating library asset order (https://www.drupal.org/i/3467860)": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/955e2fc9493c6574ab070187b8a5a8634da7daab/patches/drupal-3467860-optimized-js-assets-mismatch.patch" }, "drupal/default_content": { "https://www.drupal.org/project/default_content/issues/2640734#comment-14638943": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/main/patches/default_content_2.0.0-alpha2-2640734_manual_imports-e164a354.patch" @@ -4676,10 +4680,10 @@ ], "description": "HELfi platform config", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.7.5", + "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.8.10", "issues": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/issues" }, - "time": "2024-11-19T09:09:39+00:00" + "time": "2024-12-04T06:14:43+00:00" }, { "name": "drupal/helfi_proxy", @@ -4728,16 +4732,16 @@ }, { "name": "drupal/helfi_tpr", - "version": "2.3.9", + "version": "2.3.10", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-tpr.git", - "reference": "6cca3df5dc891c98ae40e8259856a343d9abd8ca" + "reference": "d98687373b1cb4647ad576403e470f049c7a4d3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-tpr/zipball/6cca3df5dc891c98ae40e8259856a343d9abd8ca", - "reference": "6cca3df5dc891c98ae40e8259856a343d9abd8ca", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-tpr/zipball/d98687373b1cb4647ad576403e470f049c7a4d3c", + "reference": "d98687373b1cb4647ad576403e470f049c7a4d3c", "shasum": "" }, "require": { @@ -4763,10 +4767,10 @@ ], "description": "TPR integration", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-tpr/tree/2.3.9", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-tpr/tree/2.3.10", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-tpr/issues" }, - "time": "2024-11-07T13:09:51+00:00" + "time": "2024-11-29T09:43:38+00:00" }, { "name": "drupal/helfi_tunnistamo", @@ -5513,17 +5517,17 @@ }, { "name": "drupal/migrate_plus", - "version": "6.0.4", + "version": "6.0.5", "source": { "type": "git", "url": "https://git.drupalcode.org/project/migrate_plus.git", - "reference": "6.0.4" + "reference": "6.0.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.4.zip", - "reference": "6.0.4", - "shasum": "0357c416d2a9fd3f4211dd13c6585ed8072fabe7" + "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.5.zip", + "reference": "6.0.5", + "shasum": "441e91086feaca7a6f1acf1735023fff0dfc5e1e" }, "require": { "drupal/core": ">=9.1", @@ -5540,8 +5544,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.4", - "datestamp": "1721745585", + "version": "6.0.5", + "datestamp": "1732124623", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6601,20 +6605,20 @@ }, { "name": "drupal/search_api", - "version": "1.35.0", + "version": "1.37.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/search_api.git", - "reference": "8.x-1.35" + "reference": "8.x-1.37" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/search_api-8.x-1.35.zip", - "reference": "8.x-1.35", - "shasum": "d119726e870f793c6470d2a4fa9286662c5eb45d" + "url": "https://ftp.drupal.org/files/projects/search_api-8.x-1.37.zip", + "reference": "8.x-1.37", + "shasum": "76d9b5850d7fce9df8fc6cf8c49450ab541f455d" }, "require": { - "drupal/core": "^10.1 || ^11" + "drupal/core": "^10.2 || ^11" }, "conflict": { "drupal/search_api_solr": "2.* || 3.0 || 3.1" @@ -6632,17 +6636,12 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.35", - "datestamp": "1718551025", + "version": "8.x-1.37", + "datestamp": "1732727356", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10 || ^11" - } } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -6727,36 +6726,37 @@ }, { "name": "drupal/simple_sitemap", - "version": "4.2.1", + "version": "4.2.2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/simple_sitemap.git", - "reference": "4.2.1" + "reference": "4.2.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.2.1.zip", - "reference": "4.2.1", - "shasum": "d96b481571ca2fecdb305e87d2557f9338116864" + "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.2.2.zip", + "reference": "4.2.2", + "shasum": "1f9c9197d37450fb347a4fa3f10191f5f4b5ef13" }, "require": { "drupal/core": "^10.2 || ^11", "ext-xmlwriter": "*" }, + "conflict": { + "drush/drush": "<12.5.1" + }, + "require-dev": { + "drupal/paragraphs": "^1.18" + }, "type": "drupal-module", "extra": { "drupal": { - "version": "4.2.1", - "datestamp": "1723802052", + "version": "4.2.2", + "datestamp": "1732485885", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } - }, - "drush": { - "services": { - "drush.services.yml": ">=9" - } } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -8308,16 +8308,16 @@ }, { "name": "firebase/php-jwt", - "version": "v6.10.1", + "version": "v6.10.2", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "500501c2ce893c824c801da135d02661199f60c5" + "reference": "30c19ed0f3264cb660ea496895cfb6ef7ee3653b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5", - "reference": "500501c2ce893c824c801da135d02661199f60c5", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/30c19ed0f3264cb660ea496895cfb6ef7ee3653b", + "reference": "30c19ed0f3264cb660ea496895cfb6ef7ee3653b", "shasum": "" }, "require": { @@ -8365,9 +8365,9 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.1" + "source": "https://github.com/firebase/php-jwt/tree/v6.10.2" }, - "time": "2024-05-18T18:05:11+00:00" + "time": "2024-11-24T11:22:49+00:00" }, { "name": "galbar/jsonpath", @@ -8595,16 +8595,16 @@ }, { "name": "grasmash/expander", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/grasmash/expander.git", - "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82" + "reference": "eea11b9afb0c32483b18b9009f4ca07b770e39f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grasmash/expander/zipball/bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", - "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", + "url": "https://api.github.com/repos/grasmash/expander/zipball/eea11b9afb0c32483b18b9009f4ca07b770e39f4", + "reference": "eea11b9afb0c32483b18b9009f4ca07b770e39f4", "shasum": "" }, "require": { @@ -8641,9 +8641,9 @@ "description": "Expands internal property references in PHP arrays file.", "support": { "issues": "https://github.com/grasmash/expander/issues", - "source": "https://github.com/grasmash/expander/tree/3.0.0" + "source": "https://github.com/grasmash/expander/tree/3.0.1" }, - "time": "2022-05-10T13:14:49+00:00" + "time": "2024-11-25T23:28:05+00:00" }, { "name": "grasmash/yaml-cli", @@ -10371,16 +10371,16 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.15", + "version": "v1.10.16", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c" + "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/ce0adade8b97561656ace07cdaac4751c271ea8c", - "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c0f51b45f50683bf5bbf558036854ebc9b54d033", + "reference": "c0f51b45f50683bf5bbf558036854ebc9b54d033", "shasum": "" }, "require": { @@ -10416,7 +10416,7 @@ "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", "source": "https://github.com/pear/pear-core-minimal" }, - "time": "2024-03-16T18:41:45+00:00" + "time": "2024-11-24T22:27:58+00:00" }, { "name": "pear/pear_exception", @@ -11401,16 +11401,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.4", + "version": "v0.12.5", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" + "reference": "36a03ff27986682c22985e56aabaf840dd173cb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", - "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/36a03ff27986682c22985e56aabaf840dd173cb5", + "reference": "36a03ff27986682c22985e56aabaf840dd173cb5", "shasum": "" }, "require": { @@ -11437,12 +11437,12 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-main": "0.12.x-dev" - }, "bamarni-bin": { "bin-links": false, "forward-command": false + }, + "branch-alias": { + "dev-main": "0.12.x-dev" } }, "autoload": { @@ -11474,9 +11474,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.5" }, - "time": "2024-06-10T01:18:23+00:00" + "time": "2024-11-29T06:14:30+00:00" }, { "name": "ralouphie/getallheaders", @@ -11524,23 +11524,23 @@ }, { "name": "ruflin/elastica", - "version": "8.0.0", + "version": "8.1.0", "source": { "type": "git", "url": "https://github.com/ruflin/Elastica.git", - "reference": "2fc446e37847e84cd9f9be8e75fd2b322007ea43" + "reference": "5e5f9b220e34fdcc1a55b9153323e2548f9a51f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ruflin/Elastica/zipball/2fc446e37847e84cd9f9be8e75fd2b322007ea43", - "reference": "2fc446e37847e84cd9f9be8e75fd2b322007ea43", + "url": "https://api.github.com/repos/ruflin/Elastica/zipball/5e5f9b220e34fdcc1a55b9153323e2548f9a51f1", + "reference": "5e5f9b220e34fdcc1a55b9153323e2548f9a51f1", "shasum": "" }, "require": { "elastic/transport": "^8.8", "elasticsearch/elasticsearch": "^8.4.1", "ext-json": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/log": "^1.0 || ^2.0 || ^3.0" }, "conflict": { @@ -11581,9 +11581,9 @@ ], "support": { "issues": "https://github.com/ruflin/Elastica/issues", - "source": "https://github.com/ruflin/Elastica/tree/8.0.0" + "source": "https://github.com/ruflin/Elastica/tree/8.1.0" }, - "time": "2024-05-29T11:45:23+00:00" + "time": "2024-11-29T07:37:01+00:00" }, { "name": "sebastian/diff", @@ -11909,16 +11909,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.15", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36" + "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/70ab1f65a4516ef741e519ea938e6aa465e6aa36", - "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7a379d8871f6a36f01559c14e11141cc02eb8dc8", + "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8", "shasum": "" }, "require": { @@ -11970,7 +11970,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.15" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.16" }, "funding": [ { @@ -11986,20 +11986,20 @@ "type": "tidelift" } ], - "time": "2024-11-09T06:56:25+00:00" + "time": "2024-11-25T14:52:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -12037,7 +12037,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -12053,7 +12053,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/error-handler", @@ -12212,16 +12212,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -12268,7 +12268,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -12284,7 +12284,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", @@ -12418,16 +12418,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.15", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6" + "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", - "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/431771b7a6f662f1575b3cfc8fd7617aa9864d57", + "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57", "shasum": "" }, "require": { @@ -12475,7 +12475,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.15" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.16" }, "funding": [ { @@ -12491,20 +12491,20 @@ "type": "tidelift" } ], - "time": "2024-11-08T16:09:24+00:00" + "time": "2024-11-13T18:58:10+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.15", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5" + "reference": "8838b5b21d807923b893ccbfc2cbeda0f1bc00f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b002a5b3947653c5aee3adac2a024ea615fd3ff5", - "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8838b5b21d807923b893ccbfc2cbeda0f1bc00f0", + "reference": "8838b5b21d807923b893ccbfc2cbeda0f1bc00f0", "shasum": "" }, "require": { @@ -12589,7 +12589,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.15" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.16" }, "funding": [ { @@ -12605,7 +12605,7 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:57:37+00:00" + "time": "2024-11-27T12:49:36+00:00" }, { "name": "symfony/mailer", @@ -12774,16 +12774,16 @@ }, { "name": "symfony/options-resolver", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "85e95eeede2d41cd146146e98c9c81d9214cae85" + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/85e95eeede2d41cd146146e98c9c81d9214cae85", - "reference": "85e95eeede2d41cd146146e98c9c81d9214cae85", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", "shasum": "" }, "require": { @@ -12821,7 +12821,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.1.6" + "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" }, "funding": [ { @@ -12837,7 +12837,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-20T11:17:29+00:00" }, { "name": "symfony/polyfill-ctype", @@ -13774,16 +13774,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.13", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278" + "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/640a74250d13f9c30d5ca045b6aaaabcc8215278", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278", + "url": "https://api.github.com/repos/symfony/routing/zipball/91e02e606b4b705c2f4fb42f7e7708b7923a3220", + "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220", "shasum": "" }, "require": { @@ -13837,7 +13837,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.13" + "source": "https://github.com/symfony/routing/tree/v6.4.16" }, "funding": [ { @@ -13853,7 +13853,7 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:30:56+00:00" + "time": "2024-11-13T15:31:34+00:00" }, { "name": "symfony/serializer", @@ -13955,16 +13955,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -14018,7 +14018,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -14034,7 +14034,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", @@ -14124,16 +14124,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { @@ -14182,7 +14182,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -14198,20 +14198,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/validator", - "version": "v6.4.15", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "7541055cdaf54ff95f0735bf703d313374e8b20b" + "reference": "9b0d1988b56511706bc91d96ead39acd77aaf34d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/7541055cdaf54ff95f0735bf703d313374e8b20b", - "reference": "7541055cdaf54ff95f0735bf703d313374e8b20b", + "url": "https://api.github.com/repos/symfony/validator/zipball/9b0d1988b56511706bc91d96ead39acd77aaf34d", + "reference": "9b0d1988b56511706bc91d96ead39acd77aaf34d", "shasum": "" }, "require": { @@ -14279,7 +14279,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.15" + "source": "https://github.com/symfony/validator/tree/v6.4.16" }, "funding": [ { @@ -14295,7 +14295,7 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:28:48+00:00" + "time": "2024-11-27T09:48:51+00:00" }, { "name": "symfony/var-dumper", @@ -14384,16 +14384,16 @@ }, { "name": "symfony/var-exporter", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "90173ef89c40e7c8c616653241048705f84130ef" + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/90173ef89c40e7c8c616653241048705f84130ef", - "reference": "90173ef89c40e7c8c616653241048705f84130ef", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1a6a89f95a46af0f142874c9d650a6358d13070d", + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d", "shasum": "" }, "require": { @@ -14440,7 +14440,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.6" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.0" }, "funding": [ { @@ -14456,7 +14456,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-10-18T07:58:17+00:00" }, { "name": "symfony/yaml", @@ -14631,16 +14631,16 @@ }, { "name": "twig/twig", - "version": "v3.15.0", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02" + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02", - "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561", + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561", "shasum": "" }, "require": { @@ -14651,6 +14651,7 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -14694,7 +14695,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.15.0" + "source": "https://github.com/twigphp/Twig/tree/v3.16.0" }, "funding": [ { @@ -14706,7 +14707,7 @@ "type": "tidelift" } ], - "time": "2024-11-17T15:59:19+00:00" + "time": "2024-11-29T08:27:05+00:00" }, { "name": "twistor/flysystem-stream-wrapper", @@ -15811,6 +15812,59 @@ }, "time": "2023-01-05T11:28:13+00:00" }, + { + "name": "dg/bypass-finals", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/dg/bypass-finals.git", + "reference": "86b00f0d900c7e15d3341e687e0df89e8c2d4632" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dg/bypass-finals/zipball/86b00f0d900c7e15d3341e687e0df89e8c2d4632", + "reference": "86b00f0d900c7e15d3341e687e0df89e8c2d4632", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.3", + "phpstan/phpstan": "^0.12" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + } + ], + "description": "Removes final keyword from source code on-the-fly and allows mocking of final methods and classes", + "keywords": [ + "finals", + "mocking", + "phpunit", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/dg/bypass-finals/issues", + "source": "https://github.com/dg/bypass-finals/tree/v1.8.0" + }, + "time": "2024-07-02T22:24:43+00:00" + }, { "name": "doctrine/instantiator", "version": "2.0.0", @@ -17401,16 +17455,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.58", + "version": "1.12.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2" + "reference": "b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0", + "reference": "b5ae1b88f471d3fd4ba1aa0046234b5ca3776dd0", "shasum": "" }, "require": { @@ -17453,13 +17507,9 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2024-02-12T20:02:57+00:00" + "time": "2024-11-28T22:13:23+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", diff --git a/conf/cmi/block.block.eucookiecomplianceblock.yml b/conf/cmi/block.block.eucookiecomplianceblock.yml deleted file mode 100644 index 6b8c1a01..00000000 --- a/conf/cmi/block.block.eucookiecomplianceblock.yml +++ /dev/null @@ -1,31 +0,0 @@ -uuid: 4b4b5db8-fe93-4031-a647-97426b1c8462 -langcode: en -status: true -dependencies: - module: - - eu_cookie_compliance - - system - theme: - - hdbt -_core: - default_config_hash: 28-kb7jihf_0-XOrfhlEDbsUyoxMcH4YtOMyietA-vA -id: eucookiecomplianceblock -theme: hdbt -region: after_content -weight: -8 -provider: null -plugin: eu_cookie_compliance_block -settings: - id: eu_cookie_compliance_block - label: 'EU Cookie Compliance Block' - label_display: '0' - provider: eu_cookie_compliance - eu_cookie_compliance_block_settings: - description: - value: '' - format: full_html -visibility: - request_path: - id: request_path - negate: false - pages: /cookie-information-and-settings diff --git a/conf/cmi/block.block.hdbt_subtheme_eucookiecomplianceblock.yml b/conf/cmi/block.block.hdbt_subtheme_eucookiecomplianceblock.yml deleted file mode 100644 index 170c686d..00000000 --- a/conf/cmi/block.block.hdbt_subtheme_eucookiecomplianceblock.yml +++ /dev/null @@ -1,31 +0,0 @@ -uuid: 8ca85d9e-4783-4515-8829-54d9483bcc58 -langcode: en -status: true -dependencies: - module: - - eu_cookie_compliance - - system - theme: - - hdbt_subtheme -_core: - default_config_hash: 28-kb7jihf_0-XOrfhlEDbsUyoxMcH4YtOMyietA-vA -id: hdbt_subtheme_eucookiecomplianceblock -theme: hdbt_subtheme -region: after_content -weight: -14 -provider: null -plugin: eu_cookie_compliance_block -settings: - id: eu_cookie_compliance_block - label: 'EU Cookie Compliance Block' - label_display: '0' - provider: eu_cookie_compliance - eu_cookie_compliance_block_settings: - description: - value: '' - format: full_html -visibility: - request_path: - id: request_path - negate: false - pages: /cookie-information-and-settings diff --git a/conf/cmi/core.base_field_override.paragraphs_library_item.paragraphs_library_item.paragraphs.yml b/conf/cmi/core.base_field_override.paragraphs_library_item.paragraphs_library_item.paragraphs.yml index a1b9f7dc..0912383b 100644 --- a/conf/cmi/core.base_field_override.paragraphs_library_item.paragraphs_library_item.paragraphs.yml +++ b/conf/cmi/core.base_field_override.paragraphs_library_item.paragraphs_library_item.paragraphs.yml @@ -43,12 +43,12 @@ settings: contact_card_listing: contact_card_listing content_cards: content_cards image: image + image_gallery: image_gallery liftup_with_image: liftup_with_image list_of_links: list_of_links map: map sidebar_text: sidebar_text text: text - image_gallery: image_gallery negate: 0 target_bundles_drag_drop: accordion: diff --git a/conf/cmi/core.entity_form_display.node.landing_page.default.yml b/conf/cmi/core.entity_form_display.node.landing_page.default.yml index 0b22fc0c..b77ab99b 100644 --- a/conf/cmi/core.entity_form_display.node.landing_page.default.yml +++ b/conf/cmi/core.entity_form_display.node.landing_page.default.yml @@ -128,9 +128,9 @@ content: third_party_settings: { } simple_sitemap: weight: 10 + region: content settings: { } third_party_settings: { } - region: content status: type: boolean_checkbox weight: 12 diff --git a/conf/cmi/core.extension.yml b/conf/cmi/core.extension.yml index 8b79b9a9..c204c682 100644 --- a/conf/cmi/core.extension.yml +++ b/conf/cmi/core.extension.yml @@ -39,13 +39,13 @@ module: focal_point: 0 gin_toolbar: 0 hdbt_admin_tools: 0 + hdbt_cookie_banner: 0 health_check: 0 helfi_api_base: 0 helfi_azure_fs: 0 helfi_base_content: 0 helfi_ckeditor: 0 helfi_etusivu_entities: 0 - helfi_eu_cookie_compliance: 0 helfi_google_api: 0 helfi_hakuvahti: 0 helfi_image_styles: 0 @@ -169,7 +169,6 @@ module: paragraphs: 11 publication_date: 99 minimal: 1000 - eu_cookie_compliance: 1001 theme: claro: 0 stable9: 0 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml b/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml deleted file mode 100644 index bf334f7a..00000000 --- a/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: 19fd3933-a732-4bca-a34c-222852b53e6c -langcode: en -status: true -dependencies: { } -_core: - default_config_hash: Fo0xGa_NGmRHechfzeoRkN1cxRB2-z_P0gHmfGny4E8 -id: chat -label: 'Functional chat cookies' -description: - value: '

The chats on the www.hel.fi  website require functional chat cookies to function. By using a chat, you automatically accept the functional cookies it requires.  No separate cookie consent is needed. Functional chat cookies are only downloaded to your device if you start a chat.

NameProviderPurpose of the cookieValidityType
_genesys.widgets.*www.hel.fiUsed for storing data required by the chat functionality.Session 
leijuke.*www.hel.fiUsed for storing data required by the chat functionality.Session 
aiap-wbc-chat-app-button-statewww.hel.fiUsed for chat app functionality. Stores chat app button settings and configuration data.Session 
aiap-chat-app-v1-statewww.hel.fiUsed for chat app functionality. Stores chat app settings and configuration data.Session 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudUsed for chat app functionality. Stores chat app conversation token for authentication and data access purposes.SessionThird party
CallGuide.languagewww.hel.fiACE Chat: The language used in the ACE Web SDK is derived from the browsers' preferred language setting and ACE Web SDK settings.-Local storage
CallGuide.config_services_*www.hel.fiACE Chat: Configuring customer service integrations on a web page. Reduces web traffic when loading and navigating a page-Local storage
*_CGWebSDK_windowGUIDwds.ace.teliacompany.comACE Chat: The unique identity of this browser window. Is used if the browser has more than one open window for a website-Local storage
*_CGWebSDK_videoShowerwds.ace.teliacompany.comACE Chat: Only one window at a time can display video. This information tracks which of them (if any).-Local storage
*_CGWebSDK_videoClientswds.ace.teliacompany.comACE Chat: A list of all windows that are likely to display the video-Local storage
*_ACEChatState_ActiveClientwds.ace.teliacompany.comACE Chat: A website can have more than one chat client. This item tracks which customer the current chat belongs to.-Local storage
*_chatEntrancewds.ace.teliacompany.comACE Chat: Name of the chat entrance to the system-Local storage
*_chatUIDwds.ace.teliacompany.comACE Chat: Chat session ID when communicating with ACE-Local storage
humany-*www.hel.fiACE Chat: Preserves widget status when page reloads-Local storage
ARRAffinity.hel.humany.netACE Chat: Load balancing in the backend systemSessionThird party
ARRAffinitySameSite.hel.humany.netACE Chat: Load balancing in the backend systemSessionThird party
' - format: full_html -checkbox_default_state: unchecked -weight: -5 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml b/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml deleted file mode 100644 index f41aca94..00000000 --- a/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: 3a617992-d393-453d-a953-4dae085348e2 -langcode: en -status: true -dependencies: { } -_core: - default_config_hash: 6_XedB0R6X-mo9oj-a1V_0wlGQWBzGMlKvDNs-f7KB0 -id: essential -label: 'Essential cookies' -description: - value: '

Essential cookies help to make the website usable by allowing basic functions, navigating the page and using the protected areas of the site. The website will not work properly without these cookies and their consent is not required.

NameProviderPurpose of the cookieValidityType
cookiehubcookiehub.comUsed by CookieHub to store information about whether visitors have given or declined the use of cookie categories used on the www.hel.fi site.365 days 
cookie-agreedwww.hel.fiUsed by www.hel.fi Drupal to store information about whether visitors have given or declined the use of cookie categories used on the www.hel.fi site.100 days 
cookie-agreed-versionwww.hel.fiUsed by www.hel.fi Drupal to store information about what version of the cookie consent the user has agreed to.100 days 
cookie-agreed-categorieswww.hel.fiUsed by www.hel.fi Drupal to store information about what cookie categories the user has agreed to.100 days 
cookie-agreedavustukset.hel.fiUsed by avustukset.hel.fi Drupal to store information about whether visitors have given or declined the use of cookie categories used on the avustukset.hel.fi site.100 days 
cookie-agreed-versionavustukset.hel.fiUsed by avustukset.hel.fi Drupal to store information about what version of the cookie consent the user has agreed to.100 days 
cookie-agreed-categoriesavustukset.hel.fiUsed by avustukset.hel.fi Drupal to store information about what cookie categories the user has agreed to.100 days 
SSESS*www.hel.fiA cookie related to the operation of the content management system.23 days 
SSESS*avustukset.hel.fiA cookie related to the operation of the content management system.23 days 
AWSELBCORSsiteimproveanalytics.ioThe cookie is related to a load distribution function used to direct requests to servers with the least traffic.SessionThird party
mtm_cookie_consentkartta.hel.fiA technical cookie that stores information about how you responded to the notice in the cookie banner about the use of cookies.10950 days 
JSESSIONID

helsinkikanava.fi

coh-chat-app-prod.eu-de.mybluemix.net

The cookie is an obligatory cookie that facilitates visiting the website.SessionThird party
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudUsed for chat app functionality. Its value is used to access session data on server of the application.SessionThird party
COOKIE_SUPPORThelsinkikanava.fiThe cookie facilitates managing cookies on the website.365 daysThird party
GUEST_LANGUAGE_IDhelsinkikanava.fiThis cookie is generated by the Liferay, its function is to store the language preferences.365 daysThird party
helfi-settingswww.hel.fiUsed by www.hel.fi Drupal to store information about closed announcements and accordions'' state.-Local storage
Drupal.visitor.autologout_loginavustukset.hel.fiUsed by avustukset.hel.fi Drupal to automatically logout user after a period of inactivity.365 days 
Drupal.gin.sidebarExpanded.desktopwww.hel.fiStores whether the admin sidebar is expanded or collapsed on desktop when logged in as an editor on hel.fi.-Local storage
Drupal.gin.sidebarExpanded.mobilewww.hel.fiStores whether the admin sidebar is expanded or collapsed on mobile when logged in as an editor on hel.fi.-Local storage
Drupal.gin.darkmodewww.hel.fiStores the user''s dark mode preference in the admin theme when logged in as an editor on hel.fi.-Local storage
Drupal.toolbar.subtrees.*www.hel.fiStores the expanded or collapsed state of submenus in the Drupal admin toolbar for a logged-in editor, ensuring consistency across page loads.-Local storage
Drupal.off-canvas.css.*www.hel.fiStores cached CKEditor CSS in localStorage for a logged-in editor, using a key with a cache-busting query to ensure the latest CSS is loaded.-Local storage
ed11ySeenwww.hel.fiTracks which accessibility issues a logged-in editor has already seen to avoid duplicate notifications.-Local storage
editoria11yResultCountwww.hel.fiTracks the number of accessibility issues found on specific pages for a logged-in editor, helping monitor and address them.-Local storage
Drupal.toolbar.toolbarStatewww.hel.fiStores the state of the admin toolbar for a logged-in editor, including its orientation, active tab and state of expansion.SessionSession storage
escapeAdminPathwww.hel.fiStores the URL to redirect a logged-in editor from the admin interface back to the main site.SessionSession storage
' - format: full_html -checkbox_default_state: required -weight: -9 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml b/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml deleted file mode 100644 index 6e799ef3..00000000 --- a/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: c0bec40e-f48d-4d20-82f6-70a46f6d7fbe -langcode: en -status: true -dependencies: { } -_core: - default_config_hash: 2nukTq0GW1ah8MZEHNDaOJ0Ygil0hTpw48HeCYekkZY -id: preference -label: Preference -description: - value: '

Preference cookies modify the visuals and functions of the website based on the user''s previous sessions.

NameProviderPurpose of the cookieValidityType
httpskartta.hel.fi.SWCulturekartta.hel.fiThe City''s map service cookie saves the language in which the service is used.1826 days 
icareus-devicehelsinkikanava.fiThe Helsinki Channel video server cookie facilitates including videos as part of the website''s content.365 daysThird party
VISITOR_INFO1_LIVEyoutube.comThe YouTube cookie selects the old or new video player depending on the connection speed.180 daysThird party
CONSENTyoutube.comUsed by Google to store user consent preferences5947 days, 15 hoursThird party
activeTabwww.hel.fiUsed for storing active tab data when user is using high school search.Session 
activeContentwww.hel.fiUsed for storing active content data when user is using high school search.Session 
' - format: full_html -checkbox_default_state: unchecked -weight: -8 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.statistics.yml b/conf/cmi/eu_cookie_compliance.cookie_category.statistics.yml deleted file mode 100644 index dcfff68a..00000000 --- a/conf/cmi/eu_cookie_compliance.cookie_category.statistics.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: e6353167-d363-4524-9afb-c6c49447602b -langcode: en -status: true -dependencies: { } -_core: - default_config_hash: DocxmYG5rysx8IQZ_Mu2ZhNcPnpkNpXJAYeRDWSRMds -id: statistics -label: Statistics -description: - value: '

The information collected by statistics cookies is used for developing the website.

NameProviderPurpose of the cookieValidityType
nmstatwww.hel.fiThe Siteimprove statistics cookie collects information about the use of the website.1000 days 
_pk_id.*www.hel.fiMatomo Analytics - used to store a few details about the user such as the unique visitor ID393 days 
_pk_ses.141.89f6www.hel.fi-1 hour 
_pk_id.*kartta.hel.fiMatomo Analytics - used to store a few details about the user such as the unique visitor ID393 days 
_pk_ses.*kartta.hel.fiMatomo Analytics - short lived cookies used to temporarily store data for the visit1 hour 
_pk_id.*palvelukartta.hel.fiMatomo Analytics - used to store a few details about the user such as the unique visitor ID393 days 
_pk_ses.*palvelukartta.hel.fiMatomo Analytics - short lived cookies used to temporarily store data for the visit1 hour 
_pk_id.*avustukset.hel.fiMatomo Analytics - used to store a few details about the user such as the unique visitor ID393 days 
_pk_ses.*avustukset.hel.fiMatomo Analytics - short lived cookies used to temporarily store data for the visit1 hour 
rnsbidreactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
rnsbid_tsreactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
rns_reaction_*reactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
YSCyoutube.comThe YouTube cookie facilitates including videos as part of the website''s content.SessionThird party
' - format: full_html -checkbox_default_state: unchecked -weight: -7 diff --git a/conf/cmi/eu_cookie_compliance.settings.yml b/conf/cmi/eu_cookie_compliance.settings.yml deleted file mode 100644 index 519e31d7..00000000 --- a/conf/cmi/eu_cookie_compliance.settings.yml +++ /dev/null @@ -1,82 +0,0 @@ -langcode: en -dependencies: - config: - - filter.format.full_html -popup_enabled: true -popup_clicking_confirmation: false -popup_scrolling_confirmation: false -eu_only: false -eu_only_js: false -popup_position: false -fixed_top_position: true -popup_info: - value: "

Hel.fi uses cookies

\r\n\r\n

We use essential cookies on our website to make the site work. Also third party cookies are used if you give us your permission.

\r\n" - format: full_html -mobile_popup_info: - value: '' - format: full_html -popup_info_template: new -popup_agree_button_message: Accept -popup_more_info_button_message: 'Show cookies' -mobile_breakpoint: 768 -popup_agreed_enabled: false -popup_hide_agreed: false -disagree_button_label: 'No, thanks' -popup_agreed: - value: '

Thank you for accepting cookies

You can now hide this message or find out more about cookies.

' - format: full_html -popup_find_more_button_message: 'Show cookies' -popup_hide_button_message: Hide -popup_link: /cookie-information-and-settings -popup_link_new_window: false -popup_height: null -popup_width: '' -popup_delay: 1000 -show_more_info: true -popup_bg_hex: '' -popup_text_hex: '' -domain: '' -domains_option: 1 -domains_list: '' -exclude_paths: "/admin\r\n/admin/*\r\n/batch\r\n/node/add*\r\n/node/*/*\r\n/user/*/*" -exclude_admin_theme: false -cookie_session: 0 -set_cookie_session_zero_on_disagree: 0 -cookie_lifetime: 100 -use_mobile_message: false -use_bare_css: true -use_olivero_css: false -disagree_do_not_show_popup: false -reload_page: true -reload_options: 0 -reload_routes_list: '' -cookie_name: '' -exclude_uid_1: false -better_support_for_screen_readers: false -method: categories -disabled_javascripts: '' -automatic_cookies_removal: true -allowed_cookies: "helfi_accordions_open\r\nessential:AWSELBCORS\r\nessential:cookiehub\r\nessential:mtm_cookie_consent\r\nessential:JSESSIONID\r\nessential:COOKIE_SUPPORT\r\nessential:GUEST_LANGUAGE_ID\r\npreference:httpskartta.hel.fi.SWCulture\r\npreference:icareus-device\r\npreference:VISITOR_INFO1_LIVE\r\npreference:CONSENT\r\nstatistics:nmstat\r\nstatistics:_pk_id.*\r\nstatistics:_pk_ses.141.89f6\r\nstatistics:_pk_id.*\r\nstatistics:_pk_ses.*\r\nstatistics:_pk_id.*\r\nstatistics:_pk_ses.*\r\nstatistics:rnsbid\r\nstatistics:rnsbid_ts\r\nstatistics:rns_reaction_*\r\nstatistics:YSC\r\nchat:_genesys.widgets.*\r\nchat:leijuke.*" -consent_storage_method: do_not_store -withdraw_message: - value: '

Hel.fi uses cookies

You have given your consent for us to set cookies.

' - format: full_html -withdraw_tab_button_label: 'Privacy settings' -withdraw_action_button_label: 'Withdraw consent' -withdraw_enabled: false -withdraw_button_on_info_popup: false -save_preferences_button_label: 'Accept selected cookies' -accept_all_categories_button_label: 'Accept all cookies' -enable_save_preferences_button: true -domain_all_sites: true -settings_tab_enabled: false -containing_element: body -cookie_policy_version: 1.2.5 -cookie_value_disagreed: '0' -cookie_value_agreed_show_thank_you: '1' -cookie_value_agreed: '2' -accessibility_focus: false -close_button_action: close_banner -reject_button_label: '' -reject_button_enabled: false -close_button_enabled: false diff --git a/conf/cmi/hdbt_cookie_banner.settings.yml b/conf/cmi/hdbt_cookie_banner.settings.yml new file mode 100644 index 00000000..fae82ee6 --- /dev/null +++ b/conf/cmi/hdbt_cookie_banner.settings.yml @@ -0,0 +1,6 @@ +_core: + default_config_hash: y-QliARbuZ0u4VXlTAbsDzeY15OrDBGBbaP6LtSPb3c +langcode: en +cookie_information: + title: 'Cookie information' + content: "A cookie is a small-scale data storage program that a computer browser installs on a user's computer hard drive. Whenever the user's browser retrieves the site from the City of Helsinki's servers, the message is sent back to the user's computer. Javascript and server logs are used to record, for example, the number of users, country of use, usage time and browser used, as well as the content that the visitor has visited. The cookie does not damage the drive.\r\n\r\nCookies are used to speed up, analyze and develop the website and to target content to each user." diff --git a/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml b/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml deleted file mode 100644 index 368a0db9..00000000 --- a/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml +++ /dev/null @@ -1,7 +0,0 @@ -_core: - default_config_hash: eVNvfbEgjm25gLyG5DH8zDbCi17xs8djPZt0XHD_Q9s -cc: - title: 'Cookie settings' - content: - value: "

A cookie is a small-scale data storage program that a computer browser installs on a user's computer hard drive. Whenever the user's browser retrieves the site from the City of Helsinki's servers, the message is sent back to the user's computer. Javascript and server logs are used to record, for example, the number of users, country of use, usage time and browser used, as well as the content that the visitor has visited. The cookie does not damage the drive.

Cookies are used to speed up, analyze and develop the website and to target content to each user.

" - format: full_html diff --git a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml deleted file mode 100644 index b554bf87..00000000 --- a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: - value: '

Toiminnallisten chat-evästeiden avulla mahdollistetaan helfi-sivujen chattien toiminta. Jos aloitat chatin, hyväksyt sen käyttöön liittyvät toiminnalliset evästeet automaattisesti.  Evästeiden hyväksymiseen ei tällöin tarvita erillistä suostumusta. Toiminnallisia chat-evästeitä ladataan laitteellesi vain, jos käynnistät chatin.

NimiTarjoajaTarkoitusVoimassaTyyppi
_genesys.widgets.*www.hel.fiKäytetään chatin tarvitseman datan tallentamiseen.Istunto 
leijuke.*www.hel.fiKäytetään chatin tarvitseman datan tallentamiseen.Istunto 
aiap-wbc-chat-app-button-statewww.hel.fiKäytetään chat-sovellustoiminnallisuutta varten. Säilyttää chat-sovelluksen painikkeen asetukset ja kokoonpanotiedot.Istunto 
aiap-chat-app-v1-statewww.hel.fiKäytetään chat-sovellustoiminnallisuutta varten. Säilyttää chat-sovelluksen asetukset ja kokoonpanotiedot.Istunto 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudKäytetään chat-sovellustoiminnallisuutta varten. Säilyttää chat-sovelluksen keskustelutunnisteen istunnnon tunnistamista ja tietojen hakemista varten.IstuntoKolmas osapuoli
CallGuide.languagewww.hel.fiACE Chat: ACE Web SDK:ssa käytettävä kieli, joka on johdettu selainten ensisijaisesta kieliasetuksesta ja ACE Web SDK - asetuksista.-Local storage
CallGuide.config_services_*www.hel.fiACE Chat: Asiakaspalveluintegraatioiden määritys verkkosivulla. Vähentää verkkoliikennettä sivun lataamisen ja navigoinnin yhteydessä.-Local storage
*_CGWebSDK_windowGUIDwds.ace.teliacompany.comACE Chat: Tämän selainikkunan yksilöllinen identiteetti. Käytetään, jos selaimessa on useampi kuin yksi avoin ikkuna verkkosivustolle.-Local storage
*_CGWebSDK_videoShowerwds.ace.teliacompany.comACE Chat: Vain yksi ikkuna kerrallaan voi näyttää videota. Nämä tiedot seuraavat, mikä niistä (jos sellainen on).-Local storage
*_CGWebSDK_videoClientswds.ace.teliacompany.comACE Chat: Luettelo kaikista ikkunoista, jotka ovat todennäköisiä videon näyttämiseen.-Local storage
*_ACEChatState_ActiveClientwds.ace.teliacompany.comACE Chat: Verkkosivustolla voi olla useampi kuin yksi chat-asiakasohjelma. Tämä kohde seuraa, mihin asiakkaaseen nykyinen chat kuuluu.-Local storage
*_chatEntrancewds.ace.teliacompany.comACE Chat: Järjestelmän chat-sisäänkäynnin nimi-Local storage
*_chatUIDwds.ace.teliacompany.comACE Chat: Keskustelun istuntotunnus kommunikoitaessa ACE:n kanssa-Local storage
humany-*www.hel.fiACE Chat: Säilyttää widgetin tilan, kun sivu ladataan uudelleen -Local storage
ARRAffinity.hel.humany.netACE Chat: Kuormituksen tasaus taustajärjestelmässäIstuntoKolmas osapuoli
ARRAffinitySameSite.hel.humany.netACE Chat: Kuormituksen tasaus taustajärjestelmässäIstuntoKolmas osapuoli
' - format: full_html -label: 'Toiminnalliset chat-evästeet' diff --git a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.essential.yml b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.essential.yml deleted file mode 100644 index 0652c9f2..00000000 --- a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.essential.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: - value: '

Välttämättömät evästeet auttavat tekemään verkkosivustosta käyttökelpoisen sallimalla perustoimintoja, kuten sivulla siirtymisen ja sivuston suojattujen alueiden käytön. Verkkosivusto ei toimi kunnolla ilman näitä evästeitä eikä niihin tarvita suostumusta.

NimiTarjoajaTarkoitusVoimassaTyyppi
cookiehubCookiehubMahdollistaa evästehallinnan www.hel.fi sivuilla.365 päivää 
cookie-agreedwww.hel.fiSivusto käyttää tätä evästettä tietojen tallentamiseen siitä, ovatko kävijät antaneet hyväksyntänsä tai kieltäytyneet evästeiden käytöstä.100 päivää 
cookie-agreed-versionwww.hel.fiTähän evästeeseen tallennetaan käyttäjän hyväksymän evästeselosteen versio.100 päivää 
cookie-agreed-categorieswww.hel.fiTähän evästeeseen on tallennettu käyttäjän hyväksymät evästekategoriat.100 päivää 
cookie-agreedavustukset.hel.fiSivusto käyttää tätä evästettä tietojen tallentamiseen siitä, ovatko kävijät antaneet hyväksyntänsä tai kieltäytyneet evästeiden käytöstä.100 päivää 
cookie-agreed-versionavustukset.hel.fiTähän evästeeseen tallennetaan käyttäjän hyväksymän evästeselosteen versio.100 päivää 
cookie-agreed-categoriesavustukset.hel.fiTähän evästeeseen on tallennettu käyttäjän hyväksymät evästekategoriat.100 päivää 
SSESS*www.hel.fiSisällönhallintajärjestelmän toimintaan liittyvä eväste.23 päivää 
SSESS*avustukset.hel.fiSisällönhallintajärjestelmän toimintaan liittyvä eväste.23 päivää 
AWSELBCORSsiteimproveanalytics.ioEväste liittyy palvelinten kuormanjakotoiminnallisuuteen, jolla ohjataan pyynnöt vähimmällä käytöllä olevalle palvelimille.IstuntoKolmas osapuoli
mtm_cookie_consentkartta.hel.fiTekninen eväste johon talletetaan tieto valinnastasi evästeiden käytöstä kertovan bannerin kohdalla10950 päivää 
JSESSIONID

helsinkikanava.fi

coh-chat-app-prod.eu-de.mybluemix.net

Sivuston pakollinen eväste mahdollistaa kävijän vierailun sivustolla.IstuntoKolmas osapuoli
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudKäytetään chat-sovellustoiminnallisuutta varten. Evästettä käytetään sovelluksen palvelimella olevan istuntotiedon hakemiseen.IstuntoKolmas osapuoli
COOKIE_SUPPORThelsinkikanava.fiMahdollistaa evästeiden hallinnan sivustolla.365 päivääKolmas osapuoli
GUEST_LANGUAGE_IDhelsinkikanava.fiTämän evästeen on luonut Liferay, se tallentaa kieliasetukset.365 päivääKolmas osapuoli
helfi-settingswww.hel.fiSivusto käyttää tätä tietuetta tietojen tallentamiseen siitä, mitä poikkeusilmoituksia on suljettu ja mikä on avattavien sisältöalueiden tila.-Local storage
Drupal.visitor.autologout_loginavustukset.hel.fiKäytetään käyttäjän automaattiseen uloskirjautumiseen.365 päivää 
Drupal.gin.sidebarExpanded.desktopwww.hel.fiTallentaa tiedon sisällöntuottajan käyttöliittymän sivupalkin näkyvyydestä työpöytänäkymässä.-Local storage
Drupal.gin.sidebarExpanded.mobilewww.hel.fiTallentaa tiedon sisällöntuottajan käyttöliittymän sivupalkin näkyvyydestä mobiilinäkymässä.-Local storage
Drupal.gin.darkmodewww.hel.fiTallentaa tiedon sisällöntuottajan valitsemasta "tumma tila"-asetuksesta.-Local storage
Drupal.toolbar.subtrees.*www.hel.fiTallentaa sisällöntuottajan näkymissä alivalikoiden tilan (laajennettu tai kutistettu), jotta se säilyy yhdenmukaisena sivulatausten välillä.-Local storage
Drupal.off-canvas.css.*www.hel.fiTallentaa sisällöntuottajan käyttämän wysiwyg-editorin tyylit välimuistiin varmistaakseen viimeisimpien CSS-tyylien latauksen.-Local storage
ed11ySeenwww.hel.fiTallentaa sisällöntuottajan näkemät saavutettavuusongelmat, jotta vältetään ongelmien kaksoisilmoitukset.-Local storage
editoria11yResultCountwww.hel.fiTallentaa löydettyjen saavutettavuusongelmien määrän sisällöntuottajalle, auttaen seuraamaan ja korjaamaan ne.-Local storage
Drupal.toolbar.toolbarStatewww.hel.fiTallentaa sisällöntuottajan hallintatyökalupalkin orientaation, aktiivisen välilehden ja laajennustilan.IstuntoSession storage
escapeAdminPathwww.hel.fiTallentaa URL-osoitteen, jota käytetään ohjaamaan kirjautunut sisällöntuottaja hallintaliittymästä takaisin pääsivustolle.IstuntoSession storage
' - format: full_html -label: 'Välttämättömät toiminnalliset evästeet' diff --git a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml deleted file mode 100644 index 93f9ff7d..00000000 --- a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml +++ /dev/null @@ -1,4 +0,0 @@ -label: Personointi -description: - value: '

Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän aiemman käytön perusteella.

NimiTarjoajaTarkoitusVoimassaTyyppi
httpskartta.hel.fi.SWCulturekartta.hel.fiKaupungin karttapalvelun evästeeseen tallennetaan kieli, jolla palvelua käytetään.1826 päivää 
icareus-devicehelsinkikanava.fiHelsinki-kanavan videopalvelimen eväste.365 päivääKolmas osapuoli
VISITOR_INFO1_LIVEyoutube.comYouTuben eväste valitsee yhteyden nopeuden mukaan, joko vanhan tai uuden videosoittimen.180 päivääKolmas osapuoli
CONSENTyoutube.comGooglen eväste tallentaa kävijän evästehyväskynnän.5947 päivää, 15 tuntiaKolmas osapuoli
activeTabwww.hel.fiKäytetään aktiivisten välilehtien tietojen tallentamiseen, kun käyttäjä käyttää lukioiden suodatushakua.Istunto 
activeContentwww.hel.fiKäytetään aktiivisen sisältötietojen tallentamiseen, kun käyttäjä käyttää lukioiden hakua.Istunto 
' - format: full_html diff --git a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.statistics.yml b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.statistics.yml deleted file mode 100644 index b4707d04..00000000 --- a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.statistics.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: - value: '

Tilastointievästeiden keräämää tietoa käytetään verkkosivuston kehittämiseen.

NimiTarjoajaTarkoitusVoimassaTyyppi
nmstatwww.hel.fiSiteimproven tilastointieväste kerää tietoa kävijän sivujen käytöstä.1000 päivää 
_pk_id.*www.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.141.89f6www.hel.fi-1 tunti 
_pk_id.*kartta.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*kartta.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
_pk_id.*palvelukartta.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*palvelukartta.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
_pk_id.*avustukset.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*avustukset.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
rnsbidreactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Local storage
rnsbid_tsreactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Local storage
rns_reaction_*reactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Local storage
YSCyoutube.comYouTuben eväste mahdollistaa videoiden upottamisen sivustolle.IstuntoKolmas osapuoli
' - format: full_html -label: Tilastointi diff --git a/conf/cmi/language/fi/eu_cookie_compliance.settings.yml b/conf/cmi/language/fi/eu_cookie_compliance.settings.yml deleted file mode 100644 index 053fc5a4..00000000 --- a/conf/cmi/language/fi/eu_cookie_compliance.settings.yml +++ /dev/null @@ -1,11 +0,0 @@ -popup_agree_button_message: Hyväksy -popup_more_info_button_message: 'Näytä evästeet' -popup_find_more_button_message: 'Näytä evästeet' -popup_hide_button_message: Piilossa -popup_info: - value: '

Hel.fi käyttää evästeitä

Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen.

' -popup_link: /cookie-information-and-settings -disagree_button_label: 'Ei kiitos' -withdraw_tab_button_label: Tietosuoja-asetukset -save_preferences_button_label: 'Hyväksy valitut evästeet' -accept_all_categories_button_label: 'Hyväksy kaikki evästeet' diff --git a/conf/cmi/language/fi/hdbt_cookie_banner.settings.yml b/conf/cmi/language/fi/hdbt_cookie_banner.settings.yml new file mode 100644 index 00000000..26d5fef4 --- /dev/null +++ b/conf/cmi/language/fi/hdbt_cookie_banner.settings.yml @@ -0,0 +1,3 @@ +cookie_information: + title: Evästeasetukset + content: "Eväste (engl. cookie) on pienikokoinen tekstitiedosto, jonka verkkoselain tallentaa käyttäjän tietokoneelle tai mobiililaitteelle, kun vierailet verkkosivustolla. Se ei vahingoita käyttäjän laitetta tai tiedostoja. Evästeitä ei voi käyttää haittaohjelmien levittämiseen.\r\n\r\nEvästeistä saatava käyttäjätieto auttaa meitä varmistamaan sivuston teknisen toimivuuden ja parantamaan digitaalisten palveluidemme laatua. Niiden avulla voimme kehittää sivuston käyttäjäystävällisyyttä ja helpottaa tiedon löytymistä." diff --git a/conf/cmi/language/fi/helfi_eu_cookie_compliance.cookie_consent_intro.yml b/conf/cmi/language/fi/helfi_eu_cookie_compliance.cookie_consent_intro.yml deleted file mode 100644 index 8b78ae23..00000000 --- a/conf/cmi/language/fi/helfi_eu_cookie_compliance.cookie_consent_intro.yml +++ /dev/null @@ -1,5 +0,0 @@ -cc: - content: - value: '

Eväste (engl. cookie) on pienikokoinen tekstitiedosto, jonka verkkoselain tallentaa käyttäjän tietokoneelle tai mobiililaitteelle, kun vierailet verkkosivustolla. Se ei vahingoita käyttäjän laitetta tai tiedostoja. Evästeitä ei voi käyttää haittaohjelmien levittämiseen.

Evästeistä saatava käyttäjätieto auttaa meitä varmistamaan sivuston teknisen toimivuuden ja parantamaan digitaalisten palveluidemme laatua. Niiden avulla voimme kehittää sivuston käyttäjäystävällisyyttä ja helpottaa tiedon löytymistä.

' - format: full_html - title: Evästeasetukset diff --git a/conf/cmi/language/fi/social_media.settings.yml b/conf/cmi/language/fi/social_media.settings.yml index 973f8ba0..94e60de6 100644 --- a/conf/cmi/language/fi/social_media.settings.yml +++ b/conf/cmi/language/fi/social_media.settings.yml @@ -1,7 +1,7 @@ social_media: facebook_share: text: 'Jaa Facebook-palvelussa' - api_url: 'http://www.facebook.com/share.php?u=[current-page:url]&title=[current-page:title]' + api_url: 'https://www.facebook.com/share.php?u=[current-page:url]&title=[current-page:title]' attributes: "target|_blank\r\nclass|facebook-share" linkedin: text: 'Jaa LinkedIn-palvelussa' diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml deleted file mode 100644 index 9715a41b..00000000 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: - value: '

Chattarna på webbplatsen www.hel.fi  fungerar med hjälp av funktionella chattkakor. Om du inleder en chatt godkänner du automatiskt de nödvändiga funktionella kakorna.  Då behövs inget separat samtycke till kakor. Funktionella chattkakor laddas endast ner på din enhet om du inleder en chatt.

NamnTjänsteleverantörCookie syfteGiltighetTyp
_genesys.widgets.*www.hel.fiAnvänds för att lagra data som behövs för chatten.session 
leijuke.*www.hel.fiAnvänds för att lagra data som behövs för chatten.session 
aiap-wbc-chat-app-button-statewww.hel.fiAnvänds för chattapplikationens funktionalitet. Lagrar inställningar och konfigurationsdata för chattapplikationens knapp.session 
aiap-chat-app-v1-statewww.hel.fiAnvänds för chattapplikationens funktionalitet. Lagrar inställningar och konfigurationsdata för chattapplikationen.session 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudAnvänds för chattapplikationens funktionalitet. Lagrar konversationstoken för autentisering och åtkomst till dataändamål.sessionTredje part
CallGuide.languagewww.hel.fiACE Chat: Språket som används i ACE Web SDK härleds från webbläsarnas föredragna språkinställning och ACE Web SDK-inställningar.-Local storage
CallGuide.config_services_*www.hel.fiACE Chatt: Konfigurera kundtjänstintegrationer på en webbsida. Minskar webbtrafiken när du läser in och navigerar på en sida.-Local storage
*_CGWebSDK_windowGUIDwds.ace.teliacompany.comACE Chatt: Den unika identiteten för det här webbläsarfönstret. Används om webbläsaren har mer än ett öppet fönster för en webbplats.-Local storage
*_CGWebSDK_videoShowerwds.ace.teliacompany.comACE Chatt: Endast ett fönster i taget kan visa video. Den här informationen spårar vilka av dem (om några).-Local storage
*_CGWebSDK_videoClientswds.ace.teliacompany.comACE Chatt: En lista över alla fönster som sannolikt kommer att visa videon.-Local storage
*_ACEChatState_ActiveClientwds.ace.teliacompany.comACE Chatt: En webbplats kan ha mer än en chattklient. Det här objektet spårar vilken kund den aktuella chatten tillhör.-Local storage
*_chatEntrancewds.ace.teliacompany.comACE Chatt: Namnet på chattingången till systemet-Local storage
*_chatUIDwds.ace.teliacompany.comACE Chatt: Chattsessions-ID vid kommunikation med ACE-Local storage
humany-*www.hel.fiACE Chatt: Bevarar widgetstatus när sidan laddas om-Local storage
ARRAffinity.hel.humany.netACE Chatt: Lastbalansering i backend-systemetSessionTredje part
ARRAffinitySameSite.hel.humany.netACE Chatt: Lastbalansering i backend-systemetSessionTredje part
' - format: full_html -label: 'Funktionella chattkakor' diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.essential.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.essential.yml deleted file mode 100644 index 1a90fe7a..00000000 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.essential.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: - value: '

Nödvändiga cookies hjälper till att göra webbplatsen användbar genom att tillåta grundläggande funktioner som att navigera på sidan och använda de skyddade områdena på webbplatsen. Webbplatsen fungerar inte korrekt utan dessa cookies och kräver inte samtycke.

NamnTjänsteleverantörCookie syfteGiltighetTyp
cookiehubcookiehub.comCookie möjliggör hantering av cookies på www.hel.fi webbplatsen.365 dagar 
cookie-agreedwww.hel.fiCookie möjliggör hantering av cookies på webbplatsen.100 dagar 
cookie-agreed-versionwww.hel.fiAnvänds för att lagra information om versionen av cookies samtycke som användaren har godkänt.100 dagar 
cookie-agreed-categorieswww.hel.fiAnvänds för att lagra information om vilka cookie -kategorier användaren har godkänt.100 dagar 
cookie-agreedavustukset.hel.fiCookie möjliggör hantering av cookies på webbplatsen.100 dagar 
cookie-agreed-versionavustukset.hel.fiAnvänds för att lagra information om versionen av cookies samtycke som användaren har godkänt.100 dagar 
cookie-agreed-categoriesavustukset.hel.fiAnvänds för att lagra information om vilka cookie -kategorier användaren har godkänt.100 dagar 
SSESS*www.hel.fiEn cookie relaterad till driften av innehållshanteringssystemet.23 dagar 
SSESS*avustukset.hel.fiEn cookie relaterad till driften av innehållshanteringssystemet.23 dagar 
AWSELBCORSsiteimproveanalytics.ioCookie är kopplad till funktionen för lastfördelning som styr begäran till en server med mindre belastning.sessionTredje part
mtm_cookie_consentkartta.hel.fiA technical cookie that stores information about how you responded to the notice in the cookie banner about the use of cookies.10950 dagar 
JSESSIONID

helsinkikanava.fi

coh-chat-app-prod.eu-de.mybluemix.net

Kakan är en obligatorisk kaka som gör det möjligt för besökaren att besöka webbplatsen.sessionTredje part
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudAnvänds för chattapplikationens funktionalitet. Dess värde används för att få tillgång till sessiondata på applikationens server.sessionTredje part
COOKIE_SUPPORThelsinkikanava.fiKakan möjliggör hanteringen av kakor på webbplatsen.365 dagarTredje part
GUEST_LANGUAGE_IDhelsinkikanava.fiDenna cookie genereras av Liferay, dess funktion är att lagra språkinställningarna.365 dagarTredje part
helfi-settingswww.hel.fiAnvänds av www.hel.fi Drupal för att lagra information om stängda meddelanden och accordions'' tillstånd.-Local storage
Drupal.visitor.autologout_loginavustukset.hel.fiAnvänds av avustukset.hel.fi Drupal för att automatiskt logga ut användare efter en period av inaktivitet.365 dagar 
Drupal.gin.sidebarExpanded.desktopwww.hel.fiLagrar om admin-sidopanelen är expanderad eller kollapsad på skrivbordet när du är inloggad som redaktör på hel.fi.-Local storage
Drupal.gin.sidebarExpanded.mobilewww.hel.fiLagrar om admin-sidopanelen är expanderad eller kollapsad på mobil när du är inloggad som redaktör på hel.fi.-Local storage
Drupal.gin.darkmodewww.hel.fiLagrar användarens mörkt läge-inställning i admin-temat när du är inloggad som redaktör på hel.fi.-Local storage
Drupal.toolbar.subtrees.*www.hel.fiLagrar tillståndet för expanderade eller kollapsade undermenyer i Drupals admin-verktygsfält för en inloggad redaktör, vilket säkerställer konsekvens mellan sidladdningar.-Local storage
Drupal.off-canvas.css.*www.hel.fiLagrar cachelagrad CKEditor CSS i localStorage för en inloggad redaktör, med en nyckel som använder en cache-brytande fråga för att säkerställa att den senaste CSS-filen laddas.-Local storage
ed11ySeenwww.hel.fiSpårar vilka tillgänglighetsproblem en inloggad redaktör redan har sett för att undvika dubbla aviseringar.-Local storage
editoria11yResultCountwww.hel.fiSpårar antalet tillgänglighetsproblem som hittats på specifika sidor för en inloggad redaktör, vilket hjälper till att övervaka och åtgärda dem.-Local storage
Drupal.toolbar.toolbarStatewww.hel.fiLagrar tillståndet för admin-verktygsfältet för en inloggad redaktör, inklusive dess orientering, aktiva flik och expanderade tillstånd.SessionSession storage
escapeAdminPathwww.hel.fiLagrar URL för att omdirigera en inloggad redaktör från admin-gränssnittet tillbaka till huvudsidan.-Session storage
' - format: full_html -label: 'Nödvändiga funktionella cookies' diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml deleted file mode 100644 index cef60a8e..00000000 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml +++ /dev/null @@ -1,4 +0,0 @@ -label: Preferens -description: - value: '

Preferenscookies ändrar webbplatsens utseende och funktioner enligt användarens tidigare användning.

NamnTjänsteleverantörCookie syfteGiltighetTyp
httpskartta.hel.fi.SWCulturekartta.hel.fiI kakan på stadens kaktjänst sparas det språk som användaren använder i tjänsten.1826 dagar 
icareus-devicehelsinkikanava.fiHelsinki-kanavas kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen.365 dagarTredje part
VISITOR_INFO1_LIVEyoutube.comYouTubes kaka väljer antingen den nya eller gamla videospelaren enligt förbindelsens hastighet.180 dagarTredje part
CONSENTyoutube.comAnvänds av Google för att lagra inställningar för användarens samtycke.5947 dagar, 15 timmarTredje part
activeTabwww.hel.fiAnvänds för att lagra aktiv flikdata när användaren använder gymnasiesökning.Session 
activeContentwww.hel.fiAnvänds för att lagra aktivt innehållsdata när användaren använder gymnasiesökning.Session 

 

' - format: full_html diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml deleted file mode 100644 index 92e0cd64..00000000 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml +++ /dev/null @@ -1,4 +0,0 @@ -description: - value: '

De uppgifter statistikkakorna samlar in används för att utveckla webbplatsen.

NamnTjänsteleverantörCookie syfteGiltighetTyp
nmstatwww.hel.fiSiteimproves kaka samlar information om hur webbplatsen används.1000 dagar 
_pk_id.*www.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.393 dagar 
_pk_ses.141.89f6www.hel.fi-1 timme 
_pk_id.*kartta.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.393 dagar 
_pk_ses.*kartta.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.1 timme 
_pk_id.*palvelukartta.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.393 dagar 
_pk_ses.*palvelukartta.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.1 timme 
_pk_id.*avustukset.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.393 dagar 
_pk_ses.*avustukset.hel.fiMatomo-statistiksystemets kaka samlar information om hur webbplatsen används.1 timme 
rnsbidreactandshare.com

En post relaterad till driften av reaktionsknappen 

Askem

.

-Local storage
rnsbid_tsreactandshare.com

En post relaterad till driften av reaktionsknappen 

Askem

.

-Local storage
rns_reaction_*reactandshare.com

En post relaterad till driften av reaktionsknappen 

Askem

.

-Local storage
YSCyoutube.comYouTubes kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen.sessionTredje part

 

' - format: full_html -label: Statistik diff --git a/conf/cmi/language/sv/eu_cookie_compliance.settings.yml b/conf/cmi/language/sv/eu_cookie_compliance.settings.yml deleted file mode 100644 index df981cb7..00000000 --- a/conf/cmi/language/sv/eu_cookie_compliance.settings.yml +++ /dev/null @@ -1,11 +0,0 @@ -popup_agree_button_message: Accepterar -popup_more_info_button_message: 'Visa cookies' -popup_find_more_button_message: 'Visa cookies' -popup_hide_button_message: Dölj -popup_info: - value: '

Hel.fi använder cookies

Vi använder viktiga cookies på vår webbplats för att få webbplatsen att fungera. Även tredjepartscookies används om du ger oss ditt tillstånd.

' -disagree_button_label: 'Nej, tack' -withdraw_action_button_label: 'Återkalla samtycke' -withdraw_tab_button_label: Sekretessinställningar -save_preferences_button_label: 'Acceptera valda cookies' -accept_all_categories_button_label: 'Acceptera alla cookies' diff --git a/conf/cmi/language/sv/hdbt_cookie_banner.settings.yml b/conf/cmi/language/sv/hdbt_cookie_banner.settings.yml new file mode 100644 index 00000000..e079a63d --- /dev/null +++ b/conf/cmi/language/sv/hdbt_cookie_banner.settings.yml @@ -0,0 +1,3 @@ +cookie_information: + title: 'Cookie -inställningar' + content: "En kaka (eng. cookie) är en liten textfil som webbläsaren sparar i användarens dator eller mobila enhet när hen besöker en webbplats. Den skadar inte användarens enhet eller filer. Kakor kan inte användas för att sprida skadeprogram.\r\n\r\nAnvändarinformationen som fås från kakorna hjälper oss att säkerställa webbplatsens funktionalitet och förbättra kvaliteten på våra digitala tjänster. Med hjälp av dem kan vi utveckla webbplatsens användarvänlighet och göra det lättare att hitta information." diff --git a/conf/cmi/language/sv/helfi_eu_cookie_compliance.cookie_consent_intro.yml b/conf/cmi/language/sv/helfi_eu_cookie_compliance.cookie_consent_intro.yml deleted file mode 100644 index 46d695ef..00000000 --- a/conf/cmi/language/sv/helfi_eu_cookie_compliance.cookie_consent_intro.yml +++ /dev/null @@ -1,5 +0,0 @@ -cc: - content: - value: '

En kaka (eng. cookie) är en liten textfil som webbläsaren sparar i användarens dator eller mobila enhet när hen besöker en webbplats. Den skadar inte användarens enhet eller filer. Kakor kan inte användas för att sprida skadeprogram.

Användarinformationen som fås från kakorna hjälper oss att säkerställa webbplatsens funktionalitet och förbättra kvaliteten på våra digitala tjänster. Med hjälp av dem kan vi utveckla webbplatsens användarvänlighet och göra det lättare att hitta information.

' - format: full_html - title: 'Cookie -inställningar' diff --git a/conf/cmi/language/sv/social_media.settings.yml b/conf/cmi/language/sv/social_media.settings.yml index 79ff812c..027c6e2c 100644 --- a/conf/cmi/language/sv/social_media.settings.yml +++ b/conf/cmi/language/sv/social_media.settings.yml @@ -1,7 +1,7 @@ social_media: facebook_share: text: 'Dela på Facebook' - api_url: 'http://www.facebook.com/share.php?u=[current-page:url]&title=[current-page:title]' + api_url: 'https://www.facebook.com/share.php?u=[current-page:url]&title=[current-page:title]' attributes: "target|_blank\r\nclass|facebook-share" linkedin: text: 'Dela på Linkedin' diff --git a/conf/cmi/search_api.index.job_listings.yml b/conf/cmi/search_api.index.job_listings.yml index 1c4a2c9a..c28c974d 100644 --- a/conf/cmi/search_api.index.job_listings.yml +++ b/conf/cmi/search_api.index.job_listings.yml @@ -3,30 +3,29 @@ langcode: en status: true dependencies: config: - - field.storage.node.field_original_language - - field.storage.node.field_task_area - - field.storage.taxonomy_term.field_external_id - - field.storage.node.field_employment_type - field.storage.node.field_employment - - field.storage.taxonomy_term.field_search_id + - field.storage.node.field_employment_type - field.storage.node.field_job_duration - - field.storage.node.field_publication_starts - - field.storage.node.field_organization_name - - field.storage.node.field_organization - field.storage.node.field_jobs + - field.storage.node.field_organization + - field.storage.node.field_organization_name + - field.storage.node.field_original_language - field.storage.node.field_postal_area - field.storage.node.field_postal_code - field.storage.node.field_promoted + - field.storage.node.field_publication_starts - field.storage.node.field_recruitment_id - field.storage.node.field_recruitment_type - - search_api.server.elastic_rekry + - field.storage.node.field_task_area + - field.storage.taxonomy_term.field_external_id + - field.storage.taxonomy_term.field_search_id + - search_api.server.default module: - - taxonomy - - node - - scheduler - - search_api - helfi_react_search - helfi_rekry_content + - node + - scheduler + - taxonomy id: job_listings name: 'Job listings' description: '' @@ -354,4 +353,4 @@ options: cron_limit: 50 index_directly: false track_changes_in_references: true -server: elastic_rekry +server: default diff --git a/conf/cmi/search_api.server.elastic_rekry.yml b/conf/cmi/search_api.server.default.yml similarity index 95% rename from conf/cmi/search_api.server.elastic_rekry.yml rename to conf/cmi/search_api.server.default.yml index e895c2d8..0aeba734 100644 --- a/conf/cmi/search_api.server.elastic_rekry.yml +++ b/conf/cmi/search_api.server.default.yml @@ -4,7 +4,7 @@ status: true dependencies: module: - elasticsearch_connector -id: elastic_rekry +id: default name: 'Elastic Rekry' description: '' backend: elasticsearch diff --git a/conf/cmi/social_media.settings.yml b/conf/cmi/social_media.settings.yml index 085af9f2..486ebb3b 100644 --- a/conf/cmi/social_media.settings.yml +++ b/conf/cmi/social_media.settings.yml @@ -5,7 +5,7 @@ social_media: facebook_share: enable: 1 text: 'Share in Facebook' - api_url: 'http://www.facebook.com/share.php?u=[current-page:url]&title=[current-page:title]' + api_url: 'https://www.facebook.com/share.php?u=[current-page:url]&title=[current-page:title]' api_event: href default_img: 0 weight: 1 diff --git a/conf/cmi/user.role.admin.yml b/conf/cmi/user.role.admin.yml index 74b35ec1..162a5d8f 100644 --- a/conf/cmi/user.role.admin.yml +++ b/conf/cmi/user.role.admin.yml @@ -25,9 +25,9 @@ dependencies: - content_translation - editoria11y - entity_usage - - eu_cookie_compliance - file - filter + - hdbt_cookie_banner - helfi_api_base - locale - media @@ -68,8 +68,7 @@ permissions: - 'access toolbar' - 'access user profiles' - 'administer blocks' - - 'administer eu cookie compliance categories' - - 'administer eu cookie compliance popup' + - 'administer hdbt_cookie_banner' - 'administer menu' - 'administer nodes' - 'administer paragraphs library' diff --git a/conf/cmi/user.role.anonymous.yml b/conf/cmi/user.role.anonymous.yml index 329eef74..656ff009 100644 --- a/conf/cmi/user.role.anonymous.yml +++ b/conf/cmi/user.role.anonymous.yml @@ -5,7 +5,6 @@ dependencies: config: - rest.resource.helfi_global_mobile_menu module: - - eu_cookie_compliance - external_entities - helfi_api_base - media @@ -20,7 +19,6 @@ weight: 0 is_admin: false permissions: - 'access content' - - 'display eu cookie compliance popup' - 'restful get helfi_global_mobile_menu' - 'send javascript errors to sentry' - 'view helfi_announcements external entity' diff --git a/conf/cmi/user.role.authenticated.yml b/conf/cmi/user.role.authenticated.yml index 7e38db2e..b0ca7820 100644 --- a/conf/cmi/user.role.authenticated.yml +++ b/conf/cmi/user.role.authenticated.yml @@ -5,7 +5,6 @@ dependencies: config: - rest.resource.helfi_global_mobile_menu module: - - eu_cookie_compliance - external_entities - file - helfi_api_base @@ -27,7 +26,6 @@ permissions: - 'access toolbar' - 'delete own files' - 'disable own tfa' - - 'display eu cookie compliance popup' - 'restful get helfi_global_mobile_menu' - 'send javascript errors to sentry' - 'setup own tfa' diff --git a/docker/openshift/crons/menu-queue.sh b/docker/openshift/crons/menu-queue.sh new file mode 100644 index 00000000..c4cd99b0 --- /dev/null +++ b/docker/openshift/crons/menu-queue.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +source /init.sh + +if [ -z "$AMQ_BROKERS" ]; then + exit 0 +fi + +if ! is_drupal_module_enabled "helfi_navigation"; then + exit 0 +fi + +while true +do + # Restart process every 12 hours. + drush stomp:worker helfi_navigation_menu_queue --lease-time 43200 +done diff --git a/docker/openshift/crons/migrate-changed-job-listings.sh b/docker/openshift/crons/migrate-changed-job-listings.sh deleted file mode 100644 index 655d7dbb..00000000 --- a/docker/openshift/crons/migrate-changed-job-listings.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -echo "Starting job listing:changed migrations: $(date)" -while true -do - echo "Running job listing:changed migrations: $(date)" - # Allow migrations to be run every 10 minutes, reset stuck migrations every 30 minutes. - drush migrate:import helfi_rekry_jobs:changed --update --reset-threshold 1800 --interval 600 --no-progress - - # Sleep for 15 minutes. - sleep 900 -done diff --git a/docker/openshift/crons/migrate-helbit-data.sh b/docker/openshift/crons/migrate-helbit-data.sh new file mode 100644 index 00000000..0b1b6d53 --- /dev/null +++ b/docker/openshift/crons/migrate-helbit-data.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +migrations=( + "helfi_rekry_images" + "helfi_rekry_videos" + "helfi_rekry_task_areas:fi" + "helfi_rekry_task_areas:sv" + "helfi_rekry_task_areas:en" + "helfi_rekry_organizations:fi" + "helfi_rekry_organizations:sv" + "helfi_rekry_organizations:en" + "helfi_rekry_employments" + "helfi_rekry_employment_types" +) + +echo "Starting helbit migrations: $(date)" +while true +do + echo "Running helbit migrations: $(date)" + + for migration in "${migrations[@]}"; do + # Allow migrations to be run every 1.5 hours, reset stuck migrations every 12 hours. + drush migrate:import "$migration" --reset-threshold 43200 --interval 5400 --no-progress + done + + drush helfi-rekry-content:clean-expired-listings + + # Sleep for 3 hours. + sleep 10800 +done diff --git a/docker/openshift/crons/migrate-job-listings.sh b/docker/openshift/crons/migrate-job-listings.sh index f7fd0d21..9734629a 100644 --- a/docker/openshift/crons/migrate-job-listings.sh +++ b/docker/openshift/crons/migrate-job-listings.sh @@ -1,17 +1,7 @@ #!/bin/bash migrations=( - "helfi_rekry_images:all" - "helfi_rekry_videos:all" - "helfi_rekry_task_areas:fi" - "helfi_rekry_task_areas:sv" - "helfi_rekry_task_areas:en" - "helfi_rekry_organizations:fi" - "helfi_rekry_organizations:sv" - "helfi_rekry_organizations:en" - "helfi_rekry_employments:all" - "helfi_rekry_employment_types:all" - "helfi_rekry_jobs:all" + "helfi_rekry_jobs" ) echo "Starting job listing migrations: $(date)" @@ -20,12 +10,10 @@ do echo "Running job listing migrations: $(date)" for migration in "${migrations[@]}"; do - # Allow migrations to be run every 1.5 hours, reset stuck migrations every 12 hours. - drush migrate:import "$migration" --reset-threshold 43200 --interval 5400 --no-progress + # Allow migrations to be run every 10 minutes, reset stuck migrations every 30 minutes. + drush migrate:import "$migration" --reset-threshold 1800 --interval 600 --no-progress --update done - drush helfi-rekry-content:clean-expired-listings - - # Sleep for 3 hours. - sleep 10800 + # Sleep for 15 minutes. + sleep 900 done diff --git a/docker/openshift/crons/revision-queue.sh b/docker/openshift/crons/revision-queue.sh new file mode 100644 index 00000000..130ba3fe --- /dev/null +++ b/docker/openshift/crons/revision-queue.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +if [ -z "$AMQ_BROKERS" ]; then + exit 0 +fi + +while true +do + # Restart process every 12 hours. + drush stomp:worker helfi_api_base_revision --lease-time 43200 +done diff --git a/public/modules/custom/helfi_rekry_content/migrations/employment_types.yml b/public/modules/custom/helfi_rekry_content/migrations/employment_types.yml index 47b7b8a4..ca1a9903 100644 --- a/public/modules/custom/helfi_rekry_content/migrations/employment_types.yml +++ b/public/modules/custom/helfi_rekry_content/migrations/employment_types.yml @@ -5,7 +5,6 @@ dependencies: module: - helfi_rekry_content id: helfi_rekry_employment_types -deriver: Drupal\helfi_rekry_content\Plugin\Deriver\HelbitMigrationDeriver migration_tags: - helfi_rekry_content - helfi_rekry_jobs diff --git a/public/modules/custom/helfi_rekry_content/migrations/employments.yml b/public/modules/custom/helfi_rekry_content/migrations/employments.yml index 9db81a72..b1e52765 100644 --- a/public/modules/custom/helfi_rekry_content/migrations/employments.yml +++ b/public/modules/custom/helfi_rekry_content/migrations/employments.yml @@ -5,7 +5,6 @@ dependencies: module: - helfi_rekry_content id: helfi_rekry_employments -deriver: Drupal\helfi_rekry_content\Plugin\Deriver\HelbitMigrationDeriver migration_tags: - helfi_rekry_content - helfi_rekry_jobs diff --git a/public/modules/custom/helfi_rekry_content/migrations/job_listing_images.yml b/public/modules/custom/helfi_rekry_content/migrations/job_listing_images.yml index f6528796..6a1b4686 100644 --- a/public/modules/custom/helfi_rekry_content/migrations/job_listing_images.yml +++ b/public/modules/custom/helfi_rekry_content/migrations/job_listing_images.yml @@ -5,7 +5,6 @@ dependencies: module: - helfi_rekry_content id: helfi_rekry_images -deriver: Drupal\helfi_rekry_content\Plugin\Deriver\HelbitMigrationDeriver migration_tags: - helfi_rekry_content - helfi_rekry_jobs diff --git a/public/modules/custom/helfi_rekry_content/migrations/job_listing_videos.yml b/public/modules/custom/helfi_rekry_content/migrations/job_listing_videos.yml index 762f37a8..7e91819c 100644 --- a/public/modules/custom/helfi_rekry_content/migrations/job_listing_videos.yml +++ b/public/modules/custom/helfi_rekry_content/migrations/job_listing_videos.yml @@ -5,7 +5,6 @@ dependencies: module: - helfi_rekry_content id: helfi_rekry_videos -deriver: Drupal\helfi_rekry_content\Plugin\Deriver\HelbitMigrationDeriver migration_tags: - helfi_rekry_content - helfi_rekry_jobs diff --git a/public/modules/custom/helfi_rekry_content/migrations/job_listings.yml b/public/modules/custom/helfi_rekry_content/migrations/job_listings.yml index 7f12af52..39345e2b 100644 --- a/public/modules/custom/helfi_rekry_content/migrations/job_listings.yml +++ b/public/modules/custom/helfi_rekry_content/migrations/job_listings.yml @@ -5,7 +5,6 @@ dependencies: module: - helfi_rekry_content id: helfi_rekry_jobs -deriver: Drupal\helfi_rekry_content\Plugin\Deriver\HelbitMigrationDeriver migration_tags: - helfi_rekry_content - helfi_rekry_jobs diff --git a/public/modules/custom/helfi_rekry_content/src/EventSubscriber/JobListingHideMissingSubscriber.php b/public/modules/custom/helfi_rekry_content/src/EventSubscriber/JobListingHideMissingSubscriber.php index e2ae1593..d97efc7b 100644 --- a/public/modules/custom/helfi_rekry_content/src/EventSubscriber/JobListingHideMissingSubscriber.php +++ b/public/modules/custom/helfi_rekry_content/src/EventSubscriber/JobListingHideMissingSubscriber.php @@ -7,6 +7,7 @@ use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Queue\QueueFactory; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\node\NodeInterface; use Drush\Drupal\Migrate\MigrateMissingSourceRowsEvent; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\Attribute\Autowire; @@ -83,14 +84,21 @@ function ($values, $destinationValue) { return; } - // Query missing nodes that are still published. - $query = $this->entityTypeManager->getStorage('node') - ->getQuery() + $query = $this->entityTypeManager + ->getStorage('node') + ->getQuery(); + + // Query missing nodes that are still published + // or still scheduled to be published. + $orCondition = $query->orConditionGroup(); + $orCondition->condition('status', NodeInterface::PUBLISHED); + $orCondition->exists('publish_on'); + + $nids = $query ->accessCheck(FALSE) ->condition('nid', $destinationIds, 'IN') - ->condition('status', 1) - ->notExists('unpublish_on'); - $nids = $query->execute(); + ->condition($orCondition) + ->execute(); foreach ($nids as $nid) { $job = ['nid' => $nid]; diff --git a/public/modules/custom/helfi_rekry_content/src/Plugin/Deriver/HelbitMigrationDeriver.php b/public/modules/custom/helfi_rekry_content/src/Plugin/Deriver/HelbitMigrationDeriver.php index ab950950..d280232d 100644 --- a/public/modules/custom/helfi_rekry_content/src/Plugin/Deriver/HelbitMigrationDeriver.php +++ b/public/modules/custom/helfi_rekry_content/src/Plugin/Deriver/HelbitMigrationDeriver.php @@ -36,41 +36,14 @@ public static function create(ContainerInterface $container, $base_plugin_id) : */ public function getDerivativeDefinitions($base_plugin_definition): array { $langcodes = ['fi', 'sv', 'en']; - $derivatives = ['all', 'changed']; - if ($base_plugin_definition['source']['plugin'] == 'helbit_open_jobs') { - foreach ($derivatives as $key) { - $this->derivatives[$key] = $this->getJobMigrationDerivativeValues($base_plugin_definition, $key); - } - } - else { - foreach ($langcodes as $langcode) { - $this->derivatives[$langcode] = $this->getDerivativeValues($base_plugin_definition, $langcode); - } + foreach ($langcodes as $langcode) { + $this->derivatives[$langcode] = $this->getDerivativeValues($base_plugin_definition, $langcode); } return $this->derivatives; } - /** - * Creates a derivative definition for job migration. - * - * @param array $base_plugin_definition - * Base migration definitions. - * @param string $key - * Key for derivative. - * - * @return array - * Modified plugin definition for derivative. - */ - private function getJobMigrationDerivativeValues(array $base_plugin_definition, string $key): array { - if (str_starts_with($key, 'changed')) { - $base_plugin_definition['source']['changed'] = TRUE; - } - - return $base_plugin_definition; - } - /** * Creates a derivative definition for each available language. * diff --git a/public/modules/custom/helfi_rekry_content/src/Plugin/QueueWorker/UnpublishWorker.php b/public/modules/custom/helfi_rekry_content/src/Plugin/QueueWorker/UnpublishWorker.php index e810e311..427b8b4b 100644 --- a/public/modules/custom/helfi_rekry_content/src/Plugin/QueueWorker/UnpublishWorker.php +++ b/public/modules/custom/helfi_rekry_content/src/Plugin/QueueWorker/UnpublishWorker.php @@ -6,20 +6,21 @@ use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\Core\Queue\Attribute\QueueWorker; use Drupal\Core\Queue\QueueWorkerBase; +use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\node\NodeInterface; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Queue Worker for removing job listings not present in source. - * - * @QueueWorker( - * id = "job_listing_unpublish_worker", - * title = @Translation("Job listing unpublish worker"), - * cron = {"time" = 60} - * ) */ +#[QueueWorker( + id: 'job_listing_unpublish_worker', + title: new TranslatableMarkup('Job listing unpublish worker'), + cron: ['time' => 60], +)] final class UnpublishWorker extends QueueWorkerBase implements ContainerFactoryPluginInterface { /** @@ -74,7 +75,9 @@ public function processItem($data): void { // Unpublish all translations. if ($node instanceof NodeInterface && $node->getType() == 'job_listing') { - foreach (['fi', 'sv', 'en'] as $langcode) { + foreach ($node->getTranslationLanguages() as $language) { + $langcode = $language->getId(); + // Unpublish the job listing node as it's still published, but it's // no longer available at the source. if (!$node->hasTranslation($langcode)) { @@ -82,15 +85,15 @@ public function processItem($data): void { } $translation = $node->getTranslation($langcode); - if ($translation->isPublished()) { - $translation->setUnpublished(); - if ($translation->hasField('publish_on') && !empty($translation->get('publish_on')->getValue())) { - // Also clear the publish on date to make sure the translation is - // not going to be re-published. - $translation->set('publish_on', NULL); - } - $translation->save(); + $translation->setUnpublished(); + + // Also clear the published on date so the translation + // is not going to be re-published. + if ($translation->hasField('publish_on') && !empty($translation->get('publish_on')->getValue())) { + $translation->set('publish_on', NULL); } + + $translation->save(); } } diff --git a/public/modules/custom/helfi_rekry_content/src/Plugin/migrate/source/HelbitOpenJobs.php b/public/modules/custom/helfi_rekry_content/src/Plugin/migrate/source/HelbitOpenJobs.php index 838048a7..18e218ca 100644 --- a/public/modules/custom/helfi_rekry_content/src/Plugin/migrate/source/HelbitOpenJobs.php +++ b/public/modules/custom/helfi_rekry_content/src/Plugin/migrate/source/HelbitOpenJobs.php @@ -50,10 +50,6 @@ protected function initializeIterator(): \Iterator { $query = []; - if ($this->configuration['changed'] ?? FALSE) { - $query['timestamp'] = date('Y-m-d\TH:m:i', strtotime('-1 day')); - } - foreach ($langcodes as $langcode) { foreach ($this->helbit->getJobListings($langcode, $query) as $row) { $fields = $this->getFieldsFromRow($row) + [ diff --git a/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitMigrationDeriverTest.php b/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitMigrationDeriverTest.php index 8cd3a65a..4f209c27 100644 --- a/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitMigrationDeriverTest.php +++ b/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitMigrationDeriverTest.php @@ -21,19 +21,6 @@ class HelbitMigrationDeriverTest extends KernelTestBase { * Tests Helbit deriver. */ public function testHelbitDeriver(): void { - $deriver = new HelbitMigrationDeriver(new Settings(self::TEST_HELBIT_KEY)); - $result = $deriver->getDerivativeDefinitions([ - 'id' => 'helfi_rekry_jobs', - 'source' => [ - 'plugin' => 'helbit_open_jobs', - ], - ]); - - $this->assertArrayHasKey('all', $result); - $this->assertArrayHasKey('changed', $result); - $this->assertEmpty($result['all']['source']['changed'] ?? NULL); - $this->assertTrue($result['changed']['source']['changed']); - $deriver = new HelbitMigrationDeriver(new Settings(self::TEST_HELBIT_KEY)); $result = $deriver->getDerivativeDefinitions([ 'id' => 'helfi_rekry_task_areas', diff --git a/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitOpenJobsTest.php b/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitOpenJobsTest.php index 0e51f0de..355366ee 100644 --- a/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitOpenJobsTest.php +++ b/public/modules/custom/helfi_rekry_content/tests/src/Kernel/HelbitOpenJobsTest.php @@ -50,29 +50,6 @@ public function testException(): void { ->next(); } - /** - * Tests that changed timestamp is present in request when configured. - */ - public function testChangedTimestamp(): void { - $isValidTime = static fn (array $query) => preg_match('/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/', $query['timestamp']); - - $helbit = $this->prophesize(HelbitClient::class); - $helbit - ->getJobListings(Argument::any(), Argument::that($isValidTime)) - ->shouldBeCalled(); - - $this - ->getSut($helbit->reveal(), [ - 'changed' => TRUE, - 'ids' => [ - 'id' => [ - 'type' => 'string', - ], - ], - ]) - ->next(); - } - /** * Tests iterator. */ diff --git a/public/modules/custom/helfi_rekry_content/tests/src/Kernel/UnpublishWorkerTest.php b/public/modules/custom/helfi_rekry_content/tests/src/Kernel/UnpublishWorkerTest.php new file mode 100644 index 00000000..329cb233 --- /dev/null +++ b/public/modules/custom/helfi_rekry_content/tests/src/Kernel/UnpublishWorkerTest.php @@ -0,0 +1,105 @@ +installEntitySchema('node'); + $this->installEntitySchema('user'); + $this->installSchema('node', 'node_access'); + $this->installConfig(['node', 'filter']); + $this->createContentType(['type' => 'job_listing']); + } + + /** + * Tests unpublish worker. + */ + public function testUnpublishWorker(): void { + $manager = $this->container->get('plugin.manager.queue_worker'); + $sut = $manager->createInstance('job_listing_unpublish_worker'); + + $published_node = $this->createNode([ + 'type' => 'job_listing', + 'status' => NodeInterface::PUBLISHED, + ]); + + $scheduled_node = $this->createNode([ + 'type' => 'job_listing', + 'status' => NodeInterface::NOT_PUBLISHED, + ]); + + ConfigurableLanguage::createFromLangcode('sv')->save(); + $translated_node = $this->createNode([ + 'type' => 'job_listing', + 'langcode' => 'en', + 'status' => NodeInterface::NOT_PUBLISHED, + ]); + $translated_node->addTranslation('sv', [ + 'title' => $this->randomMachineName(), + 'status' => NodeInterface::PUBLISHED, + ])->save(); + + $sut->processItem(['nid' => $published_node->id()]); + $this->assertNodeIsUnpublished($published_node->id()); + + $sut->processItem(['nid' => $scheduled_node->id()]); + $this->assertNodeIsUnpublished($scheduled_node->id()); + + $sut->processItem(['nid' => $translated_node->id()]); + $this->assertNodeIsUnpublished($translated_node->id()); + } + + /** + * Asserts that node is no longer published. + */ + private function assertNodeIsUnpublished(string $nid): void { + /** @var \Drupal\node\NodeInterface $node */ + $node = $this->container->get(EntityTypeManagerInterface::class) + ->getStorage('node') + ->load($nid); + + foreach ($node->getTranslationLanguages() as $language) { + $translation = $node->getTranslation($language->getId()); + $this->assertFalse($translation->isPublished()); + $this->assertEmpty($translation->get('publish_on')->getValue()); + } + } + +} diff --git a/public/sites/default/all.settings.php b/public/sites/default/all.settings.php index 4c1d75f4..2c92bedd 100644 --- a/public/sites/default/all.settings.php +++ b/public/sites/default/all.settings.php @@ -5,20 +5,6 @@ * Contains site specific overrides. */ -// Client ID for Helbit integration. -$config['helfi_rekry_content.settings']['helbit_client_id'] = getenv('HELBIT_CLIENT_ID'); - -// Elasticsearch settings. -if (getenv('ELASTICSEARCH_URL')) { - $config['search_api.server.elastic_rekry']['backend_config']['connector_config']['url'] = getenv('ELASTICSEARCH_URL'); - - if (getenv('ELASTIC_USER') && getenv('ELASTIC_PASSWORD')) { - $config['search_api.server.elastic_rekry']['backend_config']['connector'] = 'basicauth'; - $config['search_api.server.elastic_rekry']['backend_config']['connector_config']['username'] = getenv('ELASTIC_USER'); - $config['search_api.server.elastic_rekry']['backend_config']['connector_config']['password'] = getenv('ELASTIC_PASSWORD'); - } -} - // Elastic proxy URL. $config['elastic_proxy.settings']['elastic_proxy_url'] = getenv('ELASTIC_PROXY_URL'); @@ -71,7 +57,10 @@ 'ELASTIC_PASSWORD', 'SENTRY_DSN_REACT', 'HELBIT_CLIENT_ID', - 'HAKUVAHTI_URL' + 'HAKUVAHTI_URL', + // 'AMQ_BROKERS', + // 'AMQ_USER', + // 'AMQ_PASSWORD', ]; foreach ($additionalEnvVars as $var) { $preflight_checks['environmentVariables'][] = $var; diff --git a/public/sites/default/settings.php b/public/sites/default/settings.php index 2f8d1e8e..b68b80aa 100755 --- a/public/sites/default/settings.php +++ b/public/sites/default/settings.php @@ -260,24 +260,18 @@ function drupal_get_env(string|array $variables) : mixed { $config['helfi_proxy.settings']['session_suffix'] = $session_suffix; } -if ($robots_header_enabled = getenv('DRUPAL_X_ROBOTS_TAG_HEADER')) { - $config['helfi_proxy.settings']['robots_header_enabled'] = (bool) $robots_header_enabled; -} - -$artemis_destination = drupal_get_env([ - 'ARTEMIS_DESTINATION', +$amq_destination = drupal_get_env([ 'PROJECT_NAME', ]); +$amq_brokers = getenv('AMQ_BROKERS'); -$artemis_brokers = getenv('ARTEMIS_BROKERS'); - -if ($artemis_brokers && $artemis_destination) { +if ($amq_brokers && $amq_destination) { $settings['stomp']['default'] = [ - 'clientId' => getenv('ARTEMIS_CLIENT_ID') ?: 'artemis', - 'login' => getenv('ARTEMIS_LOGIN') ?: NULL, - 'passcode' => getenv('ARTEMIS_PASSCODE') ?: NULL, - 'destination' => sprintf('/queue/%s', $artemis_destination), - 'brokers' => $artemis_brokers, + 'clientId' => getenv('AMQ_CLIENT_ID') ?: 'client_ ' . $amq_destination, + 'login' => getenv('AMQ_USER') ?: NULL, + 'passcode' => getenv('AMQ_PASSWORD') ?: NULL, + 'destination' => sprintf('/queue/%s', $amq_destination), + 'brokers' => $amq_brokers, 'timeout' => ['read' => 12000], 'heartbeat' => [ 'send' => 20000, @@ -289,7 +283,17 @@ function drupal_get_env(string|array $variables) : mixed { ], ], ]; - $settings['queue_default'] = 'queue.stomp.default'; + + $queues = [ + 'helfi_navigation_menu_queue', + 'helfi_api_base_revision', + ]; + foreach ($queues as $queue) { + // $settings['queue_service_' . $queue] = 'queue.stomp.default'; + } + // You must configure project specific queues manually in 'all.settings.php' + // file. + // @see https://github.com/City-of-Helsinki/drupal-helfi-platform/blob/main/documentation/queue.md } $config['filelog.settings']['rotation']['schedule'] = 'never'; @@ -355,6 +359,27 @@ function drupal_get_env(string|array $variables) : mixed { 'additionalFiles' => [], ]; +// Elasticsearch server config. +if (getenv('ELASTICSEARCH_URL')) { + $config['search_api.server.default']['backend_config']['connector_config']['url'] = getenv('ELASTICSEARCH_URL'); + + if (getenv('ELASTIC_USER') && getenv('ELASTIC_PASSWORD')) { + $config['search_api.server.default']['backend_config']['connector'] = 'helfi_connector'; + $config['search_api.server.default']['backend_config']['connector_config']['username'] = getenv('ELASTIC_USER'); + $config['search_api.server.default']['backend_config']['connector_config']['password'] = getenv('ELASTIC_PASSWORD'); + } +} + + +// Supported values: https://github.com/Seldaek/monolog/blob/main/doc/01-usage.md#log-levels. +$default_log_level = getenv('APP_ENV') === 'production' ? 'info' : 'debug'; +$settings['helfi_api_base.log_level'] = getenv('LOG_LEVEL') ?: $default_log_level; + +// Turn sentry JS error tracking on if SENTRY_DSN_PUBLIC is defined. +if (getenv('SENTRY_DSN_PUBLIC')) { + $config['raven.settings']['javascript_error_handler'] = TRUE; +} + // Environment specific overrides. if (file_exists(__DIR__ . '/all.settings.php')) { // phpcs:ignore @@ -385,15 +410,6 @@ function drupal_get_env(string|array $variables) : mixed { } } -// Supported values: https://github.com/Seldaek/monolog/blob/main/doc/01-usage.md#log-levels. -$default_log_level = getenv('APP_ENV') === 'production' ? 'info' : 'debug'; -$settings['helfi_api_base.log_level'] = getenv('LOG_LEVEL') ?: $default_log_level; - -// Turn sentry JS error tracking on if SENTRY_DSN_PUBLIC is defined. -if (getenv('SENTRY_DSN_PUBLIC')) { - $config['raven.settings']['javascript_error_handler'] = TRUE; -} - /** * Deployment identifier. * diff --git a/public/themes/custom/hdbt_subtheme/dist/js/siteimprove_analytics.min.js b/public/themes/custom/hdbt_subtheme/dist/js/siteimprove_analytics.min.js index c8e7389d..5fa13603 100644 --- a/public/themes/custom/hdbt_subtheme/dist/js/siteimprove_analytics.min.js +++ b/public/themes/custom/hdbt_subtheme/dist/js/siteimprove_analytics.min.js @@ -1 +1 @@ -!function(Drupal){function e(){if(void 0!==Drupal.eu_cookie_compliance&&Drupal.eu_cookie_compliance.hasAgreed("statistics")){const e=document,t=e.body,c=e.createElement("script");c.type="text/javascript",c.async=!0,c.src="//siteimproveanalytics.com/js/siteanalyze_6047173.js",t.appendChild(c)}}document.addEventListener("eu_cookie_compliance.changeStatus",e,!1),document.addEventListener("DOMContentLoaded",e,!1)}(Drupal); \ No newline at end of file +!function(Drupal){const t=()=>{if(Drupal.cookieConsent.getConsentStatus(["statistics"])){const t=document,e=t.body,n=t.createElement("script");n.type="text/javascript",n.async=!0,n.src="//siteimproveanalytics.com/js/siteanalyze_6047173.js",e.appendChild(n)}};Drupal.cookieConsent.initialized()?t():Drupal.cookieConsent.loadFunction(t)}(Drupal); \ No newline at end of file diff --git a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml index 42624f8a..6bdca649 100644 --- a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml +++ b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml @@ -10,7 +10,6 @@ siteimprove-analytics: dist/js/siteimprove_analytics.min.js: {} dependencies: - core/drupal - - eu_cookie_compliance/eu_cookie_compliance # Turn datetime into text, f.ex "today" datetime_comparison: diff --git a/public/themes/custom/hdbt_subtheme/package-lock.json b/public/themes/custom/hdbt_subtheme/package-lock.json index 192be79a..85e70e7a 100644 --- a/public/themes/custom/hdbt_subtheme/package-lock.json +++ b/public/themes/custom/hdbt_subtheme/package-lock.json @@ -3726,9 +3726,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", diff --git a/public/themes/custom/hdbt_subtheme/src/js/siteimprove_analytics.js b/public/themes/custom/hdbt_subtheme/src/js/siteimprove_analytics.js index 727c5471..3ea3fbc3 100644 --- a/public/themes/custom/hdbt_subtheme/src/js/siteimprove_analytics.js +++ b/public/themes/custom/hdbt_subtheme/src/js/siteimprove_analytics.js @@ -1,12 +1,9 @@ // eslint-disable-next-line func-names (function (Drupal) { - function loadSiteimproveAnalytics() { - if (typeof Drupal.eu_cookie_compliance === 'undefined') { - return; - } + const loadSiteimproveAnalytics = () => { // Load Siteimprove analytics only if statistics cookies are allowed. - if (Drupal.eu_cookie_compliance.hasAgreed('statistics')) { + if (Drupal.cookieConsent.getConsentStatus(['statistics'])) { // eslint-disable-next-line no-multi-assign const d = document; const b = d.body; @@ -16,11 +13,12 @@ g.src = '//siteimproveanalytics.com/js/siteanalyze_6047173.js'; b.appendChild(g); } - } + }; - // Load when cookie settings are changed. - document.addEventListener('eu_cookie_compliance.changeStatus', loadSiteimproveAnalytics, false); - - // Load on page load. - document.addEventListener('DOMContentLoaded', loadSiteimproveAnalytics, false); + // Initialize Siteimprove analytics. + if (Drupal.cookieConsent.initialized()) { + loadSiteimproveAnalytics(); + } else { + Drupal.cookieConsent.loadFunction(loadSiteimproveAnalytics); + } })(Drupal);