diff --git a/README.md b/README.md index 938a6a9e..bc643c74 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# City of Helsinki - Rekry Drupal 9 project +# City of Helsinki - Rekry Drupal project -Description of your project. +Rekry, which is short for recruitment in Finnish, is a site integrated with Helbit. It migrates job listings to the job +search found on the site and provides other recruitment information for the city of Helsinki. ## Environments @@ -41,10 +42,110 @@ This will log you inside the app container: $ make shell ``` -## Enable Hakuvahti features +## Instance specific 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. +Some instance specific configuration can be found in Rekry-instance configuration page in the +`/admin/tools/rekry-content` url. -These lines are commented out with comment `# Uncomment to enable Hakuvahti:` +### Custom node types -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. +#### Job listing (job_listing) + +A _job listing_ is custom node type used to migrate job listings from Helbit, meaning all nodes are created +automatically. While you can create a _job listing_ node manually through the user interface, this is not the standard +workflow on the site. These listings appear in the `job_search` paragraph and a view called `of_interest`displayed in a +block on _job listing_ nodes. The _job listings_ utilize multiple taxonomies to categorize the content. Some job listings +include media such as images and videos and there is much processing going into these on the `helfi_rekry_content` +module. Read more about the [Helbit integration](#helbit-integration) that creates these nodes and the [Job search](#job-search-job_search) +feature that displays them below. + +### Custom paragraphs + +#### Job search (job_search) + +_Job search_ is a paragraph with two modes. The first mode provides a few filters and a submit button that redirects to +the node specified in the _Search result page_ field, using the applied filters as parameters. If the +_Search result page_ field is not filled, the full _job search_ is displayed. _Job search_is a React-based search that +uses the (`job_listing_search`) view as a fallback when JavaScript is not enabled. All React searches are part of the +`hdbt` theme, where most related logic is also located. The _job search_ paragraph includes an editable title, +description, and the _Search result page_ field. There is also a saved search feature called _Hakuvahti_ embedded on the +_job search_. Read more about this feature on the [Hakuvahti section](#hakuvahti) of this document. + +- React search code can be found under the `hdbt` theme [here](https://github.com/City-of-Helsinki/drupal-hdbt/tree/main/src/js/react/apps/job-search). +- Check the `hdbt_subtheme` preprocesses for _job search_ related configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/tree/dev/public/themes/custom/hdbt_subtheme). +- Fallback view when JavaScript is not enabled can be found in the `/conf/cim` folder [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/conf/cmi/views.view.job_listing_search.yml). +- The saved search feature _Hakuvahti_ uses a separate server and the code related to it can be found [here](https://github.com/City-of-Helsinki/helfi-hakuvahti). + +##### Common issues + +Sometimes on local the search dropdowns don't have any content. In this case usually running the indexing helps: + +1. Run `make shell` on the root of the project +2. Inside the shell run `drush sapi-rt; drush sapi-c; drush sapi-i; drush cr` to clear the Elastic index and reindex it +and clear Drupal caches after the indexing is done. +3. Now retry the search dropdowns and they should have options. + +### Custom media types + +#### Job listing image (job_listing_image) + +_Job listing image_ is a media type that is used to save the imported images from Helbit. The original idea behind this +separate media type has perhaps been a way to separate images used for normal content and job listings. + +### Custom roles + +#### HR (hr) + +User role for viewing and editing only the job listings on the site. + +### Helbit integration + +_Helbit_ is the source from which job listings are migrated to this instance. The `helfi_rekry_content` module handles +the migration and data processing. It retrieves job listing information from the API and saves it as job listing nodes +in the database. Media such as images and videos are processed and stored as media entities, with unsupported video +types being skipped. Categorization is achieved using taxonomy terms created from the API data, which are then linked +to the job listing nodes. The migrations run periodically as a cron jobs. Both published and unpublished job listings +from the API are migrated, with future publish dates scheduled accordingly. A separate cron job ensures scheduled job +listings are published for indexing. + +- The `helfi_rekry_content` module code can be found from [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/tree/dev/public/modules/custom/helfi_rekry_content). +- The migration interval for the new job listings can be checked from the cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/migrate-job-listings.sh). +- The migration interval for changed job listings poll is written on this cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/migrate-changed-job-listings.sh). +- The scheduled publishing interval can be checked from this cron configuration [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/blob/dev/docker/openshift/crons/content-scheduler.sh). + +### Hakuvahti + +_Hakuvahti_ is feature of the [Job search](#job-search-job_search) that allows users to save their job search criteria. Users will +receive automatic email notifications whenever new job listings that match their criteria are posted on the site. + +Hakuvahti consists of three main components: a Node.js server, `helfi_hakuvahti` custom module and a React part +integrated with the Job search. The Node.js server handles most of the heavy lifting, including sending emails. The +Drupal custom module manages communication between the Node.js server and the React form, which displays the +feature to users. + +- The Drupal code for hakuvahti can be found from the `helfi_hakuvahti` custom module [here](https://github.com/City-of-Helsinki/drupal-helfi-rekry/tree/dev/public/modules/custom/helfi_hakuvahti). +- The hakuvahti Node.js server is on a separate repository [here](https://github.com/City-of-Helsinki/helfi-hakuvahti). +- The React part is under the Job search in `hdbt` theme _react_ folder. The functionality is written in [this file](https://github.com/City-of-Helsinki/drupal-hdbt/blob/main/src/js/react/apps/job-search/containers/SearchMonitorContainer.tsx). +- The React form has configurable texts that can be found from the Rekry instance configuration in + `/admin/tools/rekry-content` url. You can translate these configurations for the three main languages using the + _Translate_ tab. + +#### How to enable Hakuvahti features on local + +To enable Hakuvahti features for local development or usage, you need to: + +1. Install [Hakuvahti Node.js server]((https://github.com/City-of-Helsinki/helfi-hakuvahti) locally. +2. Start the server on your local. Instructions are on the [Hakuvahti server README](https://github.com/City-of-Helsinki/helfi-hakuvahti?tab=readme-ov-file#installing-and-running-hakuvahti). +3. Now clear the caches on your Rekry instance, and you should be able to see the Hakuvahti on the Job search on you +local site. +4. To test the functionality, you should use the Mailpit running on your local in the `https://mailpit.docker.so/` url +to view the emails being sent by the feature. + +## Customizations + +### Not part of global navigation + +Unlike other instances the link to the instance is in the header top navigation and the main menu of the instance is not +part of the global navigation. There is however a link to this instance located under another instance's menu tree on +the global navigation too. The logic that dictates if the menu is added to the global navigation or not can be found +[here](https://github.com/City-of-Helsinki/drupal-module-helfi-navigation/blob/main/src/Plugin/rest/resource/GlobalMobileMenu.php). diff --git a/compose.override.yaml b/compose.override.yaml new file mode 100644 index 00000000..a369c861 --- /dev/null +++ b/compose.override.yaml @@ -0,0 +1,7 @@ +services: + app: + environment: + HAKUVAHTI_URL: 'http://helfi-rekry.docker.so:3000' +networks: + hakuvahti-network: + external: true diff --git a/composer.lock b/composer.lock index 24cddeaf..72b3fc08 100644 --- a/composer.lock +++ b/composer.lock @@ -183,6 +183,215 @@ }, "time": "2024-06-06T17:36:37+00:00" }, + { + "name": "chillerlan/php-qrcode", + "version": "4.4.1", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-qrcode.git", + "reference": "f5e243f3b61a60934780579430a951460f40888d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/f5e243f3b61a60934780579430a951460f40888d", + "reference": "f5e243f3b61a60934780579430a951460f40888d", + "shasum": "" + }, + "require": { + "chillerlan/php-settings-container": "^2.1.4 || ^3.1", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phan/phan": "^5.4", + "phpmd/phpmd": "^2.15", + "phpunit/phpunit": "^9.6", + "setasign/fpdf": "^1.8.2", + "squizlabs/php_codesniffer": "^3.8" + }, + "suggest": { + "chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.", + "setasign/fpdf": "Required to use the QR FPDF output.", + "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\QRCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kazuhiko Arase", + "homepage": "https://github.com/kazuhikoarase" + }, + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + }, + { + "name": "Contributors", + "homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors" + } + ], + "description": "A QR code generator with a user friendly API. PHP 7.4+", + "homepage": "https://github.com/chillerlan/php-qrcode", + "keywords": [ + "phpqrcode", + "qr", + "qr code", + "qrcode", + "qrcode-generator" + ], + "support": { + "issues": "https://github.com/chillerlan/php-qrcode/issues", + "source": "https://github.com/chillerlan/php-qrcode/tree/4.4.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-01-06T16:56:58+00:00" + }, + { + "name": "chillerlan/php-settings-container", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-settings-container.git", + "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681", + "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.1" + }, + "require-dev": { + "phpmd/phpmd": "^2.15", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-deprecation-rules": "^1.2", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\Settings\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + } + ], + "description": "A container class for immutable settings objects. Not a DI container.", + "homepage": "https://github.com/chillerlan/php-settings-container", + "keywords": [ + "Settings", + "configuration", + "container", + "helper" + ], + "support": { + "issues": "https://github.com/chillerlan/php-settings-container/issues", + "source": "https://github.com/chillerlan/php-settings-container" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-07-16T11:13:48+00:00" + }, + { + "name": "christian-riesen/otp", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/ChristianRiesen/otp.git", + "reference": "aab865ae6d356993ad9d51f8a7e8f32b8a54730a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ChristianRiesen/otp/zipball/aab865ae6d356993ad9d51f8a7e8f32b8a54730a", + "reference": "aab865ae6d356993ad9d51f8a7e8f32b8a54730a", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2", + "paragonie/random_compat": ">=1", + "php": ">=5.6.0", + "symfony/polyfill-php56": "^1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.11 || ^6.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Otp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Riesen", + "email": "chris.riesen@gmail.com", + "homepage": "http://christianriesen.com", + "role": "Developer" + } + ], + "description": "One Time Passwords, hotp and totp according to RFC4226 and RFC6238", + "homepage": "https://github.com/ChristianRiesen/otp", + "keywords": [ + "googleauthenticator", + "hotp", + "otp", + "rfc4226", + "rfc6238", + "totp" + ], + "support": { + "issues": "https://github.com/ChristianRiesen/otp/issues", + "source": "https://github.com/ChristianRiesen/otp/tree/2.7.0" + }, + "time": "2021-02-23T20:13:30+00:00" + }, { "name": "commerceguys/addressing", "version": "v1.4.2", @@ -394,16 +603,16 @@ }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", "shasum": "" }, "require": { @@ -455,7 +664,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.2" }, "funding": [ { @@ -471,7 +680,7 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-07-12T11:35:52+00:00" }, { "name": "consolidation/annotated-command", @@ -1037,18 +1246,85 @@ }, "time": "2022-12-20T22:53:13+00:00" }, + { + "name": "defuse/php-encryption", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/defuse/php-encryption.git", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/f53396c2d34225064647a05ca76c1da9d99e5828", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "paragonie/random_compat": ">= 2", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^5|^6|^7|^8|^9|^10", + "yoast/phpunit-polyfills": "^2.0.0" + }, + "bin": [ + "bin/generate-defuse-key" + ], + "type": "library", + "autoload": { + "psr-4": { + "Defuse\\Crypto\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Hornby", + "email": "taylor@defuse.ca", + "homepage": "https://defuse.ca/" + }, + { + "name": "Scott Arciszewski", + "email": "info@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "Secure PHP Encryption Library", + "keywords": [ + "aes", + "authenticated encryption", + "cipher", + "crypto", + "cryptography", + "encrypt", + "encryption", + "openssl", + "security", + "symmetric key cryptography" + ], + "support": { + "issues": "https://github.com/defuse/php-encryption/issues", + "source": "https://github.com/defuse/php-encryption/tree/v2.4.0" + }, + "time": "2023-06-19T06:10:36+00:00" + }, { "name": "dflydev/dot-access-data", - "version": "v3.0.2", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { @@ -1108,9 +1384,9 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" }, - "time": "2022-10-27T11:44:00+00:00" + "time": "2024-07-08T12:26:09+00:00" }, { "name": "doctrine/annotations", @@ -1511,20 +1787,20 @@ }, { "name": "drupal/admin_toolbar", - "version": "3.4.2", + "version": "3.5.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/admin_toolbar.git", - "reference": "3.4.2" + "reference": "3.5.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.4.2.zip", - "reference": "3.4.2", - "shasum": "f5a008e5c73f5a11c6c8067c0ea6ebb76aa33854" + "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.5.0.zip", + "reference": "3.5.0", + "shasum": "099e8d4dc98e1d551b4f9cffdc39599eb8ad04e8" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.5 || ^10 || ^11" }, "require-dev": { "drupal/admin_toolbar_tools": "*" @@ -1532,8 +1808,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.4.2", - "datestamp": "1696006195", + "version": "3.5.0", + "datestamp": "1722639094", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -1566,6 +1842,10 @@ "homepage": "https://www.drupal.org/u/matio89", "role": "Maintainer" }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, { "name": "matio89", "homepage": "https://www.drupal.org/user/2320090" @@ -1852,27 +2132,27 @@ }, { "name": "drupal/config_rewrite", - "version": "1.5.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_rewrite.git", - "reference": "8.x-1.5" + "reference": "8.x-1.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_rewrite-8.x-1.5.zip", - "reference": "8.x-1.5", - "shasum": "c4740c74fc6e48069cada1fab4c809f1b99d31ac" + "url": "https://ftp.drupal.org/files/projects/config_rewrite-8.x-1.6.zip", + "reference": "8.x-1.6", + "shasum": "caa66f28c03e680ce5163c2924733f75913231ad" }, "require": { - "drupal/core": "^8.6 || ^9 || ^10", + "drupal/core": "^8.6 || ^9 || ^10 || ^11", "php": ">=7.1" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.5", - "datestamp": "1659538494", + "version": "8.x-1.6", + "datestamp": "1719490162", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -1885,9 +2165,9 @@ ], "authors": [ { - "name": "Brant Wynn (brantwynn)", - "homepage": "https://www.drupal.org/u/brantwynn", - "role": "Maintainer" + "name": "Diana Wynn (saltednut)", + "homepage": "https://www.drupal.org/u/saltednut", + "role": "Co-Maintainer" }, { "name": "saltednut", @@ -1983,16 +2263,16 @@ }, { "name": "drupal/core", - "version": "10.3.0", + "version": "10.3.2", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "6f1af3070110d7d0f2a6671bea26add34667f765" + "reference": "10e79c67a903844bef02a5cf10475d9a8b623e7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/6f1af3070110d7d0f2a6671bea26add34667f765", - "reference": "6f1af3070110d7d0f2a6671bea26add34667f765", + "url": "https://api.github.com/repos/drupal/core/zipball/10e79c67a903844bef02a5cf10475d9a8b623e7a", + "reference": "10e79c67a903844bef02a5cf10475d9a8b623e7a", "shasum": "" }, "require": { @@ -2141,13 +2421,13 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.3.0" + "source": "https://github.com/drupal/core/tree/10.3.2" }, - "time": "2024-06-20T18:58:42+00:00" + "time": "2024-08-08T09:23:57+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.3.0", + "version": "10.3.2", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", @@ -2191,32 +2471,32 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.3.0" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.3.2" }, "time": "2024-05-11T08:21:39+00:00" }, { "name": "drupal/crop", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/crop.git", - "reference": "8.x-2.3" + "reference": "8.x-2.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/crop-8.x-2.3.zip", - "reference": "8.x-2.3", - "shasum": "8e109cf60077f4c605c4d1f895cb3dc28613a23a" + "url": "https://ftp.drupal.org/files/projects/crop-8.x-2.4.zip", + "reference": "8.x-2.4", + "shasum": "be11fad0abf1d53544d35cb4ca6cedd8e91d2542" }, "require": { - "drupal/core": "^9.3 || ^10" + "drupal/core": "^9.3 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.3", - "datestamp": "1665437894", + "version": "8.x-2.4", + "datestamp": "1720455738", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2597,26 +2877,26 @@ }, { "name": "drupal/easy_breadcrumb", - "version": "2.0.6", + "version": "2.0.8", "source": { "type": "git", "url": "https://git.drupalcode.org/project/easy_breadcrumb.git", - "reference": "2.0.6" + "reference": "2.0.8" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/easy_breadcrumb-2.0.6.zip", - "reference": "2.0.6", - "shasum": "622f31fb071dea25735cfc4eaab4cf96bde917ab" + "url": "https://ftp.drupal.org/files/projects/easy_breadcrumb-2.0.8.zip", + "reference": "2.0.8", + "shasum": "49bfd9b8b0ec664963d05e360449876745cf2868" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.2 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.6", - "datestamp": "1707084295", + "version": "2.0.8", + "datestamp": "1723545040", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2662,6 +2942,10 @@ "name": "NickDickinsonWilde", "homepage": "https://www.drupal.org/user/3094661" }, + { + "name": "rakesh.gectcr", + "homepage": "https://www.drupal.org/user/1177822" + }, { "name": "renatog", "homepage": "https://www.drupal.org/user/3326031" @@ -2670,6 +2954,10 @@ "name": "sonemonu", "homepage": "https://www.drupal.org/user/1667988" }, + { + "name": "spuky", + "homepage": "https://www.drupal.org/user/209353" + }, { "name": "tatarbj", "homepage": "https://www.drupal.org/user/649590" @@ -2821,28 +3109,98 @@ "issues": "https://www.drupal.org/project/issues/elasticsearch_connector" } }, + { + "name": "drupal/encrypt", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/encrypt.git", + "reference": "8.x-3.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/encrypt-8.x-3.1.zip", + "reference": "8.x-3.1", + "shasum": "357ca7fcf9879af66b5d0c5593da080f19664f17" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10", + "drupal/key": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.1", + "datestamp": "1669655248", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10 || ^11" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "alexpott", + "homepage": "https://www.drupal.org/user/157725" + }, + { + "name": "greggles", + "homepage": "https://www.drupal.org/user/36762" + }, + { + "name": "nerdstein", + "homepage": "https://www.drupal.org/user/1557710" + }, + { + "name": "rlhawk", + "homepage": "https://www.drupal.org/user/352283" + }, + { + "name": "theunraveler", + "homepage": "https://www.drupal.org/user/71548" + }, + { + "name": "zzolo", + "homepage": "https://www.drupal.org/user/147331" + } + ], + "description": "Provides an API for two-way encryption.", + "homepage": "https://www.drupal.org/project/encrypt", + "support": { + "source": "https://git.drupalcode.org/project/encrypt" + } + }, { "name": "drupal/entity", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity.git", - "reference": "8.x-1.4" + "reference": "8.x-1.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "1cf7712318fad144eab106a8fcfcd396aeb5676f" + "url": "https://ftp.drupal.org/files/projects/entity-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "86c0b75c173144aaedde3e3258dc0d3ce11d1a22" }, "require": { - "drupal/core": "^9.2|^10.0" + "drupal/core": "^10.1 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.4", - "datestamp": "1661898023", + "version": "8.x-1.5", + "datestamp": "1723380062", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2855,7 +3213,7 @@ ], "authors": [ { - "name": "Berdir", + "name": "berdir", "homepage": "https://www.drupal.org/user/214652" }, { @@ -2892,20 +3250,20 @@ }, { "name": "drupal/entity_browser", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity_browser.git", - "reference": "8.x-2.10" + "reference": "8.x-2.11" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_browser-8.x-2.10.zip", - "reference": "8.x-2.10", - "shasum": "d52548ea66dc56108c2e211aeaff6e1cc0522e85" + "url": "https://ftp.drupal.org/files/projects/entity_browser-8.x-2.11.zip", + "reference": "8.x-2.11", + "shasum": "4ead3d3f9f6365fbc25cfbd0edcc5e0a9cc52e02" }, "require": { - "drupal/core": "^9.5 || ^10" + "drupal/core": "^10.2 || ^11" }, "conflict": { "drupal/media_entity": "1.*" @@ -2918,13 +3276,14 @@ "drupal/entityqueue": "^1.0", "drupal/inline_entity_form": "^1.0@rc", "drupal/paragraphs": "^1.0", + "drupal/search_api": "^1.0", "drupal/token": "^1.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.10", - "datestamp": "1702325310", + "version": "8.x-2.11", + "datestamp": "1723378138", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2986,29 +3345,29 @@ }, { "name": "drupal/entity_reference_revisions", - "version": "1.11.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity_reference_revisions.git", - "reference": "8.x-1.11" + "reference": "8.x-1.12" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.11.zip", - "reference": "8.x-1.11", - "shasum": "de21cbb0d8a0344dc3496addcad4ed536747cec5" + "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.12.zip", + "reference": "8.x-1.12", + "shasum": "2a2ff8617c7ce01b56df1caaf0a563da04948e26" }, "require": { - "drupal/core": "^9 || ^10" + "drupal/core": "^9 || ^10 || ^11" }, "require-dev": { - "drupal/diff": "1.x-dev" + "drupal/diff": "^1 || ^2" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.11", - "datestamp": "1705140721", + "version": "8.x-1.12", + "datestamp": "1722804497", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3050,20 +3409,20 @@ }, { "name": "drupal/entity_usage", - "version": "2.0.0-beta12", + "version": "2.0.0-beta13", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity_usage.git", - "reference": "8.x-2.0-beta12" + "reference": "8.x-2.0-beta13" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_usage-8.x-2.0-beta12.zip", - "reference": "8.x-2.0-beta12", - "shasum": "cdd31e6c413cad6fbdb1bd0aac9ad8a0331eb429" + "url": "https://ftp.drupal.org/files/projects/entity_usage-8.x-2.0-beta13.zip", + "reference": "8.x-2.0-beta13", + "shasum": "3b07a629ed6c94ee23656556b0d1a1c7ba58a77f" }, "require": { - "drupal/core": "^9.1 || ^10" + "drupal/core": "^10.1 || ^11" }, "require-dev": { "drupal/block_field": "~1.0", @@ -3080,8 +3439,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.0-beta12", - "datestamp": "1684309054", + "version": "8.x-2.0-beta13", + "datestamp": "1721834455", "security-coverage": { "status": "not-covered", "message": "Beta releases are not covered by Drupal security advisories." @@ -3098,6 +3457,10 @@ "GPL-2.0+" ], "authors": [ + { + "name": "Lullabot", + "homepage": "https://www.drupal.org/user/3815489" + }, { "name": "marcoscano", "homepage": "https://www.drupal.org/user/1288796" @@ -3277,26 +3640,26 @@ }, { "name": "drupal/externalauth", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://git.drupalcode.org/project/externalauth.git", - "reference": "2.0.5" + "reference": "2.0.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/externalauth-2.0.5.zip", - "reference": "2.0.5", - "shasum": "7c262c7ca20d26aae45896daee4249e47b637abc" + "url": "https://ftp.drupal.org/files/projects/externalauth-2.0.6.zip", + "reference": "2.0.6", + "shasum": "0dbc9fbab0901e940d52b239e08f031797f6bd2a" }, "require": { - "drupal/core": "^9 || ^10" + "drupal/core": "^9.5 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.5", - "datestamp": "1708329378", + "version": "2.0.6", + "datestamp": "1720689758", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3331,26 +3694,29 @@ }, { "name": "drupal/field_group", - "version": "3.4.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/field_group.git", - "reference": "8.x-3.4" + "reference": "8.x-3.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/field_group-8.x-3.4.zip", - "reference": "8.x-3.4", - "shasum": "80b937e1a11f8b29c69d853fc4bf798c057c6f94" + "url": "https://ftp.drupal.org/files/projects/field_group-8.x-3.6.zip", + "reference": "8.x-3.6", + "shasum": "427c0a65dc1936e69e60c120776056cfe5b43e86" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.2 || ^10 || ^11" + }, + "require-dev": { + "drupal/jquery_ui_accordion": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.4", - "datestamp": "1667241979", + "version": "8.x-3.6", + "datestamp": "1722672510", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3530,20 +3896,20 @@ }, { "name": "drupal/focal_point", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/focal_point.git", - "reference": "2.1.0" + "reference": "2.1.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/focal_point-2.1.0.zip", - "reference": "2.1.0", - "shasum": "f5be307039e226953598932d30a4eb6b2e9ac7d9" + "url": "https://ftp.drupal.org/files/projects/focal_point-2.1.1.zip", + "reference": "2.1.1", + "shasum": "f8c24bb4257f784176e79ec6f2b4c11ed46391e0" }, "require": { - "drupal/core": "^9.3 || ^10", + "drupal/core": "^9.3 || ^10 || ^11", "drupal/crop": "^2.3" }, "require-dev": { @@ -3552,8 +3918,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.1.0", - "datestamp": "1715085292", + "version": "2.1.1", + "datestamp": "1721126807", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3571,7 +3937,7 @@ "role": "Maintainer" }, { - "name": "Rajeshreeputra", + "name": "rajeshreeputra", "homepage": "https://www.drupal.org/user/3418561" } ], @@ -3605,7 +3971,7 @@ "extra": { "drupal": { "version": "8.x-3.0-rc11", - "datestamp": "1718354743", + "datestamp": "1719568502", "security-coverage": { "status": "not-covered", "message": "RC releases are not covered by Drupal security advisories." @@ -3706,31 +4072,32 @@ }, { "name": "drupal/hal", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/hal.git", - "reference": "2.0.2" + "reference": "2.0.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/hal-2.0.2.zip", - "reference": "2.0.2", - "shasum": "9ec3ad376678941bae2e0eae0c980c42cddfc8b2" + "url": "https://ftp.drupal.org/files/projects/hal-2.0.3.zip", + "reference": "2.0.3", + "shasum": "81bc4b0bfdc6c3b7c2ec50f5eb4739451ff5c2ae" }, "require": { - "drupal/core": "^10" + "drupal/core": "^10 || ^11" }, "require-dev": { "drupal/aggregator": "2.x-dev", "drupal/entity_reference_revisions": "1.x-dev", - "drupal/rdf": "2.x-dev" + "drupal/rdf": "^2.1 || 3.0.x-dev", + "drupal/tour": "^1" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.2", - "datestamp": "1700523711", + "version": "2.0.3", + "datestamp": "1721252595", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3759,16 +4126,16 @@ }, { "name": "drupal/hdbt", - "version": "6.5.27", + "version": "6.6.3", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-hdbt.git", - "reference": "6ea70e083d02bec8fb622d686d47943c819f3fa1" + "reference": "260ed89837be3b1ae9a19248a0e21717b9597885" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/6ea70e083d02bec8fb622d686d47943c819f3fa1", - "reference": "6ea70e083d02bec8fb622d686d47943c819f3fa1", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-hdbt/zipball/260ed89837be3b1ae9a19248a0e21717b9597885", + "reference": "260ed89837be3b1ae9a19248a0e21717b9597885", "shasum": "" }, "require": { @@ -3786,10 +4153,10 @@ "Drupal" ], "support": { - "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.5.27", + "source": "https://github.com/City-of-Helsinki/drupal-hdbt/tree/6.6.3", "issues": "https://github.com/City-of-Helsinki/drupal-hdbt/issues" }, - "time": "2024-06-20T12:41:39+00:00" + "time": "2024-08-14T08:40:02+00:00" }, { "name": "drupal/hdbt_admin", @@ -3879,16 +4246,16 @@ }, { "name": "drupal/helfi_api_base", - "version": "2.7.5", + "version": "2.7.6", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base.git", - "reference": "4165398e51c1657ffffb077d756d49db68b75832" + "reference": "a4bf1a64ccbcd3582e6d63cf2bcbc725146ae465" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-api-base/zipball/4165398e51c1657ffffb077d756d49db68b75832", - "reference": "4165398e51c1657ffffb077d756d49db68b75832", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-api-base/zipball/a4bf1a64ccbcd3582e6d63cf2bcbc725146ae465", + "reference": "a4bf1a64ccbcd3582e6d63cf2bcbc725146ae465", "shasum": "" }, "require": { @@ -3918,10 +4285,10 @@ ], "description": "Helfi - API Base", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/tree/2.7.5", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/tree/2.7.6", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/issues" }, - "time": "2024-06-25T09:02:27+00:00" + "time": "2024-07-30T06:54:52+00:00" }, { "name": "drupal/helfi_azure_fs", @@ -3969,12 +4336,12 @@ "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-tools.git", - "reference": "cea692973b01424a3c3ffde13b9db48edbcbf6c9" + "reference": "eadca37ff757c3de0b1a309d37ddd2c6d4910740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-tools/zipball/cea692973b01424a3c3ffde13b9db48edbcbf6c9", - "reference": "cea692973b01424a3c3ffde13b9db48edbcbf6c9", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-tools/zipball/eadca37ff757c3de0b1a309d37ddd2c6d4910740", + "reference": "eadca37ff757c3de0b1a309d37ddd2c6d4910740", "shasum": "" }, "require": { @@ -4046,7 +4413,7 @@ "source": "https://github.com/City-of-Helsinki/drupal-tools/tree/main", "issues": "https://github.com/City-of-Helsinki/drupal-tools/issues" }, - "time": "2024-06-12T09:40:19+00:00" + "time": "2024-08-12T09:17:00+00:00" }, { "name": "drupal/helfi_navigation", @@ -4084,16 +4451,16 @@ }, { "name": "drupal/helfi_platform_config", - "version": "4.4.1", + "version": "4.4.8", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config.git", - "reference": "682707108c1afbbba8f6d91667d5c209f8b6ef2a" + "reference": "10ca013c3e13c112eb9827fd1b91ed52833b2712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/682707108c1afbbba8f6d91667d5c209f8b6ef2a", - "reference": "682707108c1afbbba8f6d91667d5c209f8b6ef2a", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-helfi-platform-config/zipball/10ca013c3e13c112eb9827fd1b91ed52833b2712", + "reference": "10ca013c3e13c112eb9827fd1b91ed52833b2712", "shasum": "" }, "require": { @@ -4104,8 +4471,8 @@ "drupal/config_ignore": "^3.0", "drupal/config_rewrite": "^1.4", "drupal/content_lock": "^2.2", - "drupal/core": "^10.1.5", - "drupal/core-composer-scaffold": "^10.0", + "drupal/core": "^10", + "drupal/core-composer-scaffold": "^10", "drupal/crop": "^2.1", "drupal/default_content": "^2.0.0-alpha2", "drupal/diff": "^1.0", @@ -4139,6 +4506,7 @@ "drupal/publication_date": "^2.0@beta", "drupal/rdf": "^2.0", "drupal/readonly_field_widget": "^1.0", + "drupal/real_aes": "^2.6", "drupal/redirect": "^1.6", "drupal/role_delegation": "^1.1", "drupal/scheduler": "^1.3", @@ -4148,6 +4516,7 @@ "drupal/siteimprove": "^2.0", "drupal/social_media": "^2.0", "drupal/stomp": "^2.0", + "drupal/tfa": "^1.7", "drupal/token": "^1.9", "drupal/translatable_menu_link_uri": "^2.0", "drupal/view_unpublished": "^1.0", @@ -4163,7 +4532,6 @@ "drupal/ctools": "<3.11 || ^4.0.1", "drupal/gin_toolbar": ">1.0.0-rc6", "drupal/helfi_media_map": "*", - "drupal/simple_sitemap": ">4.1.7", "drush/drush": "<12" }, "type": "drupal-module", @@ -4181,7 +4549,7 @@ "[#UHF-7008] Admin toolbar and contextual links should always be rendered in the admin language (https://www.drupal.org/project/drupal/issues/2313309)": "https://www.drupal.org/files/issues/2023-12-19/2313309-179.patch", "[#UHF-9388] Process configuration translation files for custom modules (https://www.drupal.org/i/2845437)": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/fd68277191b8f8ec290e53b5fbbae699b2260384/patches/drupal-2845437-process-custom-module-translation-config-10.3.x.patch", "[#UHF-9690] Allow updating lists when switching from allowed values to allowed values function (https://www.drupal.org/i/2873353)": "https://www.drupal.org/files/issues/2021-05-18/allow-allowed-values-function-update-D9-2873353_1.patch", - "[#UHF-9952, #UHF-9980] Duplicate
tags (https://www.drupal.org/i/3083786)": "https://www.drupal.org/files/issues/2024-05-14/3083786-duplicate-br-tags-2024-05-14-no-tests.patch" + "[#UHF-9952, #UHF-9980] Duplicate
tags (https://www.drupal.org/i/3083786)": "https://www.drupal.org/files/issues/2024-08-08/3083786--mr-8066--10-3-backport.patch" }, "drupal/default_content": { "https://www.drupal.org/project/default_content/issues/2640734#comment-14638943": "https://raw.githubusercontent.com/City-of-Helsinki/drupal-helfi-platform-config/main/patches/default_content_2.0.0-alpha2-2640734_manual_imports-e164a354.patch" @@ -4207,10 +4575,10 @@ ], "description": "HELfi platform config", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.4.1", + "source": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/tree/4.4.8", "issues": "https://github.com/City-of-Helsinki/drupal-helfi-platform-config/issues" }, - "time": "2024-06-26T11:20:54+00:00" + "time": "2024-08-12T09:33:04+00:00" }, { "name": "drupal/helfi_proxy", @@ -4301,16 +4669,16 @@ }, { "name": "drupal/helfi_tunnistamo", - "version": "3.0.7", + "version": "3.0.8", "source": { "type": "git", "url": "https://github.com/City-of-Helsinki/drupal-module-helfi-tunnistamo.git", - "reference": "881201f804fd6350c8c4705a677619b25fd49c72" + "reference": "a7e4709c0b6407df0a68df87b113f06a1613d0fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-tunnistamo/zipball/881201f804fd6350c8c4705a677619b25fd49c72", - "reference": "881201f804fd6350c8c4705a677619b25fd49c72", + "url": "https://api.github.com/repos/City-of-Helsinki/drupal-module-helfi-tunnistamo/zipball/a7e4709c0b6407df0a68df87b113f06a1613d0fe", + "reference": "a7e4709c0b6407df0a68df87b113f06a1613d0fe", "shasum": "" }, "require": { @@ -4327,10 +4695,10 @@ ], "description": "Tunnistamo integration", "support": { - "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-tunnistamo/tree/3.0.7", + "source": "https://github.com/City-of-Helsinki/drupal-module-helfi-tunnistamo/tree/3.0.8", "issues": "https://github.com/City-of-Helsinki/drupal-module-helfi-tunnistamo/issues" }, - "time": "2024-06-18T07:56:54+00:00" + "time": "2024-08-05T07:39:24+00:00" }, { "name": "drupal/image_style_quality", @@ -4395,26 +4763,26 @@ }, { "name": "drupal/imagecache_external", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/imagecache_external.git", - "reference": "3.0.3" + "reference": "3.0.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/imagecache_external-3.0.3.zip", - "reference": "3.0.3", - "shasum": "83f5282a1854cc981fe19cea92f9b2b9d8167dd8" + "url": "https://ftp.drupal.org/files/projects/imagecache_external-3.0.4.zip", + "reference": "3.0.4", + "shasum": "0a6fc7f66f6ab39beb787ae0a5923009911de55d" }, "require": { - "drupal/core": "^9.3 || ^10" + "drupal/core": "^10.1 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.3", - "datestamp": "1711900821", + "version": "3.0.4", + "datestamp": "1722719303", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4680,6 +5048,77 @@ "source": "https://git.drupalcode.org/project/jquery_ui_draggable" } }, + { + "name": "drupal/key", + "version": "1.19.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/key.git", + "reference": "8.x-1.19" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/key-8.x-1.19.zip", + "reference": "8.x-1.19", + "shasum": "ee8f7b8f8babd381f1e4423dccede94b4eb5985c" + }, + "require": { + "drupal/core": ">=8.9 <12" + }, + "require-dev": { + "drush/drush": ">=9" + }, + "suggest": { + "drush/drush": ">=11" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.19", + "datestamp": "1720053341", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": ">=9" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Cellar Door", + "homepage": "https://www.drupal.org/user/658076" + }, + { + "name": "crashtest_", + "homepage": "https://www.drupal.org/user/261457" + }, + { + "name": "nerdstein", + "homepage": "https://www.drupal.org/user/1557710" + }, + { + "name": "rlhawk", + "homepage": "https://www.drupal.org/user/352283" + } + ], + "description": "Provides the ability to manage site-wide keys", + "homepage": "http://drupal.org/project/key", + "keywords": [ + "Drupal" + ], + "support": { + "source": "https://git.drupalcode.org/project/key", + "issues": "http://drupal.org/project/key" + } + }, { "name": "drupal/linkit", "version": "6.1.4", @@ -4969,17 +5408,17 @@ }, { "name": "drupal/migrate_plus", - "version": "6.0.2", + "version": "6.0.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/migrate_plus.git", - "reference": "6.0.2" + "reference": "6.0.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.2.zip", - "reference": "6.0.2", - "shasum": "4315bc293aa75ea9247582d5d1925b075865e467" + "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.4.zip", + "reference": "6.0.4", + "shasum": "0357c416d2a9fd3f4211dd13c6585ed8072fabe7" }, "require": { "drupal/core": ">=9.1", @@ -4996,8 +5435,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.2", - "datestamp": "1705424638", + "version": "6.0.4", + "datestamp": "1721745585", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5034,20 +5473,20 @@ }, { "name": "drupal/monolog", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/monolog.git", - "reference": "3.0.3" + "reference": "3.0.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/monolog-3.0.3.zip", - "reference": "3.0.3", - "shasum": "99a8d46376f158da841f3fd524a535e37f9c84ad" + "url": "https://ftp.drupal.org/files/projects/monolog-3.0.4.zip", + "reference": "3.0.4", + "shasum": "5e86b3598b826dca767c52bc7e63cb2c049212d3" }, "require": { - "drupal/core": "^10", + "drupal/core": "^10 || ^11", "monolog/monolog": "^3.2.0", "php": "^8.1.0" }, @@ -5062,8 +5501,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.3", - "datestamp": "1718981516", + "version": "3.0.4", + "datestamp": "1723450250", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5218,20 +5657,20 @@ }, { "name": "drupal/paragraphs", - "version": "1.17.0", + "version": "1.18.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/paragraphs.git", - "reference": "8.x-1.17" + "reference": "8.x-1.18" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.17.zip", - "reference": "8.x-1.17", - "shasum": "81c05f6a1eb59ab957c9ac97b2e79d6c9837bd72" + "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.18.zip", + "reference": "8.x-1.18", + "shasum": "594e2937ea5c95fc88b60420590c4d83f5cd71ee" }, "require": { - "drupal/core": "^9.3 || ^10", + "drupal/core": "^10.2 || ^11", "drupal/entity_reference_revisions": "~1.3" }, "require-dev": { @@ -5239,6 +5678,7 @@ "drupal/diff": "1.x-dev", "drupal/entity_browser": "2.x-dev", "drupal/entity_usage": "2.x-dev", + "drupal/feeds": "^3", "drupal/field_group": "3.x-dev", "drupal/inline_entity_form": "1.x-dev", "drupal/paragraphs-paragraphs_library": "*", @@ -5252,8 +5692,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.17", - "datestamp": "1709804220", + "version": "8.x-1.18", + "datestamp": "1723029144", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5369,31 +5809,34 @@ }, { "name": "drupal/pathauto", - "version": "1.12.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/pathauto.git", - "reference": "8.x-1.12" + "reference": "8.x-1.13" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.12.zip", - "reference": "8.x-1.12", - "shasum": "b7b6432e315e38e59a7c6cc117134326c580de4c" + "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.13.zip", + "reference": "8.x-1.13", + "shasum": "e64b5a82cf1b8ab48bce400b21ae6fc99c8078fd" }, "require": { - "drupal/core": "^9.3 || ^10", + "drupal/core": "^9.4 || ^10 || ^11", "drupal/ctools": "*", "drupal/token": "*" }, + "require-dev": { + "drupal/forum": "*" + }, "suggest": { "drupal/redirect": "When installed Pathauto will provide a new \"Update Action\" in case your URLs change. This is the recommended update action and is considered the best practice for SEO and usability." }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.12", - "datestamp": "1712319355", + "version": "8.x-1.13", + "datestamp": "1722507672", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5501,26 +5944,26 @@ }, { "name": "drupal/purge", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/purge.git", - "reference": "8.x-3.5" + "reference": "8.x-3.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/purge-8.x-3.5.zip", - "reference": "8.x-3.5", - "shasum": "3772c156be0a2fc1df179710d23b9d7bf645b112" + "url": "https://ftp.drupal.org/files/projects/purge-8.x-3.6.zip", + "reference": "8.x-3.6", + "shasum": "f01d53c5a1d34301e86371c70a1d237a517b2897" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.5 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.5", - "datestamp": "1697142035", + "version": "8.x-3.6", + "datestamp": "1719557519", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5531,7 +5974,7 @@ }, "drush": { "services": { - "drush.services.yml": ">=9" + "drush.services.yml": ">=10" } } }, @@ -5561,24 +6004,24 @@ }, { "name": "drupal/raven", - "version": "5.0.15", + "version": "5.0.16", "source": { "type": "git", "url": "https://git.drupalcode.org/project/raven.git", - "reference": "5.0.15" + "reference": "5.0.16" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/raven-5.0.15.zip", - "reference": "5.0.15", - "shasum": "ef3472e1ed7436ac4d453fb371065e8e3f5ed7d5" + "url": "https://ftp.drupal.org/files/projects/raven-5.0.16.zip", + "reference": "5.0.16", + "shasum": "cd4d545b74ad7d22691dd06177a164bc12074201" }, "require": { "drupal/core": "^10.1 || ^11", "sentry/sentry": "^4.4" }, "require-dev": { - "drupal/csp": "^1.17", + "drupal/csp": "^1.17 || ^2.0", "drupal/monitoring": "^1.13", "drupal/seckit": "^2.0", "drush/drush": "^11.0 || ^12.0 || ^13.0" @@ -5586,8 +6029,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "5.0.15", - "datestamp": "1719102344", + "version": "5.0.16", + "datestamp": "1723001088", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5700,27 +6143,73 @@ } }, { - "name": "drupal/readonly_field_widget", - "version": "1.5.0", + "name": "drupal/readonly_field_widget", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/readonly_field_widget.git", + "reference": "8.x-1.5" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/readonly_field_widget-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "936bfb182d2c406501fb279dd3977d4c29113c3f" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.5", + "datestamp": "1660464949", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "thtas", + "homepage": "https://www.drupal.org/user/287467" + } + ], + "description": "Provides a field widget which can display the field formatter version of a field on the edit form", + "homepage": "https://www.drupal.org/project/readonly_field_widget", + "support": { + "source": "https://git.drupalcode.org/project/readonly_field_widget" + } + }, + { + "name": "drupal/real_aes", + "version": "2.6.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/readonly_field_widget.git", - "reference": "8.x-1.5" + "url": "https://git.drupalcode.org/project/real_aes.git", + "reference": "8.x-2.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/readonly_field_widget-8.x-1.5.zip", - "reference": "8.x-1.5", - "shasum": "936bfb182d2c406501fb279dd3977d4c29113c3f" + "url": "https://ftp.drupal.org/files/projects/real_aes-8.x-2.6.zip", + "reference": "8.x-2.6", + "shasum": "c18f40c69beadac60836032a127e53d5c0cd0a57" }, "require": { - "drupal/core": "^8 || ^9 || ^10" + "defuse/php-encryption": "^2.0", + "drupal/core": "^8 || ^9 || ^10 || ^11", + "drupal/encrypt": "^3.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.5", - "datestamp": "1660464949", + "version": "8.x-2.6", + "datestamp": "1719066076", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5733,38 +6222,46 @@ ], "authors": [ { - "name": "thtas", - "homepage": "https://www.drupal.org/user/287467" + "name": "Heine", + "homepage": "https://www.drupal.org/user/17943" + }, + { + "name": "nerdstein", + "homepage": "https://www.drupal.org/user/1557710" + }, + { + "name": "rlhawk", + "homepage": "https://www.drupal.org/user/352283" } ], - "description": "Provides a field widget which can display the field formatter version of a field on the edit form", - "homepage": "https://www.drupal.org/project/readonly_field_widget", + "description": "Provides an Authenticated AES encryption method for Encrypt through the Defuse PHP Encryption library.", + "homepage": "https://www.drupal.org/project/real_aes", "support": { - "source": "https://git.drupalcode.org/project/readonly_field_widget" + "source": "https://git.drupalcode.org/project/real_aes" } }, { "name": "drupal/redirect", - "version": "1.9.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/redirect.git", - "reference": "8.x-1.9" + "reference": "8.x-1.10" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/redirect-8.x-1.9.zip", - "reference": "8.x-1.9", - "shasum": "2987de20f509e9f7cec8a0f81d3a6774f9b0ba3e" + "url": "https://ftp.drupal.org/files/projects/redirect-8.x-1.10.zip", + "reference": "8.x-1.10", + "shasum": "9d72d7e0717dbdea3ab3306c5d6840da5bd3024c" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.2 || ^10 || ^11" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.9", - "datestamp": "1693393506", + "version": "8.x-1.10", + "datestamp": "1723277641", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5781,7 +6278,7 @@ "homepage": "https://www.drupal.org/user/214652" }, { - "name": "Dave Reid", + "name": "dave reid", "homepage": "https://www.drupal.org/user/53892" }, { @@ -6114,17 +6611,17 @@ }, { "name": "drupal/simple_sitemap", - "version": "4.1.7", + "version": "4.1.9", "source": { "type": "git", "url": "https://git.drupalcode.org/project/simple_sitemap.git", - "reference": "4.1.7" + "reference": "4.1.9" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.7.zip", - "reference": "4.1.7", - "shasum": "3d55ee386b0ebb81ed4c3461451a9e32a15d93d7" + "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.9.zip", + "reference": "4.1.9", + "shasum": "d86d90408b334cd7470ea631e3be5acca2103377" }, "require": { "drupal/core": "^9.3 || ^10", @@ -6133,8 +6630,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.1.7", - "datestamp": "1698936269", + "version": "4.1.9", + "datestamp": "1712441608", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6526,28 +7023,119 @@ "source": "https://git.drupalcode.org/project/stomp" } }, + { + "name": "drupal/tfa", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/tfa.git", + "reference": "8.x-1.7" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/tfa-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "a5e70d146da5bc44f97bfe6fbbda61cc8310fa87" + }, + "require": { + "chillerlan/php-qrcode": "^1.0.9 || ^2.0 || ^3.2 || ^4.0", + "christian-riesen/otp": "^2.1", + "drupal/core": "^8 || ^9 || ^10", + "drupal/encrypt": "~3.0", + "php": ">=7.0" + }, + "require-dev": { + "drupal/encrypt": "*", + "drupal/key": "*", + "drupal/services": "^4 || ^5", + "drush/drush": "^10 || ^11 || ^12", + "mglaman/phpstan-drupal": "^1.1", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.7", + "datestamp": "1713484490", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10 || ^11" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "cmlara", + "homepage": "https://www.drupal.org/user/1790054" + }, + { + "name": "coltrane", + "homepage": "https://www.drupal.org/user/91990" + }, + { + "name": "daggerhart", + "homepage": "https://www.drupal.org/user/167806" + }, + { + "name": "greggles", + "homepage": "https://www.drupal.org/user/36762" + }, + { + "name": "jcnventura", + "homepage": "https://www.drupal.org/user/122464" + }, + { + "name": "nerdstein", + "homepage": "https://www.drupal.org/user/1557710" + }, + { + "name": "poker10", + "homepage": "https://www.drupal.org/user/272316" + } + ], + "description": "Pluggable provider of two factor authentication for Drupal", + "homepage": "https://www.drupal.org/project/tfa", + "support": { + "source": "https://git.drupalcode.org/project/tfa" + } + }, { "name": "drupal/token", - "version": "1.14.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/token.git", - "reference": "8.x-1.14" + "reference": "8.x-1.15" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/token-8.x-1.14.zip", - "reference": "8.x-1.14", - "shasum": "df3cae709fcc1a99ac1111ce67a0d6af56d287d7" + "url": "https://ftp.drupal.org/files/projects/token-8.x-1.15.zip", + "reference": "8.x-1.15", + "shasum": "5916fbccc86458a5f51e71f832ac70ff4c84ebdf" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.2 || ^10 || ^11" + }, + "require-dev": { + "drupal/book": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.14", - "datestamp": "1713009399", + "version": "8.x-1.15", + "datestamp": "1722206211", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6645,24 +7233,23 @@ }, { "name": "drupal/twig_tweak", - "version": "3.3.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/twig_tweak.git", - "reference": "3.3.0" + "reference": "3.4.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.3.0.zip", - "reference": "3.3.0", - "shasum": "a029ab1775b62f08e573e5ad1ab27bc833e7f5b9" + "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.4.0.zip", + "reference": "3.4.0", + "shasum": "1f47f71b4cfbad97fff11db1adc72c311bb1645e" }, "require": { - "drupal/core": "^9.3 || ^10.0", + "drupal/core": "^10.3 || ^11.0", "ext-json": "*", - "php": ">=7.3", - "symfony/polyfill-php80": "^1.17", - "twig/twig": "^2.15.3 || ^3.4.3" + "php": ">=8.1", + "twig/twig": "^3.10.3" }, "suggest": { "symfony/var-dumper": "Better dump() function for debugging Twig variables" @@ -6670,8 +7257,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.3.0", - "datestamp": "1708670116", + "version": "3.4.0", + "datestamp": "1721562308", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6679,7 +7266,7 @@ }, "drush": { "services": { - "drush.services.yml": "^9 || ^10 || ^11" + "drush.services.yml": "^10 || ^11" } } }, @@ -7016,16 +7603,16 @@ }, { "name": "drush/drush", - "version": "12.5.2", + "version": "12.5.3", "source": { "type": "git", "url": "https://github.com/drush-ops/drush.git", - "reference": "4aebed85dc818ff762f2e24a85b023d2a52050df" + "reference": "7fe0a492d5126c457c5fb184c4668a132b0aaac6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/4aebed85dc818ff762f2e24a85b023d2a52050df", - "reference": "4aebed85dc818ff762f2e24a85b023d2a52050df", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/7fe0a492d5126c457c5fb184c4668a132b0aaac6", + "reference": "7fe0a492d5126c457c5fb184c4668a132b0aaac6", "shasum": "" }, "require": { @@ -7148,7 +7735,7 @@ "issues": "https://github.com/drush-ops/drush/issues", "security": "https://github.com/drush-ops/drush/security/advisories", "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/12.5.2" + "source": "https://github.com/drush-ops/drush/tree/12.5.3" }, "funding": [ { @@ -7156,7 +7743,7 @@ "type": "github" } ], - "time": "2024-05-02T17:20:48+00:00" + "time": "2024-08-02T11:57:29+00:00" }, { "name": "easyrdf/easyrdf", @@ -7540,16 +8127,16 @@ }, { "name": "fileeye/mimemap", - "version": "2.1.1", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/FileEye/MimeMap.git", - "reference": "7992d33502de8a82065fd9fe2d2e2b1f7f33d1ce" + "reference": "2cb60da59d5c6fb881a78b481d513c4c68a1a93c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FileEye/MimeMap/zipball/7992d33502de8a82065fd9fe2d2e2b1f7f33d1ce", - "reference": "7992d33502de8a82065fd9fe2d2e2b1f7f33d1ce", + "url": "https://api.github.com/repos/FileEye/MimeMap/zipball/2cb60da59d5c6fb881a78b481d513c4c68a1a93c", + "reference": "2cb60da59d5c6fb881a78b481d513c4c68a1a93c", "shasum": "" }, "require": { @@ -7592,9 +8179,9 @@ ], "support": { "issues": "https://github.com/FileEye/MimeMap/issues", - "source": "https://github.com/FileEye/MimeMap/tree/2.1.1" + "source": "https://github.com/FileEye/MimeMap/tree/2.1.2" }, - "time": "2024-05-17T19:22:06+00:00" + "time": "2024-06-29T16:52:07+00:00" }, { "name": "fileeye/pel", @@ -7883,22 +8470,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.9.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -7909,9 +8496,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -7989,7 +8576,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -8005,20 +8592,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", "shasum": "" }, "require": { @@ -8026,7 +8613,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { @@ -8072,7 +8659,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.0.3" }, "funding": [ { @@ -8088,20 +8675,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2024-07-18T10:29:17+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { @@ -8116,8 +8703,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -8188,7 +8775,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -8204,7 +8791,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "jean85/pretty-package-versions", @@ -8840,16 +9427,16 @@ }, { "name": "mck89/peast", - "version": "v1.16.2", + "version": "v1.16.3", "source": { "type": "git", "url": "https://github.com/mck89/peast.git", - "reference": "2791b08ffcc1862fe18eef85675da3aa58c406fe" + "reference": "645ec21b650bc2aced18285c85f220d22afc1430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mck89/peast/zipball/2791b08ffcc1862fe18eef85675da3aa58c406fe", - "reference": "2791b08ffcc1862fe18eef85675da3aa58c406fe", + "url": "https://api.github.com/repos/mck89/peast/zipball/645ec21b650bc2aced18285c85f220d22afc1430", + "reference": "645ec21b650bc2aced18285c85f220d22afc1430", "shasum": "" }, "require": { @@ -8862,7 +9449,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.16.2-dev" + "dev-master": "1.16.3-dev" } }, "autoload": { @@ -8883,9 +9470,9 @@ "description": "Peast is PHP library that generates AST for JavaScript code", "support": { "issues": "https://github.com/mck89/peast/issues", - "source": "https://github.com/mck89/peast/tree/v1.16.2" + "source": "https://github.com/mck89/peast/tree/v1.16.3" }, - "time": "2024-03-05T09:16:03+00:00" + "time": "2024-07-23T14:00:32+00:00" }, { "name": "microsoft/azure-storage-blob", @@ -9026,16 +9613,16 @@ }, { "name": "monolog/monolog", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", "shasum": "" }, "require": { @@ -9111,7 +9698,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.6.0" + "source": "https://github.com/Seldaek/monolog/tree/3.7.0" }, "funding": [ { @@ -9123,20 +9710,20 @@ "type": "tidelift" } ], - "time": "2024-04-12T21:02:21+00:00" + "time": "2024-06-28T09:40:51+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "v5.1.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", "shasum": "" }, "require": { @@ -9147,7 +9734,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -9179,9 +9766,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2024-07-01T20:03:41+00:00" }, { "name": "nodespark/des-connector", @@ -9300,6 +9887,123 @@ ], "time": "2021-11-18T09:23:29+00:00" }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", + "shasum": "" + }, + "require": { + "php": "^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2024-05-08T12:18:48+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, { "name": "pear/archive_tar", "version": "1.5.0", @@ -10485,16 +11189,16 @@ }, { "name": "sentry/sentry", - "version": "4.8.0", + "version": "4.9.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "3cf5778ff425a23f2d22ed41b423691d36f47163" + "reference": "788ec170f51ebb22f2809a1e3f78b19ccd39b70d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/3cf5778ff425a23f2d22ed41b423691d36f47163", - "reference": "3cf5778ff425a23f2d22ed41b423691d36f47163", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/788ec170f51ebb22f2809a1e3f78b19ccd39b70d", + "reference": "788ec170f51ebb22f2809a1e3f78b19ccd39b70d", "shasum": "" }, "require": { @@ -10558,7 +11262,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.8.0" + "source": "https://github.com/getsentry/sentry-php/tree/4.9.0" }, "funding": [ { @@ -10570,7 +11274,7 @@ "type": "custom" } ], - "time": "2024-06-05T13:18:43+00:00" + "time": "2024-08-08T14:40:50+00:00" }, { "name": "stomp-php/stomp-php", @@ -10647,16 +11351,16 @@ }, { "name": "symfony/console", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", - "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", "shasum": "" }, "require": { @@ -10721,7 +11425,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.8" + "source": "https://github.com/symfony/console/tree/v6.4.10" }, "funding": [ { @@ -10737,20 +11441,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c" + "reference": "5caf9c5f6085f13b27d70a236b776c07e4a1c3eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d3b618176e8c3a9e5772151c51eba0c52a0c771c", - "reference": "d3b618176e8c3a9e5772151c51eba0c52a0c771c", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5caf9c5f6085f13b27d70a236b776c07e4a1c3eb", + "reference": "5caf9c5f6085f13b27d70a236b776c07e4a1c3eb", "shasum": "" }, "require": { @@ -10802,7 +11506,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.8" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.10" }, "funding": [ { @@ -10818,7 +11522,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T07:32:07+00:00" }, { "name": "symfony/deprecation-contracts", @@ -10889,16 +11593,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc" + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc", - "reference": "ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0", "shasum": "" }, "require": { @@ -10944,7 +11648,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.8" + "source": "https://github.com/symfony/error-handler/tree/v6.4.10" }, "funding": [ { @@ -10960,7 +11664,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/event-dispatcher", @@ -11120,16 +11824,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.8", + "version": "v6.4.9", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3" + "reference": "b51ef8059159330b74a4d52f68e671033c0fe463" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3", - "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b51ef8059159330b74a4d52f68e671033c0fe463", + "reference": "b51ef8059159330b74a4d52f68e671033c0fe463", "shasum": "" }, "require": { @@ -11166,7 +11870,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.8" + "source": "https://github.com/symfony/filesystem/tree/v6.4.9" }, "funding": [ { @@ -11182,20 +11886,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-06-28T09:49:33+00:00" }, { "name": "symfony/finder", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" + "reference": "af29198d87112bebdd397bd7735fbd115997824c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", - "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", + "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c", + "reference": "af29198d87112bebdd397bd7735fbd115997824c", "shasum": "" }, "require": { @@ -11230,7 +11934,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.8" + "source": "https://github.com/symfony/finder/tree/v6.4.10" }, "funding": [ { @@ -11246,20 +11950,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-24T07:06:38+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "27de8cc95e11db7a50b027e71caaab9024545947" + "reference": "117f1f20a7ade7bcea28b861fb79160a21a1e37b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947", - "reference": "27de8cc95e11db7a50b027e71caaab9024545947", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/117f1f20a7ade7bcea28b861fb79160a21a1e37b", + "reference": "117f1f20a7ade7bcea28b861fb79160a21a1e37b", "shasum": "" }, "require": { @@ -11307,7 +12011,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.8" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.10" }, "funding": [ { @@ -11323,20 +12027,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T12:36:27+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1" + "reference": "147e0daf618d7575b5007055340d09aece5cf068" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1", - "reference": "6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/147e0daf618d7575b5007055340d09aece5cf068", + "reference": "147e0daf618d7575b5007055340d09aece5cf068", "shasum": "" }, "require": { @@ -11421,7 +12125,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.8" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.10" }, "funding": [ { @@ -11437,20 +12141,20 @@ "type": "tidelift" } ], - "time": "2024-06-02T16:06:25+00:00" + "time": "2024-07-26T14:52:04+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.8", + "version": "v6.4.9", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "76326421d44c07f7824b19487cfbf87870b37efc" + "reference": "e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/76326421d44c07f7824b19487cfbf87870b37efc", - "reference": "76326421d44c07f7824b19487cfbf87870b37efc", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45", + "reference": "e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45", "shasum": "" }, "require": { @@ -11501,7 +12205,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.8" + "source": "https://github.com/symfony/mailer/tree/v6.4.9" }, "funding": [ { @@ -11517,20 +12221,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-06-28T07:59:05+00:00" }, { "name": "symfony/mime", - "version": "v6.4.8", + "version": "v6.4.9", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33" + "reference": "7d048964877324debdcb4e0549becfa064a20d43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33", - "reference": "618597ab8b78ac86d1c75a9d0b35540cda074f33", + "url": "https://api.github.com/repos/symfony/mime/zipball/7d048964877324debdcb4e0549becfa064a20d43", + "reference": "7d048964877324debdcb4e0549becfa064a20d43", "shasum": "" }, "require": { @@ -11544,7 +12248,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.3.2" + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -11554,7 +12258,7 @@ "symfony/process": "^5.4|^6.4|^7.0", "symfony/property-access": "^5.4|^6.0|^7.0", "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3.2|^7.0" + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", "autoload": { @@ -11586,7 +12290,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.8" + "source": "https://github.com/symfony/mime/tree/v6.4.9" }, "funding": [ { @@ -11602,7 +12306,7 @@ "type": "tidelift" } ], - "time": "2024-06-01T07:50:16+00:00" + "time": "2024-06-28T09:49:33+00:00" }, { "name": "symfony/options-resolver", @@ -12153,6 +12857,74 @@ ], "time": "2024-06-19T12:30:46+00:00" }, + { + "name": "symfony/polyfill-php56", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, { "name": "symfony/polyfill-php72", "version": "v1.30.0", @@ -12597,16 +13369,16 @@ }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "23a162bd446b93948a2c2f6909d80ad06195be10" + "reference": "89a24648d73e4eee30893b0da16abc454a65c53b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/23a162bd446b93948a2c2f6909d80ad06195be10", - "reference": "23a162bd446b93948a2c2f6909d80ad06195be10", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/89a24648d73e4eee30893b0da16abc454a65c53b", + "reference": "89a24648d73e4eee30893b0da16abc454a65c53b", "shasum": "" }, "require": { @@ -12660,7 +13432,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.8" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.10" }, "funding": [ { @@ -12676,20 +13448,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:51:39+00:00" + "time": "2024-07-15T09:36:38+00:00" }, { "name": "symfony/routing", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58" + "reference": "aad19fe10753ba842f0d653a8db819c4b3affa87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58", - "reference": "8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58", + "url": "https://api.github.com/repos/symfony/routing/zipball/aad19fe10753ba842f0d653a8db819c4b3affa87", + "reference": "aad19fe10753ba842f0d653a8db819c4b3affa87", "shasum": "" }, "require": { @@ -12743,7 +13515,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.8" + "source": "https://github.com/symfony/routing/tree/v6.4.10" }, "funding": [ { @@ -12759,20 +13531,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-15T09:26:24+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c" + "reference": "9a67fcf320561e96f94d62bbe0e169ac534a5718" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c", - "reference": "d6eda9966a3e5d1823c1cedf41bf98f8ed969d7c", + "url": "https://api.github.com/repos/symfony/serializer/zipball/9a67fcf320561e96f94d62bbe0e169ac534a5718", + "reference": "9a67fcf320561e96f94d62bbe0e169ac534a5718", "shasum": "" }, "require": { @@ -12841,7 +13613,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.8" + "source": "https://github.com/symfony/serializer/tree/v6.4.10" }, "funding": [ { @@ -12857,7 +13629,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T13:13:26+00:00" }, { "name": "symfony/service-contracts", @@ -12944,16 +13716,16 @@ }, { "name": "symfony/string", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" + "reference": "ccf9b30251719567bfd46494138327522b9a9446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", - "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", + "reference": "ccf9b30251719567bfd46494138327522b9a9446", "shasum": "" }, "require": { @@ -13010,7 +13782,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.8" + "source": "https://github.com/symfony/string/tree/v6.4.10" }, "funding": [ { @@ -13026,7 +13798,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-22T10:21:14+00:00" }, { "name": "symfony/translation-contracts", @@ -13108,16 +13880,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "dab2781371d54c86f6b25623ab16abb2dde2870c" + "reference": "bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/dab2781371d54c86f6b25623ab16abb2dde2870c", - "reference": "dab2781371d54c86f6b25623ab16abb2dde2870c", + "url": "https://api.github.com/repos/symfony/validator/zipball/bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd", + "reference": "bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd", "shasum": "" }, "require": { @@ -13185,7 +13957,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.8" + "source": "https://github.com/symfony/validator/tree/v6.4.10" }, "funding": [ { @@ -13201,20 +13973,20 @@ "type": "tidelift" } ], - "time": "2024-06-02T15:48:50+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25" + "reference": "a71cc3374f5fb9759da1961d28c452373b343dd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25", - "reference": "ad23ca4312395f0a8a8633c831ef4c4ee542ed25", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a71cc3374f5fb9759da1961d28c452373b343dd4", + "reference": "a71cc3374f5fb9759da1961d28c452373b343dd4", "shasum": "" }, "require": { @@ -13270,7 +14042,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.8" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.10" }, "funding": [ { @@ -13286,20 +14058,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.1.1", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "db82c2b73b88734557cfc30e3270d83fa651b712" + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db82c2b73b88734557cfc30e3270d83fa651b712", - "reference": "db82c2b73b88734557cfc30e3270d83fa651b712", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", "shasum": "" }, "require": { @@ -13346,7 +14118,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.1" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" }, "funding": [ { @@ -13362,7 +14134,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/yaml", @@ -13537,16 +14309,16 @@ }, { "name": "twig/twig", - "version": "v3.10.3", + "version": "v3.11.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" + "reference": "e80fb8ebba85c7341a97a9ebf825d7fd4b77708d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", - "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/e80fb8ebba85c7341a97a9ebf825d7fd4b77708d", + "reference": "e80fb8ebba85c7341a97a9ebf825d7fd4b77708d", "shasum": "" }, "require": { @@ -13554,7 +14326,8 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.22" + "symfony/polyfill-php80": "^1.22", + "symfony/polyfill-php81": "^1.29" }, "require-dev": { "psr/container": "^1.0|^2.0", @@ -13600,7 +14373,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.10.3" + "source": "https://github.com/twigphp/Twig/tree/v3.11.0" }, "funding": [ { @@ -13612,7 +14385,7 @@ "type": "tidelift" } ], - "time": "2024-05-16T10:04:27+00:00" + "time": "2024-08-08T16:15:16+00:00" }, { "name": "twistor/flysystem-stream-wrapper", @@ -13703,16 +14476,16 @@ }, { "name": "webflo/drupal-finder", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/webflo/drupal-finder.git", - "reference": "1fa65484857c7a2e4dcf0d9e0b47198fe0681b8a" + "reference": "73045060b0894c77962a10cff047f72872d8810c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/1fa65484857c7a2e4dcf0d9e0b47198fe0681b8a", - "reference": "1fa65484857c7a2e4dcf0d9e0b47198fe0681b8a", + "url": "https://api.github.com/repos/webflo/drupal-finder/zipball/73045060b0894c77962a10cff047f72872d8810c", + "reference": "73045060b0894c77962a10cff047f72872d8810c", "shasum": "" }, "require": { @@ -13721,7 +14494,8 @@ }, "require-dev": { "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^10.4" + "phpunit/phpunit": "^10.4", + "symfony/process": "^6.4" }, "type": "library", "autoload": { @@ -13742,9 +14516,9 @@ "description": "Helper class to locate a Drupal installation.", "support": { "issues": "https://github.com/webflo/drupal-finder/issues", - "source": "https://github.com/webflo/drupal-finder/tree/1.3.0" + "source": "https://github.com/webflo/drupal-finder/tree/1.3.1" }, - "time": "2024-05-08T21:22:39+00:00" + "time": "2024-06-28T13:45:36+00:00" }, { "name": "webmozart/assert", diff --git a/conf/cmi/block.block.globalannouncement.yml b/conf/cmi/block.block.globalannouncement.yml deleted file mode 100644 index 083066fd..00000000 --- a/conf/cmi/block.block.globalannouncement.yml +++ /dev/null @@ -1,20 +0,0 @@ -uuid: 2951e957-8677-4666-898f-de45abd2c142 -langcode: en -status: true -dependencies: - module: - - helfi_global_announcement - theme: - - hdbt_subtheme -id: globalannouncement -theme: hdbt_subtheme -region: before_content -weight: -14 -provider: helfi_global_announcement -plugin: global_announcements -settings: - id: global_announcements - label: 'Global announcement' - label_display: '' - provider: helfi_global_announcement -visibility: { } diff --git a/conf/cmi/block.block.surveys.yml b/conf/cmi/block.block.surveys.yml new file mode 100644 index 00000000..b15df313 --- /dev/null +++ b/conf/cmi/block.block.surveys.yml @@ -0,0 +1,21 @@ +uuid: 450b1e3e-7680-4439-802f-6f03e98fc259 +langcode: en +status: true +dependencies: + module: + - helfi_etusivu_entities + theme: + - hdbt_subtheme +id: surveys +theme: hdbt_subtheme +region: before_content +weight: -15 +provider: helfi_node_survey +plugin: surveys +settings: + id: surveys + label: Surveys + label_display: '' + provider: helfi_node_survey + use_remote_entities: true +visibility: { } diff --git a/conf/cmi/core.base_field_override.node.survey.promote.yml b/conf/cmi/core.base_field_override.node.survey.promote.yml new file mode 100644 index 00000000..a53be779 --- /dev/null +++ b/conf/cmi/core.base_field_override.node.survey.promote.yml @@ -0,0 +1,24 @@ +uuid: 0f67ac70-571e-43da-ae3f-eca271ee541a +langcode: en +status: true +dependencies: + config: + - node.type.survey +_core: + default_config_hash: jLPewbi-29Z_ekJ8NNa2EQwOjxhSBxFnXYwtX-8jx68 +id: node.survey.promote +field_name: promote +entity_type: node +bundle: survey +label: 'Promoted to front page' +description: '' +required: false +translatable: true +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/conf/cmi/core.base_field_override.node.survey.status.yml b/conf/cmi/core.base_field_override.node.survey.status.yml new file mode 100644 index 00000000..81672353 --- /dev/null +++ b/conf/cmi/core.base_field_override.node.survey.status.yml @@ -0,0 +1,24 @@ +uuid: 66c7c3ae-fd35-4cd8-a4c2-54bc24cf5895 +langcode: en +status: true +dependencies: + config: + - node.type.survey +_core: + default_config_hash: G0OKH2o0P5SCpFGpXz9jp9Yuxkm746qvgyc0FbBteRA +id: node.survey.status +field_name: status +entity_type: node +bundle: survey +label: Published +description: '' +required: false +translatable: true +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/conf/cmi/core.base_field_override.node.survey.title.yml b/conf/cmi/core.base_field_override.node.survey.title.yml new file mode 100644 index 00000000..95196bcd --- /dev/null +++ b/conf/cmi/core.base_field_override.node.survey.title.yml @@ -0,0 +1,20 @@ +uuid: 12bf02be-360b-498c-9891-fe06f94408b8 +langcode: en +status: true +dependencies: + config: + - node.type.survey +_core: + default_config_hash: Opcalm7vjcrzzKeswLKzQkVtm9qRopCjMHYKtVTXBE4 +id: node.survey.title +field_name: title +entity_type: node +bundle: survey +label: 'Survey title' +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/conf/cmi/core.entity_form_display.node.survey.default.yml b/conf/cmi/core.entity_form_display.node.survey.default.yml new file mode 100644 index 00000000..e30e4576 --- /dev/null +++ b/conf/cmi/core.entity_form_display.node.survey.default.yml @@ -0,0 +1,134 @@ +uuid: 2dea284e-6cc0-4e34-9d2f-37baa7317502 +langcode: en +status: true +dependencies: + config: + - field.field.node.survey.body + - field.field.node.survey.field_survey_content_pages + - field.field.node.survey.field_survey_link + - node.type.survey + module: + - hdbt_admin_tools + - link + - path + - publication_date + - scheduler + - select2 + - text +_core: + default_config_hash: SpA7JjzzI-4nAK5XY8JDkYoTn3X7NpV6TqEAFpFP5tY +id: node.survey.default +targetEntityType: node +bundle: survey +mode: default +content: + body: + type: text_textarea_with_summary + weight: 18 + region: content + settings: + rows: 9 + summary_rows: 3 + placeholder: '' + show_summary: false + third_party_settings: { } + created: + type: datetime_timestamp + weight: 3 + region: content + settings: { } + third_party_settings: { } + field_survey_content_pages: + type: select2_entity_reference + weight: 14 + region: content + settings: + width: 100% + autocomplete: true + match_operator: CONTAINS + match_limit: 20 + third_party_settings: { } + field_survey_link: + type: link_default + weight: 19 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: { } + langcode: + type: language_select + weight: 1 + region: content + settings: + include_locked: false + third_party_settings: { } + path: + type: path + weight: 6 + region: content + settings: { } + third_party_settings: { } + publish_on: + type: datetime_timestamp_no_default + weight: 7 + region: content + settings: { } + third_party_settings: { } + published_at: + type: publication_date_timestamp + weight: 10 + region: content + settings: { } + third_party_settings: { } + scheduler_settings: + weight: 5 + region: content + settings: { } + third_party_settings: { } + simple_sitemap: + weight: 12 + region: content + settings: { } + third_party_settings: { } + status: + type: boolean_checkbox + weight: 9 + region: content + settings: + display_label: true + third_party_settings: { } + title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + translation: + weight: 4 + region: content + settings: { } + third_party_settings: { } + uid: + type: entity_reference_autocomplete + weight: 2 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } + unpublish_on: + type: datetime_timestamp_no_default + weight: 8 + region: content + settings: { } + third_party_settings: { } +hidden: + hide_sidebar_navigation: true + promote: true + sticky: true + url_redirects: true diff --git a/conf/cmi/core.entity_view_display.node.survey.default.yml b/conf/cmi/core.entity_view_display.node.survey.default.yml new file mode 100644 index 00000000..aa556471 --- /dev/null +++ b/conf/cmi/core.entity_view_display.node.survey.default.yml @@ -0,0 +1,50 @@ +uuid: 1dab22c0-e5e8-487c-9050-9ba480532d07 +langcode: en +status: true +dependencies: + config: + - field.field.node.survey.body + - field.field.node.survey.field_survey_content_pages + - field.field.node.survey.field_survey_link + - node.type.survey + module: + - link + - text + - user +_core: + default_config_hash: VYCHZ7byxSgOpSFDqb2ad2yb3M5fWI43qAJbGREtaSQ +id: node.survey.default +targetEntityType: node +bundle: survey +mode: default +content: + body: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 2 + region: content + field_survey_link: + type: link + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: 3 + region: content + links: + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + field_survey_content_pages: true + langcode: true + published_at: true + search_api_excerpt: true + toc_enabled: true diff --git a/conf/cmi/core.entity_view_display.node.survey.teaser.yml b/conf/cmi/core.entity_view_display.node.survey.teaser.yml new file mode 100644 index 00000000..1aba7e1e --- /dev/null +++ b/conf/cmi/core.entity_view_display.node.survey.teaser.yml @@ -0,0 +1,40 @@ +uuid: 394e2865-baf3-4603-9d97-57f59e49f5a6 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - field.field.node.survey.body + - field.field.node.survey.field_survey_content_pages + - field.field.node.survey.field_survey_link + - node.type.survey + module: + - text + - user +_core: + default_config_hash: RFZBuDFa3w1RzcoB4xT4zbJFvgZSCmJDaIfZUOpYzXI +id: node.survey.teaser +targetEntityType: node +bundle: survey +mode: teaser +content: + body: + type: text_summary_or_trimmed + label: hidden + settings: + trim_length: 600 + third_party_settings: { } + weight: 101 + region: content + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content +hidden: + field_survey_content_pages: true + field_survey_link: true + langcode: true + published_at: true + search_api_excerpt: true + toc_enabled: true diff --git a/conf/cmi/core.extension.yml b/conf/cmi/core.extension.yml index 1fd15d89..dcbe246e 100644 --- a/conf/cmi/core.extension.yml +++ b/conf/cmi/core.extension.yml @@ -24,6 +24,7 @@ module: editor: 0 editoria11y: 0 elasticsearch_connector: 0 + encrypt: 0 entity: 0 entity_reference_revisions: 0 entity_usage: 0 @@ -43,8 +44,8 @@ module: helfi_azure_fs: 0 helfi_base_content: 0 helfi_ckeditor: 0 + helfi_etusivu_entities: 0 helfi_eu_cookie_compliance: 0 - helfi_global_announcement: 0 helfi_hakuvahti: 0 helfi_image_styles: 0 helfi_media: 0 @@ -54,6 +55,7 @@ module: helfi_node_announcement: 0 helfi_node_landing_page: 0 helfi_node_page: 0 + helfi_node_survey: 0 helfi_paragraphs_accordion: 0 helfi_paragraphs_banner: 0 helfi_paragraphs_chart: 0 @@ -78,6 +80,7 @@ module: helfi_proxy: 0 helfi_react_search: 0 helfi_rekry_content: 0 + helfi_tfa: 0 helfi_toc: 0 helfi_tunnistamo: 0 helfi_user_roles: 0 @@ -88,6 +91,7 @@ module: imagemagick: 0 jquery_ui: 0 jquery_ui_draggable: 0 + key: 0 language: 0 link: 0 linkit: 0 @@ -122,6 +126,7 @@ module: purge_tokens: 0 raven: 0 readonly_field_widget: 0 + real_aes: 0 redirect: 0 redis: 0 responsive_image: 0 @@ -139,6 +144,7 @@ module: taxonomy: 0 telephone: 0 text: 0 + tfa: 0 token: 0 toolbar: 0 translatable_menu_link_uri: 0 diff --git a/conf/cmi/easy_breadcrumb.settings.yml b/conf/cmi/easy_breadcrumb.settings.yml index 17db6916..f2faf080 100644 --- a/conf/cmi/easy_breadcrumb.settings.yml +++ b/conf/cmi/easy_breadcrumb.settings.yml @@ -33,3 +33,4 @@ segment_display_limit: null truncator_mode: false truncator_length: 100 truncator_dots: true +segment_display_minimum: 1 diff --git a/conf/cmi/encrypt.profile.real_aes.yml b/conf/cmi/encrypt.profile.real_aes.yml new file mode 100644 index 00000000..c9887b01 --- /dev/null +++ b/conf/cmi/encrypt.profile.real_aes.yml @@ -0,0 +1,15 @@ +uuid: 90d7b880-aa02-4cff-aeb9-69e03db7a21b +langcode: en +status: true +dependencies: + config: + - key.key.tfa + module: + - real_aes +_core: + default_config_hash: lDV_LbRGbNBnnVa6X72NK7xH7A1T9tasNNgP2hOhHKs +id: real_aes +label: 'Real AES' +encryption_method: real_aes +encryption_method_configuration: { } +encryption_key: tfa diff --git a/conf/cmi/encrypt.settings.yml b/conf/cmi/encrypt.settings.yml new file mode 100644 index 00000000..dbd39266 --- /dev/null +++ b/conf/cmi/encrypt.settings.yml @@ -0,0 +1,4 @@ +_core: + default_config_hash: CMyccvAuba2yH-HYmcEL0pq1Seyxzq9VHhKbQKwAWY4 +check_profile_status: true +allow_deprecated_plugins: false diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml b/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml index cc1ac815..bf334f7a 100644 --- a/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml +++ b/conf/cmi/eu_cookie_compliance.cookie_category.chat.yml @@ -3,11 +3,11 @@ langcode: en status: true dependencies: { } _core: - default_config_hash: MtcUnaHor36G5nT42_iCaKuQEma5ifvUuS83W8ieHPo + default_config_hash: Fo0xGa_NGmRHechfzeoRkN1cxRB2-z_P0gHmfGny4E8 id: chat label: 'Functional chat cookies' description: - value: '

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

NameProviderPurpose of the cookieValidityType
_genesys.widgets.*hel.fiUsed for storing data required by the chat functionality.Session 
leijuke.*hel.fiUsed for storing data required by the chat functionality.Session 
aiap-wbc-chat-app-button-statehel.fiUsed for chat app functionality. Stores chat app button settings and configuration data.Session 
aiap-chat-app-v1-statehel.fiUsed for chat app functionality. Stores chat app settings and configuration data.Session 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudUsed for chat app functionality. Stores chat app conversation token for authentication and data access purposes.SessionThird party
' + value: '

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

NameProviderPurpose of the cookieValidityType
_genesys.widgets.*www.hel.fiUsed for storing data required by the chat functionality.Session 
leijuke.*www.hel.fiUsed for storing data required by the chat functionality.Session 
aiap-wbc-chat-app-button-statewww.hel.fiUsed for chat app functionality. Stores chat app button settings and configuration data.Session 
aiap-chat-app-v1-statewww.hel.fiUsed for chat app functionality. Stores chat app settings and configuration data.Session 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudUsed for chat app functionality. Stores chat app conversation token for authentication and data access purposes.SessionThird party
CallGuide.languagewww.hel.fiACE Chat: The language used in the ACE Web SDK is derived from the browsers' preferred language setting and ACE Web SDK settings.-Local storage
CallGuide.config_services_*www.hel.fiACE Chat: Configuring customer service integrations on a web page. Reduces web traffic when loading and navigating a page-Local storage
*_CGWebSDK_windowGUIDwds.ace.teliacompany.comACE Chat: The unique identity of this browser window. Is used if the browser has more than one open window for a website-Local storage
*_CGWebSDK_videoShowerwds.ace.teliacompany.comACE Chat: Only one window at a time can display video. This information tracks which of them (if any).-Local storage
*_CGWebSDK_videoClientswds.ace.teliacompany.comACE Chat: A list of all windows that are likely to display the video-Local storage
*_ACEChatState_ActiveClientwds.ace.teliacompany.comACE Chat: A website can have more than one chat client. This item tracks which customer the current chat belongs to.-Local storage
*_chatEntrancewds.ace.teliacompany.comACE Chat: Name of the chat entrance to the system-Local storage
*_chatUIDwds.ace.teliacompany.comACE Chat: Chat session ID when communicating with ACE-Local storage
humany-*www.hel.fiACE Chat: Preserves widget status when page reloads-Local storage
ARRAffinity.hel.humany.netACE Chat: Load balancing in the backend systemSessionThird party
ARRAffinitySameSite.hel.humany.netACE Chat: Load balancing in the backend systemSessionThird party
' format: full_html checkbox_default_state: unchecked weight: -5 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml b/conf/cmi/eu_cookie_compliance.cookie_category.essential.yml index d768ff3d..4cad5075 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: oVn5Apol-q10_G1LoTbTJNj-k-1eYvCbO4vGiUF09t4 + default_config_hash: kfnLYqpxtvBYopdnyeB0TYzlfLynAY6hIegpzFNdDKw id: essential label: 'Essential cookies' description: - value: '

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

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

helsinkikanava.fi

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

The cookie is an obligatory cookie that facilitates visiting the website.SessionThird party
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudUsed for chat app functionality. Its value is used to access session data on server of the application.SessionThird party
COOKIE_SUPPORThelsinkikanava.fiThe cookie facilitates managing cookies on the website.365 daysThird party
GUEST_LANGUAGE_IDhelsinkikanava.fiThis cookie is generated by the Liferay, its function is to store the language preferences.365 daysThird party
helfi-settingshel.fiUsed by hel.fi Drupal to store information about closed announcements and accordions'' state.-Local storage
Drupal.visitor.autologout_loginavustukset.hel.fiUsed by avustukset.hel.fi Drupal to automatically logout user after a period of inactivity.365 days 
' + value: '

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

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

helsinkikanava.fi

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

The cookie is an obligatory cookie that facilitates visiting the website.SessionThird party
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudUsed for chat app functionality. Its value is used to access session data on server of the application.SessionThird party
COOKIE_SUPPORThelsinkikanava.fiThe cookie facilitates managing cookies on the website.365 daysThird party
GUEST_LANGUAGE_IDhelsinkikanava.fiThis cookie is generated by the Liferay, its function is to store the language preferences.365 daysThird party
helfi-settingswww.hel.fiUsed by www.hel.fi Drupal to store information about closed announcements and accordions'' state.-Local storage
Drupal.visitor.autologout_loginavustukset.hel.fiUsed by avustukset.hel.fi Drupal to automatically logout user after a period of inactivity.365 days 
' format: full_html checkbox_default_state: required weight: -9 diff --git a/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml b/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml index 30cb3521..6e799ef3 100644 --- a/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml +++ b/conf/cmi/eu_cookie_compliance.cookie_category.preference.yml @@ -3,11 +3,11 @@ langcode: en status: true dependencies: { } _core: - default_config_hash: wwt5AyVnGkL_AxTa10uXAzOVI_a51Rhkc7LZtHkYTFE + default_config_hash: 2nukTq0GW1ah8MZEHNDaOJ0Ygil0hTpw48HeCYekkZY id: preference label: Preference description: - value: '

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

NameProviderPurpose of the cookieValidityType
httpskartta.hel.fi.SWCulturekartta.hel.fiThe City''s map service cookie saves the language in which the service is used.1826 days 
icareus-devicehelsinkikanava.fiThe Helsinki Channel video server cookie facilitates including videos as part of the website''s content.365 daysThird party
VISITOR_INFO1_LIVEyoutube.comThe YouTube cookie selects the old or new video player depending on the connection speed.180 daysThird party
CONSENTyoutube.comUsed by Google to store user consent preferences5947 days, 15 hoursThird party
activeTabhel.fiUsed for storing active tab data when user is using high school search.Session 
activeContenthel.fiUsed for storing active content data when user is using high school search.Session 
' + value: '

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

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

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

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

A record related to the operation of the 

Askem

 react buttons.

-Local storage
rnsbid_tsreactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
rns_reaction_*reactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
YSCyoutube.comThe YouTube cookie facilitates including videos as part of the website''s content.SessionThird party
' + value: '

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

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

A record related to the operation of the 

Askem

 react buttons.

-Local storage
rnsbid_tsreactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
rns_reaction_*reactandshare.com

A record related to the operation of the 

Askem

 react buttons.

-Local storage
YSCyoutube.comThe YouTube cookie facilitates including videos as part of the website''s content.SessionThird party
' format: full_html checkbox_default_state: unchecked weight: -7 diff --git a/conf/cmi/eu_cookie_compliance.settings.yml b/conf/cmi/eu_cookie_compliance.settings.yml index 9af81af2..519e31d7 100644 --- a/conf/cmi/eu_cookie_compliance.settings.yml +++ b/conf/cmi/eu_cookie_compliance.settings.yml @@ -71,7 +71,7 @@ enable_save_preferences_button: true domain_all_sites: true settings_tab_enabled: false containing_element: body -cookie_policy_version: 1.2.4 +cookie_policy_version: 1.2.5 cookie_value_disagreed: '0' cookie_value_agreed_show_thank_you: '1' cookie_value_agreed: '2' diff --git a/conf/cmi/external_entities.external_entity_type.helfi_announcements.yml b/conf/cmi/external_entities.external_entity_type.helfi_announcements.yml index 9865c389..8bd8bfb7 100644 --- a/conf/cmi/external_entities.external_entity_type.helfi_announcements.yml +++ b/conf/cmi/external_entities.external_entity_type.helfi_announcements.yml @@ -1,15 +1,15 @@ -uuid: 908fafd9-25b0-41aa-b97d-2bd708d18f60 +uuid: 072df4c4-3de5-44f9-bd4f-c1d09006ce88 langcode: en status: true dependencies: { } _core: - default_config_hash: znut8SNGQRsGO4_fUxjvl_SIZqbb0T7hsv98bRKxcM8 + default_config_hash: klULx3zqlYgz7OOfeGsjBYHQmFp8V6_aMlFUYaOQRmA id: helfi_announcements label: 'Helfi: Announcements' label_plural: 'Helfi: Announcements' description: '' -read_only: true generate_aliases: null +read_only: true field_mapper_id: jsonpath field_mapper_config: field_mappings: diff --git a/conf/cmi/external_entities.external_entity_type.helfi_surveys.yml b/conf/cmi/external_entities.external_entity_type.helfi_surveys.yml new file mode 100644 index 00000000..2a9fc569 --- /dev/null +++ b/conf/cmi/external_entities.external_entity_type.helfi_surveys.yml @@ -0,0 +1,42 @@ +uuid: be631905-d77b-418a-890e-b04fa3ed3e22 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: _EBh68cyUNEhZdqfsN5IEH5ieC-ND8JOMk5t_uhXdJc +id: helfi_surveys +label: 'Helfi: Survey' +label_plural: 'Helfi: Surveys' +description: '' +generate_aliases: null +read_only: true +field_mapper_id: jsonpath +field_mapper_config: + field_mappings: + id: + value: $.id + uuid: + value: $.id + title: + value: '$.attributes["title"]' + published_at: + value: '$.attributes["published_at"]' + unpublish_on: + value: '$.attributes["unpublish_on"]' + langcode: + value: '$.attributes["langcode"]' + body: + value: '$.attributes["body"]["value"]' + status: + value: '$.attributes["status"]' + survey_link_text: + value: '$.attributes["field_survey_link"]["title"]' + survey_link_url: + value: '$.attributes["field_survey_link"]["uri"]' +storage_client_id: helfi_surveys +storage_client_config: { } +persistent_cache_max_age: -1 +annotation_entity_type_id: null +annotation_bundle_id: null +annotation_field_name: null +inherits_annotation_fields: false diff --git a/conf/cmi/field.field.node.survey.body.yml b/conf/cmi/field.field.node.survey.body.yml new file mode 100644 index 00000000..b2aa1d75 --- /dev/null +++ b/conf/cmi/field.field.node.survey.body.yml @@ -0,0 +1,31 @@ +uuid: d1b45349-7c63-4ac3-b7b3-563eeb88f38c +langcode: en +status: true +dependencies: + config: + - field.storage.node.body + - node.type.survey + module: + - allowed_formats + - text +third_party_settings: + allowed_formats: + allowed_formats: + - minimal +_core: + default_config_hash: Xb4eSRbowaisX2qbRnKXbJKAH74H8t2-NtJaJ0Kz7hk +id: node.survey.body +field_name: body +entity_type: node +bundle: survey +label: Body +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: + display_summary: false + required_summary: false + allowed_formats: { } +field_type: text_with_summary diff --git a/conf/cmi/field.field.node.survey.field_survey_content_pages.yml b/conf/cmi/field.field.node.survey.field_survey_content_pages.yml new file mode 100644 index 00000000..f97fd106 --- /dev/null +++ b/conf/cmi/field.field.node.survey.field_survey_content_pages.yml @@ -0,0 +1,33 @@ +uuid: 9cb9a071-2d67-43d0-a8e3-6e2b7142ee17 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_survey_content_pages + - node.type.landing_page + - node.type.page + - node.type.survey +_core: + default_config_hash: c72PoW8HQ-owmgvYD0syJeWNuTfkdhC88uY2a49GZSk +id: node.survey.field_survey_content_pages +field_name: field_survey_content_pages +entity_type: node +bundle: survey +label: 'Show on content pages' +description: 'Shown on all pages if left empty.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:node' + handler_settings: + target_bundles: + page: page + landing_page: landing_page + sort: + field: title + direction: ASC + auto_create: false + auto_create_bundle: page +field_type: entity_reference diff --git a/conf/cmi/field.field.node.survey.field_survey_link.yml b/conf/cmi/field.field.node.survey.field_survey_link.yml new file mode 100644 index 00000000..b48a1f27 --- /dev/null +++ b/conf/cmi/field.field.node.survey.field_survey_link.yml @@ -0,0 +1,25 @@ +uuid: 21a43a79-869a-4758-b64a-b665aec0561a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_survey_link + - node.type.survey + module: + - link +_core: + default_config_hash: UaxdyCI0GV4wNetzWNnSTLZy7bnNtgHjMypvOl28HYo +id: node.survey.field_survey_link +field_name: field_survey_link +entity_type: node +bundle: survey +label: Link +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: + title: 0 + link_type: 17 +field_type: link diff --git a/conf/cmi/field.storage.node.field_survey_content_pages.yml b/conf/cmi/field.storage.node.field_survey_content_pages.yml new file mode 100644 index 00000000..83208819 --- /dev/null +++ b/conf/cmi/field.storage.node.field_survey_content_pages.yml @@ -0,0 +1,21 @@ +uuid: 3a26e002-c1e2-4840-bb59-f29aea3489ea +langcode: en +status: true +dependencies: + module: + - node +_core: + default_config_hash: 4bzZX7tPEXAGP71HWAPeByOaqILWZoXmtBCjFWjrm2s +id: node.field_survey_content_pages +field_name: field_survey_content_pages +entity_type: node +type: entity_reference +settings: + target_type: node +module: core +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/cmi/field.storage.node.field_survey_link.yml b/conf/cmi/field.storage.node.field_survey_link.yml new file mode 100644 index 00000000..2a642231 --- /dev/null +++ b/conf/cmi/field.storage.node.field_survey_link.yml @@ -0,0 +1,21 @@ +uuid: e9b298a6-f958-41b6-9c26-5fd7868e4120 +langcode: en +status: true +dependencies: + module: + - link + - node +_core: + default_config_hash: xr7_yR6YfdO7eML9XROtXbIDgHPw-h3zTdK2Ln6iz7g +id: node.field_survey_link +field_name: field_survey_link +entity_type: node +type: link +settings: { } +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/conf/cmi/hdbt_admin_tools.site_settings.yml b/conf/cmi/hdbt_admin_tools.site_settings.yml index b5f95a07..de99c273 100644 --- a/conf/cmi/hdbt_admin_tools.site_settings.yml +++ b/conf/cmi/hdbt_admin_tools.site_settings.yml @@ -1,10 +1,10 @@ _core: default_config_hash: OgPHnjkIjDn42IHAwLRXhNzdhX825gq2SrlYKw4kbQ8 langcode: en -path_to_json: /themes/contrib/hdbt/src/icons/editor-selectable-icons.json site_settings: default_icon: abstract-2 theme_color: coat-of-arms koro: basic footer_settings: footer_color: dark +path_to_json: /themes/contrib/hdbt/src/icons/editor-selectable-icons.json diff --git a/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml b/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml index 30412ad8..368a0db9 100644 --- a/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml +++ b/conf/cmi/helfi_eu_cookie_compliance.cookie_consent_intro.yml @@ -1,6 +1,5 @@ _core: default_config_hash: eVNvfbEgjm25gLyG5DH8zDbCi17xs8djPZt0XHD_Q9s -langcode: en cc: title: 'Cookie settings' content: diff --git a/conf/cmi/key.key.tfa.yml b/conf/cmi/key.key.tfa.yml new file mode 100644 index 00000000..f241a8d1 --- /dev/null +++ b/conf/cmi/key.key.tfa.yml @@ -0,0 +1,19 @@ +uuid: 05f354f6-4d19-4cb0-9d95-0d16a1573e58 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: ARfRhKTJUSFXqKkDFwUncBUg8-5v7z_we3DETbYMYB0 +id: tfa +label: TFA +description: '' +key_type: encryption +key_type_settings: + key_size: 256 +key_provider: config +key_provider_settings: + key_value: thisvaluewillbeoverridden1234567 + base64_encoded: true +key_input: text_field +key_input_settings: + base64_encoded: false diff --git a/conf/cmi/language.content_settings.node.survey.yml b/conf/cmi/language.content_settings.node.survey.yml new file mode 100644 index 00000000..58cd44e5 --- /dev/null +++ b/conf/cmi/language.content_settings.node.survey.yml @@ -0,0 +1,18 @@ +uuid: c10c6c36-eccd-4664-bf08-bc58654eac6d +langcode: en +status: true +dependencies: + config: + - node.type.survey + module: + - content_translation +third_party_settings: + content_translation: + enabled: true +_core: + default_config_hash: k-YN8N-ocbCYxMId9l0JressnpIaJXCvHbUY265HLpU +id: node.survey +target_entity_type_id: node +target_bundle: survey +default_langcode: fi +language_alterable: true diff --git a/conf/cmi/language/fi/core.base_field_override.node.survey.promote.yml b/conf/cmi/language/fi/core.base_field_override.node.survey.promote.yml new file mode 100644 index 00000000..a29359aa --- /dev/null +++ b/conf/cmi/language/fi/core.base_field_override.node.survey.promote.yml @@ -0,0 +1,4 @@ +label: 'Näytetään etusivulla' +settings: + on_label: Kyllä + off_label: Ei diff --git a/conf/cmi/language/fi/core.base_field_override.node.survey.status.yml b/conf/cmi/language/fi/core.base_field_override.node.survey.status.yml new file mode 100644 index 00000000..b939375b --- /dev/null +++ b/conf/cmi/language/fi/core.base_field_override.node.survey.status.yml @@ -0,0 +1,4 @@ +label: Julkaistu +settings: + on_label: Kyllä + off_label: Ei diff --git a/conf/cmi/language/fi/core.base_field_override.node.survey.title.yml b/conf/cmi/language/fi/core.base_field_override.node.survey.title.yml new file mode 100644 index 00000000..93342164 --- /dev/null +++ b/conf/cmi/language/fi/core.base_field_override.node.survey.title.yml @@ -0,0 +1 @@ +label: 'Kyselyn otsikko' diff --git a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml index 3ba97b22..e384bffd 100644 --- a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml +++ b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.chat.yml @@ -1,4 +1,4 @@ description: - value: '

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

NimiTarjoajaTarkoitusVoimassaTyyppi
_genesys.widgets.*hel.fiKäytetään chatin tarvitseman datan tallentamiseen.Istunto 
leijuke.*hel.fiKäytetään chatin tarvitseman datan tallentamiseen.Istunto 
aiap-wbc-chat-app-button-statehel.fiKäytetään chat-sovellustoiminnallisuutta varten. Säilyttää chat-sovelluksen painikkeen asetukset ja kokoonpanotiedot.Istunto 
aiap-chat-app-v1-statehel.fiKäytetään chat-sovellustoiminnallisuutta varten. Säilyttää chat-sovelluksen asetukset ja kokoonpanotiedot.Istunto 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudKäytetään chat-sovellustoiminnallisuutta varten. Säilyttää chat-sovelluksen keskustelutunnisteen istunnnon tunnistamista ja tietojen hakemista varten.IstuntoKolmas osapuoli
' + value: '

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

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

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

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

helsinkikanava.fi

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

Sivuston pakollinen eväste mahdollistaa kävijän vierailun sivustolla.IstuntoKolmas osapuoli
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudKäytetään chat-sovellustoiminnallisuutta varten. Evästettä käytetään sovelluksen palvelimella olevan istuntotiedon hakemiseen.IstuntoKolmas osapuoli
COOKIE_SUPPORThelsinkikanava.fiMahdollistaa evästeiden hallinnan sivustolla.365 päivääKolmas osapuoli
GUEST_LANGUAGE_IDhelsinkikanava.fiTämän evästeen on luonut Liferay, se tallentaa kieliasetukset.365 päivääKolmas osapuoli
helfi-settingshel.fiSivusto 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_loginavustukset.hel.fiKäytetään käyttäjän automaattiseen uloskirjautumiseen.365 päivää 
' + value: '

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

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

helsinkikanava.fi

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

Sivuston pakollinen eväste mahdollistaa kävijän vierailun sivustolla.IstuntoKolmas osapuoli
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudKäytetään chat-sovellustoiminnallisuutta varten. Evästettä käytetään sovelluksen palvelimella olevan istuntotiedon hakemiseen.IstuntoKolmas osapuoli
COOKIE_SUPPORThelsinkikanava.fiMahdollistaa evästeiden hallinnan sivustolla.365 päivääKolmas osapuoli
GUEST_LANGUAGE_IDhelsinkikanava.fiTämän evästeen on luonut Liferay, se tallentaa kieliasetukset.365 päivääKolmas osapuoli
helfi-settingswww.hel.fiSivusto käyttää tätä tietuetta tietojen tallentamiseen siitä, mitä poikkeusilmoituksia on suljettu ja mikä on avattavien sisältöalueiden tila.-Paikallinen muisti
Drupal.visitor.autologout_loginavustukset.hel.fiKäytetään käyttäjän automaattiseen uloskirjautumiseen.365 päivää 
' format: full_html label: 'Välttämättömät toiminnalliset evästeet' diff --git a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml index 58bceff4..93f9ff7d 100644 --- a/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml +++ b/conf/cmi/language/fi/eu_cookie_compliance.cookie_category.preference.yml @@ -1,4 +1,4 @@ label: Personointi description: - value: '

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

NimiTarjoajaTarkoitusVoimassaTyyppi
httpskartta.hel.fi.SWCulturekartta.hel.fiKaupungin karttapalvelun evästeeseen tallennetaan kieli, jolla palvelua käytetään.1826 päivää 
icareus-devicehelsinkikanava.fiHelsinki-kanavan videopalvelimen eväste.365 päivääKolmas osapuoli
VISITOR_INFO1_LIVEyoutube.comYouTuben eväste valitsee yhteyden nopeuden mukaan, joko vanhan tai uuden videosoittimen.180 päivääKolmas osapuoli
CONSENTyoutube.comGooglen eväste tallentaa kävijän evästehyväskynnän.5947 päivää, 15 tuntiaKolmas osapuoli
activeTabhel.fiKäytetään aktiivisten välilehtien tietojen tallentamiseen, kun käyttäjä käyttää lukioiden suodatushakua.Istunto 
activeContenthel.fiKäytetään aktiivisen sisältötietojen tallentamiseen, kun käyttäjä käyttää lukioiden hakua.Istunto 
' + value: '

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

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

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

NimiTarjoajaTarkoitusVoimassaTyyppi
nmstathel.fiSiteimproven tilastointieväste kerää tietoa kävijän sivujen käytöstä.1000 päivää 
_pk_id.*hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.141.89f6hel.fi-1 tunti 
_pk_id.*kartta.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*kartta.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
_pk_id.*palvelukartta.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*palvelukartta.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
_pk_id.*avustukset.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*avustukset.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
rnsbidreactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Paikallinen muisti
rnsbid_tsreactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Paikallinen muisti
rns_reaction_*reactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Paikallinen muisti
YSCyoutube.comYouTuben eväste mahdollistaa videoiden upottamisen sivustolle.IstuntoKolmas osapuoli
' + value: '

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

NimiTarjoajaTarkoitusVoimassaTyyppi
nmstatwww.hel.fiSiteimproven tilastointieväste kerää tietoa kävijän sivujen käytöstä.1000 päivää 
_pk_id.*www.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.141.89f6www.hel.fi-1 tunti 
_pk_id.*kartta.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*kartta.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
_pk_id.*palvelukartta.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*palvelukartta.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
_pk_id.*avustukset.hel.fiMatomo-tilastointijärjestelmän eväste.393 päivää 
_pk_ses.*avustukset.hel.fiMatomo-tilastointijärjestelmän eväste.1 tunti 
rnsbidreactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Paikallinen muisti
rnsbid_tsreactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Paikallinen muisti
rns_reaction_*reactandshare.comAskem-reaktionappien toimintaan liittyvä tietue.-Paikallinen muisti
YSCyoutube.comYouTuben eväste mahdollistaa videoiden upottamisen sivustolle.IstuntoKolmas osapuoli
' format: full_html label: Tilastointi diff --git a/conf/cmi/language/fi/field.field.node.announcement.field_publish_externally.yml b/conf/cmi/language/fi/field.field.node.announcement.field_publish_externally.yml new file mode 100644 index 00000000..050d38a5 --- /dev/null +++ b/conf/cmi/language/fi/field.field.node.announcement.field_publish_externally.yml @@ -0,0 +1,4 @@ +label: 'Julkaise ulkoisella sivustolla ' +settings: + on_label: Päällä + off_label: 'Pois päältä' diff --git a/conf/cmi/language/fi/field.field.node.survey.body.yml b/conf/cmi/language/fi/field.field.node.survey.body.yml new file mode 100644 index 00000000..9d61cbc9 --- /dev/null +++ b/conf/cmi/language/fi/field.field.node.survey.body.yml @@ -0,0 +1 @@ +label: Sisältö diff --git a/conf/cmi/language/fi/field.field.node.survey.field_survey_content_pages.yml b/conf/cmi/language/fi/field.field.node.survey.field_survey_content_pages.yml new file mode 100644 index 00000000..6b1adffa --- /dev/null +++ b/conf/cmi/language/fi/field.field.node.survey.field_survey_content_pages.yml @@ -0,0 +1,2 @@ +label: 'Näytä sisältösivuilla' +description: 'Näytetään kaikilla sivuilla jos jätetään tyhjäksi.' diff --git a/conf/cmi/language/fi/field.field.node.survey.field_survey_link.yml b/conf/cmi/language/fi/field.field.node.survey.field_survey_link.yml new file mode 100644 index 00000000..d060ac6b --- /dev/null +++ b/conf/cmi/language/fi/field.field.node.survey.field_survey_link.yml @@ -0,0 +1 @@ +label: Linkki diff --git a/conf/cmi/language/fi/key.key.tfa.yml b/conf/cmi/language/fi/key.key.tfa.yml new file mode 100644 index 00000000..89839366 --- /dev/null +++ b/conf/cmi/language/fi/key.key.tfa.yml @@ -0,0 +1 @@ +label: 'Kaksivaiheinen tunnistautuminen (2FA)' diff --git a/conf/cmi/language/fi/node.type.survey.yml b/conf/cmi/language/fi/node.type.survey.yml new file mode 100644 index 00000000..d9e4a950 --- /dev/null +++ b/conf/cmi/language/fi/node.type.survey.yml @@ -0,0 +1,2 @@ +name: Kysely +description: 'Tämän sisältötyypin avulla voidaan näyttää kyselyitä eri sivuilla.' diff --git a/conf/cmi/language/fi/tfa.settings.yml b/conf/cmi/language/fi/tfa.settings.yml new file mode 100644 index 00000000..f6098159 --- /dev/null +++ b/conf/cmi/language/fi/tfa.settings.yml @@ -0,0 +1 @@ +help_text: 'Ota yhteyttä tukeen palauttaaksesi tunnuksesi käyttöön' diff --git a/conf/cmi/language/sv/core.base_field_override.node.survey.promote.yml b/conf/cmi/language/sv/core.base_field_override.node.survey.promote.yml new file mode 100644 index 00000000..1c731d26 --- /dev/null +++ b/conf/cmi/language/sv/core.base_field_override.node.survey.promote.yml @@ -0,0 +1,4 @@ +label: 'Visas på startsidan' +settings: + on_label: Ja + off_label: Nej diff --git a/conf/cmi/language/sv/core.base_field_override.node.survey.status.yml b/conf/cmi/language/sv/core.base_field_override.node.survey.status.yml new file mode 100644 index 00000000..97ac71a7 --- /dev/null +++ b/conf/cmi/language/sv/core.base_field_override.node.survey.status.yml @@ -0,0 +1,4 @@ +label: Publicerad +settings: + on_label: Ja + off_label: Nej diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml index d94d887d..6464a1fe 100644 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml +++ b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.chat.yml @@ -1,4 +1,4 @@ description: - value: '

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

NamnTjänsteleverantörCookie syfteGiltighetTyp
_genesys.widgets.*hel.fiAnvänds för att lagra data som behövs för chatten.session 
leijuke.*hel.fiAnvänds för att lagra data som behövs för chatten.session 
aiap-wbc-chat-app-button-statehel.fiAnvänds för chattapplikationens funktionalitet. Lagrar inställningar och konfigurationsdata för chattapplikationens knapp.session 
aiap-chat-app-v1-statehel.fiAnvänds för chattapplikationens funktionalitet. Lagrar inställningar och konfigurationsdata för chattapplikationen.session 
conversationTokenhttps://coh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudAnvänds för chattapplikationens funktionalitet. Lagrar konversationstoken för autentisering och åtkomst till dataändamål.sessionTredje part
' + value: '

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

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

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

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

helsinkikanava.fi

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

Kakan är en obligatorisk kaka som gör det möjligt för besökaren att besöka webbplatsen.sessionTredje part
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudAnvänds för chattapplikationens funktionalitet. Dess värde används för att få tillgång till sessiondata på applikationens server.sessionTredje part
COOKIE_SUPPORThelsinkikanava.fiKakan möjliggör hanteringen av kakor på webbplatsen.365 dagarTredje part
GUEST_LANGUAGE_IDhelsinkikanava.fiDenna cookie genereras av Liferay, dess funktion är att lagra språkinställningarna.365 dagarTredje part
helfi-settingshel.fiAnvänds av hel.fi Drupal för att lagra information om stängda meddelanden och accordions'' tillstånd.-Lokalt minne
Drupal.visitor.autologout_loginavustukset.hel.fiAnvänds av avustukset.hel.fi Drupal för att automatiskt logga ut användare efter en period av inaktivitet.365 dagar 
' + value: '

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

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

helsinkikanava.fi

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

Kakan är en obligatorisk kaka som gör det möjligt för besökaren att besöka webbplatsen.sessionTredje part
JSESSIONIDcoh-chat-app-prod.ow6i4n9pdzm.eu-de.codeengine.appdomain.cloudAnvänds för chattapplikationens funktionalitet. Dess värde används för att få tillgång till sessiondata på applikationens server.sessionTredje part
COOKIE_SUPPORThelsinkikanava.fiKakan möjliggör hanteringen av kakor på webbplatsen.365 dagarTredje part
GUEST_LANGUAGE_IDhelsinkikanava.fiDenna cookie genereras av Liferay, dess funktion är att lagra språkinställningarna.365 dagarTredje part
helfi-settingswww.hel.fiAnvänds av www.hel.fi Drupal för att lagra information om stängda meddelanden och accordions'' tillstånd.-Lokalt minne
Drupal.visitor.autologout_loginavustukset.hel.fiAnvänds av avustukset.hel.fi Drupal för att automatiskt logga ut användare efter en period av inaktivitet.365 dagar 
' format: full_html label: 'Nödvändiga funktionella cookies' diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml index de0ec699..cef60a8e 100644 --- a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml +++ b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.preference.yml @@ -1,4 +1,4 @@ label: Preferens description: - value: '

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

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

 

' + value: '

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

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

 

' format: full_html diff --git a/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml b/conf/cmi/language/sv/eu_cookie_compliance.cookie_category.statistics.yml index a6ad5344..18a542a9 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.

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

En post relaterad till driften av reaktionsknappen 

Askem

.

-Lokalt minne
rnsbid_tsreactandshare.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
YSCyoutube.comYouTubes kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen.sessionTredje part

 

' + value: '

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

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

En post relaterad till driften av reaktionsknappen 

Askem

.

-Lokalt minne
rnsbid_tsreactandshare.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
YSCyoutube.comYouTubes kaka gör det möjligt att göra videor till en del av innehållet på webbplatsen.sessionTredje part

 

' format: full_html label: Statistik diff --git a/conf/cmi/language/sv/field.field.node.announcement.field_publish_externally.yml b/conf/cmi/language/sv/field.field.node.announcement.field_publish_externally.yml new file mode 100644 index 00000000..83c1e838 --- /dev/null +++ b/conf/cmi/language/sv/field.field.node.announcement.field_publish_externally.yml @@ -0,0 +1,3 @@ +settings: + on_label: Ja + off_label: Nej diff --git a/conf/cmi/language/sv/field.field.node.survey.body.yml b/conf/cmi/language/sv/field.field.node.survey.body.yml new file mode 100644 index 00000000..7e34baf6 --- /dev/null +++ b/conf/cmi/language/sv/field.field.node.survey.body.yml @@ -0,0 +1 @@ +label: Body diff --git a/conf/cmi/language/sv/field.field.node.survey.field_survey_link.yml b/conf/cmi/language/sv/field.field.node.survey.field_survey_link.yml new file mode 100644 index 00000000..cb5c2337 --- /dev/null +++ b/conf/cmi/language/sv/field.field.node.survey.field_survey_link.yml @@ -0,0 +1 @@ +label: Länk diff --git a/conf/cmi/language/sv/tfa.settings.yml b/conf/cmi/language/sv/tfa.settings.yml new file mode 100644 index 00000000..9dcd2542 --- /dev/null +++ b/conf/cmi/language/sv/tfa.settings.yml @@ -0,0 +1,26 @@ +help_text: 'Kontakta supporten för att återställa din åtkomst' +mail: + tfa_enabled_configuration: + subject: 'Ditt [site:name]-konto har nu tvåfaktorsautentisering' + body: |- + [user:display-name], + + Tack för att du konfigurerade tvåfaktorsautentisering på ditt [site:name]konto! + + Denna extra nivå av säkerhet hjälper till att säkerställa att enbart du kan logga in på ditt konto. + + Om du någonsin förlorar den enhet som du konfigurerat detta med så bör du genast ta bort kopplingen till detta konto. + + -- + [site:name] teamet + tfa_disabled_configuration: + subject: 'Ditt [site:name] konto har inte längre tvåfaktorsautentisering' + body: |- + [user:display-name], + + Tvåfaktorsautentisering har stängts av på ditt [site:name] konto. + + Var vänlig och kontakta en administratör ifall det inte vara du som gjorde detta. + + -- + [site:name] teamet \ No newline at end of file diff --git a/conf/cmi/node.type.survey.yml b/conf/cmi/node.type.survey.yml new file mode 100644 index 00000000..1a55a53a --- /dev/null +++ b/conf/cmi/node.type.survey.yml @@ -0,0 +1,33 @@ +uuid: 1dc12a96-80cd-44c3-a566-f10debad1c49 +langcode: en +status: true +dependencies: + module: + - menu_ui + - scheduler +third_party_settings: + menu_ui: + available_menus: { } + parent: '' + scheduler: + expand_fieldset: when_required + fields_display_mode: vertical_tab + publish_enable: true + publish_past_date: error + publish_past_date_created: false + publish_required: false + publish_revision: false + publish_touch: true + show_message_after_update: true + unpublish_enable: true + unpublish_required: false + unpublish_revision: false +_core: + default_config_hash: pbMUCq9D1CxNNcFQ2S0S76xWDOgKC4WOgnFyazcRW3Y +name: Survey +type: survey +description: 'Content type for surveys that can be shown on different pages.' +help: null +new_revision: true +preview_mode: 1 +display_submitted: false diff --git a/conf/cmi/paragraphs.paragraphs_type.from_library.yml b/conf/cmi/paragraphs.paragraphs_type.from_library.yml index 47f587f7..81c13e0b 100644 --- a/conf/cmi/paragraphs.paragraphs_type.from_library.yml +++ b/conf/cmi/paragraphs.paragraphs_type.from_library.yml @@ -1,7 +1,10 @@ uuid: 4bd8a477-69fa-4b82-8723-3ce70a9d6f38 langcode: en status: true -dependencies: { } +dependencies: + enforced: + module: + - paragraphs_library _core: default_config_hash: OJUwL6xTTiHbXZy10swc5Fckkr7qhSm4b0nK3326LO8 id: from_library diff --git a/conf/cmi/system.action.user_add_role_action.survey_editor.yml b/conf/cmi/system.action.user_add_role_action.survey_editor.yml new file mode 100644 index 00000000..34e10f1f --- /dev/null +++ b/conf/cmi/system.action.user_add_role_action.survey_editor.yml @@ -0,0 +1,14 @@ +uuid: b14d0637-6028-4697-b62a-149e0134359d +langcode: en +status: true +dependencies: + config: + - user.role.survey_editor + module: + - user +id: user_add_role_action.survey_editor +label: 'Add the Survey editor role to the selected user(s)' +type: user +plugin: user_add_role_action +configuration: + rid: survey_editor diff --git a/conf/cmi/system.action.user_remove_role_action.survey_editor.yml b/conf/cmi/system.action.user_remove_role_action.survey_editor.yml new file mode 100644 index 00000000..4f70068b --- /dev/null +++ b/conf/cmi/system.action.user_remove_role_action.survey_editor.yml @@ -0,0 +1,14 @@ +uuid: 03f38fe2-b5d6-4bdb-93b0-16ac32f438c7 +langcode: en +status: true +dependencies: + config: + - user.role.survey_editor + module: + - user +id: user_remove_role_action.survey_editor +label: 'Remove the Survey editor role from the selected user(s)' +type: user +plugin: user_remove_role_action +configuration: + rid: survey_editor diff --git a/conf/cmi/tfa.settings.yml b/conf/cmi/tfa.settings.yml new file mode 100644 index 00000000..effc23d2 --- /dev/null +++ b/conf/cmi/tfa.settings.yml @@ -0,0 +1,48 @@ +_core: + default_config_hash: JyIkFj38h-aTLsrCfejAfP277qBJ61tlaLEBH44IHhg +langcode: en +enabled: true +required_roles: + hr: hr + admin: admin + content_producer: content_producer + editor: editor + super_administrator: super_administrator +send_plugins: { } +login_plugins: { } +login_plugin_settings: + tfa_trusted_browser: + cookie_allow_subdomains: true + cookie_expiration: 30 + cookie_name: tfa-trusted-browser +allowed_validation_plugins: + tfa_totp: tfa_totp +default_validation_plugin: tfa_totp +validation_plugin_settings: + tfa_recovery_code: + recovery_codes_amount: 10 + tfa_hotp: + counter_window: 10 + site_name_prefix: 1 + name_prefix: TFA + issuer: Drupal + tfa_totp: + time_skew: 2 + site_name_prefix: 1 + name_prefix: TFA + issuer: Hel.fi +validation_skip: 3 +users_without_tfa_redirect: false +reset_pass_skip_enabled: true +encryption: real_aes +tfa_flood_uid_only: 1 +tfa_flood_window: 300 +tfa_flood_threshold: 6 +help_text: 'Contact support to reset your access' +mail: + tfa_enabled_configuration: + subject: 'Your [site:name] account now has two-factor authentication' + body: "[user:display-name],\r\n\r\nThanks for configuring two-factor authentication on your [site:name] account!\r\n\r\nThis additional level of security will help to ensure that only you are able to log in to your account.\r\n\r\nIf you ever lose the device you configured, you should act quickly to delete its association with this account.\r\n\r\n--\r\n[site:name] team" + tfa_disabled_configuration: + subject: 'Your [site:name] account no longer has two-factor authentication' + body: "[user:display-name],\r\n\r\nTwo-factor authentication has been disabled on your [site:name] account.\r\n\r\nIf you did not take this action, please contact a site administrator immediately.\r\n\r\n--\r\n[site:name] team" diff --git a/conf/cmi/user.role.admin.yml b/conf/cmi/user.role.admin.yml index e2a25d24..74b35ec1 100644 --- a/conf/cmi/user.role.admin.yml +++ b/conf/cmi/user.role.admin.yml @@ -40,12 +40,12 @@ dependencies: - pathauto - publication_date - redirect - - rest - role_delegation - scheduler - simple_sitemap - system - taxonomy + - tfa - toolbar - view_unpublished - views_bulk_edit @@ -124,6 +124,7 @@ permissions: - 'delete page revisions' - 'delete remote entities' - 'delete terms in keywords' + - 'disable own tfa' - 'edit any announcement content' - 'edit any file media' - 'edit any hel_map media' @@ -159,6 +160,7 @@ permissions: - 'set announcement published on date' - 'set landing_page published on date' - 'set page published on date' + - 'setup own tfa' - 'translate announcement node' - 'translate any entity' - 'translate configuration' diff --git a/conf/cmi/user.role.anonymous.yml b/conf/cmi/user.role.anonymous.yml index 73273b89..930b58d5 100644 --- a/conf/cmi/user.role.anonymous.yml +++ b/conf/cmi/user.role.anonymous.yml @@ -26,5 +26,6 @@ permissions: - 'view helfi_news_groups external entity' - 'view helfi_news_neighbourhoods external entity' - 'view helfi_news_tags external entity' + - 'view helfi_surveys external entity' - 'view media' - 'view remote entities' diff --git a/conf/cmi/user.role.authenticated.yml b/conf/cmi/user.role.authenticated.yml index 70932cd6..d98100b5 100644 --- a/conf/cmi/user.role.authenticated.yml +++ b/conf/cmi/user.role.authenticated.yml @@ -13,6 +13,7 @@ dependencies: - paragraphs - rest - system + - tfa - toolbar _core: default_config_hash: dJ0L2DNSj5q6XVZAGsuVDpJTh5UeYkIPwKrUOOpr8YI @@ -24,13 +25,16 @@ permissions: - 'access content' - 'access toolbar' - 'delete own files' + - 'disable own tfa' - 'display eu cookie compliance popup' - 'restful get helfi_global_mobile_menu' + - 'setup own tfa' - 'view helfi_announcements external entity' - 'view helfi_news external entity' - 'view helfi_news_groups external entity' - 'view helfi_news_neighbourhoods external entity' - 'view helfi_news_tags external entity' + - 'view helfi_surveys external entity' - 'view media' - 'view remote entities' - 'view unpublished paragraphs' diff --git a/conf/cmi/user.role.content_producer.yml b/conf/cmi/user.role.content_producer.yml index 504d974d..779cd333 100644 --- a/conf/cmi/user.role.content_producer.yml +++ b/conf/cmi/user.role.content_producer.yml @@ -32,6 +32,7 @@ dependencies: - scheduler - system - taxonomy + - tfa - toolbar - view_unpublished _core: @@ -75,6 +76,7 @@ permissions: - 'delete own landing_page content' - 'delete own page content' - 'delete own remote_video media' + - 'disable own tfa' - 'edit any announcement content' - 'edit any file media' - 'edit any hel_map media' @@ -103,6 +105,7 @@ permissions: - 'set announcement published on date' - 'set landing_page published on date' - 'set page published on date' + - 'setup own tfa' - 'translate editable entities' - 'translate file media' - 'translate image media' diff --git a/conf/cmi/user.role.editor.yml b/conf/cmi/user.role.editor.yml index d5a4ef97..279a7d53 100644 --- a/conf/cmi/user.role.editor.yml +++ b/conf/cmi/user.role.editor.yml @@ -37,6 +37,7 @@ dependencies: - scheduler - system - taxonomy + - tfa - toolbar - view_unpublished _core: @@ -101,6 +102,7 @@ permissions: - 'delete page revisions' - 'delete remote entities' - 'delete terms in keywords' + - 'disable own tfa' - 'edit any announcement content' - 'edit any file media' - 'edit any hel_map media' @@ -134,6 +136,7 @@ permissions: - 'set announcement published on date' - 'set landing_page published on date' - 'set page published on date' + - 'setup own tfa' - 'translate announcement node' - 'translate any entity' - 'translate editable entities' diff --git a/conf/cmi/user.role.hr.yml b/conf/cmi/user.role.hr.yml index 0009a595..c6cee728 100644 --- a/conf/cmi/user.role.hr.yml +++ b/conf/cmi/user.role.hr.yml @@ -12,6 +12,7 @@ dependencies: - node - scheduler - system + - tfa - view_unpublished id: hr label: HR @@ -24,8 +25,10 @@ permissions: - 'cancel account' - 'change own username' - 'delete own files' + - 'disable own tfa' - 'edit any job_listing content' - 'schedule publishing of nodes' + - 'setup own tfa' - 'use text format full_html' - 'use text format minimal' - 'view any unpublished job_listing content' diff --git a/conf/cmi/user.role.read_only.yml b/conf/cmi/user.role.read_only.yml index 3cc110ab..f8bc63ae 100644 --- a/conf/cmi/user.role.read_only.yml +++ b/conf/cmi/user.role.read_only.yml @@ -2,10 +2,16 @@ uuid: 15d845bf-3de6-4301-b135-5863f40f66fe langcode: en status: true dependencies: + config: + - node.type.announcement + - node.type.job_listing + - node.type.landing_page + - node.type.page module: - file - node - paragraphs + - tfa - toolbar - view_unpublished _core: @@ -17,6 +23,8 @@ is_admin: null permissions: - 'access toolbar' - 'delete own files' + - 'disable own tfa' + - 'setup own tfa' - 'view any unpublished announcement content' - 'view any unpublished job_listing content' - 'view any unpublished landing_page content' diff --git a/conf/cmi/user.role.survey_editor.yml b/conf/cmi/user.role.survey_editor.yml new file mode 100644 index 00000000..7ba1bc81 --- /dev/null +++ b/conf/cmi/user.role.survey_editor.yml @@ -0,0 +1,27 @@ +uuid: 9ec2282e-0675-4746-9892-cd37d2b6fc8a +langcode: en +status: true +dependencies: + config: + - node.type.survey + module: + - content_translation + - node + - publication_date +_core: + default_config_hash: CliaTgzCQcvNF9ot3u_EbHnydymXh8bvNgNFlSffj9s +id: survey_editor +label: 'Survey editor' +weight: 8 +is_admin: null +permissions: + - 'create survey content' + - 'delete any survey content' + - 'delete own survey content' + - 'delete survey revisions' + - 'edit any survey content' + - 'edit own survey content' + - 'revert survey revisions' + - 'set survey published on date' + - 'translate survey node' + - 'view survey revisions' diff --git a/conf/cmi/views.view.archive.yml b/conf/cmi/views.view.archive.yml index c41e519c..6dd54457 100644 --- a/conf/cmi/views.view.archive.yml +++ b/conf/cmi/views.view.archive.yml @@ -29,6 +29,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 10 total_pages: 0 id: 0 @@ -43,7 +44,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.content.yml b/conf/cmi/views.view.content.yml index b050177f..8008221f 100644 --- a/conf/cmi/views.view.content.yml +++ b/conf/cmi/views.view.content.yml @@ -315,13 +315,13 @@ display: pager: type: full options: + pagination_heading_level: h4 items_per_page: 50 tags: next: 'Next ›' previous: '‹ Previous' first: '« First' last: 'Last »' - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.editoria11y_dismissals.yml b/conf/cmi/views.view.editoria11y_dismissals.yml index fb7b97e2..851227d6 100644 --- a/conf/cmi/views.view.editoria11y_dismissals.yml +++ b/conf/cmi/views.view.editoria11y_dismissals.yml @@ -704,6 +704,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -721,7 +722,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 sorts: created: id: created diff --git a/conf/cmi/views.view.editoria11y_results.yml b/conf/cmi/views.view.editoria11y_results.yml index e25d3cea..2e63b7bc 100644 --- a/conf/cmi/views.view.editoria11y_results.yml +++ b/conf/cmi/views.view.editoria11y_results.yml @@ -1072,6 +1072,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -1089,7 +1090,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 sorts: result_name_count: id: result_name_count @@ -1453,6 +1453,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -1470,7 +1471,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 sorts: result_name_count: id: result_name_count @@ -1939,6 +1939,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -1953,7 +1954,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 sorts: page_result_count: id: page_result_count @@ -2451,6 +2451,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -2465,7 +2466,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 sorts: result_name_count: id: result_name_count @@ -2994,6 +2994,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -3008,7 +3009,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 sorts: created: id: created diff --git a/conf/cmi/views.view.files.yml b/conf/cmi/views.view.files.yml index 6eaa88df..ca92d690 100644 --- a/conf/cmi/views.view.files.yml +++ b/conf/cmi/views.view.files.yml @@ -470,6 +470,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: 0 id: 0 @@ -484,7 +485,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: @@ -1006,6 +1006,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 10 total_pages: 0 id: 0 @@ -1020,7 +1021,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 empty: { } arguments: fid: diff --git a/conf/cmi/views.view.glossary.yml b/conf/cmi/views.view.glossary.yml index 5ac516aa..1207a202 100644 --- a/conf/cmi/views.view.glossary.yml +++ b/conf/cmi/views.view.glossary.yml @@ -196,6 +196,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 36 total_pages: 0 id: 0 @@ -210,7 +211,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.job_listing_search.yml b/conf/cmi/views.view.job_listing_search.yml index 0952f568..f64e1bb2 100644 --- a/conf/cmi/views.view.job_listing_search.yml +++ b/conf/cmi/views.view.job_listing_search.yml @@ -91,6 +91,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 40 total_pages: null id: 0 @@ -108,7 +109,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.locked_content.yml b/conf/cmi/views.view.locked_content.yml index 732667fe..da802437 100644 --- a/conf/cmi/views.view.locked_content.yml +++ b/conf/cmi/views.view.locked_content.yml @@ -434,6 +434,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -451,7 +452,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.media.yml b/conf/cmi/views.view.media.yml index a1d6fe9f..f21fb580 100644 --- a/conf/cmi/views.view.media.yml +++ b/conf/cmi/views.view.media.yml @@ -522,6 +522,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -539,7 +540,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.media_library.yml b/conf/cmi/views.view.media_library.yml index f06ad223..283ab654 100644 --- a/conf/cmi/views.view.media_library.yml +++ b/conf/cmi/views.view.media_library.yml @@ -139,6 +139,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 24 total_pages: null id: 0 @@ -153,7 +154,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: @@ -1078,6 +1078,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 24 total_pages: null id: 0 @@ -1095,7 +1096,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 access: type: perm options: diff --git a/conf/cmi/views.view.paragraphs_library.yml b/conf/cmi/views.view.paragraphs_library.yml index 7a82ff54..c45cd178 100644 --- a/conf/cmi/views.view.paragraphs_library.yml +++ b/conf/cmi/views.view.paragraphs_library.yml @@ -541,6 +541,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -555,7 +556,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.paragraphs_selection.yml b/conf/cmi/views.view.paragraphs_selection.yml index b2762a54..630b6a3c 100644 --- a/conf/cmi/views.view.paragraphs_selection.yml +++ b/conf/cmi/views.view.paragraphs_selection.yml @@ -157,6 +157,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 10 total_pages: null id: 0 @@ -171,7 +172,6 @@ display: items_per_page_options_all_label: '- Kaikki -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.redirect.yml b/conf/cmi/views.view.redirect.yml index 6991b774..a4effd86 100644 --- a/conf/cmi/views.view.redirect.yml +++ b/conf/cmi/views.view.redirect.yml @@ -226,6 +226,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -243,7 +244,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.scheduler_scheduled_content.yml b/conf/cmi/views.view.scheduler_scheduled_content.yml index 206b27a9..e5ac9892 100644 --- a/conf/cmi/views.view.scheduler_scheduled_content.yml +++ b/conf/cmi/views.view.scheduler_scheduled_content.yml @@ -530,6 +530,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: null id: 0 @@ -538,7 +539,6 @@ display: previous: '‹ previous' first: '« first' last: 'last »' - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.taxonomy_term.yml b/conf/cmi/views.view.taxonomy_term.yml index 4b6f510d..f9defa05 100644 --- a/conf/cmi/views.view.taxonomy_term.yml +++ b/conf/cmi/views.view.taxonomy_term.yml @@ -29,6 +29,7 @@ display: type: mini options: offset: 0 + pagination_heading_level: h4 items_per_page: 10 total_pages: 0 id: 0 @@ -43,7 +44,6 @@ display: items_per_page_options_all_label: '- All -' offset: false offset_label: Offset - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/conf/cmi/views.view.user_admin_people.yml b/conf/cmi/views.view.user_admin_people.yml index af7d0179..a6b0f475 100644 --- a/conf/cmi/views.view.user_admin_people.yml +++ b/conf/cmi/views.view.user_admin_people.yml @@ -463,6 +463,7 @@ display: type: full options: offset: 0 + pagination_heading_level: h4 items_per_page: 50 total_pages: 0 id: 0 @@ -480,7 +481,6 @@ display: offset: false offset_label: Offset quantity: 9 - pagination_heading_level: h4 exposed_form: type: basic options: diff --git a/docker/elastic-proxy/nginx.conf b/docker/elastic-proxy/nginx.conf index b3eb4c1d..5d9f2232 100644 --- a/docker/elastic-proxy/nginx.conf +++ b/docker/elastic-proxy/nginx.conf @@ -26,7 +26,7 @@ http { sub { use MIME::Base64; if (exists($ENV{"ELASTIC_USER"}) && exists($ENV{"ELASTIC_PASSWORD"})) { - return encode_base64($ENV{"ELASTIC_USER"} . ":" . $ENV{"ELASTIC_PASSWORD"}); + return encode_base64($ENV{"ELASTIC_USER"} . ":" . $ENV{"ELASTIC_PASSWORD"}, ""); } return ""; } diff --git a/docker/openshift/Dockerfile b/docker/openshift/Dockerfile index 3d009e9b..32d4a3a2 100644 --- a/docker/openshift/Dockerfile +++ b/docker/openshift/Dockerfile @@ -14,7 +14,8 @@ COPY docker/openshift/init.sh / # Copy cron scripts RUN mkdir /crons COPY docker/openshift/crons/ /crons -RUN chmod +x /crons/* +COPY docker/openshift/cron-entrypoint.sh /usr/local/bin/cron-entrypoint +RUN chmod +x /crons/* /usr/local/bin/cron-entrypoint # Copy nginx overrides. COPY docker/openshift/custom.locations /etc/nginx/conf.d/custom.locations diff --git a/docker/openshift/cron-entrypoint.sh b/docker/openshift/cron-entrypoint.sh new file mode 100644 index 00000000..b9f55232 --- /dev/null +++ b/docker/openshift/cron-entrypoint.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +source /init.sh + +echo "Starting cron: $(date)" + +# You can add any additional cron "daemons" to docker/openshift/crons/ folder. +# +# Example: +# @code +# #!/bin/bash +# while true +# do +# drush some-command +# sleep 600 +# done +# @endcode + +for cron in /crons/*.sh; do + # Skip legacy base.sh script if it exists. + # Skip Kubernetes hooks that are stored in crons directory. + if [[ "${cron##*/}" == "base.sh" ]] || [[ "${cron##*/}" == *-hook.sh ]]; then + continue + elif [[ -r "$cron" ]]; then + echo "Starting $cron" + exec "$cron" & + fi +done + +while true +do + # Rudimentary process supervisor: + # Waits for the next process to terminate. The parent + # process is killed if any subprocess exists with failure. + # OpenShift should then restart the cron pod. + wait -n + exit_code=$? + if [[ "$exit_code" -ne 0 ]]; then + output_error_message "Cron subprocess failed with exit code $exit_code" + exit 1 + fi +done diff --git a/docker/openshift/crons/cron.sh b/docker/openshift/crons/cron.sh new file mode 100644 index 00000000..3af5b6ea --- /dev/null +++ b/docker/openshift/crons/cron.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +while true +do + echo "Running cron: $(date +'%Y-%m-%dT%H:%M:%S%:z')\n" + drush cron + # Sleep for 10 minutes. + sleep 600 +done diff --git a/docker/openshift/crons/linked-events.sh b/docker/openshift/crons/linked-events.sh index 4eecbdfb..a698f10a 100644 --- a/docker/openshift/crons/linked-events.sh +++ b/docker/openshift/crons/linked-events.sh @@ -1,5 +1,11 @@ #!/bin/bash +source /init.sh + +if ! is_drupal_module_enabled "helfi_react_search"; then + exit 0 +fi + while true do # Allow migrations to be run every 3 hours and reset stuck migrations every 12 hours. diff --git a/docker/openshift/crons/migrate-tpr.sh b/docker/openshift/crons/migrate-tpr.sh index 780bcbbf..637d1434 100644 --- a/docker/openshift/crons/migrate-tpr.sh +++ b/docker/openshift/crons/migrate-tpr.sh @@ -1,5 +1,11 @@ #!/bin/bash +source /init.sh + +if ! is_drupal_module_enabled "helfi_tpr"; then + exit 0 +fi + while true do # Allow migrations to be run every 3 hours and reset stuck migrations every 12 hours. diff --git a/docker/openshift/crons/pubsub.sh b/docker/openshift/crons/pubsub.sh index d5d0fc16..be359b9f 100644 --- a/docker/openshift/crons/pubsub.sh +++ b/docker/openshift/crons/pubsub.sh @@ -2,14 +2,9 @@ echo "Running PubSub daemon: $(date +'%Y-%m-%dT%H:%M:%S%:z')" -i=0 -# Attempt to start this service five times. -until [ $i -gt 5 ] +while true do - drush helfi:azure:pubsub-listen - - if [[ "$?" -ne 0 ]]; then - ((i=i+1)) - sleep 10 - fi + # PubSub process exists with success return code after + # certain number of messages and should then be restarted. + drush helfi:azure:pubsub-listen || exit 1 done diff --git a/docker/openshift/init.sh b/docker/openshift/init.sh index 8bef1380..22ccb583 100644 --- a/docker/openshift/init.sh +++ b/docker/openshift/init.sh @@ -30,6 +30,14 @@ function deployment_in_progress { return 1 } +function is_drupal_module_enabled { + if drush pm-list --status=Enabled --filter=${1} --format=json | jq --exit-status '. == []' > /dev/null; then + return 1 + fi + + return 0 +} + if [ ! -d "sites/default/files" ]; then output_error_message "Container start error: Public file folder does not exist. Exiting early." exit 1 diff --git a/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.services.yml b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.services.yml new file mode 100644 index 00000000..08a54ade --- /dev/null +++ b/public/modules/custom/helfi_hakuvahti/helfi_hakuvahti.services.yml @@ -0,0 +1,10 @@ +services: + _defaults: + autoconfigure: true + autowire: true + + logger.channel.helfi_hakuvahti: + parent: logger.channel_base + arguments: ['helfi_hakuvahti'] + + Drupal\helfi_hakuvahti\HelfiHakuvahtiSubscribeController: ~ diff --git a/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php b/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php index f157ff7d..224ed581 100644 --- a/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php +++ b/public/modules/custom/helfi_hakuvahti/src/Controller/HelfiHakuvahtiSubscribeController.php @@ -5,11 +5,13 @@ namespace Drupal\helfi_hakuvahti\Controller; use Drupal\Core\Controller\ControllerBase; -use Drupal\Core\Entity\EntityTypeManagerInterface; -use Drupal\Core\StringTranslation\StringTranslationTrait; -use GuzzleHttp\Client; +use Drupal\Core\Entity\EntityStorageInterface; +use Drupal\taxonomy\TermInterface; +use GuzzleHttp\ClientInterface; +use GuzzleHttp\Exception\GuzzleException; use GuzzleHttp\RequestOptions; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Psr\Log\LoggerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; @@ -19,23 +21,128 @@ */ final class HelfiHakuvahtiSubscribeController extends ControllerBase { - use StringTranslationTrait; + /** + * The term storage. + * + * @var \Drupal\Core\Entity\EntityStorageInterface + */ + private EntityStorageInterface $termStorage; /** * Constructor for the HelfiHakuvahtiSubscribeController class. * - * @param \Symfony\Component\DependencyInjection\ContainerInterface $container - * The container. * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack * The request stack. - * @param \Drupal\Core\Entity\EntityTypeManagerInterface $_entityTypeManager - * The entity type manager. + * @param \GuzzleHttp\ClientInterface $client + * The httpclient. + * @param \Psr\Log\LoggerInterface $logger + * The logger. */ public function __construct( - protected ContainerInterface $container, protected RequestStack $requestStack, - protected EntityTypeManagerInterface $_entityTypeManager, - ) {} + private readonly ClientInterface $client, + #[Autowire(service: 'logger.channel.helfi_hakuvahti')] private readonly LoggerInterface $logger, + ) { + $this->termStorage = $this->entityTypeManager()->getStorage('taxonomy_term'); + } + + /** + * 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 { + if (!$hakuvahtiServer = getenv('HAKUVAHTI_URL')) { + $this->logger->error('Hakuvahti is missing a required HAKUVAHTI_URL configuration.'); + return new JsonResponse(['success' => FALSE, 'error' => 'Unable to process the request.'], Response::HTTP_INTERNAL_SERVER_ERROR); + } + + $request = $this->requestStack->getCurrentRequest(); + $body = $request->getContent(FALSE); + $bodyObj = json_decode($body); + $bodyObj->search_description = $this->getSearchDescriptionTaxonomies($bodyObj); + + $token = $request->headers->get('token'); + + // @todo Validate token. + // + // 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) {}. + try { + $this->client->request('POST', "$hakuvahtiServer/subscription", [ + RequestOptions::JSON => $bodyObj, + RequestOptions::HEADERS => [ + 'token' => $token, + 'Content-Type' => 'application/json', + ], + ]); + } + catch (GuzzleException $e) { + $this->logger->error("Unable to send Hakuvahti-request - Code {$e->getCode()}: {$e->getMessage()}"); + return new JsonResponse(['success' => FALSE, 'error' => 'Error while handling the request.'], Response::HTTP_INTERNAL_SERVER_ERROR); + } + + return new JsonResponse(['success' => TRUE], Response::HTTP_OK); + } + + /** + * Retrieves search description taxonomies from the provided object. + * + * @param mixed $obj + * The object containing elastic query data. + * + * @return string + * The concatenated search description taxonomies. + */ + private function getSearchDescriptionTaxonomies(mixed $obj): string { + $terms = []; + $employmentTermLabels = []; + $areaFiltersTranslated = []; + $query = ''; + + $elasticQuery = base64_decode($obj->elastic_query); + $queryAsArray = json_decode($elasticQuery, TRUE); + + // Free text search. + if ( + str_contains($elasticQuery, 'combined_fields') && + $combinedFields = $this->sliceTree($queryAsArray['query']['bool']['must'], 'combined_fields') + ) { + $query = $combinedFields['query'] ?? ''; + } + + $taskAreaField = 'task_area_external_id'; + if ( + str_contains($elasticQuery, $taskAreaField) && + $taskAreaIds = $this->sliceTree($queryAsArray['query']['bool']['must'], $taskAreaField) + ) { + $terms = $this->getLabelsByExternalId($taskAreaIds, $obj->lang); + } + + $employmentTypeField = 'employment_type_id'; + if ( + str_contains($elasticQuery, $employmentTypeField) && + $employmentIds = $this->sliceTree($queryAsArray['query']['bool']['must'], $employmentTypeField) + ) { + $employmentTermLabels = $this->getLabelsByTermIds($employmentIds, $obj->lang); + } + + // Job location: + if ($area_filters = $this->extractQueryParameters($obj->query, 'area_filter')) { + foreach ($area_filters as $area) { + $areaFiltersTranslated[] = $this->translateString($area, $obj->lang); + } + } + + $description = $this->buildDescription($query, $terms, $areaFiltersTranslated, $employmentTermLabels); + + return $description ?: $this->translateString('No search filters', $obj->lang); + } /** * Retrieves taxonomy labels by field_external_id values in a given language. @@ -48,10 +155,11 @@ public function __construct( * @return array * An array of taxonomy term labels in the specified language. */ - private function getLabelsByExternalId(array $external_ids, $language) { + private function getLabelsByExternalId(array $external_ids, string $language): array { $labels = []; - $terms = $this->_entityTypeManager->getStorage('taxonomy_term')->loadByProperties(['field_external_id' => $external_ids]); + $terms = $this->termStorage->loadByProperties(['field_external_id' => $external_ids]); foreach ($terms as $term) { + assert($term instanceof TermInterface); $translated_term = $term->hasTranslation($language) ? $term->getTranslation($language) : $term; $labels[] = $translated_term->label(); } @@ -69,10 +177,11 @@ private function getLabelsByExternalId(array $external_ids, $language) { * @return array * An array of taxonomy term labels in the specified language. */ - private function getLabelsByTermIds(array $term_ids, $language) { + private function getLabelsByTermIds(array $term_ids, string $language): array { $labels = []; - $terms = $this->_entityTypeManager->getStorage('taxonomy_term')->loadMultiple($term_ids); + $terms = $this->termStorage->loadMultiple($term_ids); foreach ($terms as $term) { + assert($term instanceof TermInterface); $translated_term = $term->hasTranslation($language) ? $term->getTranslation($language) : $term; $labels[] = $translated_term->label(); } @@ -80,25 +189,6 @@ private function getLabelsByTermIds(array $term_ids, $language) { return $labels; } - /** - * Function to get translated string in a given language. - * - * phpcs:ignore is used to mute error about string literals as there - * is no other way to do this translation. - * - * @param string $string - * The string to be translated. - * @param string $language - * The language code for the desired translation. - * - * @return string - * The translated string. - */ - private function translateString($string, $language) { - $translatedString = $this->t($string, [], ['langcode' => $language]); // @phpcs:ignore - return (string) $translatedString; - } - /** * Function to extract specific query parameters from a URL string. * @@ -110,7 +200,7 @@ private function translateString($string, $language) { * @return array * An array of values for the specified query parameter. */ - private function extractQueryParameters($url, $parameter) { + private function extractQueryParameters(string $url, string $parameter): array { $parsed_url = parse_url($url); $query = $parsed_url['query'] ?? ''; $query_parameters = []; @@ -140,129 +230,99 @@ private function extractQueryParameters($url, $parameter) { } /** - * Retrieves search description taxonomies from the provided object. + * Build description string out of search parameters. * - * @param mixed $obj - * The object containing elastic query data. + * @param string $query + * The search query from text field. + * @param array $terms + * Array of term values. + * @param array $areaFiltersTranslated + * Array of area labels. + * @param array $employmentTermLabels + * Array of employment terms. * * @return string - * The concatenated search description taxonomies. + * The description string. */ - private function getSearchDescriptionTaxonomies($obj): string { - $terms = []; - $taxonomyIds = []; - - $elasticQuery = base64_decode($obj->elastic_query); - $elasticQueryObject = json_decode($elasticQuery); - - // Free text search. - $query = $elasticQueryObject->query->bool->must[1]->bool->should[1]->combined_fields->query ?? NULL; - - // Ammattiala / Task area. - $externalTaxonomyIds = array_merge($taxonomyIds, $elasticQueryObject->query->bool->must[2]->terms->task_area_external_id ?? []); - if (!empty($externalTaxonomyIds)) { - $terms = $this->getLabelsByExternalId($externalTaxonomyIds, $obj->lang); - } - - // Type of employment. - $taxonomyIds = array_merge($taxonomyIds, $elasticQueryObject->query->bool->must[3]->bool->should[1]->terms->employment_type_id ?? []); - if (!empty($taxonomyIds)) { - $employmentTermLabels = $this->getLabelsByTermIds($taxonomyIds, $obj->lang); - } - - // Job location: - $area_filters = $this->extractQueryParameters($obj->query, 'area_filter'); - if (!empty($area_filters)) { - // Duplicated from react frondend for proper translation mapping. - $areasList = [ - 'eastern' => 'Eastern area', - 'central' => 'Central area', - 'southern' => 'Southern area', - 'southeastern' => 'South-Eastern area', - 'western' => 'Western area', - 'northern' => 'Northern area', - 'northeast' => 'North-Eastern area', - ]; - - foreach ($area_filters as $area) { - $areaFiltersTranslated[] = $this->translateString($areasList[$area], $obj->lang); - } - } - - // Build description string: - $description = ''; - - // Search term first. - $description .= $query; - - // All these can be printed out with , separator. - if (!empty($areaFiltersTranslated)) { - $allTerms = array_merge($terms, $areaFiltersTranslated); - } + private function buildDescription(string $query, array $terms, array $areaFiltersTranslated, array $employmentTermLabels): string { + $description = $query; + $allTerms = array_merge($terms, $areaFiltersTranslated); - if (!empty($allTerms)) { - if (!empty($description)) { - $description .= ', '; - } - $description .= implode(', ', array_filter($allTerms)); - } + $description .= $query ? ', ' : ''; + $description .= implode(', ', array_filter($allTerms)); // Employment label should use / instead of comma. - if (!empty($employmentTermLabels)) { - if (!empty($description)) { - $description .= ', '; - } - $description .= implode(' / ', $employmentTermLabels); - } - - // Backup description if no terms or keywords found, must return something. - if (empty($description)) { - '*'; - } + $description .= $allTerms ? ', ' : ''; + $description .= implode(' / ', $employmentTermLabels); return $description; } /** - * A method to handle the POST request for subscription. + * Function to get translated string in a given language. * - * @return \Symfony\Component\HttpFoundation\JsonResponse - * The JSON response based on the subscription request. + * phpcs:ignore is used to mute error about string literals as there + * is no other way to do this translation. + * + * @param string $string + * The string to be translated. + * @param string $language + * The language code for the desired translation. + * + * @return string + * The translated string. */ - public function post(): JsonResponse { - $request = $this->requestStack->getCurrentRequest(); - $body = $request->getContent(FALSE); - $bodyObj = json_decode($body); - $bodyObj->search_description = $this->getSearchDescriptionTaxonomies($bodyObj); + private function translateString(string $string, string $language): string { + $context = fn($context) => ['langcode' => $language, 'context' => "Search filter option: $context"]; + $translatedString = match(TRUE) { + $string == 'eastern' => $this->t('Eastern area', [], $context('Eastern area')), + $string == 'central' => $this->t('Central area', [], $context('Central area')), + $string == 'southern' => $this->t('Southern area', [], $context('Southern area')), + $string == 'southeastern' => $this->t('South-Eastern area', [], $context('South-Eastern area')), + $string == 'western' => $this->t('Western area', [], $context('Western area')), + $string == 'northern' => $this->t('Northern area', [], $context('Northern area')), + $string == 'northeast' => $this->t('North-Eastern area', [], $context('North-Eastern area')), + $string == 'No search filters' => $this->t( + 'No search filters', options: ['langcode' => $language, 'context' => 'Hakuvahti empty filters'] + ), + default => '', + }; - $token = $request->headers->get('token'); + return (string) $translatedString; + } - // 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); + /** + * Recursive function to get an array by key from a tree of arrays. + * + * @param array $tree + * Array we are traversing. + * @param string $needle + * The key we are looking for. + * + * @return array + * False or the array we are looking for. + */ + private function sliceTree(array $tree, string $needle): array { + if (isset($tree[$needle])) { + return $tree[$needle]; } - else { - return new JsonResponse(['success' => FALSE, 'error' => $response->getBody()->getContents()], Response::HTTP_INTERNAL_SERVER_ERROR); + + $result = NULL; + foreach ($tree as $branch) { + if (!is_array($branch)) { + return []; + } + if (isset($branch[$needle])) { + return $branch[$needle]; + } + + $result = $this->sliceTree($branch, $needle); + if ($result) { + break; + } } + + return $result ?? []; } } diff --git a/public/modules/custom/helfi_hakuvahti/translations/fi.po b/public/modules/custom/helfi_hakuvahti/translations/fi.po index e2b023bc..22d86991 100644 --- a/public/modules/custom/helfi_hakuvahti/translations/fi.po +++ b/public/modules/custom/helfi_hakuvahti/translations/fi.po @@ -65,3 +65,35 @@ msgstr "Vahvista hakuvahti" msgid "Are you sure you wish to delete the saved search?" msgstr "Haluatko varmasti poistaa hakuvahdin?" + +msgctxt "Search filter option: Central area" +msgid "Central area" +msgstr "Keskinen alue" + +msgctxt "Search filter option: Eastern area" +msgid "Eastern area" +msgstr "Itäinen alue" + +msgctxt "Search filter option: Southern area" +msgid "Southern area" +msgstr "Eteläinen alue" + +msgctxt "Search filter option: South-Eastern area" +msgid "South-Eastern area" +msgstr "Kaakkoinen alue" + +msgctxt "Search filter option: Western area area" +msgid "Western area" +msgstr "Läntinen alue" + +msgctxt "Search filter option: Northern area" +msgid "Northern area" +msgstr "Pohjoinen alue" + +msgctxt "Search filter option: North-Eastern area" +msgid "North-Eastern area" +msgstr "Koillinen alue" + +msgctxt "Hakuvahti empty filters" +msgid "No search filters" +msgstr "Ei hakuehtoja" diff --git a/public/modules/custom/helfi_hakuvahti/translations/sv.po b/public/modules/custom/helfi_hakuvahti/translations/sv.po index acd7651c..86e478ff 100644 --- a/public/modules/custom/helfi_hakuvahti/translations/sv.po +++ b/public/modules/custom/helfi_hakuvahti/translations/sv.po @@ -65,3 +65,35 @@ 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?" + +msgctxt "Hakuvahti empty filters" +msgid "No search filters" +msgstr "Inga ansökningskriterier" + +msgctxt "Search filter option: Central area" +msgid "Central area" +msgstr "Mellersta området" + +msgctxt "Search filter option: Eastern area" +msgid "Eastern area" +msgstr "Östra området" + +msgctxt "Search filter option: Southern area" +msgid "Southern area" +msgstr "Södra området" + +msgctxt "Search filter option: South-Eastern area" +msgid "South-Eastern area" +msgstr "Sydöstra området" + +msgctxt "Search filter option: Western area area" +msgid "Western area" +msgstr "Västra området" + +msgctxt "Search filter option: Northern area" +msgid "Northern area" +msgstr "Norra området" + +msgctxt "Search filter option: North-Eastern area" +msgid "North-Eastern area" +msgstr "Nordöstra området" diff --git a/public/modules/custom/helfi_rekry_job_search/helfi_rekry_job_search.info.yml b/public/modules/custom/helfi_rekry_job_search/helfi_rekry_job_search.info.yml deleted file mode 100644 index 43adb94c..00000000 --- a/public/modules/custom/helfi_rekry_job_search/helfi_rekry_job_search.info.yml +++ /dev/null @@ -1,4 +0,0 @@ -name: 'HELfi Rekry job search' -type: module -core_version_requirement: ^9 || ^10 -package: HELfi diff --git a/public/sites/default/all.settings.php b/public/sites/default/all.settings.php index 3fdc3bc6..2ff62211 100644 --- a/public/sites/default/all.settings.php +++ b/public/sites/default/all.settings.php @@ -38,6 +38,10 @@ 'ad_role' => 'Drupal_Helfi_Rekry_sisallontuottajat_suppea', 'roles' => ['content_producer'], ], + [ + 'ad_role' => 'Drupal_Helfi_Etusivu_kayttajakyselyt', + 'roles' => ['survey_editor'], + ], [ 'ad_role' => '947058f4-697e-41bb-baf5-f69b49e5579a', 'roles' => ['super_administrator'], diff --git a/public/sites/default/settings.php b/public/sites/default/settings.php index 9006eeff..9e6f7a6b 100755 --- a/public/sites/default/settings.php +++ b/public/sites/default/settings.php @@ -229,24 +229,30 @@ function drupal_get_env(string|array $variables) : mixed { } } } +$stage_file_proxy_origin = getenv('STAGE_FILE_PROXY_ORIGIN'); +$stage_file_proxy_dir = getenv('STAGE_FILE_PROXY_ORIGIN_DIR'); -if ($stage_file_proxy_origin = getenv('STAGE_FILE_PROXY_ORIGIN')) { - $config['stage_file_proxy.settings']['origin'] = $stage_file_proxy_origin; - $config['stage_file_proxy.settings']['origin_dir'] = getenv('STAGE_FILE_PROXY_ORIGIN_DIR') ?: 'test'; +if ($stage_file_proxy_origin || $stage_file_proxy_dir) { + $config['stage_file_proxy.settings']['origin'] = $stage_file_proxy_origin ?: 'https://stplattaprod.blob.core.windows.net'; + $config['stage_file_proxy.settings']['origin_dir'] = $stage_file_proxy_dir; $config['stage_file_proxy.settings']['hotlink'] = FALSE; $config['stage_file_proxy.settings']['use_imagecache_root'] = FALSE; } -// Map API accounts. The value should be a base64 encoded JSON string. -// @see https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/blob/main/documentation/api-accounts.md. -if ($api_accounts = getenv('DRUPAL_API_ACCOUNTS')) { - $config['helfi_api_base.api_accounts']['accounts'] = json_decode(base64_decode($api_accounts), TRUE); +if ($drupal_pubsub_vault = getenv('DRUPAL_PUBSUB_VAULT')) { + $config['helfi_api_base.api_accounts']['vault'][] = [ + 'id' => 'pubsub', + 'plugin' => 'json', + 'data' => trim($drupal_pubsub_vault), + ]; } -// Map vault accounts. The value should be a base64 encoded JSON string. -// @see https://github.com/City-of-Helsinki/drupal-module-helfi-api-base/blob/main/documentation/api-accounts.md. -if ($vault_accounts = getenv('DRUPAL_VAULT_ACCOUNTS')) { - $config['helfi_api_base.api_accounts']['vault'] = json_decode(base64_decode($vault_accounts), TRUE); +if ($drupal_navigation_vault = getenv('DRUPAL_NAVIGATION_VAULT')) { + $config['helfi_api_base.api_accounts']['vault'][] = [ + 'id' => 'helfi_navigation', + 'plugin' => 'authorization_token', + 'data' => trim($drupal_navigation_vault), + ]; } // Override session suffix when present. @@ -328,6 +334,11 @@ function drupal_get_env(string|array $variables) : mixed { $settings['is_azure'] = FALSE; +if ($tfa_key = getenv('TFA_ENCRYPTION_KEY')) { + $config['key.key.tfa']['key_provider_settings']['key_value'] = $tfa_key; + $config['key.key.tfa']['key_provider_settings']['base64_encoded'] = TRUE; +} + /** * Deployment preflight checks. * @@ -382,4 +393,3 @@ function drupal_get_env(string|array $variables) : mixed { if (empty($settings['deployment_identifier'])) { $settings['deployment_identifier'] = filemtime(__DIR__ . '/../../../composer.lock'); } - diff --git a/public/themes/custom/hdbt_subtheme/dist/js/helfi_datetime_comparison.min.js b/public/themes/custom/hdbt_subtheme/dist/js/helfi_datetime_comparison.min.js new file mode 100644 index 00000000..41f85c93 --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/dist/js/helfi_datetime_comparison.min.js @@ -0,0 +1 @@ +(Drupal=>{const t=Array.from(document.getElementsByClassName("job-listing__metadata-wrapper"))?.map((t=>t.getElementsByTagName("time")))?.map((t=>Array.from(t)))?.flat();if(!t)return;const e=new Date;Array.from(t).forEach((t=>{const a=new Date(t.getAttribute("datetime"));if(a.toDateString()===e.toDateString()){const e=a.getUTCMinutes()<10?`0${a.getMinutes()}`:a.getMinutes();t.innerText=`${Drupal.t("today")} ${a.getHours()}:${e}`}}))})(Drupal); \ No newline at end of file diff --git a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml index e9d83df8..42624f8a 100644 --- a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml +++ b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.libraries.yml @@ -11,3 +11,11 @@ siteimprove-analytics: dependencies: - core/drupal - eu_cookie_compliance/eu_cookie_compliance + +# Turn datetime into text, f.ex "today" +datetime_comparison: + version: 1.0 + js: + dist/js/helfi_datetime_comparison.min.js: {attributes: { defer: true }} + dependencies: + - core/drupal diff --git a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.theme b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.theme index f5603805..70766697 100644 --- a/public/themes/custom/hdbt_subtheme/hdbt_subtheme.theme +++ b/public/themes/custom/hdbt_subtheme/hdbt_subtheme.theme @@ -76,7 +76,7 @@ function hdbt_subtheme_preprocess_organization_information_block(array &$variabl $organization_field = $variables['elements']['field_organization_override']['#items']; } else { - $organization_field = $variables["elements"]["field_organization"]["#items"]; + $organization_field = $variables['elements']['field_organization']['#items']; } // Get organization. @@ -86,8 +86,8 @@ function hdbt_subtheme_preprocess_organization_information_block(array &$variabl } // Set organization default image variable. - if (!empty($organization) && !empty($organization->get("field_default_image")->first())) { - $variables['content']['organization_default_image'] = $organization->get("field_default_image")->first()->view([ + if (!empty($organization) && !empty($organization->get('field_default_image')->first())) { + $variables['content']['organization_default_image'] = $organization->get('field_default_image')->first()->view([ 'type' => 'image', 'label' => 'hidden', 'settings' => [ @@ -170,6 +170,7 @@ function hdbt_subtheme_preprocess_page(&$variables): void { // (job_listing) content type. if ($entity->getType() === 'job_listing') { $variables['has_sidebar_second'] = TRUE; + $variables['#attached']['library'][] = 'hdbt_subtheme/datetime_comparison'; } } } @@ -183,13 +184,6 @@ function hdbt_subtheme_preprocess_node(&$variables): void { if ($node->getType() !== 'job_listing') { return; } - // Check if job listing publication starts today. - $variables['publication_starts_today'] = FALSE; - $publication_starts_value = $node->get('field_publication_starts')->value; - - if ($publication_starts_value && date('Y-m-d', strtotime($publication_starts_value)) == date('Y-m-d')) { - $variables['publication_starts_today'] = TRUE; - } if ($task_area_term = $node->get('field_task_area')?->first()?->get('entity')?->getValue()) { $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId(); diff --git a/public/themes/custom/hdbt_subtheme/package-lock.json b/public/themes/custom/hdbt_subtheme/package-lock.json index 6f125351..3087f261 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.30001636", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz", - "integrity": "sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==", + "version": "1.0.30001644", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001644.tgz", + "integrity": "sha512-YGvlOZB4QhZuiis+ETS0VXR+MExbFf4fZYYeMTEE0aTQd/RdIjkTyZjLrbYVKnHzppDvnOhritRVv+i7Go6mHw==", "funding": [ { "type": "opencollective", diff --git a/public/themes/custom/hdbt_subtheme/src/js/helfi_datetime_comparison.js b/public/themes/custom/hdbt_subtheme/src/js/helfi_datetime_comparison.js new file mode 100644 index 00000000..64cc13fc --- /dev/null +++ b/public/themes/custom/hdbt_subtheme/src/js/helfi_datetime_comparison.js @@ -0,0 +1,18 @@ +// Turn datetime into text (for example "today"), used on a job page. +((Drupal) => { + // Look for all time-elements from all metadata-wrappers. + const timeElements = Array.from(document.getElementsByClassName('job-listing__metadata-wrapper')) + ?.map(wrapper => wrapper.getElementsByTagName('time')) + ?.map(timeElementCollection => Array.from(timeElementCollection)) + ?.flat() + if (!timeElements) return; + + const today = new Date(); + Array.from(timeElements).forEach((element) => { + const originalDate = new Date(element.getAttribute('datetime')); + if (originalDate.toDateString() === today.toDateString()) { + const minutes = originalDate.getUTCMinutes() < 10 ? `0${originalDate.getMinutes()}` : originalDate.getMinutes(); + element.innerText = `${Drupal.t('today')} ${originalDate.getHours()}:${minutes}` + } + }); +})(Drupal); diff --git a/public/themes/custom/hdbt_subtheme/templates/layout/node--job-listing.html.twig b/public/themes/custom/hdbt_subtheme/templates/layout/node--job-listing.html.twig index 316d6d46..e7f25c09 100644 --- a/public/themes/custom/hdbt_subtheme/templates/layout/node--job-listing.html.twig +++ b/public/themes/custom/hdbt_subtheme/templates/layout/node--job-listing.html.twig @@ -62,8 +62,6 @@ * current user is a logged-in member. * - is_admin: Flag for admin user status. Will be true when the current user * is an administrator. - * - publication_starts_today: Helper variable for displaying 'today' instead - * of the actual timestamp if the job listing is published today. * - task_area_name: Task area name for Rekry search link. * - task_area_rekry_search_url: Rekry search url with task area url query param. * @@ -140,11 +138,8 @@ {% endif %} - {% if publication_starts_today == true %} - {% set publication_starts = 'today'|t %} - {% else %} - {% set publication_starts = content.field_publication_starts %} - {% endif %} + {# The publication time is altered in custom javascript. #} + {% set publication_starts = content.field_publication_starts %} {% set metadata = [ { label: 'Application period ends'|t, icon: 'clock', content: content.field_publication_ends }, diff --git a/tools/make/drupal.mk b/tools/make/drupal.mk index 5f81548c..e8c9a4a2 100644 --- a/tools/make/drupal.mk +++ b/tools/make/drupal.mk @@ -7,6 +7,7 @@ CLEAN_EXCLUDE += $(WEBROOT)/sites/default/files DRUPAL_DISABLE_MODULES ?= no DRUPAL_ENABLE_MODULES ?= no DRUPAL_PROFILE ?= minimal +DRUPAL_SITE_EMAIL ?= maintenance@druid.fi DRUPAL_SYNC_FILES ?= yes DRUPAL_SYNC_SOURCE ?= main DRUSH_RSYNC_MODE ?= Pakzu @@ -87,7 +88,7 @@ else endif drush-si: ## Site install $(call step,Do Drush site:install...\n) - $(call drush,si ${DRUSH_SI}) + $(call drush,si ${DRUSH_SI} --site-mail=$(DRUPAL_SITE_EMAIL)) PHONY += drush-deploy drush-deploy: ## Run Drush deploy