diff --git a/.env b/.env index 5afff69b..dcd21a41 100644 --- a/.env +++ b/.env @@ -29,3 +29,6 @@ HELBIT_CLIENT_ID= # URL for Elasticsearch (for job search) ELASTIC_PROXY_URL=https://elastic-helfi-rekry.docker.so + +# Hakuvahti URL +HAKUVAHTI_URL=http://helfi-rekry.docker.so:3000 diff --git a/README.md b/README.md index f8ae9627..938a6a9e 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,11 @@ This will log you inside the app container: ``` $ make shell ``` + +## Enable Hakuvahti features + +To enable [Hakuvahti features](https://github.com/City-of-Helsinki/helfi-hakuvahti) for local development or usage, you need to first install Hakuvahti and then enable Hakuvahti network in compose.yaml. + +These lines are commented out with comment `# Uncomment to enable Hakuvahti:` + +Specifically what is commented out: `HAKUVAHTI_URL` environment variable, `helfi-hakuvahti_helfi-hakuvahti-network` for `app` and `elastic` containers. Finally it needs to be listed under `networks`. This enables Hakuvahti server to access ElasticSearch. diff --git a/azure-pipelines-devtest.yml b/azure-pipelines-devtest.yml deleted file mode 100644 index 53c0776a..00000000 --- a/azure-pipelines-devtest.yml +++ /dev/null @@ -1,48 +0,0 @@ -# Continuous integration (CI) triggers cause a pipeline to run whenever you push -# an update to the specified branches or you push specified tags. -trigger: - batch: true - branches: - include: - - dev - paths: - exclude: - - README.md - -# Pull request (PR) triggers cause a pipeline to run whenever a pull request is -# opened with one of the specified target branches, or when updates are made to -# such a pull request. -# -# GitHub creates a new ref when a pull request is created. The ref points to a -# merge commit, which is the merged code between the source and target branches -# of the pull request. -# -# Opt out of pull request validation -pr: none - -# By default, use self-hosted agents -pool: Default - -# Image tag name for Fuse projects -#parameters: -#- name: imagetag -# displayName: Image tag to be built and/or deployed -# type: string -# default: latest - -resources: - repositories: - # Azure DevOps repository - - repository: helfi-rekry-pipelines - type: git - # Azure DevOps project/repository - name: helfi-rekry/helfi-rekry-pipelines - -extends: - # Filename in Azure DevOps Repository (note possible -ui or -api) - # Django example: azure-pipelines-PROJECTNAME-api-master.yml - # Drupal example: azure-pipelines-drupal-master.yml - template: azure-pipelines-drupal-devtest.yml@helfi-rekry-pipelines - # Image tag name for Fuse projects - #parameters: - #imagetag: ${{ parameters.imagetag }} diff --git a/azure-pipelines-prod.yml b/azure-pipelines-prod.yml deleted file mode 100644 index bb35bb29..00000000 --- a/azure-pipelines-prod.yml +++ /dev/null @@ -1,47 +0,0 @@ -# Continuous integration (CI) triggers cause a pipeline to run whenever you push -# an update to the specified branches or you push specified tags. -trigger: none -# batch: true -# branches: -# include: -# - main -# paths: -# exclude: -# - README.md - -# Pull request (PR) triggers cause a pipeline to run whenever a pull request is -# opened with one of the specified target branches, or when updates are made to -# such a pull request. -# -# GitHub creates a new ref when a pull request is created. The ref points to a -# merge commit, which is the merged code between the source and target branches -# of the pull request. -# -# Opt out of pull request validation -pr: none - -# By default, use self-hosted agents -pool: Default - -# Image tag name for Fuse projects -#parameters: -#- name: imagetag -# displayName: Image tag to be built and/or deployed -# type: string -# default: latest - -resources: - repositories: - # Azure DevOps repository - - repository: helfi-rekry-pipelines - type: git - # Azure DevOps project/repository - name: helfi-rekry/helfi-rekry-pipelines - -extends: - # Filename in Azure DevOps Repository (note possible -ui or -api) - # Django example: azure-pipelines-PROJECTNAME-api-release.yml - # Drupal example: azure-pipelines-drupal-release.yml - template: azure-pipelines-drupal-prod.yml@helfi-rekry-pipelines - #parameters: - #imagetag: ${{ parameters.imagetag }} diff --git a/azure-pipelines-staging.yml b/azure-pipelines-staging.yml deleted file mode 100644 index fb313af4..00000000 --- a/azure-pipelines-staging.yml +++ /dev/null @@ -1,47 +0,0 @@ -# Continuous integration (CI) triggers cause a pipeline to run whenever you push -# an update to the specified branches or you push specified tags. -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - README.md - -# Pull request (PR) triggers cause a pipeline to run whenever a pull request is -# opened with one of the specified target branches, or when updates are made to -# such a pull request. -# -# GitHub creates a new ref when a pull request is created. The ref points to a -# merge commit, which is the merged code between the source and target branches -# of the pull request. -# -# Opt out of pull request validation -pr: none - -# By default, use self-hosted agents -pool: Default - -# Image tag name for Fuse projects -#parameters: -#- name: imagetag -# displayName: Image tag to be built and/or deployed -# type: string -# default: latest - -resources: - repositories: - # Azure DevOps repository - - repository: helfi-rekry-pipelines - type: git - # Azure DevOps project/repository - name: helfi-rekry/helfi-rekry-pipelines - -extends: - # Filename in Azure DevOps Repository (note possible -ui or -api) - # Django example: azure-pipelines-PROJECTNAME-api-release.yml - # Drupal example: azure-pipelines-drupal-release.yml - template: azure-pipelines-drupal-staging.yml@helfi-rekry-pipelines - #parameters: - #imagetag: ${{ parameters.imagetag }} diff --git a/compose.yaml b/compose.yaml index 56202025..0e16d19e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -105,6 +105,12 @@ services: - "traefik.http.services.nginx.loadbalancer.server.port=8080" - "traefik.http.routers.nginx.tls=true" - "traefik.docker.network=stonehenge-network" + - "traefik.http.middlewares.cors-header.headers.accesscontrolallowmethods=GET,OPTIONS,POST" + - "traefik.http.middlewares.cors-header.headers.accesscontrolallowheaders=*" + - "traefik.http.middlewares.cors-header.headers.accesscontrolalloworiginlist=*" + - "traefik.http.middlewares.cors-header.headers.accesscontrolmaxage=100" + - "traefik.http.middlewares.cors-header.headers.addvaryheader=true" + - "traefik.http.routers.nginx.middlewares=cors-header" depends_on: - elastic profiles: diff --git a/composer.lock b/composer.lock index 4f8fa7bd..9116ec73 100644 --- a/composer.lock +++ b/composer.lock @@ -2375,21 +2375,22 @@ }, { "name": "drupal/diff", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/diff.git", - "reference": "8.x-1.3" + "reference": "8.x-1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/diff-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "7a6e70546d97974600baffd0695105e88699744e" + "url": "https://ftp.drupal.org/files/projects/diff-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "8f1e95e6c7f576999c5b2880023de2c2aaaf99b3" }, "require": { - "drupal/core": "^9.3 || ^10", - "mkalkbrenner/php-htmldiff-advanced": "~0.0.8" + "drupal/core": "^9.3 || ^10 || ^11", + "mkalkbrenner/php-htmldiff-advanced": "~0.0.8", + "php": "^8.1" }, "require-dev": { "jangregor/phpstan-prophecy": "dev-master", @@ -2404,8 +2405,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.3", - "datestamp": "1712883857", + "version": "8.x-1.4", + "datestamp": "1717130431", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2633,17 +2634,17 @@ }, { "name": "drupal/editoria11y", - "version": "2.1.17", + "version": "2.1.18", "source": { "type": "git", "url": "https://git.drupalcode.org/project/editoria11y.git", - "reference": "2.1.17" + "reference": "2.1.18" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/editoria11y-2.1.17.zip", - "reference": "2.1.17", - "shasum": "7c9af73ebfe342d988abf2a89e41d324bfc31766" + "url": "https://ftp.drupal.org/files/projects/editoria11y-2.1.18.zip", + "reference": "2.1.18", + "shasum": "ebdb25f92c2d77681661216ca3abebbc710b662a" }, "require": { "drupal/core": "^9 || ^10 || ^11" @@ -2654,8 +2655,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.1.17", - "datestamp": "1715783435", + "version": "2.1.18", + "datestamp": "1716399461", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3708,16 +3709,16 @@ }, { "name": "drupal/hdbt", - "version": "6.5.11", + "version": "6.5.19", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-hdbt.git", - "reference": "1bceace4bc51d2a6ebfc368434485cbea20c1d52" + "reference": "14c0591acc5fba933ab83384905d88c3e3512c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/1bceace4bc51d2a6ebfc368434485cbea20c1d52", - "reference": "1bceace4bc51d2a6ebfc368434485cbea20c1d52", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/14c0591acc5fba933ab83384905d88c3e3512c8a", + "reference": "14c0591acc5fba933ab83384905d88c3e3512c8a", "shasum": "" }, "require": { @@ -3735,23 +3736,23 @@ "Drupal" ], "support": { - "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.5.11", + "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.5.19", "issues": "https://github.com/City-of-Helsinki/drupal-hdbt/issues" }, - "time": "2024-05-20T09:37:47+00:00" + "time": "2024-06-04T13:35:36+00:00" }, { "name": "drupal/hdbt_admin", - "version": "3.1.7", + "version": "3.1.8", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-hdbt-admin.git", - "reference": "33a217058068330c90b049e539e91b19d24d933d" + "reference": "d2e146b0215a5d6098d38f87548b999af2b43468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt-admin/zipball/33a217058068330c90b049e539e91b19d24d933d", - "reference": "33a217058068330c90b049e539e91b19d24d933d", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt-admin/zipball/d2e146b0215a5d6098d38f87548b999af2b43468", + "reference": "d2e146b0215a5d6098d38f87548b999af2b43468", "shasum": "" }, "require": { @@ -3770,10 +3771,10 @@ "Drupal" ], "support": { - "source": "https://github.com/City-of-Helsinki/drupal-hdbt-admin/tree/3.1.7", + "source": "https://github.com/City-of-Helsinki/drupal-hdbt-admin/tree/3.1.8", "issues": "https://github.com/City-of-Helsinki/drupal-hdbt-admin/issues" }, - "time": "2024-05-20T09:40:02+00:00" + "time": "2024-05-24T05:30:41+00:00" }, { "name": "drupal/health_check", @@ -3998,16 +3999,16 @@ }, { "name": "drupal/helfi_navigation", - "version": "2.2.3", + "version": "2.2.4", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-navigation.git", - "reference": "eb20060acf28691380da8c928fa134ee5bbb7770" + "reference": "7c1048ea3f3b3a14ee11ac40b60fddeb50df2b4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-navigation/zipball/eb20060acf28691380da8c928fa134ee5bbb7770", - "reference": "eb20060acf28691380da8c928fa134ee5bbb7770", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-navigation/zipball/7c1048ea3f3b3a14ee11ac40b60fddeb50df2b4d", + "reference": "7c1048ea3f3b3a14ee11ac40b60fddeb50df2b4d", "shasum": "" }, "require": { @@ -4025,23 +4026,23 @@ ], "description": "Helfi - Navigation", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-navigation/tree/2.2.3", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-navigation/tree/2.2.4", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-navigation/issues" }, - "time": "2024-04-26T06:27:49+00:00" + "time": "2024-06-04T07:30:53+00:00" }, { "name": "drupal/helfi_platform_config", - "version": "4.3.57", + "version": "4.3.60", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config.git", - "reference": "9ebb3f106cf8e2835cce6f789abb127234af9aab" + "reference": "5325477652218592b37907d622cce89c2b0786cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/9ebb3f106cf8e2835cce6f789abb127234af9aab", - "reference": "9ebb3f106cf8e2835cce6f789abb127234af9aab", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/5325477652218592b37907d622cce89c2b0786cf", + "reference": "5325477652218592b37907d622cce89c2b0786cf", "shasum": "" }, "require": { @@ -4152,10 +4153,10 @@ ], "description": "HELfi platform config", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.3.57", + "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.3.60", "issues": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/issues" }, - "time": "2024-05-22T06:30:57+00:00" + "time": "2024-06-04T06:56:15+00:00" }, { "name": "drupal/helfi_proxy", @@ -4485,26 +4486,26 @@ }, { "name": "drupal/jquery_ui", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/jquery_ui.git", - "reference": "8.x-1.6" + "reference": "8.x-1.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/jquery_ui-8.x-1.6.zip", - "reference": "8.x-1.6", - "shasum": "0ddccdcf35a066de1843e1d9670677ee1a2faac0" + "url": "https://ftp.drupal.org/files/projects/jquery_ui-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "3f893843ec30fed18fa1b0cb326e51880b0cb686" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.2 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.6", - "datestamp": "1668521197", + "version": "8.x-1.7", + "datestamp": "1717002098", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4581,27 +4582,27 @@ }, { "name": "drupal/jquery_ui_draggable", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/jquery_ui_draggable.git", - "reference": "2.0.0" + "reference": "2.1.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/jquery_ui_draggable-2.0.0.zip", - "reference": "2.0.0", - "shasum": "13a8f4bf037449cd176ddb967fc9cba9a466a705" + "url": "https://ftp.drupal.org/files/projects/jquery_ui_draggable-2.1.0.zip", + "reference": "2.1.0", + "shasum": "0d014cfff20993d8051efb8f6c9093a4fe5136f3" }, "require": { - "drupal/core": "^9.2 || ^10", - "drupal/jquery_ui": "^1.6" + "drupal/core": "^9.2 || ^10 || ^11", + "drupal/jquery_ui": "^1.7" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0", - "datestamp": "1670871516", + "version": "2.1.0", + "datestamp": "1717015492", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4825,6 +4826,14 @@ "GPL-2.0-or-later" ], "authors": [ + { + "name": "Anybody", + "homepage": "https://www.drupal.org/user/291091" + }, + { + "name": "Grevil", + "homepage": "https://www.drupal.org/user/3668491" + }, { "name": "jcnventura", "homepage": "https://www.drupal.org/user/122464" @@ -5510,20 +5519,20 @@ }, { "name": "drupal/raven", - "version": "5.0.13", + "version": "5.0.14", "source": { "type": "git", "url": "https://git.drupalcode.org/project/raven.git", - "reference": "5.0.13" + "reference": "5.0.14" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/raven-5.0.13.zip", - "reference": "5.0.13", - "shasum": "12bcb8daeaaee35e28982e8d225011e866d535e9" + "url": "https://ftp.drupal.org/files/projects/raven-5.0.14.zip", + "reference": "5.0.14", + "shasum": "b6487db5f6be84aa06ccf48e878021c30a8511ba" }, "require": { - "drupal/core": "^10.1", + "drupal/core": "^10.1 || ^11", "sentry/sentry": "^4.4" }, "require-dev": { @@ -5535,8 +5544,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "5.0.13", - "datestamp": "1715818744", + "version": "5.0.14", + "datestamp": "1716361931", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -10638,16 +10647,16 @@ }, { "name": "symfony/console", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f" + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", "shasum": "" }, "require": { @@ -10712,7 +10721,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -10728,20 +10737,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d8c5f9781b71c2a868ae9d0e5c9b283684740b6d" + "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d8c5f9781b71c2a868ae9d0e5c9b283684740b6d", - "reference": "d8c5f9781b71c2a868ae9d0e5c9b283684740b6d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d3b618176e8c3a9e5772151c51eba0c52a0c771c", + "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c", "shasum": "" }, "require": { @@ -10793,7 +10802,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.7" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.8" }, "funding": [ { @@ -10809,7 +10818,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/deprecation-contracts", @@ -10880,16 +10889,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "667a072466c6a53827ed7b119af93806b884cbb3" + "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/667a072466c6a53827ed7b119af93806b884cbb3", - "reference": "667a072466c6a53827ed7b119af93806b884cbb3", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc", + "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc", "shasum": "" }, "require": { @@ -10935,7 +10944,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.7" + "source": "https://github.com/symfony/error-handler/tree/v6.4.8" }, "funding": [ { @@ -10951,20 +10960,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d84384f3f67de3cb650db64d685d70395dacfc3f" + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d84384f3f67de3cb650db64d685d70395dacfc3f", - "reference": "d84384f3f67de3cb650db64d685d70395dacfc3f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", "shasum": "" }, "require": { @@ -11015,7 +11024,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.8" }, "funding": [ { @@ -11031,7 +11040,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -11111,23 +11120,25 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4" + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/78dde75f8f6dbbca4ec436a4b0087f7af02076d4", - "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3", + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3", "shasum": "" }, "require": { "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/process": "^5.4|^6.4" + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { @@ -11155,7 +11166,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.7" + "source": "https://github.com/symfony/filesystem/tree/v6.4.8" }, "funding": [ { @@ -11171,20 +11182,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/finder", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "511c48990be17358c23bf45c5d71ab85d40fb764" + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/511c48990be17358c23bf45c5d71ab85d40fb764", - "reference": "511c48990be17358c23bf45c5d71ab85d40fb764", + "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", "shasum": "" }, "require": { @@ -11219,7 +11230,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.7" + "source": "https://github.com/symfony/finder/tree/v6.4.8" }, "funding": [ { @@ -11235,20 +11246,20 @@ "type": "tidelift" } ], - "time": "2024-04-23T10:36:43+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b4db6b833035477cb70e18d0ae33cb7c2b521759" + "reference": "27de8cc95e11db7a50b027e71caaab9024545947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b4db6b833035477cb70e18d0ae33cb7c2b521759", - "reference": "b4db6b833035477cb70e18d0ae33cb7c2b521759", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947", + "reference": "27de8cc95e11db7a50b027e71caaab9024545947", "shasum": "" }, "require": { @@ -11296,7 +11307,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.7" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.8" }, "funding": [ { @@ -11312,20 +11323,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b7b5e6cdef670a0c82d015a966ffc7e855861a98" + "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b7b5e6cdef670a0c82d015a966ffc7e855861a98", - "reference": "b7b5e6cdef670a0c82d015a966ffc7e855861a98", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1", + "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1", "shasum": "" }, "require": { @@ -11410,7 +11421,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.7" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.8" }, "funding": [ { @@ -11426,20 +11437,20 @@ "type": "tidelift" } ], - "time": "2024-04-29T11:24:44+00:00" + "time": "2024-06-02T16:06:25+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "2c446d4e446995bed983c0b5bb9ff837e8de7dbd" + "reference": "76326421d44c07f7824b19487cfbf87870b37efc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/2c446d4e446995bed983c0b5bb9ff837e8de7dbd", - "reference": "2c446d4e446995bed983c0b5bb9ff837e8de7dbd", + "url": "https://api.github.com/repos/symfony/mailer/zipball/76326421d44c07f7824b19487cfbf87870b37efc", + "reference": "76326421d44c07f7824b19487cfbf87870b37efc", "shasum": "" }, "require": { @@ -11490,7 +11501,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.7" + "source": "https://github.com/symfony/mailer/tree/v6.4.8" }, "funding": [ { @@ -11506,20 +11517,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/mime", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "decadcf3865918ecfcbfa90968553994ce935a5e" + "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/decadcf3865918ecfcbfa90968553994ce935a5e", - "reference": "decadcf3865918ecfcbfa90968553994ce935a5e", + "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33", + "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33", "shasum": "" }, "require": { @@ -11575,7 +11586,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.7" + "source": "https://github.com/symfony/mime/tree/v6.4.8" }, "funding": [ { @@ -11591,20 +11602,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-06-01T07:50:16+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "23cc173858776ad451e31f053b1c9f47840b2cfa" + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/23cc173858776ad451e31f053b1c9f47840b2cfa", - "reference": "23cc173858776ad451e31f053b1c9f47840b2cfa", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", "shasum": "" }, "require": { @@ -11642,7 +11653,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.7" + "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" }, "funding": [ { @@ -11658,7 +11669,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/polyfill-ctype", @@ -12526,16 +12537,16 @@ }, { "name": "symfony/process", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cdb1c81c145fd5aa9b0038bab694035020943381" + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cdb1c81c145fd5aa9b0038bab694035020943381", - "reference": "cdb1c81c145fd5aa9b0038bab694035020943381", + "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", "shasum": "" }, "require": { @@ -12567,7 +12578,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.7" + "source": "https://github.com/symfony/process/tree/v6.4.8" }, "funding": [ { @@ -12583,20 +12594,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "e8adf6b1b46d9115f5d9247fa74bbefc459680c0" + "reference": "23a162bd446b93948a2c2f6909d80ad06195be10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/e8adf6b1b46d9115f5d9247fa74bbefc459680c0", - "reference": "e8adf6b1b46d9115f5d9247fa74bbefc459680c0", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/23a162bd446b93948a2c2f6909d80ad06195be10", + "reference": "23a162bd446b93948a2c2f6909d80ad06195be10", "shasum": "" }, "require": { @@ -12650,7 +12661,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.7" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.8" }, "funding": [ { @@ -12666,20 +12677,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:51:39+00:00" }, { "name": "symfony/routing", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "276e06398f71fa2a973264d94f28150f93cfb907" + "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/276e06398f71fa2a973264d94f28150f93cfb907", - "reference": "276e06398f71fa2a973264d94f28150f93cfb907", + "url": "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58", + "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58", "shasum": "" }, "require": { @@ -12733,7 +12744,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.7" + "source": "https://github.com/symfony/routing/tree/v6.4.8" }, "funding": [ { @@ -12749,20 +12760,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "73820ab43d12c2f29445080004054b0066082bf1" + "reference": "d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/73820ab43d12c2f29445080004054b0066082bf1", - "reference": "73820ab43d12c2f29445080004054b0066082bf1", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c", + "reference": "d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c", "shasum": "" }, "require": { @@ -12831,7 +12842,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.7" + "source": "https://github.com/symfony/serializer/tree/v6.4.8" }, "funding": [ { @@ -12847,7 +12858,7 @@ "type": "tidelift" } ], - "time": "2024-04-23T09:00:49+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/service-contracts", @@ -12934,16 +12945,16 @@ }, { "name": "symfony/string", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69" + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ffeb9591c61f65a68d47f77d12b83fa530227a69", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69", + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", "shasum": "" }, "require": { @@ -13000,7 +13011,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.7" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -13016,7 +13027,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/translation-contracts", @@ -13098,16 +13109,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "4761a08d161d823ec281151ade0905547e0502a7" + "reference": "dab2781371d54c86f6b25623ab16abb2dde2870c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/4761a08d161d823ec281151ade0905547e0502a7", - "reference": "4761a08d161d823ec281151ade0905547e0502a7", + "url": "https://api.github.com/repos/symfony/validator/zipball/dab2781371d54c86f6b25623ab16abb2dde2870c", + "reference": "dab2781371d54c86f6b25623ab16abb2dde2870c", "shasum": "" }, "require": { @@ -13154,7 +13165,8 @@ "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -13174,7 +13186,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.7" + "source": "https://github.com/symfony/validator/tree/v6.4.8" }, "funding": [ { @@ -13190,20 +13202,20 @@ "type": "tidelift" } ], - "time": "2024-04-28T10:38:38+00:00" + "time": "2024-06-02T15:48:50+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7a9cd977cd1c5fed3694bee52990866432af07d7" + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7a9cd977cd1c5fed3694bee52990866432af07d7", - "reference": "7a9cd977cd1c5fed3694bee52990866432af07d7", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", "shasum": "" }, "require": { @@ -13259,7 +13271,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.7" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" }, "funding": [ { @@ -13275,20 +13287,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078" + "reference": "db82c2b73b88734557cfc30e3270d83fa651b712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/cdecc0022e40e90340ba1a59a3d5ccf069777078", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db82c2b73b88734557cfc30e3270d83fa651b712", + "reference": "db82c2b73b88734557cfc30e3270d83fa651b712", "shasum": "" }, "require": { @@ -13335,7 +13347,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.7" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.1" }, "funding": [ { @@ -13351,20 +13363,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0" + "reference": "52903de178d542850f6f341ba92995d3d63e60c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0", - "reference": "53e8b1ef30a65f78eac60fddc5ee7ebbbdb1dee0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9", + "reference": "52903de178d542850f6f341ba92995d3d63e60c9", "shasum": "" }, "require": { @@ -13407,7 +13419,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.7" + "source": "https://github.com/symfony/yaml/tree/v6.4.8" }, "funding": [ { @@ -13423,7 +13435,7 @@ "type": "tidelift" } ], - "time": "2024-04-28T10:28:08+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "t4web/composer-lock-parser", @@ -16563,16 +16575,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { @@ -16604,9 +16616,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { "name": "phpstan/phpstan", diff --git a/conf/cmi/core.base_field_override.node.announcement.promote.yml b/conf/cmi/core.base_field_override.node.announcement.promote.yml index ecaad512..aec89cc7 100644 --- a/conf/cmi/core.base_field_override.node.announcement.promote.yml +++ b/conf/cmi/core.base_field_override.node.announcement.promote.yml @@ -5,7 +5,7 @@ dependencies: config: - node.type.announcement _core: - default_config_hash: Dssk6_3sRlJ0urINRbHmfK7WCXlc3hHp1hVsZlAEv1w + default_config_hash: D2NSbMpN6bvWedxYXjiaLyxJ75VF9BpX3Se7DAPEs-o id: node.announcement.promote field_name: promote entity_type: node diff --git a/conf/cmi/core.base_field_override.node.announcement.status.yml b/conf/cmi/core.base_field_override.node.announcement.status.yml index e7708eb6..5f47b1f5 100644 --- a/conf/cmi/core.base_field_override.node.announcement.status.yml +++ b/conf/cmi/core.base_field_override.node.announcement.status.yml @@ -5,7 +5,7 @@ dependencies: config: - node.type.announcement _core: - default_config_hash: r22i8pbP859SWpdwmCB98aKCb1vHeMgmdBWNOsS_az0 + default_config_hash: R3niw3Nz1u8dG1f6SvWkLE2s6sZijZo7SM0KKqfQX3U id: node.announcement.status field_name: status entity_type: node diff --git a/conf/cmi/core.base_field_override.node.announcement.title.yml b/conf/cmi/core.base_field_override.node.announcement.title.yml index 0e175083..9a767359 100644 --- a/conf/cmi/core.base_field_override.node.announcement.title.yml +++ b/conf/cmi/core.base_field_override.node.announcement.title.yml @@ -5,7 +5,7 @@ dependencies: config: - node.type.announcement _core: - default_config_hash: v0rg9ztfYRnKz2PXAcGD_Q52rTcPbwqaZLw3tXWd4rM + default_config_hash: quT0ukX0qoC-tZdXznzL15peakfXQ7GYM0MGmFxh-pA id: node.announcement.title field_name: title entity_type: node diff --git a/conf/cmi/core.entity_form_display.node.announcement.default.yml b/conf/cmi/core.entity_form_display.node.announcement.default.yml index b9dd98da..29aea730 100644 --- a/conf/cmi/core.entity_form_display.node.announcement.default.yml +++ b/conf/cmi/core.entity_form_display.node.announcement.default.yml @@ -19,7 +19,7 @@ dependencies: - select2 - text _core: - default_config_hash: 0ewsu2ZhpNhAo4t7wkUgEa9ABQAkcsF7IXtR-kFeDUg + default_config_hash: qqQi0rDViTGi7MGzX_kBdLCh98Fa5KYWqDcNxHrl8gs id: node.announcement.default targetEntityType: node bundle: announcement diff --git a/conf/cmi/core.entity_form_display.paragraph.contact_card.default.yml b/conf/cmi/core.entity_form_display.paragraph.contact_card.default.yml index c5a9bdaf..abbfd6a9 100644 --- a/conf/cmi/core.entity_form_display.paragraph.contact_card.default.yml +++ b/conf/cmi/core.entity_form_display.paragraph.contact_card.default.yml @@ -18,7 +18,7 @@ dependencies: - paragraphs - telephone _core: - default_config_hash: x5bpTMOF34jWh_MqPyiP2618Yr5g6KheOGUq5eud2QM + default_config_hash: 2fg4jQrKOkMM-2FA9Rr6hYBXxtU9NVZNa2Gsy0eALnk id: paragraph.contact_card.default targetEntityType: paragraph bundle: contact_card diff --git a/conf/cmi/core.entity_form_display.paragraph.contact_card_listing.default.yml b/conf/cmi/core.entity_form_display.paragraph.contact_card_listing.default.yml index eebb376c..c9f4387e 100644 --- a/conf/cmi/core.entity_form_display.paragraph.contact_card_listing.default.yml +++ b/conf/cmi/core.entity_form_display.paragraph.contact_card_listing.default.yml @@ -11,7 +11,7 @@ dependencies: - paragraphs - text _core: - default_config_hash: sPm2P2zYUuVEU5UQbnL2ROTmL0jWzUI3IUw6bgFGzj8 + default_config_hash: 6UAF8Xo1cGIMeGvuto1CsviXZv9bM5TyzySNPwKmqDg id: paragraph.contact_card_listing.default targetEntityType: paragraph bundle: contact_card_listing diff --git a/conf/cmi/core.entity_form_display.paragraph.social_media_link.default.yml b/conf/cmi/core.entity_form_display.paragraph.social_media_link.default.yml index 0aa4cf99..54dd8820 100644 --- a/conf/cmi/core.entity_form_display.paragraph.social_media_link.default.yml +++ b/conf/cmi/core.entity_form_display.paragraph.social_media_link.default.yml @@ -10,7 +10,7 @@ dependencies: - hdbt_admin_tools - link _core: - default_config_hash: BzfvGsHIC_c0aNhpt5fjgtz76eqpJy7Q8UpK7Rdebso + default_config_hash: 9cHPe-6B9QVqhtw7PEphvzDiAxto678Cm5TZhSjGQh0 id: paragraph.social_media_link.default targetEntityType: paragraph bundle: social_media_link diff --git a/conf/cmi/core.entity_view_display.helfi_news.helfi_news.default.yml b/conf/cmi/core.entity_view_display.helfi_news.helfi_news.default.yml index 9d9e0879..5d9ce724 100644 --- a/conf/cmi/core.entity_view_display.helfi_news.helfi_news.default.yml +++ b/conf/cmi/core.entity_view_display.helfi_news.helfi_news.default.yml @@ -31,9 +31,12 @@ content: region: content hidden: groups: true + groups_uuid: true neighbourhoods: true + neighbourhoods_uuid: true node_url: true published_at: true search_api_excerpt: true short_title: true tags: true + tags_uuid: true diff --git a/conf/cmi/core.entity_view_display.helfi_news.helfi_news.medium_teaser.yml b/conf/cmi/core.entity_view_display.helfi_news.helfi_news.medium_teaser.yml index fce68584..af736f5c 100644 --- a/conf/cmi/core.entity_view_display.helfi_news.helfi_news.medium_teaser.yml +++ b/conf/cmi/core.entity_view_display.helfi_news.helfi_news.medium_teaser.yml @@ -33,9 +33,12 @@ content: region: content hidden: groups: true + groups_uuid: true neighbourhoods: true + neighbourhoods_uuid: true node_url: true published_at: true search_api_excerpt: true short_title: true tags: true + tags_uuid: true diff --git a/conf/cmi/core.entity_view_display.node.announcement.default.yml b/conf/cmi/core.entity_view_display.node.announcement.default.yml index 6c4463aa..b5198fc8 100644 --- a/conf/cmi/core.entity_view_display.node.announcement.default.yml +++ b/conf/cmi/core.entity_view_display.node.announcement.default.yml @@ -16,7 +16,7 @@ dependencies: - text - user _core: - default_config_hash: LQ9K_wCbd758UCcNEORQvFUQ7gNJddkukiwwYHrZv4c + default_config_hash: yhUvsmuub4c7O7-jhnKmh4Q5QZpDn_zwcl0EJD3z17Y id: node.announcement.default targetEntityType: node bundle: announcement diff --git a/conf/cmi/core.entity_view_display.node.announcement.teaser.yml b/conf/cmi/core.entity_view_display.node.announcement.teaser.yml index 1531031d..46a1f91c 100644 --- a/conf/cmi/core.entity_view_display.node.announcement.teaser.yml +++ b/conf/cmi/core.entity_view_display.node.announcement.teaser.yml @@ -15,7 +15,7 @@ dependencies: - text - user _core: - default_config_hash: OwH532HYBVjDOUW0iJnoDWc2yFGZwwGJnAZEmZPjLCA + default_config_hash: EH9tM7S3I7tq20rwclKyzoJoFIGyrjEm_vQ17UwEsNI id: node.announcement.teaser targetEntityType: node bundle: announcement diff --git a/conf/cmi/core.entity_view_display.paragraph.contact_card.default.yml b/conf/cmi/core.entity_view_display.paragraph.contact_card.default.yml index 553beec2..d9749e1c 100644 --- a/conf/cmi/core.entity_view_display.paragraph.contact_card.default.yml +++ b/conf/cmi/core.entity_view_display.paragraph.contact_card.default.yml @@ -19,7 +19,7 @@ dependencies: - image - telephone _core: - default_config_hash: X5x-5vSXj4FHXf2NNNyzzwVH7xlQUk6wGBYjejfb-iQ + default_config_hash: Dh9FHJy0cVaGBQZ1e997O3R9tdvlwEjQxwNZJlFZxP4 id: paragraph.contact_card.default targetEntityType: paragraph bundle: contact_card diff --git a/conf/cmi/core.entity_view_display.paragraph.contact_card_listing.default.yml b/conf/cmi/core.entity_view_display.paragraph.contact_card_listing.default.yml index 931e8801..9a41ec7c 100644 --- a/conf/cmi/core.entity_view_display.paragraph.contact_card_listing.default.yml +++ b/conf/cmi/core.entity_view_display.paragraph.contact_card_listing.default.yml @@ -11,7 +11,7 @@ dependencies: - entity_reference_revisions - text _core: - default_config_hash: Ji3RAEFsZwMfCcpI7yeMxRf4WgA9tgw1ZwgWajHbEUc + default_config_hash: Zc18URhrtd1X9T8JjpUGhdpETBSDWgzrZF5Il2qFCbU id: paragraph.contact_card_listing.default targetEntityType: paragraph bundle: contact_card_listing diff --git a/conf/cmi/core.entity_view_display.paragraph.social_media_link.default.yml b/conf/cmi/core.entity_view_display.paragraph.social_media_link.default.yml index 66879d3f..f3df854a 100644 --- a/conf/cmi/core.entity_view_display.paragraph.social_media_link.default.yml +++ b/conf/cmi/core.entity_view_display.paragraph.social_media_link.default.yml @@ -10,7 +10,7 @@ dependencies: - hdbt_admin_tools - link _core: - default_config_hash: 3cRI5TbNqV68nkWG4yIl_I6iqqYeWmdA_XtlHEkRIgE + default_config_hash: ev1SgFjJ5Hpldnoe4L20HCAJDpvl6Q5_ldGYSe92F1c id: paragraph.social_media_link.default targetEntityType: paragraph bundle: social_media_link diff --git a/conf/cmi/core.extension.yml b/conf/cmi/core.extension.yml index 6757dd35..1fd15d89 100644 --- a/conf/cmi/core.extension.yml +++ b/conf/cmi/core.extension.yml @@ -45,6 +45,7 @@ module: helfi_ckeditor: 0 helfi_eu_cookie_compliance: 0 helfi_global_announcement: 0 + helfi_hakuvahti: 0 helfi_image_styles: 0 helfi_media: 0 helfi_media_chart: 0 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml b/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml index 968f9780..d768ff3d 100644 --- a/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml +++ b/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml @@ -3,11 +3,11 @@ langcode: en status: true dependencies: { } _core: - default_config_hash: AQHnqzBrsjCueWYDa6NdV6bYEo3y-fsbMp1zE1XxxEQ + default_config_hash: oVn5Apol-q10_G1LoTbTJNj-k-1eYvCbO4vGiUF09t4 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.
Name | Provider | Purpose of the cookie | Validity | Type |
---|---|---|---|---|
cookiehub | cookiehub.com | Used by CookieHub to store information about whether visitors have given or declined the use of cookie categories used on the hel.fi site. | 365 days | |
cookie-agreed | hel.fi | Used by hel.fi Drupal to store information about whether visitors have given or declined the use of cookie categories used on the hel.fi site. | 100 days | |
cookie-agreed-version | hel.fi | Used by hel.fi Drupal to store information about what version of the cookie consent the user has agreed to. | 100 days | |
cookie-agreed-categories | hel.fi | Used by hel.fi Drupal to store information about what cookie categories the user has agreed to. | 100 days | |
SSESS* | hel.fi | A cookie related to the operation of the content management system. | 23 days | |
AWSELBCORS | siteimproveanalytics.io | The cookie is related to a load distribution function used to direct requests to servers with the least traffic. | Session | Third party |
mtm_cookie_consent | kartta.hel.fi | A 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. | Session | Third party |
JSESSIONID | coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloud | Used for chat app functionality. Its value is used to access session data on server of the application. | Session | Third party |
COOKIE_SUPPORT | helsinkikanava.fi | The cookie facilitates managing cookies on the website. | 365 days | Third party |
GUEST_LANGUAGE_ID | helsinkikanava.fi | This cookie is generated by the Liferay, its function is to store the language preferences. | 365 days | Third party |
helfi-settings | hel.fi | Used by hel.fi Drupal to store information about closed announcements and accordions'' state. | - | Local storage |
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.
Name | Provider | Purpose of the cookie | Validity | Type |
---|---|---|---|---|
cookiehub | cookiehub.com | Used by CookieHub to store information about whether visitors have given or declined the use of cookie categories used on the hel.fi site. | 365 days | |
cookie-agreed | hel.fi | Used by hel.fi Drupal to store information about whether visitors have given or declined the use of cookie categories used on the hel.fi site. | 100 days | |
cookie-agreed-version | hel.fi | Used by hel.fi Drupal to store information about what version of the cookie consent the user has agreed to. | 100 days | |
cookie-agreed-categories | hel.fi | Used by hel.fi Drupal to store information about what cookie categories the user has agreed to. | 100 days | |
cookie-agreed | avustukset.hel.fi | Used 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-version | avustukset.hel.fi | Used by avustukset.hel.fi Drupal to store information about what version of the cookie consent the user has agreed to. | 100 days | |
cookie-agreed-categories | avustukset.hel.fi | Used by avustukset.hel.fi Drupal to store information about what cookie categories the user has agreed to. | 100 days | |
SSESS* | hel.fi | A cookie related to the operation of the content management system. | 23 days | |
SSESS* | avustukset.hel.fi | A cookie related to the operation of the content management system. | 23 days | |
AWSELBCORS | siteimproveanalytics.io | The cookie is related to a load distribution function used to direct requests to servers with the least traffic. | Session | Third party |
mtm_cookie_consent | kartta.hel.fi | A 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. | Session | Third party |
JSESSIONID | coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloud | Used for chat app functionality. Its value is used to access session data on server of the application. | Session | Third party |
COOKIE_SUPPORT | helsinkikanava.fi | The cookie facilitates managing cookies on the website. | 365 days | Third party |
GUEST_LANGUAGE_ID | helsinkikanava.fi | This cookie is generated by the Liferay, its function is to store the language preferences. | 365 days | Third party |
helfi-settings | hel.fi | Used by hel.fi Drupal to store information about closed announcements and accordions'' state. | - | Local storage |
Drupal.visitor.autologout_login | avustukset.hel.fi | Used by avustukset.hel.fi Drupal to automatically logout user after a period of inactivity. | 365 days |
Preference cookies modify the visuals and functions of the website based on the user''s previous sessions.
Name | Provider | Purpose of the cookie | Validity | Type |
---|---|---|---|---|
httpskartta.hel.fi.SWCulture | kartta.hel.fi | The City''s map service cookie saves the language in which the service is used. | 1826 days | |
icareus-device | helsinkikanava.fi | The Helsinki Channel video server cookie facilitates including videos as part of the website''s content. | 365 days | Third party |
VISITOR_INFO1_LIVE | youtube.com | The YouTube cookie selects the old or new video player depending on the connection speed. | 180 days | Third party |
CONSENT | youtube.com | Used by Google to store user consent preferences | 5947 days, 15 hours | Third party |
Preference cookies modify the visuals and functions of the website based on the user''s previous sessions.
Name | Provider | Purpose of the cookie | Validity | Type |
---|---|---|---|---|
httpskartta.hel.fi.SWCulture | kartta.hel.fi | The City''s map service cookie saves the language in which the service is used. | 1826 days | |
icareus-device | helsinkikanava.fi | The Helsinki Channel video server cookie facilitates including videos as part of the website''s content. | 365 days | Third party |
VISITOR_INFO1_LIVE | youtube.com | The YouTube cookie selects the old or new video player depending on the connection speed. | 180 days | Third party |
CONSENT | youtube.com | Used by Google to store user consent preferences | 5947 days, 15 hours | Third party |
activeTab | hel.fi | Used for storing active tab data when user is using high school search. | Session | |
activeContent | hel.fi | Used for storing active content data when user is using high school search. | Session |
The information collected by statistics cookies is used for developing the website.
Name | Provider | Purpose of the cookie | Validity | Type |
---|---|---|---|---|
nmstat | hel.fi | The Siteimprove statistics cookie collects information about the use of the website. | 1000 days | |
_pk_id.* | hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.141.89f6 | hel.fi | - | 1 hour | |
_pk_id.* | kartta.hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.* | kartta.hel.fi | Matomo Analytics - short lived cookies used to temporarily store data for the visit | 1 hour | |
_pk_id.* | palvelukartta.hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.* | palvelukartta.hel.fi | Matomo Analytics - short lived cookies used to temporarily store data for the visit | 1 hour | |
rnsbid | reactandshare.com | A record related to the operation of the Askem react buttons. | - | Local storage |
rnsbid_ts | reactandshare.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 |
YSC | youtube.com | The YouTube cookie facilitates including videos as part of the website''s content. | Session | Third party |
The information collected by statistics cookies is used for developing the website.
Name | Provider | Purpose of the cookie | Validity | Type |
---|---|---|---|---|
nmstat | hel.fi | The Siteimprove statistics cookie collects information about the use of the website. | 1000 days | |
_pk_id.* | hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.141.89f6 | hel.fi | - | 1 hour | |
_pk_id.* | kartta.hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.* | kartta.hel.fi | Matomo Analytics - short lived cookies used to temporarily store data for the visit | 1 hour | |
_pk_id.* | palvelukartta.hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.* | palvelukartta.hel.fi | Matomo Analytics - short lived cookies used to temporarily store data for the visit | 1 hour | |
_pk_id.* | avustukset.hel.fi | Matomo Analytics - used to store a few details about the user such as the unique visitor ID | 393 days | |
_pk_ses.* | avustukset.hel.fi | Matomo Analytics - short lived cookies used to temporarily store data for the visit | 1 hour | |
rnsbid | reactandshare.com | A record related to the operation of the Askem react buttons. | - | Local storage |
rnsbid_ts | reactandshare.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 |
YSC | youtube.com | The YouTube cookie facilitates including videos as part of the website''s content. | Session | Third party |
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.
Nimi | Tarjoaja | Tarkoitus | Voimassa | Tyyppi |
---|---|---|---|---|
cookiehub | Cookiehub | Mahdollistaa evästehallinnan hel.fi sivuilla. | 365 päivää | |
cookie-agreed | hel.fi | Sivusto 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-version | hel.fi | Tähän evästeeseen tallennetaan käyttäjän hyväksymän evästeselosteen versio. | 100 päivää | |
cookie-agreed-categories | hel.fi | Tähän evästeeseen on tallennettu käyttäjän hyväksymät evästekategoriat. | 100 päivää | |
SSESS* | hel.fi | Sisällönhallintajärjestelmän toimintaan liittyvä eväste. | 23 päivää | |
AWSELBCORS | siteimproveanalytics.io | Eväste liittyy palvelinten kuormanjakotoiminnallisuuteen, jolla ohjataan pyynnöt vähimmällä käytöllä olevalle palvelimille. | Istunto | Kolmas osapuoli |
mtm_cookie_consent | kartta.hel.fi | Tekninen eväste johon talletetaan tieto valinnastasi evästeiden käytöstä kertovan bannerin kohdalla | 10950 päivää | |
JSESSIONID | helsinkikanava.fi coh-chat-app-prod.eu-de.mybluemix.net | Sivuston pakollinen eväste mahdollistaa kävijän vierailun sivustolla. | Istunto | Kolmas osapuoli |
JSESSIONID | coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloud | Käytetään chat-sovellustoiminnallisuutta varten. Evästettä käytetään sovelluksen palvelimella olevan istuntotiedon hakemiseen. | Istunto | Kolmas osapuoli |
COOKIE_SUPPORT | helsinkikanava.fi | Mahdollistaa evästeiden hallinnan sivustolla. | 365 päivää | Kolmas osapuoli |
GUEST_LANGUAGE_ID | helsinkikanava.fi | Tämän evästeen on luonut Liferay, se tallentaa kieliasetukset. | 365 päivää | Kolmas osapuoli |
helfi-settings | hel.fi | Sivusto käyttää tätä tietuetta tietojen tallentamiseen siitä, mitä poikkeusilmoituksia on suljettu ja mikä on avattavien sisältöalueiden tila. | - | Paikallinen muisti |
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.
Nimi | Tarjoaja | Tarkoitus | Voimassa | Tyyppi |
---|---|---|---|---|
cookiehub | Cookiehub | Mahdollistaa evästehallinnan hel.fi sivuilla. | 365 päivää | |
cookie-agreed | hel.fi | Sivusto 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-version | hel.fi | Tähän evästeeseen tallennetaan käyttäjän hyväksymän evästeselosteen versio. | 100 päivää | |
cookie-agreed-categories | hel.fi | Tähän evästeeseen on tallennettu käyttäjän hyväksymät evästekategoriat. | 100 päivää | |
cookie-agreed | avustukset.hel.fi | Sivusto 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-version | avustukset.hel.fi | Tähän evästeeseen tallennetaan käyttäjän hyväksymän evästeselosteen versio. | 100 päivää | |
cookie-agreed-categories | avustukset.hel.fi | Tähän evästeeseen on tallennettu käyttäjän hyväksymät evästekategoriat. | 100 päivää | |
SSESS* | hel.fi | Sisällönhallintajärjestelmän toimintaan liittyvä eväste. | 23 päivää | |
SSESS* | avustukset.hel.fi | Sisällönhallintajärjestelmän toimintaan liittyvä eväste. | 23 päivää | |
AWSELBCORS | siteimproveanalytics.io | Eväste liittyy palvelinten kuormanjakotoiminnallisuuteen, jolla ohjataan pyynnöt vähimmällä käytöllä olevalle palvelimille. | Istunto | Kolmas osapuoli |
mtm_cookie_consent | kartta.hel.fi | Tekninen eväste johon talletetaan tieto valinnastasi evästeiden käytöstä kertovan bannerin kohdalla | 10950 päivää | |
JSESSIONID | helsinkikanava.fi coh-chat-app-prod.eu-de.mybluemix.net | Sivuston pakollinen eväste mahdollistaa kävijän vierailun sivustolla. | Istunto | Kolmas osapuoli |
JSESSIONID | coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloud | Käytetään chat-sovellustoiminnallisuutta varten. Evästettä käytetään sovelluksen palvelimella olevan istuntotiedon hakemiseen. | Istunto | Kolmas osapuoli |
COOKIE_SUPPORT | helsinkikanava.fi | Mahdollistaa evästeiden hallinnan sivustolla. | 365 päivää | Kolmas osapuoli |
GUEST_LANGUAGE_ID | helsinkikanava.fi | Tämän evästeen on luonut Liferay, se tallentaa kieliasetukset. | 365 päivää | Kolmas osapuoli |
helfi-settings | hel.fi | Sivusto käyttää tätä tietuetta tietojen tallentamiseen siitä, mitä poikkeusilmoituksia on suljettu ja mikä on avattavien sisältöalueiden tila. | - | Paikallinen muisti |
Drupal.visitor.autologout_login | avustukset.hel.fi | Käytetään käyttäjän automaattiseen uloskirjautumiseen. | 365 päivää |
Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän aiemman käytön perusteella.
Nimi | Tarjoaja | Tarkoitus | Voimassa | Tyyppi |
---|---|---|---|---|
httpskartta.hel.fi.SWCulture | kartta.hel.fi | Kaupungin karttapalvelun evästeeseen tallennetaan kieli, jolla palvelua käytetään. | 1826 päivää | |
icareus-device | helsinkikanava.fi | Helsinki-kanavan videopalvelimen eväste. | 365 päivää | Kolmas osapuoli |
VISITOR_INFO1_LIVE | youtube.com | YouTuben eväste valitsee yhteyden nopeuden mukaan, joko vanhan tai uuden videosoittimen. | 180 päivää | Kolmas osapuoli |
CONSENT | youtube.com | Googlen eväste tallentaa kävijän evästehyväskynnän. | 5947 päivää, 15 tuntia | Kolmas osapuoli |
Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän aiemman käytön perusteella.
Nimi | Tarjoaja | Tarkoitus | Voimassa | Tyyppi |
---|---|---|---|---|
httpskartta.hel.fi.SWCulture | kartta.hel.fi | Kaupungin karttapalvelun evästeeseen tallennetaan kieli, jolla palvelua käytetään. | 1826 päivää | |
icareus-device | helsinkikanava.fi | Helsinki-kanavan videopalvelimen eväste. | 365 päivää | Kolmas osapuoli |
VISITOR_INFO1_LIVE | youtube.com | YouTuben eväste valitsee yhteyden nopeuden mukaan, joko vanhan tai uuden videosoittimen. | 180 päivää | Kolmas osapuoli |
CONSENT | youtube.com | Googlen eväste tallentaa kävijän evästehyväskynnän. | 5947 päivää, 15 tuntia | Kolmas osapuoli |
activeTab | hel.fi | Käytetään aktiivisten välilehtien tietojen tallentamiseen, kun käyttäjä käyttää lukioiden suodatushakua. | Istunto | |
activeContent | hel.fi | Käytetään aktiivisen sisältötietojen tallentamiseen, kun käyttäjä käyttää lukioiden hakua. | Istunto |
Tilastointievästeiden keräämää tietoa käytetään verkkosivuston kehittämiseen.
Nimi | Tarjoaja | Tarkoitus | Voimassa | Tyyppi |
---|---|---|---|---|
nmstat | hel.fi | Siteimproven tilastointieväste kerää tietoa kävijän sivujen käytöstä. | 1000 päivää | |
_pk_id.* | hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.141.89f6 | hel.fi | - | 1 tunti | |
_pk_id.* | kartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.* | kartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 1 tunti | |
_pk_id.* | palvelukartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.* | palvelukartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 1 tunti | |
rnsbid | reactandshare.com | Askem-reaktionappien toimintaan liittyvä tietue. | - | Paikallinen muisti |
rnsbid_ts | reactandshare.com | Askem-reaktionappien toimintaan liittyvä tietue. | - | Paikallinen muisti |
rns_reaction_* | reactandshare.com | Askem-reaktionappien toimintaan liittyvä tietue. | - | Paikallinen muisti |
YSC | youtube.com | YouTuben eväste mahdollistaa videoiden upottamisen sivustolle. | Istunto | Kolmas osapuoli |
Tilastointievästeiden keräämää tietoa käytetään verkkosivuston kehittämiseen.
Nimi | Tarjoaja | Tarkoitus | Voimassa | Tyyppi |
---|---|---|---|---|
nmstat | hel.fi | Siteimproven tilastointieväste kerää tietoa kävijän sivujen käytöstä. | 1000 päivää | |
_pk_id.* | hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.141.89f6 | hel.fi | - | 1 tunti | |
_pk_id.* | kartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.* | kartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 1 tunti | |
_pk_id.* | palvelukartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.* | palvelukartta.hel.fi | Matomo-tilastointijärjestelmän eväste. | 1 tunti | |
_pk_id.* | avustukset.hel.fi | Matomo-tilastointijärjestelmän eväste. | 393 päivää | |
_pk_ses.* | avustukset.hel.fi | Matomo-tilastointijärjestelmän eväste. | 1 tunti | |
rnsbid | reactandshare.com | Askem-reaktionappien toimintaan liittyvä tietue. | - | Paikallinen muisti |
rnsbid_ts | reactandshare.com | Askem-reaktionappien toimintaan liittyvä tietue. | - | Paikallinen muisti |
rns_reaction_* | reactandshare.com | Askem-reaktionappien toimintaan liittyvä tietue. | - | Paikallinen muisti |
YSC | youtube.com | YouTuben eväste mahdollistaa videoiden upottamisen sivustolle. | Istunto | Kolmas osapuoli |
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.
Namn | Tjänsteleverantör | Cookie syfte | Giltighet | Typ |
---|---|---|---|---|
cookiehub | cookiehub.com | Cookie möjliggör hantering av cookies på hel.fi webbplatsen. | 365 dagar | |
cookie-agreed | hel.fi | Cookie möjliggör hantering av cookies på webbplatsen. | 100 dagar | |
cookie-agreed-version | hel.fi | Används för att lagra information om versionen av cookies samtycke som användaren har godkänt. | 100 dagar | |
cookie-agreed-categories | hel.fi | Används för att lagra information om vilka cookie -kategorier användaren har godkänt. | 100 dagar | |
SSESS* | hel.fi | En cookie relaterad till driften av innehållshanteringssystemet. | 23 dagar | |
AWSELBCORS | siteimproveanalytics.io | Cookie är kopplad till funktionen för lastfördelning som styr begäran till en server med mindre belastning. | session | Tredje part |
mtm_cookie_consent | kartta.hel.fi | A 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. | session | Tredje part |
JSESSIONID | coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloud | Används för chattapplikationens funktionalitet. Dess värde används för att få tillgång till sessiondata på applikationens server. | session | Tredje part |
COOKIE_SUPPORT | helsinkikanava.fi | Kakan möjliggör hanteringen av kakor på webbplatsen. | 365 dagar | Tredje part |
GUEST_LANGUAGE_ID | helsinkikanava.fi | Denna cookie genereras av Liferay, dess funktion är att lagra språkinställningarna. | 365 dagar | Tredje part |
helfi-settings | hel.fi | Används av hel.fi Drupal för att lagra information om stängda meddelanden och accordions'' tillstånd. | - | Lokalt minne |
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.
Namn | Tjänsteleverantör | Cookie syfte | Giltighet | Typ |
---|---|---|---|---|
cookiehub | cookiehub.com | Cookie möjliggör hantering av cookies på hel.fi webbplatsen. | 365 dagar | |
cookie-agreed | hel.fi | Cookie möjliggör hantering av cookies på webbplatsen. | 100 dagar | |
cookie-agreed-version | hel.fi | Används för att lagra information om versionen av cookies samtycke som användaren har godkänt. | 100 dagar | |
cookie-agreed-categories | hel.fi | Används för att lagra information om vilka cookie -kategorier användaren har godkänt. | 100 dagar | |
cookie-agreed | avustukset.hel.fi | Cookie möjliggör hantering av cookies på webbplatsen. | 100 dagar | |
cookie-agreed-version | avustukset.hel.fi | Används för att lagra information om versionen av cookies samtycke som användaren har godkänt. | 100 dagar | |
cookie-agreed-categories | avustukset.hel.fi | Används för att lagra information om vilka cookie -kategorier användaren har godkänt. | 100 dagar | |
SSESS* | hel.fi | En cookie relaterad till driften av innehållshanteringssystemet. | 23 dagar | |
SSESS* | avustukset.hel.fi | En cookie relaterad till driften av innehållshanteringssystemet. | 23 dagar | |
AWSELBCORS | siteimproveanalytics.io | Cookie är kopplad till funktionen för lastfördelning som styr begäran till en server med mindre belastning. | session | Tredje part |
mtm_cookie_consent | kartta.hel.fi | A 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. | session | Tredje part |
JSESSIONID | coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloud | Används för chattapplikationens funktionalitet. Dess värde används för att få tillgång till sessiondata på applikationens server. | session | Tredje part |
COOKIE_SUPPORT | helsinkikanava.fi | Kakan möjliggör hanteringen av kakor på webbplatsen. | 365 dagar | Tredje part |
GUEST_LANGUAGE_ID | helsinkikanava.fi | Denna cookie genereras av Liferay, dess funktion är att lagra språkinställningarna. | 365 dagar | Tredje part |
helfi-settings | hel.fi | Används av hel.fi Drupal för att lagra information om stängda meddelanden och accordions'' tillstånd. | - | Lokalt minne |
Drupal.visitor.autologout_login | avustukset.hel.fi | Används av avustukset.hel.fi Drupal för att automatiskt logga ut användare efter en period av inaktivitet. | 365 dagar |
Preferenscookies ändrar webbplatsens utseende och funktioner enligt användarens tidigare användning.
Namn | Tjänsteleverantör | Cookie syfte | Giltighet | Typ |
---|---|---|---|---|
httpskartta.hel.fi.SWCulture | kartta.hel.fi | I kakan på stadens kaktjänst sparas det språk som användaren använder i tjänsten. | 1826 dagar | |
icareus-device | helsinkikanava.fi | Helsinki-kanavas kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen. | 365 dagar | Tredje part |
VISITOR_INFO1_LIVE | youtube.com | YouTubes kaka väljer antingen den nya eller gamla videospelaren enligt förbindelsens hastighet. | 180 dagar | Tredje part |
CONSENT | youtube.com | Används av Google för att lagra inställningar för användarens samtycke | 5947 dagar, 15 timmar | Tredje part |
' + value: '
Preferenscookies ändrar webbplatsens utseende och funktioner enligt användarens tidigare användning.
Namn | Tjänsteleverantör | Cookie syfte | Giltighet | Typ |
---|---|---|---|---|
httpskartta.hel.fi.SWCulture | kartta.hel.fi | I kakan på stadens kaktjänst sparas det språk som användaren använder i tjänsten. | 1826 dagar | |
icareus-device | helsinkikanava.fi | Helsinki-kanavas kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen. | 365 dagar | Tredje part |
VISITOR_INFO1_LIVE | youtube.com | YouTubes kaka väljer antingen den nya eller gamla videospelaren enligt förbindelsens hastighet. | 180 dagar | Tredje part |
CONSENT | youtube.com | Används av Google för att lagra inställningar för användarens samtycke. | 5947 dagar, 15 timmar | Tredje part |
activeTab | hel.fi | Används för att lagra aktiv flikdata när användaren använder gymnasiesökning. | Session | |
activeContent | hel.fi | Anvä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 index e142011a..a6ad5344 100644 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml +++ b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml @@ -1,4 +1,4 @@ description: - value: '
De uppgifter statistikkakorna samlar in används för att utveckla webbplatsen.
Namn | Tjänsteleverantör | Cookie syfte | Giltighet | Typ |
---|---|---|---|---|
nmstat | hel.fi | Siteimproves kaka samlar information om hur webbplatsen används. | 1000 dagar | |
_pk_id.* | hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.141.89f6 | hel.fi | - | 1 timme | |
_pk_id.* | kartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.* | kartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 1 timme | |
_pk_id.* | palvelukartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.* | palvelukartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 1 timme | |
rnsbid | reactandshare.com | En post relaterad till driften av reaktionsknappen Askem . | - | Lokalt minne |
rnsbid_ts | reactandshare.com | En post relaterad till driften av reaktionsknappen Askem . | - | Lokalt minne |
rns_reaction_* | reactandshare.com | En post relaterad till driften av reaktionsknappen Askem . | - | Lokalt minne |
YSC | youtube.com | YouTubes kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen. | session | Tredje part |
' + value: '
De uppgifter statistikkakorna samlar in används för att utveckla webbplatsen.
Namn | Tjänsteleverantör | Cookie syfte | Giltighet | Typ |
---|---|---|---|---|
nmstat | hel.fi | Siteimproves kaka samlar information om hur webbplatsen används. | 1000 dagar | |
_pk_id.* | hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.141.89f6 | hel.fi | - | 1 timme | |
_pk_id.* | kartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.* | kartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 1 timme | |
_pk_id.* | palvelukartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.* | palvelukartta.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 1 timme | |
_pk_id.* | avustukset.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 393 dagar | |
_pk_ses.* | avustukset.hel.fi | Matomo-statistiksystemets kaka samlar information om hur webbplatsen används. | 1 timme | |
rnsbid | reactandshare.com | En post relaterad till driften av reaktionsknappen Askem . | - | Lokalt minne |
rnsbid_ts | reactandshare.com | En post relaterad till driften av reaktionsknappen Askem . | - | Lokalt minne |
rns_reaction_* | reactandshare.com | En post relaterad till driften av reaktionsknappen Askem . | - | Lokalt minne |
YSC | youtube.com | YouTubes kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen. | session | Tredje part |
' format: full_html label: Statistik diff --git a/conf/cmi/language/sv/field.field.paragraph.contact_card.field_email.yml b/conf/cmi/language/sv/field.field.paragraph.contact_card.field_email.yml index 308b7c5f..effe0ce3 100644 --- a/conf/cmi/language/sv/field.field.paragraph.contact_card.field_email.yml +++ b/conf/cmi/language/sv/field.field.paragraph.contact_card.field_email.yml @@ -1 +1 @@ -label: 'Skicka via e-post' +label: E-post diff --git a/conf/cmi/node.type.announcement.yml b/conf/cmi/node.type.announcement.yml index 8dea5a59..f9d409f4 100644 --- a/conf/cmi/node.type.announcement.yml +++ b/conf/cmi/node.type.announcement.yml @@ -23,7 +23,7 @@ third_party_settings: unpublish_required: false unpublish_revision: false _core: - default_config_hash: P4jQ_d783n9xOHEWbuu_QH5pOhcM796VtW4DyKcTshw + default_config_hash: k-VdWbiJkFID9ruTM9Dc5eynPOdDlRjcf2j1oL7EZb0 name: Announcement type: announcement description: 'Content type for announcements that can be used to show notifications, attentions and alerts on different pages.' diff --git a/conf/cmi/paragraphs.paragraphs_type.contact_card.yml b/conf/cmi/paragraphs.paragraphs_type.contact_card.yml index d506234b..03178c20 100644 --- a/conf/cmi/paragraphs.paragraphs_type.contact_card.yml +++ b/conf/cmi/paragraphs.paragraphs_type.contact_card.yml @@ -3,7 +3,7 @@ langcode: en status: true dependencies: { } _core: - default_config_hash: 0Ng7ejlufHeGq2qBB2CGx6ppTc7Jvp17xuSTYck4Kg4 + default_config_hash: lZXTgSTApijmDirf3cF_FApjQ5LhbWbCvdp-CZCr9V0 id: contact_card label: 'Contact card' icon_uuid: null diff --git a/conf/cmi/paragraphs.paragraphs_type.contact_card_listing.yml b/conf/cmi/paragraphs.paragraphs_type.contact_card_listing.yml index f0f97f45..d5fd3b25 100644 --- a/conf/cmi/paragraphs.paragraphs_type.contact_card_listing.yml +++ b/conf/cmi/paragraphs.paragraphs_type.contact_card_listing.yml @@ -8,7 +8,7 @@ third_party_settings: paragraphs_library: allow_library_conversion: true _core: - default_config_hash: Jj7N3_BQ1xCrNmGX_ehTrhS1yeNFjcLAheUwGyjBtW8 + default_config_hash: f3zSLeDLGTEtb6evhrJPGCEKq7Hd3AkV614GpPz9yQ0 id: contact_card_listing label: 'Contact card listing' icon_uuid: null diff --git a/conf/cmi/paragraphs.paragraphs_type.social_media_link.yml b/conf/cmi/paragraphs.paragraphs_type.social_media_link.yml index 57053499..2ba7e3f3 100644 --- a/conf/cmi/paragraphs.paragraphs_type.social_media_link.yml +++ b/conf/cmi/paragraphs.paragraphs_type.social_media_link.yml @@ -3,7 +3,7 @@ langcode: en status: true dependencies: { } _core: - default_config_hash: O5xf9wOwKSAh88H1rnkoppQV-VCePrxHd3AAJV8gfm4 + default_config_hash: KLJV5dyPk_-iCZ9Dakg0kEoyz9ApkyXcx9W8R56ahIo id: social_media_link label: 'Social media link' icon_uuid: null diff --git a/pipelines/drupal-production.yml b/pipelines/drupal-production.yml new file mode 100644 index 00000000..3e4d4fce --- /dev/null +++ b/pipelines/drupal-production.yml @@ -0,0 +1,37 @@ +# Continuous integration (CI) triggers cause a pipeline to run whenever you push +# an update to the specified branches or you push specified tags. +trigger: none + +# Pull request (PR) triggers cause a pipeline to run whenever a pull request is +# opened with one of the specified target branches, or when updates are made to +# such a pull request. +# +# GitHub creates a new ref when a pull request is created. The ref points to a +# merge commit, which is the merged code between the source and target branches +# of the pull request. +# +# Opt out of pull request validation +pr: none + +# By default, use self-hosted agents +pool: Default + +resources: + repositories: + # Azure DevOps repository + - repository: helfi-rekry-pipelines + type: git + # Azure DevOps project/repository + name: helfi-rekry/helfi-rekry-pipelines + +extends: + # Filename in Azure DevOps Repository + template: components/drupal/pipelines/drupal-production.yml@helfi-rekry-pipelines + # parameters: + # Application build arguments and config map values as key value pairs. + # Does not contain all buildArguments or configMap values, the rest located in helfi-rekry-pipelines + # The values here will override the values defined in the helfi-rekry-pipelines repository + # buildArgs: + # DEBUG: 1 + # configMap: # pod environment variables + # DEBUG: 1 diff --git a/pipelines/drupal-staging.yml b/pipelines/drupal-staging.yml new file mode 100644 index 00000000..b56fc205 --- /dev/null +++ b/pipelines/drupal-staging.yml @@ -0,0 +1,47 @@ +# Continuous integration (CI) triggers cause a pipeline to run whenever you push +# an update to the specified branches or you push specified tags. +trigger: + batch: true + branches: + include: + - main + paths: + exclude: + - '*.md' + - '.github/' + - 'pipelines/drupal-production.yml' + - 'pipelines/drupal-test.yml' + +# Pull request (PR) triggers cause a pipeline to run whenever a pull request is +# opened with one of the specified target branches, or when updates are made to +# such a pull request. +# +# GitHub creates a new ref when a pull request is created. The ref points to a +# merge commit, which is the merged code between the source and target branches +# of the pull request. +# +# Opt out of pull request validation +pr: none + +# By default, use self-hosted agents +pool: Default + +resources: + repositories: + # Azure DevOps repository + - repository: helfi-rekry-pipelines + type: git + # Azure DevOps project/repository + name: helfi-rekry/helfi-rekry-pipelines + +extends: + # Filename in Azure DevOps Repository + template: components/drupal/pipelines/drupal-staging.yml@helfi-rekry-pipelines + # parameters: + # Application build arguments and config map values as key value pairs. + # Does not contain all buildArguments or configMap values, the rest located in helfi-rekry-pipelines + # The values here will override the values defined in the helfi-rekry-pipelines repository + # buildArgs: + # DEBUG: 1 + # configMap: # pod environment variables + # DEBUG: 1 diff --git a/pipelines/drupal-test.yml b/pipelines/drupal-test.yml new file mode 100644 index 00000000..1b1ec850 --- /dev/null +++ b/pipelines/drupal-test.yml @@ -0,0 +1,47 @@ +# Continuous integration (CI) triggers cause a pipeline to run whenever you push +# an update to the specified branches or you push specified tags. +trigger: + batch: true + branches: + include: + - dev + paths: + exclude: + - '*.md' + - '.github/' + - 'pipelines/drupal-production.yml' + - 'pipelines/drupal-staging.yml' + +# Pull request (PR) triggers cause a pipeline to run whenever a pull request is +# opened with one of the specified target branches, or when updates are made to +# such a pull request. +# +# GitHub creates a new ref when a pull request is created. The ref points to a +# merge commit, which is the merged code between the source and target branches +# of the pull request. +# +# Opt out of pull request validation +pr: none + +# By default, use self-hosted agents +pool: Default + +resources: + repositories: + # Azure DevOps repository + - repository: helfi-rekry-pipelines + type: git + # Azure DevOps project/repository + name: helfi-rekry/helfi-rekry-pipelines + +extends: + # Filename in Azure DevOps Repository + template: components/drupal/pipelines/drupal-test.yml@helfi-rekry-pipelines + # parameters: + # Application build arguments and config map values as key value pairs. + # Does not contain all buildArguments or configMap values, the rest located in helfi-rekry-pipelines + # The values here will override the values defined in the helfi-rekry-pipelines repository + # buildArgs: + # DEBUG: 1 + # configMap: # pod environment variables + # DEBUG: 1 diff --git a/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.info.yml b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.info.yml new file mode 100644 index 00000000..b4659746 --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.info.yml @@ -0,0 +1,7 @@ +name: helfi_hakuvahti +type: module +description: 'Drupal-integration for hakuvahti.' +package: Custom +core_version_requirement: ^10 +'interface translation project': helfi_hakuvahti +'interface translation server pattern': modules/custom/helfi_hakuvahti/translations/%language.po diff --git a/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.module b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.module new file mode 100644 index 00000000..b9086c6a --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.module @@ -0,0 +1,36 @@ + [ + 'variables' => [ + 'title' => NULL, + 'message' => NULL, + 'button_text' => NULL, + 'action_url' => NULL, + 'id' => NULL, + 'form_id' => NULL, + ], + ], + 'hakuvahti_confirmation' => [ + 'variables' => [ + 'title' => NULL, + 'message' => NULL, + 'link_text' => NULL, + 'link_url' => NULL, + ], + ], + ]; +} diff --git a/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.routing.yml b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.routing.yml new file mode 100644 index 00000000..2332fc4f --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.routing.yml @@ -0,0 +1,21 @@ +helfi_hakuvahti.subscribe: + path: '/hakuvahti/subscribe' + defaults: + _title: 'Subscribe saved search' + _controller: '\Drupal\helfi_hakuvahti\Controller\HelfiHakuvahtiSubscribeController::post' + requirements: + _permission: 'access content' +helfi_hakuvahti.confirm: + path: '/hakuvahti/confirm' + defaults: + _title: 'Confirm saved search' + _controller: '\Drupal\helfi_hakuvahti\Controller\HelfiHakuvahtiController::confirm' + requirements: + _permission: 'access content' +helfi_hakuvahti.unsubscribe: + path: '/hakuvahti/unsubscribe' + defaults: + _title: 'Are you sure you wish to delete the saved search?' + _controller: '\Drupal\helfi_hakuvahti\Controller\HelfiHakuvahtiController::unsubscribe' + requirements: + _permission: 'access content' diff --git a/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiController.php b/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiController.php new file mode 100644 index 00000000..5bbf5a81 --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiController.php @@ -0,0 +1,287 @@ +requestStack->getCurrentRequest(); + $hash = $request->query->get('hash'); + $subscription = $request->query->get('subscription'); + + return $this->isFormSubmitted() + ? $this->handleConfirmFormSubmission($hash, $subscription) + : $this->buildConfirmForm(); + } + + /** + * Handles the form submission for confirming a subscription. + * + * @param string $hash + * The hash parameter. + * @param string $subscription + * The subscription parameter. + * + * @return array + * A render array for the confirmation result. + */ + private function handleConfirmFormSubmission(string $hash, string $subscription): array { + return $this->sendConfirmationRequest($hash, $subscription) + ? $this->buildConfirmationSuccess() + : $this->buildConfirmationFailure(); + } + + /** + * Builds the form for confirming a saved search. + * + * @return array + * A render array for the confirmation form. + */ + private function buildConfirmForm(): array { + return [ + '#type' => 'form', + '#id' => 'hakuvahti_confirm_form', + '#form_id' => 'hakuvahti_confirm_form', + '#theme' => 'hakuvahti_form', + '#title' => $this->t('Confirm saved search', [], ['context' => 'Hakuvahti']), + '#message' => $this->t('Please confirm the saved search to receive notifications. Click on the button below.', [], ['context' => 'Hakuvahti']), + '#button_text' => $this->t('Confirm saved search', [], ['context' => 'Hakuvahti']), + '#action_url' => $this->getFormActionUrl(), + ]; + } + + /** + * Builds the confirmation success message. + * + * @return array + * A render array for the confirmation success message. + */ + private function buildConfirmationSuccess(): array { + return [ + '#theme' => 'hakuvahti_confirmation', + '#title' => $this->t('Search saved successfully', [], ['context' => 'Hakuvahti']), + '#message' => $this->t('You will receive an email notification of any new results matching your saved search criteria. You can delete the saved search via the cancellation link in the email messages.', [], ['context' => 'Hakuvahti']), + ]; + } + + /** + * Builds the confirmation failure message. + * + * @return array + * A render array for the confirmation failure message. + */ + private function buildConfirmationFailure(): array { + return [ + '#theme' => 'hakuvahti_confirmation', + '#title' => $this->t('Confirmation failed', [], ['context' => 'Hakuvahti']), + '#message' => $this->t('Confirming saved search failed. Please try again.', [], ['context' => 'Hakuvahti']), + ]; + } + + /** + * Sends a confirmation request to the Hakuvahti server. + * + * @param string $subscriptionHash + * The subscription hash. + * @param string $subscriptionId + * The subscription ID. + * + * @return bool + * TRUE if the confirmation request was successful, FALSE otherwise. + */ + protected function sendConfirmationRequest(string $subscriptionHash, string $subscriptionId): bool { + $csrfTokenService = $this->container->get('csrf_token'); + $httpClient = new Client([ + 'headers' => [ + 'Content-Type' => 'application/json', + 'token' => $csrfTokenService->get('session'), + ], + ]); + + try { + $response = $httpClient->get(getenv('HAKUVAHTI_URL') . "/subscription/confirm/{$subscriptionId}/{$subscriptionHash}"); + return $response->getBody()->getContents() !== ''; + } + catch (RequestException $exception) { + return FALSE; + } + } + + /** + * Handles the unsubscription from a saved search. + * + * @return array + * A render array for the unsubscription form. + */ + public function unsubscribe(): array { + $request = $this->requestStack->getCurrentRequest(); + $hash = $request->query->get('hash'); + $subscription = $request->query->get('subscription'); + + return $this->isFormSubmitted() + ? $this->handleUnsubscribeFormSubmission($hash, $subscription) + : $this->buildUnsubscribeForm(); + } + + /** + * Handles the form submission for unsubscribing from a subscription. + * + * @param string $hash + * The hash parameter. + * @param string $subscription + * The subscription parameter. + * + * @return array + * A render array for the unsubscription result. + */ + private function handleUnsubscribeFormSubmission(string $hash, string $subscription): array { + return $this->sendUnsubscribeRequest($hash, $subscription) + ? $this->buildUnsubscribeConfirmation() + : $this->buildUnsubscribeFailedSubmission(); + } + + /** + * Builds the form for unsubscribing from a saved search. + * + * @return array + * A render array for the unsubscription form. + */ + private function buildUnsubscribeForm(): array { + return [ + '#type' => 'form', + '#id' => 'hakuvahti_unsubscribe_form', + '#form_id' => 'hakuvahti_unsubscribe_form', + '#theme' => 'hakuvahti_form', + '#title' => $this->t('Are you sure you wish to delete the saved search?', [], ['context' => 'Hakuvahti']), + '#message' => $this->t('Please confirm that you wish to delete the saved search. If you have other searches saved on the City website, this link will not delete them.', [], ['context' => 'Hakuvahti']), + '#button_text' => $this->t('Delete saved search', [], ['context' => 'Hakuvahti']), + '#action_url' => $this->getFormActionUrl(), + ]; + } + + /** + * Builds the unsubscription confirmation message. + * + * @return array + * A render array for the unsubscription confirmation message. + */ + private function buildUnsubscribeConfirmation(): array { + return [ + '#theme' => 'hakuvahti_confirmation', + '#title' => $this->t('The saved search has been deleted', [], ['context' => 'Hakuvahti']), + '#message' => $this->t('You can save more searches at any time.', [], ['context' => 'Hakuvahti']), + '#link_text' => $this->t('Return to open jobs front page', [], ['context' => 'Hakuvahti']), + '#link_url' => Url::fromUri('internal:/'), + ]; + } + + /** + * Builds the unsubscription failure message. + * + * @return array + * A render array for the unsubscription failure message. + */ + private function buildUnsubscribeFailedSubmission(): array { + return [ + '#theme' => 'hakuvahti_confirmation', + '#title' => $this->t('Deleting failed', [], ['context' => 'Hakuvahti']), + '#message' => $this->t('Deleting saved search failed. Please try again.', [], ['context' => 'Hakuvahti']), + ]; + } + + /** + * Sends an unsubscribe request to the Hakuvahti server. + * + * @param string $hash + * The hash parameter. + * @param string $subscription + * The subscription parameter. + * + * @return bool + * TRUE if the unsubscription request was successful, FALSE otherwise. + */ + protected function sendUnsubscribeRequest(string $hash, string $subscription): bool { + $csrfTokenService = $this->container->get('csrf_token'); + $httpClient = new Client([ + 'headers' => [ + 'Content-Type' => 'application/json', + 'token' => $csrfTokenService->get('session'), + ], + ]); + + try { + $response = $httpClient->delete(getenv('HAKUVAHTI_URL') . "/subscription/delete/{$subscription}/{$hash}"); + return $response->getStatusCode() >= 200 && $response->getStatusCode() < 300; + } + catch (RequestException $exception) { + return FALSE; + } + } + + /** + * Gets the form action URL. + * + * @return string + * The form action URL. + */ + protected function getFormActionUrl(): string { + return $this->requestStack->getCurrentRequest()->getUri(); + } + + /** + * Checks if the form is submitted. + * + * @return bool + * TRUE if the form is submitted, FALSE otherwise. + */ + protected function isFormSubmitted(): bool { + return $this->requestStack->getCurrentRequest()->isMethod('POST'); + } + +} diff --git a/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php b/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php new file mode 100644 index 00000000..b0fbdb60 --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php @@ -0,0 +1,124 @@ +elastic_query); + $elasticQueryObject = json_decode($elasticQuery); + + // Free text search. + $query = $elasticQueryObject->query->bool->must[1]->bool->should[1]->combined_fields->query ?? NULL; + // Task area. + $taxonomyIds = array_merge($taxonomyIds, $elasticQueryObject->query->bool->must[2]->terms->task_area_external_id ?? []); + // Type of employment. + $taxonomyIds = array_merge($taxonomyIds, $elasticQueryObject->query->bool->must[3]->bool->should[1]->terms->employment_type_id ?? []); + + if (!empty($taxonomyIds)) { + $language = $obj->lang; + $terms = array_map(function ($term) use ($language) { + if ($term->hasTranslation($language)) { + $translated_term = $term->getTranslation($language); + return $translated_term->label(); + } + return $term->label(); + }, $this->_entityTypeManager->getStorage('taxonomy_term')->loadMultiple($taxonomyIds)); + } + + // We need to send just *something* if nothing is selected in filters. + if (empty($terms) && empty($query)) { + $terms[] = '*'; + } + + array_unshift($terms, $query); + + return implode(', ', array_filter($terms)); + } + + /** + * A method to handle the POST request for subscription. + * + * @return \Symfony\Component\HttpFoundation\JsonResponse + * The JSON response based on the subscription request. + */ + public function post(): JsonResponse { + $request = $this->requestStack->getCurrentRequest(); + $body = $request->getContent(FALSE); + $bodyObj = json_decode($body); + $bodyObj->lang = substr($bodyObj->query, 1, 2); + $bodyObj->search_description = $this->getSearchDescriptionTaxonomies($bodyObj); + + $token = $request->headers->get('token'); + + // FIXME: somehow, we would need to validate token from + // /session/token from react + // side, but there's just no way to match it at backend?! + // $csrfTokenService = $this->container->get('csrf_token'); + // $expectedToken = $csrfTokenService->get('session'); + // if ($this->csrfTokenService->validate($token, 'session') === FALSE) { + // + // }. + $client = new Client(); + $hakuvahtiServer = getenv('HAKUVAHTI_URL'); + $response = $client->request('POST', $hakuvahtiServer . '/subscription', [ + RequestOptions::JSON => $bodyObj, + RequestOptions::HEADERS => [ + 'token' => $token, + 'Content-Type' => 'application/json', + ], + ]); + + $statusCode = $response->getStatusCode(); + + if ($statusCode >= 200 && $statusCode < 300) { + return new JsonResponse(['success' => TRUE], Response::HTTP_OK); + } + else { + return new JsonResponse(['success' => FALSE, 'error' => $response->getBody()->getContents()], Response::HTTP_INTERNAL_SERVER_ERROR); + } + } + +} diff --git a/public/modules/custom/helfi_hakuvahti/translations/fi.po b/public/modules/custom/helfi_hakuvahti/translations/fi.po new file mode 100644 index 00000000..e2b023bc --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/translations/fi.po @@ -0,0 +1,67 @@ +msgid "" +msgstr "" + +msgctxt "Hakuvahti" +msgid "The saved search has been deleted" +msgstr "Hakuvahti on poistettu" + +msgctxt "Hakuvahti" +msgid "You can save more searches at any time." +msgstr "Voit koska tahansa tilata uusia hakuvahteja." + +msgctxt "Hakuvahti" +msgid "Return to open jobs front page" +msgstr "Palaa avoimien työpaikkojen etusivulle." + +msgctxt "Hakuvahti" +msgid "Deleting saved search failed. Please try again." +msgstr "Hakuvahdin poisto epäonnistui. Yritä uudelleen." + +msgctxt "Hakuvahti" +msgid "Please confirm that you wish to delete the saved search. If you have other searches saved on the City website, this link will not delete them." +msgstr "Vahvista, että haluat poistaa tämän hakuvahdin. Jos olet tehnyt muita hakuvahteja kaupungin verkkosivustolla, tämä ei poista niitä." + +msgctxt "Hakuvahti" +msgid "Delete saved search" +msgstr "Poista hakuvahti" + +msgctxt "Hakuvahti" +msgid "Search saved successfully" +msgstr "Hakuvahdin tilaus onnistui" + +msgctxt "Hakuvahti" +msgid "You will receive an email notification of any new results matching your saved search criteria. You can delete the saved search via the cancellation link in the email messages." +msgstr "Saat sähköpostia hakuvahdin uusista osumista. Voit halutessasi poistaa hakuvahdin sähköpostien peruutuslinkeistä." + +msgctxt "Hakuvahti" +msgid "Confirmation failed" +msgstr "Vahvistus epäonnistui." + +msgctxt "Hakuvahti" +msgid "Confirming saved search failed. Please try again." +msgstr "Hakuvahdin vahvistus epäonnistui. Yritä uudelleen." + +msgctxt "Hakuvahti" +msgid "Please confirm the saved search to receive notifications. Click on the button below." +msgstr "Vahvista hakuvahdin tilaus klikkaamalla alla olevaa painiketta." + +msgctxt "Hakuvahti" +msgid "Confirm saved search" +msgstr "Vahvista hakuvahti" + +msgctxt "Hakuvahti" +msgid "Are you sure you wish to delete the saved search?" +msgstr "Haluatko varmasti poistaa hakuvahdin?" + +msgctxt "Hakuvahti" +msgid "Deleting failed" +msgstr "Poistaminen epäonnistui" + +msgid "Subscribe saved search" +msgstr "Tilaa hakuvahti" + +msgid "Confirm saved search" +msgstr "Vahvista hakuvahti" + +msgid "Are you sure you wish to delete the saved search?" +msgstr "Haluatko varmasti poistaa hakuvahdin?" diff --git a/public/modules/custom/helfi_hakuvahti/translations/sv.po b/public/modules/custom/helfi_hakuvahti/translations/sv.po new file mode 100644 index 00000000..acd7651c --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/translations/sv.po @@ -0,0 +1,67 @@ +msgid "" +msgstr "" + +msgctxt "Hakuvahti" +msgid "The saved search has been deleted" +msgstr "Sökvakten har raderats" + +msgctxt "Hakuvahti" +msgid "You can save more searches at any time." +msgstr "Du kan när som helst beställa nya sökvakter." + +msgctxt "Hakuvahti" +msgid "Return to open jobs front page" +msgstr "Gå tillbaka till startsidan för lediga jobb." + +msgctxt "Hakuvahti" +msgid "Deleting saved search failed. Please try again." +msgstr "" + +msgctxt "Hakuvahti" +msgid "Please confirm that you wish to delete the saved search. If you have other searches saved on the City website, this link will not delete them." +msgstr "Bekräfta att du vill ta bort den här sökvakten. Om du har skapat andra sökvakter på stadens webbplats tar denna åtgärd inte bort dem." + +msgctxt "Hakuvahti" +msgid "Delete saved search" +msgstr "Radera sökvakten" + +msgctxt "Hakuvahti" +msgid "Search saved successfully" +msgstr "Beställningen av sökvakten lyckades" + +msgctxt "Hakuvahti" +msgid "You will receive an email notification of any new results matching your saved search criteria. You can delete the saved search via the cancellation link in the email messages." +msgstr "Du får e-post om sökvaktens nya träffar. Du kan ta bort sökvakten via avbeställningslänkarna i e-postmeddelandena." + +msgctxt "Hakuvahti" +msgid "Confirmation failed" +msgstr "Bekräftelse misslyckades" + +msgctxt "Hakuvahti" +msgid "Confirming saved search failed. Please try again." +msgstr "Bekräftelse av sparad sökning misslyckades. Försök igen." + +msgctxt "Hakuvahti" +msgid "Please confirm the saved search to receive notifications. Click on the button below." +msgstr "Bekräfta beställningen av sökvakten genom att klicka på knappen nedan." + +msgctxt "Hakuvahti" +msgid "Confirm saved search" +msgstr "Bekräfta sökvakten" + +msgctxt "Hakuvahti" +msgid "Are you sure you wish to delete the saved search?" +msgstr "Är du säker på att du vill ta bort sökvakten?" + +msgctxt "Hakuvahti" +msgid "Deleting failed" +msgstr "Radering misslyckades" + +msgid "Subscribe saved search" +msgstr "Beställ sökvakten" + +msgid "Confirm saved search" +msgstr "Bekräfta sökvakten" + +msgid "Are you sure you wish to delete the saved search?" +msgstr "Är du säker på att du vill ta bort sökvakten?" diff --git a/public/modules/custom/helfi_rekry_content/src/Entity/JobListing.php b/public/modules/custom/helfi_rekry_content/src/Entity/JobListing.php index 223250a4..338d86cf 100644 --- a/public/modules/custom/helfi_rekry_content/src/Entity/JobListing.php +++ b/public/modules/custom/helfi_rekry_content/src/Entity/JobListing.php @@ -31,7 +31,7 @@ public function getJobDescription() : string { */ public function getOrganizationName() : string { if (!$this->get('field_organization_override')->first()) { - return $this->get('field_organization_name')->value; + return $this->get('field_organization_name')->value ?? ''; } $storage = $this->entityTypeManager() @@ -41,11 +41,11 @@ public function getOrganizationName() : string { $organization_entity = $storage->load($this->get('field_organization_override')->first()->target_id); if (!$organization_entity->hasTranslation($this->get('langcode')->value)) { - return $organization_entity->getName(); + return $organization_entity->getName() ?? ''; } $translated_organization_entity = $organization_entity->getTranslation($this->get('langcode')->value); - return $translated_organization_entity->getName(); + return $translated_organization_entity->getName() ?? ''; } /** diff --git a/public/sites/default/all.settings.php b/public/sites/default/all.settings.php index 1ea638a8..d23b71f4 100644 --- a/public/sites/default/all.settings.php +++ b/public/sites/default/all.settings.php @@ -68,6 +68,7 @@ 'ELASTIC_PASSWORD', 'SENTRY_DSN_REACT', 'HELBIT_CLIENT_ID', + 'HAKUVAHTI_URL', ]; foreach ($additionalEnvVars as $var) { $preflight_checks['environmentVariables'][] = $var; diff --git a/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css b/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css index c2b81b4a..96cd17ca 100644 --- a/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css +++ b/public/themes/custom/hdbt_subtheme/dist/css/styles.min.css @@ -1 +1 @@ -.job-listing__organization-name{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);display:flex;margin-top:16px}@media(min-width: 768px){.job-listing__organization-name{margin-top:24px}}.organization{display:flex;margin-right:8px;position:relative}.organization::after{content:","}.organization:last-child{margin-right:0}.organization:last-child::after{display:none}.job-listing__item{padding-left:16px;padding-right:16px}@media(min-width: 768px){.job-listing__item{padding-left:32px;padding-right:32px}}.job-listing__link-wrapper{margin-top:16px}@media(min-width: 768px){.job-listing__link-wrapper{margin-top:24px}}.job-listing__link-wrapper.job-listing__link-wrapper--last{margin-top:32px}@media(min-width: 768px){.job-listing__link-wrapper.job-listing__link-wrapper--last{margin-top:48px}}.job-listing__link{width:100%}@media(min-width: 768px){.job-listing__link{width:auto}}.job-listing__job-description{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);margin-top:16px}@media(min-width: 768px){.job-listing__job-description{margin-top:48px}}.job-listing__job-description p:first-child{margin-top:0}.job-listing__salary-class__content{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height)}.job-listing__sidebar{background-color:var(--hdbt-color-palette--secondary)}.job-listing__organization-information,.job-listing__city-description{padding:24px}.job-listing__image img{display:block;height:auto;max-width:100%;overflow:hidden}.job-listing__image .image-placeholder{padding-bottom:66.67%}.job-listing__organization,.job-listing__city-description-title{--line-height: 1.5;font-size:1rem;font-weight:700;line-height:var(--line-height);margin-top:0}@media(min-width: 992px){.job-listing__organization,.job-listing__city-description-title{--line-height: 1.5555555556;font-size:1.125rem;font-weight:700}}.job-listing__organization-description,.job-listing__city-description-text{--line-height: 1.5;font-size:1rem;font-weight:400;line-height:var(--line-height);margin-top:8px}.job-listing__organization-description p:first-child,.job-listing__city-description-text p:first-child{margin-top:0}.node--type-job-listing .component--remote-video{margin-top:32px}@media(min-width: 992px){.node--type-job-listing .component--remote-video{margin-top:48px}}.node--type-job-listing.node--view-mode-full .content-tags{margin-top:24px}.block--of-interest{background-color:#e6e6e6;padding:80px 0;margin-top:64px;margin-bottom:calc((50px + 48px)*-1)}.block--of-interest .block--of-interest__content-container{max-width:1296px;padding-left:16px;padding-right:16px;margin:auto}@media(min-width: 768px){.block--of-interest .block--of-interest__content-container{max-width:1328px}}@media(min-width: 768px){.block--of-interest .block--of-interest__content-container{padding-left:32px;padding-right:32px}}.block--of-interest h2{margin-bottom:48px;margin-top:0}.block--of-interest .block--of-interest__more-link{margin-top:48px}.component--job-listing-search{background-color:#f7f7f8}.layout-main-wrapper>*:last-child .component--job-listing-search:last-child{margin-bottom:-115px;padding-bottom:55px}.job-listing-search__result-actions{align-items:flex-end;display:flex;justify-content:space-between}.component--job-listing-search .component__container{padding-bottom:32px;padding-top:32px}@media(min-width: 768px){.component--job-listing-search .component__container{padding-bottom:64px;padding-top:64px}}.job-listing-search__count-container{--line-height: 1.5;font-size:1.25rem;font-weight:400;line-height:var(--line-height);margin-bottom:16px}@media(min-width: 992px){.job-listing-search__count-container{--line-height: 1.5;font-size:1.375rem;font-weight:400}}@media(min-width: 992px){.job-listing-search__count-container{margin-bottom:0}}.job-listing-search__count-container .job-listing-search__count{font-weight:700}.job-listing-search__sort{min-width:283px}.job-listing-search__result--list{margin-top:24px}@media(min-width: 768px){.job-listing-search__result--list{margin-top:32px}}.job-search-form{margin-bottom:32px}.job-search-form__title{margin-bottom:32px}@media(min-width: 992px){.job-search-form__dropdowns__upper{margin-left:-12px;margin-right:-12px;display:flex}.job-search-form__dropdowns__upper>*{margin-left:12px;margin-right:12px}}.job-search-form__dropdown li+li{margin-top:0}@media(min-width: 992px){.job-search-form__dropdown--upper{width:50%}}.job-search-form__filter{margin-bottom:16px;width:100%}@media(min-width: 992px){.job-search-form__filter{margin-bottom:24px}}.job-search-form__checkboxes{border:none;margin-bottom:16px;padding:0}@media(min-width: 992px){.job-search-form__checkboxes{display:flex}}fieldset .job-search-form__checkbox{--background-selected: var(--hdbt-color-black)}fieldset .job-search-form__checkbox:not(:first-of-type){margin-top:32px}@media(min-width: 992px){fieldset .job-search-form__checkbox:not(:first-of-type){margin-left:16px;margin-top:0}}.job-search-form__checkboxes-legend,.job-search__no-results__heading{--line-height: 1.5;font-size:1rem;font-weight:700;line-height:var(--line-height);margin-bottom:16px}@media(min-width: 992px){.job-search-form__checkboxes-legend,.job-search__no-results__heading{--line-height: 1.5555555556;font-size:1.125rem;font-weight:700}}.job-search-form__selections-container{list-style-type:none}button.job-search-form__remove-selection-button:not(:disabled){background-color:rgba(0,0,0,0);border:1px solid #000;border-radius:48px;padding:12px 20px 12px;--color-hover-focus: var(--hdbt-text-color);color:var(--hdbt-color-black)}button.job-search-form__remove-selection-button:not(:disabled):hover,button.job-search-form__remove-selection-button:not(:disabled):active{background-color:#000;border-color:#000;color:#fff}button.job-search-form__remove-selection-button:not(:disabled):focus,button.job-search-form__remove-selection-button:not(:disabled):active{border-color:#000;outline:2px solid #000;outline-offset:2px}.job-search-form__remove-selection-button span{padding:0}.job-search-form__selections-wrapper button.job-search-form__remove-selection-button>div{margin-right:0}.job-search-form__clear-all{margin-top:0}.job-search-form__clear-all .job-search-form__clear-all-button{--background-color-hover: transparent;--background-color-focus: transparent;--background-color-hover-focus: transparent;--border-color-hover: var(--hdbt-color-black);--border-color-focus: var(--hdbt-color-black);--border-color-hover-focus: var(--hdbt-color-black);--color: var(--hdbt-color-black);--color-hover: var(--hdbt-color-black);--color-focus: var(--hdbt-color-black);--color-hover-focus: var(--hdbt-color-black);--focus-outline-color: var(--hdbt-color-black)}.job-search__results-stats{margin-bottom:32px;margin-left:16px;margin-right:16px}@media(min-width: 992px){.job-search__results-stats{align-items:flex-end;display:flex;justify-content:space-between}} +.job-listing__organization-name{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);display:flex;margin-top:16px}@media(min-width: 768px){.job-listing__organization-name{margin-top:24px}}.organization{display:flex;margin-right:8px;position:relative}.organization::after{content:","}.organization:last-child{margin-right:0}.organization:last-child::after{display:none}.job-listing__item{padding-left:16px;padding-right:16px}@media(min-width: 768px){.job-listing__item{padding-left:32px;padding-right:32px}}.job-listing__link-wrapper{margin-top:16px}@media(min-width: 768px){.job-listing__link-wrapper{margin-top:24px}}.job-listing__link-wrapper.job-listing__link-wrapper--last{margin-top:32px}@media(min-width: 768px){.job-listing__link-wrapper.job-listing__link-wrapper--last{margin-top:48px}}.job-listing__link{width:100%}@media(min-width: 768px){.job-listing__link{width:auto}}.job-listing__job-description{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height);margin-top:16px}@media(min-width: 768px){.job-listing__job-description{margin-top:48px}}.job-listing__job-description p:first-child{margin-top:0}.job-listing__salary-class__content{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height)}.job-listing__sidebar{background-color:var(--hdbt-color-palette--secondary)}.job-listing__organization-information,.job-listing__city-description{padding:24px}.job-listing__image img{display:block;height:auto;max-width:100%;overflow:hidden}.job-listing__image .image-placeholder{padding-bottom:66.67%}.job-listing__organization,.job-listing__city-description-title{--line-height: 1.5;font-size:1rem;font-weight:700;line-height:var(--line-height);margin-top:0}@media(min-width: 992px){.job-listing__organization,.job-listing__city-description-title{--line-height: 1.5555555556;font-size:1.125rem;font-weight:700}}.job-listing__organization-description,.job-listing__city-description-text{--line-height: 1.5;font-size:1rem;font-weight:400;line-height:var(--line-height);margin-top:8px}.job-listing__organization-description p:first-child,.job-listing__city-description-text p:first-child{margin-top:0}.node--type-job-listing .component--remote-video{margin-top:32px}@media(min-width: 992px){.node--type-job-listing .component--remote-video{margin-top:48px}}.node--type-job-listing.node--view-mode-full .content-tags{margin-top:24px}.block--of-interest{background-color:#e6e6e6;padding:80px 0;margin-top:64px;margin-bottom:calc((50px + 48px)*-1)}.block--of-interest .block--of-interest__content-container{max-width:1296px;padding-left:16px;padding-right:16px;margin:auto}@media(min-width: 768px){.block--of-interest .block--of-interest__content-container{max-width:1328px}}@media(min-width: 768px){.block--of-interest .block--of-interest__content-container{padding-left:32px;padding-right:32px}}.block--of-interest h2{margin-bottom:48px;margin-top:0}.block--of-interest .block--of-interest__more-link{margin-top:48px}.component--job-listing-search{background-color:#f7f7f8}.layout-main-wrapper>*:last-child .component--job-listing-search:last-child{margin-bottom:-115px;padding-bottom:55px}.job-listing-search__result-actions{align-items:flex-end;display:flex;justify-content:space-between}.component--job-listing-search .component__container{padding-bottom:32px;padding-top:32px}@media(min-width: 768px){.component--job-listing-search .component__container{padding-bottom:64px;padding-top:64px}}.job-listing-search__count-container{--line-height: 1.5;font-size:1.25rem;font-weight:400;line-height:var(--line-height);margin-bottom:16px}@media(min-width: 992px){.job-listing-search__count-container{--line-height: 1.5;font-size:1.375rem;font-weight:400}}@media(min-width: 992px){.job-listing-search__count-container{margin-bottom:0}}.job-listing-search__count-container .job-listing-search__count{font-weight:700}.job-listing-search__sort{min-width:283px}.job-listing-search__result--list{margin-top:24px}@media(min-width: 768px){.job-listing-search__result--list{margin-top:32px}}.job-search-form{margin-bottom:32px}.job-search-form__title{margin-bottom:32px}@media(min-width: 992px){.job-search-form__dropdowns__upper{margin-left:-12px;margin-right:-12px;display:flex}.job-search-form__dropdowns__upper>*{margin-left:12px;margin-right:12px}}.job-search-form__dropdown li+li{margin-top:0}@media(min-width: 992px){.job-search-form__dropdown--upper{width:50%}}.job-search-form__filter{margin-bottom:16px;width:100%}@media(min-width: 992px){.job-search-form__filter{margin-bottom:24px}}.job-search-form__checkboxes{border:none;margin-bottom:16px;padding:0}@media(min-width: 992px){.job-search-form__checkboxes{display:flex}}fieldset .job-search-form__checkbox{--background-selected: var(--hdbt-color-black)}fieldset .job-search-form__checkbox:not(:first-of-type){margin-top:32px}@media(min-width: 992px){fieldset .job-search-form__checkbox:not(:first-of-type){margin-left:16px;margin-top:0}}.job-search-form__checkboxes-legend,.job-search__no-results__heading{--line-height: 1.5;font-size:1rem;font-weight:700;line-height:var(--line-height);margin-bottom:16px}@media(min-width: 992px){.job-search-form__checkboxes-legend,.job-search__no-results__heading{--line-height: 1.5555555556;font-size:1.125rem;font-weight:700}}.job-search-form__selections-container{list-style-type:none}button.job-search-form__remove-selection-button:not(:disabled){background-color:rgba(0,0,0,0);border:1px solid #000;border-radius:48px;padding:12px 20px 12px;--color-hover-focus: var(--hdbt-text-color);color:var(--hdbt-color-black)}button.job-search-form__remove-selection-button:not(:disabled):hover,button.job-search-form__remove-selection-button:not(:disabled):active{background-color:#000;border-color:#000;color:#fff}button.job-search-form__remove-selection-button:not(:disabled):focus,button.job-search-form__remove-selection-button:not(:disabled):active{border-color:#000;outline:2px solid #000;outline-offset:2px}.job-search-form__remove-selection-button span{padding:0}.job-search-form__selections-wrapper button.job-search-form__remove-selection-button>div{margin-right:0}.job-search-form__clear-all{margin-top:0}.job-search-form__clear-all .job-search-form__clear-all-button{--background-color-hover: transparent;--background-color-focus: transparent;--background-color-hover-focus: transparent;--border-color-hover: var(--hdbt-color-black);--border-color-focus: var(--hdbt-color-black);--border-color-hover-focus: var(--hdbt-color-black);--color: var(--hdbt-color-black);--color-hover: var(--hdbt-color-black);--color-focus: var(--hdbt-color-black);--color-hover-focus: var(--hdbt-color-black);--focus-outline-color: var(--hdbt-color-black)}.job-search-form__search-monitor{margin-bottom:32px}.job-search-form__search-monitor div[role=heading]{flex:0 1 auto}.job-search-form__search-monitor{background-color:var(--color-fog-light);padding:32px}.job-search-form__search-monitor__heading{margin-top:0}.job-search-form__search-monitor__content>p{--line-height: 1.5555555556;font-size:1.125rem;font-weight:400;line-height:var(--line-height)}.job-search-form__search-monitor__content[aria-hidden=true]{display:none}.job-search-form__search-monitor__content__heading{margin-top:32px}.job-search-form__search-monitor__terms::after{content:"*";margin-left:8px}.job-search-form__search-monitor__error{margin-top:32px}.job-search__results-stats{margin-bottom:32px;margin-left:16px;margin-right:16px}@media(min-width: 992px){.job-search__results-stats{align-items:flex-end;display:flex;justify-content:space-between}}.hakuvahti-confirmation .components{margin-top:24px}.hakuvahti-confirmation p{--line-height: 1.5;font-size:1.25rem;font-weight:400;line-height:var(--line-height)}@media(min-width: 992px){.hakuvahti-confirmation p{--line-height: 1.5;font-size:1.375rem;font-weight:400}}.hakuvahti-confirmation p:first-child{margin-top:0}.hakuvahti-confirmation .page-divider{padding-left:0}.hakuvahti-confirmation .form-submit{margin-top:32px}@media(min-width: 768px){.hakuvahti-confirmation .form-submit{margin-top:64px}} diff --git a/public/themes/custom/hdbt_subtheme/package-lock.json b/public/themes/custom/hdbt_subtheme/package-lock.json index 86ad78ed..41dc7916 100644 --- a/public/themes/custom/hdbt_subtheme/package-lock.json +++ b/public/themes/custom/hdbt_subtheme/package-lock.json @@ -3343,9 +3343,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001596", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", - "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==", + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", "funding": [ { "type": "opencollective", diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss index 336d7260..884e9cda 100644 --- a/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss +++ b/public/themes/custom/hdbt_subtheme/src/scss/06_components/__index.scss @@ -1,3 +1,4 @@ @import 'pages/_index'; @import 'block/_index'; @import 'paragraphs/_index'; +@import 'forms/_index'; diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/forms/__index.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/forms/__index.scss new file mode 100644 index 00000000..494772fc --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/src/scss/06_components/forms/__index.scss @@ -0,0 +1 @@ +@import 'hakuvahti-confirmation'; diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/forms/_hakuvahti-confirmation.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/forms/_hakuvahti-confirmation.scss new file mode 100644 index 00000000..3f3ae7da --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/src/scss/06_components/forms/_hakuvahti-confirmation.scss @@ -0,0 +1,25 @@ +.hakuvahti-confirmation { + .components { + margin-top: $spacing-and-half; + } + + p { + @include font('lead'); + } + + p:first-child { + margin-top: 0; + } + + .page-divider { + padding-left: 0; + } + + .form-submit { + margin-top: $spacing-double; + + @include breakpoint($breakpoint-m) { + margin-top: $spacing-quadruple; + } + } +} diff --git a/public/themes/custom/hdbt_subtheme/src/scss/06_components/paragraphs/_job-listing-search.scss b/public/themes/custom/hdbt_subtheme/src/scss/06_components/paragraphs/_job-listing-search.scss index d73a9cee..2e8428fa 100644 --- a/public/themes/custom/hdbt_subtheme/src/scss/06_components/paragraphs/_job-listing-search.scss +++ b/public/themes/custom/hdbt_subtheme/src/scss/06_components/paragraphs/_job-listing-search.scss @@ -159,6 +159,47 @@ button.job-search-form__remove-selection-button:not(:disabled) { --focus-outline-color: var(--hdbt-color-black); } +.job-search-form__search-monitor { + margin-bottom: $spacing-double; + + div[role=heading] { + flex: 0 1 auto; + } +} + +.job-search-form__search-monitor { + background-color: var(--color-fog-light); + padding: $spacing-double; +} + +.job-search-form__search-monitor__heading { + margin-top: 0; +} + +.job-search-form__search-monitor__content { + > p { + @include font('body'); + } + + &[aria-hidden='true'] { + display: none; + } +} + +.job-search-form__search-monitor__content__heading { + margin-top: $spacing-double; +} + +// The terms are required but there is no indicator on the label. This is why the '*' is added here. +.job-search-form__search-monitor__terms::after { + content: '*'; + margin-left: $spacing-half; +} + +.job-search-form__search-monitor__error { + margin-top: $spacing-double; +} + .job-search__results-stats { margin-bottom: $spacing-double; margin-left: $spacing; diff --git a/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/form--hakuvahti-confirm-form.html.twig b/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/form--hakuvahti-confirm-form.html.twig new file mode 100644 index 00000000..d5db4b6e --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/form--hakuvahti-confirm-form.html.twig @@ -0,0 +1 @@ +{% include "@hdbt_subtheme/module/helfi_hakuvahti/hakuvahti-action-wrapper.twig" with { content: children } %} diff --git a/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/form--hakuvahti-unsubscribe-form.html.twig b/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/form--hakuvahti-unsubscribe-form.html.twig new file mode 100644 index 00000000..d5db4b6e --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/form--hakuvahti-unsubscribe-form.html.twig @@ -0,0 +1 @@ +{% include "@hdbt_subtheme/module/helfi_hakuvahti/hakuvahti-action-wrapper.twig" with { content: children } %} diff --git a/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/hakuvahti-action-wrapper.twig b/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/hakuvahti-action-wrapper.twig new file mode 100644 index 00000000..191d5060 --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/templates/module/helfi_hakuvahti/hakuvahti-action-wrapper.twig @@ -0,0 +1,12 @@ +
{{ message }}
+