diff --git a/.ahoy.yml b/.ahoy.yml index 230bdd414..6af466321 100644 --- a/.ahoy.yml +++ b/.ahoy.yml @@ -76,8 +76,12 @@ commands: cli: usage: Start a shell or run a command inside the CLI service container. - # The shell is started if no arguments were provided to this command. - cmd: if \[ "${#}" -ne 0 \]; then docker-compose exec -e COMPOSER=${COMPOSER:-} -T cli bash -c "$*"; else docker-compose exec cli bash; fi + # This will drop into shell if no arguments are supplied to this command. + # If arguments supplied, a new shell with DREVOPS_*, COMPOSE_* and TERM + # environment variables will be started. This allows passing of the environment + # variables to Ahoy commands which will then be forwarded to the container. + # Escape double quotes with \" (slash double-quote) when passing arguments with spaces. + cmd: if \[ "${#}" -ne 0 \]; then docker-compose exec $(env | cut -f1 -d= | grep "DREVOPS_\|COMPOSE_\|TERM" | sed 's/^/-e /') -T cli bash -c "$*"; else docker-compose exec cli bash; fi composer: usage: Run Composer commands in the CLI service container. @@ -116,9 +120,9 @@ commands: -e DREVOPS_DRUPAL_INSTALL_OPERATIONS_SKIP=${DREVOPS_DRUPAL_INSTALL_OPERATIONS_SKIP:-} \ -e DREVOPS_DRUPAL_INSTALL_OVERRIDE_EXISTING_DB=${DREVOPS_DRUPAL_INSTALL_OVERRIDE_EXISTING_DB:-0} \ -e DREVOPS_DRUPAL_PROFILE=${DREVOPS_DRUPAL_PROFILE:-standard} \ - -e CIVICTHEME_SKIP_SUBTHEME_ACTIVATION=${CIVICTHEME_SKIP_SUBTHEME_ACTIVATION:-0} \ - -e CIVICTHEME_SKIP_SUBTHEME_FE=${CIVICTHEME_SKIP_SUBTHEME_FE:-} \ - -e CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE=${CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE:-} \ + -e CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=${CIVICTHEME_SUBTHEME_ACTIVATION_SKIP:-0} \ + -e CIVICTHEME_SUBTHEME_FE_SKIP=${CIVICTHEME_SUBTHEME_FE_SKIP:-} \ + -e CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=${CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP:-} \ -e CIVICTHEME_CONTENT_PROFILE=${CIVICTHEME_CONTENT_PROFILE:-} \ -T cli ./scripts/drevops/drupal-install-site.sh @@ -147,13 +151,13 @@ commands: fei: usage: Install front-end assets. cmd: | - [ "${CIVICTHEME_SKIP_LIBRARY_INSTALL}" != "1" ] && ahoy cli "npm --prefix docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library install" + [ "${CIVICTHEME_LIBRARY_INSTALL_SKIP}" != "1" ] && ahoy cli "npm --prefix docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library install" ahoy cli "npm --prefix docroot/themes/contrib/${DREVOPS_DRUPAL_THEME} install" fe: usage: Build front-end assets. cmd: | - [ "${CIVICTHEME_SKIP_LIBRARY_INSTALL}" != "1" ] && ahoy cli "cd docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library && npm run build" + [ "${CIVICTHEME_LIBRARY_INSTALL_SKIP}" != "1" ] && ahoy cli "cd docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library && npm run build" ahoy cli "cd docroot/themes/contrib/${DREVOPS_DRUPAL_THEME} && npm run build" lint: @@ -210,7 +214,9 @@ commands: cmd: | ahoy cli "./scripts/update-theme-config.sh" ahoy drush cde civictheme_dev || true - ahoy drush cde cs_generated_content || true + if ahoy drush pm:list --status=Enabled --field=name | grep -q 'cs_generated_content'; then + ahoy drush cde cs_generated_content || true + fi export-content: usage: Export content (run with CIVICTHEME_CONTENT_PROFILE=corporate ahoy install-site) . diff --git a/.circleci/config.yml b/.circleci/config.yml index 574fa2ee9..dd13e0e6a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -52,12 +52,6 @@ aliases: # SSH key fingerprint to deploy code to civictheme_admin. - &deploy_ssh_fingerprint5 "ab:76:65:9f:76:02:c2:b9:2a:bc:81:db:a0:c6:37:59" - # SSH key fingerprint to deploy code to civictheme_migrate. - - &deploy_ssh_fingerprint6 "2b:61:1c:7c:d1:f8:9b:63:dc:a7:10:c1:d6:0a:4f:b8" - - # SSH key fingerprint to deploy code to Drupal.org - - &deploy_ssh_fingerprint7 "47:f9:29:8b:9b:1b:e9:66:5d:b3:f6:dd:e7:60:d1:f9" - # SSH key fingerprint to mirror code. - &git_mirror_ssh_fingerprint "88:48:44:13:07:7a:a7:da:8c:fb:5e:a7:62:45:73:c4" @@ -92,8 +86,6 @@ aliases: DEPLOY_SSH_FINGERPRINT3: *deploy_ssh_fingerprint3 DEPLOY_SSH_FINGERPRINT4: *deploy_ssh_fingerprint4 DEPLOY_SSH_FINGERPRINT5: *deploy_ssh_fingerprint5 - DEPLOY_SSH_FINGERPRINT6: *deploy_ssh_fingerprint6 - DEPLOY_SSH_FINGERPRINT7: *deploy_ssh_fingerprint7 GIT_MIRROR_SSH_FINGERPRINT: *git_mirror_ssh_fingerprint docker: - image: drevops/ci-builder @@ -138,7 +130,7 @@ aliases: sed -i -e "/###/d" docker-compose.yml && sed -i -e "s/##//" docker-compose.yml # Alter build for an alternative build setup. if [ "$CIVICTHEME_INSTALL_SIBLING" = "1" ]; then cp -f .docker/Dockerfile.cli.sibling .docker/Dockerfile.cli; fi - if [ "$CIVICTHEME_SKIP_LIBRARY_INSTALL" = "1" ]; then cp -f .docker/Dockerfile.cli.onlytheme .docker/Dockerfile.cli; fi + if [ "$CIVICTHEME_LIBRARY_INSTALL_SKIP" = "1" ]; then cp -f .docker/Dockerfile.cli.onlytheme .docker/Dockerfile.cli; fi ################################################################################ # JOBS @@ -210,7 +202,7 @@ job-build-no-persist: &job-build-no-persist command: ahoy lint - run: name: Lint theme config - command: ahoy lint config || true + command: ahoy lint config - run: name: Run tooling tests command: ./scripts/test-tooling.sh @@ -230,6 +222,22 @@ job-build-no-persist: &job-build-no-persist - store_artifacts: path: *drevops_test_artifact_dir +# Job to run isolated theme build. +job-build-theme-isolated: &job-build-theme-isolated + steps: + - checkout + - run: mkdir -p ~/project2 && cp -r docroot/themes/contrib/civictheme ~/project2 + - run: cd ~/project2/civictheme; ./.circleci/build.sh + - run: cd ~/project2/civictheme; ./.circleci/lint.sh + - run: cd ~/project2/civictheme; ./.circleci/test.sh + - run: + command: cd ~/project2/civictheme; ./.circleci/process-artifacts.sh + when: always + - store_test_results: + path: /tmp/test_results + - store_artifacts: + path: /tmp/artifacts + job-mirror: &job-mirror steps: - attach_workspace: @@ -247,27 +255,45 @@ job-mirror: &job-mirror # are using `develop` branch to build with 'default' profile. command: | set -x - profiles=() - profiles+=(content/corporate) - profiles+=(content/government) - profiles+=(content/highereducation) + branches=() + branches+=(content/corporate) + branches+=(content/government) + branches+=(content/highereducation) if [ "$MIRROR_CONTENT_BRANCHES_PROCEED" == "1" ]; then - for profile in "${profiles[@]}" + for branch in "${branches[@]}" do - GIT_MIRROR_BRANCH_DST="${profile}" GIT_MIRROR_BRANCH=develop ./scripts/git-mirror.sh + GIT_MIRROR_BRANCH_DST="${branch}" GIT_MIRROR_BRANCH=develop ./scripts/git-mirror.sh sleep 5 - DREVOPS_DEPLOY_LAGOON_BRANCH="${profile}" DEPLOY_ACTION=deploy_override_db ahoy deploy + DREVOPS_DEPLOY_LAGOON_BRANCH="${branch}" DEPLOY_ACTION=deploy_override_db ahoy deploy done fi jobs: + # Drupal 9, isolated theme build + build-theme-isolated-drupal9: + working_directory: ~/project + docker: + - image: cimg/php:8.2-browsers + environment: + DRUPAL_VERSION: 9.5 + DRUPAL_PROJECT_SHA: 9.x + <<: *job-build-theme-isolated + + build-theme-isolated-drupal10: + working_directory: ~/project + docker: + - image: cimg/php:8.2-browsers + environment: + <<: *job-build-theme-isolated + # Drupal 9, minimal profile. build-drupal9-minimal: <<: *container_config environment: DREVOPS_DRUPAL_PROFILE: minimal DREVOPS_TEST_BEHAT_TAGS: smoke + DREVOPS_LINT_CONFIG_ALLOW_FAILURE: 1 <<: *job-build-no-persist # Drupal 9, minimal profile, 'corporate' content profile. @@ -276,8 +302,9 @@ jobs: environment: DREVOPS_DRUPAL_PROFILE: minimal CIVICTHEME_CONTENT_PROFILE: corporate - CIVICTHEME_SKIP_SUBTHEME_ACTIVATION: 1 - CIVICTHEME_SKIP_LIBRARY_INSTALL: 1 + CIVICTHEME_SUBTHEME_ACTIVATION_SKIP: 1 + CIVICTHEME_LIBRARY_INSTALL_SKIP: 1 + DREVOPS_LINT_CONFIG_ALLOW_FAILURE: 1 DREVOPS_TEST_BEHAT_TAGS: smoke <<: *job-build-no-persist @@ -287,8 +314,9 @@ jobs: environment: DREVOPS_DRUPAL_PROFILE: minimal CIVICTHEME_CONTENT_PROFILE: highereducation - CIVICTHEME_SKIP_SUBTHEME_ACTIVATION: 1 - CIVICTHEME_SKIP_LIBRARY_INSTALL: 1 + CIVICTHEME_SUBTHEME_ACTIVATION_SKIP: 1 + CIVICTHEME_LIBRARY_INSTALL_SKIP: 1 + DREVOPS_LINT_CONFIG_ALLOW_FAILURE: 1 DREVOPS_TEST_BEHAT_TAGS: smoke <<: *job-build-no-persist @@ -298,8 +326,9 @@ jobs: environment: DREVOPS_DRUPAL_PROFILE: minimal CIVICTHEME_CONTENT_PROFILE: government - CIVICTHEME_SKIP_SUBTHEME_ACTIVATION: 1 - CIVICTHEME_SKIP_LIBRARY_INSTALL: 1 + CIVICTHEME_SUBTHEME_ACTIVATION_SKIP: 1 + CIVICTHEME_LIBRARY_INSTALL_SKIP: 1 + DREVOPS_LINT_CONFIG_ALLOW_FAILURE: 1 DREVOPS_TEST_BEHAT_TAGS: smoke <<: *job-build-no-persist @@ -325,8 +354,8 @@ jobs: <<: *container_config environment: DREVOPS_DRUPAL_PROFILE: govcms - CIVICTHEME_SKIP_SUBTHEME_ACTIVATION: 1 - CIVICTHEME_SKIP_LIBRARY_INSTALL: 1 + CIVICTHEME_SUBTHEME_ACTIVATION_SKIP: 1 + CIVICTHEME_LIBRARY_INSTALL_SKIP: 1 <<: *job-build # Drupal 10, minimal profile. @@ -336,6 +365,7 @@ jobs: DREVOPS_DRUPAL_PROFILE: minimal DREVOPS_DRUPAL_VERSION: 10 DREVOPS_TEST_BEHAT_TAGS: smoke + DREVOPS_LINT_CONFIG_ALLOW_FAILURE: 1 <<: *job-build-no-persist # Drupal 10, minimal profile, no subtheme. @@ -344,8 +374,9 @@ jobs: environment: DREVOPS_DRUPAL_PROFILE: minimal DREVOPS_DRUPAL_VERSION: 10 - CIVICTHEME_SKIP_SUBTHEME_ACTIVATION: 1 - CIVICTHEME_SKIP_LIBRARY_INSTALL: 1 + CIVICTHEME_SUBTHEME_ACTIVATION_SKIP: 1 + CIVICTHEME_LIBRARY_INSTALL_SKIP: 1 + DREVOPS_LINT_CONFIG_ALLOW_FAILURE: 1 <<: *job-build-no-persist # Mirror and redeploy content profiles. @@ -379,8 +410,8 @@ jobs: - store_artifacts: path: *drevops_test_artifact_dir - # Deploy tags. - deploy_tags: &job_deploy_tags + # Deploy artifact. + deploy_artifact: <<: *container_config steps: # @@ -397,72 +428,52 @@ jobs: - *deploy_ssh_fingerprint3 - *deploy_ssh_fingerprint4 - *deploy_ssh_fingerprint5 - - *deploy_ssh_fingerprint6 - - *deploy_ssh_fingerprint7 - checkout - *step_process_codebase - run: name: Deploy release to CivicTheme Drupal theme repository. command: | DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT1 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=master \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/themes/contrib/civictheme" \ - ./scripts/deploy-code-release.sh - no_output_timeout: 30m - - run: - name: Deploy release to Drupal.org. - command: | - DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT7 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@git.drupal.org:project/civictheme.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=1.x \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/themes/contrib/civictheme" \ - ./scripts/deploy-code-release.sh + DEPLOY_CODE_COMMIT_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme.git \ + DEPLOY_CODE_COMMIT_REMOTE_BRANCH=master \ + DEPLOY_CODE_COMMIT_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/themes/contrib/civictheme" \ + ./scripts/deploy-code-commit.sh no_output_timeout: 30m - run: name: Deploy release to CivicTheme Library repository. command: | DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT2 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_library.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=master \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/themes/contrib/civictheme/civictheme_library" \ - ./scripts/deploy-code-release.sh + DEPLOY_CODE_COMMIT_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_library.git \ + DEPLOY_CODE_COMMIT_REMOTE_BRANCH=master \ + DEPLOY_CODE_COMMIT_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/themes/contrib/civictheme/civictheme_library" \ + ./scripts/deploy-code-commit.sh no_output_timeout: 30m - run: name: Deploy release to CivicTheme GovCMS repository. command: | DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT3 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_govcms.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=master \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_govcms" \ - ./scripts/deploy-code-release.sh + DEPLOY_CODE_COMMIT_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_govcms.git \ + DEPLOY_CODE_COMMIT_REMOTE_BRANCH=master \ + DEPLOY_CODE_COMMIT_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_govcms" \ + ./scripts/deploy-code-commit.sh no_output_timeout: 30m - run: name: Deploy release to CivicTheme Content repository. command: | DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT4 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_content.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=master \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_content" \ - ./scripts/deploy-code-release.sh + DEPLOY_CODE_COMMIT_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_content.git \ + DEPLOY_CODE_COMMIT_REMOTE_BRANCH=master \ + DEPLOY_CODE_COMMIT_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_content" \ + ./scripts/deploy-code-commit.sh no_output_timeout: 30m - run: name: Deploy release to CivicTheme Admin repository. command: | DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT5 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_admin.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=master \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_admin" \ - ./scripts/deploy-code-release.sh - no_output_timeout: 30m - - run: - name: Deploy release to CivicTheme Migrate repository. - command: | - DEPLOY_SSH_FINGERPRINT=$DEPLOY_SSH_FINGERPRINT6 \ - DEPLOY_CODE_RELEASE_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_migrate.git \ - DEPLOY_CODE_RELEASE_REMOTE_BRANCH=master \ - DEPLOY_CODE_RELEASE_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_migrate" \ - ./scripts/deploy-code-release.sh + DEPLOY_CODE_COMMIT_REMOTE_REPO=git@github.com:salsadigitalauorg/civictheme_admin.git \ + DEPLOY_CODE_COMMIT_REMOTE_BRANCH=master \ + DEPLOY_CODE_COMMIT_SRC_DIR="${DREVOPS_EXPORT_CODE_DIR}/docroot/modules/custom/civictheme_admin" \ + ./scripts/deploy-code-commit.sh no_output_timeout: 30m - store_artifacts: path: *drevops_test_artifact_dir @@ -476,6 +487,21 @@ workflows: # Commit workflow. Runs for every commit push to the remote repository. commit: jobs: + + - build-theme-isolated-drupal9: + filters: + branches: + ignore: /^content\/.*/ + tags: + only: /.*/ + + - build-theme-isolated-drupal10: + filters: + branches: + ignore: /^content\/.*/ + tags: + only: /.*/ + - build-drupal9-govcms: filters: branches: @@ -532,6 +558,8 @@ workflows: only: /.*/ - deploy: requires: + - build-theme-isolated-drupal9 + - build-theme-isolated-drupal10 - build-drupal9-govcms-no-subtheme - build-drupal10-minimal-no-subtheme filters: @@ -545,23 +573,22 @@ workflows: only: /main|master|develop|project\/uno|ci.*|deps\/.*|(release\/)?[0-9]+(\.[0-9]+)+(-rc[0-9]+)?|(hotfix\/)?[0-9]+(\.[0-9]+)+(-rc[0-9]+)?|feature\/(?!7.x-|8.x-|9.x-)[a-zA-z0-9\-\.\,]+/ tags: ignore: /.*/ - - deploy_tags: + + - deploy_artifact: requires: - - build-drupal9-govcms + - build-theme-isolated-drupal9 + - build-theme-isolated-drupal10 - build-drupal9-minimal - - build-drupal9-minimal-corporate - - build-drupal9-minimal-highereducation - - build-drupal9-minimal-government - - build-drupal9-govcms-sibling - build-drupal9-govcms-no-subtheme + - build-drupal9-govcms - build-drupal10-minimal - build-drupal10-minimal-no-subtheme filters: branches: - ignore: /.*/ + only: develop tags: - # Allowed tags: 1, 123, 123.456, 123.456.789, 123.456.789-rc123 - only: /^[0-9]+(\.[0-9]+)+(-rc[0-9]+)?$/ + ignore: /.*/ + - mirror-into-content-branches: requires: - build-drupal9-minimal diff --git a/.docker/Dockerfile.cli b/.docker/Dockerfile.cli index dfc68e971..956767d79 100644 --- a/.docker/Dockerfile.cli +++ b/.docker/Dockerfile.cli @@ -9,7 +9,7 @@ # # @see https://hub.docker.com/r/uselagoon/php-7.4-cli-drupal/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-cli-drupal -FROM uselagoon/php-8.1-cli-drupal:22.8.0 +FROM uselagoon/php-8.1-cli-drupal:23.3.0 # Add missing variables. # @todo Remove once https://github.com/uselagoon/lagoon/issues/3121 is resolved. @@ -18,18 +18,19 @@ ENV LAGOON_PR_HEAD_BRANCH=$LAGOON_PR_HEAD_BRANCH ARG LAGOON_PR_HEAD_SHA="" ENV LAGOON_PR_HEAD_SHA=$LAGOON_PR_HEAD_SHA -ARG GITHUB_TOKEN="" -ENV GITHUB_TOKEN=$GITHUB_TOKEN - # Add PHP Composer variable to specify the name of the composer.json file. ARG COMPOSER="" ENV COMPOSER=$COMPOSER +ARG GITHUB_TOKEN="" +ENV GITHUB_TOKEN=$GITHUB_TOKEN + # Set default values for environment variables. Any values provided in # docker-compose.yml or .env file will override these values during build stage. ENV WEBROOT=docroot \ COMPOSER_ALLOW_SUPERUSER=1 \ COMPOSER_CACHE_DIR=/tmp/.composer/cache \ + COMPOSER_AUTH="{\"github-oauth\": {\"github.com\": \"$GITHUB_TOKEN\"}}" \ MYSQL_HOST=mariadb \ SIMPLETEST_DB=mysql://drupal:drupal@mariadb/drupal \ SIMPLETEST_BASE_URL=http://nginx:8080 \ @@ -60,7 +61,6 @@ COPY scripts /app/scripts RUN mkdir -p docroot/themes/contrib/civictheme \ && mkdir -p docroot/modules/custom/civictheme_govcms \ && mkdir -p docroot/modules/custom/civictheme_admin \ - && mkdir -p docroot/modules/custom/civictheme_migrate \ && mkdir -p docroot/modules/custom/civictheme_content \ && mkdir -p docroot/modules/custom/civictheme_dev \ && mkdir -p docroot/modules/custom/cs_generated_content @@ -77,7 +77,6 @@ COPY composer.json composer.* .env* auth* /app/ COPY docroot/themes/contrib/civictheme/composer.json /app/docroot/themes/contrib/civictheme/ COPY docroot/modules/custom/civictheme_govcms/composer.json docroot/modules/custom/civictheme_govcms/ COPY docroot/modules/custom/civictheme_admin/composer.json docroot/modules/custom/civictheme_admin/ -COPY docroot/modules/custom/civictheme_migrate/composer.json docroot/modules/custom/civictheme_migrate/ COPY docroot/modules/custom/civictheme_content/composer.json docroot/modules/custom/civictheme_content/ COPY docroot/modules/custom/civictheme_dev/composer.json docroot/modules/custom/civictheme_dev/ COPY docroot/modules/custom/cs_generated_content/composer.json docroot/modules/custom/cs_generated_content/ diff --git a/.docker/Dockerfile.cli.onlytheme b/.docker/Dockerfile.cli.onlytheme index 3bb6c6ffe..8b3a9dd14 100644 --- a/.docker/Dockerfile.cli.onlytheme +++ b/.docker/Dockerfile.cli.onlytheme @@ -8,7 +8,7 @@ # # @see https://hub.docker.com/r/uselagoon/php-7.4-cli-drupal/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-cli-drupal -FROM uselagoon/php-8.1-cli-drupal:22.8.0 +FROM uselagoon/php-8.1-cli-drupal:23.3.0 # Add missing variables. # @todo Remove once https://github.com/uselagoon/lagoon/issues/3121 is resolved. @@ -59,7 +59,6 @@ COPY scripts /app/scripts RUN mkdir -p docroot/themes/contrib/civictheme \ && mkdir -p docroot/modules/custom/civictheme_govcms \ && mkdir -p docroot/modules/custom/civictheme_admin \ - && mkdir -p docroot/modules/custom/civictheme_migrate \ && mkdir -p docroot/modules/custom/civictheme_content \ && mkdir -p docroot/modules/custom/civictheme_dev \ && mkdir -p docroot/modules/custom/cs_generated_content @@ -76,7 +75,6 @@ COPY composer.json composer.* .env* auth* /app/ COPY docroot/themes/contrib/civictheme/composer.json /app/docroot/themes/contrib/civictheme/ COPY docroot/modules/custom/civictheme_govcms/composer.json docroot/modules/custom/civictheme_govcms/ COPY docroot/modules/custom/civictheme_admin/composer.json docroot/modules/custom/civictheme_admin/ -COPY docroot/modules/custom/civictheme_migrate/composer.json docroot/modules/custom/civictheme_migrate/ COPY docroot/modules/custom/civictheme_content/composer.json docroot/modules/custom/civictheme_content/ COPY docroot/modules/custom/civictheme_dev/composer.json docroot/modules/custom/civictheme_dev/ COPY docroot/modules/custom/cs_generated_content/composer.json docroot/modules/custom/cs_generated_content/ diff --git a/.docker/Dockerfile.cli.sibling b/.docker/Dockerfile.cli.sibling index 4bda0bd35..dd7f9e3ef 100644 --- a/.docker/Dockerfile.cli.sibling +++ b/.docker/Dockerfile.cli.sibling @@ -9,7 +9,7 @@ # # @see https://hub.docker.com/r/uselagoon/php-7.4-cli-drupal/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-cli-drupal -FROM uselagoon/php-8.1-cli-drupal:22.8.0 +FROM uselagoon/php-8.1-cli-drupal:23.3.0 # Add missing variables. # @todo Remove once https://github.com/uselagoon/lagoon/issues/3121 is resolved. @@ -60,7 +60,6 @@ COPY scripts /app/scripts RUN mkdir -p docroot/themes/contrib/civictheme \ && mkdir -p docroot/modules/custom/civictheme_govcms \ && mkdir -p docroot/modules/custom/civictheme_admin \ - && mkdir -p docroot/modules/custom/civictheme_migrate \ && mkdir -p docroot/modules/custom/civictheme_content \ && mkdir -p docroot/modules/custom/civictheme_dev \ && mkdir -p docroot/modules/custom/cs_generated_content @@ -77,7 +76,6 @@ COPY composer.json composer.* .env* auth* /app/ COPY docroot/themes/contrib/civictheme/composer.json /app/docroot/themes/contrib/civictheme/ COPY docroot/modules/custom/civictheme_govcms/composer.json docroot/modules/custom/civictheme_govcms/ COPY docroot/modules/custom/civictheme_admin/composer.json docroot/modules/custom/civictheme_admin/ -COPY docroot/modules/custom/civictheme_migrate/composer.json docroot/modules/custom/civictheme_migrate/ COPY docroot/modules/custom/civictheme_content/composer.json docroot/modules/custom/civictheme_content/ COPY docroot/modules/custom/civictheme_dev/composer.json docroot/modules/custom/civictheme_dev/ COPY docroot/modules/custom/cs_generated_content/composer.json docroot/modules/custom/cs_generated_content/ diff --git a/.docker/Dockerfile.mariadb b/.docker/Dockerfile.mariadb index a084c9088..5795a3653 100644 --- a/.docker/Dockerfile.mariadb +++ b/.docker/Dockerfile.mariadb @@ -8,7 +8,7 @@ # @see https://github.com/drevops/mariadb-drupal-data ARG IMAGE -FROM ${IMAGE:-uselagoon/mariadb-drupal:22.4.1} +FROM ${IMAGE:-uselagoon/mariadb-drupal:23.3.0} USER root COPY ./.docker/config/mariadb/my.cnf /etc/my.cnf.d/server.cnf diff --git a/.docker/Dockerfile.nginx-drupal b/.docker/Dockerfile.nginx-drupal index cd96fd33c..096719c02 100644 --- a/.docker/Dockerfile.nginx-drupal +++ b/.docker/Dockerfile.nginx-drupal @@ -6,7 +6,10 @@ FROM ${CLI_IMAGE:-cli} as cli # @see https://hub.docker.com/r/uselagoon/nginx-drupal/tags?page=1 # @see https://github.com/uselagoon/lagoon-images/tree/main/images/nginx-drupal -FROM uselagoon/nginx-drupal:22.4.1 +FROM uselagoon/nginx-drupal:23.3.0 + +COPY ./.docker/config/nginx/. /etc/nginx/conf.d/ +RUN fix-permissions /etc/nginx ENV WEBROOT=docroot diff --git a/.docker/Dockerfile.php b/.docker/Dockerfile.php index a940a8938..8bdb8cf84 100644 --- a/.docker/Dockerfile.php +++ b/.docker/Dockerfile.php @@ -7,6 +7,6 @@ # @see https://hub.docker.com/r/uselagoon/php-7.4-fpm/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-fpm -FROM uselagoon/php-8.1-fpm:22.8.0 +FROM uselagoon/php-8.1-fpm:23.3.0 COPY --from=cli /app /app diff --git a/.docker/config/nginx/drupal/location_prepend_update_php.conf b/.docker/config/nginx/drupal/location_prepend_update_php.conf new file mode 100644 index 000000000..9a3c404bc --- /dev/null +++ b/.docker/config/nginx/drupal/location_prepend_update_php.conf @@ -0,0 +1,6 @@ +### Directives to allow run updates from UI in Drupal. +location ~ ^/update.php { + fastcgi_split_path_info ^(.+?\.php)(|/.*)$; + include /etc/nginx/fastcgi.conf; + fastcgi_pass ${NGINX_FASTCGI_PASS:-php}:9000; +} diff --git a/.env b/.env index 31c89932f..bfc4b0b73 100644 --- a/.env +++ b/.env @@ -202,4 +202,3 @@ DREVOPS_DB_DOWNLOAD_LAGOON_SSH_PORT=22 # Combination of comma-separated values to support multiple deployments: # "artifact","docker", "webhook", "lagoon". DREVOPS_DEPLOY_TYPE=lagoon - diff --git a/.github/workflows/post-issue-comment-to-jira.yml b/.github/workflows/post-issue-comment-to-jira.yml new file mode 100644 index 000000000..a1579f7c2 --- /dev/null +++ b/.github/workflows/post-issue-comment-to-jira.yml @@ -0,0 +1,47 @@ +name: Post issue comment to Jira + +on: + issue_comment: + types: [created] + +jobs: + issue_commented: + if: ${{ !github.event.issue.pull_request }} + runs-on: ubuntu-latest + steps: + - name: Create comment body file + run: echo "${{ github.event.comment.body }}" > ${{ runner.temp }}/_github_workflow/comment.md + + - name: Convert GitHub markdown to Jira markup + uses: docker://pandoc/core:3.1 + with: + args: --from gfm --to jira --output=/github/workflow/comment.jira /github/workflow/comment.md + + - name: Put output to the variable + run: | + echo 'JIRA_CONTENT<> $GITHUB_ENV + cat ${{ runner.temp }}/_github_workflow/comment.jira >> $GITHUB_ENV + echo >> $GITHUB_ENV + echo "----" >> $GITHUB_ENV + echo "GitHub comment: ${{ github.event.comment.html_url }}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + + - name: Login + uses: atlassian/gajira-login@v3 + env: + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + + - name: Find JIRA ticket in the issue body + id: find_key + run: | + jira_id="$(echo "${{ github.event.issue.body }}" | grep -o -E '${{ vars.JIRA_PROJECT_KEY }}\-[0-9]+')" || true + echo "jira_id=$jira_id" >> $GITHUB_OUTPUT + + - name: Comment on Jira issue + uses: atlassian/gajira-comment@v3 + if: ${{ startsWith(steps.find_key.outputs.jira_id, format('{0}-', vars.JIRA_PROJECT_KEY)) }} + with: + issue: ${{ steps.find_key.outputs.jira_id }} + comment: ${{ env.JIRA_CONTENT }} diff --git a/.github/workflows/post-opened-issue-to-jira.yml b/.github/workflows/post-opened-issue-to-jira.yml new file mode 100644 index 000000000..396cecff2 --- /dev/null +++ b/.github/workflows/post-opened-issue-to-jira.yml @@ -0,0 +1,54 @@ +name: Post opened issue to Jira + +on: + issues: + types: [opened] + +jobs: + issue_opened: + runs-on: ubuntu-latest + steps: + - name: Create issue body file + run: echo "${{ github.event.issue.body }}" > ${{ runner.temp }}/_github_workflow/issue.md + + - name: Convert GitHub markdown to Jira markup + uses: docker://pandoc/core:3.1 + with: + args: --from gfm --to jira --output=/github/workflow/issue.jira /github/workflow/issue.md + + - name: Put output to the variable + run: | + echo 'JIRA_CONTENT<> $GITHUB_ENV + cat ${{ runner.temp }}/_github_workflow/issue.jira >> $GITHUB_ENV + echo >> $GITHUB_ENV + echo "----" >> $GITHUB_ENV + echo "GitHub issue: ${{ github.event.issue.html_url }}" >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV + + - name: Login + uses: atlassian/gajira-login@v3 + env: + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + + - name: Create issue + id: create + uses: atlassian/gajira-create@v3 + with: + project: ${{ vars.JIRA_PROJECT_KEY }} + issuetype: Story + summary: "${{ github.event.issue.title }}" + description: ${{ env.JIRA_CONTENT }} + fields: '{"customfield_11600": "${{ github.event.issue.html_url }}"}' + + - name: Append JIRA issue number to GitHub issue + uses: actions-cool/issues-helper@v3 + with: + actions: 'update-issue' + issue-number: ${{ github.event.issue.number }} + body: | +
+ --- + JIRA: ${{ steps.create.outputs.issue }} + update-mode: 'append' diff --git a/.github/workflows/storybook-tests.yml b/.github/workflows/storybook-tests.yml index 1b449cf5d..0e10561fb 100644 --- a/.github/workflows/storybook-tests.yml +++ b/.github/workflows/storybook-tests.yml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v3 with: - node-version: '16.x' + node-version: '18.14' - name: Install dependencies run: npm install working-directory: docroot/themes/contrib/civictheme/civictheme_library diff --git a/.lagoon.env.content-corporate b/.lagoon.env.content-corporate index ebd27fd39..84eba9b66 100644 --- a/.lagoon.env.content-corporate +++ b/.lagoon.env.content-corporate @@ -1,4 +1,4 @@ CIVICTHEME_CONTENT_PROFILE=corporate -CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE=1 -CIVICTHEME_SKIP_SUBTHEME_ACTIVATION=1 -CIVICTHEME_SKIP_LIBRARY_INSTALL=1 +CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=1 +CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=1 +CIVICTHEME_LIBRARY_INSTALL_SKIP=1 diff --git a/.lagoon.env.content-government b/.lagoon.env.content-government index 87609d77b..b9119ce14 100644 --- a/.lagoon.env.content-government +++ b/.lagoon.env.content-government @@ -1,4 +1,4 @@ CIVICTHEME_CONTENT_PROFILE=government -CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE=1 -CIVICTHEME_SKIP_SUBTHEME_ACTIVATION=1 -CIVICTHEME_SKIP_LIBRARY_INSTALL=1 +CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=1 +CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=1 +CIVICTHEME_LIBRARY_INSTALL_SKIP=1 diff --git a/.lagoon.env.content-highereducation b/.lagoon.env.content-highereducation index 85bd05efa..cc7d87b99 100644 --- a/.lagoon.env.content-highereducation +++ b/.lagoon.env.content-highereducation @@ -1,4 +1,4 @@ CIVICTHEME_CONTENT_PROFILE=highereducation -CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE=1 -CIVICTHEME_SKIP_SUBTHEME_ACTIVATION=1 -CIVICTHEME_SKIP_LIBRARY_INSTALL=1 +CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=1 +CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=1 +CIVICTHEME_LIBRARY_INSTALL_SKIP=1 diff --git a/.lagoon.env.release-1-4-3 b/.lagoon.env.release-1-5-0 similarity index 100% rename from .lagoon.env.release-1-4-3 rename to .lagoon.env.release-1-5-0 diff --git a/CI.md b/CI.md index fd7d493e0..fc48060f3 100644 --- a/CI.md +++ b/CI.md @@ -9,14 +9,3 @@ Add `[skip ci]` to the commit subject to skip CI build. Useful for documentation ## SSH Circle CI supports shell access to the build for 120 minutes after the build is finished when the build is started with SSH support. Use "Rerun job with SSH" button in Circle CI UI to start build with SSH support. - -### Features -1. 2 schedules: - 1. Minor and patch versions for critical Drupal core and related packages to run daily. - 2. All versions for all other packages to run weekly. -2. A custom label `dependencies` is added on PR creation. -3. Assignees are added on PR creation. -4. Custom branch prefix (`deps/`) for PRs: - 1. `deps/minor-patch-core` - 2. `deps/all-contrib` - diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 641653562..99bd3a130 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -1,12 +1,34 @@ # Deployment process -## PR environments +This project is deployed to the Salsa Digital hosting Lagoon instance. +Deployments are initiated by the Continuous Integration (CI) process on each +push to the `master`, `develop`, `release/*`, and `feature/*` branches, +provided all tests pass. -1. Code is authored on a local machine by a developer. -2. Once the code is ready, it is pushed to GitHub. A pull request needs to be opened for this code change. -3. The CI "listens" for code changes and will start an automated build. -4. At the end of the build, when all tests have passed, the CI will trigger a deployment to Lagoon. -5. Once deployed, a PR environment will appear with a PR name. - All pending update hooks and other deployment operations will run during deployment. +## Pull Request (PR) Environments -Once PR is closed, the environment will be automatically removed. +1. Developers create code on their local machine. +2. The code is then pushed to GitHub and a pull request is opened for the change. +3. The CI process monitors for code changes and initiates an automated build. +4. Once all tests pass at the end of the build, the CI process triggers a + deployment to Lagoon. +5. A PR environment with the name of the PR is established upon deployment. Any + pending update hooks and other deployment operations are executed during + deployment. + +When a PR is closed, its environment is automatically removed. + +## Content Profile Preview Environments + +Content profiles are employed to capture content for industry-specific demo +sites. Each content profile is automatically deployed to a preview environment +during development (hosted on this project's Lagoon instance) and to a +LaunchPad-based Lagoon instance upon release (handled outside of the +CivicTheme team). + +The development preview environments are redeployed by the CI on each successful +build in the `develop` branch. This ensures the deployability of content profile +sites with each code change. + +For a list of demo site URLs for development sites, refer to the main +[README.md](README.md#content-profiles). diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 0ff57483f..7937ccae1 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,75 +1,103 @@ -CivicTheme theme development ------------------------ - -## Terminology - -- CivicTheme theme - CivicTheme Drupal theme, developed in this repository - and automatically published to [its own repository](https://github.com/salsadigitalauorg/civictheme). -- CivicTheme Library - CivicTheme front-end library, developed in this repository - and automatically published to [its own repository](https://github.com/salsadigitalauorg/civictheme_library). -- Demo theme, consumer theme, reference theme - a theme that uses CivicTheme - Drupal theme as a base theme. -- Reference site, development site - an example site (this repository) that uses - CivicTheme Drupal theme to demonstrate all components. - -## Requirements and constraints - -- CivicTheme theme MAY be used out of the box without any customisations. -- CivicTheme theme MUST NOT be changed for customisations. If customisations are - required - a consumer theme MUST be created and used as a sub-theme of the CivicTheme theme. -- CivicTheme theme MUST be fully compatible with GovCMS 9 SaaS: - - MUST NOT have any modules - - MUST NOT have any libraries - - MUST NOT rely on GovCMS content structures - - MUST assume that FE compilation happens on local machine and then committed - to repository -- MUST provide a static version of compiled Storybook for the CivicTheme reference - site (this site). -- MUST provide a static version of compiled Storybook for the CivicTheme-based - consumer site. - -## Agreements - -- Config is stored in the `civictheme` theme's `config/install` and - `config/optional` directories. -- Content types are prefixed with `civictheme_`. -- Field names are prefixed with `field_c_`. - -## Custom Drupal site building scripts - -Scripts in `scripts/custom` run after site is installed from profile in the -order they are numbered. +# CivicTheme Drupal theme development -## Compiling theme assets +This document provides instructions on how to interact with this development +repository. -To compile all assets in all themes: `ahoy fe` +Please refer to the primary [README.md](README.md#local-environment-setup) for +detailed information on setting up your local development environment. + +Before starting, ensure you have reviewed the documentation for +[UI kit](https://docs.civictheme.io/ui-kit) and +[Drupal theme](https://docs.civictheme.io/drupal-theme). + +## Build process + +The following steps outline the build process: + +1. Construct a fresh Drupal 9 site from the GovCMS Drupal profile. Utilize + `ahoy install-site` for a rebuild. +2. Activate additional modules needed for development by installing the + `civictheme_dev` module. +3. Enable the `civictheme` theme and import its configuration. +4. Generate a `civictheme_demo` sub-theme using the provided scaffolding script + and set it as the default theme. +5. Activate the `civictheme_admin` module for enhancements in the admin UI. +6. Activate the `civictheme_govcms` module to discard pre-configured GovCMS + content types. +7. Enable the `civictheme_content` module to incorporate default content into + the installation. + +### Custom Drupal Site Building Scripts -For development: -1. `civictheme_library` +Scripts located in `scripts/custom` execute after the site installation from +the profile, following the order of their numbering. - cd docroot/themes/contrib/civictheme/civictheme_library - npm run build +By default, the site: -2. `civictheme` +- Installs Drupal 9. +- Installs the `govcms` profile. +- Installs the CivicTheme Drupal theme. +- Creates and installs the CivicTheme Demo sub-theme. +- Provides demo content. - cd docroot/themes/contrib/civictheme - npm run build +Override the default behavior using these environment variables: -2. `civictheme_demo` +- `DREVOPS_DRUPAL_VERSION=10` - Installs the Drupal 10 version. +- `DREVOPS_DRUPAL_PROFILE=minimal` - Uses the `minimal` profile for installation. + For Drupal 10, this becomes the enforced default. +- `CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=1` - Omits activation of the demo + sub-theme. +- `CIVICTHEME_LIBRARY_INSTALL_SKIP=1` - Bypasses the UI kit library + installation. The pre-compiled assets are utilized instead. +- `CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=1` - Skips the creation of demo + content. - cd docroot/themes/custom/civictheme_demo - npm run build +These variables can be set prior to the `ahoy install-site` command or added +to `.env.local` file to preserve this behavior (run `ahoy up` to apply +without full rebuild). -## Configuration export +Example: + +```bash +# Install Drupal 10 site using `minimal` profile with CivicTheme Demo +# sub-theme and provision demo content. +DREVOPS_DRUPAL_VERSION=10 ahoy install-site + +# Install Drupal 10 site using `minimal` profile with CivicTheme. +# Do not create a sub-theme and do not provision demo content. +DREVOPS_DRUPAL_VERSION=10 CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=1 CIVICTHEME_LIBRARY_INSTALL_SKIP=1 CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=1 ahoy install-site +``` + +## Compiling theme assets + +To compile all assets in all themes: `ahoy fe` -Use shortcut command every time there is a configuration change to validate that -all new, updated or deleted configuration was captured +```bash - ahoy export-config +# UI kit +cd docroot/themes/contrib/civictheme/civictheme_library +npm run build -Configuration is captured using Config Devel module for: -- development modules into `civictheme_dev` module's `config/install` and `config/optional` directories. -- theme into CivicTheme Drupal theme's `config/install` and `config/optional` directories. +# CivicTheme Drupal theme +cd docroot/themes/contrib/civictheme +npm run build + +# CivicTheme Drupal Demo theme +cd docroot/themes/custom/civictheme_demo +npm run build +``` + +## Working with configurations + +Configuration is captured using [Config Devel](https://www.drupal.org/project/config_devel) module for: +- CivicTheme theme into `config/install` and `config/optional` directories. +- Development `civictheme_dev` module's `config/install` and `config/optional` directories. + +### Exporting configurations + +```bash +ahoy export-config +``` To add new configuration to the export, add configuration name to `civictheme.info.yml`. @@ -78,23 +106,48 @@ to `config/default` and using file names without `.yml` extension. Do not forget to remove all exported configuration files from `config/default` or the next site install will fail. But this all is already handled in `ahoy export-config`. -Note that configuration for blocks in `civictheme` will be copied to `civictheme_demo` on +Note: Configuration for blocks in `civictheme` will be copied to `civictheme_demo` on installation of `civictheme_demo`. We do not capture configuration for `civictheme_demo`. Exclude certain configuration from automatically be added to `civictheme.info.yml` by adding records to [theme_excluded_configs.txt](./scripts/theme_excluded_configs.txt). Note that wildcards are supported. -## Demo content export +### Validating configurations + +Configuration validation allows to ensure that all configuration is captured +correctly and that there is no conflicting or duplicating configuration was +added to the codebase. + +```bash +ahoy lint-config +``` + +## Working with content profiles + +Content profiles are used to capture content for the industry-specific demo +sites. Each content profile is a separate submodule of `civictheme_content` +module that contains content and configuration required to build a demo site. + +See main [README.md](README.md#content-profiles) for a list of demo site URLs. + +### Updating content + +The workflow to update the content within a content profile consists of 3 steps: - # Set profile name. - export CIVICTHEME_CONTENT_PROFILE=default +1. Install a site with the desired content profile. +2. Making changes +3. Exporting content and configuration. - # Prepare content with a clean installation. - DREVOPS_DRUPAL_PROFILE=minimal CIVICTHEME_SKIP_SUBTHEME_ACTIVATION=1 CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE=1 ahoy install-site +These steps are captured below: +```bash +# Step 1: Install a site with the desired content profile. +export CIVICTHEME_CONTENT_PROFILE=default +DREVOPS_DRUPAL_PROFILE=minimal CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=1 CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=1 ahoy install-site - # Export content. - ahoy export-content +# Step 2: Make changes. +# ... - # Export config. - ahoy drush cde civictheme_content_${CIVICTHEME_CONTENT_PROFILE:-default} +# Step 3: Export content and configuration. +ahoy export-content +``` diff --git a/README.md b/README.md index ab9c6eb56..a70b7ac51 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,6 @@ Mono-repo used to maintain CivicTheme and accompanying modules that are automati Copy `default.docker-compose.override.yml` to `docker-compose.override.yml`. -## Build process - -1. Builds fresh site from GovCMS Drupal profile. Use `ahoy install-site` to rebuild. -2. Enables additional modules required for development by installing `civictheme_dev` module. -3. Enables `civictheme` theme and imports its configuration. -4. Creates `civictheme_demo` sub-theme using provided scaffolding script and sets it as a default theme. -5. Enables `civictheme_admin` module for admin UI enhancements. -6. Enables `civictheme_govcms` module to remove out-of-the-box GovCMS content types. -7. Enables `civictheme_content` module to add default content to installation. -8. Enables `civictheme_migrate` module to enable migrations. - ## Development Please refer to [development documentation](DEVELOPMENT.md). @@ -71,9 +60,12 @@ Please refer to [FAQs](FAQs.md). ## More about CivicTheme -- [CivicTheme CMS-agnostic library](https://github.com/salsadigitalauorg/civictheme_library) +- [CivicTheme UI kit](https://github.com/salsadigitalauorg/civictheme_library) - [CivicTheme Drupal theme](https://github.com/salsadigitalauorg/civictheme) - [Default content for CivicTheme](https://github.com/salsadigitalauorg/civictheme_content) - [Admin adjustments for CivicTheme Drupal theme](https://github.com/salsadigitalauorg/civictheme_admin) -- [Migrations for CivicTheme Drupal theme](https://github.com/salsadigitalauorg/civictheme_migrate) - [GovCMS adjustments for CivicTheme Drupal theme](https://github.com/salsadigitalauorg/civictheme_govcms) + +--- + +For additional information, please refer to the [Documentation site](https://docs.civictheme.io/) diff --git a/RELEASING.md b/RELEASING.md index d9cfc86e5..121417102 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -3,6 +3,7 @@ [git-flow](https://danielkummer.github.io/git-flow-cheatsheet/) is used to manage releases. ## Release outcome + 1. Release branch exists as `release/X.Y.Z` in GitHub repository. 2. Release tag exists as `X.Y.Z` in GitHub repository. 3. The `HEAD` of the `master` branch has `X.Y.Z` tag. @@ -10,13 +11,29 @@ 5. There are no PRs in GitHub related to the release. ## Version Number + Release versions are numbered according to [Semantic Versioning](https://semver.org/). Given a version number X.Y.Z: * X = Major release version. No leading zeroes. * Y = Minor Release version. No leading zeroes. * Z = Hotfix/patch version. No leading zeroes. - Examples: * Correct: `0.1.0`, `1.0.0` , `1.0.1` , `1.0.10` * Incorrect: `0.1` , `1` , `1.0` , `1.0.01` , `1.0.010` + +## Multi-repository releases + +This repository is a mono-repository, meaning that it contains multiple packages +that are published to other repositories on every commit to `develop` branch. + +Releasing to this repository will not create releases in other repositories. +This was done purposefully to avoid creating releases in other repositories +when there are no changes in them and to allow having own versions in published +repositories as changes in this repository do not necessarily mean that there +are changes in published repositories. + +Release log of this repository must contain all the changes that were made to +all the packages that are published from this repository. +Parts of the release log can then be manually copied to the release logs of +published repositories. diff --git a/TESTING.md b/TESTING.md index 54786dcf3..e0dc52f4f 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1,6 +1,13 @@ # Testing -## Behat tests +## Authoring tests + +This repository uses different types of tests: +1. Unit, Functional and Kernel tests for Drupal modules and themes. +2. Bats tests to test tooling and scripts. +3. Behat tests to test overall end-to-end Drupal site functionality. + +### Behat tests Behat configuration uses multiple extensions: - [Drupal Behat Extension](https://github.com/jhedstrom/drupalextension) - Drupal integration layer. Allows to work with Drupal API from within step definitions. - [Behat Screenshot Extension](https://github.com/integratedexperts/behat-screenshot) - Behat extension and a step definition to create HTML and image screenshots on demand or test fail. @@ -8,3 +15,54 @@ Behat configuration uses multiple extensions: - `FeatureContext` - Site-specific context with custom step definitions. Add `@skipped` tag to failing tests if you would like to skip them. + +### Authoring schema update tests + +> Available from CivicTheme 1.5 + +CivicTheme provides configuration for content types, fields and site settings. +These can change with versions of the theme. To ensure that the changes are +applied correctly in the consumer site's database, we use +[schema update tests](docroot/themes/contrib/civictheme/tests/src/Functional/Update). + +These types of tests require a database of the site with the previous +version of the module or theme installed to be available to the test. + +In CivicTheme, we use "bare" and "filled" database dumps to test schema updates: +- "bare" database dump contains only the schema and no content. +- "filled" database dump contains the schema and the content. + +For simplicity, we only test on the `minimal` profile and the latest Drupal version. + +To update the database dumps: + +1. Checkout this repository at the specific CivicTheme release (1.3 or newer). + Note that some of the environment variables are only available in the latest + version of the repository and you may need to adjust them below to the version + you are using (e.g. `SKIP_LIBRARY_INSTALL` was in version `1.3.2` and now is + called `CIVICTHEME_LIBRARY_INSTALL_SKIP` in `1.5.0`). +2. Update "bare" database dump: + ```bash + export CIVICTHEME_VERSION= # update to your version + export DREVOPS_DRUPAL_VERSION=10 + export DREVOPS_DRUPAL_VERSION_FULL=10.0.0-rc1 + export DREVOPS_DRUPAL_PROFILE=minimal + DREVOPS_DRUPAL_INSTALL_OPERATIONS_SKIP=1 ahoy build + ahoy cli "DREVOPS_DRUPAL_PROFILE=minimal scripts/custom/drupal-install-site-1-enable-modules.sh" + mkdir -p docroot/themes/contrib/civictheme/tests/fixtures/updates + ahoy cli php docroot/core/scripts/dump-database-d8-mysql.php | gzip > "docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_${DREVOPS_DRUPAL_VERSION_FULL}.${DREVOPS_DRUPAL_PROFILE}.civictheme_${CIVICTHEME_VERSION}.bare.php.gz" + ``` +3. Update "filled" database dump: + ```bash + export CIVICTHEME_VERSION= # update to your version + export DREVOPS_DRUPAL_VERSION=10 + export DREVOPS_DRUPAL_VERSION_FULL=10.0.0-rc1 + export DREVOPS_DRUPAL_PROFILE=minimal + DREVOPS_DRUPAL_INSTALL_OPERATIONS_SKIP=1 ahoy build + ahoy cli "DREVOPS_DRUPAL_PROFILE=minimal scripts/custom/drupal-install-site-1-enable-modules.sh" + ahoy cli "drush php:eval -v \"require_once '/app/docroot/themes/contrib/civictheme/theme-settings.provision.inc'; civictheme_provision_cli();\"" + ahoy cli "GENERATED_CONTENT_CREATE=1 drush pm:enable cs_generated_content -y" + ahoy cli "GENERATED_CONTENT_DELETE_SKIP=1 drush pm:uninstall cs_generated_content generated_content -y" + mkdir -p docroot/themes/contrib/civictheme/tests/fixtures/updates + ahoy cli php docroot/core/scripts/dump-database-d8-mysql.php | gzip > "docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_${DREVOPS_DRUPAL_VERSION_FULL}.${DREVOPS_DRUPAL_PROFILE}.civictheme_${CIVICTHEME_VERSION}.filled.php.gz" + ``` diff --git a/composer.d10.dist.json b/composer.d10.dist.json new file mode 100644 index 000000000..1f24b5f4b --- /dev/null +++ b/composer.d10.dist.json @@ -0,0 +1,200 @@ +{ + "name": "yourorg/yoursite", + "description": "Example configuration to run CivicTheme on Drupal 10", + "license": "proprietary", + "require": { + "php": ">=8.1", + "composer/installers": "^2.1", + "cweagans/composer-patches": "^1.7", + "drupal/civictheme": "^1.4", + "drupal/ckeditor": "^1.0", + "drupal/config_update": "^2@alpha", + "drupal/core-composer-scaffold": "^10", + "drupal/core-project-message": "^10", + "drupal/core-recommended": "^10", + "drupal/environment_indicator": "^4.0", + "drupal/google_analytics": "^4.0", + "drupal/jquery_ui": "^1.6", + "drupal/jquery_ui_autocomplete": "^2", + "drupal/jquery_ui_menu": "^2", + "drupal/lagoon_logs": "^2.0", + "drupal/linkit": "^6.0@beta", + "drupal/pathauto": "^1.11", + "drupal/redirect": "^1.8", + "drupal/simple_sitemap": "^4.1", + "drush/drush": "^11", + "oomphinc/composer-installers-extender": "^2.0", + "salsadigitalauorg/civictheme_admin": "^1.1", + "vlucas/phpdotenv": "^5.4", + "webflo/drupal-finder": "^1.2", + "webmozart/path-util": "^2.3", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "require-dev": { + "behat/behat": "^3.10", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "drevops/behat-format-progress-fail": "^1", + "drevops/behat-screenshot": "^1", + "drevops/behat-steps": "^1", + "drupal/core-dev": "^10", + "drupal/drupal-extension": "dev-feature/drupal-10", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcompatibility/php-compatibility": "^9.3", + "phpmd/phpmd": "^2.12", + "phpspec/prophecy-phpunit": "^2", + "pyrech/composer-changelogs": "^1.8", + "slevomat/coding-standard": "7.2.1" + }, + "autoload": { + "classmap": [ + "scripts/composer/" + ] + }, + "minimum-stability": "dev", + "prefer-stable": true, + "config": { + "platform": { + "php": "8.1.16" + }, + "process-timeout": 0, + "sort-packages": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "composer/installers": true, + "cweagans/composer-patches": true, + "drupal/console-extend-plugin": true, + "drupal/core-composer-scaffold": true, + "drupal/core-project-message": true, + "oomphinc/composer-installers-extender": true, + "pyrech/composer-changelogs": true, + "zaporylie/composer-drupal-optimizations": true, + "phpstan/extension-installer": true, + "wikimedia/composer-merge-plugin": true + } + }, + "conflict": { + "drupal/drupal": "*" + }, + "repositories": { + "drupal/components": { + "type": "package", + "package": { + "name": "drupal/components", + "type": "drupal-module", + "version": "2.4", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/components.git", + "reference": "8e184d5f98e56370cde9191f2810c913268b3294" + } + } + }, + "drupal/drupal-driver": { + "type": "vcs", + "url": "https://github.com/drevops/DrupalDriver" + }, + "drupal/drupal-extension": { + "type": "vcs", + "url": "https://github.com/drevops/drupalextension" + }, + "drupal": { + "type": "composer", + "url": "https://packages.drupal.org/8" + }, + "asset-packagist": { + "type": "composer", + "url": "https://asset-packagist.org" + } + }, + "scripts": { + "pre-install-cmd": [ + "DrupalProject\\composer\\ScriptHandler::checkComposerVersion" + ], + "pre-update-cmd": [ + "DrupalProject\\composer\\ScriptHandler::checkComposerVersion" + ], + "post-install-cmd": [ + "DrupalProject\\composer\\ScriptHandler::createRequiredFiles", + "Utilities\\composer\\DrupalSettings::create" + ], + "post-update-cmd": [ + "DrupalProject\\composer\\ScriptHandler::createRequiredFiles", + "Utilities\\composer\\DrupalSettings::create" + ] + }, + "extra": { + "composer-exit-on-patch-failure": true, + "patchLevel": { + "drupal/core": "-p2" + }, + "patches": { + "drupal/core": { + "Builds failing on missing layout column plugin": "https://www.drupal.org/files/issues/2023-07-16/3204271-20-missing-layout-exception.patch" + } + }, + "drupal-scaffold": { + "locations": { + "web-root": "./docroot" + }, + "file-mapping": { + "[project-root]/.editorconfig": false, + "[project-root]/.gitattributes": false, + "[web-root]/.htaccess": false, + "[web-root]/.ht.router.php": false, + "[web-root]/example.gitignore": false, + "[web-root]/INSTALL.txt": false, + "[web-root]/README.txt": false, + "[web-root]/sites/example.settings.local.php": false, + "[web-root]/sites/example.sites.php": false, + "[web-root]/web.config": false + } + }, + "enable-patching": true, + "installer-paths": { + "docroot/core": [ + "type:drupal-core" + ], + "docroot/libraries/{$name}": [ + "type:drupal-library", + "type:bower-asset", + "type:npm-asset" + ], + "docroot/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "docroot/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "docroot/themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "drush/Commands/contrib/{$name}": [ + "type:drupal-drush" + ], + "docroot/modules/custom/{$name}": [ + "type:drupal-custom-module" + ], + "docroot/themes/custom/{$name}": [ + "type:drupal-custom-theme" + ] + }, + "installer-types": [ + "bower-asset", + "npm-asset" + ], + "preserve-paths": [ + "docroot/modules/custom", + "docroot/themes/custom", + "docroot/drush", + "docroot/sites/default/settings.php", + "docroot/sites/default/services.yml", + "docroot/sites/default/default.settings.local.php", + "docroot/sites/default/default.services.local.yml", + "docroot/sites/default/settings.local.php", + "docroot/sites/default/services.local.yml", + "docroot/sites/default/files", + "docroot/robots.txt", + "docroot/.htaccess" + ] + } +} diff --git a/composer.d10.json b/composer.d10.json index 1feb5920a..a916c34ca 100644 --- a/composer.d10.json +++ b/composer.d10.json @@ -6,14 +6,11 @@ "php": ">=8.1", "composer/installers": "^2", "cweagans/composer-patches": "^1.7", - "drupal/ckeditor": "^1.0", + "drupal/core": "10.0", "drupal/core-composer-scaffold": "^10", "drupal/core-project-message": "^10", "drupal/core-recommended": "^10", - "drupal/jquery_ui": "^1.6", - "drupal/jquery_ui_autocomplete": "^2", - "drupal/jquery_ui_menu": "^2", - "drupal/linkit": "^6.0@beta", + "drupal/search_api": "^1.29", "drush/drush": "^11", "oomphinc/composer-installers-extender": "^2.0", "vlucas/phpdotenv": "^5.1", @@ -71,84 +68,6 @@ "drupal/drupal": "*" }, "repositories": { - "drupal/config_ignore": { - "type": "package", - "package": { - "name": "drupal/config_ignore", - "type": "drupal-module", - "version": "2.3", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/config_ignore.git", - "reference": "bbdb8d39d970ecde407c658dabc7fdb21c97947f" - } - } - }, - "drupal/config_devel": { - "type": "package", - "package": { - "name": "drupal/config_devel", - "type": "drupal-module", - "version": "1.8", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/issue/config_devel-3296836.git", - "reference": "2cd5688e9c3845b7dc47eb2beab757077328e7f1" - } - } - }, - "drupal/components": { - "type": "package", - "package": { - "name": "drupal/components", - "type": "drupal-module", - "version": "2.4", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/components.git", - "reference": "8e184d5f98e56370cde9191f2810c913268b3294" - } - } - }, - "drupal/linkit": { - "type": "package", - "package": { - "name": "drupal/linkit", - "type": "drupal-module", - "version": "6.0.0-beta3", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "d95a39274cb73b0096e16fbbc9d5abe80e790c79" - } - } - }, - "drupal/migrate_file": { - "type": "package", - "package": { - "name": "drupal/migrate_file", - "type": "drupal-module", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/issue/migrate_file-3288621.git", - "reference": "9b971e83cc54acc84166bee794a82b577a161804" - } - } - }, - "drupal/webform": { - "type": "package", - "package": { - "name": "drupal/webform", - "type": "drupal-module", - "version": "6.2", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/issue/webform-3290604.git", - "reference": "46d9dff50f9bb00ba2031d7807d8e5cf06220369" - } - } - }, "drupal/drupal-driver": { "type": "vcs", "url": "https://github.com/drevops/DrupalDriver" @@ -203,7 +122,7 @@ }, "patches": { "drupal/core": { - "Builds failing on missing layout column plugin": "https://www.drupal.org/files/issues/2021-04-12/D9-3204271-2-missing-layout-exception.patch" + "Builds failing on missing layout column plugin": "https://www.drupal.org/files/issues/2023-07-16/3204271-20-missing-layout-exception.patch" } }, "drupal-scaffold": { @@ -213,11 +132,13 @@ "file-mapping": { "[project-root]/.editorconfig": false, "[project-root]/.gitattributes": false, - "[web-root]/.htaccess": false, "[web-root]/.ht.router.php": false, - "[web-root]/example.gitignore": false, + "[web-root]/.htaccess": false, "[web-root]/INSTALL.txt": false, "[web-root]/README.txt": false, + "[web-root]/example.gitignore": false, + "[web-root]/sites/default/default.services.yml": false, + "[web-root]/sites/default/default.settings.php": false, "[web-root]/sites/example.settings.local.php": false, "[web-root]/sites/example.sites.php": false, "[web-root]/web.config": false @@ -269,7 +190,6 @@ "require": [ "docroot/themes/contrib/civictheme/composer.json", "docroot/modules/custom/civictheme_admin/composer.json", - "docroot/modules/custom/civictheme_migrate/composer.json", "docroot/modules/custom/civictheme_content/composer.json", "docroot/modules/custom/civictheme_dev/composer.json", "docroot/modules/custom/cs_generated_content/composer.json" diff --git a/composer.d10.lock b/composer.d10.lock index d2eab566e..8a8df0851 100644 --- a/composer.d10.lock +++ b/composer.d10.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "49a1d36b275b11f49f6f98095e035f1f", + "content-hash": "62f98b7513ee22f8064028d50280c3ae", "packages": [ { "name": "asm89/stack-cors", @@ -351,25 +351,25 @@ }, { "name": "consolidation/annotated-command", - "version": "4.8.2", + "version": "4.9.1", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "7f5dd1aafb93a10593ed70f3caa6a0cd5a32f0e3" + "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/7f5dd1aafb93a10593ed70f3caa6a0cd5a32f0e3", - "reference": "7f5dd1aafb93a10593ed70f3caa6a0cd5a32f0e3", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", + "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", "shasum": "" }, "require": { - "consolidation/output-formatters": "^4.1.1", + "consolidation/output-formatters": "^4.3.1", "php": ">=7.1.3", - "psr/log": "^1|^2|^3", - "symfony/console": "^4.4.8|^5|^6", - "symfony/event-dispatcher": "^4.4.8|^5|^6", - "symfony/finder": "^4.4.8|^5|^6" + "psr/log": "^1 || ^2 || ^3", + "symfony/console": "^4.4.8 || ^5 || ^6", + "symfony/event-dispatcher": "^4.4.8 || ^5 || ^6", + "symfony/finder": "^4.4.8 || ^5 || ^6" }, "require-dev": { "composer-runtime-api": "^2.0", @@ -401,9 +401,9 @@ "description": "Initialize Symfony Console commands from annotated command class methods.", "support": { "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/4.8.2" + "source": "https://github.com/consolidation/annotated-command/tree/4.9.1" }, - "time": "2023-03-11T19:32:28+00:00" + "time": "2023-05-20T04:19:01+00:00" }, { "name": "consolidation/config", @@ -569,16 +569,16 @@ }, { "name": "consolidation/output-formatters", - "version": "4.2.4", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "b377db7e9435c50c4e019c26ec164b547e754ca0" + "reference": "06711568b4cd169700ff7e8075db0a9a341ceb58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/b377db7e9435c50c4e019c26ec164b547e754ca0", - "reference": "b377db7e9435c50c4e019c26ec164b547e754ca0", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/06711568b4cd169700ff7e8075db0a9a341ceb58", + "reference": "06711568b4cd169700ff7e8075db0a9a341ceb58", "shasum": "" }, "require": { @@ -617,9 +617,9 @@ "description": "Format text by applying transformations provided by plug-in formatters.", "support": { "issues": "https://github.com/consolidation/output-formatters/issues", - "source": "https://github.com/consolidation/output-formatters/tree/4.2.4" + "source": "https://github.com/consolidation/output-formatters/tree/4.3.2" }, - "time": "2023-02-24T03:39:10+00:00" + "time": "2023-07-06T04:45:41+00:00" }, { "name": "consolidation/robo", @@ -696,16 +696,16 @@ }, { "name": "consolidation/self-update", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/consolidation/self-update.git", - "reference": "714b09fdf0513f83292874bb12de0566066040c2" + "reference": "972a1016761c9b63314e040836a12795dff6953a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/self-update/zipball/714b09fdf0513f83292874bb12de0566066040c2", - "reference": "714b09fdf0513f83292874bb12de0566066040c2", + "url": "https://api.github.com/repos/consolidation/self-update/zipball/972a1016761c9b63314e040836a12795dff6953a", + "reference": "972a1016761c9b63314e040836a12795dff6953a", "shasum": "" }, "require": { @@ -745,9 +745,9 @@ "description": "Provides a self:update command for Symfony Console applications.", "support": { "issues": "https://github.com/consolidation/self-update/issues", - "source": "https://github.com/consolidation/self-update/tree/2.1.0" + "source": "https://github.com/consolidation/self-update/tree/2.2.0" }, - "time": "2023-02-21T19:33:55+00:00" + "time": "2023-03-18T01:37:41+00:00" }, { "name": "consolidation/site-alias", @@ -1139,26 +1139,29 @@ }, { "name": "drupal/ckeditor", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/ckeditor.git", - "reference": "1.0.1" + "reference": "1.0.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/ckeditor-1.0.1.zip", - "reference": "1.0.1", - "shasum": "d3dd8bfb2301b749599ba48cf76208becdf0eeb3" + "url": "https://ftp.drupal.org/files/projects/ckeditor-1.0.2.zip", + "reference": "1.0.2", + "shasum": "fec2ca9ad852a00c7b9584cb6040dc860364c481" }, "require": { "drupal/core": "^9.4 || ^10" }, + "require-dev": { + "drupal/classy": "*" + }, "type": "drupal-module", "extra": { "drupal": { - "version": "1.0.1", - "datestamp": "1662977541", + "version": "1.0.2", + "datestamp": "1687261951", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -1231,23 +1234,116 @@ }, { "name": "drupal/components", - "version": "2.4", + "version": "3.0.0-beta3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/components.git", - "reference": "8e184d5f98e56370cde9191f2810c913268b3294" + "reference": "3.0.0-beta3" }, - "type": "drupal-module" + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/components-3.0.0-beta3.zip", + "reference": "3.0.0-beta3", + "shasum": "47ced4332f0a655ca38ae1b54e97a8e78d59f0bc" + }, + "require": { + "drupal/core": "^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "3.0.0-beta3", + "datestamp": "1651759488", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "JohnAlbin", + "homepage": "https://www.drupal.org/user/32095", + "email": "virtually.johnalbin@gmail.com" + }, + { + "name": "RobLoach", + "homepage": "https://www.drupal.org/user/61114" + } + ], + "description": "Registers folders of components defined by your theme or module as Twig namespaces", + "homepage": "https://drupal.org/project/components", + "support": { + "source": "https://git.drupalcode.org/project/components" + } }, { "name": "drupal/config_devel", - "version": "1.8", + "version": "1.9.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/issue/config_devel-3296836.git", - "reference": "2cd5688e9c3845b7dc47eb2beab757077328e7f1" + "url": "https://git.drupalcode.org/project/config_devel.git", + "reference": "8.x-1.9" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_devel-8.x-1.9.zip", + "reference": "8.x-1.9", + "shasum": "a9cb90575ec854b8d8adb4633a0ddc47c490ca87" + }, + "require": { + "drupal/core": "^9.3 || ^10" }, - "type": "drupal-module" + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.9", + "datestamp": "1678264813", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "alexpott", + "homepage": "https://www.drupal.org/user/157725" + }, + { + "name": "benjy", + "homepage": "https://www.drupal.org/user/1852732" + }, + { + "name": "chx", + "homepage": "https://www.drupal.org/user/9446" + }, + { + "name": "joachim", + "homepage": "https://www.drupal.org/user/107701" + }, + { + "name": "nedjo", + "homepage": "https://www.drupal.org/user/4481" + }, + { + "name": "vijaycs85", + "homepage": "https://www.drupal.org/user/93488" + } + ], + "description": "Helps developers work with configuration.", + "homepage": "https://www.drupal.org/project/config_devel", + "support": { + "source": "https://git.drupalcode.org/project/config_devel" + } }, { "name": "drupal/config_filter", @@ -1320,26 +1416,141 @@ }, { "name": "drupal/config_ignore", - "version": "2.3", + "version": "2.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_ignore.git", - "reference": "bbdb8d39d970ecde407c658dabc7fdb21c97947f" + "reference": "8.x-2.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.4.zip", + "reference": "8.x-2.4", + "shasum": "e0e45dde2d6927c5d26de59f352792fb6cf26554" }, - "type": "drupal-module" + "require": { + "drupal/config_filter": "^1 || ^2", + "drupal/core": "^8 || ^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.4", + "datestamp": "1676045435", + "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": "Tommy Lynge Jørgensen", + "homepage": "https://www.drupal.org/u/tlyngej", + "email": "tlyngej@gmail.com", + "role": "Maintainer" + }, + { + "name": "Fabian Bircher", + "homepage": "https://www.drupal.org/u/bircher", + "role": "Maintainer" + }, + { + "name": "tlyngej", + "homepage": "https://www.drupal.org/user/413139" + } + ], + "description": "Ignore certain configuration during import.", + "homepage": "http://drupal.org/project/config_ignore", + "support": { + "source": "https://git.drupalcode.org/project/config_ignore", + "issues": "https://drupal.org/project/config_ignore", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/config_inspector", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/config_inspector.git", + "reference": "2.1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_inspector-2.1.2.zip", + "reference": "2.1.2", + "shasum": "bc6269241e357d7dfd15750c8d8392102ec9f880" + }, + "require": { + "drupal/core": "^9.2 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.1.2", + "datestamp": "1686168059", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "aspilicious", + "homepage": "https://www.drupal.org/user/172527" + }, + { + "name": "Gábor Hojtsy", + "homepage": "https://www.drupal.org/user/4166" + }, + { + "name": "Jose Reyero", + "homepage": "https://www.drupal.org/user/4299" + }, + { + "name": "vijaycs85", + "homepage": "https://www.drupal.org/user/93488" + }, + { + "name": "Wim Leers", + "homepage": "https://www.drupal.org/user/99777" + } + ], + "description": "Provides a configuration data and structure inspector tool", + "homepage": "https://drupal.org/project/config_inspector", + "support": { + "source": "https://cgit.drupalcode.org/config_inspector", + "issues": "https://drupal.org/project/issues/config_inspector", + "irc": "irc://irc.freenode.org/drupal-contribute" + } }, { "name": "drupal/core", - "version": "10.0.9", + "version": "10.0.0", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "1299803690cf035d144c468bab6b6bf7e03aca49" + "reference": "5f91bde296ae3a68c448fc35b47bb3eacb700e2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/1299803690cf035d144c468bab6b6bf7e03aca49", - "reference": "1299803690cf035d144c468bab6b6bf7e03aca49", + "url": "https://api.github.com/repos/drupal/core/zipball/5f91bde296ae3a68c448fc35b47bb3eacb700e2b", + "reference": "5f91bde296ae3a68c448fc35b47bb3eacb700e2b", "shasum": "" }, "require": { @@ -1482,22 +1693,22 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.0.9" + "source": "https://github.com/drupal/core/tree/10.0.0" }, - "time": "2023-05-03T09:53:20+00:00" + "time": "2022-12-15T17:27:51+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.0.9", + "version": "10.1.1", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", - "reference": "22c8b48a5b34864bf433ab3eb6ee7670191c0468" + "reference": "1ccd7db5ff8a5425b5bbba9b9a05e366363c0a51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/22c8b48a5b34864bf433ab3eb6ee7670191c0468", - "reference": "22c8b48a5b34864bf433ab3eb6ee7670191c0468", + "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/1ccd7db5ff8a5425b5bbba9b9a05e366363c0a51", + "reference": "1ccd7db5ff8a5425b5bbba9b9a05e366363c0a51", "shasum": "" }, "require": { @@ -1532,22 +1743,22 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.0.9" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.1.1" }, - "time": "2023-04-30T16:15:41+00:00" + "time": "2023-04-30T16:15:32+00:00" }, { "name": "drupal/core-project-message", - "version": "10.0.9", + "version": "10.1.1", "source": { "type": "git", "url": "https://github.com/drupal/core-project-message.git", - "reference": "b4bb5b4c67242def27c2abf5892e5d9bfb7d08f1" + "reference": "59b4475f01debd9a0f173938a06189982c8ebffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-project-message/zipball/b4bb5b4c67242def27c2abf5892e5d9bfb7d08f1", - "reference": "b4bb5b4c67242def27c2abf5892e5d9bfb7d08f1", + "url": "https://api.github.com/repos/drupal/core-project-message/zipball/59b4475f01debd9a0f173938a06189982c8ebffd", + "reference": "59b4475f01debd9a0f173938a06189982c8ebffd", "shasum": "" }, "require": { @@ -1573,22 +1784,22 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-project-message/tree/10.0.9" + "source": "https://github.com/drupal/core-project-message/tree/10.1.1" }, - "time": "2022-07-01T08:33:05+00:00" + "time": "2022-07-01T08:32:39+00:00" }, { "name": "drupal/core-recommended", - "version": "10.0.9", + "version": "10.0.0", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "1584a4bbb5d72133a5ce2fd711254dea80a647dc" + "reference": "21e071da21d0ba2f3be6b0ca6af6944f0cf45d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/1584a4bbb5d72133a5ce2fd711254dea80a647dc", - "reference": "1584a4bbb5d72133a5ce2fd711254dea80a647dc", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/21e071da21d0ba2f3be6b0ca6af6944f0cf45d31", + "reference": "21e071da21d0ba2f3be6b0ca6af6944f0cf45d31", "shasum": "" }, "require": { @@ -1596,11 +1807,11 @@ "composer/semver": "~3.3.2", "doctrine/annotations": "~1.13.3", "doctrine/lexer": "~1.2.3", - "drupal/core": "10.0.9", + "drupal/core": "10.0.0", "egulias/email-validator": "~3.2.1", "guzzlehttp/guzzle": "~7.5.0", "guzzlehttp/promises": "~1.5.2", - "guzzlehttp/psr7": "~2.4.5", + "guzzlehttp/psr7": "~2.4.3", "masterminds/html5": "~2.7.6", "pear/archive_tar": "~1.4.14", "pear/console_getopt": "~v1.4.3", @@ -1614,33 +1825,33 @@ "psr/http-message": "~1.0.1", "psr/log": "~3.0.0", "ralouphie/getallheaders": "~3.0.3", - "symfony/console": "~v6.2.5", - "symfony/dependency-injection": "~v6.2.6", - "symfony/deprecation-contracts": "~v3.2.0", - "symfony/error-handler": "~v6.2.5", - "symfony/event-dispatcher": "~v6.2.5", - "symfony/event-dispatcher-contracts": "~v3.2.0", - "symfony/http-foundation": "~v6.2.6", - "symfony/http-kernel": "~v6.2.6", - "symfony/mime": "~v6.2.5", + "symfony/console": "~v6.2.1", + "symfony/dependency-injection": "~v6.2.1", + "symfony/deprecation-contracts": "~v3.1.1", + "symfony/error-handler": "~v6.2.1", + "symfony/event-dispatcher": "~v6.2.0", + "symfony/event-dispatcher-contracts": "~v3.1.1", + "symfony/http-foundation": "~v6.2.1", + "symfony/http-kernel": "~v6.2.1", + "symfony/mime": "~v6.2.0", "symfony/polyfill-ctype": "~v1.27.0", "symfony/polyfill-iconv": "~v1.27.0", "symfony/polyfill-intl-grapheme": "~v1.27.0", "symfony/polyfill-intl-idn": "~v1.27.0", "symfony/polyfill-intl-normalizer": "~v1.27.0", "symfony/polyfill-mbstring": "~v1.27.0", - "symfony/process": "~v6.2.5", + "symfony/process": "~v6.2.0", "symfony/psr-http-message-bridge": "~v2.1.4", - "symfony/routing": "~v6.2.5", - "symfony/serializer": "~v6.2.5", - "symfony/service-contracts": "~v3.2.0", - "symfony/string": "~v6.2.5", - "symfony/translation-contracts": "~v3.2.0", - "symfony/validator": "~v6.2.5", - "symfony/var-dumper": "~v6.2.5", - "symfony/var-exporter": "~v6.2.5", - "symfony/yaml": "~v6.2.5", - "twig/twig": "~v3.5.0" + "symfony/routing": "~v6.2.0", + "symfony/serializer": "~v6.2.1", + "symfony/service-contracts": "~v3.1.1", + "symfony/string": "~v6.2.0", + "symfony/translation-contracts": "~v3.1.1", + "symfony/validator": "~v6.2.0", + "symfony/var-dumper": "~v6.2.1", + "symfony/var-exporter": "~v6.2.1", + "symfony/yaml": "~v6.2.0", + "twig/twig": "~v3.4.3" }, "conflict": { "webflo/drupal-core-strict": "*" @@ -1652,23 +1863,23 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/10.0.9" + "source": "https://github.com/drupal/core-recommended/tree/10.0.0" }, - "time": "2023-05-03T09:53:20+00:00" + "time": "2022-12-15T17:27:51+00:00" }, { "name": "drupal/ctools", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/ctools.git", - "reference": "4.0.3" + "reference": "4.0.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/ctools-4.0.3.zip", - "reference": "4.0.3", - "shasum": "4f389b14bd2120069386c2f28f8c4cd49bd2ebfc" + "url": "https://ftp.drupal.org/files/projects/ctools-4.0.4.zip", + "reference": "4.0.4", + "shasum": "4a2474eb2fd525b2add2db0e855c135ba7f0fb70" }, "require": { "drupal/core": "^9.3 || ^10" @@ -1676,8 +1887,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.0.3", - "datestamp": "1668631947", + "version": "4.0.4", + "datestamp": "1684299878", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2283,17 +2494,17 @@ }, { "name": "drupal/layout_builder_restrictions", - "version": "2.17.0", + "version": "2.19.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/layout_builder_restrictions.git", - "reference": "8.x-2.17" + "reference": "8.x-2.19" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/layout_builder_restrictions-8.x-2.17.zip", - "reference": "8.x-2.17", - "shasum": "6916564f2fd96c3d8e5fc66179bb2d26c4569b00" + "url": "https://ftp.drupal.org/files/projects/layout_builder_restrictions-8.x-2.19.zip", + "reference": "8.x-2.19", + "shasum": "562162568d3bf046cc63912f0985fd90c0767033" }, "require": { "drupal/core": "^9.3 || ^10" @@ -2306,8 +2517,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.17", - "datestamp": "1668183343", + "version": "8.x-2.19", + "datestamp": "1688739554", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2329,6 +2540,14 @@ "homepage": "https://www.drupal.org/u/eiriksm", "role": "Maintainer" }, + { + "name": "eiriksm", + "homepage": "https://www.drupal.org/user/1014468" + }, + { + "name": "gravelpot", + "homepage": "https://www.drupal.org/user/748208" + }, { "name": "Jeff Cardwell", "homepage": "https://www.drupal.org/user/2913129" @@ -2375,36 +2594,33 @@ }, { "name": "drupal/linkit", - "version": "6.0.0-beta3", + "version": "6.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "d95a39274cb73b0096e16fbbc9d5abe80e790c79" - }, - "type": "drupal-module" - }, - { - "name": "drupal/menu_block", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/menu_block.git", - "reference": "8.x-1.10" + "reference": "6.0.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/menu_block-8.x-1.10.zip", - "reference": "8.x-1.10", - "shasum": "97de632d77448ae0a974e20c2ffbe42c7ddd4633" + "url": "https://ftp.drupal.org/files/projects/linkit-6.0.0.zip", + "reference": "6.0.0", + "shasum": "3c4143eb797abee04e5af47eb1885a65e6321b51" }, "require": { - "drupal/core": "^9.1 || ^10" + "drupal/core": "^9.4 || ^10.0.0" + }, + "conflict": { + "drupal/core": ">=10.1" + }, + "require-dev": { + "drupal/ckeditor": "*", + "drupal/imce": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.10", - "datestamp": "1667434255", + "version": "6.0.0", + "datestamp": "1688748025", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2417,77 +2633,49 @@ ], "authors": [ { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" - }, - { - "name": "joelpittet", - "homepage": "https://www.drupal.org/user/160302" - }, - { - "name": "JohnAlbin", - "homepage": "https://www.drupal.org/user/32095" - }, - { - "name": "kim.pepper", - "homepage": "https://www.drupal.org/user/370574" + "name": "Emil Stjerneman", + "homepage": "https://stjerneman.com", + "email": "emil@stjerneman.com", + "role": "Maintainer" }, { - "name": "RenatoG", - "homepage": "https://www.drupal.org/user/3326031" + "name": "johnwebdev", + "homepage": "https://www.drupal.org/user/3331569" }, { - "name": "rrrob", - "homepage": "https://www.drupal.org/user/273533" + "name": "mark_fullmer", + "homepage": "https://www.drupal.org/user/2612816" } ], - "description": "Provides configurable blocks of menu links.", - "homepage": "https://www.drupal.org/project/menu_block", + "description": "Linkit - Enriched linking experience", + "homepage": "http://drupal.org/project/linkit", "support": { - "source": "https://git.drupalcode.org/project/menu_block" + "source": "http://cgit.drupalcode.org/linkit", + "issues": "http://drupal.org/project/linkit" } }, { - "name": "drupal/migrate_file", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/issue/migrate_file-3288621.git", - "reference": "9b971e83cc54acc84166bee794a82b577a161804" - }, - "type": "drupal-module" - }, - { - "name": "drupal/migrate_plus", - "version": "6.0.1", + "name": "drupal/menu_block", + "version": "1.10.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/migrate_plus.git", - "reference": "6.0.1" + "url": "https://git.drupalcode.org/project/menu_block.git", + "reference": "8.x-1.10" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.1.zip", - "reference": "6.0.1", - "shasum": "154e5c627c8b32648cb4b4034a196a289b0626fa" + "url": "https://ftp.drupal.org/files/projects/menu_block-8.x-1.10.zip", + "reference": "8.x-1.10", + "shasum": "97de632d77448ae0a974e20c2ffbe42c7ddd4633" }, "require": { - "drupal/core": ">=9.1", - "php": ">=7.4" - }, - "require-dev": { - "drupal/migrate_example_advanced_setup": "*", - "drupal/migrate_example_setup": "*" - }, - "suggest": { - "ext-soap": "*", - "sainsburys/guzzle-oauth2-plugin": "3.0 required for the OAuth2 authentication plugin" + "drupal/core": "^9.1 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.1", - "datestamp": "1672428002", + "version": "8.x-1.10", + "datestamp": "1667434255", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2500,97 +2688,34 @@ ], "authors": [ { - "name": "Mike Ryan", - "homepage": "https://www.drupal.org/u/mikeryan", - "role": "Maintainer" + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" }, { - "name": "Lucas Hedding", - "homepage": "https://www.drupal.org/u/heddn", - "role": "Maintainer" + "name": "joelpittet", + "homepage": "https://www.drupal.org/user/160302" }, { - "name": "mikeryan", - "homepage": "https://www.drupal.org/user/4420" - } - ], - "description": "Enhancements to core migration support.", - "homepage": "https://www.drupal.org/project/migrate_plus", - "support": { - "source": "https://git.drupalcode.org/project/migrate_plus", - "issues": "https://www.drupal.org/project/issues/migrate_plus", - "slack": "#migrate" - } - }, - { - "name": "drupal/migrate_tools", - "version": "6.0.1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/migrate_tools.git", - "reference": "6.0.1" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_tools-6.0.1.zip", - "reference": "6.0.1", - "shasum": "8c07d1b61b319acd4fd395e22ef9bf34d23299ba" - }, - "require": { - "drupal/core": ">=9.1", - "php": ">=7.4" - }, - "require-dev": { - "drupal/migrate_plus": ">=5", - "drupal/migrate_source_csv": ">=3", - "drush/drush": ">=11" - }, - "suggest": { - "drupal/migrate_plus": ">=5", - "drush/drush": ">=11" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "6.0.1", - "datestamp": "1672424943", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } + "name": "JohnAlbin", + "homepage": "https://www.drupal.org/user/32095" }, - "drush": { - "services": { - "drush.services.yml": ">=9" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ { - "name": "Mike Ryan", - "homepage": "https://www.drupal.org/u/mikeryan", - "role": "Maintainer" + "name": "kim.pepper", + "homepage": "https://www.drupal.org/user/370574" }, { - "name": "Lucas Hedding", - "homepage": "https://www.drupal.org/u/heddn", - "role": "Maintainer" + "name": "RenatoG", + "homepage": "https://www.drupal.org/user/3326031" }, { - "name": "mikeryan", - "homepage": "https://www.drupal.org/user/4420" + "name": "rrrob", + "homepage": "https://www.drupal.org/user/273533" } ], - "description": "Tools to assist in developing and running migrations.", - "homepage": "http://drupal.org/project/migrate_tools", + "description": "Provides configurable blocks of menu links.", + "homepage": "https://www.drupal.org/project/menu_block", "support": { - "source": "https://git.drupalcode.org/project/migrate_tools", - "issues": "https://www.drupal.org/project/issues/migrate_tools", - "slack": "#migrate" + "source": "https://git.drupalcode.org/project/menu_block" } }, { @@ -2761,12 +2886,82 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.8", - "datestamp": "1661806955", + "version": "8.x-1.8", + "datestamp": "1661806955", + "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": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + }, + { + "name": "pifagor", + "homepage": "https://www.drupal.org/user/2375692" + } + ], + "description": "Allows users to redirect from old URLs to new URLs.", + "homepage": "https://www.drupal.org/project/redirect", + "support": { + "source": "https://git.drupalcode.org/project/redirect" + } + }, + { + "name": "drupal/search_api", + "version": "1.29.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/search_api.git", + "reference": "8.x-1.29" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/search_api-8.x-1.29.zip", + "reference": "8.x-1.29", + "shasum": "4663abbcfe5dfc159ee0886fc6c437e998fc0653" + }, + "require": { + "drupal/core": "^9.3 || ^10.0" + }, + "conflict": { + "drupal/search_api_solr": "2.* || 3.0 || 3.1" + }, + "require-dev": { + "drupal/language_fallback_fix": "@dev", + "drupal/search_api_autocomplete": "@dev", + "drupal/search_api_db": "*" + }, + "suggest": { + "drupal/facets": "Adds the ability to create faceted searches.", + "drupal/search_api_autocomplete": "Allows adding autocomplete suggestions to search fields.", + "drupal/search_api_solr": "Adds support for using Apache Solr as a backend." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.29", + "datestamp": "1679910252", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -2775,22 +2970,24 @@ ], "authors": [ { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" + "name": "Thomas Seidl", + "homepage": "https://www.drupal.org/u/drunken-monkey" }, { - "name": "Dave Reid", - "homepage": "https://www.drupal.org/user/53892" + "name": "Nick Veenhof", + "homepage": "https://www.drupal.org/u/nick_vh" }, { - "name": "pifagor", - "homepage": "https://www.drupal.org/user/2375692" + "name": "See other contributors", + "homepage": "https://www.drupal.org/node/790418/committers" } ], - "description": "Allows users to redirect from old URLs to new URLs.", - "homepage": "https://www.drupal.org/project/redirect", + "description": "Provides a generic framework for modules offering search capabilities.", + "homepage": "https://www.drupal.org/project/search_api", "support": { - "source": "https://git.drupalcode.org/project/redirect" + "source": "https://git.drupalcode.org/project/search_api", + "issues": "https://www.drupal.org/project/issues/search_api", + "irc": "irc://irc.freenode.org/drupal-search-api" } }, { @@ -2869,17 +3066,17 @@ }, { "name": "drupal/simple_sitemap", - "version": "4.1.4", + "version": "4.1.6", "source": { "type": "git", "url": "https://git.drupalcode.org/project/simple_sitemap.git", - "reference": "4.1.4" + "reference": "4.1.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.4.zip", - "reference": "4.1.4", - "shasum": "55986f9819c60216ad6401941ca4176a1e086c8b" + "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.6.zip", + "reference": "4.1.6", + "shasum": "5ea5ee97ab4d59b43db86dd6279c3ac5ecbe69b9" }, "require": { "drupal/core": "^9.3 || ^10", @@ -2888,8 +3085,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.1.4", - "datestamp": "1674226567", + "version": "4.1.6", + "datestamp": "1686288643", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2976,17 +3173,17 @@ }, { "name": "drupal/token", - "version": "1.11.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/token.git", - "reference": "8.x-1.11" + "reference": "8.x-1.12" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/token-8.x-1.11.zip", - "reference": "8.x-1.11", - "shasum": "da264b36d1f88eb0c74bf84e18e8789854f98400" + "url": "https://ftp.drupal.org/files/projects/token-8.x-1.12.zip", + "reference": "8.x-1.12", + "shasum": "cefe1b203b793682f74ea43e18d0a814cf768763" }, "require": { "drupal/core": "^9.2 || ^10" @@ -2994,8 +3191,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.11", - "datestamp": "1659471813", + "version": "8.x-1.12", + "datestamp": "1688015262", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3045,32 +3242,132 @@ }, { "name": "drupal/webform", - "version": "6.2", + "version": "6.2.0-beta6", "source": { "type": "git", - "url": "https://git.drupalcode.org/issue/webform-3290604.git", - "reference": "46d9dff50f9bb00ba2031d7807d8e5cf06220369" + "url": "https://git.drupalcode.org/project/webform.git", + "reference": "6.2.0-beta6" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/webform-6.2.0-beta6.zip", + "reference": "6.2.0-beta6", + "shasum": "b466ad3629c58f45994cbca55ab6bd8baaa4b838" + }, + "require": { + "drupal/core": "^9.4 || ^10" + }, + "require-dev": { + "drupal/address": "1.x-dev", + "drupal/bootstrap": "3.x-dev", + "drupal/captcha": "^1 || ^2", + "drupal/chosen": "3.0.x-dev", + "drupal/ckeditor": "1.0.x-dev", + "drupal/clientside_validation": "*", + "drupal/clientside_validation_jquery": "*", + "drupal/devel": "*", + "drupal/entity": "1.x-dev", + "drupal/entity_print": "*", + "drupal/group": "1.x-dev", + "drupal/hal": "1 - 2", + "drupal/jquery_ui": "1.x-dev", + "drupal/jquery_ui_checkboxradio": "*", + "drupal/jquery_ui_datepicker": "*", + "drupal/mailsystem": "4.x-dev", + "drupal/metatag": "1.x-dev", + "drupal/paragraphs": "1.x-dev", + "drupal/select2": "1.x-dev", + "drupal/smtp": "1.x-dev", + "drupal/styleguide": "^1 || ^2", + "drupal/telephone_validation": "2.x-dev", + "drupal/token": "*", + "drupal/variationcache": "1.x-dev", + "drupal/webform_access": "*", + "drupal/webform_attachment": "*", + "drupal/webform_clientside_validation": "*", + "drupal/webform_devel": "*", + "drupal/webform_entity_print": "*", + "drupal/webform_node": "*", + "drupal/webform_options_limit": "*", + "drupal/webform_scheduled_email": "*", + "drupal/webform_share": "*", + "drupal/webform_ui": "*" + }, + "suggest": { + "drupal/jquery_ui_checkboxradio": "Provides jQuery UI Checkboxradio library. Required by the Webform jQueryUI Buttons module. The Webform jQueryUI Buttons module is deprecated because jQueryUI is no longer maintained.", + "drupal/jquery_ui_datepicker": "Provides jQuery UI Datepicker library. Required to support datepickers. The Webform jQueryUI Datepicker module is deprecated because jQueryUI is no longer maintained." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "6.2.0-beta6", + "datestamp": "1686598812", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + }, + "drush": { + "services": { + "drush.services.yml": ">=9" + } + } }, - "type": "drupal-module" + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Jacob Rockowitz (jrockowitz)", + "homepage": "https://www.drupal.org/u/jrockowitz", + "role": "Maintainer" + }, + { + "name": "Contributors", + "homepage": "https://www.drupal.org/node/7404/committers", + "role": "Contributor" + }, + { + "name": "Liam Morland", + "homepage": "https://www.drupal.org/user/493050" + }, + { + "name": "quicksketch", + "homepage": "https://www.drupal.org/user/35821" + }, + { + "name": "torotil", + "homepage": "https://www.drupal.org/user/865256" + } + ], + "description": "Enables the creation of webforms and questionnaires.", + "homepage": "https://drupal.org/project/webform", + "support": { + "source": "https://git.drupalcode.org/project/webform", + "issues": "https://www.drupal.org/project/issues/webform?version=8.x", + "docs": "https://www.drupal.org/docs/8/modules/webform", + "forum": "https://drupal.stackexchange.com/questions/tagged/webform" + } }, { "name": "drush/drush", - "version": "11.5.1", + "version": "11.6.0", "source": { "type": "git", "url": "https://github.com/drush-ops/drush.git", - "reference": "3138f82baa3b0e29ac935893a444881a7332177d" + "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/3138f82baa3b0e29ac935893a444881a7332177d", - "reference": "3138f82baa3b0e29ac935893a444881a7332177d", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", + "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", "shasum": "" }, "require": { "chi-teck/drupal-code-generator": "^2.4", "composer/semver": "^1.4 || ^3", - "consolidation/annotated-command": "^4.7.0", + "consolidation/annotated-command": "^4.8.2", "consolidation/config": "^2", "consolidation/filter-via-dot-access-data": "^2", "consolidation/robo": "^3.0.9 || ^4.0.1", @@ -3188,7 +3485,7 @@ "forum": "http://drupal.stackexchange.com/questions/tagged/drush", "issues": "https://github.com/drush-ops/drush/issues", "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/11.5.1" + "source": "https://github.com/drush-ops/drush/tree/11.6.0" }, "funding": [ { @@ -3196,20 +3493,20 @@ "type": "github" } ], - "time": "2023-02-21T02:32:48+00:00" + "time": "2023-06-06T18:46:18+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.5", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b531a2311709443320c786feb4519cfaf94af796" + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796", - "reference": "b531a2311709443320c786feb4519cfaf94af796", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", "shasum": "" }, "require": { @@ -3255,7 +3552,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.5" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" }, "funding": [ { @@ -3263,7 +3560,7 @@ "type": "github" } ], - "time": "2023-01-02T17:26:14+00:00" + "time": "2023-06-01T07:04:22+00:00" }, { "name": "enlightn/security-checker", @@ -3447,16 +3744,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.5.1", + "version": "7.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9" + "reference": "584d1f06b5caa07b0587f5054d551ed65460ce5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b964ca597e86b752cd994f27293e9fa6b6a95ed9", - "reference": "b964ca597e86b752cd994f27293e9fa6b6a95ed9", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/584d1f06b5caa07b0587f5054d551ed65460ce5d", + "reference": "584d1f06b5caa07b0587f5054d551ed65460ce5d", "shasum": "" }, "require": { @@ -3487,9 +3784,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -3555,7 +3849,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.1" + "source": "https://github.com/guzzle/guzzle/tree/7.5.3" }, "funding": [ { @@ -3571,20 +3865,20 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:30:08+00:00" + "time": "2023-05-15T20:42:18+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -3594,11 +3888,6 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -3639,7 +3928,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -3655,7 +3944,7 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", @@ -3926,16 +4215,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -3976,9 +4265,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "oomphinc/composer-installers-extender", @@ -4037,196 +4326,6 @@ }, "time": "2021-12-15T12:32:42+00:00" }, - { - "name": "opis/json-schema", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/opis/json-schema.git", - "reference": "c48df6d7089a45f01e1c82432348f2d5976f9bfb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/json-schema/zipball/c48df6d7089a45f01e1c82432348f2d5976f9bfb", - "reference": "c48df6d7089a45f01e1c82432348f2d5976f9bfb", - "shasum": "" - }, - "require": { - "ext-json": "*", - "opis/string": "^2.0", - "opis/uri": "^1.0", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "ext-bcmath": "*", - "ext-intl": "*", - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\JsonSchema\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - }, - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - } - ], - "description": "Json Schema Validator for PHP", - "homepage": "https://opis.io/json-schema", - "keywords": [ - "json", - "json-schema", - "schema", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/opis/json-schema/issues", - "source": "https://github.com/opis/json-schema/tree/2.3.0" - }, - "time": "2022-01-08T20:38:03+00:00" - }, - { - "name": "opis/string", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/opis/string.git", - "reference": "9ebf1a1f873f502f6859d11210b25a4bf5d141e7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/string/zipball/9ebf1a1f873f502f6859d11210b25a4bf5d141e7", - "reference": "9ebf1a1f873f502f6859d11210b25a4bf5d141e7", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "ext-json": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\String\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "Multibyte strings as objects", - "homepage": "https://opis.io/string", - "keywords": [ - "multi-byte", - "opis", - "string", - "string manipulation", - "utf-8" - ], - "support": { - "issues": "https://github.com/opis/string/issues", - "source": "https://github.com/opis/string/tree/2.0.1" - }, - "time": "2022-01-14T15:42:23+00:00" - }, - { - "name": "opis/uri", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/opis/uri.git", - "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/uri/zipball/0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a", - "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a", - "shasum": "" - }, - "require": { - "opis/string": "^2.0", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\Uri\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "Build, parse and validate URIs and URI-templates", - "homepage": "https://opis.io", - "keywords": [ - "URI Template", - "parse url", - "punycode", - "uri", - "uri components", - "url", - "validate uri" - ], - "support": { - "issues": "https://github.com/opis/uri/issues", - "source": "https://github.com/opis/uri/tree/1.1.0" - }, - "time": "2021-05-22T15:57:08+00:00" - }, { "name": "pear/archive_tar", "version": "1.4.14", @@ -4467,7 +4566,7 @@ }, { "name": "phootwork/collection", - "version": "v3.2.1", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/phootwork/collection.git", @@ -4516,22 +4615,22 @@ ], "support": { "issues": "https://github.com/phootwork/phootwork/issues", - "source": "https://github.com/phootwork/collection/tree/v3.2.1" + "source": "https://github.com/phootwork/collection/tree/v3.2.2" }, "time": "2022-08-27T12:51:24+00:00" }, { "name": "phootwork/lang", - "version": "v3.2.1", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/phootwork/lang.git", - "reference": "f6687cb0e5453ceb7b4a2c4f9fa81273758eedd0" + "reference": "baaf154ae7d521ebeee5e89105f5b12b0f234597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phootwork/lang/zipball/f6687cb0e5453ceb7b4a2c4f9fa81273758eedd0", - "reference": "f6687cb0e5453ceb7b4a2c4f9fa81273758eedd0", + "url": "https://api.github.com/repos/phootwork/lang/zipball/baaf154ae7d521ebeee5e89105f5b12b0f234597", + "reference": "baaf154ae7d521ebeee5e89105f5b12b0f234597", "shasum": "" }, "require": { @@ -4565,9 +4664,9 @@ ], "support": { "issues": "https://github.com/phootwork/phootwork/issues", - "source": "https://github.com/phootwork/lang/tree/v3.2.1" + "source": "https://github.com/phootwork/lang/tree/v3.2.2" }, - "time": "2022-08-27T12:51:24+00:00" + "time": "2023-05-26T05:37:59+00:00" }, { "name": "phpoption/phpoption", @@ -5060,16 +5159,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.17", + "version": "v0.11.19", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a" + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", - "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1724ceff278daeeac5a006744633bacbb2dc4706", + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706", "shasum": "" }, "require": { @@ -5130,9 +5229,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.17" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.19" }, - "time": "2023-05-05T20:02:42+00:00" + "time": "2023-07-15T19:42:19+00:00" }, { "name": "ralouphie/getallheaders", @@ -5180,16 +5279,16 @@ }, { "name": "symfony/console", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" + "reference": "dad41ae62bacb7fd96c463278ad583f81ccdffb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", + "url": "https://api.github.com/repos/symfony/console/zipball/dad41ae62bacb7fd96c463278ad583f81ccdffb5", + "reference": "dad41ae62bacb7fd96c463278ad583f81ccdffb5", "shasum": "" }, "require": { @@ -5256,7 +5355,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.10" + "source": "https://github.com/symfony/console/tree/v6.2.12" }, "funding": [ { @@ -5272,20 +5371,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:37:43+00:00" + "time": "2023-05-29T12:46:33+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d732a66a2672669232c0b4536c8c96724a679780" + "reference": "c0a0c04f304a5b7d40d4d4102bc482b5da618e54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d732a66a2672669232c0b4536c8c96724a679780", - "reference": "d732a66a2672669232c0b4536c8c96724a679780", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c0a0c04f304a5b7d40d4d4102bc482b5da618e54", + "reference": "c0a0c04f304a5b7d40d4d4102bc482b5da618e54", "shasum": "" }, "require": { @@ -5343,7 +5442,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.2.10" + "source": "https://github.com/symfony/dependency-injection/tree/v6.2.12" }, "funding": [ { @@ -5359,20 +5458,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T15:42:15+00:00" + "time": "2023-06-24T11:48:11+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", "shasum": "" }, "require": { @@ -5381,7 +5480,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -5410,7 +5509,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" }, "funding": [ { @@ -5426,20 +5525,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/error-handler", - "version": "v6.2.10", + "version": "v6.2.11", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8b7e9f124640cb0611624a9383176c3e5f7d8cfb" + "reference": "e847ba47e7a8f9708082990cb40ab4ff0440a11e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8b7e9f124640cb0611624a9383176c3e5f7d8cfb", - "reference": "8b7e9f124640cb0611624a9383176c3e5f7d8cfb", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/e847ba47e7a8f9708082990cb40ab4ff0440a11e", + "reference": "e847ba47e7a8f9708082990cb40ab4ff0440a11e", "shasum": "" }, "require": { @@ -5481,7 +5580,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.2.10" + "source": "https://github.com/symfony/error-handler/tree/v6.2.11" }, "funding": [ { @@ -5497,7 +5596,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-05-05T11:55:01+00:00" }, { "name": "symfony/event-dispatcher", @@ -5584,16 +5683,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", + "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", "shasum": "" }, "require": { @@ -5606,7 +5705,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -5643,7 +5742,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.1" }, "funding": [ { @@ -5659,20 +5758,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "symfony/filesystem", - "version": "v6.2.10", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894" + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894", - "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { @@ -5706,7 +5805,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.2.10" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -5722,20 +5821,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { "name": "symfony/finder", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", "shasum": "" }, "require": { @@ -5770,7 +5869,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v6.3.0" }, "funding": [ { @@ -5786,20 +5885,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-04-02T01:25:41+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "49adbb92bcb4e3c2943719d2756271e8b9602acc" + "reference": "94e3bc563fb92444588b3e2480fc47bb251ef295" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49adbb92bcb4e3c2943719d2756271e8b9602acc", - "reference": "49adbb92bcb4e3c2943719d2756271e8b9602acc", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/94e3bc563fb92444588b3e2480fc47bb251ef295", + "reference": "94e3bc563fb92444588b3e2480fc47bb251ef295", "shasum": "" }, "require": { @@ -5848,7 +5947,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.2.10" + "source": "https://github.com/symfony/http-foundation/tree/v6.2.12" }, "funding": [ { @@ -5864,20 +5963,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-06-24T11:48:11+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "81064a65a5496f17d2b6984f6519406f98864215" + "reference": "fb02830a72c82759e4bc7eaf4c16e0b81303df38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/81064a65a5496f17d2b6984f6519406f98864215", - "reference": "81064a65a5496f17d2b6984f6519406f98864215", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb02830a72c82759e4bc7eaf4c16e0b81303df38", + "reference": "fb02830a72c82759e4bc7eaf4c16e0b81303df38", "shasum": "" }, "require": { @@ -5925,6 +6024,7 @@ "symfony/translation": "^5.4|^6.0", "symfony/translation-contracts": "^1.1|^2|^3", "symfony/uid": "^5.4|^6.0", + "symfony/var-exporter": "^6.2", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -5959,7 +6059,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.2.10" + "source": "https://github.com/symfony/http-kernel/tree/v6.2.12" }, "funding": [ { @@ -5975,7 +6075,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:50:28+00:00" + "time": "2023-06-26T06:02:47+00:00" }, { "name": "symfony/mime", @@ -6800,16 +6900,16 @@ }, { "name": "symfony/process", - "version": "v6.2.10", + "version": "v6.2.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" + "reference": "97ae9721bead9d1a39b5650e2f4b7834b93b539c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "url": "https://api.github.com/repos/symfony/process/zipball/97ae9721bead9d1a39b5650e2f4b7834b93b539c", + "reference": "97ae9721bead9d1a39b5650e2f4b7834b93b539c", "shasum": "" }, "require": { @@ -6841,7 +6941,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.10" + "source": "https://github.com/symfony/process/tree/v6.2.11" }, "funding": [ { @@ -6857,7 +6957,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:56:57+00:00" + "time": "2023-05-19T07:42:48+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -6949,16 +7049,16 @@ }, { "name": "symfony/routing", - "version": "v6.2.8", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "69062e2823f03b82265d73a966999660f0e1e404" + "reference": "d59dc6a43191985bc9c27c746ce7986f01540e94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/69062e2823f03b82265d73a966999660f0e1e404", - "reference": "69062e2823f03b82265d73a966999660f0e1e404", + "url": "https://api.github.com/repos/symfony/routing/zipball/d59dc6a43191985bc9c27c746ce7986f01540e94", + "reference": "d59dc6a43191985bc9c27c746ce7986f01540e94", "shasum": "" }, "require": { @@ -7017,7 +7117,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.8" + "source": "https://github.com/symfony/routing/tree/v6.2.12" }, "funding": [ { @@ -7033,20 +7133,20 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:00:05+00:00" + "time": "2023-06-05T15:29:05+00:00" }, { "name": "symfony/serializer", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "0732edf0ad28dd3faacde4f1200ab9d7a4d5f40d" + "reference": "7be4b2fd8f385904887aa09ee08a4e4adee4c0d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/0732edf0ad28dd3faacde4f1200ab9d7a4d5f40d", - "reference": "0732edf0ad28dd3faacde4f1200ab9d7a4d5f40d", + "url": "https://api.github.com/repos/symfony/serializer/zipball/7be4b2fd8f385904887aa09ee08a4e4adee4c0d2", + "reference": "7be4b2fd8f385904887aa09ee08a4e4adee4c0d2", "shasum": "" }, "require": { @@ -7118,7 +7218,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.2.10" + "source": "https://github.com/symfony/serializer/tree/v6.2.12" }, "funding": [ { @@ -7134,20 +7234,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:57:49+00:00" + "time": "2023-05-30T17:07:47+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/925e713fe8fcacf6bc05e936edd8dd5441a21239", + "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239", "shasum": "" }, "require": { @@ -7163,7 +7263,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -7203,7 +7303,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.1.1" }, "funding": [ { @@ -7219,7 +7319,7 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2022-05-30T19:18:58+00:00" }, { "name": "symfony/string", @@ -7309,16 +7409,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc", + "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc", "shasum": "" }, "require": { @@ -7330,7 +7430,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -7370,7 +7470,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1" }, "funding": [ { @@ -7386,20 +7486,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2022-06-27T17:24:16+00:00" }, { "name": "symfony/validator", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "c02ea86844926f04247bc1f5db5f85bb53330823" + "reference": "1c22c832e9415c381a7186618f0319cda6fd5618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/c02ea86844926f04247bc1f5db5f85bb53330823", - "reference": "c02ea86844926f04247bc1f5db5f85bb53330823", + "url": "https://api.github.com/repos/symfony/validator/zipball/1c22c832e9415c381a7186618f0319cda6fd5618", + "reference": "1c22c832e9415c381a7186618f0319cda6fd5618", "shasum": "" }, "require": { @@ -7412,7 +7512,6 @@ "conflict": { "doctrine/annotations": "<1.13", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<5.4.3", "symfony/dependency-injection": "<5.4", "symfony/expression-language": "<5.4", "symfony/http-kernel": "<5.4", @@ -7478,7 +7577,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.2.10" + "source": "https://github.com/symfony/validator/tree/v6.2.12" }, "funding": [ { @@ -7494,20 +7593,20 @@ "type": "tidelift" } ], - "time": "2023-04-19T09:54:16+00:00" + "time": "2023-06-21T12:07:00+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "41a750a23412ca76fdbbf5096943b4134272c1ab" + "reference": "facbf30fe37f62e0ea50972467c08b7e80d22ed0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41a750a23412ca76fdbbf5096943b4134272c1ab", - "reference": "41a750a23412ca76fdbbf5096943b4134272c1ab", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/facbf30fe37f62e0ea50972467c08b7e80d22ed0", + "reference": "facbf30fe37f62e0ea50972467c08b7e80d22ed0", "shasum": "" }, "require": { @@ -7515,7 +7614,6 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<5.4" }, "require-dev": { @@ -7566,7 +7664,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.10" + "source": "https://github.com/symfony/var-dumper/tree/v6.2.12" }, "funding": [ { @@ -7582,7 +7680,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-06-20T21:12:34+00:00" }, { "name": "symfony/var-exporter", @@ -7734,16 +7832,16 @@ }, { "name": "twig/twig", - "version": "v3.5.1", + "version": "v3.4.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" + "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", + "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", "shasum": "" }, "require": { @@ -7758,7 +7856,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.5-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -7794,7 +7892,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.1" + "source": "https://github.com/twigphp/Twig/tree/v3.4.3" }, "funding": [ { @@ -7806,7 +7904,7 @@ "type": "tidelift" } ], - "time": "2023-02-08T07:49:20+00:00" + "time": "2022-09-28T08:42:51+00:00" }, { "name": "vlucas/phpdotenv", @@ -8439,6 +8537,7 @@ "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", "source": "https://github.com/minkphp/MinkGoutteDriver/tree/v2.0.0" }, + "abandoned": "behat/mink-browserkit-driver", "time": "2021-12-29T10:56:50+00:00" }, { @@ -8560,16 +8659,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.5", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd" + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/74780ccf8c19d6acb8d65c5f39cd72110e132bbd", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", "shasum": "" }, "require": { @@ -8616,7 +8715,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.5" + "source": "https://github.com/composer/ca-bundle/tree/1.3.6" }, "funding": [ { @@ -8632,26 +8731,26 @@ "type": "tidelift" } ], - "time": "2023-01-11T08:27:00+00:00" + "time": "2023-06-06T12:02:59+00:00" }, { "name": "composer/class-map-generator", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513" + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/1e1cb2b791facb2dfe32932a7718cf2571187513", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", "shasum": "" }, "require": { - "composer/pcre": "^2 || ^3", + "composer/pcre": "^2.1 || ^3.1", "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6" + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { "phpstan/phpstan": "^1.6", @@ -8689,7 +8788,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.0.0" + "source": "https://github.com/composer/class-map-generator/tree/1.1.0" }, "funding": [ { @@ -8705,20 +8804,20 @@ "type": "tidelift" } ], - "time": "2022-06-19T11:31:27+00:00" + "time": "2023-06-30T13:58:57+00:00" }, { "name": "composer/composer", - "version": "2.5.5", + "version": "2.5.8", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "c7cffaad16a60636a776017eac5bd8cd0095c32f" + "reference": "4c516146167d1392c8b9b269bb7c24115d262164" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/c7cffaad16a60636a776017eac5bd8cd0095c32f", - "reference": "c7cffaad16a60636a776017eac5bd8cd0095c32f", + "url": "https://api.github.com/repos/composer/composer/zipball/4c516146167d1392c8b9b269bb7c24115d262164", + "reference": "4c516146167d1392c8b9b269bb7c24115d262164", "shasum": "" }, "require": { @@ -8802,7 +8901,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.5.5" + "source": "https://github.com/composer/composer/tree/2.5.8" }, "funding": [ { @@ -8818,7 +8917,7 @@ "type": "tidelift" } ], - "time": "2023-03-21T10:50:05+00:00" + "time": "2023-06-09T15:13:21+00:00" }, { "name": "composer/metadata-minifier", @@ -9183,25 +9282,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -9220,9 +9323,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/instantiator", @@ -9526,16 +9629,16 @@ }, { "name": "drupal/core-dev", - "version": "10.0.9", + "version": "10.0.10", "source": { "type": "git", "url": "https://github.com/drupal/core-dev.git", - "reference": "22a053f9de0ce6ce9db2755693b9c81ddf86b3b7" + "reference": "bd56c4060c1bd968835073cdf359fc07f486d11d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-dev/zipball/22a053f9de0ce6ce9db2755693b9c81ddf86b3b7", - "reference": "22a053f9de0ce6ce9db2755693b9c81ddf86b3b7", + "url": "https://api.github.com/repos/drupal/core-dev/zipball/bd56c4060c1bd968835073cdf359fc07f486d11d", + "reference": "bd56c4060c1bd968835073cdf359fc07f486d11d", "shasum": "" }, "require": { @@ -9546,7 +9649,7 @@ "drupal/coder": "^8.3.10", "instaclick/php-webdriver": "^1.4.1", "justinrainbow/json-schema": "^5.2", - "mglaman/phpstan-drupal": "^1.1.31", + "mglaman/phpstan-drupal": "^1.1.35", "mikey179/vfsstream": "^1.6.11", "phpspec/prophecy-phpunit": "^2", "phpstan/extension-installer": "^1.1", @@ -9572,9 +9675,9 @@ ], "description": "require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.", "support": { - "source": "https://github.com/drupal/core-dev/tree/10.0.9" + "source": "https://github.com/drupal/core-dev/tree/10.0.10" }, - "time": "2023-05-01T11:13:00+00:00" + "time": "2023-06-16T16:18:48+00:00" }, { "name": "drupal/drupal-driver", @@ -10041,16 +10144,16 @@ }, { "name": "mglaman/phpstan-drupal", - "version": "1.1.31", + "version": "1.1.36", "source": { "type": "git", "url": "https://github.com/mglaman/phpstan-drupal.git", - "reference": "266474ca92b6cfe7443359c6a5972698781aef9f" + "reference": "345f7babd0cfd1ef73bb856673a1cee5a0dbd6e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/266474ca92b6cfe7443359c6a5972698781aef9f", - "reference": "266474ca92b6cfe7443359c6a5972698781aef9f", + "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/345f7babd0cfd1ef73bb856673a1cee5a0dbd6e5", + "reference": "345f7babd0cfd1ef73bb856673a1cee5a0dbd6e5", "shasum": "" }, "require": { @@ -10125,7 +10228,7 @@ "description": "Drupal extension and rules for PHPStan", "support": { "issues": "https://github.com/mglaman/phpstan-drupal/issues", - "source": "https://github.com/mglaman/phpstan-drupal/tree/1.1.31" + "source": "https://github.com/mglaman/phpstan-drupal/tree/1.1.36" }, "funding": [ { @@ -10141,7 +10244,7 @@ "type": "tidelift" } ], - "time": "2023-04-27T17:33:01+00:00" + "time": "2023-06-28T20:24:39+00:00" }, { "name": "mikey179/vfsstream", @@ -10255,16 +10358,16 @@ }, { "name": "pdepend/pdepend", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "31be7cd4f305f3f7b52af99c1cb13fc938d1cfad" + "reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/31be7cd4f305f3f7b52af99c1cb13fc938d1cfad", - "reference": "31be7cd4f305f3f7b52af99c1cb13fc938d1cfad", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1121d4b04af06e33e9659bac3a6741b91cab1de1", + "reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1", "shasum": "" }, "require": { @@ -10298,9 +10401,15 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", + "keywords": [ + "PHP Depend", + "PHP_Depend", + "dev", + "pdepend" + ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.13.0" + "source": "https://github.com/pdepend/pdepend/tree/2.14.0" }, "funding": [ { @@ -10308,7 +10417,7 @@ "type": "tidelift" } ], - "time": "2023-02-28T20:56:15+00:00" + "time": "2023-05-26T13:15:18+00:00" }, { "name": "phar-io/manifest", @@ -10652,16 +10761,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.1", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "dfc078e8af9c99210337325ff5aa152872c98714" + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dfc078e8af9c99210337325ff5aa152872c98714", - "reference": "dfc078e8af9c99210337325ff5aa152872c98714", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", "shasum": "" }, "require": { @@ -10704,9 +10813,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" }, - "time": "2023-03-27T19:02:04+00:00" + "time": "2023-05-30T18:13:47+00:00" }, { "name": "phpmd/phpmd", @@ -10913,22 +11022,22 @@ }, { "name": "phpstan/extension-installer", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.9.0" }, "require-dev": { "composer/composer": "^2.0", @@ -10937,12 +11046,7 @@ }, "type": "composer-plugin", "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin", - "phpstan/extension-installer": { - "ignore": [ - "phpstan/phpstan-phpunit" - ] - } + "class": "PHPStan\\ExtensionInstaller\\Plugin" }, "autoload": { "psr-4": { @@ -10956,28 +11060,30 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" }, - "time": "2023-04-18T13:08:02+00:00" + "time": "2023-05-24T08:59:17+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.20.4", + "version": "1.22.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd" + "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/65c39594fbd8c67abfc68bb323f86447bab79cc0", + "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", @@ -11001,22 +11107,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.20.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.1" }, - "time": "2023-05-02T09:19:37+00:00" + "time": "2023-06-29T20:46:06+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.14", + "version": "1.10.25", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c" + "reference": "578f4e70d117f9a90699324c555922800ac38d8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/578f4e70d117f9a90699324c555922800ac38d8c", + "reference": "578f4e70d117f9a90699324c555922800ac38d8c", "shasum": "" }, "require": { @@ -11065,7 +11171,7 @@ "type": "tidelift" } ], - "time": "2023-04-19T13:47:27+00:00" + "time": "2023-07-06T12:11:37+00:00" }, { "name": "phpunit/php-code-coverage", @@ -11387,16 +11493,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.7", + "version": "9.6.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2" + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", - "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", "shasum": "" }, "require": { @@ -11470,7 +11576,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.7" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.10" }, "funding": [ { @@ -11486,7 +11592,7 @@ "type": "tidelift" } ], - "time": "2023-04-14T08:58:40+00:00" + "time": "2023-07-10T04:04:23+00:00" }, { "name": "pyrech/composer-changelogs", @@ -11916,16 +12022,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -11970,7 +12076,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -11978,7 +12084,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", @@ -12582,16 +12688,16 @@ }, { "name": "seld/jsonlint", - "version": "1.9.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { @@ -12630,7 +12736,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" }, "funding": [ { @@ -12642,7 +12748,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T13:37:23+00:00" + "time": "2023-05-11T13:16:46+00:00" }, { "name": "seld/phar-utils", @@ -12931,16 +13037,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "87bd43240e6cc855f70ea1c7a448ab3bd442633c" + "reference": "0eb7228e7c435169e65c911ba8d107d56d850049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/87bd43240e6cc855f70ea1c7a448ab3bd442633c", - "reference": "87bd43240e6cc855f70ea1c7a448ab3bd442633c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0eb7228e7c435169e65c911ba8d107d56d850049", + "reference": "0eb7228e7c435169e65c911ba8d107d56d850049", "shasum": "" }, "require": { @@ -12953,9 +13059,6 @@ "symfony/mime": "^5.4|^6.0", "symfony/process": "^5.4|^6.0" }, - "suggest": { - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -12982,7 +13085,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.2.7" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.0" }, "funding": [ { @@ -12998,41 +13101,39 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-04-25T10:46:17+00:00" }, { "name": "symfony/config", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "249271da6f545d6579e0663374f8249a80be2893" + "reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/249271da6f545d6579e0663374f8249a80be2893", - "reference": "249271da6f545d6579e0663374f8249a80be2893", + "url": "https://api.github.com/repos/symfony/config/zipball/a5e00dec161b08c946a2c16eed02adbeedf827ae", + "reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/filesystem": "^5.4|^6.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4" + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { "symfony/event-dispatcher": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", "symfony/messenger": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, "type": "library", "autoload": { "psr-4": { @@ -13059,7 +13160,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.2.7" + "source": "https://github.com/symfony/config/tree/v6.3.0" }, "funding": [ { @@ -13075,20 +13176,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-04-25T10:46:17+00:00" }, { "name": "symfony/css-selector", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0" + "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0", - "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", "shasum": "" }, "require": { @@ -13124,7 +13225,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.7" + "source": "https://github.com/symfony/css-selector/tree/v6.3.0" }, "funding": [ { @@ -13140,20 +13241,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-03-20T16:43:42+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.2.9", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "328bc3795059651d2d4e462e8febdf7ec2d7a626" + "reference": "8aa333f41f05afc7fc285a976b58272fd90fc212" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/328bc3795059651d2d4e462e8febdf7ec2d7a626", - "reference": "328bc3795059651d2d4e462e8febdf7ec2d7a626", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8aa333f41f05afc7fc285a976b58272fd90fc212", + "reference": "8aa333f41f05afc7fc285a976b58272fd90fc212", "shasum": "" }, "require": { @@ -13165,9 +13266,6 @@ "require-dev": { "symfony/css-selector": "^5.4|^6.0" }, - "suggest": { - "symfony/css-selector": "" - }, "type": "library", "autoload": { "psr-4": { @@ -13194,7 +13292,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.2.9" + "source": "https://github.com/symfony/dom-crawler/tree/v6.3.1" }, "funding": [ { @@ -13210,20 +13308,20 @@ "type": "tidelift" } ], - "time": "2023-04-11T16:03:19+00:00" + "time": "2023-06-05T15:30:22+00:00" }, { "name": "symfony/http-client", - "version": "v6.2.10", + "version": "v6.2.12", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3f5545a91c8e79dedd1a06c4b04e1682c80c42f9" + "reference": "7ef37b91629937843e8f52a2da5587ff16d75d25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3f5545a91c8e79dedd1a06c4b04e1682c80c42f9", - "reference": "3f5545a91c8e79dedd1a06c4b04e1682c80c42f9", + "url": "https://api.github.com/repos/symfony/http-client/zipball/7ef37b91629937843e8f52a2da5587ff16d75d25", + "reference": "7ef37b91629937843e8f52a2da5587ff16d75d25", "shasum": "" }, "require": { @@ -13247,6 +13345,7 @@ "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/http-kernel": "^5.4|^6.0", @@ -13282,7 +13381,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.2.10" + "source": "https://github.com/symfony/http-client/tree/v6.2.12" }, "funding": [ { @@ -13298,32 +13397,29 @@ "type": "tidelift" } ], - "time": "2023-04-20T13:12:48+00:00" + "time": "2023-06-24T11:48:11+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b" + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", - "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/3b66325d0176b4ec826bffab57c9037d759c31fb", + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/http-client-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -13363,7 +13459,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.3.0" }, "funding": [ { @@ -13379,25 +13475,26 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/lock", - "version": "v6.2.8", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "fe452788cc81762f0840bd2a3dd1f230193186e5" + "reference": "2810c90ee87e76e0b6065cbf5c59f57b9825b536" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/fe452788cc81762f0840bd2a3dd1f230193186e5", - "reference": "fe452788cc81762f0840bd2a3dd1f230193186e5", + "url": "https://api.github.com/repos/symfony/lock/zipball/2810c90ee87e76e0b6065cbf5c59f57b9825b536", + "reference": "2810c90ee87e76e0b6065cbf5c59f57b9825b536", "shasum": "" }, "require": { "php": ">=8.1", - "psr/log": "^1|^2|^3" + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/dbal": "<2.13", @@ -13405,7 +13502,7 @@ }, "require-dev": { "doctrine/dbal": "^2.13|^3.0", - "predis/predis": "~1.0" + "predis/predis": "^1.1|^2.0" }, "type": "library", "autoload": { @@ -13441,7 +13538,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v6.2.8" + "source": "https://github.com/symfony/lock/tree/v6.3.1" }, "funding": [ { @@ -13457,20 +13554,20 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:00:05+00:00" + "time": "2023-06-24T11:51:27+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.2.10", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "552950db2919421ad917e29e76d1999a2a31a8e3" + "reference": "0b0bf59b0d9bd1422145a123a67fb12af546ef0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/552950db2919421ad917e29e76d1999a2a31a8e3", - "reference": "552950db2919421ad917e29e76d1999a2a31a8e3", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/0b0bf59b0d9bd1422145a123a67fb12af546ef0d", + "reference": "0b0bf59b0d9bd1422145a123a67fb12af546ef0d", "shasum": "" }, "require": { @@ -13480,11 +13577,9 @@ "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3.0", - "symfony/error-handler": "^5.4|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -13524,7 +13619,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.2.10" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.1" }, "funding": [ { @@ -13540,7 +13635,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-06-23T13:25:16+00:00" }, { "name": "symfony/polyfill-php73", @@ -13623,28 +13718,30 @@ }, { "name": "symfony/translation", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5" + "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/817535dbb1721df8b3a8f2489dc7e50bcd6209b5", - "reference": "817535dbb1721df8b3a8f2489dc7e50bcd6209b5", + "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", + "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", "shasum": "" }, "require": { "php": ">=8.1", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { "symfony/config": "<5.4", "symfony/console": "<5.4", "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", "symfony/twig-bundle": "<5.4", "symfony/yaml": "<5.4" }, @@ -13658,20 +13755,14 @@ "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-client-contracts": "^2.5|^3.0", "symfony/http-kernel": "^5.4|^6.0", "symfony/intl": "^5.4|^6.0", "symfony/polyfill-intl-icu": "^1.21", "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "nikic/php-parser": "To use PhpAstExtractor", - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, "type": "library", "autoload": { "files": [ @@ -13701,7 +13792,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.8" + "source": "https://github.com/symfony/translation/tree/v6.3.0" }, "funding": [ { @@ -13717,7 +13808,7 @@ "type": "tidelift" } ], - "time": "2023-03-31T09:14:44+00:00" + "time": "2023-05-19T12:46:45+00:00" }, { "name": "theseer/tokenizer", @@ -13780,9 +13871,10 @@ ], "minimum-stability": "dev", "stability-flags": { - "drupal/linkit": 10, "drupal/core-dev": 10, "drupal/drupal-extension": 20, + "drupal/components": 10, + "drupal/linkit": 10, "drupal/default_content": 15 }, "prefer-stable": true, diff --git a/composer.json b/composer.json index 7a23c6f12..563ddbd54 100644 --- a/composer.json +++ b/composer.json @@ -20,10 +20,10 @@ "dealerdirect/phpcodesniffer-composer-installer": "^0.7", "drevops/behat-format-progress-fail": "^1", "drevops/behat-screenshot": "^1", - "drevops/behat-steps": "^1", + "drevops/behat-steps": "^1.5", "drupal/coder": "8.3.16", "drupal/core-dev": "^9", - "drupal/drupal-extension": "^4", + "drupal/drupal-extension": "dev-feature/drupal-10 as 4.2.1-dev", "phpcompatibility/php-compatibility": "^9.0", "phpmd/phpmd": "^2.12", "phpspec/prophecy-phpunit": "^2", @@ -42,7 +42,7 @@ }, "config": { "platform": { - "php": "8.1" + "php": "8.1.17" }, "process-timeout": 0, "sort-packages": true, @@ -64,18 +64,13 @@ "drupal/drupal": "*" }, "repositories": { - "drupal/migrate_file": { - "type": "package", - "package": { - "name": "drupal/migrate_file", - "type": "drupal-module", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/issue/migrate_file-3288621.git", - "reference": "9b971e83cc54acc84166bee794a82b577a161804" - } - } + "drupal/drupal-driver": { + "type": "vcs", + "url": "https://github.com/drevops/DrupalDriver" + }, + "drupal/drupal-extension": { + "type": "vcs", + "url": "https://github.com/drevops/drupalextension" }, "drupal": { "type": "composer", @@ -114,7 +109,7 @@ "Utilities\\composer\\DrupalSettings::create" ] }, - "minimum-stability": "alpha", + "minimum-stability": "dev", "prefer-stable": true, "extra": { "composer-exit-on-patch-failure": true, @@ -123,12 +118,8 @@ }, "patches": { "drupal/core": { - "drupal_phpunit_find_extension_directories() uses infinite recursion ⇒ more directories = slower tests - https://www.drupal.org/project/drupal/issues/3249443#comment-14299938": "https://www.drupal.org/files/issues/2021-11-23/3249443-37.patch", - "Builds failing on missing layout column plugin": "https://www.drupal.org/files/issues/2021-04-12/D9-3204271-2-missing-layout-exception.patch", - "Correct vertical tab does not focus on form validation - https://www.drupal.org/project/drupal/issues/2911932#comment-14514089": "https://www.drupal.org/files/issues/2022-05-13/2911932-22.patch" - }, - "drupal/webform": { - "PHP 8.1: webform_css_alter warning - https://www.drupal.org/project/webform/issues/3278191#comment-14501334": "https://www.drupal.org/files/issues/2022-05-02/webform-3278191-3.patch" + "drupal_phpunit_find_extension_directories() uses infinite recursion ⇒ more directories = slower tests": "https://www.drupal.org/files/issues/2023-03-30/3249443-d-9-5-43.patch", + "Builds failing on missing layout column plugin": "https://www.drupal.org/files/issues/2023-07-16/3204271-20-missing-layout-exception.patch" } }, "drupal-scaffold": { @@ -143,6 +134,7 @@ "[web-root]/example.gitignore": false, "[web-root]/INSTALL.txt": false, "[web-root]/README.txt": false, + "[web-root]/robots.txt": false, "[web-root]/sites/example.settings.local.php": false, "[web-root]/sites/example.sites.php": false, "[web-root]/web.config": false @@ -195,7 +187,6 @@ "docroot/themes/contrib/civictheme/composer.json", "docroot/modules/custom/civictheme_govcms/composer.json", "docroot/modules/custom/civictheme_admin/composer.json", - "docroot/modules/custom/civictheme_migrate/composer.json", "docroot/modules/custom/civictheme_content/composer.json", "docroot/modules/custom/civictheme_dev/composer.json", "docroot/modules/custom/cs_generated_content/composer.json" diff --git a/composer.lock b/composer.lock index 4f2e85053..20aa57a70 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "33b18371988d1a6f4258e257f4404cc5", + "content-hash": "87c4e94ef95401c2e996b5f7fb9410c8", "packages": [ { "name": "asm89/stack-cors", @@ -680,25 +680,25 @@ }, { "name": "consolidation/annotated-command", - "version": "4.8.2", + "version": "4.9.1", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "7f5dd1aafb93a10593ed70f3caa6a0cd5a32f0e3" + "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/7f5dd1aafb93a10593ed70f3caa6a0cd5a32f0e3", - "reference": "7f5dd1aafb93a10593ed70f3caa6a0cd5a32f0e3", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", + "reference": "e01152f698eff4cb5df3ebfe5e097ef335dbd3c9", "shasum": "" }, "require": { - "consolidation/output-formatters": "^4.1.1", + "consolidation/output-formatters": "^4.3.1", "php": ">=7.1.3", - "psr/log": "^1|^2|^3", - "symfony/console": "^4.4.8|^5|^6", - "symfony/event-dispatcher": "^4.4.8|^5|^6", - "symfony/finder": "^4.4.8|^5|^6" + "psr/log": "^1 || ^2 || ^3", + "symfony/console": "^4.4.8 || ^5 || ^6", + "symfony/event-dispatcher": "^4.4.8 || ^5 || ^6", + "symfony/finder": "^4.4.8 || ^5 || ^6" }, "require-dev": { "composer-runtime-api": "^2.0", @@ -730,9 +730,9 @@ "description": "Initialize Symfony Console commands from annotated command class methods.", "support": { "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/4.8.2" + "source": "https://github.com/consolidation/annotated-command/tree/4.9.1" }, - "time": "2023-03-11T19:32:28+00:00" + "time": "2023-05-20T04:19:01+00:00" }, { "name": "consolidation/config", @@ -898,16 +898,16 @@ }, { "name": "consolidation/output-formatters", - "version": "4.2.4", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "b377db7e9435c50c4e019c26ec164b547e754ca0" + "reference": "06711568b4cd169700ff7e8075db0a9a341ceb58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/b377db7e9435c50c4e019c26ec164b547e754ca0", - "reference": "b377db7e9435c50c4e019c26ec164b547e754ca0", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/06711568b4cd169700ff7e8075db0a9a341ceb58", + "reference": "06711568b4cd169700ff7e8075db0a9a341ceb58", "shasum": "" }, "require": { @@ -946,9 +946,9 @@ "description": "Format text by applying transformations provided by plug-in formatters.", "support": { "issues": "https://github.com/consolidation/output-formatters/issues", - "source": "https://github.com/consolidation/output-formatters/tree/4.2.4" + "source": "https://github.com/consolidation/output-formatters/tree/4.3.2" }, - "time": "2023-02-24T03:39:10+00:00" + "time": "2023-07-06T04:45:41+00:00" }, { "name": "consolidation/robo", @@ -1051,16 +1051,16 @@ }, { "name": "consolidation/self-update", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/consolidation/self-update.git", - "reference": "714b09fdf0513f83292874bb12de0566066040c2" + "reference": "972a1016761c9b63314e040836a12795dff6953a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/self-update/zipball/714b09fdf0513f83292874bb12de0566066040c2", - "reference": "714b09fdf0513f83292874bb12de0566066040c2", + "url": "https://api.github.com/repos/consolidation/self-update/zipball/972a1016761c9b63314e040836a12795dff6953a", + "reference": "972a1016761c9b63314e040836a12795dff6953a", "shasum": "" }, "require": { @@ -1100,9 +1100,9 @@ "description": "Provides a self:update command for Symfony Console applications.", "support": { "issues": "https://github.com/consolidation/self-update/issues", - "source": "https://github.com/consolidation/self-update/tree/2.1.0" + "source": "https://github.com/consolidation/self-update/tree/2.2.0" }, - "time": "2023-02-21T19:33:55+00:00" + "time": "2023-03-18T01:37:41+00:00" }, { "name": "consolidation/site-alias", @@ -1272,16 +1272,16 @@ }, { "name": "defuse/php-encryption", - "version": "v2.3.1", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/defuse/php-encryption.git", - "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2" + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/77880488b9954b7884c25555c2a0ea9e7053f9d2", - "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/f53396c2d34225064647a05ca76c1da9d99e5828", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828", "shasum": "" }, "require": { @@ -1290,7 +1290,8 @@ "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "^4|^5|^6|^7|^8|^9" + "phpunit/phpunit": "^5|^6|^7|^8|^9|^10", + "yoast/phpunit-polyfills": "^2.0.0" }, "bin": [ "bin/generate-defuse-key" @@ -1332,9 +1333,9 @@ ], "support": { "issues": "https://github.com/defuse/php-encryption/issues", - "source": "https://github.com/defuse/php-encryption/tree/v2.3.1" + "source": "https://github.com/defuse/php-encryption/tree/v2.4.0" }, - "time": "2021-04-09T23:57:26+00:00" + "time": "2023-06-19T06:10:36+00:00" }, { "name": "dflydev/dot-access-data", @@ -1486,16 +1487,16 @@ }, { "name": "doctrine/cache", - "version": "1.13.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "56cd022adb5514472cb144c087393c1821911d09" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", - "reference": "56cd022adb5514472cb144c087393c1821911d09", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -1505,19 +1506,13 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", "doctrine/coding-standard": "^9", - "mongodb/mongodb": "^1.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "predis/predis": "~1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", "symfony/cache": "^4.4 || ^5.4 || ^6", "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, "type": "library", "autoload": { "psr-4": { @@ -1565,7 +1560,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.13.0" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -1581,36 +1576,38 @@ "type": "tidelift" } ], - "time": "2022-05-20T20:06:54+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "1.8.0", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", + "url": "https://api.github.com/repos/doctrine/collections/zipball/db8cda536a034337f7dd63febecc713d4957f9ee", + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0 || ^10.0", - "phpstan/phpstan": "^1.4.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", + "doctrine/coding-standard": "^10.0", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1649,52 +1646,56 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.8.0" + "source": "https://github.com/doctrine/collections/tree/2.1.2" }, - "time": "2022-09-01T20:12:10+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2022-12-27T23:41:38+00:00" }, { "name": "doctrine/common", - "version": "2.13.3", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", + "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced", + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3", - "doctrine/reflection": "^1.0", + "doctrine/persistence": "^2.0 || ^3.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" + "symfony/phpunit-bridge": "^6.1", + "vimeo/psalm": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1727,7 +1728,7 @@ "email": "ocramius@gmail.com" } ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ "common", @@ -1736,7 +1737,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/2.13.x" + "source": "https://github.com/doctrine/common/tree/3.4.3" }, "funding": [ { @@ -1752,7 +1753,7 @@ "type": "tidelift" } ], - "time": "2020-06-05T16:46:05+00:00" + "time": "2022-10-09T11:47:59+00:00" }, { "name": "doctrine/dbal", @@ -1865,25 +1866,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1902,9 +1907,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/event-manager", @@ -1998,102 +2003,6 @@ ], "time": "2022-10-12T20:51:15+00:00" }, - { - "name": "doctrine/inflector", - "version": "1.4.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector", - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/1.4.4" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "time": "2021-04-16T17:34:40+00:00" - }, { "name": "doctrine/lexer", "version": "1.2.3", @@ -2172,45 +2081,41 @@ }, { "name": "doctrine/persistence", - "version": "1.3.8", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603", + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", - "php": "^7.1 || ^8.0" + "doctrine/event-manager": "^1 || ^2", + "php": "^7.2 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/common": "<2.10@dev" + "doctrine/common": "<2.10" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^3.11" + "composer/package-versions-deprecated": "^1.11", + "doctrine/coding-standard": "^11", + "doctrine/common": "^3.0", + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -2244,7 +2149,7 @@ } ], "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", "keywords": [ "mapper", "object", @@ -2254,7 +2159,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/1.3.x" + "source": "https://github.com/doctrine/persistence/tree/3.2.0" }, "funding": [ { @@ -2270,7 +2175,7 @@ "type": "tidelift" } ], - "time": "2020-06-20T12:56:16+00:00" + "time": "2023-05-17T18:32:04+00:00" }, { "name": "doctrine/reflection", @@ -2614,26 +2519,26 @@ }, { "name": "drupal/bigmenu", - "version": "2.0.0-rc2", + "version": "2.0.0-rc3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/bigmenu.git", - "reference": "2.0.0-rc2" + "reference": "2.0.0-rc3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/bigmenu-2.0.0-rc2.zip", - "reference": "2.0.0-rc2", - "shasum": "180b0292e5f0e8eedf0367aa110d1c536b07b935" + "url": "https://ftp.drupal.org/files/projects/bigmenu-2.0.0-rc3.zip", + "reference": "2.0.0-rc3", + "shasum": "98e0d17c00a3bad7198f8e24d69d4f97e56ad447" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0-rc2", - "datestamp": "1617224807", + "version": "2.0.0-rc3", + "datestamp": "1680568094", "security-coverage": { "status": "not-covered", "message": "RC releases are not covered by Drupal security advisories." @@ -2660,76 +2565,28 @@ "source": "https://git.drupalcode.org/project/bigmenu" } }, - { - "name": "drupal/block_place", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/block_place.git", - "reference": "8.x-1.0" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/block_place-8.x-1.0.zip", - "reference": "8.x-1.0", - "shasum": "d10b8ce20a9642a99c1b3961324edf4966c64099" - }, - "require": { - "drupal/core": "^9" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0", - "datestamp": "1589789731", - "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": "iyyappan.govind", - "homepage": "https://www.drupal.org/user/3217889" - }, - { - "name": "rpsu", - "homepage": "https://www.drupal.org/user/102121" - } - ], - "description": "Allow administrators to place blocks from any Drupal page", - "homepage": "https://www.drupal.org/project/block_place", - "support": { - "source": "https://git.drupalcode.org/project/block_place" - } - }, { "name": "drupal/captcha", - "version": "1.9.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/captcha.git", - "reference": "8.x-1.9" + "reference": "8.x-1.10" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/captcha-8.x-1.9.zip", - "reference": "8.x-1.9", - "shasum": "aefe4d37341f8f00f469ac5c1d5f577cbd9f9a0b" + "url": "https://ftp.drupal.org/files/projects/captcha-8.x-1.10.zip", + "reference": "8.x-1.10", + "shasum": "17fb9e34d03409809e3afd03bbeb8cbb489e7d0a" }, "require": { - "drupal/core": "^8.9 || ^9 || ^10" + "drupal/core": "^8.9 || ^9" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.9", - "datestamp": "1672484865", + "version": "8.x-1.10", + "datestamp": "1680254570", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2794,28 +2651,27 @@ }, { "name": "drupal/chosen", - "version": "3.0.3", + "version": "4.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/chosen.git", - "reference": "3.0.3" + "reference": "4.0.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/chosen-3.0.3.zip", - "reference": "3.0.3", - "shasum": "0093f31786e429b1a614159a658ca55d17ae3824" + "url": "https://ftp.drupal.org/files/projects/chosen-4.0.0.zip", + "reference": "4.0.0", + "shasum": "6355b49a1dc90f372d38b0e100745e387cad3423" }, "require": { "drupal/chosen_lib": "*", - "drupal/core": "^8.8 || ^9 || ^10", - "harvesthq/chosen": "^1.8.7" + "drupal/core": "^9.2 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "3.0.3", - "datestamp": "1654688115", + "version": "4.0.0", + "datestamp": "1680955162", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2864,30 +2720,25 @@ "homepage": "https://www.drupal.org/user/235438" } ], - "description": "Makes select elements more friendly using the Chosen jQuery plugin", + "description": "Makes select elements more user-friendly using Chosen.", "homepage": "https://www.drupal.org/project/chosen", - "keywords": [ - "Chosen", - "Drupal" - ], "support": { - "source": "https://drupal.org/project/chosen", - "issues": "https://drupal.org/project/issues/chosen" + "source": "https://git.drupalcode.org/project/chosen" } }, { "name": "drupal/chosen_lib", - "version": "3.0.5", + "version": "4.0.0", "require": { - "drupal/chosen": "^3", + "drupal/chosen": "^4", "drupal/core": "^9.2 || ^10", "php": ">=5.6.0" }, "type": "metapackage", "extra": { "drupal": { - "version": "3.0.5", - "datestamp": "1673783725", + "version": "4.0.0", + "datestamp": "1680955162", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2947,6 +2798,101 @@ "source": "https://git.drupalcode.org/project/chosen" } }, + { + "name": "drupal/ckeditor", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/ckeditor.git", + "reference": "1.0.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/ckeditor-1.0.2.zip", + "reference": "1.0.2", + "shasum": "fec2ca9ad852a00c7b9584cb6040dc860364c481" + }, + "require": { + "drupal/core": "^9.4 || ^10" + }, + "require-dev": { + "drupal/classy": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.0.2", + "datestamp": "1687261951", + "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": "dczepierga", + "homepage": "https://www.drupal.org/user/911466" + }, + { + "name": "hass", + "homepage": "https://www.drupal.org/user/85918" + }, + { + "name": "jcisio", + "homepage": "https://www.drupal.org/user/210762" + }, + { + "name": "Jorrit", + "homepage": "https://www.drupal.org/user/161217" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "Magnus", + "homepage": "https://www.drupal.org/user/73919" + }, + { + "name": "mkesicki", + "homepage": "https://www.drupal.org/user/922884" + }, + { + "name": "nod_", + "homepage": "https://www.drupal.org/user/598310" + }, + { + "name": "p.wiaderny", + "homepage": "https://www.drupal.org/user/2956619" + }, + { + "name": "vokiel", + "homepage": "https://www.drupal.org/user/2793801" + }, + { + "name": "Wim Leers", + "homepage": "https://www.drupal.org/user/99777" + }, + { + "name": "wwalc", + "homepage": "https://www.drupal.org/user/184556" + }, + { + "name": "xjm", + "homepage": "https://www.drupal.org/user/65776" + } + ], + "description": "WYSIWYG editing for rich text fields using CKEditor.", + "homepage": "https://www.drupal.org/project/ckeditor", + "support": { + "source": "https://git.drupalcode.org/project/ckeditor" + } + }, { "name": "drupal/components", "version": "2.4.0", @@ -3131,27 +3077,27 @@ }, { "name": "drupal/config_ignore", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_ignore.git", - "reference": "8.x-2.3" + "reference": "8.x-2.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.3.zip", - "reference": "8.x-2.3", - "shasum": "2e1f07a455275fb6637909921a8915646601fc00" + "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.4.zip", + "reference": "8.x-2.4", + "shasum": "e0e45dde2d6927c5d26de59f352792fb6cf26554" }, "require": { "drupal/config_filter": "^1 || ^2", - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.3", - "datestamp": "1608306489", + "version": "8.x-2.4", + "datestamp": "1676045435", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3183,7 +3129,74 @@ "homepage": "http://drupal.org/project/config_ignore", "support": { "source": "https://git.drupalcode.org/project/config_ignore", - "issues": "http://drupal.org/project/config_ignore", + "issues": "https://drupal.org/project/config_ignore", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/config_inspector", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/config_inspector.git", + "reference": "2.1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/config_inspector-2.1.2.zip", + "reference": "2.1.2", + "shasum": "bc6269241e357d7dfd15750c8d8392102ec9f880" + }, + "require": { + "drupal/core": "^9.2 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.1.2", + "datestamp": "1686168059", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "aspilicious", + "homepage": "https://www.drupal.org/user/172527" + }, + { + "name": "Gábor Hojtsy", + "homepage": "https://www.drupal.org/user/4166" + }, + { + "name": "Jose Reyero", + "homepage": "https://www.drupal.org/user/4299" + }, + { + "name": "vijaycs85", + "homepage": "https://www.drupal.org/user/93488" + }, + { + "name": "Wim Leers", + "homepage": "https://www.drupal.org/user/99777" + } + ], + "description": "Provides a configuration data and structure inspector tool", + "homepage": "https://drupal.org/project/config_inspector", + "support": { + "source": "https://cgit.drupalcode.org/config_inspector", + "issues": "https://drupal.org/project/issues/config_inspector", "irc": "irc://irc.freenode.org/drupal-contribute" } }, @@ -3232,6 +3245,18 @@ "name": "gnuget", "homepage": "https://www.drupal.org/user/992990" }, + { + "name": "Kristen Pol", + "homepage": "https://www.drupal.org/user/8389" + }, + { + "name": "lelkneralfaro", + "homepage": "https://www.drupal.org/user/3577260" + }, + { + "name": "MegaKeegMan", + "homepage": "https://www.drupal.org/user/3620027" + }, { "name": "mlncn", "homepage": "https://www.drupal.org/user/64383" @@ -3375,19 +3400,70 @@ "source": "https://git.drupalcode.org/project/config_update" } }, + { + "name": "drupal/consultation-consultation", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/consultation.git", + "reference": "1.0.4" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/consultation-1.0.4.zip", + "reference": "1.0.4", + "shasum": "57ec3fbbd6cb1c9203a4a344eace04d43ddeba48" + }, + "require": { + "drupal/core": "^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.0.4", + "datestamp": "1678243400", + "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": "ahmedjabar", + "homepage": "https://www.drupal.org/user/3150677" + }, + { + "name": "Kristen Pol", + "homepage": "https://www.drupal.org/user/8389" + }, + { + "name": "stooit", + "homepage": "https://www.drupal.org/user/2713261" + } + ], + "homepage": "https://www.drupal.org/project/consultation", + "support": { + "source": "https://git.drupalcode.org/project/consultation" + } + }, { "name": "drupal/consumers", - "version": "1.15.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/consumers.git", - "reference": "8.x-1.15" + "reference": "8.x-1.17" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/consumers-8.x-1.15.zip", - "reference": "8.x-1.15", - "shasum": "af091d0edea6ac16279dc1448ba5e3b1dd07168b" + "url": "https://ftp.drupal.org/files/projects/consumers-8.x-1.17.zip", + "reference": "8.x-1.17", + "shasum": "8e7efc2c8386ead8ca459a1a5e0558fb66cde142" }, "require": { "drupal/core": "^8 || ^9 || ^10" @@ -3395,8 +3471,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.15", - "datestamp": "1668447864", + "version": "8.x-1.17", + "datestamp": "1679920063", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3425,27 +3501,27 @@ }, { "name": "drupal/contact_storage", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/contact_storage.git", - "reference": "8.x-1.2" + "reference": "8.x-1.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/contact_storage-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "94bcf775912a5e4271e657353617224b38248e50" + "url": "https://ftp.drupal.org/files/projects/contact_storage-8.x-1.3.zip", + "reference": "8.x-1.3", + "shasum": "719dad5a991aa32e14c9bcb7b9dc76830e2331df" }, "require": { - "drupal/core": "^8.7.7 || ^9", + "drupal/core": "^9.1 || ^10", "drupal/token": "^1.6" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.2", - "datestamp": "1655840518", + "version": "8.x-1.3", + "datestamp": "1667651867", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3605,16 +3681,16 @@ }, { "name": "drupal/core", - "version": "9.4.10", + "version": "9.5.9", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "d3902ea07a003b0c05a74c0d0055aa87a75bb60a" + "reference": "c3b194f9056a297f6d72e54056c818843cab9aba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/d3902ea07a003b0c05a74c0d0055aa87a75bb60a", - "reference": "d3902ea07a003b0c05a74c0d0055aa87a75bb60a", + "url": "https://api.github.com/repos/drupal/core/zipball/c3b194f9056a297f6d72e54056c818843cab9aba", + "reference": "c3b194f9056a297f6d72e54056c818843cab9aba", "shasum": "" }, "require": { @@ -3637,8 +3713,8 @@ "ext-tokenizer": "*", "ext-xml": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "laminas/laminas-diactoros": "^2.11", "laminas/laminas-feed": "^2.17", + "longwave/laminas-diactoros": "^2.14", "masterminds/html5": "^2.7", "pear/archive_tar": "^1.4.14", "php": ">=7.3.0", @@ -3651,8 +3727,8 @@ "symfony/http-foundation": "^4.4.7", "symfony/http-kernel": "^4.4", "symfony/mime": "^5.4", - "symfony/polyfill-iconv": "^1.25", - "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-iconv": "^1.26", + "symfony/polyfill-php80": "^1.26", "symfony/process": "^4.4", "symfony/psr-http-message-bridge": "^2.1", "symfony/routing": "^4.4", @@ -3766,13 +3842,13 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/9.4.10" + "source": "https://github.com/drupal/core/tree/9.5.9" }, - "time": "2023-01-18T12:48:31+00:00" + "time": "2023-05-03T13:26:12+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "9.5.9", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", @@ -3816,13 +3892,13 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/9.5.9" + "source": "https://github.com/drupal/core-composer-scaffold/tree/9.5.10" }, "time": "2023-04-30T16:17:33+00:00" }, { "name": "drupal/core-project-message", - "version": "9.5.9", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/drupal/core-project-message.git", @@ -3857,40 +3933,40 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-project-message/tree/9.5.9" + "source": "https://github.com/drupal/core-project-message/tree/9.5.10" }, "time": "2022-02-24T17:40:53+00:00" }, { "name": "drupal/core-recommended", - "version": "9.4.10", + "version": "9.5.9", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "a17a908ec8aab9625ae8fb0dd4aa830dd8921ce2" + "reference": "63865212817ab48815a95c6aaceafcab0b9eabee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/a17a908ec8aab9625ae8fb0dd4aa830dd8921ce2", - "reference": "a17a908ec8aab9625ae8fb0dd4aa830dd8921ce2", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/63865212817ab48815a95c6aaceafcab0b9eabee", + "reference": "63865212817ab48815a95c6aaceafcab0b9eabee", "shasum": "" }, "require": { "asm89/stack-cors": "~1.3.0", "composer/semver": "~3.3.2", - "doctrine/annotations": "~1.13.2", + "doctrine/annotations": "~1.13.3", "doctrine/lexer": "~1.2.3", "doctrine/reflection": "~1.2.3", - "drupal/core": "9.4.10", - "egulias/email-validator": "~3.2", + "drupal/core": "9.5.9", + "egulias/email-validator": "~3.2.1", "guzzlehttp/guzzle": "~6.5.8", - "guzzlehttp/promises": "~1.5.1", - "guzzlehttp/psr7": "~1.9.0", - "laminas/laminas-diactoros": "~2.11.1", + "guzzlehttp/promises": "~1.5.2", + "guzzlehttp/psr7": "~1.9.1", "laminas/laminas-escaper": "~2.9.0", "laminas/laminas-feed": "~2.17.0", - "laminas/laminas-stdlib": "~3.7.1", - "masterminds/html5": "~2.7.5", + "laminas/laminas-stdlib": "~3.11.0", + "longwave/laminas-diactoros": "~2.14.2", + "masterminds/html5": "~2.7.6", "pear/archive_tar": "~1.4.14", "pear/console_getopt": "~v1.4.3", "pear/pear-core-minimal": "~v1.10.11", @@ -3903,34 +3979,34 @@ "ralouphie/getallheaders": "~3.0.3", "stack/builder": "~v1.0.6", "symfony-cmf/routing": "~2.3.4", - "symfony/console": "~v4.4.42", - "symfony/debug": "~v4.4.41", - "symfony/dependency-injection": "~v4.4.42", - "symfony/deprecation-contracts": "~v2.5.1", - "symfony/error-handler": "~v4.4.41", - "symfony/event-dispatcher": "~v4.4.42", - "symfony/event-dispatcher-contracts": "~v1.1.12", - "symfony/http-client-contracts": "~v2.5.1", - "symfony/http-foundation": "~v4.4.41", - "symfony/http-kernel": "~v4.4.42", - "symfony/mime": "~v5.4.9", - "symfony/polyfill-ctype": "~v1.25.0", - "symfony/polyfill-iconv": "~v1.25.0", - "symfony/polyfill-intl-idn": "~v1.25.0", - "symfony/polyfill-intl-normalizer": "~v1.25.0", - "symfony/polyfill-mbstring": "~v1.25.0", - "symfony/polyfill-php80": "~v1.25.0", - "symfony/process": "~v4.4.41", - "symfony/psr-http-message-bridge": "~v2.1.2", - "symfony/routing": "~v4.4.41", - "symfony/serializer": "~v4.4.42", - "symfony/service-contracts": "~v2.5.1", - "symfony/translation": "~v4.4.41", - "symfony/translation-contracts": "~v2.5.1", - "symfony/validator": "~v4.4.41", - "symfony/var-dumper": "~v5.4.9", - "symfony/yaml": "~v4.4.37", - "twig/twig": "~v2.15.3", + "symfony/console": "~v4.4.49", + "symfony/debug": "~v4.4.44", + "symfony/dependency-injection": "~v4.4.49", + "symfony/deprecation-contracts": "~v2.5.2", + "symfony/error-handler": "~v4.4.44", + "symfony/event-dispatcher": "~v4.4.44", + "symfony/event-dispatcher-contracts": "~v1.1.13", + "symfony/http-client-contracts": "~v2.5.2", + "symfony/http-foundation": "~v4.4.49", + "symfony/http-kernel": "~v4.4.50", + "symfony/mime": "~v5.4.13", + "symfony/polyfill-ctype": "~v1.27.0", + "symfony/polyfill-iconv": "~v1.27.0", + "symfony/polyfill-intl-idn": "~v1.27.0", + "symfony/polyfill-intl-normalizer": "~v1.27.0", + "symfony/polyfill-mbstring": "~v1.27.0", + "symfony/polyfill-php80": "~v1.27.0", + "symfony/process": "~v4.4.44", + "symfony/psr-http-message-bridge": "~v2.1.4", + "symfony/routing": "~v4.4.44", + "symfony/serializer": "~v4.4.47", + "symfony/service-contracts": "~v2.5.2", + "symfony/translation": "~v4.4.47", + "symfony/translation-contracts": "~v2.5.2", + "symfony/validator": "~v4.4.48", + "symfony/var-dumper": "~v5.4.19", + "symfony/yaml": "~v4.4.45", + "twig/twig": "~v2.15.4", "typo3/phar-stream-wrapper": "~v3.1.7" }, "conflict": { @@ -3943,9 +4019,9 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/9.4.10" + "source": "https://github.com/drupal/core-recommended/tree/9.5.9" }, - "time": "2023-01-18T12:48:31+00:00" + "time": "2023-05-03T13:26:12+00:00" }, { "name": "drupal/crop", @@ -4099,7 +4175,7 @@ }, { "name": "drupal/ctools_block", - "version": "4.0.3", + "version": "4.0.4", "require": { "drupal/core": "^9.3 || ^10", "drupal/ctools": "*" @@ -4107,8 +4183,8 @@ "type": "metapackage", "extra": { "drupal": { - "version": "4.0.3", - "datestamp": "1668631947", + "version": "4.0.4", + "datestamp": "1684299878", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4296,21 +4372,22 @@ }, { "name": "drupal/devel", - "version": "5.0.2", + "version": "5.1.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/devel.git", - "reference": "5.0.2" + "reference": "5.1.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/devel-5.0.2.zip", - "reference": "5.0.2", - "shasum": "9299d52d806897240fb5a57e66f12e09c4f00960" + "url": "https://ftp.drupal.org/files/projects/devel-5.1.1.zip", + "reference": "5.1.1", + "shasum": "d7423dfe9c2333508618975c37f3b63026adca50" }, "require": { - "doctrine/common": "^2.7", + "doctrine/common": "^2.7 || ^3.4", "drupal/core": "^9 || ^10", + "php": ">=7.4", "symfony/var-dumper": "^4 || ^5 || ^6" }, "conflict": { @@ -4325,8 +4402,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "5.0.2", - "datestamp": "1664317512", + "version": "5.1.1", + "datestamp": "1671644739", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4453,17 +4530,17 @@ }, { "name": "drupal/dropzonejs", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/dropzonejs.git", - "reference": "8.x-2.7" + "reference": "8.x-2.8" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/dropzonejs-8.x-2.7.zip", - "reference": "8.x-2.7", - "shasum": "10e2de01919d70c211ab7daad92bb19b02da71ce" + "url": "https://ftp.drupal.org/files/projects/dropzonejs-8.x-2.8.zip", + "reference": "8.x-2.8", + "shasum": "d330143503eef258e0b87a384d2d9ad8dcf03380" }, "require": { "drupal/core": "^9.3 || ^10" @@ -4477,8 +4554,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.7", - "datestamp": "1663761775", + "version": "8.x-2.8", + "datestamp": "1676965468", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5047,20 +5124,20 @@ }, { "name": "drupal/entity_hierarchy", - "version": "3.3.3", + "version": "3.3.5", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entity_hierarchy.git", - "reference": "3.3.3" + "reference": "3.3.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entity_hierarchy-3.3.3.zip", - "reference": "3.3.3", - "shasum": "adc6c115dc416671eb84e01b707e997e48f5e87a" + "url": "https://ftp.drupal.org/files/projects/entity_hierarchy-3.3.5.zip", + "reference": "3.3.5", + "shasum": "63e27da3bbd0f6fdc458226e00201b4449236cbe" }, "require": { - "drupal/core": "^9.0 || ^10.0", + "drupal/core": "^9.4 || ^10.0", "drupal/dbal": "~1.0", "previousnext/nested-set": "^0.1.1" }, @@ -5070,8 +5147,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.3.3", - "datestamp": "1669764762", + "version": "3.3.5", + "datestamp": "1680218986", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5233,17 +5310,17 @@ }, { "name": "drupal/environment_indicator", - "version": "4.0.12", + "version": "4.0.14", "source": { "type": "git", "url": "https://git.drupalcode.org/project/environment_indicator.git", - "reference": "4.0.12" + "reference": "4.0.14" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/environment_indicator-4.0.12.zip", - "reference": "4.0.12", - "shasum": "4ccb08b69bb7cb2e093db209b7839484823bb746" + "url": "https://ftp.drupal.org/files/projects/environment_indicator-4.0.14.zip", + "reference": "4.0.14", + "shasum": "ff4fe11fcd5fa08b7ba7a451302cf93e5f68449c" }, "require": { "drupal/core": "^9.2 || ^10" @@ -5251,8 +5328,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.0.12", - "datestamp": "1671556019", + "version": "4.0.14", + "datestamp": "1674120945", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5280,39 +5357,35 @@ } }, { - "name": "drupal/facets", - "version": "2.0.5", + "name": "drupal/events_log_track", + "version": "3.1.5", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/facets.git", - "reference": "2.0.5" + "url": "https://git.drupalcode.org/project/events_log_track.git", + "reference": "3.1.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/facets-2.0.5.zip", - "reference": "2.0.5", - "shasum": "8be11b5bca088212270603cd3f3e69185022e379" + "url": "https://ftp.drupal.org/files/projects/events_log_track-3.1.5.zip", + "reference": "3.1.5", + "shasum": "24e64083588170f3bbcf5400c4ab4f7eafc4e6a7" }, "require": { - "drupal/core": "^9.3 || ^10.0" - }, - "conflict": { - "drupal/search_api": "<1.14" + "drupal/core": "^9 || ^10" }, "require-dev": { - "drupal/jquery_ui_slider": "~1.1", - "drupal/jquery_ui_touch_punch": "~1.0", - "drupal/search_api": "^1.25||1.x-dev" - }, - "suggest": { - "drupal/jquery_ui_slider": "Required for the 'Facets Range Widget' module to work", - "drupal/jquery_ui_touch_punch": "Required for the 'Facets Range Widget' module to work" + "drupal/event_log_track-event_log_track": "*", + "drupal/event_log_track_auth-event_log_track_auth": "*", + "drupal/group": "*", + "drupal/media": "*", + "drupal/tfa": "*", + "drupal/token": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.5", - "datestamp": "1658315614", + "version": "3.1.5", + "datestamp": "1680719191", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5321,118 +5394,103 @@ }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "authors": [ { - "name": "See all contributors", - "homepage": "https://www.drupal.org/node/2348769/committers" - }, - { - "name": "drunken monkey", - "homepage": "https://www.drupal.org/user/205582" - }, - { - "name": "mkalkbrenner", - "homepage": "https://www.drupal.org/user/124705" + "name": "Stephen Mustgrave", + "homepage": "https://www.drupal.org/user/1840602", + "email": "smustgrave@gmail.com", + "role": "Maintainer" }, { - "name": "Nick_vh", - "homepage": "https://www.drupal.org/user/122682" + "name": "smustgrave", + "homepage": "https://www.drupal.org/user/3252890" }, { - "name": "StryKaizer", - "homepage": "https://www.drupal.org/user/462700" + "name": "stevenlafl", + "homepage": "https://www.drupal.org/user/2236078" } ], - "description": "The Facet module allows site builders to easily create and manage faceted search interfaces.", - "homepage": "https://www.drupal.org/project/facets", + "description": "Logs general CUD events performed by the user (using the forms) on the website.", + "homepage": "https://drupal.org/project/events_log_track", "support": { - "source": "git://git.drupal.org/project/facets.git", - "issues": "https://www.drupal.org/project/issues/facets", - "irc": "irc://irc.freenode.org/drupal-search-api" + "source": "https://git.drupalcode.org/project/events_log_track", + "issues": "https://drupal.org/project/issues/events_log_track" } }, { - "name": "drupal/features", - "version": "3.12.0", + "name": "drupal/facets", + "version": "2.0.6", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/features.git", - "reference": "8.x-3.12" + "url": "https://git.drupalcode.org/project/facets.git", + "reference": "2.0.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/features-8.x-3.12.zip", - "reference": "8.x-3.12", - "shasum": "f28d6e7d3340e32666a3e8ae515ed746dbe86b98" + "url": "https://ftp.drupal.org/files/projects/facets-2.0.6.zip", + "reference": "2.0.6", + "shasum": "e984e6ce69026c20d2049d4ec53748e67c5e70de" }, "require": { - "drupal/config_update": "^1.4", - "drupal/core": "^8.8 || ^9" + "drupal/core": "^9.3 || ^10.0" + }, + "conflict": { + "drupal/search_api": "<1.14" + }, + "require-dev": { + "drupal/jquery_ui_slider": "~2.0", + "drupal/jquery_ui_touch_punch": "~1.1", + "drupal/search_api": "^1.28||1.x-dev" + }, + "suggest": { + "drupal/jquery_ui_slider": "Required for the 'Facets Range Widget' module to work", + "drupal/jquery_ui_touch_punch": "Required for the 'Facets Range Widget' module to work" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.12", - "datestamp": "1612830531", + "version": "2.0.6", + "datestamp": "1671207897", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10" - } } }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ - "GPL-2.0-or-later" + "GPL-2.0+" ], "authors": [ { - "name": "dawehner", - "homepage": "https://www.drupal.org/user/99340" - }, - { - "name": "donquixote", - "homepage": "https://www.drupal.org/user/459338" - }, - { - "name": "e2thex", - "homepage": "https://www.drupal.org/user/189123" - }, - { - "name": "febbraro", - "homepage": "https://www.drupal.org/user/43670" - }, - { - "name": "flocondetoile", - "homepage": "https://www.drupal.org/user/2006064" + "name": "See all contributors", + "homepage": "https://www.drupal.org/node/2348769/committers" }, { - "name": "jmiccolis", - "homepage": "https://www.drupal.org/user/31731" + "name": "drunken monkey", + "homepage": "https://www.drupal.org/user/205582" }, { - "name": "joseph.olstad", - "homepage": "https://www.drupal.org/user/1321830" + "name": "mkalkbrenner", + "homepage": "https://www.drupal.org/user/124705" }, { - "name": "mpotter", - "homepage": "https://www.drupal.org/user/616192" + "name": "Nick_vh", + "homepage": "https://www.drupal.org/user/122682" }, { - "name": "nedjo", - "homepage": "https://www.drupal.org/user/4481" + "name": "StryKaizer", + "homepage": "https://www.drupal.org/user/462700" } ], - "description": "Enables administrators to package configuration into modules", - "homepage": "https://www.drupal.org/project/features", + "description": "The Facet module allows site builders to easily create and manage faceted search interfaces.", + "homepage": "https://www.drupal.org/project/facets", "support": { - "source": "https://git.drupalcode.org/project/features" + "source": "git://git.drupal.org/project/facets.git", + "issues": "https://www.drupal.org/project/issues/facets", + "irc": "irc://irc.freenode.org/drupal-search-api" } }, { @@ -5551,74 +5609,6 @@ "irc": "irc://irc.freenode.org/drupal-contribute" } }, - { - "name": "drupal/ga_login", - "version": "1.0.0-alpha7", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/ga_login.git", - "reference": "8.x-1.0-alpha7" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/ga_login-8.x-1.0-alpha7.zip", - "reference": "8.x-1.0-alpha7", - "shasum": "11a37203595763b7252c4fb685f68e1d47c48f69" - }, - "require": { - "drupal/core": "^8 || ^9", - "drupal/tfa": "^1.0" - }, - "require-dev": { - "drupal/tfa": "1.x-dev" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.0-alpha7", - "datestamp": "1666299034", - "security-coverage": { - "status": "not-covered", - "message": "Alpha releases are not covered by Drupal security advisories." - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "attiks", - "homepage": "https://www.drupal.org/user/105002" - }, - { - "name": "daggerhart", - "homepage": "https://www.drupal.org/user/167806" - }, - { - "name": "jcnventura", - "homepage": "https://www.drupal.org/user/122464" - }, - { - "name": "Jelle_S", - "homepage": "https://www.drupal.org/user/829198" - }, - { - "name": "nerdstein", - "homepage": "https://www.drupal.org/user/1557710" - }, - { - "name": "therealssj", - "homepage": "https://www.drupal.org/user/3408074" - } - ], - "description": "TFA plugins for Hmac-Based One Time Passwords & Time Based One Time Password with recovery codes as fallback.", - "homepage": "https://www.drupal.org/project/ga_login", - "support": { - "source": "https://git.drupalcode.org/project/ga_login" - } - }, { "name": "drupal/generated_content", "version": "1.3.1", @@ -5876,17 +5866,17 @@ }, { "name": "drupal/inline_entity_form", - "version": "1.0.0-rc14", + "version": "1.0.0-rc15", "source": { "type": "git", "url": "https://git.drupalcode.org/project/inline_entity_form.git", - "reference": "8.x-1.0-rc14" + "reference": "8.x-1.0-rc15" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/inline_entity_form-8.x-1.0-rc14.zip", - "reference": "8.x-1.0-rc14", - "shasum": "2c9efd73332acfba43fe9b29e78e508ddc9d3664" + "url": "https://ftp.drupal.org/files/projects/inline_entity_form-8.x-1.0-rc15.zip", + "reference": "8.x-1.0-rc15", + "shasum": "7702801f7e599956fc3d10cff8257809f53ac3ec" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", @@ -5898,8 +5888,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.0-rc14", - "datestamp": "1663701306", + "version": "8.x-1.0-rc15", + "datestamp": "1678126675", "security-coverage": { "status": "not-covered", "message": "RC releases are not covered by Drupal security advisories." @@ -5935,14 +5925,14 @@ "name": "jsacksick", "homepage": "https://www.drupal.org/user/972218" }, - { - "name": "kaythay", - "homepage": "https://www.drupal.org/user/2182186" - }, { "name": "oknate", "homepage": "https://www.drupal.org/user/471638" }, + { + "name": "podarok", + "homepage": "https://www.drupal.org/user/116002" + }, { "name": "ram4nd", "homepage": "https://www.drupal.org/user/601534" @@ -6062,6 +6052,72 @@ "source": "https://git.drupalcode.org/project/jquery_ui" } }, + { + "name": "drupal/jquery_ui_autocomplete", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui_autocomplete.git", + "reference": "2.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui_autocomplete-2.0.0.zip", + "reference": "2.0.0", + "shasum": "927d312a74002f99e1c971d3d268be1b0a532fc7" + }, + "require": { + "drupal/core": "^9.2 || ^10", + "drupal/jquery_ui": "^1.6", + "drupal/jquery_ui_menu": "^2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0", + "datestamp": "1670871461", + "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": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "nod_", + "homepage": "https://www.drupal.org/user/598310" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "Wim Leers", + "homepage": "https://www.drupal.org/user/99777" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI Autocomplete library.", + "homepage": "https://www.drupal.org/project/jquery_ui_autocomplete", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui_autocomplete" + } + }, { "name": "drupal/jquery_ui_draggable", "version": "2.0.0", @@ -6169,19 +6225,84 @@ "source": "https://git.drupalcode.org/project/jquery_ui_droppable" } }, + { + "name": "drupal/jquery_ui_menu", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui_menu.git", + "reference": "2.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui_menu-2.0.0.zip", + "reference": "2.0.0", + "shasum": "5e1b56bf457669c7779a81784f49da63e3956854" + }, + "require": { + "drupal/core": "^9.2 || ^10", + "drupal/jquery_ui": "^1.6" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0", + "datestamp": "1670871546", + "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": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "nod_", + "homepage": "https://www.drupal.org/user/598310" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "Wim Leers", + "homepage": "https://www.drupal.org/user/99777" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI Menu library.", + "homepage": "https://www.drupal.org/project/jquery_ui_menu", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui_menu" + } + }, { "name": "drupal/key", - "version": "1.16.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/key.git", - "reference": "8.x-1.16" + "reference": "8.x-1.17" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/key-8.x-1.16.zip", - "reference": "8.x-1.16", - "shasum": "35a4476d7d52563bb26bd4dcc5fbf5fdd7c9391b" + "url": "https://ftp.drupal.org/files/projects/key-8.x-1.17.zip", + "reference": "8.x-1.17", + "shasum": "fa9f606d2ba0e20693e12040004e2ed31302ed03" }, "require": { "drupal/core": ">=8.9 <11" @@ -6189,8 +6310,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.16", - "datestamp": "1661968490", + "version": "8.x-1.17", + "datestamp": "1674343967", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6236,26 +6357,26 @@ }, { "name": "drupal/layout_builder_modal", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/layout_builder_modal.git", - "reference": "8.x-1.1" + "reference": "8.x-1.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/layout_builder_modal-8.x-1.1.zip", - "reference": "8.x-1.1", - "shasum": "5063c2d5e33265c92bfeed34df6682d74c973c51" + "url": "https://ftp.drupal.org/files/projects/layout_builder_modal-8.x-1.2.zip", + "reference": "8.x-1.2", + "shasum": "9031696991d8746f5cc9ad47f47398ac2a0cbda1" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^9.2|^10.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.1", - "datestamp": "1588175915", + "version": "8.x-1.2", + "datestamp": "1670939257", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6345,6 +6466,14 @@ "homepage": "https://www.drupal.org/u/eiriksm", "role": "Maintainer" }, + { + "name": "eiriksm", + "homepage": "https://www.drupal.org/user/1014468" + }, + { + "name": "gravelpot", + "homepage": "https://www.drupal.org/user/748208" + }, { "name": "Jeff Cardwell", "homepage": "https://www.drupal.org/user/2913129" @@ -6391,26 +6520,26 @@ }, { "name": "drupal/linked_field", - "version": "1.3.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linked_field.git", - "reference": "8.x-1.3" + "reference": "8.x-1.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linked_field-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "0350c415eba6ff63d9fc8f3a162564dd4c2142e2" + "url": "https://ftp.drupal.org/files/projects/linked_field-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "31ed8008d2f88c693334f6faad03112280820fe0" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8.8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.3", - "datestamp": "1583855735", + "version": "8.x-1.5", + "datestamp": "1677239525", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6439,32 +6568,36 @@ }, { "name": "drupal/linkit", - "version": "6.0.0-beta3", + "version": "6.0.0-rc1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "6.0.0-beta3" + "reference": "6.0.0-rc1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linkit-6.0.0-beta3.zip", - "reference": "6.0.0-beta3", - "shasum": "39a5bf54cbc88324d788a573df7b3fecf7622065" + "url": "https://ftp.drupal.org/files/projects/linkit-6.0.0-rc1.zip", + "reference": "6.0.0-rc1", + "shasum": "126069976e2a7d34cc8530c0950c75bd7f1b5d3c" }, "require": { - "drupal/core": "^8.7.7 || ^9" + "drupal/core": "^9.4 || ^10.0.0" + }, + "conflict": { + "drupal/core": ">=10.1" }, "require-dev": { + "drupal/ckeditor": "*", "drupal/imce": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.0-beta3", - "datestamp": "1632946984", + "version": "6.0.0-rc1", + "datestamp": "1681070405", "security-coverage": { "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." + "message": "RC releases are not covered by Drupal security advisories." } } }, @@ -6497,26 +6630,26 @@ }, { "name": "drupal/login_security", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/login_security.git", - "reference": "2.0.0" + "reference": "2.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/login_security-2.0.0.zip", - "reference": "2.0.0", - "shasum": "d7ff455062776b3ca8976339230f428aca78bb36" + "url": "https://ftp.drupal.org/files/projects/login_security-2.0.1.zip", + "reference": "2.0.1", + "shasum": "47527303abd8126d599629e1548f3bc3fb6807af" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8.9 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0", - "datestamp": "1601991049", + "version": "2.0.1", + "datestamp": "1672756360", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6562,9 +6695,10 @@ } ], "description": "Enable security options in the login flow of the site.", - "homepage": "https://www.drupal.org/project/login_security", + "homepage": "https://drupal.org/project/login_security", "support": { - "source": "https://git.drupalcode.org/project/login_security" + "source": "https://git.drupalcode.org/project/login_security", + "issues": "https://drupal.org/project/issues/login_security" } }, { @@ -6722,6 +6856,70 @@ "source": "https://git.drupalcode.org/project/media_file_delete" } }, + { + "name": "drupal/media_vimeo_domain_privacy", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/media_vimeo_domain_privacy.git", + "reference": "1.1.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/media_vimeo_domain_privacy-1.1.0.zip", + "reference": "1.1.0", + "shasum": "2c737b6f7ab26f6ea93cacf65a7d5021d73d61f2" + }, + "require": { + "drupal/core": "^8.8 || ^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "1.1.0", + "datestamp": "1676439672", + "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": "ameymudras", + "homepage": "https://www.drupal.org/user/1880852" + }, + { + "name": "joshua1234511", + "homepage": "https://www.drupal.org/user/3362218" + }, + { + "name": "Kristen Pol", + "homepage": "https://www.drupal.org/user/8389" + }, + { + "name": "steveworley", + "homepage": "https://www.drupal.org/user/583814" + }, + { + "name": "stooit", + "homepage": "https://www.drupal.org/user/2713261" + }, + { + "name": "yusufhm", + "homepage": "https://www.drupal.org/user/1053788" + } + ], + "description": "Handle Vimeo videos with domain-level privacy setting.", + "homepage": "https://www.drupal.org/project/media_vimeo_domain_privacy", + "support": { + "source": "https://git.drupalcode.org/project/media_vimeo_domain_privacy" + } + }, { "name": "drupal/menu_block", "version": "1.10.0", @@ -6915,27 +7113,65 @@ }, { "name": "drupal/migrate_file", - "version": "2.1.1", + "version": "2.1.2", "source": { "type": "git", - "url": "https://git.drupalcode.org/issue/migrate_file-3288621.git", - "reference": "9b971e83cc54acc84166bee794a82b577a161804" + "url": "https://git.drupalcode.org/project/migrate_file.git", + "reference": "2.1.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/migrate_file-2.1.2.zip", + "reference": "2.1.2", + "shasum": "3febc85243c9a67991db102a10c6d81c0bea07c5" + }, + "require": { + "drupal/core": "^9 | ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.1.2", + "datestamp": "1674948365", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } }, - "type": "drupal-module" + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "drclaw", + "homepage": "https://www.drupal.org/user/823702" + } + ], + "description": "Additional support for migrating files including downloading remote files and using remote uris (without download)", + "homepage": "https://www.drupal.org/project/migrate_file", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/migrate_file", + "issues": "https://www.drupal.org/project/issues/migrate_file" + } }, { "name": "drupal/migrate_plus", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/migrate_plus.git", - "reference": "6.0.0" + "reference": "6.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.0.zip", - "reference": "6.0.0", - "shasum": "cbdda92ef6c4d096a673ff391bc061e012433ecf" + "url": "https://ftp.drupal.org/files/projects/migrate_plus-6.0.1.zip", + "reference": "6.0.1", + "shasum": "154e5c627c8b32648cb4b4034a196a289b0626fa" }, "require": { "drupal/core": ">=9.1", @@ -6952,8 +7188,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.0", - "datestamp": "1650983140", + "version": "6.0.1", + "datestamp": "1672428002", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7041,17 +7277,17 @@ }, { "name": "drupal/migrate_tools", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/migrate_tools.git", - "reference": "6.0.0" + "reference": "6.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/migrate_tools-6.0.0.zip", - "reference": "6.0.0", - "shasum": "bec5a0e4fbb6ec0face6780c2ab98ffe6096188b" + "url": "https://ftp.drupal.org/files/projects/migrate_tools-6.0.1.zip", + "reference": "6.0.1", + "shasum": "8c07d1b61b319acd4fd395e22ef9bf34d23299ba" }, "require": { "drupal/core": ">=9.1", @@ -7069,8 +7305,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.0", - "datestamp": "1651240616", + "version": "6.0.1", + "datestamp": "1672424943", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7112,20 +7348,20 @@ }, { "name": "drupal/minisite", - "version": "1.3.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/minisite.git", - "reference": "8.x-1.3" + "reference": "2.0.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/minisite-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "0e910ad5c6a27df5292a5e7888d62b74fa8b1c53" + "url": "https://ftp.drupal.org/files/projects/minisite-2.0.0.zip", + "reference": "2.0.0", + "shasum": "86ff8c80dd203831169107376fedf253497fe39d" }, "require": { - "drupal/core": "^8 || ^9", + "drupal/core": "^9 || ^10", "ext-zip": "*" }, "require-dev": { @@ -7134,8 +7370,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.3", - "datestamp": "1590142688", + "version": "2.0.0", + "datestamp": "1674095544", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7828,28 +8064,28 @@ }, { "name": "drupal/recaptcha", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/recaptcha.git", - "reference": "8.x-3.1" + "reference": "8.x-3.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/recaptcha-8.x-3.1.zip", - "reference": "8.x-3.1", - "shasum": "8d0b8567b7f42d3d735ad5f4cb484aa7a49cf4d9" + "url": "https://ftp.drupal.org/files/projects/recaptcha-8.x-3.2.zip", + "reference": "8.x-3.2", + "shasum": "a4457e8ba4c80b35be22a2bba0c18e376ee98bc8" }, "require": { - "drupal/captcha": "^1.4", + "drupal/captcha": "^1.4 || ^2", "drupal/core": "^8.9 || ^9 || ^10", "google/recaptcha": "^1.2" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.1", - "datestamp": "1664590356", + "version": "8.x-3.2", + "datestamp": "1681166371", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -7999,6 +8235,10 @@ "homepage": "https://www.drupal.org/u/fabianderijk", "role": "Maintainer" }, + { + "name": "fabianderijk", + "homepage": "https://www.drupal.org/user/278745" + }, { "name": "immoreel", "homepage": "https://www.drupal.org/user/1695422" @@ -8018,26 +8258,26 @@ }, { "name": "drupal/robotstxt", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/robotstxt.git", - "reference": "8.x-1.4" + "reference": "8.x-1.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/robotstxt-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "8793121a58d2897c0523f3cf13c31f7d80f90154" + "url": "https://ftp.drupal.org/files/projects/robotstxt-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "08c2b8dcd7b7f7e3bf0f7b7b88f128603d3b11b1" }, "require": { - "drupal/core": "^8.0 || ^9.0" + "drupal/core": "^9.3 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.4", - "datestamp": "1585290535", + "version": "8.x-1.5", + "datestamp": "1671555186", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8046,7 +8286,7 @@ }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "authors": [ { @@ -8112,8 +8352,8 @@ "role": "Maintainer" }, { - "name": "benjy", - "homepage": "https://www.drupal.org/user/1852732" + "name": "JeroenT", + "homepage": "https://www.drupal.org/user/2228934" } ], "description": "Allows site administrators to grant some roles the authority to assign selected roles to users.", @@ -8125,22 +8365,30 @@ }, { "name": "drupal/scheduled_transitions", - "version": "2.2.1", + "version": "2.3.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/scheduled_transitions.git", - "reference": "2.2.1" + "reference": "2.3.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/scheduled_transitions-2.2.1.zip", - "reference": "2.2.1", - "shasum": "3c443a40aa90c1246050c2b862d1b7a11048e9e9" + "url": "https://ftp.drupal.org/files/projects/scheduled_transitions-2.3.0.zip", + "reference": "2.3.0", + "shasum": "240e389d549141e24ec9d7d7c2223cca7b4357ca" }, "require": { - "drupal/core": "^9", - "drupal/dynamic_entity_reference": "^1.0 || ^2.0", - "php": ">=7.4" + "drupal/core": "^9.2 || ^10", + "drupal/dynamic_entity_reference": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": ">=8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "drupal/coder": "^8.3", + "drush/drush": "^10 || ^11", + "mglaman/phpstan-drupal": "^1", + "phpstan/phpstan": "^1", + "phpstan/phpstan-deprecation-rules": "*" }, "suggest": { "drupal/token": "Shows Token UI on Add Scheduled Transitions form." @@ -8148,8 +8396,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.2.1", - "datestamp": "1648075432", + "version": "2.3.0", + "datestamp": "1670235101", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8179,17 +8427,17 @@ }, { "name": "drupal/search_api", - "version": "1.28.0", + "version": "1.29.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/search_api.git", - "reference": "8.x-1.28" + "reference": "8.x-1.29" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/search_api-8.x-1.28.zip", - "reference": "8.x-1.28", - "shasum": "d3ae0bb3cf17c986d5e0c6edb87aee6580b6fc1e" + "url": "https://ftp.drupal.org/files/projects/search_api-8.x-1.29.zip", + "reference": "8.x-1.29", + "shasum": "4663abbcfe5dfc159ee0886fc6c437e998fc0653" }, "require": { "drupal/core": "^9.3 || ^10.0" @@ -8210,8 +8458,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.28", - "datestamp": "1667814116", + "version": "8.x-1.29", + "datestamp": "1679910252", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8251,17 +8499,17 @@ }, { "name": "drupal/search_api_attachments", - "version": "9.0.0", + "version": "9.0.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/search_api_attachments.git", - "reference": "9.0.0" + "reference": "9.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/search_api_attachments-9.0.0.zip", - "reference": "9.0.0", - "shasum": "6f0071520ae1555a233473cdd6dffcb6498e6738" + "url": "https://ftp.drupal.org/files/projects/search_api_attachments-9.0.1.zip", + "reference": "9.0.1", + "shasum": "cd0a7fa3062f3396ee95d9fdc5c6545e6f2c52f9" }, "require": { "drupal/core": "^9 || ^10", @@ -8270,8 +8518,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "9.0.0", - "datestamp": "1641200225", + "version": "9.0.1", + "datestamp": "1676994670", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8398,26 +8646,26 @@ }, { "name": "drupal/seckit", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/seckit.git", - "reference": "2.0.0" + "reference": "2.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/seckit-2.0.0.zip", - "reference": "2.0.0", - "shasum": "d5356230b2de7d1e8a2e68eb81e70619a2e36c1e" + "url": "https://ftp.drupal.org/files/projects/seckit-2.0.1.zip", + "reference": "2.0.1", + "shasum": "2eee3b9719bdd5951c2b78f419c86f4765010439" }, "require": { - "drupal/core": "^8.8 || ^9" + "drupal/core": "^9.3 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0", - "datestamp": "1598609351", + "version": "2.0.1", + "datestamp": "1671195208", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8494,9 +8742,17 @@ "name": "danieljrmay", "homepage": "https://www.drupal.org/user/83076" }, + { + "name": "Kristen Pol", + "homepage": "https://www.drupal.org/user/8389" + }, { "name": "leymannx", "homepage": "https://www.drupal.org/user/2482808" + }, + { + "name": "VladimirAus", + "homepage": "https://www.drupal.org/user/673120" } ], "description": "Provides a security.txt file for your site.", @@ -8650,17 +8906,17 @@ }, { "name": "drupal/simple_sitemap", - "version": "4.1.3", + "version": "4.1.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/simple_sitemap.git", - "reference": "4.1.3" + "reference": "4.1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.3.zip", - "reference": "4.1.3", - "shasum": "18eda442709f32102416a0112abc33649658f8e9" + "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.4.zip", + "reference": "4.1.4", + "shasum": "55986f9819c60216ad6401941ca4176a1e086c8b" }, "require": { "drupal/core": "^9.3 || ^10", @@ -8669,8 +8925,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.1.3", - "datestamp": "1674225949", + "version": "4.1.4", + "datestamp": "1674226567", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8707,20 +8963,20 @@ }, { "name": "drupal/swiftmailer", - "version": "2.2.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/swiftmailer.git", - "reference": "8.x-2.2" + "reference": "8.x-2.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/swiftmailer-8.x-2.2.zip", - "reference": "8.x-2.2", - "shasum": "54269f7ceb6364e4fb953cf67b52b555d748d09c" + "url": "https://ftp.drupal.org/files/projects/swiftmailer-8.x-2.4.zip", + "reference": "8.x-2.4", + "shasum": "790c682ea8774b4e03200db2c2426966d3564820" }, "require": { - "drupal/core": "^8.9.11 || ^9.0.10", + "drupal/core": "^8.9.11 || ^9.0.10 || ^10", "drupal/mailsystem": "^4.1.0", "egulias/email-validator": "^2.0||^3", "html2text/html2text": "^4.0.1", @@ -8731,8 +8987,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.2", - "datestamp": "1639141915", + "version": "8.x-2.4", + "datestamp": "1673559953", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8872,6 +9128,10 @@ "GPL-2.0-or-later" ], "authors": [ + { + "name": "cmlara", + "homepage": "https://www.drupal.org/user/1790054" + }, { "name": "coltrane", "homepage": "https://www.drupal.org/user/91990" @@ -8970,17 +9230,17 @@ }, { "name": "drupal/twig_tweak", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/twig_tweak.git", - "reference": "3.2.0" + "reference": "3.2.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.2.0.zip", - "reference": "3.2.0", - "shasum": "2e5944a0705929f9db21a8684fdca0d1a0b001e4" + "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.2.1.zip", + "reference": "3.2.1", + "shasum": "89fc08b60f494a7d786251b6c2c493c536218222" }, "require": { "drupal/core": "^9.3 || ^10.0", @@ -8995,8 +9255,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.2.0", - "datestamp": "1664084754", + "version": "3.2.1", + "datestamp": "1677404306", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -9031,26 +9291,26 @@ }, { "name": "drupal/username_enumeration_prevention", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/username_enumeration_prevention.git", - "reference": "8.x-1.2" + "reference": "8.x-1.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/username_enumeration_prevention-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "0fe67462d3c919a7a8f33c41f1cb593ecf7ed7cf" + "url": "https://ftp.drupal.org/files/projects/username_enumeration_prevention-8.x-1.3.zip", + "reference": "8.x-1.3", + "shasum": "fa3f1f57a9d5ad77943c484ff7e1e40f5cd73df7" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.2", - "datestamp": "1613949220", + "version": "8.x-1.3", + "datestamp": "1670892402", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -9136,17 +9396,17 @@ }, { "name": "drupal/webform", - "version": "6.1.3", + "version": "6.1.4", "source": { "type": "git", "url": "https://git.drupalcode.org/project/webform.git", - "reference": "6.1.3" + "reference": "6.1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/webform-6.1.3.zip", - "reference": "6.1.3", - "shasum": "efd032eadc10a4752b9b0203152a5d20eefac175" + "url": "https://ftp.drupal.org/files/projects/webform-6.1.4.zip", + "reference": "6.1.4", + "shasum": "b1c27c2a210670b6d149cdd92cbb37100b19cf64" }, "require": { "drupal/core": "^8.8 || ^9" @@ -9156,24 +9416,24 @@ "drupal/bootstrap": "~3.0", "drupal/captcha": "~1.0", "drupal/chosen": "~3.0", - "drupal/clientside_validation": "~3.0", + "drupal/clientside_validation": "*", "drupal/clientside_validation_jquery": "*", - "drupal/devel": "~3.0", + "drupal/devel": "*", "drupal/entity": "~1.0", - "drupal/entity_print": "~2.0", + "drupal/entity_print": "*", "drupal/gnode": "*", - "drupal/group": "1.0", + "drupal/group": "*", "drupal/jquery_ui": "~1.0", - "drupal/jquery_ui_checkboxradio": "~1.0", + "drupal/jquery_ui_checkboxradio": "*", "drupal/jquery_ui_datepicker": "~1.0", "drupal/lingotek": "~3.0", "drupal/mailsystem": "~4.0", "drupal/paragraphs": "~1.0", "drupal/select2": "~1.0", "drupal/smtp": "~1.0", - "drupal/styleguide": "~1.0", + "drupal/styleguide": "~2.0", "drupal/telephone_validation": "~2.0", - "drupal/token": "~1.0", + "drupal/token": "*", "drupal/variationcache": "~1.0", "drupal/webform-webform_group": "*", "drupal/webform_access": "*", @@ -9194,8 +9454,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.1.3", - "datestamp": "1644940723", + "version": "6.1.4", + "datestamp": "1673535467", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -9217,16 +9477,15 @@ "homepage": "https://www.drupal.org/u/jrockowitz", "role": "Maintainer" }, - { - "name": "Alexander Trotsenko (bucefal91)", - "homepage": "https://www.drupal.org/u/bucefal91", - "role": "Co-maintainer" - }, { "name": "Contributors", "homepage": "https://www.drupal.org/node/7404/committers", "role": "Contributor" }, + { + "name": "Liam Morland", + "homepage": "https://www.drupal.org/user/493050" + }, { "name": "quicksketch", "homepage": "https://www.drupal.org/user/35821" @@ -9247,22 +9506,22 @@ }, { "name": "drush/drush", - "version": "11.5.1", + "version": "11.6.0", "source": { "type": "git", "url": "https://github.com/drush-ops/drush.git", - "reference": "3138f82baa3b0e29ac935893a444881a7332177d" + "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/3138f82baa3b0e29ac935893a444881a7332177d", - "reference": "3138f82baa3b0e29ac935893a444881a7332177d", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", + "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", "shasum": "" }, "require": { "chi-teck/drupal-code-generator": "^2.4", "composer/semver": "^1.4 || ^3", - "consolidation/annotated-command": "^4.7.0", + "consolidation/annotated-command": "^4.8.2", "consolidation/config": "^2", "consolidation/filter-via-dot-access-data": "^2", "consolidation/robo": "^3.0.9 || ^4.0.1", @@ -9380,7 +9639,7 @@ "forum": "http://drupal.stackexchange.com/questions/tagged/drush", "issues": "https://github.com/drush-ops/drush/issues", "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/11.5.1" + "source": "https://github.com/drush-ops/drush/tree/11.6.0" }, "funding": [ { @@ -9388,20 +9647,20 @@ "type": "github" } ], - "time": "2023-02-21T02:32:48+00:00" + "time": "2023-06-06T18:46:18+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.5", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b531a2311709443320c786feb4519cfaf94af796" + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796", - "reference": "b531a2311709443320c786feb4519cfaf94af796", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", "shasum": "" }, "require": { @@ -9447,7 +9706,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.5" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" }, "funding": [ { @@ -9455,7 +9714,7 @@ "type": "github" } ], - "time": "2023-01-02T17:26:14+00:00" + "time": "2023-06-01T07:04:22+00:00" }, { "name": "enlightn/security-checker", @@ -9638,16 +9897,16 @@ }, { "name": "govcms/govcms", - "version": "2.26.0", + "version": "2.31.0", "source": { "type": "git", "url": "https://github.com/govCMS/GovCMS.git", - "reference": "e8d2c036f98454ab3964166295d94e088d1ffde1" + "reference": "ff7de9cf72c05be6b8b47b9d6cb14ce847521289" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/govCMS/GovCMS/zipball/e8d2c036f98454ab3964166295d94e088d1ffde1", - "reference": "e8d2c036f98454ab3964166295d94e088d1ffde1", + "url": "https://api.github.com/repos/govCMS/GovCMS/zipball/ff7de9cf72c05be6b8b47b9d6cb14ce847521289", + "reference": "ff7de9cf72c05be6b8b47b9d6cb14ce847521289", "shasum": "" }, "require": { @@ -9658,26 +9917,26 @@ "drupal/admin_toolbar": "3.3.0", "drupal/adminimal_admin_toolbar": "1.11.0", "drupal/adminimal_theme": "1.6.0", - "drupal/bigmenu": "2.0.0-rc2", - "drupal/block_place": "1.0", - "drupal/captcha": "1.9.0", - "drupal/chosen": "3.0.3", + "drupal/bigmenu": "2.0.0-rc3", + "drupal/captcha": "1.10.0", + "drupal/chosen": "4.0.0", "drupal/components": "2.4.0", "drupal/config_filter": "2.4.0", - "drupal/config_ignore": "2.3.0", + "drupal/config_ignore": "2.4.0", "drupal/config_perms": "2.0", "drupal/config_split": "1.5.0", "drupal/config_update": "1.7", - "drupal/consumers": "1.15.0", - "drupal/contact_storage": "1.2.0", + "drupal/consultation-consultation": "1.0.4", + "drupal/consumers": "1.17.0", + "drupal/contact_storage": "1.3.0", "drupal/context": "4.1.0", "drupal/core-composer-scaffold": "^9", - "drupal/core-recommended": "9.4.10", + "drupal/core-recommended": "9.5.9", "drupal/crop": "2.3.0", "drupal/ctools": "3.13.0", - "drupal/devel": "5.0.2", + "drupal/devel": "5.1.1", "drupal/diff": "1.1.0", - "drupal/dropzonejs": "2.7.0", + "drupal/dropzonejs": "2.8.0", "drupal/ds": "3.15.0", "drupal/dynamic_entity_reference": "1.16.0", "drupal/embed": "1.6.0", @@ -9685,35 +9944,35 @@ "drupal/entity_browser": "2.9.0", "drupal/entity_class_formatter": "2.0.0", "drupal/entity_embed": "1.3.0", - "drupal/entity_hierarchy": "3.3.3", + "drupal/entity_hierarchy": "3.3.5", "drupal/entity_reference_display": "2.0.0", "drupal/entity_reference_revisions": "1.10.0", - "drupal/environment_indicator": "4.0.12", - "drupal/facets": "2.0.5", - "drupal/features": "3.12.0", + "drupal/environment_indicator": "4.0.14", + "drupal/events_log_track": "3.1.5", + "drupal/facets": "2.0.6", "drupal/field_group": "3.4.0", "drupal/focal_point": "1.5.0", - "drupal/ga_login": "1.0.0-alpha7", "drupal/google_analytics": "4.0.2", "drupal/govcms_dlm": "2.0.0", "drupal/honeypot": "2.1.2", - "drupal/inline_entity_form": "1.0.0-rc14", - "drupal/key": "1.16.0", - "drupal/layout_builder_modal": "1.1", + "drupal/inline_entity_form": "1.0.0-rc15", + "drupal/key": "1.17.0", + "drupal/layout_builder_modal": "1.2.0", "drupal/layout_builder_restrictions": "2.17.0", - "drupal/linked_field": "1.3.0", - "drupal/linkit": "6.0.0-beta3", - "drupal/login_security": "2.0.0", + "drupal/linked_field": "1.5.0", + "drupal/linkit": "6.0.0-rc1", + "drupal/login_security": "2.0.1", "drupal/media_entity_file_replace": "1.1.0", "drupal/media_file_delete": "1.3.0", + "drupal/media_vimeo_domain_privacy": "1.1", "drupal/menu_block": "1.10.0", "drupal/menu_trail_by_path": "2.0.0", "drupal/metatag": "1.22.0", - "drupal/migrate_file": "2.1.1", - "drupal/migrate_plus": "6.0.0", + "drupal/migrate_file": "2.1.2", + "drupal/migrate_plus": "6.0.1", "drupal/migrate_source_csv": "3.5.0", - "drupal/migrate_tools": "6.0.0", - "drupal/minisite": "1.3", + "drupal/migrate_tools": "6.0.1", + "drupal/minisite": "2.0.0", "drupal/modifiers": "1.5.0", "drupal/module_permissions": "3.2.0", "drupal/panelizer": "4.4", @@ -9722,27 +9981,27 @@ "drupal/password_policy": "4.0.0", "drupal/pathauto": "1.11.0", "drupal/real_aes": "2.5.0", - "drupal/recaptcha": "3.1.0", + "drupal/recaptcha": "3.2.0", "drupal/redirect": "1.8.0", "drupal/rest_menu_items": "3.0.3", - "drupal/robotstxt": "1.4", + "drupal/robotstxt": "1.5.0", "drupal/role_delegation": "1.2.0", - "drupal/scheduled_transitions": "2.2.1", - "drupal/search_api": "1.28.0", - "drupal/search_api_attachments": "9.0.0", + "drupal/scheduled_transitions": "2.3.0", + "drupal/search_api": "1.29.0", + "drupal/search_api_attachments": "9.0.1", "drupal/search_api_solr": "4.2.10", - "drupal/seckit": "2.0.0", + "drupal/seckit": "2.0.1", "drupal/securitytxt": "1.2.0", "drupal/shield": "1.7.0", "drupal/simple_oauth": "5.2.3", - "drupal/simple_sitemap": "4.1.3", - "drupal/swiftmailer": "2.2.0", + "drupal/simple_sitemap": "4.1.4", + "drupal/swiftmailer": "2.4.0", "drupal/tfa": "1.0.0", "drupal/token": "1.11.0", - "drupal/twig_tweak": "3.2.0", - "drupal/username_enumeration_prevention": "1.2.0", + "drupal/twig_tweak": "3.2.1", + "drupal/username_enumeration_prevention": "1.3.0", "drupal/video_embed_field": "2.4", - "drupal/webform": "6.1.3", + "drupal/webform": "6.1.4", "harvesthq/chosen": "1.8.7", "oomphinc/composer-installers-extender": "^2.0", "php": "^7.4 || ^8", @@ -9788,6 +10047,12 @@ "enable-patching": true, "composer-exit-on-patch-failure": true, "patches": { + "drupal/core": { + "[regression] route defaults are now automatically route parameters - https://www.drupal.org/project/drupal/issues/3358402": "https://www.drupal.org/files/issues/2023-05-10/3359511-revert-3277784-2.patch" + }, + "drupal/login_security": { + "Correctly detect invalid username/password or blocked account login errors - https://www.drupal.org/project/login_security/issues/3292974": "https://www.drupal.org/files/issues/2023-02-14/login_security-3292974-21.patch" + }, "drupal/metatag": { "Unsetting metatags": "https://www.drupal.org/files/issues/2022-03-15/metatag-unset-2735195.patch" }, @@ -9796,9 +10061,6 @@ }, "drupal/tfa": { "Create Email one-time-code Validation Plugin & related Setup Plugin - https://www.drupal.org/project/tfa/issues/2930541": "https://www.drupal.org/files/issues/2022-11-23/tfa-2930541-54_2.patch" - }, - "drupal/linkit": { - "Deprecated function": "https://www.drupal.org/files/issues/2022-04-26/linkit-jsonserialize-3262401-11.patch" } } }, @@ -9817,7 +10079,7 @@ "source": "https://github.com/GovCMS/GovCMS/releases", "wik": "https://github.com/GovCMS/GovCMS/wiki" }, - "time": "2023-02-05T23:30:24+00:00" + "time": "2023-05-22T01:42:23+00:00" }, { "name": "graham-campbell/result-type", @@ -10049,16 +10311,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -10068,11 +10330,6 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -10113,7 +10370,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -10129,7 +10386,7 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", @@ -10236,6 +10493,64 @@ ], "time": "2023-04-17T16:00:37+00:00" }, + { + "name": "halaxa/json-machine", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/halaxa/json-machine.git", + "reference": "514025c5ebbdb8a058745b573b4a1e81d685802c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/halaxa/json-machine/zipball/514025c5ebbdb8a058745b573b4a1e81d685802c", + "reference": "514025c5ebbdb8a058745b573b4a1e81d685802c", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "ext-json": "*", + "friendsofphp/php-cs-fixer": "^3.0", + "phpunit/phpunit": "^8.0" + }, + "suggest": { + "ext-json": "To run JSON Machine out of the box without custom decoders.", + "guzzlehttp/guzzle": "To run example with GuzzleHttp" + }, + "type": "library", + "autoload": { + "psr-4": { + "JsonMachine\\": "src/" + }, + "exclude-from-classmap": [ + "src/autoloader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Filip Halaxa", + "email": "filip@halaxa.cz" + } + ], + "description": "Efficient, easy-to-use and fast JSON pull parser", + "support": { + "issues": "https://github.com/halaxa/json-machine/issues", + "source": "https://github.com/halaxa/json-machine/tree/1.1.3" + }, + "funding": [ + { + "url": "https://ko-fi.com/G2G57KTE4", + "type": "other" + } + ], + "time": "2022-10-12T11:40:33+00:00" + }, { "name": "harvesthq/chosen", "version": "v1.8.7", @@ -10329,105 +10644,6 @@ }, "time": "2020-04-16T23:44:31+00:00" }, - { - "name": "laminas/laminas-diactoros", - "version": "2.11.3", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "1f97b0c52eafd108e09c76d6b29d83ef4a855f76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/1f97b0c52eafd108e09c76d6b29d83ef4a855f76", - "reference": "1f97b0c52eafd108e09c76d6b29d83ef4a855f76", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0", - "zendframework/zend-diactoros": "*" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-gd": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.8.0", - "laminas/laminas-coding-standard": "~1.0.0", - "php-http/psr7-integration-tests": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.1", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Laminas\\Diactoros\\ConfigProvider", - "module": "Laminas\\Diactoros" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], - "psr-4": { - "Laminas\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-17", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-diactoros/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-diactoros/issues", - "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", - "source": "https://github.com/laminas/laminas-diactoros" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2022-07-06T09:24:53+00:00" - }, { "name": "laminas/laminas-escaper", "version": "2.9.0", @@ -10569,16 +10785,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.7.1", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325" + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325", - "reference": "bcd869e2fe88d567800057c1434f2380354fe325", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", + "reference": "aad7d2b11ba0069ba0d9b40f6dde3c2fa664b57f", "shasum": "" }, "require": { @@ -10591,7 +10807,7 @@ "laminas/laminas-coding-standard": "~2.3.0", "phpbench/phpbench": "^1.0", "phpunit/phpunit": "^9.3.7", - "psalm/plugin-phpunit": "^0.16.0", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.7" }, "type": "library", @@ -10624,7 +10840,7 @@ "type": "community_bridge" } ], - "time": "2022-01-21T15:50:46+00:00" + "time": "2022-07-27T12:28:58+00:00" }, { "name": "lcobucci/clock", @@ -10848,34 +11064,37 @@ }, { "name": "league/csv", - "version": "9.8.0", + "version": "9.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47" + "reference": "b4418ede47fbd88facc34e40a16c8ce9153b961b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/9d2e0265c5d90f5dd601bc65ff717e05cec19b47", - "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/b4418ede47fbd88facc34e40a16c8ce9153b961b", + "reference": "b4418ede47fbd88facc34e40a16c8ce9153b961b", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "^7.4 || ^8.0" + "php": "^8.1.2" }, "require-dev": { - "ext-curl": "*", + "doctrine/collections": "^2.1.2", "ext-dom": "*", - "friendsofphp/php-cs-fixer": "^v3.4.0", - "phpstan/phpstan": "^1.3.0", - "phpstan/phpstan-phpunit": "^1.0.0", - "phpstan/phpstan-strict-rules": "^1.1.0", - "phpunit/phpunit": "^9.5.11" + "ext-xdebug": "*", + "friendsofphp/php-cs-fixer": "^v3.14.3", + "phpbench/phpbench": "^1.2.8", + "phpstan/phpstan": "^1.10.4", + "phpstan/phpstan-deprecation-rules": "^1.1.2", + "phpstan/phpstan-phpunit": "^1.3.10", + "phpstan/phpstan-strict-rules": "^1.5.0", + "phpunit/phpunit": "^10.0.14" }, "suggest": { - "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", + "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" }, "type": "library", @@ -10928,7 +11147,7 @@ "type": "github" } ], - "time": "2022-01-04T00:13:07+00:00" + "time": "2023-03-11T15:57:12+00:00" }, { "name": "league/event", @@ -10986,35 +11205,34 @@ }, { "name": "league/oauth2-server", - "version": "8.5.1", + "version": "8.5.3", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "43cd4d406906c6be5c8de2cee9bd3ad3753544ef" + "reference": "eb91b4190e7f6169053ebf8ffa352d47e756b2ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/43cd4d406906c6be5c8de2cee9bd3ad3753544ef", - "reference": "43cd4d406906c6be5c8de2cee9bd3ad3753544ef", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/eb91b4190e7f6169053ebf8ffa352d47e756b2ce", + "reference": "eb91b4190e7f6169053ebf8ffa352d47e756b2ce", "shasum": "" }, "require": { "defuse/php-encryption": "^2.3", - "ext-json": "*", "ext-openssl": "*", "lcobucci/clock": "^2.2 || ^3.0", "lcobucci/jwt": "^4.3 || ^5.0", "league/event": "^2.2", "league/uri": "^6.7", "php": "^8.0", - "psr/http-message": "^1.0.1" + "psr/http-message": "^1.0.1 || ^2.0" }, "replace": { "league/oauth2server": "*", "lncd/oauth2": "*" }, "require-dev": { - "laminas/laminas-diactoros": "^2.24.0", + "laminas/laminas-diactoros": "^3.0.0", "phpstan/phpstan": "^0.12.57", "phpstan/phpstan-phpunit": "^0.12.16", "phpunit/phpunit": "^9.6.6", @@ -11063,7 +11281,7 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-server/issues", - "source": "https://github.com/thephpleague/oauth2-server/tree/8.5.1" + "source": "https://github.com/thephpleague/oauth2-server/tree/8.5.3" }, "funding": [ { @@ -11071,7 +11289,7 @@ "type": "github" } ], - "time": "2023-04-04T10:20:16+00:00" + "time": "2023-07-05T23:01:32+00:00" }, { "name": "league/uri", @@ -11204,49 +11422,145 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interface for URI representation", + "homepage": "http://github.com/thephpleague/uri-interfaces", + "keywords": [ + "rfc3986", + "rfc3987", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-interfaces/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-06-28T04:27:21+00:00" + }, + { + "name": "longwave/laminas-diactoros", + "version": "2.14.2", + "source": { + "type": "git", + "url": "https://github.com/longwave/laminas-diactoros.git", + "reference": "ae4f0becf249ae8eea8f2f8f9fb927104e55a885" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/longwave/laminas-diactoros/zipball/ae4f0becf249ae8eea8f2f8f9fb927104e55a885", + "reference": "ae4f0becf249ae8eea8f2f8f9fb927104e55a885", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "replace": { + "laminas/laminas-diactoros": "2.18.1" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "ext-gd": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.9.0", + "laminas/laminas-coding-standard": "~2.3.0", + "php-http/psr7-integration-tests": "^1.1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24.0" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Laminas\\Diactoros\\ConfigProvider", + "module": "Laminas\\Diactoros" } }, "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php", + "src/functions/create_uploaded_file.legacy.php", + "src/functions/marshal_headers_from_sapi.legacy.php", + "src/functions/marshal_method_from_sapi.legacy.php", + "src/functions/marshal_protocol_version_from_sapi.legacy.php", + "src/functions/marshal_uri_from_sapi.legacy.php", + "src/functions/normalize_server.legacy.php", + "src/functions/normalize_uploaded_files.legacy.php", + "src/functions/parse_cookie_header.legacy.php" + ], "psr-4": { - "League\\Uri\\": "src/" + "Laminas\\Diactoros\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } + "BSD-3-Clause" ], - "description": "Common interface for URI representation", - "homepage": "http://github.com/thephpleague/uri-interfaces", + "description": "PSR HTTP Message implementations", + "homepage": "https://laminas.dev", "keywords": [ - "rfc3986", - "rfc3987", - "uri", - "url" + "http", + "laminas", + "psr", + "psr-17", + "psr-7" ], "support": { - "issues": "https://github.com/thephpleague/uri-interfaces/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-diactoros/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-diactoros/issues", + "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", + "source": "https://github.com/laminas/laminas-diactoros" }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "time": "2021-06-28T04:27:21+00:00" + "time": "2023-04-26T21:27:14+00:00" }, { "name": "maennchen/zipstream-php", - "version": "v2.4.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", @@ -11308,7 +11622,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/v2.4.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.4.0" }, "funding": [ { @@ -11497,16 +11811,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -11547,9 +11861,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "oomphinc/composer-installers-extender", @@ -11608,196 +11922,6 @@ }, "time": "2021-12-15T12:32:42+00:00" }, - { - "name": "opis/json-schema", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/opis/json-schema.git", - "reference": "c48df6d7089a45f01e1c82432348f2d5976f9bfb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/json-schema/zipball/c48df6d7089a45f01e1c82432348f2d5976f9bfb", - "reference": "c48df6d7089a45f01e1c82432348f2d5976f9bfb", - "shasum": "" - }, - "require": { - "ext-json": "*", - "opis/string": "^2.0", - "opis/uri": "^1.0", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "ext-bcmath": "*", - "ext-intl": "*", - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\JsonSchema\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - }, - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - } - ], - "description": "Json Schema Validator for PHP", - "homepage": "https://opis.io/json-schema", - "keywords": [ - "json", - "json-schema", - "schema", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/opis/json-schema/issues", - "source": "https://github.com/opis/json-schema/tree/2.3.0" - }, - "time": "2022-01-08T20:38:03+00:00" - }, - { - "name": "opis/string", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/opis/string.git", - "reference": "9ebf1a1f873f502f6859d11210b25a4bf5d141e7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/string/zipball/9ebf1a1f873f502f6859d11210b25a4bf5d141e7", - "reference": "9ebf1a1f873f502f6859d11210b25a4bf5d141e7", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "ext-json": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\String\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "Multibyte strings as objects", - "homepage": "https://opis.io/string", - "keywords": [ - "multi-byte", - "opis", - "string", - "string manipulation", - "utf-8" - ], - "support": { - "issues": "https://github.com/opis/string/issues", - "source": "https://github.com/opis/string/tree/2.0.1" - }, - "time": "2022-01-14T15:42:23+00:00" - }, - { - "name": "opis/uri", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/opis/uri.git", - "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/uri/zipball/0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a", - "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a", - "shasum": "" - }, - "require": { - "opis/string": "^2.0", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Opis\\Uri\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "Build, parse and validate URIs and URI-templates", - "homepage": "https://opis.io", - "keywords": [ - "URI Template", - "parse url", - "punycode", - "uri", - "uri components", - "url", - "validate uri" - ], - "support": { - "issues": "https://github.com/opis/uri/issues", - "source": "https://github.com/opis/uri/tree/1.1.0" - }, - "time": "2021-05-22T15:57:08+00:00" - }, { "name": "paragonie/constant_time_encoding", "version": "v2.6.3", @@ -12680,16 +12804,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.17", + "version": "v0.11.19", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a" + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", - "reference": "3dc5d4018dabd80bceb8fe1e3191ba8460569f0a", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1724ceff278daeeac5a006744633bacbb2dc4706", + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706", "shasum": "" }, "require": { @@ -12750,9 +12874,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.17" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.19" }, - "time": "2023-05-05T20:02:42+00:00" + "time": "2023-07-15T19:42:19+00:00" }, { "name": "ralouphie/getallheaders", @@ -12800,21 +12924,22 @@ }, { "name": "solarium/solarium", - "version": "6.2.8", + "version": "6.3.1", "source": { "type": "git", "url": "https://github.com/solariumphp/solarium.git", - "reference": "0bca4fdcd53e86dea19754b0081f91fe17248a9d" + "reference": "2c3d36d0e35fa88e386c80958b0b106f947fdce1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/solariumphp/solarium/zipball/0bca4fdcd53e86dea19754b0081f91fe17248a9d", - "reference": "0bca4fdcd53e86dea19754b0081f91fe17248a9d", + "url": "https://api.github.com/repos/solariumphp/solarium/zipball/2c3d36d0e35fa88e386c80958b0b106f947fdce1", + "reference": "2c3d36d0e35fa88e386c80958b0b106f947fdce1", "shasum": "" }, "require": { "composer-runtime-api": ">=2.0", "ext-json": "*", + "halaxa/json-machine": "^1.1", "php": "^7.3 || ^8.0", "psr/event-dispatcher": "^1.0", "psr/http-client": "^1.0", @@ -12823,15 +12948,15 @@ }, "require-dev": { "escapestudios/symfony2-coding-standard": "^3.11", + "ext-curl": "*", "ext-iconv": "*", - "guzzlehttp/guzzle": "^7.2", - "nyholm/psr7": "^1.2", - "php-http/guzzle7-adapter": "^0.1", + "nyholm/psr7": "^1.8", + "php-http/guzzle7-adapter": "^1.0", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.6", "roave/security-advisories": "dev-master", "symfony/event-dispatcher": "^4.3 || ^5.0 || ^6.0" }, @@ -12860,9 +12985,9 @@ ], "support": { "issues": "https://github.com/solariumphp/solarium/issues", - "source": "https://github.com/solariumphp/solarium/tree/6.2.8" + "source": "https://github.com/solariumphp/solarium/tree/6.3.1" }, - "time": "2022-12-06T10:22:19+00:00" + "time": "2023-06-22T14:24:00+00:00" }, { "name": "stack/builder", @@ -14171,16 +14296,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -14195,7 +14320,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -14233,7 +14358,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -14249,20 +14374,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.25.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + "reference": "927013f3aac555983a5059aada98e1907d842695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", "shasum": "" }, "require": { @@ -14277,7 +14402,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -14316,7 +14441,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" }, "funding": [ { @@ -14332,7 +14457,7 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:04:05+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -14417,16 +14542,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.25.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -14440,7 +14565,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -14484,7 +14609,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -14500,20 +14625,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -14525,7 +14650,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -14568,7 +14693,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -14584,20 +14709,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -14612,7 +14737,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -14651,7 +14776,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -14667,7 +14792,7 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php56", @@ -14894,16 +15019,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.25.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -14912,7 +15037,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -14957,7 +15082,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -14973,7 +15098,7 @@ "type": "tidelift" } ], - "time": "2022-03-04T08:16:47+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", @@ -15393,16 +15518,16 @@ }, { "name": "symfony/string", - "version": "v6.2.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", "shasum": "" }, "require": { @@ -15413,13 +15538,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -15459,7 +15584,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.0" }, "funding": [ { @@ -15475,7 +15600,7 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-03-21T21:06:29+00:00" }, { "name": "symfony/translation", @@ -15752,16 +15877,16 @@ }, { "name": "symfony/var-dumper", - "version": "v5.4.23", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "9a8a5b6d6508928174ded2109e29328a55342a42" + "reference": "82269f73c0f0f9859ab9b6900eebacbe54954ede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9a8a5b6d6508928174ded2109e29328a55342a42", - "reference": "9a8a5b6d6508928174ded2109e29328a55342a42", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82269f73c0f0f9859ab9b6900eebacbe54954ede", + "reference": "82269f73c0f0f9859ab9b6900eebacbe54954ede", "shasum": "" }, "require": { @@ -15770,7 +15895,6 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { @@ -15821,7 +15945,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.23" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.25" }, "funding": [ { @@ -15837,7 +15961,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T09:26:27+00:00" + "time": "2023-06-20T20:56:26+00:00" }, { "name": "symfony/yaml", @@ -16663,6 +16787,7 @@ "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", "source": "https://github.com/minkphp/MinkGoutteDriver/tree/v1.3.0" }, + "abandoned": "behat/mink-browserkit-driver", "time": "2021-10-12T11:35:46+00:00" }, { @@ -16784,16 +16909,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.5", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd" + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/74780ccf8c19d6acb8d65c5f39cd72110e132bbd", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", "shasum": "" }, "require": { @@ -16840,7 +16965,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.5" + "source": "https://github.com/composer/ca-bundle/tree/1.3.6" }, "funding": [ { @@ -16856,7 +16981,7 @@ "type": "tidelift" } ], - "time": "2023-01-11T08:27:00+00:00" + "time": "2023-06-06T12:02:59+00:00" }, { "name": "composer/composer", @@ -17502,34 +17627,40 @@ }, { "name": "drevops/behat-steps", - "version": "1.4.3", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/drevops/behat-steps.git", - "reference": "91e2bd432c43ac00856b7af9badc942b92bd3a4f" + "reference": "0e746db53cd79f1991fb489baff3309f75ba656d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drevops/behat-steps/zipball/91e2bd432c43ac00856b7af9badc942b92bd3a4f", - "reference": "91e2bd432c43ac00856b7af9badc942b92bd3a4f", + "url": "https://api.github.com/repos/drevops/behat-steps/zipball/0e746db53cd79f1991fb489baff3309f75ba656d", + "reference": "0e746db53cd79f1991fb489baff3309f75ba656d", "shasum": "" }, "require": { "behat/behat": "^3", - "drupal/drupal-extension": "^4" + "cweagans/composer-patches": "^1.7", + "drupal/drupal-extension": "dev-feature/drupal-10 as 4.2.1-dev" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^0.7", "drevops/behat-screenshot": "^1", "drupal/coder": "^8.3", + "mglaman/drupal-check": "^1", + "palantirnet/drupal-rector": "^0.15", "php-parallel-lint/php-parallel-lint": "^1.3", "phpcompatibility/php-compatibility": "^9.3", - "phpunit/phpunit": "^8.5 || ^9.0" + "phpunit/phpunit": "^8.5 || ^9.0", + "rector/rector": "0.15.13" }, "type": "library", "extra": { + "enable-patching": true, "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.x-dev", + "dev-main": "1.x-dev" } }, "autoload": { @@ -17542,10 +17673,16 @@ "license": [ "GPL-2.0-or-later" ], + "authors": [ + { + "name": "Alex Skrypnyk", + "email": "alex@drevops.com" + } + ], "description": "Collection of Behat traits", "support": { "issues": "https://github.com/drevops/behat-steps/issues", - "source": "https://github.com/drevops/behat-steps/tree/1.4.3" + "source": "https://github.com/drevops/behat-steps/tree/1.5.3" }, "funding": [ { @@ -17553,7 +17690,7 @@ "type": "patreon" } ], - "time": "2022-09-29T02:03:03+00:00" + "time": "2023-04-24T05:25:57+00:00" }, { "name": "drupal/coder", @@ -17608,7 +17745,7 @@ }, { "name": "drupal/core-dev", - "version": "9.5.9", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/drupal/core-dev.git", @@ -17652,22 +17789,22 @@ ], "description": "require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.", "support": { - "source": "https://github.com/drupal/core-dev/tree/9.5.9" + "source": "https://github.com/drupal/core-dev/tree/9.5.10" }, "time": "2022-07-27T00:23:55+00:00" }, { "name": "drupal/drupal-driver", - "version": "v2.2.2", + "version": "dev-feature/drupal-10", "source": { "type": "git", - "url": "https://github.com/jhedstrom/DrupalDriver.git", - "reference": "632712db66681b76651518bf5ab1e60fddc70a39" + "url": "https://github.com/drevops/DrupalDriver.git", + "reference": "03ae7c9ea5a0071ea6d49a8868f5ad5ae0163bb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jhedstrom/DrupalDriver/zipball/632712db66681b76651518bf5ab1e60fddc70a39", - "reference": "632712db66681b76651518bf5ab1e60fddc70a39", + "url": "https://api.github.com/repos/drevops/DrupalDriver/zipball/03ae7c9ea5a0071ea6d49a8868f5ad5ae0163bb6", + "reference": "03ae7c9ea5a0071ea6d49a8868f5ad5ae0163bb6", "shasum": "" }, "require": { @@ -17697,6 +17834,9 @@ }, "type": "library", "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + }, "installer-paths": { "drupal/core": [ "type:drupal-core" @@ -17717,7 +17857,19 @@ "Drupal\\Tests\\Driver": "tests/" } }, - "notification-url": "https://packagist.org/downloads/", + "scripts": { + "test": [ + "composer validate --no-interaction", + "parallel-lint src spec tests", + "phpunit", + "phpspec run -f pretty --no-interaction", + "phpcs --standard=./phpcs-ruleset.xml .", + "./vendor/bin/drupal-check --drupal-root=drupal ./src/Drupal/Driver/Cores/Drupal8.php ./src/Drupal/Driver/Fields/Drupal8", + "cp ./vendor/palantirnet/drupal-rector/rector.php drupal/.", + "cd drupal && ../vendor/bin/rector process ../src/Drupal/Driver/Cores/Drupal8.php --dry-run", + "cd drupal && ../vendor/bin/rector process ../src/Drupal/Driver/Fields/Drupal8 --dry-run" + ] + }, "license": [ "GPL-2.0-or-later" ], @@ -17735,53 +17887,56 @@ "web" ], "support": { - "issues": "https://github.com/jhedstrom/DrupalDriver/issues", - "source": "https://github.com/jhedstrom/DrupalDriver/tree/v2.2.2" + "source": "https://github.com/drevops/DrupalDriver/tree/feature/drupal-10" }, "funding": [ { - "url": "https://github.com/jhedstrom", - "type": "github" + "type": "github", + "url": "https://github.com/jhedstrom" } ], - "time": "2023-01-06T17:22:24+00:00" + "time": "2022-11-23T06:48:32+00:00" }, { "name": "drupal/drupal-extension", - "version": "v4.2.1", + "version": "dev-feature/drupal-10", "source": { "type": "git", - "url": "https://github.com/jhedstrom/drupalextension.git", - "reference": "03c06860db91a2e456e3e7ca170414c2a4a40107" + "url": "https://github.com/drevops/drupalextension.git", + "reference": "02d13f78d379c45359d31788d62de3da24aa1a95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jhedstrom/drupalextension/zipball/03c06860db91a2e456e3e7ca170414c2a4a40107", - "reference": "03c06860db91a2e456e3e7ca170414c2a4a40107", + "url": "https://api.github.com/repos/drevops/drupalextension/zipball/02d13f78d379c45359d31788d62de3da24aa1a95", + "reference": "02d13f78d379c45359d31788d62de3da24aa1a95", "shasum": "" }, "require": { "behat/behat": "~3.2", "behat/mink": "~1.5", - "behat/mink-goutte-driver": "~1.0", + "behat/mink-goutte-driver": "~1|^2", "behat/mink-selenium2-driver": "~1.1", - "drupal/drupal-driver": "^2.1.0", - "friends-of-behat/mink-extension": "^2", - "symfony/browser-kit": "^3.4|~4.4", - "symfony/dependency-injection": "~3.0|~4.4", - "symfony/translation": "^3.4|~4.4" + "cweagans/composer-patches": "^1.7", + "drupal/drupal-driver": "dev-feature/drupal-10 as 2.1.0-dev", + "friends-of-behat/mink-extension": "^2.7.2", + "symfony/browser-kit": "^3.4|~4.4|^6", + "symfony/dependency-injection": "~3.0|~4.4|^6", + "symfony/translation": "^3.4|~4.4|^6" }, "require-dev": { - "composer/installers": "^1.2", + "composer/installers": "^1.2|^2", "drupal/coder": "^8.3", - "drupal/core-composer-scaffold": "^9.1", - "drupal/core-recommended": "^9.1", - "drush/drush": "^10.5", + "drupal/core-composer-scaffold": "^9.1|^10@beta", + "drupal/core-recommended": "^9.1|^10@beta", + "drush/drush": "^10.5|^11 ", "php-parallel-lint/php-parallel-lint": "^1.3", "phpspec/phpspec": "^4.0 || ^6.0 || ^7.0" }, "type": "behat-extension", "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + }, "installer-paths": { "drupal/core": [ "type:drupal-core" @@ -17797,11 +17952,20 @@ "psr-0": { "Drupal\\Drupal": "src/", "Drupal\\Exception": "src/", - "Drupal\\MinkExtension": "src/", - "Drupal\\DrupalExtension": "src/" - } + "Drupal\\DrupalExtension": "src/", + "Drupal\\MinkExtension": "src/" + } + }, + "scripts": { + "test": [ + "composer validate --no-interaction", + "parallel-lint src spec features fixtures", + "phpcs --standard=./phpcs-ruleset.xml -p", + "phpcs --standard=./phpcs-drupal-ruleset.xml -p", + "npm test", + "phpspec run -f pretty --no-interaction" + ] }, - "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], @@ -17827,16 +17991,15 @@ "web" ], "support": { - "issues": "https://github.com/jhedstrom/drupalextension/issues", - "source": "https://github.com/jhedstrom/drupalextension/tree/v4.2.1" + "source": "https://github.com/drevops/drupalextension/tree/feature/drupal-10" }, "funding": [ { - "url": "https://github.com/jhedstrom", - "type": "github" + "type": "github", + "url": "https://github.com/jhedstrom" } ], - "time": "2022-04-26T19:55:44+00:00" + "time": "2022-10-26T03:33:38+00:00" }, { "name": "easyrdf/easyrdf", @@ -18345,16 +18508,16 @@ }, { "name": "pdepend/pdepend", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "31be7cd4f305f3f7b52af99c1cb13fc938d1cfad" + "reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/31be7cd4f305f3f7b52af99c1cb13fc938d1cfad", - "reference": "31be7cd4f305f3f7b52af99c1cb13fc938d1cfad", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1121d4b04af06e33e9659bac3a6741b91cab1de1", + "reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1", "shasum": "" }, "require": { @@ -18388,9 +18551,15 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", + "keywords": [ + "PHP Depend", + "PHP_Depend", + "dev", + "pdepend" + ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.13.0" + "source": "https://github.com/pdepend/pdepend/tree/2.14.0" }, "funding": [ { @@ -18398,7 +18567,7 @@ "type": "tidelift" } ], - "time": "2023-02-28T20:56:15+00:00" + "time": "2023-05-26T13:15:18+00:00" }, { "name": "phar-io/manifest", @@ -19306,16 +19475,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.7", + "version": "9.6.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2" + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", - "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", "shasum": "" }, "require": { @@ -19389,7 +19558,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.7" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.10" }, "funding": [ { @@ -19405,7 +19574,7 @@ "type": "tidelift" } ], - "time": "2023-04-14T08:58:40+00:00" + "time": "2023-07-10T04:04:23+00:00" }, { "name": "pyrech/composer-changelogs", @@ -19835,16 +20004,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -19889,7 +20058,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -19897,7 +20066,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", @@ -20501,16 +20670,16 @@ }, { "name": "seld/jsonlint", - "version": "1.9.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { @@ -20549,7 +20718,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" }, "funding": [ { @@ -20561,7 +20730,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T13:37:23+00:00" + "time": "2023-05-11T13:16:46+00:00" }, { "name": "seld/phar-utils", @@ -21091,16 +21260,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.23", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "1572c5b7cad812bdf0414d89a32a33a2dafb38ba" + "reference": "ed279c7839967958ee152c32eaa0eaaeac819404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/1572c5b7cad812bdf0414d89a32a33a2dafb38ba", - "reference": "1572c5b7cad812bdf0414d89a32a33a2dafb38ba", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ed279c7839967958ee152c32eaa0eaaeac819404", + "reference": "ed279c7839967958ee152c32eaa0eaaeac819404", "shasum": "" }, "require": { @@ -21154,7 +21323,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.23" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.25" }, "funding": [ { @@ -21170,7 +21339,7 @@ "type": "tidelift" } ], - "time": "2023-04-18T09:42:03+00:00" + "time": "2023-06-02T09:36:43+00:00" }, { "name": "symfony/polyfill-php81", @@ -21302,9 +21471,18 @@ "time": "2021-07-28T10:34:58+00:00" } ], - "aliases": [], - "minimum-stability": "alpha", + "aliases": [ + { + "package": "drupal/drupal-extension", + "version": "dev-feature/drupal-10", + "alias": "4.2.1-dev", + "alias_normalized": "4.2.1.0-dev" + } + ], + "minimum-stability": "dev", "stability-flags": { + "drupal/drupal-extension": 20, + "drupal/components": 10, "drupal/linkit": 10, "drupal/default_content": 15 }, @@ -21315,7 +21493,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "8.1" + "php": "8.1.17" }, "plugin-api-version": "2.3.0" } diff --git a/docker-compose.yml b/docker-compose.yml index 01ccdebfb..e5b7c3cc2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -90,8 +90,7 @@ services: dockerfile: .docker/Dockerfile.nginx-drupal args: CLI_IMAGE: *cli-image - <<: *default-volumes - <<: *default-user + <<: [*default-volumes, *default-user] environment: <<: *default-environment depends_on: @@ -112,8 +111,7 @@ services: dockerfile: .docker/Dockerfile.php args: CLI_IMAGE: *cli-image - <<: *default-volumes - <<: *default-user + <<: [*default-volumes, *default-user] environment: <<: *default-environment depends_on: @@ -129,7 +127,7 @@ services: context: . dockerfile: .docker/Dockerfile.mariadb args: - IMAGE: "${DREVOPS_DB_DOCKER_IMAGE:-uselagoon/mariadb-drupal:22.4.1}" # Use custom database image (if defined) or fallback to standard database image. + IMAGE: "${DREVOPS_DB_DOCKER_IMAGE:-uselagoon/mariadb-drupal:23.3.0}" # Use custom database image (if defined) or fallback to standard database image. environment: <<: *default-environment ports: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/config/optional/civictheme.settings.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/config/optional/civictheme.settings.yml index 56b8e1649..60834e982 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/config/optional/civictheme.settings.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/config/optional/civictheme.settings.yml @@ -9,14 +9,14 @@ components: primary: light: desktop: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_desktop.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_desktop.svg mobile: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_mobile.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_mobile.svg dark: desktop: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_desktop.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_desktop.svg mobile: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_mobile.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_mobile.svg secondary: light: desktop: @@ -75,6 +75,25 @@ colors: brand2: '#003a4f' brand3: '#00698f' palette: + light: + heading: '#002a39' + body: '#334349' + background_light: '#fcfcfd' + background: '#e6e9eb' + background_dark: '#b8babc' + border_light: '#acaeb0' + border: '#5c5d5e' + border_dark: '#161717' + interaction_text: '#fafafb' + interaction_background: '#00698f' + interaction_hover_text: '#fafafb' + interaction_hover_background: '#003f55' + interaction_focus: '#855cd7' + highlight: '#121313' + information: '#007ebd' + warning: '#c95100' + error: '#ce3936' + success: '#008482' dark: heading: '#f7fdff' body: '#e7f9ff' @@ -94,24 +113,3 @@ colors: warning: '#e38444' error: '#e85653' success: '#14b0ae' - light: - background: '#e6e9eb' - border: '#5c5d5e' - highlight: '#121313' - heading: '#002a39' - body: '#334349' - background_light: '#fcfcfd' - background_dark: '#b8babc' - border_light: '#acaeb0' - border_dark: '#161717' - interaction_text: '#fafafb' - interaction_background: '#00698f' - interaction_hover_text: '#fafafb' - interaction_hover_background: '#003f55' - interaction_focus: '#855cd7' - information: '#007ebd' - warning: '#c95100' - error: '#ce3936' - success: '#008482' -migration: - expose_metadata: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml index 6e4a26e61..35bf915d0 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml @@ -19,6 +19,6 @@ default: value: true field_c_b_link: - - uri: 'internal:/' + uri: 'internal:/search' title: Search options: { } diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml index 538c374ac..7548cfd20 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml @@ -22,12 +22,12 @@ default: field_c_b_background_image: - entity: 26820d38-aabc-4c1d-a6df-09fa62a3fe8a + field_c_b_banner_blend_mode: + - + value: soft-light field_c_b_banner_type: - value: default - field_c_b_blend_mode: - - - value: soft-light field_c_b_theme: - value: dark diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/file/4fea8fbe-b20b-410e-a911-f09950420206.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/file/b19ce70e-881e-422f-b03d-70c9677b0892.yml similarity index 83% rename from docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/file/4fea8fbe-b20b-410e-a911-f09950420206.yml rename to docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/file/b19ce70e-881e-422f-b03d-70c9677b0892.yml index f0c7d1b26..769689f39 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/file/4fea8fbe-b20b-410e-a911-f09950420206.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/file/b19ce70e-881e-422f-b03d-70c9677b0892.yml @@ -1,7 +1,7 @@ _meta: version: '1.0' entity_type: file - uuid: 4fea8fbe-b20b-410e-a911-f09950420206 + uuid: b19ce70e-881e-422f-b03d-70c9677b0892 default_langcode: en default: uid: @@ -24,4 +24,4 @@ default: value: true created: - - value: 1676435936 + value: 1690930182 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/04ee0921-1bea-4795-b670-3b0f75b17645.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/04ee0921-1bea-4795-b670-3b0f75b17645.yml index 981252968..793b65fbb 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/04ee0921-1bea-4795-b670-3b0f75b17645.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/04ee0921-1bea-4795-b670-3b0f75b17645.yml @@ -15,7 +15,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Clownfish3 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/1273590e-5a80-45ee-9172-0e1b9343ddb3.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/1273590e-5a80-45ee-9172-0e1b9343ddb3.yml index 7d329321c..bb5655814 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/1273590e-5a80-45ee-9172-0e1b9343ddb3.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/1273590e-5a80-45ee-9172-0e1b9343ddb3.yml @@ -15,7 +15,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Starfish diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/2283dfc9-d10f-40d6-8cf5-4a3a2d2ef158.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/2283dfc9-d10f-40d6-8cf5-4a3a2d2ef158.yml index b68cf5751..ac014a999 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/2283dfc9-d10f-40d6-8cf5-4a3a2d2ef158.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/2283dfc9-d10f-40d6-8cf5-4a3a2d2ef158.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Koala.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/429966d5-50c7-433a-bdcf-5d58e1e6e21c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/429966d5-50c7-433a-bdcf-5d58e1e6e21c.yml index a2ab5005d..7ee5ffa88 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/429966d5-50c7-433a-bdcf-5d58e1e6e21c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/429966d5-50c7-433a-bdcf-5d58e1e6e21c.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Bottles.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/4729baf2-63ab-48e2-9c47-ce82acc1f0d1.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/4729baf2-63ab-48e2-9c47-ce82acc1f0d1.yml index e48014dcc..dbb768e29 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/4729baf2-63ab-48e2-9c47-ce82acc1f0d1.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/4729baf2-63ab-48e2-9c47-ce82acc1f0d1.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: FishInWater.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/485fc9fd-b6ce-4ff1-a0ac-88ea2fe7fdb9.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/485fc9fd-b6ce-4ff1-a0ac-88ea2fe7fdb9.yml index 5473ec9dd..a39bccf39 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/485fc9fd-b6ce-4ff1-a0ac-88ea2fe7fdb9.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/485fc9fd-b6ce-4ff1-a0ac-88ea2fe7fdb9.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: WomanFlowers-crop.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/48a4995f-75fc-4bb4-b43b-8dcd81f3f68b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/48a4995f-75fc-4bb4-b43b-8dcd81f3f68b.yml index b89d6b412..c67d4feb1 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/48a4995f-75fc-4bb4-b43b-8dcd81f3f68b.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/48a4995f-75fc-4bb4-b43b-8dcd81f3f68b.yml @@ -15,7 +15,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Scientist.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6ce72705-bab7-4dce-9ca5-4a3ae097faa3.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6ce72705-bab7-4dce-9ca5-4a3ae097faa3.yml index 80eff4a5a..ff5b9446d 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6ce72705-bab7-4dce-9ca5-4a3ae097faa3.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6ce72705-bab7-4dce-9ca5-4a3ae097faa3.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: SolarPanels.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6d127a84-70f5-43d3-a0dc-ee2872d97c8b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6d127a84-70f5-43d3-a0dc-ee2872d97c8b.yml index 4392cfef8..2a5894a23 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6d127a84-70f5-43d3-a0dc-ee2872d97c8b.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6d127a84-70f5-43d3-a0dc-ee2872d97c8b.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Iceberg.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6eb923f5-2fa8-49b1-ac4c-46d587ec25eb.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6eb923f5-2fa8-49b1-ac4c-46d587ec25eb.yml index 5d4e1ec11..2ea5733d8 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6eb923f5-2fa8-49b1-ac4c-46d587ec25eb.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/6eb923f5-2fa8-49b1-ac4c-46d587ec25eb.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Seals.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/7238591b-bca0-46bf-b6df-534a1fdb2ddf.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/7238591b-bca0-46bf-b6df-534a1fdb2ddf.yml index 6c422e2bf..95d110165 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/7238591b-bca0-46bf-b6df-534a1fdb2ddf.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/7238591b-bca0-46bf-b6df-534a1fdb2ddf.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Tree.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/78eb0cf4-882f-47e4-8607-1f254809e9e8.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/78eb0cf4-882f-47e4-8607-1f254809e9e8.yml index ddfcb586f..4fb658fa3 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/78eb0cf4-882f-47e4-8607-1f254809e9e8.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/78eb0cf4-882f-47e4-8607-1f254809e9e8.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Turtle.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/86c71cbb-5ab3-41f9-bf7c-f30cd426dbf0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/86c71cbb-5ab3-41f9-bf7c-f30cd426dbf0.yml index 32614d0ca..d7dd18933 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/86c71cbb-5ab3-41f9-bf7c-f30cd426dbf0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/86c71cbb-5ab3-41f9-bf7c-f30cd426dbf0.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: pexels-dsd-694218.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/87adbef4-9cbd-4c1a-b0d7-bca60377d755.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/87adbef4-9cbd-4c1a-b0d7-bca60377d755.yml index f5f5f3714..c3ca2d6fc 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/87adbef4-9cbd-4c1a-b0d7-bca60377d755.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/87adbef4-9cbd-4c1a-b0d7-bca60377d755.yml @@ -15,7 +15,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Underwater.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8810505e-9c28-43b9-b019-a0a034701b3a.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8810505e-9c28-43b9-b019-a0a034701b3a.yml index a8a87e800..3054496c7 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8810505e-9c28-43b9-b019-a0a034701b3a.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8810505e-9c28-43b9-b019-a0a034701b3a.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Fish-Plastic.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/889585ce-c08e-4957-9c33-75025e910242.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/889585ce-c08e-4957-9c33-75025e910242.yml index 4a64de421..7eb88f4a9 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/889585ce-c08e-4957-9c33-75025e910242.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/889585ce-c08e-4957-9c33-75025e910242.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: PowerPlant.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8c64e0b7-9541-4191-868c-42d5adeb2828.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8c64e0b7-9541-4191-868c-42d5adeb2828.yml index 79b925cac..1fe7e717f 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8c64e0b7-9541-4191-868c-42d5adeb2828.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8c64e0b7-9541-4191-868c-42d5adeb2828.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Woman.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8f8df77d-5b85-48d9-a1f7-b85782d47a78.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8f8df77d-5b85-48d9-a1f7-b85782d47a78.yml index 42ddd4204..614213e36 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8f8df77d-5b85-48d9-a1f7-b85782d47a78.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/8f8df77d-5b85-48d9-a1f7-b85782d47a78.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: ClownFish2.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/971cc0f7-9e06-4f64-b58b-32d68848d5b3.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/971cc0f7-9e06-4f64-b58b-32d68848d5b3.yml index 33c2e3ca5..e7e27b9d2 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/971cc0f7-9e06-4f64-b58b-32d68848d5b3.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/971cc0f7-9e06-4f64-b58b-32d68848d5b3.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: TwelveApostles.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/a8b62c0c-3e6c-450b-93b4-df5956b87cce.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/a8b62c0c-3e6c-450b-93b4-df5956b87cce.yml index 733678d9c..3db4ee74a 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/a8b62c0c-3e6c-450b-93b4-df5956b87cce.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/a8b62c0c-3e6c-450b-93b4-df5956b87cce.yml @@ -15,7 +15,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Beakers diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ab44a2e7-acd4-4276-bf83-3c6fd3e71271.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ab44a2e7-acd4-4276-bf83-3c6fd3e71271.yml index 20d49b6c8..b7b72a170 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ab44a2e7-acd4-4276-bf83-3c6fd3e71271.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ab44a2e7-acd4-4276-bf83-3c6fd3e71271.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Fire-silhouettes.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ba705a5b-91ca-4f48-9d82-feeabb645cff.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ba705a5b-91ca-4f48-9d82-feeabb645cff.yml index c0f29ccea..ecdc9db65 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ba705a5b-91ca-4f48-9d82-feeabb645cff.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ba705a5b-91ca-4f48-9d82-feeabb645cff.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Seedling.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/c66b84d0-bd69-4330-96d2-71e1ecddebf0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/c66b84d0-bd69-4330-96d2-71e1ecddebf0.yml index ac724d674..b89951711 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/c66b84d0-bd69-4330-96d2-71e1ecddebf0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/c66b84d0-bd69-4330-96d2-71e1ecddebf0.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Windfarm.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e0a78fef-3e3a-4b96-b303-974ac8fec445.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e0a78fef-3e3a-4b96-b303-974ac8fec445.yml index 2eb2a1782..91ce7cc17 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e0a78fef-3e3a-4b96-b303-974ac8fec445.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e0a78fef-3e3a-4b96-b303-974ac8fec445.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Glacier.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e7ab9bae-edec-4639-b196-9dece305235d.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e7ab9bae-edec-4639-b196-9dece305235d.yml index 17750c784..b76a91ada 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e7ab9bae-edec-4639-b196-9dece305235d.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/e7ab9bae-edec-4639-b196-9dece305235d.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: GreatBarrierReef1.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ec6f5030-d733-45c9-bd47-50de3d053e5c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ec6f5030-d733-45c9-bd47-50de3d053e5c.yml index 4280334a2..6b33999f5 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ec6f5030-d733-45c9-bd47-50de3d053e5c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/ec6f5030-d733-45c9-bd47-50de3d053e5c.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Microscope-crop.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f06a9e48-e4bc-4e1d-9646-047d984c36ca.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f06a9e48-e4bc-4e1d-9646-047d984c36ca.yml index 99bd77690..3f94af8de 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f06a9e48-e4bc-4e1d-9646-047d984c36ca.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f06a9e48-e4bc-4e1d-9646-047d984c36ca.yml @@ -12,7 +12,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Fire.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f9278a83-d921-4890-ad30-e0d3050ef74a.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f9278a83-d921-4890-ad30-e0d3050ef74a.yml index cf239724a..231804d95 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f9278a83-d921-4890-ad30-e0d3050ef74a.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/media/f9278a83-d921-4890-ad30-e0d3050ef74a.yml @@ -15,7 +15,7 @@ default: value: true uid: - - target_id: 18 + target_id: 1 name: - value: Rainforest.jpg diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/047776b6-e8cc-45e1-8798-c50ecca06bcb.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/047776b6-e8cc-45e1-8798-c50ecca06bcb.yml index b95ce189a..15146ded4 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/047776b6-e8cc-45e1-8798-c50ecca06bcb.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/047776b6-e8cc-45e1-8798-c50ecca06bcb.yml @@ -4,8 +4,6 @@ _meta: uuid: 047776b6-e8cc-45e1-8798-c50ecca06bcb bundle: menu_link_content default_langcode: en - depends: - 855f86ae-b6a9-477c-8827-6b13b5c8ff41: node default: enabled: - @@ -18,7 +16,7 @@ default: value: civictheme-secondary-navigation link: - - target_uuid: 855f86ae-b6a9-477c-8827-6b13b5c8ff41 + uri: 'https://www.civictheme.io/' title: '' options: { } external: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/2541114b-22fd-4fda-aa02-2999c9895777.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/2541114b-22fd-4fda-aa02-2999c9895777.yml index 32a65d899..babe5e9b8 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/2541114b-22fd-4fda-aa02-2999c9895777.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/2541114b-22fd-4fda-aa02-2999c9895777.yml @@ -12,7 +12,7 @@ default: value: true title: - - value: 'Policies & legislation' + value: Policies menu_name: - value: civictheme-primary-navigation diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/84a103bd-a203-42a2-aa47-8087596b4159.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/84a103bd-a203-42a2-aa47-8087596b4159.yml index 388609743..cfc3e6d25 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/84a103bd-a203-42a2-aa47-8087596b4159.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/84a103bd-a203-42a2-aa47-8087596b4159.yml @@ -33,7 +33,7 @@ default: value: -50 expanded: - - value: false + value: true parent: - value: 'menu_link_content:ffcaaf1f-bcfa-458c-b938-5c1c1208a940' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/871e1957-f44a-4adc-a6ae-d7bef561ad12.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/871e1957-f44a-4adc-a6ae-d7bef561ad12.yml index 4f1276d89..7fa22824f 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/871e1957-f44a-4adc-a6ae-d7bef561ad12.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/871e1957-f44a-4adc-a6ae-d7bef561ad12.yml @@ -33,7 +33,7 @@ default: value: -49 expanded: - - value: false + value: true parent: - value: 'menu_link_content:0457b4f7-1a43-4719-8493-c1aa9d92464e' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/b718cfb0-071b-44e6-9d38-039e5e10152e.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/b718cfb0-071b-44e6-9d38-039e5e10152e.yml index 308713dcb..e075583f7 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/b718cfb0-071b-44e6-9d38-039e5e10152e.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/menu_link_content/b718cfb0-071b-44e6-9d38-039e5e10152e.yml @@ -33,7 +33,7 @@ default: value: -50 expanded: - - value: false + value: true parent: - value: 'menu_link_content:eeed004b-9d43-48fe-b99e-74289614ad56' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/08cead14-37a7-476d-8526-4814867bdb76.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/08cead14-37a7-476d-8526-4814867bdb76.yml index b22039963..b6e201604 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/08cead14-37a7-476d-8526-4814867bdb76.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/08cead14-37a7-476d-8526-4814867bdb76.yml @@ -43,6 +43,9 @@ default: field_c_n_banner_background: - entity: 1273590e-5a80-45ee-9172-0e1b9343ddb3 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -52,9 +55,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/0a840065-4343-4868-9004-61442d313eac.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/0a840065-4343-4868-9004-61442d313eac.yml index 47350331c..ea571e676 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/0a840065-4343-4868-9004-61442d313eac.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/0a840065-4343-4868-9004-61442d313eac.yml @@ -37,6 +37,9 @@ default: alias: /updated-barrier-reef-strategy langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -46,9 +49,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/2da124a0-129a-4b03-9f02-dd33a90793b4.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/2da124a0-129a-4b03-9f02-dd33a90793b4.yml index d3c81ef0e..ed9a7e25b 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/2da124a0-129a-4b03-9f02-dd33a90793b4.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/2da124a0-129a-4b03-9f02-dd33a90793b4.yml @@ -37,6 +37,9 @@ default: alias: /new-minister-environment langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -81,9 +84,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/454edaba-477b-45fa-934d-1b2b2b7899fb.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/454edaba-477b-45fa-934d-1b2b2b7899fb.yml index 2a6ed3596..bf2df6127 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/454edaba-477b-45fa-934d-1b2b2b7899fb.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/454edaba-477b-45fa-934d-1b2b2b7899fb.yml @@ -34,6 +34,9 @@ default: alias: /great-barrier-reef langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml index 2cb9c8192..df4dd64f8 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml @@ -59,6 +59,9 @@ default: field_c_n_banner_background: - entity: 04ee0921-1bea-4795-b670-3b0f75b17645 + field_c_n_banner_blend_mode: + - + value: multiply field_c_n_banner_components: - entity: @@ -269,9 +272,6 @@ default: field_c_n_banner_type: - value: large - field_c_n_blend_mode: - - - value: multiply field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/51efffb7-e00c-48ee-a5a4-8eabb7c9e903.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/51efffb7-e00c-48ee-a5a4-8eabb7c9e903.yml index f38eb3a00..b74013fe1 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/51efffb7-e00c-48ee-a5a4-8eabb7c9e903.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/51efffb7-e00c-48ee-a5a4-8eabb7c9e903.yml @@ -36,6 +36,9 @@ default: alias: /news-events langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -45,9 +48,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/64931832-7e31-4493-81b4-a2a46061dda3.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/64931832-7e31-4493-81b4-a2a46061dda3.yml index ff03f2129..3ee5dbc1c 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/64931832-7e31-4493-81b4-a2a46061dda3.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/64931832-7e31-4493-81b4-a2a46061dda3.yml @@ -57,6 +57,9 @@ default: field_c_n_banner_background: - entity: f9278a83-d921-4890-ad30-e0d3050ef74a + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -66,9 +69,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/6ec9411b-6148-420b-ab02-87466c42db1f.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/6ec9411b-6148-420b-ab02-87466c42db1f.yml index ee1ebc1d9..18d652fb6 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/6ec9411b-6148-420b-ab02-87466c42db1f.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/6ec9411b-6148-420b-ab02-87466c42db1f.yml @@ -36,6 +36,9 @@ default: alias: /climate-change-presentation langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -83,9 +86,6 @@ default: field_c_n_banner_type: - value: large - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/74076f33-5c1e-4b09-9522-bbafd6e43afb.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/74076f33-5c1e-4b09-9522-bbafd6e43afb.yml index 7559c73e6..7a570460a 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/74076f33-5c1e-4b09-9522-bbafd6e43afb.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/74076f33-5c1e-4b09-9522-bbafd6e43afb.yml @@ -34,6 +34,9 @@ default: alias: /bushfire-recovery langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/7a35464b-da5b-4edb-a490-6bcd54339f29.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/7a35464b-da5b-4edb-a490-6bcd54339f29.yml index ddd52cbae..9804f4d4e 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/7a35464b-da5b-4edb-a490-6bcd54339f29.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/7a35464b-da5b-4edb-a490-6bcd54339f29.yml @@ -34,6 +34,9 @@ default: alias: /volunteer langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/853e999d-a302-4cc0-baeb-f419c91bcf3f.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/853e999d-a302-4cc0-baeb-f419c91bcf3f.yml index 96f66b8bd..1ebfd24b6 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/853e999d-a302-4cc0-baeb-f419c91bcf3f.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/853e999d-a302-4cc0-baeb-f419c91bcf3f.yml @@ -34,6 +34,9 @@ default: alias: /policies-legislation langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/855f86ae-b6a9-477c-8827-6b13b5c8ff41.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/855f86ae-b6a9-477c-8827-6b13b5c8ff41.yml index 1de598e67..005a66e54 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/855f86ae-b6a9-477c-8827-6b13b5c8ff41.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/855f86ae-b6a9-477c-8827-6b13b5c8ff41.yml @@ -34,6 +34,9 @@ default: alias: /civicthemeio langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/aa31c2e9-f0af-4e1b-9fde-088ec81403bb.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/aa31c2e9-f0af-4e1b-9fde-088ec81403bb.yml index 32573453a..c5f2aabaa 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/aa31c2e9-f0af-4e1b-9fde-088ec81403bb.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/aa31c2e9-f0af-4e1b-9fde-088ec81403bb.yml @@ -39,6 +39,9 @@ default: field_c_n_banner_background: - entity: ba705a5b-91ca-4f48-9d82-feeabb645cff + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -48,9 +51,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c8ee30e2-85e5-42db-b27a-92e508eacd0c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c8ee30e2-85e5-42db-b27a-92e508eacd0c.yml index 1ffc9d5d7..1ee5c4dc7 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c8ee30e2-85e5-42db-b27a-92e508eacd0c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c8ee30e2-85e5-42db-b27a-92e508eacd0c.yml @@ -38,6 +38,9 @@ default: alias: /what-glacial-movement-means-climate-change langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: multiply field_c_n_banner_components: - entity: @@ -85,9 +88,6 @@ default: field_c_n_banner_type: - value: large - field_c_n_blend_mode: - - - value: multiply field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c99ffbb4-3782-498c-9d69-23419e9643e1.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c99ffbb4-3782-498c-9d69-23419e9643e1.yml index a448a2863..45d668730 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c99ffbb4-3782-498c-9d69-23419e9643e1.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/c99ffbb4-3782-498c-9d69-23419e9643e1.yml @@ -42,6 +42,9 @@ default: alias: /science-research langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -89,9 +92,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ce6b14c7-f782-40c6-884d-47724566ec60.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ce6b14c7-f782-40c6-884d-47724566ec60.yml index 68648bf78..39462ca7d 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ce6b14c7-f782-40c6-884d-47724566ec60.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ce6b14c7-f782-40c6-884d-47724566ec60.yml @@ -34,6 +34,9 @@ default: alias: /register-solar-rebate langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d044d201-6f40-41ed-bdbd-595bfa72cc4d.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d044d201-6f40-41ed-bdbd-595bfa72cc4d.yml index c11a0f88a..e6b3c9ee5 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d044d201-6f40-41ed-bdbd-595bfa72cc4d.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d044d201-6f40-41ed-bdbd-595bfa72cc4d.yml @@ -34,6 +34,9 @@ default: alias: '' langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d073b4ba-18b3-49a2-97b6-b02cb22f1a40.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d073b4ba-18b3-49a2-97b6-b02cb22f1a40.yml index 3745ceaf0..9880fa840 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d073b4ba-18b3-49a2-97b6-b02cb22f1a40.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/d073b4ba-18b3-49a2-97b6-b02cb22f1a40.yml @@ -34,6 +34,9 @@ default: alias: '' langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/e2401264-b563-4b62-9d77-b5c107909bf4.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/e2401264-b563-4b62-9d77-b5c107909bf4.yml index 2ad1b5092..710e02ad9 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/e2401264-b563-4b62-9d77-b5c107909bf4.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/e2401264-b563-4b62-9d77-b5c107909bf4.yml @@ -34,6 +34,9 @@ default: alias: /solar-energy langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ef661701-2c8e-4ea4-b927-2d2ecad7617e.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ef661701-2c8e-4ea4-b927-2d2ecad7617e.yml index efde11ab0..17a4a710a 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ef661701-2c8e-4ea4-b927-2d2ecad7617e.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_corporate/content/node/ef661701-2c8e-4ea4-b927-2d2ecad7617e.yml @@ -34,6 +34,9 @@ default: alias: /check-air-quality-your-postcode langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/civictheme_content_default.info.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/civictheme_content_default.info.yml index 23603eb5f..2f35ab10c 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/civictheme_content_default.info.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/civictheme_content_default.info.yml @@ -6,3 +6,9 @@ package: CivicTheme dependencies: - default_content:default_content - civictheme_content:civictheme_content + +#;< DEVELOPMENT +config_devel: + optional: + - civictheme.settings +#;> DEVELOPMENT diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/config/optional/civictheme.settings.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/config/optional/civictheme.settings.yml index 7ef523ded..43c7598ca 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/config/optional/civictheme.settings.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/config/optional/civictheme.settings.yml @@ -9,14 +9,14 @@ components: primary: light: desktop: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_desktop.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_desktop.svg mobile: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_mobile.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_mobile.svg dark: desktop: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_desktop.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_desktop.svg mobile: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_mobile.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_mobile.svg secondary: light: desktop: @@ -75,25 +75,6 @@ colors: brand2: '#003a4f' brand3: '#00698f' palette: - dark: - heading: '#f7fdff' - body: '#e7f9ff' - background_light: '#0c4357' - background: '#003a4f' - background_dark: '#002837' - border_light: '#a5bac1' - border: '#194d60' - border_dark: '#002837' - interaction_text: '#003a4f' - interaction_background: '#61daff' - interaction_hover_text: '#002837' - interaction_hover_background: '#a0e8ff' - interaction_focus: '#8a5cd7' - highlight: '#00698f' - information: '#4dc4fd' - warning: '#e38444' - error: '#e85653' - success: '#14b0ae' light: heading: '#002a39' body: '#334349' @@ -113,5 +94,22 @@ colors: warning: '#c95100' error: '#ce3936' success: '#008482' -migration: - expose_metadata: false + dark: + heading: '#f7fdff' + body: '#e7f9ff' + background_light: '#0c4357' + background: '#003a4f' + background_dark: '#002837' + border_light: '#a5bac1' + border: '#194d60' + border_dark: '#002837' + interaction_text: '#003a4f' + interaction_background: '#61daff' + interaction_hover_text: '#002837' + interaction_hover_background: '#a0e8ff' + interaction_focus: '#8a5cd7' + highlight: '#00698f' + information: '#4dc4fd' + warning: '#e38444' + error: '#e85653' + success: '#14b0ae' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml index 6e4a26e61..35bf915d0 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml @@ -19,6 +19,6 @@ default: value: true field_c_b_link: - - uri: 'internal:/' + uri: 'internal:/search' title: Search options: { } diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml index 8a1e53165..1dd159702 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml @@ -22,12 +22,12 @@ default: field_c_b_background_image: - entity: e2b603ff-038b-4c31-bf8d-6e4eb7346b72 + field_c_b_banner_blend_mode: + - + value: soft-light field_c_b_banner_type: - value: default - field_c_b_blend_mode: - - - value: soft-light field_c_b_theme: - value: dark diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/file/4e864502-a81a-43cc-8c6d-d0018bc9de77.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/file/c31b572d-b1d2-441b-a491-b373d6c54e2f.yml similarity index 83% rename from docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/file/4e864502-a81a-43cc-8c6d-d0018bc9de77.yml rename to docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/file/c31b572d-b1d2-441b-a491-b373d6c54e2f.yml index eed4aec82..bd8588409 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/file/4e864502-a81a-43cc-8c6d-d0018bc9de77.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/file/c31b572d-b1d2-441b-a491-b373d6c54e2f.yml @@ -1,7 +1,7 @@ _meta: version: '1.0' entity_type: file - uuid: 4e864502-a81a-43cc-8c6d-d0018bc9de77 + uuid: c31b572d-b1d2-441b-a491-b373d6c54e2f default_langcode: en default: uid: @@ -24,4 +24,4 @@ default: value: true created: - - value: 1676433533 + value: 1690927538 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/100e4cfc-33b8-4980-9196-05d519a13dea.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/100e4cfc-33b8-4980-9196-05d519a13dea.yml index 9fb5771fb..e3ef8300f 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/100e4cfc-33b8-4980-9196-05d519a13dea.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/100e4cfc-33b8-4980-9196-05d519a13dea.yml @@ -39,6 +39,9 @@ default: alias: /individuals langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -48,9 +51,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml index 6fce25713..64589314a 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml @@ -34,6 +34,9 @@ default: alias: /community-engagement langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/416a4c14-20fc-4c12-ad96-aa27d584a554.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/416a4c14-20fc-4c12-ad96-aa27d584a554.yml index 4b1a131ae..16ddfd846 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/416a4c14-20fc-4c12-ad96-aa27d584a554.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/416a4c14-20fc-4c12-ad96-aa27d584a554.yml @@ -39,6 +39,9 @@ default: alias: /civictheme-60-second-series langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -48,9 +51,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml index 5b7bd3a83..12551afbf 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml @@ -43,6 +43,9 @@ default: alias: '' langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -62,6 +65,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_background: - value: false @@ -94,6 +100,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_background: - value: false @@ -122,6 +131,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_summary: - value: 'Short summary of a quick link goes here' @@ -149,6 +161,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_summary: - value: 'Short summary of a quick link goes here' @@ -176,6 +191,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_summary: - value: 'Short summary of a quick link goes here' @@ -203,6 +221,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_summary: - value: 'Short summary of a quick link goes here' @@ -227,9 +248,6 @@ default: field_c_n_banner_type: - value: large - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: @@ -249,6 +267,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_background: - value: false @@ -334,6 +355,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_image: - entity: d0ff700e-b452-4b72-a94d-7e509e2a8b80 @@ -366,6 +390,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_image: - entity: e07cdb41-1bd4-463f-9e7c-126302b24740 @@ -398,6 +425,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_image: - entity: 4c9975b0-77ca-4f82-95d0-3fb2a1122978 @@ -430,6 +460,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_image: - entity: 68d50fea-aae4-4dde-832c-b385ff9731e1 @@ -471,6 +504,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_content: - value: 'Short summary area for the callout to promote any content.' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml index b6182f7b8..4871e5d58 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml @@ -34,6 +34,9 @@ default: alias: /subscribe langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d2fbfa0-5402-461e-9357-9eb7efb850f5.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d2fbfa0-5402-461e-9357-9eb7efb850f5.yml index 5778e54ab..2da905190 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d2fbfa0-5402-461e-9357-9eb7efb850f5.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d2fbfa0-5402-461e-9357-9eb7efb850f5.yml @@ -37,6 +37,9 @@ default: alias: /government langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -46,9 +49,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml index 1adcfcba2..8f8922882 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml @@ -34,6 +34,9 @@ default: alias: /about-us langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/9c4229fe-7dd7-4a10-a389-3868d27ae469.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/9c4229fe-7dd7-4a10-a389-3868d27ae469.yml index 96efbc64b..b8aa240ab 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/9c4229fe-7dd7-4a10-a389-3868d27ae469.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/9c4229fe-7dd7-4a10-a389-3868d27ae469.yml @@ -37,6 +37,9 @@ default: alias: /businesses langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -46,9 +49,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml index a12dda26f..ad6c21905 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml @@ -34,6 +34,9 @@ default: alias: /contact-us langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml index 2d925cbb7..bc88a617d 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_default/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml @@ -36,6 +36,9 @@ default: alias: /news-and-events langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -45,9 +48,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.png deleted file mode 100644 index 71824d682..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.svg new file mode 100644 index 000000000..04bfce460 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.png deleted file mode 100644 index 71824d682..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.svg new file mode 100644 index 000000000..04bfce460 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.png deleted file mode 100644 index ab6b3ae13..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.svg new file mode 100644 index 000000000..3a2029ee4 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.png deleted file mode 100644 index ab6b3ae13..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.svg new file mode 100644 index 000000000..3a2029ee4 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/block.block.civictheme_side_navigation.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/block.block.civictheme_side_navigation.yml index 93a189a7d..3afdf62c7 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/block.block.civictheme_side_navigation.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/block.block.civictheme_side_navigation.yml @@ -32,4 +32,4 @@ visibility: request_path: id: request_path negate: true - pages: "/news-and-events\n\r*civictheme-no-sidebar*" + pages: "/search\n\r/news-and-events" diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/civictheme.settings.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/civictheme.settings.yml index f3c8dceef..4f98a8b50 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/civictheme.settings.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/config/optional/civictheme.settings.yml @@ -9,14 +9,14 @@ components: primary: light: desktop: - path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.png + path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_desktop.svg mobile: - path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.png + path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_light_mobile.svg dark: desktop: - path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.png + path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_desktop.svg mobile: - path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.png + path: modules/custom/civictheme_content/modules/civictheme_content_government/assets/logos/logo_primary_dark_mobile.svg secondary: light: desktop: @@ -75,6 +75,25 @@ colors: brand2: '#0f305a' brand3: '#e38444' palette: + light: + heading: '#042849' + body: '#34434f' + background_light: '#fdfdfd' + background: '#f2f2f2' + background_dark: '#c1c1c1' + border_light: '#b5b5b5' + border: '#606060' + border_dark: '#181818' + interaction_text: '#fcfcfc' + interaction_background: '#0b66b8' + interaction_hover_text: '#fcfcfc' + interaction_hover_background: '#063d6e' + interaction_focus: '#8b5cd7' + highlight: '#024d8f' + information: '#007cbf' + warning: '#c95100' + error: '#ce3836' + success: '#008482' dark: heading: '#f5fafd' body: '#e1f2fa' @@ -94,24 +113,3 @@ colors: warning: '#e38444' error: '#e75653' success: '#12b0ae' - light: - background: '#f2f2f2' - border: '#606060' - highlight: '#024d8f' - heading: '#042849' - body: '#34434f' - background_light: '#fdfdfd' - background_dark: '#c1c1c1' - border_light: '#b5b5b5' - border_dark: '#181818' - interaction_text: '#fcfcfc' - interaction_background: '#0b66b8' - interaction_hover_text: '#fcfcfc' - interaction_hover_background: '#063d6e' - interaction_focus: '#8b5cd7' - information: '#007cbf' - warning: '#c95100' - error: '#ce3836' - success: '#008482' -migration: - expose_metadata: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml index 6e4a26e61..35bf915d0 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml @@ -19,6 +19,6 @@ default: value: true field_c_b_link: - - uri: 'internal:/' + uri: 'internal:/search' title: Search options: { } diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml index 40977dfe0..d5f48f787 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml @@ -22,12 +22,12 @@ default: field_c_b_background_image: - entity: af43a085-7e4f-40d4-a8d7-79ddd18fbcf0 + field_c_b_banner_blend_mode: + - + value: overlay field_c_b_banner_type: - value: default - field_c_b_blend_mode: - - - value: overlay field_c_b_theme: - value: dark diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/02e8b931-63b9-4ba7-88c3-0ec21868268b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/02e8b931-63b9-4ba7-88c3-0ec21868268b.yml new file mode 100644 index 000000000..6abd89389 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/02e8b931-63b9-4ba7-88c3-0ec21868268b.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 02e8b931-63b9-4ba7-88c3-0ec21868268b + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy3.pdf + uri: + - + value: 'public://documents/2023-06/dummy3.pdf' + filemime: + - + value: application/pdf + filesize: + - + value: 63656 + status: + - + value: true + created: + - + value: 1686797531 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/0d621b6e-9375-47ee-8df1-d6e91e4314aa.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/0d621b6e-9375-47ee-8df1-d6e91e4314aa.yml new file mode 100644 index 000000000..d521aa12b --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/0d621b6e-9375-47ee-8df1-d6e91e4314aa.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 0d621b6e-9375-47ee-8df1-d6e91e4314aa + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy2.txt + uri: + - + value: 'public://documents/2023-06/dummy2.txt' + filemime: + - + value: text/plain + filesize: + - + value: 26 + status: + - + value: true + created: + - + value: 1687665254 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/19722339-a9a3-452f-b7ac-e48127be10c2.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/19722339-a9a3-452f-b7ac-e48127be10c2.yml new file mode 100644 index 000000000..e00c7229f --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/19722339-a9a3-452f-b7ac-e48127be10c2.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 19722339-a9a3-452f-b7ac-e48127be10c2 + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy1.pdf + uri: + - + value: 'public://documents/2023-06/dummy1.pdf' + filemime: + - + value: application/pdf + filesize: + - + value: 7945 + status: + - + value: true + created: + - + value: 1686797473 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/2e83befe-9fcb-452e-871d-254b120385c3.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/2e83befe-9fcb-452e-871d-254b120385c3.yml new file mode 100644 index 000000000..3789ee7d1 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/2e83befe-9fcb-452e-871d-254b120385c3.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 2e83befe-9fcb-452e-871d-254b120385c3 + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy2.pdf + uri: + - + value: 'public://documents/2023-06/dummy2.pdf' + filemime: + - + value: application/pdf + filesize: + - + value: 130418 + status: + - + value: true + created: + - + value: 1686797513 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/38de3cdb-63b6-40f1-b60d-110c30a8a9fc.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/38de3cdb-63b6-40f1-b60d-110c30a8a9fc.yml new file mode 100644 index 000000000..ee2ee6c74 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/38de3cdb-63b6-40f1-b60d-110c30a8a9fc.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 38de3cdb-63b6-40f1-b60d-110c30a8a9fc + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy2.docx + uri: + - + value: 'public://documents/2023-06/dummy2.docx' + filemime: + - + value: application/vnd.openxmlformats-officedocument.wordprocessingml.document + filesize: + - + value: 11774 + status: + - + value: true + created: + - + value: 1687665283 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/533dd153-a9ad-48cb-8ddb-97b9050575d7.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/533dd153-a9ad-48cb-8ddb-97b9050575d7.yml new file mode 100644 index 000000000..0485ff232 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/533dd153-a9ad-48cb-8ddb-97b9050575d7.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: 533dd153-a9ad-48cb-8ddb-97b9050575d7 + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy1.txt + uri: + - + value: 'public://documents/2023-06/dummy1.txt' + filemime: + - + value: text/plain + filesize: + - + value: 26 + status: + - + value: true + created: + - + value: 1687665240 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/a1623ae4-d165-4923-a5f4-a52d3c9719c9.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/db85dd04-fddd-4ab4-b364-2d5a3460ad98.yml similarity index 83% rename from docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/a1623ae4-d165-4923-a5f4-a52d3c9719c9.yml rename to docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/db85dd04-fddd-4ab4-b364-2d5a3460ad98.yml index b3274440a..71c2a0e7a 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/a1623ae4-d165-4923-a5f4-a52d3c9719c9.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/db85dd04-fddd-4ab4-b364-2d5a3460ad98.yml @@ -1,7 +1,7 @@ _meta: version: '1.0' entity_type: file - uuid: a1623ae4-d165-4923-a5f4-a52d3c9719c9 + uuid: db85dd04-fddd-4ab4-b364-2d5a3460ad98 default_langcode: en default: uid: @@ -24,4 +24,4 @@ default: value: true created: - - value: 1676436382 + value: 1690931272 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.docx b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.docx new file mode 100644 index 000000000..2fe4f451e Binary files /dev/null and b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.docx differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.pdf b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.pdf new file mode 100644 index 000000000..f698ff53d Binary files /dev/null and b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.pdf differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.txt b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.txt new file mode 100644 index 000000000..ae9ffbce6 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy1.txt @@ -0,0 +1 @@ +This is a test text file 1 \ No newline at end of file diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.docx b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.docx new file mode 100644 index 000000000..941067716 Binary files /dev/null and b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.docx differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.pdf b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.pdf new file mode 100644 index 000000000..ddc9c19b4 Binary files /dev/null and b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.pdf differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.txt b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.txt new file mode 100644 index 000000000..296cac502 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy2.txt @@ -0,0 +1 @@ +This is a test text file 2 \ No newline at end of file diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy3.pdf b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy3.pdf new file mode 100644 index 000000000..37fe8ff8b Binary files /dev/null and b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/dummy3.pdf differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/f73a6c37-2c78-4850-aabd-cf46210beb58.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/f73a6c37-2c78-4850-aabd-cf46210beb58.yml new file mode 100644 index 000000000..a9793fab0 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/file/f73a6c37-2c78-4850-aabd-cf46210beb58.yml @@ -0,0 +1,27 @@ +_meta: + version: '1.0' + entity_type: file + uuid: f73a6c37-2c78-4850-aabd-cf46210beb58 + default_langcode: en +default: + uid: + - + target_id: 1 + filename: + - + value: dummy1.docx + uri: + - + value: 'public://documents/2023-06/dummy1.docx' + filemime: + - + value: application/vnd.openxmlformats-officedocument.wordprocessingml.document + filesize: + - + value: 11777 + status: + - + value: true + created: + - + value: 1687665271 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/02986a1f-61c6-4e26-9e74-373d2bc0c634.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/02986a1f-61c6-4e26-9e74-373d2bc0c634.yml new file mode 100644 index 000000000..d06356305 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/02986a1f-61c6-4e26-9e74-373d2bc0c634.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 02986a1f-61c6-4e26-9e74-373d2bc0c634 + bundle: civictheme_document + default_langcode: en + depends: + 2e83befe-9fcb-452e-871d-254b120385c3: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: 'Dummy 2' + created: + - + value: 1686797507 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: 2e83befe-9fcb-452e-871d-254b120385c3 + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/2fbae552-33a2-406e-87a6-159e419faf85.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/2fbae552-33a2-406e-87a6-159e419faf85.yml new file mode 100644 index 000000000..bef0efde0 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/2fbae552-33a2-406e-87a6-159e419faf85.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 2fbae552-33a2-406e-87a6-159e419faf85 + bundle: civictheme_document + default_langcode: en + depends: + 0d621b6e-9375-47ee-8df1-d6e91e4314aa: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: 'Dummy text file 2' + created: + - + value: 1687665251 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: 0d621b6e-9375-47ee-8df1-d6e91e4314aa + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/4603fcc8-7b0c-4698-aba9-2a43508b1038.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/4603fcc8-7b0c-4698-aba9-2a43508b1038.yml new file mode 100644 index 000000000..2ba80354e --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/4603fcc8-7b0c-4698-aba9-2a43508b1038.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 4603fcc8-7b0c-4698-aba9-2a43508b1038 + bundle: civictheme_document + default_langcode: en + depends: + 533dd153-a9ad-48cb-8ddb-97b9050575d7: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: 'Dummy text file 1' + created: + - + value: 1687665219 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: 533dd153-a9ad-48cb-8ddb-97b9050575d7 + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/50ea2910-e6f9-495e-9174-3b84e97426b7.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/50ea2910-e6f9-495e-9174-3b84e97426b7.yml new file mode 100644 index 000000000..c19056e25 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/50ea2910-e6f9-495e-9174-3b84e97426b7.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 50ea2910-e6f9-495e-9174-3b84e97426b7 + bundle: civictheme_document + default_langcode: en + depends: + f73a6c37-2c78-4850-aabd-cf46210beb58: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: 'Dummy docx file 1' + created: + - + value: 1687665258 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: f73a6c37-2c78-4850-aabd-cf46210beb58 + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/9896b6d9-c590-48af-a0ce-fed22a0ec861.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/9896b6d9-c590-48af-a0ce-fed22a0ec861.yml new file mode 100644 index 000000000..bd47b7194 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/9896b6d9-c590-48af-a0ce-fed22a0ec861.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: 9896b6d9-c590-48af-a0ce-fed22a0ec861 + bundle: civictheme_document + default_langcode: en + depends: + 38de3cdb-63b6-40f1-b60d-110c30a8a9fc: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: 'Dummy docx file 2' + created: + - + value: 1687665281 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: 38de3cdb-63b6-40f1-b60d-110c30a8a9fc + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/a5653abc-41de-4b8f-a9b7-cb48aeeacd5b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/a5653abc-41de-4b8f-a9b7-cb48aeeacd5b.yml new file mode 100644 index 000000000..e0c1f6b8a --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/a5653abc-41de-4b8f-a9b7-cb48aeeacd5b.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: a5653abc-41de-4b8f-a9b7-cb48aeeacd5b + bundle: civictheme_document + default_langcode: en + depends: + 02e8b931-63b9-4ba7-88c3-0ec21868268b: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: Dummy3 + created: + - + value: 1686797528 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: 02e8b931-63b9-4ba7-88c3-0ec21868268b + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/ab71f96c-d1b4-4a7f-be7d-7b5fa5b26925.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/ab71f96c-d1b4-4a7f-be7d-7b5fa5b26925.yml new file mode 100644 index 000000000..0a6ebadc3 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/media/ab71f96c-d1b4-4a7f-be7d-7b5fa5b26925.yml @@ -0,0 +1,37 @@ +_meta: + version: '1.0' + entity_type: media + uuid: ab71f96c-d1b4-4a7f-be7d-7b5fa5b26925 + bundle: civictheme_document + default_langcode: en + depends: + 19722339-a9a3-452f-b7ac-e48127be10c2: file +default: + revision_user: + - + target_id: 1 + status: + - + value: true + uid: + - + target_id: 1 + name: + - + value: 'Dummy 1' + created: + - + value: 1686797421 + revision_translation_affected: + - + value: true + path: + - + alias: '' + langcode: en + pathauto: 0 + field_c_m_document: + - + entity: 19722339-a9a3-452f-b7ac-e48127be10c2 + display: true + description: '' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/2f378b27-3b67-441a-96a9-0a6de73fb1db.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/2f378b27-3b67-441a-96a9-0a6de73fb1db.yml index 02cbd0418..b2e9c15f8 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/2f378b27-3b67-441a-96a9-0a6de73fb1db.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/2f378b27-3b67-441a-96a9-0a6de73fb1db.yml @@ -29,7 +29,7 @@ default: value: false weight: - - value: 0 + value: -49 expanded: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/4968109e-0125-40e1-ab9d-b4fca8546ef3.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/4968109e-0125-40e1-ab9d-b4fca8546ef3.yml new file mode 100644 index 000000000..2d86de53a --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/4968109e-0125-40e1-ab9d-b4fca8546ef3.yml @@ -0,0 +1,36 @@ +_meta: + version: '1.0' + entity_type: menu_link_content + uuid: 4968109e-0125-40e1-ab9d-b4fca8546ef3 + bundle: menu_link_content + default_langcode: en +default: + enabled: + - + value: true + title: + - + value: civictheme.io + menu_name: + - + value: civictheme-secondary-navigation + link: + - + uri: 'https://www.civictheme.io/' + title: '' + options: { } + external: + - + value: false + rediscover: + - + value: false + weight: + - + value: -46 + expanded: + - + value: false + revision_translation_affected: + - + value: true diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/b07f9704-b2cf-458a-82ab-db0e55a276e9.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/b07f9704-b2cf-458a-82ab-db0e55a276e9.yml index 35b8dc64c..6342a8d06 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/b07f9704-b2cf-458a-82ab-db0e55a276e9.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/b07f9704-b2cf-458a-82ab-db0e55a276e9.yml @@ -29,7 +29,7 @@ default: value: false weight: - - value: 0 + value: -50 expanded: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/c9db3cb1-9c9f-4af3-a713-58458503589b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/c9db3cb1-9c9f-4af3-a713-58458503589b.yml index b95223b8e..94cec1e2d 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/c9db3cb1-9c9f-4af3-a713-58458503589b.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/c9db3cb1-9c9f-4af3-a713-58458503589b.yml @@ -29,7 +29,7 @@ default: value: false weight: - - value: 2 + value: -48 expanded: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/fff6ce32-3f1b-495a-8263-c08302c80a32.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/fff6ce32-3f1b-495a-8263-c08302c80a32.yml index bc2b4140a..9d99eaee4 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/fff6ce32-3f1b-495a-8263-c08302c80a32.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/menu_link_content/fff6ce32-3f1b-495a-8263-c08302c80a32.yml @@ -29,7 +29,7 @@ default: value: false weight: - - value: 3 + value: -47 expanded: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/02831341-01cd-4d7d-80b7-20f01feb950b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/02831341-01cd-4d7d-80b7-20f01feb950b.yml index bfad1425d..c479e4513 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/02831341-01cd-4d7d-80b7-20f01feb950b.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/02831341-01cd-4d7d-80b7-20f01feb950b.yml @@ -34,6 +34,9 @@ default: alias: /programs-and-services langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: @@ -108,7 +108,7 @@ default: value: false field_c_p_content: - - value: "

Current programs

\r\n\r\n

Free English Tuition Program (ETP)

\r\n\r\n

The Department of Citizens provides a free English Tuition Program (ETP). The ETP helps immigrants reach a higher level of proficiency in the English language, making settlement in Australia easier.

\r\n\r\n

ETP classes are free and flexible to support you to learn wherever you are in Australia. Distance learning is also an available option.

\r\n\r\n

The ETP has been offering free English tuition for over 50 years. People are welcome to attend for as long as they need to reach a higher English language skill level.

\r\n\r\n

Find out more about the ETP

\r\n\r\n

Employment Experience Placement Program (EEPP)

\r\n\r\n

The Employment Placement Program (EEPP) is available for participants aged 18 years and over to gain work experience to help develop real-world skills, confidence or a qualification in the workforce.

\r\n\r\n

Placements are available in a wide range of areas, with the work experience period established for up to 8 weeks. Eligible participants have the opportunity to build upon their core competencies in areas including office administration, retail, landscaping, tourism, hospitality, marketing, or warehouse duties.

\r\n\r\n

Upon successful completion of the EEPP, participants will be eligible for free accredited training in the field of their placement.

\r\n\r\n

Find out more about the EEPP and eligibility requirements

\r\n\r\n

Our services

\r\n\r\n

Translation service

\r\n\r\n

The Department of Citizens provides a translation telephone service. It’s available 24 hours a day, 7-days a week, including all public holidays.

\r\n\r\n

The service is available for people who don’t speak English and businesses that need to communicate with non-English speaking clients.

\r\n\r\n

You can access the translation service by calling 1300 000 000 for the cost of a local phone call.

\r\n\r\n

Health and aged care home support services

\r\n\r\n

Are you an older citizen, or are you suffering from a health condition and finding everyday tasks difficult to manage? The Department of Citizens provides support services to help during times of illness or to support older citizens to stay in their homes.

\r\n\r\n

Our health and aged care home support services include:

\r\n\r\n
    \r\n\t
  • In-home nursing
  • \r\n\t
  • In-home physiotherapy
  • \r\n\t
  • Medication delivery
  • \r\n\t
  • Transport
  • \r\n\t
  • Home and garden maintenance
  • \r\n\t
  • Meal delivery
  • \r\n\t
  • Hygiene and grooming
  • \r\n\t
  • Home cleaning
  • \r\n\t
  • Mobility aid hire
  • \r\n
\r\n\r\n

Find out more about our home support services and eligibility requirements

\r\n\r\n

Employment assistance services

\r\n\r\n

The Department of Citizens offers a range of employment assistance services to help our citizens find and keep a job.

\r\n\r\n

We can provide short-term payments for when you’re looking for work or if you’re unable to work due to injury or illness. You can also access our tools and services to help with everything from developing and improving skills to finding employment.

\r\n\r\n

See our list of employment assistance services

\r\n\r\n

See all of the services provided by the Department of Citizens

\r\n" + value: "

Current programs

\r\n\r\n

Free English Tuition Program (ETP)

\r\n\r\n

The Department of Citizens provides a free English Tuition Program (ETP). The ETP helps immigrants reach a higher level of proficiency in the English language, making settlement in Australia easier.

\r\n\r\n

ETP classes are free and flexible to support you to learn wherever you are in Australia. Distance learning is also an available option.

\r\n\r\n

The ETP has been offering free English tuition for over 50 years. People are welcome to attend for as long as they need to reach a higher English language skill level.

\r\n\r\n

Find out more about the ETP

\r\n\r\n

Employment Experience Placement Program (EEPP)

\r\n\r\n

The Employment Placement Program (EEPP) is available for participants aged 18 years and over to gain work experience to help develop real-world skills, confidence or a qualification in the workforce.

\r\n\r\n

Placements are available in a wide range of areas, with the work experience period established for up to 8 weeks. Eligible participants have the opportunity to build upon their core competencies in areas including office administration, retail, landscaping, tourism, hospitality, marketing, or warehouse duties.

\r\n\r\n

Upon successful completion of the EEPP, participants will be eligible for free accredited training in the field of their placement.

\r\n\r\n

Find out more about the EEPP and eligibility requirements

\r\n\r\n

Our services

\r\n\r\n

Translation service

\r\n\r\n

The Department of Citizens provides a translation telephone service. It’s available 24 hours a day, 7-days a week, including all public holidays.

\r\n\r\n

The service is available for people who don’t speak English and businesses that need to communicate with non-English speaking clients.

\r\n\r\n

You can access the translation service by calling 1300 000 000 for the cost of a local phone call.

\r\n\r\n

Health and aged care home support services

\r\n\r\n

Are you an older citizen, or are you suffering from a health condition and finding everyday tasks difficult to manage? The Department of Citizens provides support services to help during times of illness or to support older citizens to stay in their homes.

\r\n\r\n

Our health and aged care home support services include:

\r\n\r\n
    \r\n\t
  • In-home nursing
  • \r\n\t
  • In-home physiotherapy
  • \r\n\t
  • Medication delivery
  • \r\n\t
  • Transport
  • \r\n\t
  • Home and garden maintenance
  • \r\n\t
  • Meal delivery
  • \r\n\t
  • Hygiene and grooming
  • \r\n\t
  • Home cleaning
  • \r\n\t
  • Mobility aid hire
  • \r\n
\r\n\r\n

Find out more about our home support services and eligibility requirements

\r\n\r\n

Employment assistance services

\r\n\r\n

The Department of Citizens offers a range of employment assistance services to help our citizens find and keep a job.

\r\n\r\n

We can provide short-term payments for when you’re looking for work or if you’re unable to work due to injury or illness. You can also access our tools and services to help with everything from developing and improving skills to finding employment.

\r\n\r\n

See our list of employment assistance services

\r\n\r\n

See all of the services provided by the Department of Citizens

\r\n" format: civictheme_rich_text field_c_p_theme: - diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/0d96ff66-61ff-44fc-a9e4-a8b174f6da95.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/0d96ff66-61ff-44fc-a9e4-a8b174f6da95.yml index c05a14c99..214f3ad26 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/0d96ff66-61ff-44fc-a9e4-a8b174f6da95.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/0d96ff66-61ff-44fc-a9e4-a8b174f6da95.yml @@ -37,6 +37,9 @@ default: alias: /news-and-events langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -46,9 +49,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/21d11ae0-2874-4663-9937-a48ce30a7ad7.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/21d11ae0-2874-4663-9937-a48ce30a7ad7.yml index da5c0ca47..2824e24b1 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/21d11ae0-2874-4663-9937-a48ce30a7ad7.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/21d11ae0-2874-4663-9937-a48ce30a7ad7.yml @@ -34,6 +34,9 @@ default: alias: /about-this-template-website langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: @@ -73,7 +73,7 @@ default: value: false field_c_p_content: - - value: "

About this template website

\r\n\r\n

This is a template website with dummy content. All content is for demonstration purposes only. This website has been created to show how CivicTheme can be used out-of-the-box to quickly and easily create a government website.

\r\n\r\n

This site contains \"dummy\" content for a fictitious government department, the Department of Citizens. All links lead to either:

\r\n\r\n
    \r\n\t
  • Dummy content created for this site
  • \r\n\t
  • This page, which contains information about the website
  • \r\n
\r\n\r\n

About CivicTheme

\r\n\r\n

CivicTheme is a new, open source component-based design system and Drupal 9 theme. It provides a quick, easy and cost-efficient solution to build new websites. Web publishers and administrators can create and manage pages and layout designs without any coding.

\r\n\r\n

It was developed with a strong user experience.

\r\n\r\n

More about CivicTheme

\r\n" + value: "

About this template website

\r\n\r\n

This is a template website with dummy content. All content is for demonstration purposes only. This website has been created to show how CivicTheme can be used out-of-the-box to quickly and easily create a government website.

\r\n\r\n

This site contains \"dummy\" content for a fictitious government department, the Department of Citizens. All links lead to either:

\r\n\r\n
    \r\n\t
  • Dummy content created for this site
  • \r\n\t
  • This page, which contains information about the website
  • \r\n\t
  • Link to a dummy document
  • \r\n
\r\n\r\n

About CivicTheme

\r\n\r\n

CivicTheme is a new, open source component-based design system and Drupal 9 theme. It provides a quick, easy and cost-efficient solution to build new websites. Web publishers and administrators can create and manage pages and layout designs without any coding.

\r\n\r\n

It was developed with a strong user experience.

\r\n\r\n

More about CivicTheme

\r\n" format: civictheme_rich_text field_c_p_theme: - diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/3554631b-63d2-461e-916e-217a18d1d298.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/3554631b-63d2-461e-916e-217a18d1d298.yml index d0c84cabf..32317f74f 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/3554631b-63d2-461e-916e-217a18d1d298.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/3554631b-63d2-461e-916e-217a18d1d298.yml @@ -34,6 +34,9 @@ default: alias: /our-locations langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: overlay field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: overlay field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/52a73eef-5883-4277-8e4e-e2e587670b59.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/52a73eef-5883-4277-8e4e-e2e587670b59.yml index cf7ac77f2..66660e201 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/52a73eef-5883-4277-8e4e-e2e587670b59.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/52a73eef-5883-4277-8e4e-e2e587670b59.yml @@ -38,6 +38,9 @@ default: alias: /news-and-events/citizenship-application-fees-change-effective-1-july-2022 langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -82,9 +85,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml index 03984a99a..0b77297dc 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml @@ -34,6 +34,9 @@ default: alias: /subscribe langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml index b819cb2f9..d7dd41046 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml @@ -34,6 +34,9 @@ default: alias: /about-us langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: soft-light field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: soft-light field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6f588571-e649-47dc-9911-c1723cb07e71.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6f588571-e649-47dc-9911-c1723cb07e71.yml index 5c641b1e7..691061834 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6f588571-e649-47dc-9911-c1723cb07e71.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/6f588571-e649-47dc-9911-c1723cb07e71.yml @@ -38,6 +38,9 @@ default: alias: /news-and-events/three-tips-driving-greener-save-money-and-support-more-sustainable-environment langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -82,9 +85,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/882a6c90-74f4-44c7-ab53-fb0a9937c678.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/882a6c90-74f4-44c7-ab53-fb0a9937c678.yml index 792957a88..dd4a396a4 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/882a6c90-74f4-44c7-ab53-fb0a9937c678.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/882a6c90-74f4-44c7-ab53-fb0a9937c678.yml @@ -64,6 +64,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_address: - value: 'Citizenship Shire Council' diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7759fda-e55d-4a37-b6e6-fb1816e75365.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7759fda-e55d-4a37-b6e6-fb1816e75365.yml index 450d46429..be68591df 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7759fda-e55d-4a37-b6e6-fb1816e75365.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7759fda-e55d-4a37-b6e6-fb1816e75365.yml @@ -34,6 +34,9 @@ default: alias: /careers langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: overlay field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: overlay field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7f32ddb-c81a-40ff-8389-a935cd317201.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7f32ddb-c81a-40ff-8389-a935cd317201.yml index 142f1e3ac..f59496c32 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7f32ddb-c81a-40ff-8389-a935cd317201.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/b7f32ddb-c81a-40ff-8389-a935cd317201.yml @@ -34,6 +34,9 @@ default: alias: /consultations langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml index 6c173d041..e4f27bef8 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml @@ -34,6 +34,9 @@ default: alias: /contact-us langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/d82c4982-b334-43ed-bfad-32ce5e63cba6.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/d82c4982-b334-43ed-bfad-32ce5e63cba6.yml index 7fceb13b1..adef092de 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/d82c4982-b334-43ed-bfad-32ce5e63cba6.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/d82c4982-b334-43ed-bfad-32ce5e63cba6.yml @@ -52,6 +52,9 @@ default: field_c_n_banner_background: - entity: af43a085-7e4f-40d4-a8d7-79ddd18fbcf0 + field_c_n_banner_blend_mode: + - + value: overlay field_c_n_banner_components: - entity: @@ -304,9 +307,6 @@ default: field_c_n_banner_type: - value: large - field_c_n_blend_mode: - - - value: overlay field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/dbb6bfd1-8427-40f1-9ca6-96d21a368a65.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/dbb6bfd1-8427-40f1-9ca6-96d21a368a65.yml index 81f41ce24..c59327ef8 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/dbb6bfd1-8427-40f1-9ca6-96d21a368a65.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/dbb6bfd1-8427-40f1-9ca6-96d21a368a65.yml @@ -29,6 +29,9 @@ default: sticky: - value: false + revision_translation_affected: + - + value: true path: - alias: /events/spotlight-dementia-webinar @@ -61,6 +64,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_background: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f3c7ec64-459f-4ea7-8060-f60b0d84901c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f3c7ec64-459f-4ea7-8060-f60b0d84901c.yml index 4b830b432..10528b73f 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f3c7ec64-459f-4ea7-8060-f60b0d84901c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f3c7ec64-459f-4ea7-8060-f60b0d84901c.yml @@ -4,6 +4,10 @@ _meta: uuid: f3c7ec64-459f-4ea7-8060-f60b0d84901c bundle: civictheme_page default_langcode: en + depends: + ab71f96c-d1b4-4a7f-be7d-7b5fa5b26925: media + 02986a1f-61c6-4e26-9e74-373d2bc0c634: media + 9896b6d9-c590-48af-a0ce-fed22a0ec861: media default: revision_uid: - @@ -34,6 +38,9 @@ default: alias: /policy-and-forms langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +85,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: @@ -108,7 +112,7 @@ default: value: false field_c_p_content: - - value: "

Policies and procedures

\r\n\r\n

The Department of Citizens holds policy and procedure documents in our National Online Database. Our policies document all responsibilities and services performed across all areas within the Department of Citizens.

\r\n\r\n

Our most commonly viewed policy and procedure documents:

\r\n\r\n
    \r\n\t
  • Ministerial code of conduct
  • \r\n\t
  • Ministers’ handbook 
  • \r\n\t
  • Employment and education policies
  • \r\n\t
  • Immigration and citizenship procedures
  • \r\n\t
  • Aged care policies
  • \r\n\t
  • Environmental emergency procedures
  • \r\n\t
  • Complaint handling policy
  • \r\n\t
  • Department of Citizens manual
  • \r\n
\r\n\r\n

See all policy and procedure documents

\r\n\r\n

Online forms

\r\n\r\n

Search for an online application form.

\r\n\r\n

We deliver programs and services for the public and businesses across the following sectors:

\r\n\r\n\r\n\r\n

See all online application forms

\r\n\r\n

All Department of Citizen employee forms can be found at CitizenForms.

\r\n\r\n

If you can’t locate the policy document or form that you’re looking for, please contact our Policy and Procedure Department on +61 2 6333 4434.

\r\n\r\n

You can access the translation service by calling 1300 000 000 for the cost of a local phone call.

\r\n" + value: "

Policies and procedures

\r\n\r\n

The Department of Citizens holds policy and procedure documents in our National Online Database. Our policies document all responsibilities and services performed across all areas within the Department of Citizens.

\r\n\r\n

Our most commonly viewed policy and procedure documents:

\r\n\r\n
    \r\n\t
  • Ministerial code of conduct
  • \r\n\t
  • Ministers’ handbook 
  • \r\n\t
  • Employment and education policies
  • \r\n\t
  • Immigration and citizenship procedures
  • \r\n\t
  • Aged care policies
  • \r\n\t
  • Environmental emergency procedures
  • \r\n\t
  • Complaint handling policy
  • \r\n\t
  • Department of Citizens manual
  • \r\n
\r\n\r\n

See all policy and procedure documents

\r\n\r\n

Online forms

\r\n\r\n

Search for an online application form.

\r\n\r\n

We deliver programs and services for the public and businesses across the following sectors:

\r\n\r\n\r\n\r\n

See all online application forms

\r\n\r\n

All Department of Citizen employee forms can be found at CitizenForms.

\r\n\r\n

If you can’t locate the policy document or form that you’re looking for, please contact our Policy and Procedure Department on +61 2 6333 4434.

\r\n\r\n

You can access the translation service by calling 1300 000 000 for the cost of a local phone call.

\r\n" format: civictheme_rich_text field_c_p_theme: - @@ -116,6 +120,46 @@ default: field_c_p_vertical_spacing: - value: bottom + - + entity: + _meta: + version: '1.0' + entity_type: paragraph + uuid: 78b50f79-bb99-46ba-b25a-5d75b2ea551a + bundle: civictheme_attachment + default_langcode: en + default: + status: + - + value: true + created: + - + value: 1686797620 + behavior_settings: + - + value: { } + revision_translation_affected: + - + value: true + field_c_p_attachments: + - + entity: ab71f96c-d1b4-4a7f-be7d-7b5fa5b26925 + - + entity: 02986a1f-61c6-4e26-9e74-373d2bc0c634 + - + entity: 9896b6d9-c590-48af-a0ce-fed22a0ec861 + field_c_p_background: + - + value: false + field_c_p_theme: + - + value: light + field_c_p_title: + - + value: 'Example form' + field_c_p_vertical_spacing: + - + value: bottom field_c_n_hide_sidebar: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f5794802-f1a0-48ac-aaff-27acfd80d799.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f5794802-f1a0-48ac-aaff-27acfd80d799.yml index 8070e7c25..b880b112a 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f5794802-f1a0-48ac-aaff-27acfd80d799.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_government/content/node/f5794802-f1a0-48ac-aaff-27acfd80d799.yml @@ -30,11 +30,17 @@ default: sticky: - value: false + revision_translation_affected: + - + value: true path: - alias: /news-and-events/department-citizens-invest-23-million-clinical-trials-brain-cancer langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -54,6 +60,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_background: - value: false @@ -76,9 +85,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: @@ -98,6 +104,9 @@ default: behavior_settings: - value: { } + revision_translation_affected: + - + value: true field_c_p_background: - value: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.png deleted file mode 100644 index 4f1b58911..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.svg new file mode 100644 index 000000000..77e44243c --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.png deleted file mode 100644 index 4f1b58911..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.svg new file mode 100644 index 000000000..77e44243c --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.png deleted file mode 100644 index ddeeeb386..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.svg new file mode 100644 index 000000000..c4eb60fa0 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.png b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.png deleted file mode 100644 index ddeeeb386..000000000 Binary files a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.png and /dev/null differ diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.svg b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.svg new file mode 100644 index 000000000..c4eb60fa0 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/block.block.civictheme_side_navigation.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/block.block.civictheme_side_navigation.yml index e762cbf89..3afdf62c7 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/block.block.civictheme_side_navigation.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/block.block.civictheme_side_navigation.yml @@ -32,4 +32,4 @@ visibility: request_path: id: request_path negate: true - pages: "/news-and-events" + pages: "/search\n\r/news-and-events" diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/civictheme.settings.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/civictheme.settings.yml index 11570ec9a..e69a5687d 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/civictheme.settings.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/config/optional/civictheme.settings.yml @@ -9,14 +9,14 @@ components: primary: light: desktop: - path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.png + path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_desktop.svg mobile: - path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.png + path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_light_mobile.svg dark: desktop: - path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.png + path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_desktop.svg mobile: - path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.png + path: modules/custom/civictheme_content/modules/civictheme_content_highereducation/assets/logos/logo_primary_dark_mobile.svg secondary: light: desktop: @@ -75,6 +75,25 @@ colors: brand2: '#004b51' brand3: '#28ccff' palette: + light: + heading: '#033334' + body: '#334747' + background_light: '#fdfdfd' + background: '#eeeeee' + background_dark: '#bebebe' + border_light: '#b2b2b2' + border: '#5f5f5f' + border_dark: '#171717' + interaction_text: '#fbfbfb' + interaction_background: '#088183' + interaction_hover_text: '#fbfbfb' + interaction_hover_background: '#044d4e' + interaction_focus: '#8b5cd7' + highlight: '#1da593' + information: '#007cbf' + warning: '#f5ae5c' + error: '#ed6b5e' + success: '#1ea593' dark: heading: '#f3fcfb' body: '#dbf7f3' @@ -94,24 +113,3 @@ colors: warning: '#e38444' error: '#e85653' success: '#12b0ae' - light: - background: '#eeeeee' - border: '#5f5f5f' - highlight: '#1da593' - heading: '#033334' - body: '#334747' - background_light: '#fdfdfd' - background_dark: '#bebebe' - border_light: '#b2b2b2' - border_dark: '#171717' - interaction_text: '#fbfbfb' - interaction_background: '#088183' - interaction_hover_text: '#fbfbfb' - interaction_hover_background: '#044d4e' - interaction_focus: '#8b5cd7' - information: '#007cbf' - warning: '#f5ae5c' - error: '#ed6b5e' - success: '#1ea593' -migration: - expose_metadata: false diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml index 6e4a26e61..35bf915d0 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/286ff750-a9a9-423a-8a4e-515f79fc0a8f.yml @@ -19,6 +19,6 @@ default: value: true field_c_b_link: - - uri: 'internal:/' + uri: 'internal:/search' title: Search options: { } diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml index d2aceef4c..abbb26026 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/block_content/50c52459-c100-4e4d-92a4-9c4c77d8f8d0.yml @@ -22,12 +22,12 @@ default: field_c_b_background_image: - entity: f8695f84-8fbb-4e7e-97b9-423efe719cda + field_c_b_banner_blend_mode: + - + value: overlay field_c_b_banner_type: - value: default - field_c_b_blend_mode: - - - value: overlay field_c_b_theme: - value: dark diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/file/67aedda3-72d9-4745-8304-ab8b22825858.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/file/87f76de3-68e6-4e5e-b739-9dd448d1ba62.yml similarity index 83% rename from docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/file/67aedda3-72d9-4745-8304-ab8b22825858.yml rename to docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/file/87f76de3-68e6-4e5e-b739-9dd448d1ba62.yml index e666ad54f..55e15aba5 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/file/67aedda3-72d9-4745-8304-ab8b22825858.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/file/87f76de3-68e6-4e5e-b739-9dd448d1ba62.yml @@ -1,7 +1,7 @@ _meta: version: '1.0' entity_type: file - uuid: 67aedda3-72d9-4745-8304-ab8b22825858 + uuid: 87f76de3-68e6-4e5e-b739-9dd448d1ba62 default_langcode: en default: uid: @@ -24,4 +24,4 @@ default: value: true created: - - value: 1676437710 + value: 1690931720 diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/menu_link_content/95e9576e-bf57-4d42-8277-86d6fba07024.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/menu_link_content/95e9576e-bf57-4d42-8277-86d6fba07024.yml new file mode 100644 index 000000000..c495439d5 --- /dev/null +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/menu_link_content/95e9576e-bf57-4d42-8277-86d6fba07024.yml @@ -0,0 +1,36 @@ +_meta: + version: '1.0' + entity_type: menu_link_content + uuid: 95e9576e-bf57-4d42-8277-86d6fba07024 + bundle: menu_link_content + default_langcode: en +default: + enabled: + - + value: true + title: + - + value: civictheme.io + menu_name: + - + value: civictheme-secondary-navigation + link: + - + uri: 'https://www.civictheme.io/' + title: '' + options: { } + external: + - + value: false + rediscover: + - + value: false + weight: + - + value: 0 + expanded: + - + value: false + revision_translation_affected: + - + value: true diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/0900bcaa-2670-4ffa-b22e-f9fa667c45d0.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/0900bcaa-2670-4ffa-b22e-f9fa667c45d0.yml index b3c5ad625..0a38dc2a6 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/0900bcaa-2670-4ffa-b22e-f9fa667c45d0.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/0900bcaa-2670-4ffa-b22e-f9fa667c45d0.yml @@ -39,6 +39,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -48,9 +51,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/11575ae4-d804-4b68-a9e2-528dde78ca5e.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/11575ae4-d804-4b68-a9e2-528dde78ca5e.yml index 1d72f22aa..67925a7c6 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/11575ae4-d804-4b68-a9e2-528dde78ca5e.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/11575ae4-d804-4b68-a9e2-528dde78ca5e.yml @@ -34,6 +34,9 @@ default: alias: /about-this-template-website langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml index 638c2a415..58b509093 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2036a3bc-7988-4105-9c73-5eb14fb8e437.yml @@ -34,6 +34,9 @@ default: alias: /community-engagement langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -43,9 +46,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2e309b77-8d77-40e8-95bb-1c1475955e67.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2e309b77-8d77-40e8-95bb-1c1475955e67.yml index 8694fb603..7712426aa 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2e309b77-8d77-40e8-95bb-1c1475955e67.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/2e309b77-8d77-40e8-95bb-1c1475955e67.yml @@ -41,6 +41,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -50,9 +53,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/35b75cc7-cf94-462f-9ee6-6bb69e895d8a.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/35b75cc7-cf94-462f-9ee6-6bb69e895d8a.yml index 1d5ab10e1..c6ac1d6ac 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/35b75cc7-cf94-462f-9ee6-6bb69e895d8a.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/35b75cc7-cf94-462f-9ee6-6bb69e895d8a.yml @@ -36,6 +36,9 @@ default: alias: /courses/undergraduate-courses langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -80,9 +83,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/439d44bc-bb57-44ac-b1b6-1fbcb0f7668c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/439d44bc-bb57-44ac-b1b6-1fbcb0f7668c.yml index 20e5a3edc..a38c95266 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/439d44bc-bb57-44ac-b1b6-1fbcb0f7668c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/439d44bc-bb57-44ac-b1b6-1fbcb0f7668c.yml @@ -34,6 +34,9 @@ default: alias: /uni-life langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml index fdfe2b5ec..e3da38a38 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/45b59dbe-af6c-4b71-b12a-a79b39ee140c.yml @@ -57,6 +57,9 @@ default: alias: '' langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: overlay field_c_n_banner_components: - entity: @@ -309,9 +312,6 @@ default: field_c_n_banner_type: - value: large - field_c_n_blend_mode: - - - value: overlay field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/4cd88c26-8e03-415e-8d67-6d818b07a49b.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/4cd88c26-8e03-415e-8d67-6d818b07a49b.yml index 74e92ce0d..55448fcc7 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/4cd88c26-8e03-415e-8d67-6d818b07a49b.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/4cd88c26-8e03-415e-8d67-6d818b07a49b.yml @@ -41,6 +41,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -85,9 +88,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml index 0621e3957..cc11771ae 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/56b371ee-ceb6-473b-93d2-2c5ff5edaa76.yml @@ -39,6 +39,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -48,9 +51,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/570c4f75-363e-4cdc-980d-b0cc5172469e.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/570c4f75-363e-4cdc-980d-b0cc5172469e.yml index 46321bc30..51c6c78ab 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/570c4f75-363e-4cdc-980d-b0cc5172469e.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/570c4f75-363e-4cdc-980d-b0cc5172469e.yml @@ -61,6 +61,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -105,9 +108,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/5d9e4e6b-f957-42c3-8019-30b1ca190dd5.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/5d9e4e6b-f957-42c3-8019-30b1ca190dd5.yml index 803fbac9a..05589d10c 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/5d9e4e6b-f957-42c3-8019-30b1ca190dd5.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/5d9e4e6b-f957-42c3-8019-30b1ca190dd5.yml @@ -42,6 +42,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -51,9 +54,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml index 012b3b0ee..a36cd124e 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/6d9a4f8c-3dbf-4111-a642-ee7c088cdcc8.yml @@ -39,6 +39,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -83,9 +86,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/82bdc4d8-e299-490e-92f8-2a0362724be1.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/82bdc4d8-e299-490e-92f8-2a0362724be1.yml index ab318b318..981416fa6 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/82bdc4d8-e299-490e-92f8-2a0362724be1.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/82bdc4d8-e299-490e-92f8-2a0362724be1.yml @@ -41,6 +41,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_hide_breadcrumb: - value: false @@ -50,9 +53,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/866d2c87-0baa-4b54-839c-1e89d5ba6ab6.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/866d2c87-0baa-4b54-839c-1e89d5ba6ab6.yml index 47b0df7ec..59a6ac5da 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/866d2c87-0baa-4b54-839c-1e89d5ba6ab6.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/866d2c87-0baa-4b54-839c-1e89d5ba6ab6.yml @@ -45,6 +45,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -89,9 +92,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/8f45163f-252f-46e3-b3d3-7930b1d9b6c7.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/8f45163f-252f-46e3-b3d3-7930b1d9b6c7.yml index c5fd8d991..2a8d18283 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/8f45163f-252f-46e3-b3d3-7930b1d9b6c7.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/8f45163f-252f-46e3-b3d3-7930b1d9b6c7.yml @@ -41,6 +41,9 @@ default: alias: /research langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -85,9 +88,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/baeb7d42-1e11-4d7a-abde-dc02cd89d417.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/baeb7d42-1e11-4d7a-abde-dc02cd89d417.yml index 50113cf2e..146d39142 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/baeb7d42-1e11-4d7a-abde-dc02cd89d417.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/baeb7d42-1e11-4d7a-abde-dc02cd89d417.yml @@ -41,6 +41,9 @@ default: field_c_n_banner_background: - entity: b968b4c6-58b1-4a90-a436-54f93d0d7af1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -85,9 +88,6 @@ default: field_c_n_banner_type: - value: default - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/bbd57889-e07c-4c4f-a223-868f9a441035.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/bbd57889-e07c-4c4f-a223-868f9a441035.yml index 608fc8bf3..605772225 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/bbd57889-e07c-4c4f-a223-868f9a441035.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/bbd57889-e07c-4c4f-a223-868f9a441035.yml @@ -34,6 +34,9 @@ default: alias: /campuses langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c0dc5f2f-ce09-4c0f-8fae-db1689f622e1.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c0dc5f2f-ce09-4c0f-8fae-db1689f622e1.yml index 85e137bbd..4cadc80be 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c0dc5f2f-ce09-4c0f-8fae-db1689f622e1.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c0dc5f2f-ce09-4c0f-8fae-db1689f622e1.yml @@ -36,6 +36,9 @@ default: alias: /courses langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -80,9 +83,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml index ddaf15e0a..b05dc2ec2 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/c9a1fe64-f6d1-4492-ac7f-6444698cfb12.yml @@ -34,6 +34,9 @@ default: alias: /contact-us langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -78,9 +81,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml index 85c6c684a..8f2967433 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/db8e6781-f356-497d-9aba-ef0994b6268c.yml @@ -37,6 +37,9 @@ default: alias: /news-and-events langcode: en pathauto: 1 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -81,9 +84,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/ee025f20-7976-47b2-aa62-a00b84b149de.yml b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/ee025f20-7976-47b2-aa62-a00b84b149de.yml index 634791c72..4561a5d05 100644 --- a/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/ee025f20-7976-47b2-aa62-a00b84b149de.yml +++ b/docroot/modules/custom/civictheme_content/modules/civictheme_content_highereducation/content/node/ee025f20-7976-47b2-aa62-a00b84b149de.yml @@ -36,6 +36,9 @@ default: alias: /courses/postgraduate-courses langcode: en pathauto: 0 + field_c_n_banner_blend_mode: + - + value: normal field_c_n_banner_components: - entity: @@ -80,9 +83,6 @@ default: field_c_n_banner_type: - value: inherit - field_c_n_blend_mode: - - - value: normal field_c_n_components: - entity: diff --git a/docroot/modules/custom/civictheme_dev/civictheme_dev.info.yml b/docroot/modules/custom/civictheme_dev/civictheme_dev.info.yml index a4674acb8..77fa9b966 100644 --- a/docroot/modules/custom/civictheme_dev/civictheme_dev.info.yml +++ b/docroot/modules/custom/civictheme_dev/civictheme_dev.info.yml @@ -12,6 +12,7 @@ dependencies: - drupal:field_ui - drupal:views_ui - environment_indicator:environment_indicator + - inspect_config:config_inspector - shield:shield - simple_sitemap:simple_sitemap - simple_sitemap:simple_sitemap_views diff --git a/docroot/modules/custom/civictheme_dev/civictheme_dev.post_update.php b/docroot/modules/custom/civictheme_dev/civictheme_dev.post_update.php index faf4dbbe2..14e595088 100644 --- a/docroot/modules/custom/civictheme_dev/civictheme_dev.post_update.php +++ b/docroot/modules/custom/civictheme_dev/civictheme_dev.post_update.php @@ -87,7 +87,7 @@ function civictheme_dev_post_update_update_side_navigation_block() { $block->setVisibilityConfig('request_path', [ 'id' => 'request_path', 'negate' => TRUE, - 'pages' => "/news-and-events\n\r*civictheme-no-sidebar*", + 'pages' => "/search\n\r/news-and-events\n\r*civictheme-no-sidebar*", ]); $block->save(); } diff --git a/docroot/modules/custom/civictheme_dev/composer.json b/docroot/modules/custom/civictheme_dev/composer.json index aa8aa6a3a..d4e9fab00 100644 --- a/docroot/modules/custom/civictheme_dev/composer.json +++ b/docroot/modules/custom/civictheme_dev/composer.json @@ -13,6 +13,7 @@ "drupal/config_filter": "^2.4", "drupal/config_ignore": "^2", "drupal/environment_indicator": "^4.0", + "drupal/config_inspector": "^2", "drupal/shield": "^1.7", "drupal/testmode": "^2.1" } diff --git a/docroot/modules/custom/civictheme_dev/src/Plugin/ConfigFilter/CivicthemeDevIgnoreFilter.php b/docroot/modules/custom/civictheme_dev/src/Plugin/ConfigFilter/CivicthemeDevIgnoreFilter.php index ca9b1c677..d62388681 100644 --- a/docroot/modules/custom/civictheme_dev/src/Plugin/ConfigFilter/CivicthemeDevIgnoreFilter.php +++ b/docroot/modules/custom/civictheme_dev/src/Plugin/ConfigFilter/CivicthemeDevIgnoreFilter.php @@ -53,6 +53,46 @@ public function filterWrite($name, array $data) { } } + // Exclude hidden fields added by the optional modules. + if (fnmatch('core.entity_view_display.*', $name)) { + unset($data['hidden']['search_api_excerpt']); + } + + // Exclude processing for some properties of the blocks. + if (fnmatch('block.block.civictheme_*', $name)) { + // Unset dependencies. + unset($data['dependencies']['content']); + + if (!empty($data['dependencies']['module'])) { + foreach ($data['dependencies']['module'] as $key => $module_name) { + if (in_array($module_name, ['block_content'])) { + unset($data['dependencies']['module'][$key]); + } + } + if (empty($data['dependencies']['module'])) { + unset($data['dependencies']['module']); + } + } + } + + // Exclude processing for some properties of the views. + if (fnmatch('views.view.civictheme_*', $name) && !str_contains($name, 'example') && !str_contains($name, 'test')) { + if (!empty($data['display'])) { + foreach (array_keys($data['display']) as $display_name) { + if (!empty($data['display'][$display_name]['display_options']['display_extenders'])) { + foreach (array_keys($data['display'][$display_name]['display_options']['display_extenders']) as $extender_name) { + if (str_starts_with($extender_name, 'simple_sitemap')) { + unset($data['display'][$display_name]['display_options']['display_extenders'][$extender_name]); + } + } + if (empty($data['display'][$display_name]['display_options']['display_extenders'])) { + unset($data['display'][$display_name]['display_options']['display_extenders']); + } + } + } + } + } + return $data; } diff --git a/docroot/modules/custom/civictheme_govcms/composer.json b/docroot/modules/custom/civictheme_govcms/composer.json index b2c0a360c..9d96ca23b 100644 --- a/docroot/modules/custom/civictheme_govcms/composer.json +++ b/docroot/modules/custom/civictheme_govcms/composer.json @@ -9,7 +9,7 @@ }, "require": { "php": ">=8", - "govcms/govcms": "^2" + "govcms/govcms": "^2.28" }, "extra": { "drush": { diff --git a/docroot/modules/custom/civictheme_migrate/MAPPINGS.md b/docroot/modules/custom/civictheme_migrate/MAPPINGS.md deleted file mode 100644 index ea0fd3b04..000000000 --- a/docroot/modules/custom/civictheme_migrate/MAPPINGS.md +++ /dev/null @@ -1,29 +0,0 @@ -This document is used as a starting point to define a "contract" between field names provided in MerlinUI when defining extractors so that consumer migration modules could define such field as "source" fields. - -Status: - -- `draft` - field mapping is proposed for a review -- `in review` - field mapping is in review by all parties -- `approved` - field mapping is approved and ready to be used - -| Merlin UI | Description | Merlin type | Other settings | Status | CivicTheme | -|--------------------------|-----------------------------------------|-------------|----------------|----------|-------------------------------------| -| `id` | Page ID (Migration ID) | `uuid` | Required | draft | `id` | -| `title` | Page title | `text` | Required | approved | `title` | -| `alias` | Page URL alias | `alias` | Required | draft | `alias` | -| `summary` | Page Summary | `text` | | draft | `field_n_summary` | -| `topics` | Topics (comma separated list of topics) | `text` | | draft | `field_c_n_topics` | -| `thumbnail` | Thumbnail | `Media` | | draft | `field_c_n_thumbnail` | -| `vertical_spacing` | Vertical spacing | `text` | | draft | `field_c_n_vertical_spacing` | -| `hide_sidebar` | Hide sidebar | `boolean` | | draft | `field_c_n_hide_sidebar` | -| `show_last_updated_date` | Show last updated date | | | draft | `field_c_n_show_last_updated` | -| `last_updated_date` | Last updated date | | | draft | `field_c_n_custom_last_updated` | -| `show_toc` | Show table of contents | | | draft | `field_c_n_show_toc` | -| `banner` | Container for banner items | `container` | Required | draft | | -| `banner.theme` | Banner theme | | | draft | `field_c_n_banner_theme` | -| `banner.title` | Banner title | `text` | Required | draft | `field_c_n_banner_title` | -| `banner.banner_type` | Banner type | `text` | | draft | `field_c_n_banner_type` | -| `banner.blend_mode` | Banner blend mode | | | draft | `field_c_n_blend_mode` | -| `banner.featured_image` | Banner featured image | `Media` | | draft | `field_c_n_banner_featured_image` | -| `banner.background` | Banner background image | `Media` | | draft | `field_c_n_banner_background_image` | -| `banner.hide_breadcrumb` | Hide breadcrumb | `boolean` | | draft | `field_c_n_hide_breadcrumb` | diff --git a/docroot/modules/custom/civictheme_migrate/README.md b/docroot/modules/custom/civictheme_migrate/README.md deleted file mode 100644 index 7350cb9ae..000000000 --- a/docroot/modules/custom/civictheme_migrate/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# CivicTheme Migrate - -Migration source files are imported via configuration form at -`/admin/configuration/civictheme-migrate`. - -You can choose to manually upload the extracted content JSON files or retrieve -the extracted content JSON files from the remote API endpoint. - -After configuring a migration you can then begin the migration and setup your -CivicTheme site. - -## Extracted Content Validation - -Extracted Content JSON files are validated using [JSON Schema](https://json-schema.org). -The schema used in validating the imported JSON files are located at -`schema/civictheme_migrate.extracted_content.schema.json`. - -For an understanding of the structure of JSON Schema files [see JSON schema documentation](https://opis.io/json-schema/2.x/). - -Validation is carried out using [opis/json-schema](https://github.com/opis/json-schema). - -## Example valid JSON file - -```json - -[ - { - "id": "4593761e-8a5d-4564-8c0e-2126fb4f3338", - "title": "[TEST] Migrated Content 1", - "alias": "/test/migrated-content-1", - "summary": "Summary for [TEST] Migrated Content 1", - "topics": "[TEST] Topic 1,[TEST] Topic 2,[TEST] Topic 3,[TEST] Topic 4", - "thumbnail": [ - { - "uuid": "f352fb5f-5319-4a09-a039-6b7080b31443", - "name": "D10 launch.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt": "Test alt text for thumbnail" - } - ], - "vertical_spacing": "top", - "hide_sidebar": true, - "show_last_updated_date": true, - "last_updated_date": "8 Oct 2022", - "show_toc": true, - "banner": { - "type": "container", - "children" : [ - { - "theme": "dark", - "title": "[TEST] Banner title - Migrated Content 1", - "banner_type": "large", - "blend_mode": "darken", - "featured_image": [ - { - "uuid": "f352fb5f-5319-4a09-a039-6b7080b31443", - "name": "D10 launch.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt": "Test alt text for thumbnail" - } - ], - "background": [ - { - "uuid": "427186ad-c561-4441-9951-28399d8a4923", - "name": "demo_banner-background.png", - "file": "https://www.civictheme.io/sites/default/files/demo_banner-background.png", - "alt": "" - } - ], - "hide_breadcrumb": true - } - ] - } - }, - { - "id": "9ba51c5e-319c-47dd-8209-2029ed7525f1", - "title": "[TEST] Migrated Content 2", - "alias": "/test/migrated-content-2", - "summary": "Summary for [TEST] Migrated Content 2", - "topics": "[TEST] Topic 1,[TEST] Topic 2", - "thumbnail": [ - { - "uuid": "f352fb5f-5319-4a09-a039-6b7080b31443", - "name": "D10 launch.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt": "Test alt text for thumbnail" - } - ], - "vertical_spacing": "top", - "hide_sidebar": true, - "show_last_updated_date": false, - "last_updated_date": "1 Oct 2022", - "show_toc": true, - "banner": { - "type": "container", - "children" : [ - { - "theme": "dark", - "title": "[TEST] Banner title - Migrated Content 2", - "banner_type": "default", - "blend_mode": "darken", - "featured_image": [ - { - "uuid": "f352fb5f-5319-4a09-a039-6b7080b31443", - "name": "D10 launch.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt": "Test alt text for thumbnail" - } - ], - "background": [ - { - "uuid": "427186ad-c561-4441-9951-28399d8a4923", - "name": "demo_banner-background.png", - "file": "https://www.civictheme.io/sites/default/files/demo_banner-background.png", - "alt": "" - } - ], - "hide_breadcrumb": true - } - ] - } - } -] - - -``` diff --git a/docroot/modules/custom/civictheme_migrate/assets/migrations/content/migrate_plus.migration.civictheme_page.yml b/docroot/modules/custom/civictheme_migrate/assets/migrations/content/migrate_plus.migration.civictheme_page.yml deleted file mode 100644 index dec1776bd..000000000 --- a/docroot/modules/custom/civictheme_migrate/assets/migrations/content/migrate_plus.migration.civictheme_page.yml +++ /dev/null @@ -1,172 +0,0 @@ -langcode: en -status: true -dependencies: - enforced: - module: - - civictheme_migrate -id: civictheme_page -class: null -field_plugin_method: null -cck_plugin_method: null -migration_tags: - - civictheme_migrate -migration_group: civictheme_migrate -label: 'CivicTheme Page' -source: - plugin: url - data_fetcher_plugin: file - data_parser_plugin: json - # URLs are the uploaded or remote files fetched during migration generation. - # This contains the stream wrappers of the locally hosted files. - # urls: - fields: - - name: id - label: 'ID' - selector: id - - name: title - label: 'Title' - selector: title - - name: alias - label: 'Path alias' - selector: alias - - name: summary - label: 'Summary' - selector: summary - - name: topics - label: 'Topic tags' - selector: topics - - name: vertical_spacing - label: 'Vertical Spacing' - selector: vertical_spacing - - name: thumbnail_id - label: 'Thumbnail id' - selector: thumbnail/0 - - name: featured_image_id - label: 'Featured image id' - selector: banner/children/0/featured_image/0 - - name: banner_background_id - label: 'Banner background image id' - selector: banner/children/0/background/0 - - name: hide_sidebar - label: 'Hide sidebar' - selector: hide_sidebar - - name: show_toc - label: 'Show table of contents' - selector: show_toc - - name: hide_breadcrumb - label: 'Hide breadcrumb in banner' - selector: 'banner/children/0/hide_breadcrumb' - - name: show_last_updated_date - label: 'Show last updated date' - selector: show_last_updated_date - - name: last_updated_date - label: 'Custom updated date' - selector: last_updated_date - - name: banner_title - label: 'Banner title' - selector: banner/children/0/title - - name: banner_type - label: 'Banner type' - selector: banner/children/0/banner_type - - name: banner_blend_mode - label: 'Vertical Spacing' - selector: banner/children/0/blend_mode - - name: banner_theme - label: 'Banner theme' - selector: banner/children/0/theme - ids: - id: - type: string -process: - title: - - plugin: skip_on_empty - source: title - method: row - message: 'Title is empty' - - plugin: substr - length: 255 - field_c_n_summary: summary - field_c_n_topics: - - plugin: explode - delimiter: ',' - source: topics - - plugin: entity_generate - value_key: name - ignore_case: true - operator: STARTS_WITH - entity_type: taxonomy_term - bundle_key: vid - bundle: 'civictheme_topics' - field_c_n_vertical_space: - - plugin: get - source: vertical_spacing - - plugin: default_value - default_value: '' - field_c_n_hide_sidebar: - - plugin: get - source: hide_sidebar - - plugin: default_value - default_value: 0 - field_c_n_thumbnail: - plugin: migration_lookup - migration: civictheme_media_image - source: thumbnail_id - field_c_n_show_last_updated: - - plugin: get - source: show_last_updated_date - - plugin: default_value - default_value: 0 - field_c_n_banner_theme: - - plugin: get - source: banner_theme - - plugin: default_value - default_value: 'dark' - field_c_n_banner_title: banner_title - field_c_n_banner_type: - - plugin: get - source: banner_type - - plugin: default_value - default_value: 'default' - field_c_n_blend_mode: - - plugin: get - source: banner_blend_mode - - plugin: default_value - default_value: 'color' - field_c_n_custom_last_updated: - - plugin: format_date - source: last_updated_date - from_format: 'j M Y' - to_format: 'Y-m-d' - settings: - validate_format: false - - plugin: skip_on_empty - method: process - field_c_n_show_toc: - - plugin: get - source: show_toc - - plugin: default_value - default_value: 0 - field_c_n_banner_hide_breadcrumb: - - plugin: get - source: hide_breadcrumb - - plugin: default_value - default_value: 0 - field_c_n_banner_featured_image: - plugin: migration_lookup - migration: civictheme_media_image - source: featured_image_id - field_c_n_banner_background: - plugin: migration_lookup - migration: civictheme_media_image - source: banner_background_id - 'path/pathauto': - plugin: default_value - default_value: 0 - 'path/alias': alias - -destination: - plugin: 'entity:node' - default_bundle: civictheme_page -migration_dependencies: - required: - - civictheme_media_image diff --git a/docroot/modules/custom/civictheme_migrate/assets/migrations/media/migrate_plus.migration.civictheme_media_image.yml b/docroot/modules/custom/civictheme_migrate/assets/migrations/media/migrate_plus.migration.civictheme_media_image.yml deleted file mode 100644 index 3113010fc..000000000 --- a/docroot/modules/custom/civictheme_migrate/assets/migrations/media/migrate_plus.migration.civictheme_media_image.yml +++ /dev/null @@ -1,51 +0,0 @@ -langcode: en -status: true -dependencies: - enforced: - module: - - civictheme_migrate -id: civictheme_media_image -class: null -field_plugin_method: null -cck_plugin_method: null -migration_tags: - - civictheme_migrate - - civictheme_media_migration -migration_group: civictheme_migrate -label: 'CivicTheme Media Image' -source: - plugin: url - data_fetcher_plugin: file - data_parser_plugin: json - ids: - uuid: - type: string - fields: - - name: url - label: 'File URL' - selector: file - - name: name - label: 'Entity Name' - selector: name - - name: uuid - label: 'Entity ID' - selector: uuid - - name: alt - label: 'Alternative text' - selector: alt -process: - name: name - field_c_m_image/target_id: - - plugin: skip_on_empty - method: row - source: url - - plugin: file_copy_disposition - skip_on_missing_source: true - skip_on_error: true - file_exist: 'use existing' - id_only: true - field_c_m_image/alt: alt -destination: - plugin: 'entity:media' - default_bundle: civictheme_image -migration_dependencies: {} diff --git a/docroot/modules/custom/civictheme_migrate/assets/schema/civictheme_media.json b/docroot/modules/custom/civictheme_migrate/assets/schema/civictheme_media.json deleted file mode 100644 index ee642b792..000000000 --- a/docroot/modules/custom/civictheme_migrate/assets/schema/civictheme_media.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Media image entity name (default to filename)" - }, - "file": { - "type": "string", - "description": "Banner featured image url" - }, - "uuid": { - "type": "string", - "description": "UUID for image" - }, - "alt": { - "type": "string", - "description": "Alt tag" - } - }, - "required": [ - "name", - "file", - "uuid", - "alt" - ] - } -} diff --git a/docroot/modules/custom/civictheme_migrate/assets/schema/civictheme_page.json b/docroot/modules/custom/civictheme_migrate/assets/schema/civictheme_page.json deleted file mode 100644 index 38e170945..000000000 --- a/docroot/modules/custom/civictheme_migrate/assets/schema/civictheme_page.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique ID for the node" - }, - "title": { - "type": "string", - "description": "Page title" - }, - "alias": { - "type": "string", - "description": "Page url alias, validation ensures backslash at start of url alias", - "pattern": "^\\/[\\S]+$" - }, - "summary": { - "type": "string", - "description": "Page summary" - }, - "topics": { - "type": "string", - "description": "Comma delimited page topics" - }, - "thumbnail": { - "type": "array", - "items": { - "type": "string", - "description": "Media uuid" - } - }, - "vertical_spacing": { - "type": "string", - "pattern": "top|bottom|both", - "description": "Page level vertical spacing" - }, - "show_toc": { - "type": "boolean", - "description": "Whether to hide table of contents" - }, - "hide_sidebar": { - "type": "boolean", - "description": "Whether to hide sidebar" - }, - "show_last_updated_date": { - "type": "boolean", - "description": "Determines if last updated date is visible or not" - }, - "last_updated_date": { - "type": "string", - "description": "Last updated date in `D MMM YYYY`format" - }, - "banner": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Hardcoded Merlin UI Output", - "pattern": "container" - }, - "children": { - "type": "array", - "contains": { - "type": "object", - "properties": { - "theme": { - "type": "string", - "description": "Banner theme", - "pattern": "light|dark" - }, - "title": { - "type": "string", - "description": "Banner title" - }, - "banner_type": { - "type": "string", - "description": "Type of banner", - "pattern": "default|large" - }, - "blend_mode": { - "type": "string", - "description": "Banner blend mode", - "pattern": "color|color-burn|darken|difference|exclusion|hard-light|hue|lighten|luminosity|multiply|normal|overlay|saturation|screen|soft-light" - }, - "featured_image": { - "type": "array", - "items": { - "type": "string", - "description": "Media uuid" - } - }, - "background": { - "type": "array", - "items": { - "type": "string", - "description": "Media uuid" - } - }, - "hide_breadcrumb": { - "type": "boolean", - "description": "Whether to hide breadcrumb in banner" - } - } - } - } - } - } - }, - "required": [ - "id", - "title", - "alias", - "show_toc", - "hide_sidebar", - "show_last_updated_date" - ] - } -} diff --git a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.info.yml b/docroot/modules/custom/civictheme_migrate/civictheme_migrate.info.yml deleted file mode 100644 index f519fcba1..000000000 --- a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.info.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: 'CivicTheme Migrate' -type: module -description: 'Create and configure local and remote migrations into CivicTheme.' -configure: civictheme_migrate.settings -core_version_requirement: ^9 || ^10 -package: CivicTheme -dependencies: - - drupal:migrate - - migrate_file:migrate_file - - migrate_plus:migrate_plus - - migrate_tools:migrate_tools diff --git a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.links.menu.yml b/docroot/modules/custom/civictheme_migrate/civictheme_migrate.links.menu.yml deleted file mode 100644 index b191757b5..000000000 --- a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.links.menu.yml +++ /dev/null @@ -1,6 +0,0 @@ -civictheme_migrate.admin: - title: 'CivicTheme Migrate' - description: 'Create and configure local and remote migrations into CivicTheme' - parent: system.admin_config_development - route_name: civictheme_migrate.settings - weight: 100 diff --git a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.module b/docroot/modules/custom/civictheme_migrate/civictheme_migrate.module deleted file mode 100644 index 99a36051e..000000000 --- a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.module +++ /dev/null @@ -1,31 +0,0 @@ -getFileUri())); - - /** @var \Drupal\civictheme_migrate\CivicthemeMigrateValidator $schema_validator */ - $schema_validator = \Drupal::service('civictheme_migrate.validator'); - - return $schema_validator->validate($json, $schema_id); -} diff --git a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.routing.yml b/docroot/modules/custom/civictheme_migrate/civictheme_migrate.routing.yml deleted file mode 100644 index 7d2d55d44..000000000 --- a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.routing.yml +++ /dev/null @@ -1,9 +0,0 @@ -civictheme_migrate.settings: - path: 'admin/config/civictheme-migrate' - defaults: - _form: '\Drupal\civictheme_migrate\Form\CivicthemeMigrateConfigurationForm' - _title: 'CivicTheme Migrate Settings' - requirements: - _permission: 'administer migrations' - options: - _admin_route: TRUE diff --git a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.services.yml b/docroot/modules/custom/civictheme_migrate/civictheme_migrate.services.yml deleted file mode 100644 index c58897fdb..000000000 --- a/docroot/modules/custom/civictheme_migrate/civictheme_migrate.services.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - civictheme_migrate.migrate_manager: - class: \Drupal\civictheme_migrate\CivicthemeMigrateManager - arguments: - - '@config.factory' - - '@http_client' - - '@file_system' - - '@serialization.yaml' - - '@extension.path.resolver' - - '@messenger' - - '@entity_type.manager' - civictheme_migrate.validator: - class: \Drupal\civictheme_migrate\CivicthemeMigrateValidator - arguments: - - '@civictheme_migrate.json_schema_validator' - - '@extension.path.resolver' - civictheme_migrate.json_schema_validator: - class: '\Opis\JsonSchema\Validator' - public: false diff --git a/docroot/modules/custom/civictheme_migrate/composer.json b/docroot/modules/custom/civictheme_migrate/composer.json deleted file mode 100644 index 12fa92b1e..000000000 --- a/docroot/modules/custom/civictheme_migrate/composer.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "salsadigitalauorg/civictheme_migrate", - "version": "0.1", - "description": "Migrations for CivicTheme Drupal theme.", - "type": "drupal-module", - "license": "proprietary", - "require": { - "php": ">=8.0", - "cweagans/composer-patches": "^1.7", - "opis/json-schema": "^2.3", - "drupal/migrate_plus": "^6.0", - "drupal/migrate_tools": "^6.0", - "drupal/migrate_file": "^2.1.1" - }, - "config": { - "platform": { - "php": "8.1" - }, - "process-timeout": 0, - "sort-packages": true, - "allow-plugins": { - "cweagans/composer-patches": true - } - }, - "extra": { - "enable-patching": true - }, - "repositories": { - "drupal/migrate_file": { - "type": "package", - "package": { - "name": "drupal/migrate_file", - "type": "drupal-module", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/issue/migrate_file-3288621.git", - "reference": "9b971e83cc54acc84166bee794a82b577a161804" - } - } - } - } -} diff --git a/docroot/modules/custom/civictheme_migrate/config/install/civictheme_migrate.settings.yml b/docroot/modules/custom/civictheme_migrate/config/install/civictheme_migrate.settings.yml deleted file mode 100644 index e53997d70..000000000 --- a/docroot/modules/custom/civictheme_migrate/config/install/civictheme_migrate.settings.yml +++ /dev/null @@ -1,4 +0,0 @@ -migration_type: "local" -remote: - auth_type: 'none' - diff --git a/docroot/modules/custom/civictheme_migrate/config/install/migrate_plus.migration_group.civictheme_migrate.yml b/docroot/modules/custom/civictheme_migrate/config/install/migrate_plus.migration_group.civictheme_migrate.yml deleted file mode 100644 index 84b9a0211..000000000 --- a/docroot/modules/custom/civictheme_migrate/config/install/migrate_plus.migration_group.civictheme_migrate.yml +++ /dev/null @@ -1,9 +0,0 @@ -langcode: en -status: true -dependencies: {} -id: civictheme_migrate -label: 'CivicTheme Migrate' -description: 'CivicTheme migration' -source_type: 'Local or remote exported content files as JSON' -module: null -shared_configuration: null diff --git a/docroot/modules/custom/civictheme_migrate/config/schema/civictheme_migration.schema.yml b/docroot/modules/custom/civictheme_migrate/config/schema/civictheme_migration.schema.yml deleted file mode 100644 index b1b583efd..000000000 --- a/docroot/modules/custom/civictheme_migrate/config/schema/civictheme_migration.schema.yml +++ /dev/null @@ -1,53 +0,0 @@ -# Schema for the configuration files of CivicTheme Migrate. - -civictheme_migrate.settings: - type: config_object - label: 'CivicTheme Migrate settings' - mapping: - migration_type: - label: 'Migration type' - type: string - nullable: true - remote: - label: 'Remote migration settings' - type: mapping - mapping: - auth_type: - label: 'Remote files authentication type' - type: string - nullable: true - auth_username: - label: 'Username' - type: string - nullable: true - auth_password: - label: 'Password' - type: string - nullable: true - auth_token: - label: 'API token' - type: string - nullable: true - content_endpoint: - label: 'Remote Page JSON Endpoints' - type: string - nullable: true - media_endpoint: - label: 'Remote Media JSON Endpoints' - type: string - nullable: true - content_configuration_files: - label: 'List of page content JSON files' - type: 'sequence' - nullable: true - sequence: - label: 'Migration file ids' - type: 'string' - media_configuration_files: - label: 'List of media content JSON files' - type: 'sequence' - nullable: true - sequence: - label: 'Migration file ids' - type: 'string' - diff --git a/docroot/modules/custom/civictheme_migrate/src/CivicthemeMigrateManager.php b/docroot/modules/custom/civictheme_migrate/src/CivicthemeMigrateManager.php deleted file mode 100644 index d60381096..000000000 --- a/docroot/modules/custom/civictheme_migrate/src/CivicthemeMigrateManager.php +++ /dev/null @@ -1,272 +0,0 @@ -config = $config_factory->getEditable('civictheme_migrate.settings'); - $this->httpClient = $client; - $this->fileSystem = $file_system; - $this->fileStorage = $entity_type_manager->getStorage('file'); - $this->yaml = $yaml_serializer; - $this->extensionPathResolver = $extension_path_resolver; - $this->migrationStorage = $entity_type_manager->getStorage('migration'); - $this->setMessenger($messenger); - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container) { - return new static( - $container->get('config.factory'), - $container->get('http_client'), - $container->get('file_system'), - $container->get('serialization.yaml'), - $container->get('extension.path.resolver'), - $container->get('messenger'), - $container->get('entity_type.manager'), - ); - } - - /** - * Generates CivicTheme migrations. - * - * @param array $migration_files - * List of source migration file ids grouped by migration type. - * - * @throws \Drupal\Core\Entity\EntityStorageException - */ - public function generateMigrations(array $migration_files) { - foreach ($migration_files as $migration_type => $file_ids) { - $this->generateMigration($file_ids, $migration_type); - } - } - - /** - * Generates or updates an existing migration for CivicTheme. - * - * @param array $file_ids - * List of source migration file ids to add to migration. - * @param string $migration_type - * The type of migration, determines what urls are added. - * - * @throws \Drupal\Core\Entity\EntityStorageException - */ - protected function generateMigration(array $file_ids, string $migration_type) { - $files = $this->fileStorage->loadMultiple($file_ids); - if (empty($files)) { - $this->messenger()->addStatus($this->t('Require files to generate a migration')); - } - $file_stream_wrappers = []; - foreach ($files as $file) { - $file_stream_wrappers[] = $file->getFileUri(); - } - $migration_directory = $this->extensionPathResolver->getPath('module', 'civictheme_migrate') . '/assets/migrations/' . $migration_type; - $migration_config_files = glob($migration_directory . '/*.yml'); - foreach ($migration_config_files as $migration_config_file) { - $migration_config = file_get_contents($migration_config_file); - $migration_config = $this->yaml->decode($migration_config); - // @todo add module hook to change migration properties. - $migration_config['source']['urls'] = $file_stream_wrappers; - $migration_id = $migration_config['id']; - $existing_migration = $this->migrationStorage->load($migration_id); - if ($existing_migration === NULL) { - $migration = $this->migrationStorage->create($migration_config); - $migration->save(); - $this->messenger()->addStatus($this->t('Migration: :migration_id has been generated.', [':migration_id' => $migration_id])); - } - else { - // Adding all keys in case we update the asset migration template. - $existing_migration->set('process', $migration_config['process']); - $existing_migration->set('source', $migration_config['source']); - $existing_migration->set('destination', $migration_config['destination']); - $existing_migration->save(); - $this->messenger()->addStatus($this->t('Migration: :migration_id has been updated.', [':migration_id' => $migration_id])); - } - } - - } - - /** - * Retrieve a remote migration JSON configuration file and store locally. - * - * @param array $urls - * Array of remote migration files. - * @param array $validators - * File upload validators. - * - * @return array - * Array of file ids. - * - * @throws \Exception - */ - public function retrieveRemoteFiles(array $urls, array $validators): array { - $files = []; - $auth_headers = $this->getAuthHeaders(); - foreach ($urls as $url) { - $file = $this->httpClient->get($url, $auth_headers); - $json = $file->getBody(); - $filename = $this->generateFileName($url); - $directory = 'private://civictheme_migrate'; - if ($this->fileSystem->prepareDirectory($directory, FileSystemInterface::CREATE_DIRECTORY)) { - $uri = "$directory/$filename"; - $path = $this->fileSystem->saveData($json, $uri); - $filename = basename($path); - $uri = "$directory/$filename"; - - /** @var \Drupal\file\FileInterface $file */ - $file = $this->fileStorage->create(['uri' => $uri]); - - // Carry out validation. - $errors = file_validate($file, $validators); - if (!empty($errors)) { - $error = array_pop($errors); - throw new Exception($error); - } - $file->setPermanent(); - $file->save(); - $files[] = (int) $file->get('fid')->getString(); - } - } - - return $files; - } - - /** - * Gets the authentication headers and other options for retrieving files. - * - * @return array - * Authentication header options. - */ - protected function getAuthHeaders(): array { - $auth_type = $this->config->get('auth_type'); - if (empty($auth_type)) { - return []; - } - switch ($auth_type) { - case 'basic': - return [ - 'auth' => [ - $this->config->get('auth_username'), - $this->config->get('auth_password'), - ], - ]; - - // @todo implement other authentication methods as required. - default: - return []; - } - } - - /** - * Generates a filename from a url JSON endpoint. - * - * @param string $url - * Endpoint url. - * - * @return string - * Generated file name. - */ - protected function generateFileName($url): string { - $url_parts = parse_url($url); - $filename = !empty($url_parts['path']) ? preg_replace('/\//', '-', basename($url_parts['path'])) : 'configuration-file' . time(); - if (strpos($filename, '-') === 0) { - $filename = substr($filename, 1); - } - if (strpos($filename, '.json') === FALSE && strpos($filename, '.txt') === FALSE) { - $filename .= '.json'; - } - - return $filename; - } - -} diff --git a/docroot/modules/custom/civictheme_migrate/src/CivicthemeMigrateValidator.php b/docroot/modules/custom/civictheme_migrate/src/CivicthemeMigrateValidator.php deleted file mode 100644 index fd607d3fb..000000000 --- a/docroot/modules/custom/civictheme_migrate/src/CivicthemeMigrateValidator.php +++ /dev/null @@ -1,102 +0,0 @@ -jsonValidator = $json_validator; - $this->extensionPathResolver = $extension_path_resolver; - $this->registerSchemas(); - } - - /** - * Helper to register schemas required for validating extracted content JSON. - * - * Create schema files in `assets/schema` directory, the filename without - * file extension is the identifier for the schema being registered. - */ - protected function registerSchemas() { - $schema_directory = $this->extensionPathResolver->getPath('module', 'civictheme_migrate') . '/assets/schema/'; - $files = glob($schema_directory . '*.json'); - foreach ($files as $file) { - $schema_id = basename($file, '.json'); - $this->jsonValidator->resolver()->registerFile($this->getSchemeUrl($schema_id), DRUPAL_ROOT . '/' . $file); - } - } - - /** - * Validate JSON data against specified schema and generate list of errors. - * - * If the array is empty then the JSON is valid against the schema. - * - * @param mixed $data - * Data to validate against. - * @param string $scheme_id - * Scheme id to validate data against. - * - * @return array - * Array of error messages from validation. - */ - public function validate($data, $scheme_id): array { - $errors = []; - if ($data === NULL) { - return ['JSON is malformed / invalid.']; - } - - $validation_result = $this->jsonValidator->validate($data, $this->getSchemeUrl($scheme_id)); - if ($validation_result->hasError()) { - $formatter = new ErrorFormatter(); - $formatted_errors = $formatter->formatFlat($validation_result->error()); - $errors = $formatted_errors; - } - - return $errors; - } - - /** - * Generates a URI compliant schema id. - * - * The package requires schema id to be in URI format. - * - * @param string $schema_id - * Human-readable scheme ID. - * - * @return string - * URI scheme id. - */ - protected function getSchemeUrl(string $schema_id): string { - return 'https://civictheme.io/api/migration/' . $schema_id; - } - -} diff --git a/docroot/modules/custom/civictheme_migrate/src/Form/CivicthemeMigrateConfigurationForm.php b/docroot/modules/custom/civictheme_migrate/src/Form/CivicthemeMigrateConfigurationForm.php deleted file mode 100644 index a8fbf060f..000000000 --- a/docroot/modules/custom/civictheme_migrate/src/Form/CivicthemeMigrateConfigurationForm.php +++ /dev/null @@ -1,409 +0,0 @@ -migrationManager = $migration_manager; - $this->messenger = $messenger; - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container) { - return new static( - $container->get('config.factory'), - $container->get('civictheme_migrate.migrate_manager'), - $container->get('messenger') - ); - } - - /** - * Gets label for retrieve files label. - * - * @return \Drupal\Core\StringTranslation\TranslatableMarkup - * Retrieve files button label. - */ - protected function getRetrieveFilesLabel() { - return $this->t('Retrieve files'); - } - - /** - * Gets label for generate configuration label. - * - * @return \Drupal\Core\StringTranslation\TranslatableMarkup - * Generation configuration button label. - */ - protected function getSaveConfigurationLabel() { - return $this->t('Save configuration'); - } - - /** - * Gets label for generate configuration label. - * - * @return \Drupal\Core\StringTranslation\TranslatableMarkup - * Generation configuration button label. - */ - protected function getGenerateMigrationLabel() { - return $this->t('Generate migration'); - } - - /** - * {@inheritdoc} - */ - public function getFormId() { - return 'civictheme_migrate_configuration_form'; - } - - /** - * {@inheritdoc} - */ - protected function getEditableConfigNames() { - return ['civictheme_migrate.settings']; - } - - /** - * {@inheritdoc} - */ - public function buildForm(array $form, FormStateInterface $form_state) { - $form['#theme'] = 'system_config_form'; - $config = $this->config("civictheme_migrate.settings"); - - $form['migration_type'] = [ - '#title' => $this->t('Content files location'), - '#description' => $this->t('Upload extracted content JSON files or connect to a remote URLS to retrieve'), - '#type' => 'radios', - '#required' => TRUE, - '#options' => [ - 'local' => $this->t('Local'), - 'remote' => $this->t('Remote'), - ], - '#default_value' => $config->get('migration_type'), - ]; - - $form['remote'] = [ - '#type' => 'fieldset', - '#title' => $this->t('Connect to remote API to retrieve extracted content JSON files'), - '#states' => [ - 'visible' => [ - ':input[name="migration_type"]' => ['value' => 'remote'], - ], - ], - ]; - - $form['remote']['auth_type'] = [ - '#type' => 'radios', - '#title' => $this->t('Remote files authentication type'), - '#options' => [ - '_none' => $this->t('None'), - 'basic' => $this->t('Basic authentication'), - ], - '#default_value' => ($config->get('remote')['auth_username'] ?? NULL) ? 'basic' : '_none', - ]; - - $form['remote']['auth_username'] = [ - '#type' => 'textfield', - '#title' => $this->t('Username'), - '#states' => [ - 'visible' => [ - ':input[name="auth_type"]' => [ - ['value' => 'password'], - 'or', - ['value' => 'basic'], - ], - ], - 'required' => [ - ':input[name="auth_type"]' => [ - ['value' => 'password'], - 'or', - ['value' => 'basic'], - ], - ], - ], - '#default_value' => $config->get('remote')['auth_username'] ?? NULL, - ]; - - $form['remote']['auth_password'] = [ - '#type' => 'password', - '#title' => $this->t('Password'), - '#description' => $this->t('Password is not shown after saving'), - '#states' => [ - 'visible' => [ - ':input[name="auth_type"]' => [ - ['value' => 'password'], - 'or', - ['value' => 'basic'], - ], - ], - 'required' => [ - ':input[name="auth_type"]' => [ - ['value' => 'password'], - 'or', - ['value' => 'basic'], - ], - ], - ], - '#default_value' => $config->get('remote')['auth_password'] ?? NULL, - ]; - - $form['remote']['content_endpoint'] = [ - '#type' => 'textarea', - '#title' => $this->t('Migration source Page content JSON URL endpoints'), - '#description' => $this->t('One URL each line'), - '#default_value' => $config->get('remote')['content_endpoint'] ?? NULL, - '#states' => [ - 'required' => [ - ':input[name="migration_type"]' => ['value' => 'remote'], - ], - ], - ]; - - $form['remote']['media_endpoint'] = [ - '#type' => 'textarea', - '#title' => $this->t('Migration source Media JSON URL endpoints'), - '#description' => $this->t('One URL each line'), - '#default_value' => $config->get('remote')['media_endpoint'] ?? NULL, - '#states' => [ - 'required' => [ - ':input[name="migration_type"]' => ['value' => 'remote'], - ], - ], - ]; - - $form['remote']['actions']['#type'] = 'actions'; - $form['remote']['actions']['retrieve_files'] = [ - '#type' => 'submit', - '#value' => $this->getRetrieveFilesLabel(), - '#button_type' => 'primary', - ]; - - $form['content_configuration_files'] = [ - '#type' => 'managed_file', - '#title' => $this->t('Upload extracted content JSON Files'), - '#default_value' => $config->get('content_configuration_files'), - '#multiple' => TRUE, - '#progress_indicator' => 'bar', - '#progress_message' => $this->t('Uploading files...'), - '#upload_location' => 'private://civictheme_migrate/page', - '#upload_validators' => [ - 'file_validate_extensions' => ['json txt'], - 'civictheme_migrate_validate_json' => ['civictheme_page'], - ], - ]; - - $form['media_configuration_files'] = [ - '#type' => 'managed_file', - '#title' => $this->t('Upload extracted media JSON Files'), - '#default_value' => $config->get('media_configuration_files'), - '#multiple' => TRUE, - '#progress_indicator' => 'bar', - '#progress_message' => $this->t('Uploading files...'), - '#upload_location' => 'private://civictheme_migrate/media_image', - '#upload_validators' => [ - 'file_validate_extensions' => ['json txt'], - 'civictheme_migrate_validate_json' => ['civictheme_media'], - ], - ]; - - $form['actions']['#type'] = 'actions'; - $form['actions']['submit'] = [ - '#type' => 'submit', - '#value' => $this->getSaveConfigurationLabel(), - '#button_type' => 'primary', - ]; - $form['actions']['generate_migration'] = [ - '#type' => 'submit', - '#value' => $this->getGenerateMigrationLabel(), - '#button_type' => 'primary', - ]; - - return $form; - } - - /** - * {@inheritdoc} - */ - public function validateForm(array &$form, FormStateInterface $form_state) { - if ($this->isGenerateMigrationSubmit($form_state)) { - $content_files = $form_state->getValue('content_configuration_files'); - if (empty($content_files)) { - $form_state->setError($form['content_configuration_files'], $this->t('Page content migration files are required to generate a migration')); - } - - $media_files = $form_state->getValue('content_configuration_files'); - if (empty($media_files)) { - $form_state->setError($form['media_configuration_files'], $this->t('Media migration files are required to generate a migration')); - } - } - } - - /** - * {@inheritdoc} - */ - public function submitForm(array &$form, FormStateInterface $form_state) { - if ($this->isRetrieveFilesSubmit($form_state)) { - $this->retrieveRemoteFilesSubmit($form, $form_state); - } - - $this->saveConfig($form, $form_state); - - if ($this->isGenerateMigrationSubmit($form_state)) { - $migration_types = [ - 'content' => $form_state->getValue('content_configuration_files'), - 'media' => $form_state->getValue('media_configuration_files'), - ]; - - $this->migrationManager->generateMigrations($migration_types); - - $form_state->setRedirect('entity.migration.list', [ - 'migration_group' => 'civictheme_migrate', - ]); - } - - } - - /** - * Helper to save migration file configuration. - * - * @param array $form - * Form object. - * @param \Drupal\Core\Form\FormStateInterface $form_state - * Form state. - */ - protected function saveConfig(array &$form, FormStateInterface $form_state) { - $config = $this->config('civictheme_migrate.settings'); - - // Saving migration configuration files whether uploaded locally or - // saved remotely. - if ($this->isSaveConfigurationSubmit($form_state) || $this->isGenerateMigrationSubmit($form_state)) { - $config->set('content_configuration_files', $form_state->getValue('content_configuration_files')); - $config->set('media_configuration_files', $form_state->getValue('media_configuration_files')); - } - $config->set('migration_type', $form_state->getValue('migration_type')); - $config->set('remote', [ - 'auth_type' => $form_state->getValue('auth_type'), - 'auth_username' => $form_state->getValue('auth_username'), - 'auth_password' => $form_state->getValue('auth_password'), - 'auth_token' => $form_state->getValue('auth_token'), - 'content_endpoint' => $form_state->getValue('content_endpoint'), - 'media_endpoint' => $form_state->getValue('media_endpoint'), - ]); - $config->save(); - $this->messenger()->addStatus($this->t('The configuration options have been saved.')); - } - - /** - * Handles submission to retrieve remote migration files. - * - * @param array $form - * Form array. - * @param \Drupal\Core\Form\FormStateInterface $form_state - * Formstate object. - */ - protected function retrieveRemoteFilesSubmit(array &$form, FormStateInterface $form_state) { - $file_types = [ - [ - 'endpoint' => 'media_endpoint', - 'config_key' => 'media_configuration_files', - ], - [ - 'endpoint' => 'content_endpoint', - 'config_key' => 'content_configuration_files', - ], - ]; - foreach ($file_types as $file_type) { - $urls = explode("\n", str_replace("\r\n", "\n", $form_state->getValue($file_type['endpoint']))); - $config = $this->config('civictheme_migrate.settings'); - try { - $files = $this->migrationManager->retrieveRemoteFiles($urls, $form[$file_type['config_key']]['#upload_validators']); - $existing_files = $config->get($file_type['config_key']) ?? []; - $config->set($file_type['config_key'], array_merge($existing_files, $files)); - $this->messenger()->addStatus($this->t('Migration content files have been retrieved')); - $config->save(); - } - catch (\Exception $exception) { - $this->messenger()->addError($exception->getMessage()); - } - } - - } - - /** - * Checks to see if the triggering element is the Retrieve files element. - * - * @param \Drupal\Core\Form\FormStateInterface $form_state - * Form state. - * - * @return bool - * Whether the triggering button is the Retrieve files button. - */ - protected function isRetrieveFilesSubmit(FormStateInterface $form_state): bool { - $button_label = $this->getRetrieveFilesLabel(); - $button_title = $form_state->getTriggeringElement()['#value'] ?? ''; - - return (string) $button_title === (string) $button_label; - } - - /** - * Checks to see if the triggering element is the Retrieve files element. - * - * @param \Drupal\Core\Form\FormStateInterface $form_state - * Form state. - * - * @return bool - * Whether the triggering button is the Retrieve files button. - */ - protected function isSaveConfigurationSubmit(FormStateInterface $form_state): bool { - $button_label = $this->getSaveConfigurationLabel(); - $button_title = $form_state->getTriggeringElement()['#value'] ?? ''; - - return (string) $button_title === (string) $button_label; - } - - /** - * Checks to see if the triggering element is the Generate Migration element. - * - * @param \Drupal\Core\Form\FormStateInterface $form_state - * Form state. - * - * @return bool - * Whether the triggering button is the Retrieve files button. - */ - protected function isGenerateMigrationSubmit(FormStateInterface $form_state): bool { - $button_label = $this->getGenerateMigrationLabel(); - $button_title = $form_state->getTriggeringElement()['#value'] ?? ''; - - return (string) $button_title === (string) $button_label; - } - -} diff --git a/docroot/modules/custom/civictheme_migrate/src/Plugin/migrate/process/FileCopyDisposition.php b/docroot/modules/custom/civictheme_migrate/src/Plugin/migrate/process/FileCopyDisposition.php deleted file mode 100644 index 41eb9bdb2..000000000 --- a/docroot/modules/custom/civictheme_migrate/src/Plugin/migrate/process/FileCopyDisposition.php +++ /dev/null @@ -1,90 +0,0 @@ - ['user_agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1']]; - if (!$data = file_get_contents($value, FILE_TEXT, stream_context_create($options))) { - $error = error_get_last(); - echo "HTTP request failed. Error was: " . $error['message'] . PHP_EOL; - throw new MigrateSkipRowException("Unable to download file {$value}: {$error['message']}"); - } - echo "Downloaded {$value} via file_get_contents, size is: " . mb_strlen($data) . PHP_EOL; - } - - $uuid = $row->getSourceProperty('uuid'); - - curl_close($curl); - - $filename = urldecode(basename($value)); - $filename = "{$uuid}_{$filename}"; - $filename = "temporary://{$filename}"; - - file_put_contents($filename, (string) $data); - $file_path = $this->fileSystem->realpath($filename); - - return parent::transform($file_path, $migrate_executable, $row, $destination_property); - } - -} diff --git a/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemeMediaMigrateValidatorTest.php b/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemeMediaMigrateValidatorTest.php deleted file mode 100644 index 779208842..000000000 --- a/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemeMediaMigrateValidatorTest.php +++ /dev/null @@ -1,122 +0,0 @@ -validator = new CivicthemeMigrateValidator(new Validator(), $this->container->get('extension.path.resolver')); - } - - /** - * Test page JSON fields. - * - * @dataProvider dataProviderMedia - */ - public function testMediaJsonSchema(mixed $data, $expected, $message = NULL): void { - $this->testJsonValidity($data, 'civictheme_media', $expected, $message); - } - - /** - * Data provider for testJsonPageFields(). - */ - public function dataProviderMedia() { - return [ - [$this->getTestDataStructure(), [], 'Data should be valid but is not.'], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->file); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (file) are missing', - ], - 'Media item requires file field', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->uuid); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (uuid) are missing', - ], - 'Media item requires uuid field', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->alt); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (alt) are missing', - ], - 'Media item requires alt field', - ], - ]; - } - - /** - * Helper to generate test data for tests. - */ - protected function getTestDataStructure($callback = NULL) { - $thumbnail = (object) [ - "uuid" => "f352fb5f-5319-4a09-a039-6b7080b31443", - "name" => "D10 launch.png", - "file" => "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt" => "Test alt text for thumbnail", - ]; - - $featured_image = (object) [ - "uuid" => "f352fb5f-5319-4a09-a039-6b7080b31443", - "name" => "D10 launch.png", - "file" => "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt" => "Test alt text for thumbnail", - ]; - - $background = (object) [ - "uuid" => "427186ad-c561-4441-9951-28399d8a4923", - "name" => "demo_banner-background.png", - "file" => "https://www.civictheme.io/sites/default/files/demo_banner-background.png", - "alt" => "", - ]; - - $data = [$thumbnail, $featured_image, $background]; - - return $callback === NULL ? $data : $callback($data); - } - -} diff --git a/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemeMigrateValidatorBase.php b/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemeMigrateValidatorBase.php deleted file mode 100644 index 39b056db7..000000000 --- a/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemeMigrateValidatorBase.php +++ /dev/null @@ -1,51 +0,0 @@ -validator = new CivicthemeMigrateValidator(new Validator(), $this->container->get('extension.path.resolver')); - } - - /** - * Helper to test validator. - */ - protected function testJsonValidity(mixed $data, $scheme_id, $expected, $message = NULL) { - $validation_result = $this->validator->validate($data, $scheme_id); - if ($message !== NULL) { - $this->assertEquals($expected, $validation_result, $message); - - return; - } - $this->assertEquals($expected, $validation_result); - } - -} diff --git a/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemePageMigrateValidatorTest.php b/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemePageMigrateValidatorTest.php deleted file mode 100644 index 1c1bfa295..000000000 --- a/docroot/modules/custom/civictheme_migrate/tests/src/Kernel/CivicthemePageMigrateValidatorTest.php +++ /dev/null @@ -1,210 +0,0 @@ -testJsonValidity($data, 'civictheme_page', $expected, $message); - } - - /** - * Data provider for testJsonPageFields(). - */ - public function dataProviderJsonPageFields() { - return [ - [ - $this->getTestDataStructure(function ($data) { - return [$data[0], $data[0], $data[0]]; - }), - [], - ], - [$this->getTestDataStructure(), []], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->id); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (id) are missing', - ], - 'ID should be a required field but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->title); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (title) are missing', - ], - 'Title should be a required field but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - return $data[0]; - }), - [ - 'The data (object) must match the type: array', - ], - 'Data structure should be an array of objects but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->alias); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (alias) are missing', - ], - 'Alias should be a required field but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->show_toc); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (show_toc) are missing', - ], - 'Show_toc should be a required field but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->hide_sidebar); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (hide_sidebar) are missing', - ], - 'Hide_sidebar should be a required field but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - unset($data[0]->show_last_updated_date); - - return $data; - }), - [ - 'All array items must match schema', - 'The required properties (show_last_updated_date) are missing', - ], - 'Show_last_updated_date should be a required field but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - $data[0]->alias = 'test/test123'; - - return $data; - }), - [ - 'All array items must match schema', - 'The properties must match schema: alias', - 'The string should match pattern: ^\/[\S]+$', - ], - 'Alias is required to start with a leading backslash but is not', - ], - [ - $this->getTestDataStructure(function ($data) { - $data[0]->vertical_spacing = 'not_valid'; - - return $data; - }), - [ - 'All array items must match schema', - 'The properties must match schema: vertical_spacing', - 'The string should match pattern: top|bottom|both', - ], - 'Vertical spacing should only allow top, bottom and both but does not.', - ], - [ - $this->getTestDataStructure(function ($data) { - $data[0]->banner->children[0]->blend_mode = 'invalid_value'; - - return $data; - }), - [ - 'All array items must match schema', - 'The properties must match schema: banner', - 'The properties must match schema: children', - 'At least one array item must match schema', - 'The properties must match schema: blend_mode', - 'The string should match pattern: color|color-burn|darken|difference|exclusion|hard-light|hue|lighten|luminosity|multiply|normal|overlay|saturation|screen|soft-light', - ], - 'Banner blend mode requires specific string values', - ], - ]; - } - - /** - * Helper to generate test data for tests. - */ - protected function getTestDataStructure($callback = NULL) { - $banner_children = (object) [ - "theme" => "dark", - "title" => "[TEST] Banner title - Migrated Content 1", - "banner_type" => "large", - "blend_mode" => "darken", - "featured_image" => [ - "f352fb5f-5319-4a09-a039-6b7080b31443", - ], - "background" => [ - "427186ad-c561-4441-9951-28399d8a4923", - ], - "hide_breadcrumb" => TRUE, - ]; - - $banner = (object) [ - "type" => "container", - "children" => [ - $banner_children, - ], - ]; - - $page = (object) [ - "id" => "4593761e-8a5d-4564-8c0e-2126fb4f3338", - "title" => "[TEST] Migrated Content 1", - "alias" => "/test/migrated-content-1", - "summary" => "Summary for [TEST] Migrated Content 1", - "topics" => "[TEST] Topic 1,[TEST] Topic 2,[TEST] Topic 3,[TEST] Topic 4", - "thumbnail" => [ - "f352fb5f-5319-4a09-a039-6b7080b31443", - ], - "vertical_spacing" => "top", - "hide_sidebar" => TRUE, - "show_last_updated_date" => TRUE, - "last_updated_date" => "8 Oct 2022", - "show_toc" => TRUE, - "banner" => $banner, - ]; - $data = [ - $page, - ]; - - return $callback === NULL ? $data : $callback($data); - } - -} diff --git a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page.inc b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page.inc index 8a36e5692..774e72067 100644 --- a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page.inc +++ b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page.inc @@ -155,8 +155,8 @@ function _cs_generated_content_create_node_civictheme_page__variation_to_fields( $node->field_c_n_banner_background = $variation['banner_background']; } - if (!empty($variation['blend_mode']) && $node->hasField('field_c_n_blend_mode')) { - $node->field_c_n_blend_mode = $variation['blend_mode']; + if (!empty($variation['blend_mode']) && $node->hasField('field_c_n_banner_blend_mode')) { + $node->field_c_n_banner_blend_mode = $variation['blend_mode']; } if (!empty($variation['banner_featured_image']) && $node->hasField('field_c_n_banner_featured_image')) { diff --git a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.automated_list.inc b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.automated_list.inc index 6450cf37e..69e0825b7 100644 --- a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.automated_list.inc +++ b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.automated_list.inc @@ -95,6 +95,46 @@ function _cs_generated_content_create_node_civictheme_page__variations__componen ], ], + // All. Snippet. + [ + 'title' => 'Page. Component. Automated list, All, View as Snippet, Unlimited, Title, Content, Above link, Below link, Both space, Background', + 'no_sidebar' => TRUE, + 'components' => [ + [ + 'type' => 'automated_list', + 'title' => 'Automated list title Light', + 'content' => $helper::staticSentenceFieldValue(), + 'list_type' => $helper::civicthemeAutomatedListType(), + 'list_link_above' => $helper::staticLinkFieldValue(), + 'list_link_below' => $helper::staticLinkFieldValue(), + 'list_limit_type' => $helper::civicthemeAutomatedListLimitTypeUnlimited(), + 'list_limit' => 0, + 'list_column_count' => 1, + 'list_item_view_as' => $helper::civicthemeSnippetType(), + 'list_item_theme' => $helper::civicthemeThemeLight(), + 'theme' => $helper::civicthemeThemeLight(), + 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), + 'background' => TRUE, + ], + [ + 'type' => 'automated_list', + 'title' => 'Automated list title Dark', + 'content' => $helper::staticSentenceFieldValue(), + 'list_type' => $helper::civicthemeAutomatedListType(), + 'list_link_above' => $helper::staticLinkFieldValue(), + 'list_link_below' => $helper::staticLinkFieldValue(), + 'list_limit_type' => $helper::civicthemeAutomatedListLimitTypeUnlimited(), + 'list_limit' => 0, + 'list_column_count' => 1, + 'list_item_view_as' => $helper::civicthemeSnippetType(), + 'list_item_theme' => $helper::civicthemeThemeDark(), + 'theme' => $helper::civicthemeThemeDark(), + 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), + 'background' => TRUE, + ], + ], + ], + // Page. Promo card. [ 'title' => 'Page. Component. Automated list, Light, Pages, View as Promo card, Light card, Unlimited, Title, Content, Above link, Below link, Both space, Background', @@ -119,7 +159,6 @@ function _cs_generated_content_create_node_civictheme_page__variations__componen ], ], ], - // Page. Navigation card. [ 'title' => 'Page. Component. Automated list, Light, Pages, View as Navigation card, Light card, Unlimited, Title, Content, Above link, Below link, Both space, Background', @@ -144,6 +183,30 @@ function _cs_generated_content_create_node_civictheme_page__variations__componen ], ], ], + // Page. Snippet. + [ + 'title' => 'Page. Component. Automated list, Light, Pages, View as Snippet, Light card, Unlimited, Title, Content, Above link, Below link, Both space, Background', + 'no_sidebar' => TRUE, + 'components' => [ + [ + 'type' => 'automated_list', + 'title' => 'Automated list title', + 'content' => $helper::staticSentenceFieldValue(), + 'list_type' => $helper::civicthemeAutomatedListType(), + 'list_link_above' => $helper::staticLinkFieldValue(), + 'list_link_below' => $helper::staticLinkFieldValue(), + 'list_content_type' => $helper::civicthemePageContentType(), + 'list_limit_type' => $helper::civicthemeAutomatedListLimitTypeUnlimited(), + 'list_limit' => 0, + 'list_column_count' => 1, + 'list_item_view_as' => $helper::civicthemeSnippetType(), + 'list_item_theme' => $helper::civicthemeThemeLight(), + 'theme' => $helper::civicthemeThemeLight(), + 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), + 'background' => TRUE, + ], + ], + ], // Event. Promo card. [ @@ -193,6 +256,30 @@ function _cs_generated_content_create_node_civictheme_page__variations__componen ], ], ], + // Event. Snippet. + [ + 'title' => 'Page. Component. Automated list, Light, Pages, View as Snippet, Light card, Unlimited, Title, Content, Above link, Below link, Both space, Background', + 'no_sidebar' => TRUE, + 'components' => [ + [ + 'type' => 'automated_list', + 'title' => 'Automated list title', + 'content' => $helper::staticSentenceFieldValue(), + 'list_type' => $helper::civicthemeAutomatedListType(), + 'list_link_above' => $helper::staticLinkFieldValue(), + 'list_link_below' => $helper::staticLinkFieldValue(), + 'list_content_type' => $helper::civicthemeEventContentType(), + 'list_limit_type' => $helper::civicthemeAutomatedListLimitTypeUnlimited(), + 'list_limit' => 0, + 'list_column_count' => 1, + 'list_item_view_as' => $helper::civicthemeSnippetType(), + 'list_item_theme' => $helper::civicthemeThemeLight(), + 'theme' => $helper::civicthemeThemeLight(), + 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), + 'background' => TRUE, + ], + ], + ], // Limit. [ diff --git a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.cards.inc b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.cards.inc index afce3b4ba..040720436 100644 --- a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.cards.inc +++ b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.cards.inc @@ -25,7 +25,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_navigation_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -42,7 +42,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_navigation_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -65,7 +65,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_navigation_card_ref', 'reference' => $helper::staticNode($helper::civicthemePageContentType())->id(), @@ -79,7 +79,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_navigation_card_ref', 'reference' => $helper::staticNode($helper::civicthemePageContentType())->id(), @@ -100,7 +100,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -136,7 +136,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -178,7 +178,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card_ref', 'reference' => $helper::staticNode($helper::civicthemePageContentType())->id(), @@ -192,7 +192,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'type' => 'manual_list', 'column_count' => 2, 'background' => TRUE, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card_ref', 'reference' => $helper::staticNode($helper::civicthemePageContentType())->id(), @@ -213,7 +213,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_event_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -275,7 +275,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_event_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -343,7 +343,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_event_card_ref', 'reference' => $helper::staticNode($helper::civicthemeEventContentType())->id(), @@ -357,7 +357,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'type' => 'manual_list', 'column_count' => 2, 'background' => TRUE, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_event_card_ref', 'reference' => $helper::staticNode($helper::civicthemeEventContentType())->id(), @@ -378,7 +378,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_publication_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -402,7 +402,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_publication_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -433,7 +433,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_service_card', 'title' => $helper::staticSentence(3), @@ -452,7 +452,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_service_card', 'title' => $helper::staticSentence(3), @@ -478,7 +478,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_subject_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -500,7 +500,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_subject_card', 'image' => $helper->staticMediaItem('civictheme_image'), @@ -528,7 +528,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_subject_card_ref', 'reference' => $helper::staticNode($helper::civicthemePageContentType())->id(), @@ -542,7 +542,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__cards() 'column_count' => 2, 'background' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_subject_card_ref', 'reference' => $helper::staticNode($helper::civicthemePageContentType())->id(), diff --git a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.manual_list.inc b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.manual_list.inc index b05afb86c..8a24952ef 100644 --- a/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.manual_list.inc +++ b/docroot/modules/custom/cs_generated_content/generated_content/node/civictheme_page_variations/component.manual_list.inc @@ -17,11 +17,11 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l $page = [ 'components' => [ [ - 'title' => 'Light, Full width, 1 column, 1 card', + 'title' => 'Promo card, Light, Full width, 1 column, 1 card', 'theme' => $helper::civicthemeThemeLight(), 'list_column_count' => 1, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -29,12 +29,12 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Light, Full width, 1 column, 1 card, fill width', + 'title' => 'Promo card, Light, Full width, 1 column, 1 card, fill width', 'theme' => $helper::civicthemeThemeLight(), 'list_column_count' => 1, 'list_fill_width' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -42,11 +42,11 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Light, Full width, 2 column, 3 cards', + 'title' => 'Promo card, Light, Full width, 2 column, 3 cards', 'theme' => $helper::civicthemeThemeLight(), 'list_column_count' => 2, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -62,12 +62,12 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Light, Full width, 2 column, 3 cards, fill width', + 'title' => 'Promo card, Light, Full width, 2 column, 3 cards, fill width', 'theme' => $helper::civicthemeThemeLight(), 'list_column_count' => 2, 'list_fill_width' => TRUE, 'type' => 'manual_list', - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -83,12 +83,12 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Light, Title, Content', + 'title' => 'Promo card, Light, Title, Content', 'theme' => $helper::civicthemeThemeLight(), 'content' => $helper::staticSentence(8), 'type' => 'manual_list', 'list_column_count' => 2, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -104,12 +104,12 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Dark, Title, Content', + 'title' => 'Promo card, Dark, Title, Content', 'theme' => $helper::civicthemeThemeDark(), 'content' => $helper::staticSentenceFieldValue(8), 'type' => 'manual_list', 'list_column_count' => 2, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -125,7 +125,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Light, BG, Title, Content, Before Link, After Link', + 'title' => 'Promo card, Light, BG, Title, Content, Before Link, After Link', 'theme' => $helper::civicthemeThemeLight(), 'content' => $helper::staticSentenceFieldValue(8), 'list_link_above' => $helper::staticLinkFieldValue(2), @@ -133,7 +133,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l 'background' => TRUE, 'type' => 'manual_list', 'list_column_count' => 2, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -149,7 +149,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Dark, BG, Title, Content, Before Link, After Link', + 'title' => 'Promo card, Dark, BG, Title, Content, Before Link, After Link', 'theme' => $helper::civicthemeThemeDark(), 'content' => $helper::staticSentenceFieldValue(8), 'list_link_above' => $helper::staticLinkFieldValue(2), @@ -157,7 +157,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l 'background' => TRUE, 'type' => 'manual_list', 'list_column_count' => 2, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -177,7 +177,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], [ - 'title' => 'Light, BG, Title, Content, Before Link, After Link, Vertical Spacing', + 'title' => 'Promo card, Light, BG, Title, Content, Before Link, After Link, Vertical Spacing', 'theme' => $helper::civicthemeThemeLight(), 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), 'content' => $helper::staticSentenceFieldValue(8), @@ -186,7 +186,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l 'background' => TRUE, 'type' => 'manual_list', 'list_column_count' => 2, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -202,7 +202,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], [ - 'title' => 'Dark, BG, Title, Content, Before Link, After Link, Vertical Spacing', + 'title' => 'Promo card, Dark, BG, Title, Content, Before Link, After Link, Vertical Spacing', 'theme' => $helper::civicthemeThemeDark(), 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), 'content' => $helper::staticSentenceFieldValue(8), @@ -211,7 +211,7 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l 'background' => TRUE, 'type' => 'manual_list', 'list_column_count' => 2, - 'cards' => [ + 'list_items' => [ [ 'type' => 'civictheme_promo_card', 'title' => $helper::staticSentence(3), @@ -229,6 +229,66 @@ function _cs_generated_content_create_node_civictheme_page__variations__manual_l ], ], ], + + [ + 'title' => 'Snippet, Light, BG, Title, Content, Before Link, After Link, Vertical Spacing', + 'theme' => $helper::civicthemeThemeLight(), + 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), + 'content' => $helper::staticSentenceFieldValue(8), + 'list_link_above' => $helper::staticLinkFieldValue(2), + 'list_link_below' => $helper::staticLinkFieldValue(2), + 'background' => TRUE, + 'type' => 'manual_list', + 'list_column_count' => 1, + 'list_items' => [ + [ + 'type' => 'civictheme_snippet', + 'title' => $helper::staticSentence(3), + 'summary' => $helper::staticPlainParagraph(), + ], + [ + 'type' => 'civictheme_snippet', + 'title' => $helper::staticSentence(3), + 'summary' => $helper::staticPlainParagraph(), + ], + [ + 'type' => 'civictheme_snippet', + 'title' => $helper::staticSentence(3), + 'summary' => $helper::staticPlainParagraph(), + ], + ], + ], + [ + 'title' => 'Snippet, Dark, BG, Title, Content, Before Link, After Link, Vertical Spacing', + 'theme' => $helper::civicthemeThemeDark(), + 'vertical_spacing' => $helper::civicthemeVerticalSpacingTypeBoth(), + 'content' => $helper::staticSentenceFieldValue(8), + 'list_link_above' => $helper::staticLinkFieldValue(2), + 'list_link_below' => $helper::staticLinkFieldValue(2), + 'background' => TRUE, + 'type' => 'manual_list', + 'list_column_count' => 1, + 'list_items' => [ + [ + 'type' => 'civictheme_snippet', + 'title' => $helper::staticSentence(3), + 'summary' => $helper::staticPlainParagraph(), + 'theme' => $helper::civicthemeThemeDark(), + ], + [ + 'type' => 'civictheme_snippet', + 'title' => $helper::staticSentence(3), + 'summary' => $helper::staticPlainParagraph(), + 'theme' => $helper::civicthemeThemeDark(), + ], + [ + 'type' => 'civictheme_snippet', + 'title' => $helper::staticSentence(3), + 'summary' => $helper::staticPlainParagraph(), + 'theme' => $helper::civicthemeThemeDark(), + ], + ], + ], ], ]; diff --git a/docroot/modules/custom/cs_generated_content/src/CsGeneratedContentCivicthemeTrait.php b/docroot/modules/custom/cs_generated_content/src/CsGeneratedContentCivicthemeTrait.php index 5fda881b9..077d41f47 100644 --- a/docroot/modules/custom/cs_generated_content/src/CsGeneratedContentCivicthemeTrait.php +++ b/docroot/modules/custom/cs_generated_content/src/CsGeneratedContentCivicthemeTrait.php @@ -74,6 +74,13 @@ public static function civicthemeNavigationCardType() { return 'civictheme_navigation_card'; } + /** + * Snippet type name. + */ + public static function civicthemeSnippetType() { + return 'civictheme_snippet'; + } + /** * Available theme names. */ @@ -764,9 +771,9 @@ public static function civicthemeParagraphManualListAttach($node, $field_name, $ return NULL; } - if (!empty($options['cards']) && count($options['cards']) > 0) { - $cards = $options['cards']; - unset($options['cards']); + if (!empty($options['list_items']) && count($options['list_items']) > 0) { + $list_items = $options['list_items']; + unset($options['list_items']); } $paragraph = self::civicthemeParagraphAttach('civictheme_manual_list', $node, $field_name, $options); @@ -776,12 +783,12 @@ public static function civicthemeParagraphManualListAttach($node, $field_name, $ } // Slider slide. - if (!empty($cards)) { - foreach ($cards as $card_options) { - if (!empty($card_options['type'])) { - $type = $card_options['type']; - unset($card_options['type']); - $card = self::civicthemeParagraphAttach($type, $paragraph, 'field_c_p_list_items', $card_options, TRUE); + if (!empty($list_items)) { + foreach ($list_items as $list_item_options) { + if (!empty($list_item_options['type'])) { + $type = $list_item_options['type']; + unset($list_item_options['type']); + $card = self::civicthemeParagraphAttach($type, $paragraph, 'field_c_p_list_items', $list_item_options, TRUE); if (!empty($card)) { $paragraph->field_c_p_list_items->appendItem($card); } diff --git a/docroot/sites/default/default.services.yml b/docroot/sites/default/default.services.yml index cdeb41fc4..b4d27e05a 100644 --- a/docroot/sites/default/default.services.yml +++ b/docroot/sites/default/default.services.yml @@ -147,6 +147,14 @@ parameters: # # @default [] tags: [] + # Renderer cache debug: + # + # Allows cache debugging output for each rendered element. + # + # Enabling render cache debugging is not recommended in production + # environments. + # @default false + debug: false # Cacheability debugging: # # Responses with cacheability metadata (CacheableResponseInterface instances) @@ -161,15 +169,15 @@ parameters: # @default false http.response.debug_cacheability_headers: false factory.keyvalue: {} - # Default key/value storage service to use. - # @default keyvalue.database - # default: keyvalue.database - # Collection-specific overrides. - # state: keyvalue.database + # Default key/value storage service to use. + # @default keyvalue.database + # default: keyvalue.database + # Collection-specific overrides. + # state: keyvalue.database factory.keyvalue.expirable: {} - # Default key/value expirable storage service to use. - # @default keyvalue.database.expirable - # default: keyvalue.database.expirable + # Default key/value expirable storage service to use. + # @default keyvalue.database.expirable + # default: keyvalue.database.expirable # Allowed protocols for URL generation. filter_protocols: - http @@ -196,7 +204,8 @@ parameters: allowedHeaders: [] # Specify allowed request methods, specify ['*'] to allow all possible ones. allowedMethods: [] - # Configure requests allowed from specific origins. + # Configure requests allowed from specific origins. Do not include trailing + # slashes with URLs. allowedOrigins: ['*'] # Sets the Access-Control-Expose-Headers header. exposedHeaders: false diff --git a/docroot/sites/default/default.settings.php b/docroot/sites/default/default.settings.php index f3dca008f..20d789369 100644 --- a/docroot/sites/default/default.settings.php +++ b/docroot/sites/default/default.settings.php @@ -138,6 +138,21 @@ * request as needed. The fourth line creates a new database with a name of * "extra". * + * For MySQL, MariaDB or equivalent databases the 'isolation_level' option can + * be set. The recommended transaction isolation level for Drupal sites is + * 'READ COMMITTED'. The 'REPEATABLE READ' option is supported but can result + * in deadlocks, the other two options are 'READ UNCOMMITTED' and 'SERIALIZABLE'. + * They are available but not supported; use them at your own risk. For more + * info: + * https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html + * + * On your settings.php, change the isolation level: + * @code + * $databases['default']['default']['init_commands'] = [ + * 'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', + * ]; + * @endcode + * * You can optionally set a prefix for all database table names by using the * 'prefix' setting. If a prefix is specified, the table name will be prepended * with its value. Be sure to use valid database characters only, usually @@ -343,10 +358,13 @@ # $settings['reverse_proxy'] = TRUE; /** - * Specify every reverse proxy IP address in your environment. - * This setting is required if $settings['reverse_proxy'] is TRUE. + * Reverse proxy addresses. + * + * Specify every reverse proxy IP address in your environment, as an array of + * IPv4/IPv6 addresses or subnets in CIDR notation. This setting is required if + * $settings['reverse_proxy'] is TRUE. */ -# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', 'e.f.g.h/24', ...]; /** * Reverse proxy trusted headers. @@ -513,6 +531,25 @@ */ # $settings['file_additional_public_schemes'] = ['example']; +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + /** * Private file path: * @@ -576,7 +613,7 @@ * * Note: This setting does not apply to installation and update pages. */ -# $settings['maintenance_theme'] = 'bartik'; +# $settings['maintenance_theme'] = 'claro'; /** * PHP settings: @@ -601,21 +638,6 @@ # ini_set('pcre.backtrack_limit', 200000); # ini_set('pcre.recursion_limit', 200000); -/** - * Add Permissions-Policy header to disable Google FLoC. - * - * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header - * to disable Google's Federated Learning of Cohorts feature, introduced in - * Chrome 89. - * - * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more - * information about FLoC. - * - * If you don't wish to disable FLoC in Chrome, you can set this value - * to FALSE. - */ -# $settings['block_interest_cohort'] = TRUE; - /** * Configuration overrides. * @@ -641,33 +663,6 @@ # $config['system.site']['name'] = 'My Drupal site'; # $config['user.settings']['anonymous'] = 'Visitor'; -/** - * Fast 404 pages: - * - * Drupal can generate fully themed 404 pages. However, some of these responses - * are for images or other resource files that are not displayed to the user. - * This can waste bandwidth, and also generate server load. - * - * The options below return a simple, fast 404 page for URLs matching a - * specific pattern: - * - $config['system.performance']['fast_404']['exclude_paths']: A regular - * expression to match paths to exclude, such as images generated by image - * styles, or dynamically-resized images. The default pattern provided below - * also excludes the private file system. If you need to add more paths, you - * can add '|path' to the expression. - * - $config['system.performance']['fast_404']['paths']: A regular expression to - * match paths that should return a simple 404 page, rather than the fully - * themed 404 page. If you don't have any aliases ending in htm or html you - * can add '|s?html?' to the expression. - * - $config['system.performance']['fast_404']['html']: The html to return for - * simple 404 pages. - * - * Remove the leading hash signs if you would like to alter this functionality. - */ -# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; -# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; -# $config['system.performance']['fast_404']['html'] = '404 Not Found

Not Found

The requested URL "@path" was not found on this server.

'; - /** * Load services definition file. */ @@ -777,6 +772,49 @@ */ $settings['migrate_node_migrate_type_classic'] = FALSE; +/** + * The default settings for migration sources. + * + * These settings are used as the default settings on the Credential form at + * /upgrade/credentials. + * + * - migrate_source_version - The version of the source database. This can be + * '6' or '7'. Defaults to '7'. + * - migrate_source_connection - The key in the $databases array for the source + * site. + * - migrate_file_public_path - The location of the source Drupal 6 or Drupal 7 + * public files. This can be a local file directory containing the source + * Drupal 6 or Drupal 7 site (e.g /var/www/docroot), or the site address + * (e.g http://example.com). + * - migrate_file_private_path - The location of the source Drupal 7 private + * files. This can be a local file directory containing the source Drupal 7 + * site (e.g /var/www/docroot), or empty to use the same value as Public + * files directory. + * + * Sample configuration for a drupal 6 source site with the source files in a + * local directory. + * + * @code + * $settings['migrate_source_version'] = '6'; + * $settings['migrate_source_connection'] = 'migrate'; + * $settings['migrate_file_public_path'] = '/var/www/drupal6'; + * @endcode + * + * Sample configuration for a drupal 7 source site with public source files on + * the source site and the private files in a local directory. + * + * @code + * $settings['migrate_source_version'] = '7'; + * $settings['migrate_source_connection'] = 'migrate'; + * $settings['migrate_file_public_path'] = 'https://drupal7.com'; + * $settings['migrate_file_private_path'] = '/var/www/drupal7'; + * @endcode + */ +# $settings['migrate_source_connection'] = ''; +# $settings['migrate_source_version'] = ''; +# $settings['migrate_file_public_path'] = ''; +# $settings['migrate_file_private_path'] = ''; + /** * Load local development override configuration, if available. * diff --git a/docroot/themes/contrib/civictheme/.ahoy.yml b/docroot/themes/contrib/civictheme/.ahoy.yml new file mode 100644 index 000000000..dc80c33cb --- /dev/null +++ b/docroot/themes/contrib/civictheme/.ahoy.yml @@ -0,0 +1,21 @@ +# +# Ahoy configuration file. +# http://www.ahoycli.com/ +# +# Provides development experience shortcuts. +--- +ahoyapi: v2 + +commands: + + build: + usage: Build or rebuild the project. + cmd: ./.circleci/build.sh + + lint: + usage: Lint code. + cmd: ./.circleci/lint.sh + + test: + usage: Run all tests. + cmd: ./.circleci/test.sh diff --git a/docroot/themes/contrib/civictheme/.circleci/build.sh b/docroot/themes/contrib/civictheme/.circleci/build.sh new file mode 100755 index 000000000..a0573449f --- /dev/null +++ b/docroot/themes/contrib/civictheme/.circleci/build.sh @@ -0,0 +1,200 @@ +#!/usr/bin/env bash +## +# Build Drupal site using SQLite database, install current theme and serve +# using in-built PHP server. +# +# Allows to use the latest Drupal core as well as specified versions (for +# testing backward compatibility). +# +# - Retrieves the scaffold from drupal-composer/drupal-project or custom scaffold. +# - Builds Drupal site codebase with current theme and it's dependencies. +# - Installs Drupal using SQLite database. +# - Starts in-built PHP-server +# - Enables theme +# - Serves site and generates one-time login link +# +# This script will re-build everything from scratch every time it runs. + +# shellcheck disable=SC2015,SC2094,SC2002 + +set -eu +[ -n "${DEBUG:-}" ] && set -x + +#------------------------------------------------------------------------------- +# Variables (passed from environment; provided for reference only). +#------------------------------------------------------------------------------- + +# Directory where Drupal site will be built. +BUILD_DIR="${BUILD_DIR:-build}" + +# Webserver hostname. +WEBSERVER_HOST="${WEBSERVER_HOST:-localhost}" + +# Webserver port. +WEBSERVER_PORT="${WEBSERVER_PORT:-8000}" + +# Drupal core version to use. If not provided - the latest stable version will be used. +# Must be coupled with DRUPAL_PROJECT_SHA below. +DRUPAL_VERSION="${DRUPAL_VERSION:-}" + +# Commit SHA of the drupal-project to install custom core version. If not +# provided - the latest version will be used. +# Must be coupled with DRUPAL_VERSION above. +DRUPAL_PROJECT_SHA="${DRUPAL_PROJECT_SHA:-}" + +# Repository for "drupal-composer/drupal-project" project. +# May be overwritten to use forked repos that may have not been accepted +# yet (i.e., when major Drupal version is about to be released). +DRUPAL_PROJECT_REPO="${DRUPAL_PROJECT_REPO:-https://github.com/drupal-composer/drupal-project.git}" + +# Drupal profile to use when installing the site. +DRUPAL_PROFILE="${DRUPAL_PROFILE:-standard}" + +# Theme name, taken from the .info file. +THEME="$(basename -s .info.yml -- ./*.info.yml)" + +# Database file path. +DB_FILE="${DB_FILE:-/tmp/site_${THEME}.sqlite}" + +#------------------------------------------------------------------------------- + +echo +echo "==> Started build in \"${BUILD_DIR}\" directory." +echo + +echo "-------------------------------" +echo " Validating requirements " +echo "-------------------------------" + +echo " > Validating tools." +! command -v git > /dev/null && echo "ERROR: Git is required for this script to run." && exit 1 +! command -v php > /dev/null && echo "ERROR: PHP is required for this script to run." && exit 1 +! command -v composer > /dev/null && echo "ERROR: Composer (https://getcomposer.org/) is required for this script to run." && exit 1 +! command -v jq > /dev/null && echo "ERROR: jq (https://stedolan.github.io/jq/) is required for this script to run." && exit 1 + +echo " > Validating Composer configuration." +composer validate --ansi --strict + +# Reset the environment. +[ -d "${BUILD_DIR}" ] && echo " > Removing existing ${BUILD_DIR} directory." && chmod -Rf 777 "${BUILD_DIR}" && rm -rf "${BUILD_DIR}" + +echo "-------------------------------" +echo " Installing Composer packages " +echo "-------------------------------" + +# Allow installing custom version of Drupal core from drupal-composer/drupal-project, +# but only coupled with drupal-project SHA (required to get correct dependencies). +if [ -n "${DRUPAL_VERSION:-}" ] && [ -n "${DRUPAL_PROJECT_SHA:-}" ]; then + echo " > Initialising Drupal site from the scaffold repo ${DRUPAL_PROJECT_REPO} commit ${DRUPAL_PROJECT_SHA}." + + # Clone Drupal core at the specific commit SHA. + git clone -n "${DRUPAL_PROJECT_REPO}" "${BUILD_DIR}" + git --git-dir="${BUILD_DIR}/.git" --work-tree="${BUILD_DIR}" checkout "${DRUPAL_PROJECT_SHA}" + rm -rf "${BUILD_DIR}/.git" > /dev/null + + echo " > Pinning Drupal to a specific version ${DRUPAL_VERSION}." + sed_opts=(-i) && [ "$(uname)" == "Darwin" ] && sed_opts=(-i '') + sed "${sed_opts[@]}" 's|\(.*"drupal\/core"\): "\(.*\)",.*|\1: '"\"$DRUPAL_VERSION\",|" "${BUILD_DIR}/composer.json" + cat "${BUILD_DIR}/composer.json" +else + echo " > Initialising Drupal site from the latest scaffold." + # There are no releases in "drupal-composer/drupal-project", so have to use "@dev". + php -d memory_limit=-1 "$(command -v composer)" create-project drupal-composer/drupal-project:@dev "${BUILD_DIR}" --no-interaction --no-install +fi + +echo " > Updating scaffold." +cat <<< "$(jq --indent 4 '.extra["enable-patching"] = true' "${BUILD_DIR}/composer.json")" > "${BUILD_DIR}/composer.json" +cat <<< "$(jq --indent 4 '.extra["phpcodesniffer-search-depth"] = 10' "${BUILD_DIR}/composer.json")" > "${BUILD_DIR}/composer.json" + +echo " > Merging configuration from theme's composer.json." +php -r "echo json_encode(array_replace_recursive(json_decode(file_get_contents('composer.json'), true),json_decode(file_get_contents('${BUILD_DIR}/composer.json'), true)),JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);" > "${BUILD_DIR}/composer2.json" && mv -f "${BUILD_DIR}/composer2.json" "${BUILD_DIR}/composer.json" + +echo " > Adding custom patches." +cat <<< "$(jq --indent 4 '.extra.patches = {"drupal/core": {"Builds failing on missing layout column plugin": "https://www.drupal.org/files/issues/2023-07-16/3204271-20-missing-layout-exception.patch"}}' "${BUILD_DIR}/composer.json")" > "${BUILD_DIR}/composer.json" + +echo " > Creating GitHub authentication token if provided." +[ -n "${GITHUB_TOKEN:-}" ] && composer config --global github-oauth.github.com "$GITHUB_TOKEN" && echo "Token: " && composer config --global github-oauth.github.com + +echo " > Installing dependencies." +php -d memory_limit=-1 "$(command -v composer)" --working-dir="${BUILD_DIR}" install + +# Suggested dependencies allow to install them for testing without requiring +# them in theme's composer.json. +echo " > Installing suggested dependencies from theme's composer.json." +composer_suggests=$(cat composer.json | jq -r 'select(.suggest != null) | .suggest | keys[]') +for composer_suggest in $composer_suggests; do + php -d memory_limit=-1 "$(command -v composer)" --working-dir="${BUILD_DIR}" require "${composer_suggest}" +done + +echo " > Installing other dev dependencies." +php -d memory_limit=-1 "$(command -v composer)" --working-dir="${BUILD_DIR}" require --dev \ + dealerdirect/phpcodesniffer-composer-installer \ + phpspec/prophecy-phpunit:^2 \ + mglaman/drupal-check \ + rector/rector:0.15.13 \ + palantirnet/drupal-rector +cp "${BUILD_DIR}/vendor/palantirnet/drupal-rector/rector.php" "${BUILD_DIR}/." + +echo "-------------------------------" +echo " Starting builtin PHP server " +echo "-------------------------------" + +# Stop previously started services. +killall -9 php > /dev/null 2>&1 || true +# Start the PHP webserver. +nohup php -S "${WEBSERVER_HOST}:${WEBSERVER_PORT}" -t "$(pwd)/${BUILD_DIR}/web" "$(pwd)/${BUILD_DIR}/web/.ht.router.php" > /tmp/php.log 2>&1 & +sleep 4 # Waiting for the server to be ready. +netstat_opts='-tulpn'; [ "$(uname)" == "Darwin" ] && netstat_opts='-anv' || true; +# Check that the server was started. +netstat "${netstat_opts[@]}" | grep -q "${WEBSERVER_PORT}" || (echo "ERROR: Unable to start inbuilt PHP server" && cat /tmp/php.log && exit 1) +# Check that the server can serve content. +curl -s -o /dev/null -w "%{http_code}" -L -I "http://${WEBSERVER_HOST}:${WEBSERVER_PORT}" | grep -q 200 || (echo "ERROR: Server is started, but site cannot be served" && exit 1) +echo " > Started builtin PHP server at http://${WEBSERVER_HOST}:${WEBSERVER_PORT} in $(pwd)/${BUILD_DIR}/web." + +echo "-------------------------------" +echo " Installing Drupal and themes " +echo "-------------------------------" + +echo " > Installing Drupal into SQLite database ${DB_FILE}." +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" si "${DRUPAL_PROFILE}" -y --db-url "sqlite://${DB_FILE}" --account-name=admin install_configure_form.enable_update_status_module=NULL install_configure_form.enable_update_status_emails=NULL +"${BUILD_DIR}/vendor/bin/drush" -r "$(pwd)/${BUILD_DIR}/web" status + +echo " > Symlinking theme code." +rm -rf "${BUILD_DIR}/web/themes/${THEME}"/* > /dev/null +mkdir -p "${BUILD_DIR}/web/themes/${THEME}" +ln -s "$(pwd)"/* "${BUILD_DIR}/web/themes/${THEME}" && rm "${BUILD_DIR}/web/themes/${THEME}/${BUILD_DIR}" + +######################################## + +echo " > Enabling theme ${THEME} dependent modules." +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" php:eval "require_once dirname(\Drupal::getContainer()->get('theme_handler')->rebuildThemeData()['civictheme']->getPathname()) . '/theme-settings.provision.inc'; civictheme_enable_modules();" + +echo " > Enabling theme ${THEME}." +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" theme:install "${THEME}" -y +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" cr + +echo " > Setting theme ${THEME} as default." +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" config:set system.theme default "${THEME}" -y + +echo " > Provisioning content from theme defaults." +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" php:eval "require_once dirname(\Drupal::getContainer()->get('theme_handler')->rebuildThemeData()['civictheme']->getPathname()) . '/theme-settings.provision.inc'; civictheme_provision_cli();" + +######################################## + +# Visit site to pre-warm caches. +curl -s "http://${WEBSERVER_HOST}:${WEBSERVER_PORT}" > /dev/null + +echo +echo "-------------------------------" +echo " Build finished 🚀🚀🚀" +echo "-------------------------------" +echo +echo " > Site URL: http://${WEBSERVER_HOST}:${WEBSERVER_PORT}" +echo -n " > One-time login link: " +"${BUILD_DIR}/vendor/bin/drush" -r "${BUILD_DIR}/web" -l "http://${WEBSERVER_HOST}:${WEBSERVER_PORT}" uli --no-browser +echo +echo " > Available commands:" +echo " ahoy build # rebuild" +echo " ahoy lint # check code standards" +echo " ahoy test # run tests" +echo diff --git a/docroot/themes/contrib/civictheme/.circleci/config.yml b/docroot/themes/contrib/civictheme/.circleci/config.yml new file mode 100644 index 000000000..33f7fd6c4 --- /dev/null +++ b/docroot/themes/contrib/civictheme/.circleci/config.yml @@ -0,0 +1,112 @@ +# @see https://github.com/drevops/drupal_circleci +version: 2 +aliases: + # SSH deployment key fingerprint from CircleCI App -> Project -> Settings -> SSH Permissions. + # Replace the value for your project. + - &deploy_ssh_fingerprint "47:f9:29:8b:9b:1b:e9:66:5d:b3:f6:dd:e7:60:d1:f9" + - &container_config + working_directory: ~/project + docker: + - image: cimg/php:8.2-browsers + +job-build: &job-build + steps: + - checkout + - run: .circleci/build.sh + - run: .circleci/lint.sh + - run: .circleci/test.sh + - run: + command: .circleci/process-artifacts.sh + when: always + - store_test_results: + path: /tmp/test_results + - store_artifacts: + path: /tmp/artifacts + +jobs: + build-php-8.1: + <<: *container_config + docker: + - image: cimg/php:8.1-browsers + <<: *job-build + + build-php-8.2: + <<: *container_config + docker: + - image: cimg/php:8.2-browsers + <<: *job-build + + build-php-8.1-legacy: + <<: *container_config + docker: + - image: cimg/php:8.1-browsers + environment: + DRUPAL_VERSION: 9.5 + DRUPAL_PROJECT_SHA: 9.x + <<: *job-build + + build-php-8.2-legacy: + <<: *container_config + docker: + - image: cimg/php:8.2-browsers + environment: + DRUPAL_VERSION: 9.5 + DRUPAL_PROJECT_SHA: 9.x + <<: *job-build + + build-php-8.2-next: + <<: *container_config + docker: + - image: cimg/php:8.2-browsers + environment: + DRUPAL_VERSION: 10@beta + <<: *job-build + + deploy: + <<: *container_config + environment: + DEPLOY_SSH_FINGERPRINT: *deploy_ssh_fingerprint + steps: + - checkout + - add_ssh_keys: + fingerprints: + - *deploy_ssh_fingerprint + - run: DEPLOY_BRANCH=${DEPLOY_BRANCH:-${CIRCLE_BRANCH}} .circleci/deploy.sh + +workflows: + version: 2 + main: + jobs: + - build-php-8.1: + filters: + tags: + only: /.*/ + - build-php-8.2: + filters: + tags: + only: /.*/ + - build-php-8.1-legacy: + filters: + tags: + only: /.*/ + - build-php-8.2-legacy: + filters: + tags: + only: /.*/ + - build-php-8.2-next: + filters: + tags: + only: /.*/ + - deploy: + requires: + - build-php-8.1 + - build-php-8.2 + - build-php-8.1-legacy + - build-php-8.2-legacy + - build-php-8.2-next + filters: + tags: + only: /.*/ + branches: + # 1.0.x, 2.3.x, 9.x, 10.x, 9.x-2.x, ci, ci-test + only: /^[0-9]+.[0-9]+.x$|^[0-9]+.x(?:\-[0-9]+\.x)?$|^ci.*/ diff --git a/docroot/themes/contrib/civictheme/.circleci/deploy.sh b/docroot/themes/contrib/civictheme/.circleci/deploy.sh new file mode 100755 index 000000000..02e673366 --- /dev/null +++ b/docroot/themes/contrib/civictheme/.circleci/deploy.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +## +# Deploy code to a remote repository. +# +# - configures local git +# - adds deployment SSH key to SSH agent +# - force-pushes code to a remote code repository branch +# +# It is a good practice to create a separate Deployer user with own SSH key for +# every project. +# +# Add the following variables through CircleCI UI. +# - DEPLOY_USER_NAME - name of the user who will be committing to a remote repository. +# - DEPLOY_USER_EMAIL - email address of the user who will be committing to a remote repository. +# - DEPLOY_REMOTE - remote repository to push code to. +# - DEPLOY_PROCEED - set to 1 if the deployment should proceed. Useful for testing CI configuration before an actual code push. + +set -eu +[ -n "${DEBUG:-}" ] && set -x + +#------------------------------------------------------------------------------- +# Variables (passed from environment; provided for reference only). +#------------------------------------------------------------------------------- + +# Name of the user who will be committing to a remote repository. +DEPLOY_USER_NAME="${DEPLOY_USER_NAME:-}" + +# Email address of the user who will be committing to a remote repository. +DEPLOY_USER_EMAIL="${DEPLOY_USER_EMAIL:-}" + +# Remote repository to push code to. +DEPLOY_REMOTE="${DEPLOY_REMOTE:-}" + +# Git branch to deploy. If not provided - current branch will be used. +DEPLOY_BRANCH="${DEPLOY_BRANCH:-}" + +# The fingerprint of the SSH key of the user on behalf of which the deployment +# is performed. +DEPLOY_SSH_FINGERPRINT="${DEPLOY_SSH_FINGERPRINT:-}" + +# Set to 1 if the deployment should proceed. Useful for testing CI configuration +# before an actual code push. +DEPLOY_PROCEED="${DEPLOY_PROCEED:-0}" + +#------------------------------------------------------------------------------- + +[ -z "${DEPLOY_USER_NAME}" ] && echo "ERROR: Missing required value for DEPLOY_USER_NAME" && exit 1 +[ -z "${DEPLOY_USER_EMAIL}" ] && echo "ERROR: Missing required value for DEPLOY_USER_EMAIL" && exit 1 +[ -z "${DEPLOY_REMOTE}" ] && echo "ERROR: Missing required value for DEPLOY_REMOTE" && exit 1 +[ -z "${DEPLOY_SSH_FINGERPRINT}" ] && echo "ERROR: Missing required value for DEPLOY_SSH_FINGERPRINT" && exit 1 + +[ "${DEPLOY_PROCEED}" != "1" ] && echo "==> Skipping deployment because \$DEPLOY_PROCEED is not set to 1" && exit 0 + +# Configure git and SSH to connect to remote servers for deployment. +mkdir -p "${HOME}/.ssh/" +echo -e "Host *\n\tStrictHostKeyChecking no\n" > "${HOME}/.ssh/config" +DEPLOY_SSH_FILE="${DEPLOY_SSH_FINGERPRINT//:}" +DEPLOY_SSH_FILE="${HOME}/.ssh/id_rsa_${DEPLOY_SSH_FILE//\"}" +[ ! -f "${DEPLOY_SSH_FILE:-}" ] && echo "ERROR: Unable to find Deploy SSH key file ${DEPLOY_SSH_FILE}." && exit 1 +if [ -z "${SSH_AGENT_PID:-}" ]; then eval "$(ssh-agent)"; fi +ssh-add -D > /dev/null +ssh-add "${DEPLOY_SSH_FILE}" + +# Configure git user name and email, but only if not already set. +[ "$(git config --global user.name)" == "" ] && echo "==> Configuring global git user name ${DEPLOY_USER_NAME}." && git config --global user.name "${DEPLOY_USER_NAME}" +[ "$(git config --global user.email)" == "" ] && echo "==> Configuring global git user email ${DEPLOY_USER_EMAIL}." && git config --global user.email "${DEPLOY_USER_EMAIL}" + +# Set git to push to a matching remote branch. +git config --global push.default matching + +echo "==> Adding remote ${DEPLOY_REMOTE}." +git remote add deployremote "${DEPLOY_REMOTE}" + +echo "==> Deploying to remote ${DEPLOY_REMOTE}." + +echo " > Pushing code to branch ${DEPLOY_BRANCH}." +git push --force deployremote HEAD:"${DEPLOY_BRANCH}" + +echo " > Pushing tags." +git push --force --tags deployremote || true + +echo +echo "==> Deployment finished." +echo diff --git a/docroot/themes/contrib/civictheme/.circleci/lint.sh b/docroot/themes/contrib/civictheme/.circleci/lint.sh new file mode 100755 index 000000000..db54dd84c --- /dev/null +++ b/docroot/themes/contrib/civictheme/.circleci/lint.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +## +# Run lint checks. +# + +set -eu +[ -n "${DEBUG:-}" ] && set -x + +#------------------------------------------------------------------------------- +# Variables (passed from environment; provided for reference only). +#------------------------------------------------------------------------------- + +# Directory where Drupal site will be built. +BUILD_DIR="${BUILD_DIR:-build}" + +# Module name, taken from .info file. +MODULE="$(basename -s .info.yml -- ./*.info.yml)" + +#------------------------------------------------------------------------------- + +echo "==> Lint code for module $MODULE." +echo " > Running PHPCS." +build/vendor/bin/phpcs \ + -s \ + -p \ + --ignore=node_modules/* --ignore=vendor/* \ + --standard=Drupal,DrupalPractice \ + --extensions=module,php,install,inc,test,info.yml,js \ + "${BUILD_DIR}/web/themes/${MODULE}" + +echo " > Running drupal-check." +build/vendor/bin/drupal-check \ + --drupal-root=build/web \ + "${BUILD_DIR}/web/themes/${MODULE}" || true + +echo " > Running Drupal Rector." +pushd "${BUILD_DIR}" >/dev/null || exit 1 +vendor/bin/rector process \ + "web/themes/${MODULE}" \ + --dry-run +popd >/dev/null || exit 1 diff --git a/docroot/themes/contrib/civictheme/.circleci/process-artifacts.sh b/docroot/themes/contrib/civictheme/.circleci/process-artifacts.sh new file mode 100755 index 000000000..d4fe3e703 --- /dev/null +++ b/docroot/themes/contrib/civictheme/.circleci/process-artifacts.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +## +# Process test artifacts. +# +# This runs only in CircleCI. +# + +set -eu +[ -n "${DEBUG:-}" ] && set -x + +#------------------------------------------------------------------------------- +# Variables (passed from environment; provided for reference only). +#------------------------------------------------------------------------------- + +# Directory where Drupal site will be built. +BUILD_DIR="${BUILD_DIR:-build}" + +#------------------------------------------------------------------------------- + +if [ -d "$(pwd)/${BUILD_DIR}/web/sites/simpletest/browser_output" ]; then + echo "==> Copying Simpletest test artifacts" + mkdir -p /tmp/artifacts/simpletest + cp -Rf "$(pwd)/${BUILD_DIR}/web/sites/simpletest/browser_output/." /tmp/artifacts/simpletest +fi diff --git a/docroot/themes/contrib/civictheme/.circleci/test.sh b/docroot/themes/contrib/civictheme/.circleci/test.sh new file mode 100755 index 000000000..2fb776856 --- /dev/null +++ b/docroot/themes/contrib/civictheme/.circleci/test.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +## +# Run tests. +# + +set -eu +[ -n "${DEBUG:-}" ] && set -x + +#------------------------------------------------------------------------------- +# Variables (passed from environment; provided for reference only). +#------------------------------------------------------------------------------- + +# Directory where Drupal site will be built. +BUILD_DIR="${BUILD_DIR:-build}" + +# Webserver hostname. +WEBSERVER_HOST="${WEBSERVER_HOST:-localhost}" + +# Webserver port. +WEBSERVER_PORT="${WEBSERVER_PORT:-8000}" + +# Module name, taken from .info file. +MODULE="$(basename -s .info.yml -- ./*.info.yml)" + +# Test database file path. +TEST_DB_FILE="${TEST_DB_FILE:-/tmp/test.sqlite}" + +# Directory to store test results. +TEST_RESULTS_DIR="${TEST_RESULTS_DIR:-/tmp/test_results/simpletest}" + +#------------------------------------------------------------------------------- + +echo "==> Run tests." + +# Do not fail if there are no tests. +[ ! -d "tests" ] && echo "==> No tests were found. Skipping." && exit 0 + +# Re-create test results directory. +rm -rf "${TEST_RESULTS_DIR}" > /dev/null +mkdir -p "${TEST_RESULTS_DIR}" + +# Remove existing test DB file. +rm -f "${TEST_DB_FILE}" > /dev/null + +# Run tests using script provided by Drupal. +php "./${BUILD_DIR}/web/core/scripts/run-tests.sh" \ + --sqlite "${TEST_DB_FILE}" \ + --dburl "sqlite://localhost/${TEST_DB_FILE}" \ + --url "http://${WEBSERVER_HOST}:${WEBSERVER_PORT}" \ + --non-html \ + --xml "${TEST_RESULTS_DIR}" \ + --color \ + --verbose \ + --suppress-deprecations \ + --module "${MODULE}" diff --git a/docroot/themes/contrib/civictheme/.editorconfig b/docroot/themes/contrib/civictheme/.editorconfig new file mode 100644 index 000000000..b9ce7f637 --- /dev/null +++ b/docroot/themes/contrib/civictheme/.editorconfig @@ -0,0 +1,26 @@ +# Drupal editor configuration normalization +# @see http://editorconfig.org/ + +# This is the top-most .editorconfig file; do not search in parent directories. +root = true + +# All files. +[*] +end_of_line = LF +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.js] +indent_size = 2 + +[composer.{json,lock}] +indent_size = 4 + +[*.{yml,yaml}] +indent_size = 2 + +[*.{sh,bash,bats}] +indent_size = 2 diff --git a/docroot/themes/contrib/civictheme/.gitattributes b/docroot/themes/contrib/civictheme/.gitattributes index 4a557a893..655fc9289 100644 --- a/docroot/themes/contrib/civictheme/.gitattributes +++ b/docroot/themes/contrib/civictheme/.gitattributes @@ -1 +1,6 @@ +.ahoy.yml export-ignore +.circleci export-ignore +.editorconfig export-ignore +.gitattributes export-ignore +.gitignore export-ignore .gitignore.release export-ignore diff --git a/docroot/themes/contrib/civictheme/.github/release-drafter.yml b/docroot/themes/contrib/civictheme/.github/release-drafter.yml new file mode 100644 index 000000000..699ff479c --- /dev/null +++ b/docroot/themes/contrib/civictheme/.github/release-drafter.yml @@ -0,0 +1,12 @@ +name-template: '$NEXT_MINOR_VERSION' +tag-template: '$NEXT_MINOR_VERSION' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. +template: | + ## What's new since $PREVIOUS_TAG + + $CHANGES + + **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...$NEXT_MINOR_VERSION + + $CONTRIBUTORS diff --git a/docroot/themes/contrib/civictheme/.github/workflows/draft-release.yml b/docroot/themes/contrib/civictheme/.github/workflows/draft-release.yml new file mode 100644 index 000000000..1cd4d69c8 --- /dev/null +++ b/docroot/themes/contrib/civictheme/.github/workflows/draft-release.yml @@ -0,0 +1,22 @@ +name: Release Drafter + +on: + push: + branches: + - master + pull_request: + types: [opened, reopened, synchronize] + +permissions: + contents: read + +jobs: + update_release_draft: + permissions: + contents: write + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/docroot/themes/contrib/civictheme/.gitignore b/docroot/themes/contrib/civictheme/.gitignore index ce7ea7584..5a5675e6c 100644 --- a/docroot/themes/contrib/civictheme/.gitignore +++ b/docroot/themes/contrib/civictheme/.gitignore @@ -3,3 +3,4 @@ node_modules # does not allow to run NodeJS scripts. storybook-static dist +build diff --git a/docroot/themes/contrib/civictheme/.gitignore.release b/docroot/themes/contrib/civictheme/.gitignore.release index 09809f500..e670282f7 100644 --- a/docroot/themes/contrib/civictheme/.gitignore.release +++ b/docroot/themes/contrib/civictheme/.gitignore.release @@ -3,3 +3,4 @@ # are going into release. node_modules civictheme_library/.gitignore.release +build diff --git a/docroot/themes/contrib/civictheme/.nvmrc b/docroot/themes/contrib/civictheme/.nvmrc index b6a7d89c6..2ef343043 100644 --- a/docroot/themes/contrib/civictheme/.nvmrc +++ b/docroot/themes/contrib/civictheme/.nvmrc @@ -1 +1 @@ -16 +18.14 diff --git a/docroot/themes/contrib/civictheme/.storybook/addon-config.js b/docroot/themes/contrib/civictheme/.storybook/addon-config.js index 24ea08937..f5dc22d05 100644 --- a/docroot/themes/contrib/civictheme/.storybook/addon-config.js +++ b/docroot/themes/contrib/civictheme/.storybook/addon-config.js @@ -19,7 +19,6 @@ exports.default = function () { config = [ ...config, ...[ - '@whitespace/storybook-addon-html', '@storybook/addon-a11y', ], ]; diff --git a/docroot/themes/contrib/civictheme/.storybook/main.js b/docroot/themes/contrib/civictheme/.storybook/main.js index 90a3aa21d..706110e44 100644 --- a/docroot/themes/contrib/civictheme/.storybook/main.js +++ b/docroot/themes/contrib/civictheme/.storybook/main.js @@ -5,9 +5,9 @@ // Using Production version of the asset building Webpack configuration to // unify the building pipeline. +const path = require('path'); const { merge } = require('webpack-merge'); const webpack = require('webpack'); -const path = require('path'); const custom = require('../webpack/webpack.prod'); const scssVariables = require('./importer.scss_variables'); const iconUtils = require('../components/00-base/icon/icon.utils'); diff --git a/docroot/themes/contrib/civictheme/README.md b/docroot/themes/contrib/civictheme/README.md index 156b69c5d..6b2767ada 100644 --- a/docroot/themes/contrib/civictheme/README.md +++ b/docroot/themes/contrib/civictheme/README.md @@ -1,96 +1,42 @@ # CivicTheme Drupal theme ----- +Drupal 9+ component-based theme. + +[![CircleCI](https://dl.circleci.com/status-badge/img/gh/salsadigitalauorg/civictheme/tree/master.svg?style=shield)](https://dl.circleci.com/status-badge/redirect/gh/salsadigitalauorg/civictheme/tree/master) -Version: `{{ VERSION }}` +---- ## Introduction -CivicTheme theme, the Drupal theme built using a standalone component library, -provides components and data structures to enhance editorial experiences -out-of-the-box. +CivicTheme theme, the Drupal theme built using a UI kit, provides components +and data structures to enhance editorial experiences out-of-the-box. -The [standalone component library](https://github.com/salsadigitalauorg/civictheme_library) +The [UI kit](https://github.com/salsadigitalauorg/civictheme_library) is a CMS-agnostic HTML/CSS/JS framework based on Atomic Design principles. -The Drupal theme provides full integration with a library. +The Drupal theme provides full integration with UI kit. ## Installation - composer require salsadigitalauorg/civictheme +```bash +composer require salsadigitalauorg/civictheme +``` -Enable CivicTheme theme to use it as-is - CivicTheme component library is +Enable CivicTheme theme to use it as-is - CivicTheme UI kit is already included as a set of compiled assets. ## Creating a sub-theme from the CivicTheme theme -CivicTheme provides a starter theme and a script to generate a child theme for -you to get started with. - -Run the following command from within `civictheme` theme directory: - - php civictheme_create_subtheme.php "Human theme name" "Human theme description" /path/to/theme_machine_name - -This will generate a sub-theme in 'path/to/theme_machine_name' theme directory -with everything ready to be installed and compiled. - -## Compiling sub-theme assets - -Run the following command from within your sub-theme directory: - - npm run build - -## Managing colors - -Website colors can be specified via: -- CSS code -- Color Selector -- CSS code with Color Selector overrides - -See `admin/appearance/settings/civictheme` for more details about colors and to -set colors via Color Selector. - -### Disabling Color Selector - -If colors managed in CSS code only, make sure that Color Selector is disabled - - ./vendor/bin/drush config-set civictheme.settings colors.use_color_selector 0 - -### Setting colors via Drush command - -Palette colors can be set in bulk via Drush command by providing Brand colors. - - # Enable Color Selector. - ./vendor/bin/drush config-set civictheme.settings colors.use_color_selector 1 - - # Enable Brand Colors. - ./vendor/bin/drush config-set civictheme.settings colors.use_brand_colors 1 - - # Set Brand Colors. - ./vendor/bin/drush --include=path/to/civictheme/src/Drush civictheme:set-brand-colors light_brand1 light_brand2 light_brand3 dark_brand1 dark_brand2 dark_brand3 - - # Purge dynamic assets cache. Will be rebuilt during next pageload. - ./vendor/bin/drush --include=docroot/themes/contrib/civictheme/src/Drush civictheme:clear-cache - -Example - - ./vendor/bin/drush -y config-set civictheme.settings colors.use_color_selector 1 - ./vendor/bin/drush -y config-set civictheme.settings colors.use_brand_colors 1 - ./vendor/bin/drush --include=docroot/themes/contrib/civictheme/src/Drush civictheme:set-brand-colors "#00698f" "#e6e9eb" "#121313" "#61daff" "#003a4f" "#00698f" - ./vendor/bin/drush --include=docroot/themes/contrib/civictheme/src/Drush civictheme:clear-cache +See [Sub-theme](https://docs.civictheme.io/drupal-theme/sub-theme) ## Updating CivicTheme -See `README.md` in your custom theme. +See [Version update](https://docs.civictheme.io/development/drupal-theme/version-update) -## Development documentation - -- [CivicTheme Component Library Documentation](./civictheme_library/docs/README.md) -- [CivicTheme Drupal Theme Documentation](./docs/README.md) +## Managing colors ----- +See [Color selector](https://docs.civictheme.io/drupal-theme/color-selector) -## Other resources +--- -- [CivicTheme Source site](https://github.com/salsadigitalauorg/civictheme_source) -- [CivicTheme CMS-agnostic library](https://github.com/salsadigitalauorg/civictheme_library) +For additional information, please refer to the [Documentation site](https://docs.civictheme.io/drupal-theme) diff --git a/docroot/themes/contrib/civictheme/assets/images/demo4.jpg b/docroot/themes/contrib/civictheme/assets/images/demo4.jpg new file mode 100644 index 000000000..edf091efa Binary files /dev/null and b/docroot/themes/contrib/civictheme/assets/images/demo4.jpg differ diff --git a/docroot/themes/contrib/civictheme/assets/images/demo5.jpg b/docroot/themes/contrib/civictheme/assets/images/demo5.jpg new file mode 100644 index 000000000..1d381355d Binary files /dev/null and b/docroot/themes/contrib/civictheme/assets/images/demo5.jpg differ diff --git a/docroot/themes/contrib/civictheme/assets/images/demo6.jpg b/docroot/themes/contrib/civictheme/assets/images/demo6.jpg new file mode 100644 index 000000000..e40741fb3 Binary files /dev/null and b/docroot/themes/contrib/civictheme/assets/images/demo6.jpg differ diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_desktop.png b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_desktop.png deleted file mode 100644 index f8b5fc5b1..000000000 Binary files a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_desktop.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_desktop.svg b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_desktop.svg new file mode 100644 index 000000000..e26fe177e --- /dev/null +++ b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_desktop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_mobile.png b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_mobile.png deleted file mode 100644 index f8b5fc5b1..000000000 Binary files a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_mobile.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_mobile.svg b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_mobile.svg new file mode 100644 index 000000000..e26fe177e --- /dev/null +++ b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_dark_mobile.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_desktop.png b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_desktop.png deleted file mode 100644 index 8866583dc..000000000 Binary files a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_desktop.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_desktop.svg b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_desktop.svg new file mode 100644 index 000000000..58d41db9d --- /dev/null +++ b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_desktop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_mobile.png b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_mobile.png deleted file mode 100644 index 8866583dc..000000000 Binary files a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_mobile.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_mobile.svg b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_mobile.svg new file mode 100644 index 000000000..58d41db9d --- /dev/null +++ b/docroot/themes/contrib/civictheme/assets/logos/logo_primary_light_mobile.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/civictheme.info.yml b/docroot/themes/contrib/civictheme/civictheme.info.yml index 7ed56e455..4af989439 100644 --- a/docroot/themes/contrib/civictheme/civictheme.info.yml +++ b/docroot/themes/contrib/civictheme/civictheme.info.yml @@ -89,10 +89,11 @@ components: ckeditor_stylesheets: - dist/civictheme.editor.css - #;< DEVELOPMENT # Configuration shipped with this theme. # Update the list of the configuration below and run `drush cde civictheme`. +# Do not add an empty line before this comment block or the downstream code +# linting will fail on extra blank line. config_devel: install: - block.block.civictheme_content @@ -158,6 +159,8 @@ config_devel: - core.entity_form_display.paragraph.civictheme_slider.default - core.entity_form_display.paragraph.civictheme_slider_slide.default - core.entity_form_display.paragraph.civictheme_slider_slide_ref.default + - core.entity_form_display.paragraph.civictheme_snippet.default + - core.entity_form_display.paragraph.civictheme_snippet_ref.default - core.entity_form_display.paragraph.civictheme_social_icon.default - core.entity_form_display.paragraph.civictheme_subject_card.default - core.entity_form_display.paragraph.civictheme_subject_card_ref.default @@ -217,6 +220,8 @@ config_devel: - core.entity_view_display.paragraph.civictheme_slider.default - core.entity_view_display.paragraph.civictheme_slider_slide.default - core.entity_view_display.paragraph.civictheme_slider_slide_ref.default + - core.entity_view_display.paragraph.civictheme_snippet.default + - core.entity_view_display.paragraph.civictheme_snippet_ref.default - core.entity_view_display.paragraph.civictheme_social_icon.default - core.entity_view_display.paragraph.civictheme_subject_card.default - core.entity_view_display.paragraph.civictheme_subject_card_ref.default @@ -226,10 +231,11 @@ config_devel: - core.entity_view_mode.node.civictheme_navigation_card - core.entity_view_mode.node.civictheme_promo_card - core.entity_view_mode.node.civictheme_slider_slide + - core.entity_view_mode.node.civictheme_snippet - editor.editor.civictheme_rich_text - field.field.block_content.civictheme_banner.field_c_b_background_image + - field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode - field.field.block_content.civictheme_banner.field_c_b_banner_type - - field.field.block_content.civictheme_banner.field_c_b_blend_mode - field.field.block_content.civictheme_banner.field_c_b_featured_image - field.field.block_content.civictheme_banner.field_c_b_theme - field.field.block_content.civictheme_component_block.field_c_b_components @@ -270,6 +276,7 @@ config_devel: - field.field.node.civictheme_event.field_c_n_topics - field.field.node.civictheme_event.field_c_n_vertical_spacing - field.field.node.civictheme_page.field_c_n_banner_background + - field.field.node.civictheme_page.field_c_n_banner_blend_mode - field.field.node.civictheme_page.field_c_n_banner_components - field.field.node.civictheme_page.field_c_n_banner_components_bott - field.field.node.civictheme_page.field_c_n_banner_featured_image @@ -277,7 +284,6 @@ config_devel: - field.field.node.civictheme_page.field_c_n_banner_theme - field.field.node.civictheme_page.field_c_n_banner_title - field.field.node.civictheme_page.field_c_n_banner_type - - field.field.node.civictheme_page.field_c_n_blend_mode - field.field.node.civictheme_page.field_c_n_components - field.field.node.civictheme_page.field_c_n_custom_last_updated - field.field.node.civictheme_page.field_c_n_hide_sidebar @@ -428,6 +434,13 @@ config_devel: - field.field.paragraph.civictheme_slider_slide_ref.field_c_p_link_text - field.field.paragraph.civictheme_slider_slide_ref.field_c_p_reference - field.field.paragraph.civictheme_slider_slide_ref.field_c_p_theme + - field.field.paragraph.civictheme_snippet.field_c_p_link + - field.field.paragraph.civictheme_snippet.field_c_p_summary + - field.field.paragraph.civictheme_snippet.field_c_p_theme + - field.field.paragraph.civictheme_snippet.field_c_p_title + - field.field.paragraph.civictheme_snippet.field_c_p_topics + - field.field.paragraph.civictheme_snippet_ref.field_c_p_reference + - field.field.paragraph.civictheme_snippet_ref.field_c_p_theme - field.field.paragraph.civictheme_social_icon.field_c_p_icon - field.field.paragraph.civictheme_social_icon.field_c_p_link - field.field.paragraph.civictheme_subject_card.field_c_p_image @@ -441,8 +454,8 @@ config_devel: - field.field.paragraph.civictheme_webform.field_c_p_vertical_spacing - field.field.paragraph.civictheme_webform.field_c_p_webform - field.storage.block_content.field_c_b_background_image + - field.storage.block_content.field_c_b_banner_blend_mode - field.storage.block_content.field_c_b_banner_type - - field.storage.block_content.field_c_b_blend_mode - field.storage.block_content.field_c_b_bottom - field.storage.block_content.field_c_b_components - field.storage.block_content.field_c_b_featured_image @@ -466,6 +479,7 @@ config_devel: - field.storage.node.field_c_n_alert_type - field.storage.node.field_c_n_attachments - field.storage.node.field_c_n_banner_background + - field.storage.node.field_c_n_banner_blend_mode - field.storage.node.field_c_n_banner_components - field.storage.node.field_c_n_banner_components_bott - field.storage.node.field_c_n_banner_featured_image @@ -473,7 +487,6 @@ config_devel: - field.storage.node.field_c_n_banner_theme - field.storage.node.field_c_n_banner_title - field.storage.node.field_c_n_banner_type - - field.storage.node.field_c_n_blend_mode - field.storage.node.field_c_n_body - field.storage.node.field_c_n_components - field.storage.node.field_c_n_custom_last_updated @@ -581,6 +594,8 @@ config_devel: - paragraphs.paragraphs_type.civictheme_slider - paragraphs.paragraphs_type.civictheme_slider_slide - paragraphs.paragraphs_type.civictheme_slider_slide_ref + - paragraphs.paragraphs_type.civictheme_snippet + - paragraphs.paragraphs_type.civictheme_snippet_ref - paragraphs.paragraphs_type.civictheme_social_icon - paragraphs.paragraphs_type.civictheme_subject_card - paragraphs.paragraphs_type.civictheme_subject_card_ref @@ -616,4 +631,9 @@ config_devel: - block.block.civictheme_signup - linkit.linkit_profile.civictheme - media.settings + - search_api.index.civictheme_content + - search_api.server.civictheme_database + - search_api.settings + - search_api_db.settings + - views.view.civictheme_search #;> DEVELOPMENT diff --git a/docroot/themes/contrib/civictheme/civictheme.layouts.yml b/docroot/themes/contrib/civictheme/civictheme.layouts.yml index e3bea19cb..b7934f6bf 100644 --- a/docroot/themes/contrib/civictheme/civictheme.layouts.yml +++ b/docroot/themes/contrib/civictheme/civictheme.layouts.yml @@ -16,7 +16,7 @@ civictheme_one_column_contained: template: layout--single-column-contained default_region: content icon_map: - - [first, second, second, third] + - [ content ] regions: content: label: Main content diff --git a/docroot/themes/contrib/civictheme/civictheme.post_update.php b/docroot/themes/contrib/civictheme/civictheme.post_update.php new file mode 100644 index 000000000..b6961f9e0 --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme.post_update.php @@ -0,0 +1,447 @@ +update( + $sandbox, + 'node', + ['civictheme_page'], + // Start callback. + function (CivicthemeUpdateHelper $helper) { + // Noop. + }, + // Process callback. + function (CivicthemeUpdateHelper $helper, EntityInterface $entity) { + if (!$entity instanceof Node) { + return FALSE; + } + + $updated = FALSE; + + // Update vertical spacing for node. + if (is_null(civictheme_get_field_value($entity, 'field_c_n_vertical_spacing', TRUE))) { + $entity->field_c_n_vertical_spacing = CivicthemeConstants::VERTICAL_SPACING_NONE; + $updated = TRUE; + } + + // Update vertical spacing for components. + $field_names = [ + 'field_c_n_components', + 'field_c_n_banner_components', + 'field_c_n_banner_components_bott', + ]; + + foreach ($field_names as $field_name) { + $components = civictheme_get_field_value($entity, $field_name); + + if (empty($components)) { + continue; + } + + foreach ($components as $component) { + if (is_null(civictheme_get_field_value($component, 'field_c_p_vertical_spacing', TRUE))) { + $component->field_c_p_vertical_spacing = CivicthemeConstants::VERTICAL_SPACING_NONE; + $updated = TRUE; + } + } + } + + if ($updated) { + $entity->save(); + } + + return $updated; + }, + // Finished callback. + function (CivicthemeUpdateHelper $helper) { + return new TranslatableMarkup("Updated values for fields 'field_c_n_vertical_spacing' and 'field_c_p_vertical_spacing'.\n"); + }, + ); +} + +/** + * Renames 'Column count' and 'Fill width' List fields and updates content. + */ +function civictheme_post_update_rename_list_fields(array &$sandbox) { + $field_mapping = [ + 'field_c_p_fill_width' => 'field_c_p_list_fill_width', + 'field_c_p_column_count' => 'field_c_p_list_column_count', + ]; + + $old_field_configs = [ + 'field.storage.paragraph.field_c_p_fill_width' => 'field_storage_config', + 'field.field.paragraph.civictheme_manual_list.field_c_p_fill_width' => 'field_config', + 'field.field.paragraph.civictheme_automated_list.field_c_p_fill_width' => 'field_config', + 'field.storage.paragraph.field_c_p_column_count' => 'field_storage_config', + 'field.field.paragraph.civictheme_manual_list.field_c_p_column_count' => 'field_config', + 'field.field.paragraph.civictheme_automated_list.field_c_p_column_count' => 'field_config', + ]; + + $new_field_configs = [ + 'field.storage.paragraph.field_c_p_list_fill_width' => 'field_storage_config', + 'field.field.paragraph.civictheme_manual_list.field_c_p_list_fill_width' => 'field_config', + 'field.field.paragraph.civictheme_automated_list.field_c_p_list_fill_width' => 'field_config', + 'field.storage.paragraph.field_c_p_list_column_count' => 'field_storage_config', + 'field.field.paragraph.civictheme_manual_list.field_c_p_list_column_count' => 'field_config', + 'field.field.paragraph.civictheme_automated_list.field_c_p_list_column_count' => 'field_config', + ]; + + $new_form_display_config = [ + 'civictheme_manual_list' => [ + 'field_c_p_list_column_count' => [ + 'type' => 'options_select', + 'weight' => 5, + 'region' => 'content', + 'settings' => [], + 'third_party_settings' => [], + ], + 'field_c_p_list_fill_width' => [ + 'type' => 'boolean_checkbox', + 'weight' => 6, + 'region' => 'content', + 'settings' => [ + 'display_label' => TRUE, + ], + 'third_party_settings' => [], + ], + ], + 'civictheme_automated_list' => [ + 'field_c_p_list_column_count' => [ + 'type' => 'options_select', + 'weight' => 5, + 'region' => 'content', + 'settings' => [], + 'third_party_settings' => [], + ], + 'field_c_p_list_fill_width' => [ + 'type' => 'options_select', + 'weight' => 5, + 'region' => 'content', + 'settings' => [ + 'display_label' => TRUE, + ], + 'third_party_settings' => [], + ], + ], + ]; + + $new_form_display_group_config = [ + 'civictheme_manual_list' => [ + 'group_columns' => [ + 'field_c_p_list_column_count', + 'field_c_p_list_fill_width', + ], + ], + 'civictheme_automated_list' => [ + 'group_columns' => [ + 'field_c_p_list_column_count', + 'field_c_p_list_fill_width', + ], + ], + ]; + + return \Drupal::classResolver(CivicthemeUpdateHelper::class)->update( + $sandbox, + 'paragraph', + array_keys($new_form_display_config), + // Start callback. + function (CivicthemeUpdateHelper $helper) use ($new_field_configs) { + $config_path = \Drupal::service('extension.list.theme')->getPath('civictheme') . '/config/install'; + $helper->createConfigs($new_field_configs, $config_path); + }, + // Process callback. + function (CivicthemeUpdateHelper $helper, EntityInterface $entity) use ($field_mapping) { + return $helper->copyFieldContent($entity, $field_mapping); + }, + // Finished callback. + function (CivicthemeUpdateHelper $helper) use ($old_field_configs, $new_form_display_config, $new_form_display_group_config) { + $helper->deleteConfig($old_field_configs); + + foreach ($new_form_display_config as $bundle => $config) { + $helper->updateFormDisplayConfig('paragraph', $bundle, $config, $new_form_display_group_config[$bundle]); + } + + return new TranslatableMarkup("Content from field 'field_c_p_column_count' was moved to 'field_c_p_list_column_count'. Content from field 'field_c_p_fill_width' was moved to 'field_c_p_list_fill_width'.\nThe 'field_c_p_column_count' and 'field_c_p_fill_width' were removed from %paragraph_types paragraph types. Please re-export your site configuration.\n", [ + '%paragraph_types' => implode(', ', array_keys($new_form_display_config)), + ]); + } + ); +} + +/** + * Replaces 'Summary' with 'Content' field in components and updates content. + */ +function civictheme_post_update_replace_summary_field(array &$sandbox) { + $field_mapping = [ + 'field_c_p_summary' => 'field_c_p_content', + ]; + + $old_field_configs = [ + 'field.field.paragraph.civictheme_attachment.field_c_p_summary' => 'field_config', + 'field.field.paragraph.civictheme_callout.field_c_p_summary' => 'field_config', + 'field.field.paragraph.civictheme_next_step.field_c_p_summary' => 'field_config', + 'field.field.paragraph.civictheme_promo.field_c_p_summary' => 'field_config', + ]; + + $new_field_configs = [ + 'field.storage.paragraph.field_c_p_content' => 'field_storage_config', + 'field.field.paragraph.civictheme_attachment.field_c_p_content' => 'field_config', + 'field.field.paragraph.civictheme_callout.field_c_p_content' => 'field_config', + 'field.field.paragraph.civictheme_next_step.field_c_p_content' => 'field_config', + 'field.field.paragraph.civictheme_promo.field_c_p_content' => 'field_config', + ]; + + $new_field_settings = [ + 'type' => 'string_textarea', + 'weight' => 1, + 'region' => 'content', + 'settings' => [ + 'rows' => 5, + 'placeholder' => '', + ], + 'third_party_settings' => [], + ]; + + $new_form_display_config = [ + 'civictheme_attachment' => [ + 'field_c_p_content' => $new_field_settings + ['weight' => 2], + ], + 'civictheme_callout' => [ + 'field_c_p_content' => $new_field_settings, + ], + 'civictheme_next_step' => [ + 'field_c_p_content' => $new_field_settings, + ], + 'civictheme_promo' => [ + 'field_c_p_content' => $new_field_settings, + ], + ]; + + return \Drupal::classResolver(CivicthemeUpdateHelper::class)->update( + $sandbox, + 'paragraph', + array_keys($new_form_display_config), + // Start callback. + function (CivicthemeUpdateHelper $helper) use ($new_field_configs) { + $config_path = \Drupal::service('extension.list.theme')->getPath('civictheme') . '/config/install'; + $helper->createConfigs($new_field_configs, $config_path); + }, + // Process callback. + function (CivicthemeUpdateHelper $helper, EntityInterface $entity) use ($field_mapping) { + return $helper->copyFieldContent($entity, $field_mapping); + }, + // Finished callback. + function (CivicthemeUpdateHelper $helper) use ($old_field_configs, $new_form_display_config) { + $helper->deleteConfig($old_field_configs); + + foreach ($new_form_display_config as $bundle => $config) { + $helper->updateFormDisplayConfig('paragraph', $bundle, $config); + } + + return new TranslatableMarkup("Content from field 'field_c_p_summary' was moved to 'field_c_p_content'. The 'field_c_p_summary' field was removed from %paragraph_types paragraph types.\nPlease re-export your site configuration.\n", [ + '%paragraph_types' => implode(', ', array_keys($new_form_display_config)), + ]); + } + ); +} + +/** + * Renames 'Date' field in Event content type and updates content. + */ +function civictheme_post_update_rename_event_date_field(array &$sandbox) { + $field_mapping = [ + 'field_c_n_date' => 'field_c_n_date_range', + ]; + + $old_field_configs = [ + 'field.storage.node.field_c_n_date' => 'field_storage_config', + 'field.field.node.civictheme_event.field_c_n_date' => 'field_config', + ]; + + $new_field_configs = [ + 'field.storage.node.field_c_n_date_range' => 'field_storage_config', + 'field.field.node.civictheme_event.field_c_n_date_range' => 'field_config', + ]; + + $new_form_display_config = [ + 'civictheme_event' => [ + 'field_c_n_date_range' => [ + 'type' => 'daterange_default', + 'weight' => 13, + 'region' => 'content', + 'settings' => [], + 'third_party_settings' => [], + ], + ], + ]; + + $new_form_display_group_config = [ + 'civictheme_event' => [ + 'group_event' => [ + 'field_c_n_date_range', + ], + ], + ]; + + return \Drupal::classResolver(CivicthemeUpdateHelper::class)->update( + $sandbox, + 'node', + ['civictheme_event'], + // Start callback. + function (CivicthemeUpdateHelper $helper) use ($new_field_configs) { + $config_path = \Drupal::service('extension.list.theme')->getPath('civictheme') . '/config/install'; + $helper->createConfigs($new_field_configs, $config_path); + }, + // Process callback. + function (CivicthemeUpdateHelper $helper, EntityInterface $entity) use ($field_mapping) { + return $helper->copyFieldContent($entity, $field_mapping); + }, + // Finished callback. + function (CivicthemeUpdateHelper $helper) use ($old_field_configs, $new_form_display_config, $new_form_display_group_config) { + $helper->deleteConfig($old_field_configs); + + foreach ($new_form_display_config as $bundle => $config) { + $helper->updateFormDisplayConfig('node', $bundle, $config, $new_form_display_group_config[$bundle]); + } + + return new TranslatableMarkup("Content from field 'field_c_n_date' was moved to 'field_c_n_date_range'. The 'field_c_n_date_range' field was removed from 'civictheme_event' node type.\nPlease re-export your site configuration.\n"); + } + ); +} + +/** + * Renames 'Banner blend mode' field in nodes and updates content. + */ +function civictheme_post_update_rename_node_banner_blend_mode(array &$sandbox) { + $field_mapping = [ + 'field_c_n_blend_mode' => 'field_c_n_banner_blend_mode', + 'field_c_b_blend_mode' => 'field_c_b_banner_blend_mode', + ]; + + $old_field_configs = [ + 'field.storage.node.field_c_n_blend_mode' => 'field_storage_config', + 'field.field.node.civictheme_page.field_c_n_blend_mode' => 'field_config', + ]; + + $new_field_configs = [ + 'field.storage.node.field_c_n_banner_blend_mode' => 'field_storage_config', + 'field.field.node.civictheme_page.field_c_n_banner_blend_mode' => 'field_config', + ]; + + $new_form_display_config = [ + 'civictheme_page' => [ + 'field_c_n_banner_blend_mode' => [ + 'type' => 'options_select', + 'weight' => 15, + 'region' => 'content', + 'settings' => [], + 'third_party_settings' => [], + ], + ], + ]; + + $new_form_display_group_config = [ + 'civictheme_page' => [ + 'group_banner_background' => [ + 'field_c_n_banner_background', + 'field_c_n_banner_blend_mode', + ], + ], + ]; + + return \Drupal::classResolver(CivicthemeUpdateHelper::class)->update( + $sandbox, + 'node', + ['civictheme_page'], + // Start callback. + function (CivicthemeUpdateHelper $helper) use ($new_field_configs) { + $config_path = \Drupal::service('extension.list.theme')->getPath('civictheme') . '/config/install'; + $helper->createConfigs($new_field_configs, $config_path); + }, + // Process callback. + function (CivicthemeUpdateHelper $helper, EntityInterface $entity) use ($field_mapping) { + return $helper->copyFieldContent($entity, $field_mapping); + }, + // Finished callback. + function (CivicthemeUpdateHelper $helper) use ($old_field_configs, $new_form_display_config, $new_form_display_group_config) { + $helper->deleteConfig($old_field_configs); + + foreach ($new_form_display_config as $bundle => $config) { + $helper->updateFormDisplayConfig('node', $bundle, $config, $new_form_display_group_config[$bundle]); + } + + return new TranslatableMarkup("Content from field 'field_c_n_blend_mode' was moved to 'field_c_n_banner_blend_mode'.\nThe 'field_c_n_blend_mode' field was removed from 'civictheme_page' node type.\nPlease re-export your site configuration.\n"); + } + ); +} + +/** + * Renames 'Banner blend mode' field in blocks and updates content. + */ +function civictheme_post_update_rename_block_banner_blend_mode(array &$sandbox) { + $field_mapping = [ + 'field_c_b_blend_mode' => 'field_c_b_banner_blend_mode', + ]; + + $old_field_configs = [ + 'field.storage.block_content.field_c_b_blend_mode' => 'field_storage_config', + 'field.field.block_content.civictheme_banner.field_c_b_blend_mode' => 'field_config', + ]; + + $new_field_configs = [ + 'field.storage.block_content.field_c_b_banner_blend_mode' => 'field_storage_config', + 'field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode' => 'field_config', + ]; + + $new_form_display_config = [ + 'civictheme_banner' => [ + 'field_c_b_banner_blend_mode' => [ + 'type' => 'options_select', + 'weight' => 4, + 'region' => 'content', + 'settings' => [], + 'third_party_settings' => [], + ], + ], + ]; + + return \Drupal::classResolver(CivicthemeUpdateHelper::class)->update( + $sandbox, + 'block_content', + ['civictheme_banner'], + // Start callback. + function (CivicthemeUpdateHelper $helper) use ($new_field_configs) { + $config_path = \Drupal::service('extension.list.theme')->getPath('civictheme') . '/config/install'; + $helper->createConfigs($new_field_configs, $config_path); + }, + // Process callback. + function (CivicthemeUpdateHelper $helper, EntityInterface $entity) use ($field_mapping) { + return $helper->copyFieldContent($entity, $field_mapping); + }, + // Finished callback. + function (CivicthemeUpdateHelper $helper) use ($old_field_configs, $new_form_display_config) { + $helper->deleteConfig($old_field_configs); + + foreach ($new_form_display_config as $bundle => $config) { + $helper->updateFormDisplayConfig('block_content', $bundle, $config); + } + + return new TranslatableMarkup("Content from field 'field_c_b_blend_mode' was moved to 'field_c_b_banner_blend_mode'.\nThe 'field_c_b_blend_mode' field was removed from 'civictheme_banner' block type.\nPlease re-export your site configuration.\n"); + } + ); +} diff --git a/docroot/themes/contrib/civictheme/civictheme.theme b/docroot/themes/contrib/civictheme/civictheme.theme index 8e7e6767b..d8e9324d5 100644 --- a/docroot/themes/contrib/civictheme/civictheme.theme +++ b/docroot/themes/contrib/civictheme/civictheme.theme @@ -31,7 +31,6 @@ require_once 'includes/media.inc'; require_once 'includes/menu.inc'; require_once 'includes/mobile_navigation.inc'; require_once 'includes/next_step.inc'; -require_once 'includes/migration.inc'; require_once 'includes/node.inc'; require_once 'includes/page.inc'; require_once 'includes/pager.inc'; @@ -45,6 +44,7 @@ require_once 'includes/system_main_block.inc'; require_once 'includes/site_section.inc'; require_once 'includes/skip_link.inc'; require_once 'includes/slider.inc'; +require_once 'includes/snippet.inc'; require_once 'includes/social_links.inc'; require_once 'includes/system_branding.inc'; require_once 'includes/table.inc'; @@ -152,9 +152,6 @@ function civictheme_preprocess_page(&$variables) { // Preprocessing for Alerts functionality. _civictheme_preprocess_page__civictheme_alert($variables); - // Preprocessing for migration metadata functionality. - _civictheme_migration_metadata__page($variables); - // Add all page variables to the root variables. This is required so that // child themes could add page-level variables without have to extend page // template (the variables there are not scoped as an exception). diff --git a/docroot/themes/contrib/civictheme/civictheme_create_subtheme.php b/docroot/themes/contrib/civictheme/civictheme_create_subtheme.php index ce97c059a..b688fea0c 100755 --- a/docroot/themes/contrib/civictheme/civictheme_create_subtheme.php +++ b/docroot/themes/contrib/civictheme/civictheme_create_subtheme.php @@ -111,16 +111,16 @@ function print_help($default_new_theme_dir) { name New theme human-readable name. description New theme description. new_theme_directory Optional new theme directory, including theme machine - name. Defaults to ${default_new_theme_dir}/machine_name. + name. Defaults to $default_new_theme_dir/machine_name. Options: --help This help. --remove-examples Remove example component from generated theme. Examples: - php ${script_name} civictheme_demo "CivicTheme Demo" "Demo sub-theme for a CivicTheme theme." + php $script_name civictheme_demo "CivicTheme Demo" "Demo sub-theme for a CivicTheme theme." - php ${script_name} civictheme_demo "CivicTheme Demo" "Demo sub-theme for a CivicTheme theme." ../civictheme_demo + php $script_name civictheme_demo "CivicTheme Demo" "Demo sub-theme for a CivicTheme theme." ../civictheme_demo EOF; print PHP_EOL; diff --git a/docroot/themes/contrib/civictheme/civictheme_library/.nvmrc b/docroot/themes/contrib/civictheme/civictheme_library/.nvmrc new file mode 100644 index 000000000..2ef343043 --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_library/.nvmrc @@ -0,0 +1 @@ +18.14 diff --git a/docroot/themes/contrib/civictheme/civictheme_library/.storybook/addon-config.js b/docroot/themes/contrib/civictheme/civictheme_library/.storybook/addon-config.js index 24ea08937..f5dc22d05 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/.storybook/addon-config.js +++ b/docroot/themes/contrib/civictheme/civictheme_library/.storybook/addon-config.js @@ -19,7 +19,6 @@ exports.default = function () { config = [ ...config, ...[ - '@whitespace/storybook-addon-html', '@storybook/addon-a11y', ], ]; diff --git a/docroot/themes/contrib/civictheme/civictheme_library/.storybook/main.js b/docroot/themes/contrib/civictheme/civictheme_library/.storybook/main.js index 9b43122aa..bfab4cbdf 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/.storybook/main.js +++ b/docroot/themes/contrib/civictheme/civictheme_library/.storybook/main.js @@ -5,9 +5,9 @@ // Using Production version of the asset building Webpack configuration to // unify the building pipeline. +const path = require('path'); const { merge } = require('webpack-merge'); const webpack = require('webpack'); -const path = require('path'); const custom = require('../webpack/webpack.prod'); const scssVariables = require('./importer.scss_variables'); const iconUtils = require('../components/00-base/icon/icon.utils'); diff --git a/docroot/themes/contrib/civictheme/civictheme_library/README.md b/docroot/themes/contrib/civictheme/civictheme_library/README.md index 36e6339af..31ce176ee 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/README.md +++ b/docroot/themes/contrib/civictheme/civictheme_library/README.md @@ -1,6 +1,6 @@ -# CivicTheme component Library +# CivicTheme UI kit -CivicTheme component library with Storybook integration. +CivicTheme UI component library with Storybook integration. ---- @@ -40,13 +40,6 @@ This will build: npm run storybook -## Documentation +--- -Please refer to dedicated [Documentation](docs/README.md). - ----- - -## Other resources - -- [CivicTheme Source site](https://github.com/salsadigitalauorg/civictheme_source) -- [CivicTheme Drupal theme](https://github.com/salsadigitalauorg/civictheme) +For additional information, please refer to the [Documentation site](https://docs.civictheme.io/ui-kit) diff --git a/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo4.jpg b/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo4.jpg new file mode 100644 index 000000000..edf091efa Binary files /dev/null and b/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo4.jpg differ diff --git a/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo5.jpg b/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo5.jpg new file mode 100644 index 000000000..1d381355d Binary files /dev/null and b/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo5.jpg differ diff --git a/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo6.jpg b/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo6.jpg new file mode 100644 index 000000000..e40741fb3 Binary files /dev/null and b/docroot/themes/contrib/civictheme/civictheme_library/assets/images/demo6.jpg differ diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/_variables.components.scss b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/_variables.components.scss index ed5aa38e0..e28d4c06d 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/_variables.components.scss +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/_variables.components.scss @@ -750,6 +750,12 @@ $ct-breadcrumb-light-active-color: $ct-breadcrumb-light-color !default; $ct-breadcrumb-dark-color: ct-color-dark('body') !default; $ct-breadcrumb-dark-active-color: $ct-breadcrumb-dark-color !default; +// +// Snippet. +// +$ct-snippet-light-background-color: transparent !default; +$ct-snippet-dark-background-color: transparent !default; + // // Tooltip. // diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/base.utils.js b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/base.utils.js index 49b2bca28..7321bc9f2 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/base.utils.js +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/base.utils.js @@ -108,6 +108,9 @@ export const demoImage = (idx) => { './assets/images/demo1.jpg', './assets/images/demo2.jpg', './assets/images/demo3.jpg', + './assets/images/demo4.jpg', + './assets/images/demo5.jpg', + './assets/images/demo6.jpg', ]; idx = typeof idx !== 'undefined' ? Math.max(0, Math.min(idx, images.length)) : Math.floor(Math.random() * images.length); diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/collapsible/collapsible.js b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/collapsible/collapsible.js index fad561bc9..4492b0759 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/collapsible/collapsible.js +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/collapsible/collapsible.js @@ -53,7 +53,9 @@ function CivicThemeCollapsible(el) { this.trigger.addEventListener('focusout', this.focusoutEvent.bind(this)); this.panel.addEventListener('click', (e) => e.stopPropagation()); this.panel.addEventListener('focusout', this.focusoutEvent.bind(this)); - this.panel.addEventListener('focusin', this.focusinEvent.bind(this)); + + // Init focusable elements. + this.initFocusableElements(this.panel); // Collapse if was set as initially collapsed. if (this.collapsed) { @@ -164,16 +166,6 @@ CivicThemeCollapsible.prototype.clickEvent = function (e) { } }; -/** - * Focusin event handler. - */ -CivicThemeCollapsible.prototype.focusinEvent = function (e) { - const focusable = this.findFocusable(e.relatedTarget, e.target); - if (focusable) { - focusable.focus(); - } -}; - /** * Focusout event handler. */ @@ -269,6 +261,8 @@ CivicThemeCollapsible.prototype.collapse = function (animate, evt) { } } + t.disableElementsFocus(t.panel); + // Helper to set attributes after collapsing. const setAttributes = function (obj) { obj.panel.style.transition = ''; @@ -330,6 +324,8 @@ CivicThemeCollapsible.prototype.expand = function (animate) { return; } + t.enableElementsFocus(t.panel); + // Helper to set attributes after collapsing. const setAttributes = function (obj) { obj.panel.style.transition = ''; @@ -396,155 +392,40 @@ CivicThemeCollapsible.prototype.getPanel = function (el) { }; /** - * Find next or previous element in the DOM, based on elements position. + * Init focusable elements within a panel. */ -CivicThemeCollapsible.prototype.findFocusable = function (el, nextEl) { - const documentElements = Array.from(document.querySelectorAll('*')); - // Decide the direction of tabbing based on the position of the elements in - // DOM. - if (documentElements.indexOf(el) < documentElements.indexOf(nextEl)) { - return this.findNextFocusable(el); - } - - return this.findPreviousFocusable(el); +CivicThemeCollapsible.prototype.initFocusableElements = function (panel) { + this.disableElementsFocus(panel); }; /** - * Find next focusable element in DOM. + * Disable elements focus. */ -CivicThemeCollapsible.prototype.findNextFocusable = function (el) { - const focusable = this.allFocusable(); - - for (let i = 0; i < focusable.length; i++) { - if (focusable[i] === el) { - return focusable[i + 1]; - } - } - - return null; +CivicThemeCollapsible.prototype.disableElementsFocus = function (parent) { + this.getFocusableElements(parent).forEach((el) => { + el.setAttribute('tabindex', -1); + }); }; /** - * Find previous focusable element in DOM. + * Enable elements focus. */ -CivicThemeCollapsible.prototype.findPreviousFocusable = function (el) { - const focusable = this.allFocusable(); - - for (let i = 0; i < focusable.length; i++) { - if (focusable[i] === el) { - return i > 0 ? focusable[i - 1] : null; - } - } - - return null; +CivicThemeCollapsible.prototype.enableElementsFocus = function (parent) { + this.getFocusableElements(parent).forEach((el) => { + el.removeAttribute('tabindex'); + }); }; /** - * Get all focusable elements. + * Get focusable elements within an element. */ -CivicThemeCollapsible.prototype.allFocusable = function () { - const focusable = []; - - // Limit a set of supported focusable elements. - const elements = Array.from(document.querySelectorAll('input,select,textarea,button,object,area,a')); - for (let i = 0; i < elements.length; i++) { - if (this.isFocusable(elements[i])) { - focusable.push(elements[i]); - } - } - - return focusable; +CivicThemeCollapsible.prototype.getFocusableElements = function (el) { + return el.querySelectorAll('input, select, textarea, button, object, area, a'); }; /** - * Check if the element is focusable. + * Convert HTML to a DOM element. */ -CivicThemeCollapsible.prototype.isFocusable = function (element) { - const nodeName = element.nodeName.toLowerCase(); - const tabIndex = element.getAttribute('tabindex'); - const isTabIndexNaN = Number.isNaN(tabIndex); - - // Get all parents of an element. - function getParents(el) { - const parents = []; - while (el) { - parents.unshift(el); - el = el.parentElement; - } - return parents; - } - - // Check if an element itself is visible. - function elIsVisible(el) { - if (!(el instanceof Element)) { - throw Error('DomUtil: el is not an element.'); - } - - const style = getComputedStyle(el); - - if (style.display === 'none' - || style.visibility !== 'visible' - || style.opacity < 0.1 - || ( - el.offsetWidth - + el.offsetHeight - + el.getBoundingClientRect().height - + el.getBoundingClientRect().width === 0) - ) { - return false; - } - - const elemCenter = { - x: el.getBoundingClientRect().left + el.offsetWidth / 2, - y: el.getBoundingClientRect().top + el.offsetHeight / 2, - }; - if (elemCenter.x < 0 - || elemCenter.y < 0 - || elemCenter.x > (document.documentElement.clientWidth || window.innerWidth) - || elemCenter.y > (document.documentElement.clientHeight || window.innerHeight) - ) { - return false; - } - - let pointContainer = document.elementFromPoint(elemCenter.x, elemCenter.y); - while (pointContainer) { - if (pointContainer === el) { - return true; - } - pointContainer = pointContainer.parentNode; - } - - return false; - } - - // Check if an element is visible. - function isVisible(el) { - const parents = getParents(el); - // Visible if the element and all of it's parents are visible. If at least - // one of the parents is not visible - the element is not visible. - return elIsVisible(el) && parents.filter((elem) => elIsVisible(elem)).length === parents.length; - } - - // Special handling for image maps. - if (nodeName === 'area') { - const map = element.parentNode; - const mapName = map.name; - if (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') { - return false; - } - const img = document.querySelectorAll(`img[usemap=#${mapName}]`)[0]; - return !!img && isVisible(img); - } - - // One of the supported elements. - if (/^(input|select|textarea|button|object)$/.test(nodeName)) { - return !element.disabled && isVisible(element) && (isTabIndexNaN || tabIndex >= 0); - } - - // Or a visible link with a href. - return (nodeName === 'a' ? element.href || !isTabIndexNaN : !isTabIndexNaN) && isVisible(element) && (isTabIndexNaN || tabIndex >= 0); -}; - CivicThemeCollapsible.prototype.htmlToElement = function (html) { const template = document.createElement('template'); template.innerHTML = html.trim(); diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/menu/menu.twig b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/menu/menu.twig index 670cf56f7..034179cd7 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/menu/menu.twig +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/00-base/menu/menu.twig @@ -46,8 +46,9 @@ ] %} {% set item_attributes = item.attributes|default('') %} - {% set aria_expanded = item.in_active_trail and item.is_expanded ? 'aria-expanded="true"' : 'aria-expanded="false"' %} - {% if is_collapsible %} + {% set aria_expanded = '' %} + {% if item.below and is_collapsible %} + {% set aria_expanded = item.in_active_trail and item.is_expanded ? 'aria-expanded="true"' : 'aria-expanded="false"' %} {% set collapsible_collapsed = item.in_active_trail and item.is_expanded ? '' : 'data-collapsible-collapsed' %} {% set item_attributes = [item_attributes, 'data-collapsible', 'data-collapsible-duration="0"', collapsible_collapsed, aria_expanded]|join(' ') %} {% endif %} diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/select/select.scss b/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/select/select.scss index 41378c46a..9e018dd0f 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/select/select.scss +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/select/select.scss @@ -84,7 +84,6 @@ box-shadow: 0 0 0 ct-particle(0.125) $ct-select-dark-focus-border-color; } - &:invalid, &.error, &.ct-input--error { border-color: $ct-select-dark-error-border-color; diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textarea/textarea.scss b/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textarea/textarea.scss index 7bcca3119..03bc17817 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textarea/textarea.scss +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textarea/textarea.scss @@ -32,7 +32,6 @@ box-shadow: 0 0 0 ct-particle(0.125) $ct-input-light-focus-border-color; } - &:invalid, &.ct-input--error { border-color: $ct-input-light-error-border-color; box-shadow: 0 0 0 ct-particle(0.125) $ct-input-light-error-border-color; @@ -53,7 +52,6 @@ box-shadow: 0 0 0 ct-particle(0.125) $ct-input-dark-focus-border-color; } - &:invalid, &.ct-input--error { border-color: $ct-input-dark-error-border-color; box-shadow: 0 0 0 ct-particle(0.125) $ct-input-dark-error-border-color; diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textfield/textfield.scss b/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textfield/textfield.scss index aeadb5e60..5ab5469e4 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textfield/textfield.scss +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/01-atoms/textfield/textfield.scss @@ -31,7 +31,6 @@ box-shadow: 0 0 0 ct-particle(0.125) $ct-input-light-focus-border-color; } - &:invalid, &.error, &.ct-input--error { border-color: $ct-input-light-error-border-color; @@ -55,7 +54,6 @@ box-shadow: 0 0 0 ct-particle(0.125) $ct-input-dark-focus-border-color; } - &:invalid, &.error, &.ct-input--error { border-color: $ct-input-dark-error-border-color; diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.scss b/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.scss new file mode 100644 index 000000000..64947cc5c --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.scss @@ -0,0 +1,34 @@ +// +// Snippet component. +// + +@use 'sass:map'; + +.ct-snippet { + $root: &; + + position: relative; + width: 100%; + + #{$root}__content { + padding-top: ct-spacing(1); + padding-bottom: ct-spacing(1); + } + + #{$root}__title { + margin-bottom: ct-spacing(2); + } + + #{$root}__title__link { + @include ct-font-size-inherit(); + } + + #{$root}__tags { + display: flex; + margin-top: ct-spacing(2); + } + + @include ct-component-theme($root) using($root, $theme) { + @include ct-component-property($root, $theme, background-color); + } +} diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.stories.js b/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.stories.js new file mode 100644 index 000000000..0aae289e1 --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.stories.js @@ -0,0 +1,63 @@ +// phpcs:ignoreFile +import { + boolean, number, radios, text, +} from '@storybook/addon-knobs'; +import { + getSlots, randomInt, randomSentence, + randomTags, + randomUrl, +} from '../../00-base/base.utils'; + +import CivicThemeSummary from './snippet.twig'; + +export default { + title: 'Molecules/Snippet', + parameters: { + layout: 'centered', + }, +}; + +export const Snippet = (knobTab) => { + const generalKnobTab = typeof knobTab === 'string' ? knobTab : 'General'; + + const generalKnobs = { + theme: radios( + 'Theme', + { + Light: 'light', + Dark: 'dark', + }, + 'light', + generalKnobTab, + ), + title: text('Title', 'Snippet name which runs across two or three lines', generalKnobTab), + summary: text('Summary', randomSentence(randomInt(15, 25)), generalKnobTab), + link: { + url: text('Link URL', randomUrl(), generalKnobTab), + is_external: boolean('Link is external', false, generalKnobTab), + is_new_window: boolean('Open in a new window', false, generalKnobTab), + }, + tags: randomTags(number( + 'Number of tags', + 2, + { + range: true, + min: 0, + max: 10, + step: 1, + }, + generalKnobTab, + ), true), + modifier_class: `story-wrapper-size--large ${text('Additional class', '', generalKnobTab)}`, + attributes: text('Additional attributes', '', generalKnobTab), + }; + + return CivicThemeSummary({ + ...generalKnobs, + ...getSlots([ + 'content_top', + 'content_middle', + 'content_bottom', + ]), + }); +}; diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.twig b/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.twig new file mode 100644 index 000000000..7752ae5e7 --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/02-molecules/snippet/snippet.twig @@ -0,0 +1,108 @@ +{# +/** + * @file + * Snippet component. + * + * Variables: + * - content_top: [string] Content slot. + * - content_middle: [string] Content slot. + * - content_bottom: [string] Content slot for bottom of Card. + * - title: [string] Title. + * - summary: [string] Summary. + * - link: [object] Link object: + * - text: [string] Text. + * - url: [string] URL. + * - is_new_window: [boolean] Open link in a new window. + * - is_external: [boolean] Link is external or not. + * - tags: [array] Array of tags. + * - theme: [string] Theme: light, dark. + * - attributes: [string] Additional attributes. + * - modifier_class:[string] Additional classes. + */ +#} + +{% set with_link = link is not empty and link.url is defined and link.url is not empty %} +{% set theme_class = 'ct-theme-%s'|format(theme|default('light')) %} +{% set modifier_class = '%s %s'|format(theme_class, modifier_class|default('')) %} + +{% if title is not empty %} +
+ {% block content %} +
+ {% block content_top %} + {% if content_top is not empty %} +
+ {{ content_top }} +
+ {% endif %} + {% endblock %} + + {% block title %} + {% if title is not empty %} + {% set title_content %} + {% if with_link %} + {% include '@atoms/link/link.twig' with { + theme: theme, + text: title, + url: link.url, + is_new_window: link.is_new_window, + is_external: false, + modifier_class: 'ct-snippet__title__link', + } only %} + {% else %} + {{ title }} + {% endif %} + {% endset %} + + {% include '@atoms/heading/heading.twig' with { + content: title_content, + level: 4, + theme: theme, + modifier_class: 'ct-snippet__title', + } only %} + {% endif %} + {% endblock %} + + {% block content_middle %} + {% if content_middle is not empty %} +
+ {{ content_middle }} +
+ {% endif %} + {% endblock %} + + {% block summary %} + {% if summary is not empty %} + {% include '@atoms/paragraph/paragraph.twig' with { + theme: theme, + content: summary, + allow_html: true, + modifier_class: 'ct-snippet__summary', + } only %} + {% endif %} + {% endblock %} + + {% block content_tags %} + {% if tags or with_link %} +
+ {% if tags %} + {% include '@molecules/tag-list/tag-list.twig' with { + theme: theme, + tags: tags, + } only %} + {% endif %} +
+ {% endif %} + {% endblock %} + + {% block content_bottom %} + {% if content_bottom is not empty %} +
+ {{ content_bottom }} +
+ {% endif %} + {% endblock %} +
+ {% endblock %} +
+{% endif %} diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.stories.js b/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.stories.js index 114d83f5c..e5e2784d7 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.stories.js +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.stories.js @@ -1,11 +1,11 @@ // phpcs:ignoreFile import { - boolean, date, number, radios, text, + boolean, number, radios, text, } from '@storybook/addon-knobs'; import { demoImage, - randomFormElements, randomName, randomSentence, randomString, + randomFormElements, randomInt, randomName, randomSentence, randomString, randomTags, randomUrl, } from '../../00-base/base.utils'; @@ -13,12 +13,13 @@ import CivicThemeGroupFilter from '../../02-molecules/group-filter/group-filter.twig'; import CivicThemeSingleFilter from '../../02-molecules/single-filter/single-filter.twig'; - import CivicThemeItemGrid from '../../00-base/item-grid/item-grid.twig'; -import PromoCard from '../../02-molecules/promo-card/promo-card.twig'; +import PromoCard + from '../../02-molecules/promo-card/promo-card.twig'; import NavigationCard from '../../02-molecules/navigation-card/navigation-card.twig'; - +import Snippet + from '../../02-molecules/snippet/snippet.twig'; import CivicThemePagination from '../../02-molecules/pagination/pagination.twig'; import CivicThemeList from './list.twig'; @@ -33,7 +34,7 @@ export default { export const List = (knobTab) => { const generalKnobTab = typeof knobTab === 'string' ? knobTab : 'General'; const filtersKnobTab = 'Filters'; - const cardsKnobTab = 'Cards'; + const itemsKnobTab = 'List items'; const theme = radios( 'Theme', @@ -80,7 +81,7 @@ export const List = (knobTab) => { generalKnobs.modifier_class = text('Additional class', '', generalKnobTab); const showFilters = boolean('Show filters', true, generalKnobTab); - const showCards = boolean('Show cards', true, generalKnobTab); + const showItems = boolean('Show items', true, generalKnobTab); const showPager = boolean('Show pager', true, generalKnobTab); let filtersCount = 0; @@ -188,7 +189,8 @@ export const List = (knobTab) => { }); } - if (showCards) { + // Build items. + if (showItems) { const resultNumber = number( 'Number of results', 6, @@ -198,22 +200,23 @@ export const List = (knobTab) => { max: 48, step: 6, }, - cardsKnobTab, + itemsKnobTab, ); - // Create empty markup. + // Create markup for no results. if (resultNumber === 0) { generalKnobs.empty = '

No results found

'; } const viewItemAs = radios( - 'Card type', + 'Item type', { - 'Promo card': 'promo', - 'Navigation card': 'navigation', + 'Promo card': 'promo-card', + 'Navigation card': 'navigation-card', + Snippet: 'snippet', }, - 'promo', - cardsKnobTab, + 'promo-card', + itemsKnobTab, ); const itemsPerPage = number( @@ -225,55 +228,86 @@ export const List = (knobTab) => { max: 48, step: 6, }, - cardsKnobTab, + itemsKnobTab, ); - // Build results / rows. if (resultNumber > 0) { - const cardsProps = { - theme: radios( - 'Theme', - { - Light: 'light', - Dark: 'dark', - }, - 'light', - cardsKnobTab, - ), - title: text('Title', 'Event name which runs across two or three lines', cardsKnobTab), - date: date('Date', new Date(), cardsKnobTab), - summary: text('Summary', 'Card summary using body copy which can run across multiple lines. Recommend limiting this summary to three or four lines..', cardsKnobTab), - url: text('Link URL', 'http://example.com', cardsKnobTab), - image: boolean('With image', true, cardsKnobTab) ? { - url: demoImage(), - alt: 'Image alt text', - } : false, - size: 'large', - }; + const itemTheme = radios( + 'Theme', + { + Light: 'light', + Dark: 'dark', + }, + 'light', + itemsKnobTab, + ); + const itemWithImage = boolean('With image', true, itemsKnobTab); + const itemTags = randomTags(number( + 'Number of tags', + 2, + { + range: true, + min: 0, + max: 10, + step: 1, + }, + itemsKnobTab, + ), true); - cardsProps.date = new Date(cardsProps.date).toLocaleDateString('en-uk', { - year: 'numeric', - month: 'short', - day: 'numeric', - }); - const cards = []; - const cardsCount = itemsPerPage > resultNumber ? resultNumber : itemsPerPage; - const Card = viewItemAs === 'promo' ? PromoCard : NavigationCard; - for (let itr = 0; itr < cardsCount; itr += 1) { - cards.push(Card(cardsProps)); + let itemComponentInstance; + let columnCount; + switch (viewItemAs) { + case 'promo-card': + itemComponentInstance = PromoCard; + columnCount = 3; + break; + case 'navigation-card': + itemComponentInstance = NavigationCard; + columnCount = 2; + break; + case 'snippet': + itemComponentInstance = Snippet; + columnCount = 1; + break; + default: + itemComponentInstance = PromoCard; + } + + const items = []; + const itemsCount = itemsPerPage > resultNumber ? resultNumber : itemsPerPage; + for (let i = 0; i < itemsCount; i++) { + const itemProps = { + theme: itemTheme, + title: `Title ${randomSentence(randomInt(1, 5))}`, + date: new Date().toLocaleDateString('en-uk', { + year: 'numeric', + month: 'short', + day: 'numeric', + }), + summary: `Summary ${randomSentence(randomInt(15, 25))}`, + url: randomUrl(), + image: itemWithImage ? { + url: demoImage(), + alt: 'Image alt text', + } : false, + size: 'large', + tags: itemTags, + }; + + items.push(itemComponentInstance(itemProps)); } generalKnobs.rows = CivicThemeItemGrid({ theme, - items: cards, - column_count: viewItemAs === 'promo' ? 3 : 2, + items, + column_count: columnCount, fill_width: false, with_background: generalKnobs.with_background, }); - generalKnobs.results_count = boolean('With result count', true, generalKnobTab) ? `Showing ${cardsCount} of ${resultNumber}` : null; - generalKnobs.rows_above = boolean('With content above rows', true, generalKnobTab) ? 'Example content above rows' : null; - generalKnobs.rows_below = boolean('With content below rows', true, generalKnobTab) ? 'Example content below rows' : null; + generalKnobs.results_count = boolean('With result count', true, generalKnobTab) ? `Showing ${itemsCount} of ${resultNumber}` : null; + generalKnobs.rows_above = boolean('With content above rows', true, generalKnobTab) ? `Example content above rows ${randomSentence(randomInt(10, 75))}` : null; + generalKnobs.rows_below = boolean('With content below rows', true, generalKnobTab) ? `Example content below rows${randomSentence(randomInt(10, 75))}` : null; } } diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.twig b/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.twig index 36869e893..770a403a5 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.twig +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/list/list.twig @@ -125,7 +125,19 @@
- {{ rows_above }} + {% if rows_above is not iterable %} + {% set rows_above = [rows_above] %} + {% endif %} + {% for rows_above_row in rows_above %} + {% if rows_above_row is iterable %} + {{ rows_above_row }} + {% else %} + {% include '@atoms/paragraph/paragraph.twig' with { + content: rows_above_row, + theme: theme, + } only %} + {% endif %} + {% endfor %}
@@ -156,12 +168,20 @@ {% if rows_below %}
-
- {% include '@atoms/paragraph/paragraph.twig' with { - content: rows_below, - theme: theme, - modifier_class: 'ct-list__rows-below', - } only %} +
+ {% if rows_below is not iterable %} + {% set rows_below = [rows_below] %} + {% endif %} + {% for rows_below_row in rows_below %} + {% if rows_below_row is iterable %} + {{ rows_below_row }} + {% else %} + {% include '@atoms/paragraph/paragraph.twig' with { + content: rows_below_row, + theme: theme, + } only %} + {% endif %} + {% endfor %}
@@ -214,9 +234,9 @@
-
- {{ pager }} -
+
+ {{ pager }} +
diff --git a/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/slider/slider.scss b/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/slider/slider.scss index 50b3f6971..986fa945e 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/slider/slider.scss +++ b/docroot/themes/contrib/civictheme/civictheme_library/components/03-organisms/slider/slider.scss @@ -109,7 +109,7 @@ flex-wrap: nowrap; } - #{$root}--image-right { + &#{$root}--image-right { @include ct-breakpoint(m) { flex-direction: row-reverse; } diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/README.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/README.md deleted file mode 100644 index e3eff532a..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# CivicTheme component library - -The documentation for CivicTheme component library provides an introduction and -technical information for modifying the look and feel of components, -instructions for extending and modifying components and adding colors and style -changes. - -## Table of Contents - -1. [Variables](variables.md) -2. [Colors](colors.md) -3. [Grid](grid.md) -4. [Icons](icons.md) -5. [Components](components.md) diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/colors.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/colors.md deleted file mode 100644 index 5b9bf323a..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/colors.md +++ /dev/null @@ -1,78 +0,0 @@ -# Colors - -CivicTheme component library provides a robust and flexible colour design system -out of the box allowing extensive customisation. - -Colour system has a multi-level mapping approach: - -1. Standard colours -2. Colour variants based on derivatives of the standard colours with overridable - defaults. -3. Components' colours are mapped to colour variants. - -This allows to update the palette by customizing as little as standard colours -(level 1), or additionally customizing color variants (level 2), or customizing -per-component colours (level 3). - -## Colours and variants - -CivicTheme provides default colours and colour variants that can be _extended_ -and/or _replaced_ as needed. - -CivicTheme default colours are set in `$ct-default-colors` located in -[_variables.base.scss](../components/00-base/_variables.base.scss) - -```scss -$ct-default-colors: ( - 'primary': #00698F, - 'secondary': #61DAFF, - // ... -); -``` - -These colours can be overridden or extended via `$ct-colors` variable: - -```scss -$ct-colors: ( - 'primary': red, - 'secondary': green, - // ... -); -``` - -CivicTheme default colourvariants are set in `$ct-colors-variants-default` -located in [_variables.base.scss](../components/00-base/_variables.base.scss). -Note that colour variants have defaults set to tints, shades and tones of the -standard colours. - -```scss -// Default CivicTheme colors palette. -$ct-colors-variants-default: ( - 'primary-variant1': ct-color-tint(90, ct-color('primary')), - 'primary-variant2': ct-color-shade(15, ct-color('primary')), - // ... -); -``` - -These colour variants can be overridden or extended via `$ct-colors-variants` -variable: - -```scss -$ct-colors-variants: ( - // Override palette colors variant. - 'primary-variant1': lime, - // Define custom colors variant. - 'primary-variant6': brown, -); -``` - -Standard colours and colour variants are mapped to component element colours: - -```scss -// Using a third primary variant colour for Card heading color. -$ct-promo-card-light-heading-color: ct-color('primary', 3) !default; - -.ct-card__heading { - color: $ct-promo-card-light-heading-color; -} -``` diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/components.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/components.md deleted file mode 100644 index 63d38be49..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/components.md +++ /dev/null @@ -1,27 +0,0 @@ -# Components - -CivicTheme component library provides 50+ components out of the box with a -comprehensive system to modify, extend and create new components to fit your -needs. - -## Modifying components colours - -CivicTheme comes with an extensive variables and colour customisation system to -enable you to change the look and feel. -Please see sections on [colors](colors.md) and [variables](variables.md) for -instructions on how to modify components. - -## Extending components - -Many CivicTheme components come with extendable areas (slots) which can be used -by injecting HTML through pre-defined (empty) variables. - -For more advanced use-cases, it is also possible to extend components using -Twig blocks. - -## Key architecture concept - -Twig components created with the CivicTheme design system are designed to be -CMS-agnostic: they can be used by any application that can use twig templates. - -There are no CMS-specific mechanisms used in the Library. diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/grid.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/grid.md deleted file mode 100644 index 92c4363d5..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/grid.md +++ /dev/null @@ -1,124 +0,0 @@ -# Grid - -CivicTheme provides a customisable grid utilising a flex-based system. - -## Grid System - -CivicTheme component library grid system uses a series of containers, rows, and -columns to layout and align content. - -It’s built with flexbox and is fully responsive. - -The system is adapted from the [SASS flexbox grid](http://sassflexboxgrid.com/). - -### Example grid system markup - -```html - -
-
-
100% extra-small viewport / 50% large viewport
-
-
-
50% extra-small viewport / 33% medium viewport / 25% large viewport
-
50% extra-small viewport / 33% medium viewport / 25% large viewport
-
50% extra-small viewport / 33% medium viewport / 25% large viewport
-
50% extra-small viewport / 33% medium viewport / 25% large viewport
-
50% extra-small viewport / 33% medium viewport / 25% large viewport
-
-
-
100% at all viewports
-
-
-
-
-
-
Nested column is set within 50% width parent and so is 50% parent container width
-
-
-
-
-
- - -``` -## Breakpoints - -Breakpoints are defined as: - -```scss -$ct-breakpoints: ( - 'xs': 368px, - 's': 576px, - 'm': 768px, - 'l': 992px, - 'xl': 1280px, - 'xxl': 1440px -); -``` - -And can be used with the `ct-breakpoint()` mixin. - -```scss -div { - // Shared rules. - @include ct-breakpoint(s) { - // Mobile-and-up Small rules. - } - @include ct-breakpoint(m) { - // Mobile-and-up Medium rules. - } - @include ct-breakpoint(xl) { - // Mobile-and-up Extra large rules. - } -} -``` - -Breakpoints should be applied from smallest to largest, with all shared rules -defined before the breakpoints. - -All breakpoints use `min-width` only. Options for `min and max`, or `max` width -has been omitted to avoid over-complicating breakpoint logic and readability. - -## Containers and rows - -Containers are used to contain and center content to a max-width per breakpoint. -These are set via the `$ct-breakpoints` map. - -If no container is set then columns spread full-width - this is utilised in -CivicTheme Page without sidebar where we have full-width components and constraining -of content is done on the component level. - -Rows are wrappers for columns. Each column has horizontal padding (called a -gutter) for controlling the space between them. This padding is then -counteracted on the rows with negative margins to ensure the content in your -columns is visually aligned down the left side. - -## Columns - -There are 12 columns available per row, allowing you to create different -combinations of elements that span any number of columns. - -Column classes indicate the number of template columns to span (e.g., col-4 -spans four). Widths are set in percentages so you always have the same relative -sizing. - -## Nested Grids - -The grid system allows for nested grids. If a parent is 50% width (`col-xs-12`) -and a container, row and column is placed inside of this column then the -max-width of the child column (with `col-xs-12` class) is 50% of the parent. - -## Utilities - -CivicTheme component library come with a variety of -[Grid utility mixins](../components/00-base/mixins/_grid.scss) including -`offset`, `row-reverse`, `flex-column` among others. - -## Advanced - -For more advanced modification and overriding, the grid system internals are -defined within [_variables.base.scss](../components/00-base/_variables.base.scss), -which provides plenty of options to change the grid system, however, this is -not recommended as it can have significant changes to the design system which -may not be apparent at first. diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/icons.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/icons.md deleted file mode 100644 index d0330ddf2..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/icons.md +++ /dev/null @@ -1,31 +0,0 @@ -# Icons - -CivicTheme component library provides an expansive range of icons that are open -source and can be re-used within the child theme. - -** Important note: Icons must be manually included within the child theme to -be utilised** - -## Including icons within the child theme - -CivicTheme component library stores icons in the `civictheme_library/assets/icons` -directory split into subdirectory libraries. - -Copy and paste the icon svg file you wish to include in the starter kit from -their `civictheme_library/assets/icons/` icon -pack directory into their respective `/assets/icons/` -directory. - -** Important note icons in child themes must be in the corresponding -directory of CivicTheme library otherwise CivicTheme templates won't be able to reference -the required icon. ** - -We recommend not deleting any of the default icons found in the starter theme as -these are used by CivicTheme theme in the default templates. - -## Troubleshooting icons - -If you are experiencing a missing icon in your drupal webpage and the SVG tag is -not being rendered ie `div.ct-icon` does not have any inner SVG element - -this is caused by the icon svg missing from your child theme. Follow the above -process to include it. diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/images/.gitkeep b/docroot/themes/contrib/civictheme/civictheme_library/docs/images/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/typography.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/typography.md deleted file mode 100644 index 7f831c7eb..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/typography.md +++ /dev/null @@ -1,121 +0,0 @@ -# Typography - -CivicTheme component library provides a system for easily consuming and extending -typography mixins and variables. - -## Fonts - -The default font-families are defined in a map `$ct-fonts-default`: - -```scss -$ct-fonts-default: ( - 'primary': ( - 'family': '"Lexend", sans-serif', - 'types': ( - ( - 'uri': 'https://fonts.googleapis.com/css2?family=Lexend:wght@400;500;600;700&display=swap', - ), - ), - ), - // ... -); -``` - -This map can be extended using `$ct-fonts` map (fonts can be stored with -the library or linked to a remote location): - -```scss -$ct-fonts: ( - 'tertiary': ( - 'family': 'Roboto, sans-serif', - 'types': ( - ( - 'uri': ( - '#{$ct-assets-directory}fonts/Roboto/Roboto-Regular.ttf', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Regular.woff', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Regular.eot', - ), - ), - ( - 'italic': true, - 'uri': ( - '#{$ct-assets-directory}fonts/Roboto/Roboto-Italic.ttf', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Italic.woff', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Italic.eot', - ), - ), - ( - 'weight': 'bold', - 'uri': ( - '#{$ct-assets-directory}fonts/Roboto/Roboto-Bold.ttf', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Bold.woff', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Bold.eot', - ), - ), - ( - 'italic': true, - 'weight': 'bold', - 'uri': ( - '#{$ct-assets-directory}fonts/Roboto/Roboto-BoldItalic.ttf', - '#{$ct-assets-directory}fonts/Roboto/Roboto-BoldItalic.woff', - '#{$ct-assets-directory}fonts/Roboto/Roboto-BoldItalic.eot', - ), - ), - ( - 'weight': 300, - 'uri': ( - '#{$ct-assets-directory}fonts/Roboto/Roboto-Thin.ttf', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Thin.woff', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Thin.eot', - ), - ), - ( - 'weight': 700, - 'uri': ( - '#{$ct-assets-directory}fonts/Roboto/Roboto-Black.ttf', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Black.woff', - '#{$ct-assets-directory}fonts/Roboto/Roboto-Black.eot', - ), - ), - ), - ), - // ... -); -``` - -### Defining typography - -The default typography is set in a map `$ct-typography-default`: - -```scss -$ct-typography-default: ( - // Headings. - 'heading-1': ( - 'xxs': ($ct-font-base-size * 2, $ct-font-base-line-height * 2.5, 700, 'primary', -0.6px), - 'm': ($ct-font-base-size * 3, $ct-font-base-line-height * 3.75, 700, 'primary', -1px) - ), - // ... -); -``` - -This can be extended using `$ct-typography` map: - -```scss -$ct-typography: ( - 'body-extra-large': ( - 'xxs': ($ct-font-base-size * 2, $ct-font-base-line-height * 2.5, 700, 'primary', -0.6px), - 'm': ($ct-font-base-size * 3, $ct-font-base-line-height * 3.75, 700, 'primary', -1px) - ), -); -``` - -## Using typography - -Typography can be set for elements using the `ct-typography()` mixin -with a pre-defined mapping: - -```scss -h1 { - @include ct-typography('heading-l'); -} -``` diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/utilities.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/utilities.md deleted file mode 100644 index b5591e972..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/utilities.md +++ /dev/null @@ -1,33 +0,0 @@ -# Utilities - -CivicTheme component library provides a wide range of SASS utilities out of the -box. - -## Spacing - -Spacing (such as margin or padding) can be applied using the `ct-spacing()` -function. - -Spaces are defined in `$ct-spacing` list variable. - -```scss -div { - padding: ct-spacing(1) ct-spacing(2); - margin-bottom: ct-spacing(2); -} -``` - -## Element sizing - -All element sizes should be defined in `px` but converted to `rem` through -the `rem()` function. - -This provides a clear size conversion from the designs, while allowing for -whole-page scalability. The only exception where `px` should be used is on -single-pixel borders. - -```scss -div { - max-width: rem(450px); -} -``` diff --git a/docroot/themes/contrib/civictheme/civictheme_library/docs/variables.md b/docroot/themes/contrib/civictheme/civictheme_library/docs/variables.md deleted file mode 100644 index 3fdaffa00..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_library/docs/variables.md +++ /dev/null @@ -1,31 +0,0 @@ -# Variables. - -CivicTheme component library contains a large number of variables that modify all -areas of the theme. - -Variables allow for modification of: -- Theme and component specific colors -- Typography including line-height, font-size, font-weight and what fonts used -- Spacing -- Grid system - -Variables set within the CivicTheme component library has a corresponding variable -with the `!default` flag. -This allows consumer themes to override any the variable's color without needing -to change CivicTheme component library SASS. - -Copy and paste variables as needed into your child theme, modify their values, -and remove the !default flag. -If a variable has already been assigned in your child theme, then it won’t be -re-assigned by the default values in CivicTheme component library. - -## Where are the variables located - -Variables are split into 2 files: -- `_variables.base.scss` - base variables that are used to calculate other - variables' values. -- `_variables.components.scss` - variables that control the look of components. - -These are split into 2 files to allow changing base variables without the -need to provide component variables in custom themes (e.g., to override -primary color in child theme and have it propagate to components). diff --git a/docroot/themes/contrib/civictheme/civictheme_library/package.json b/docroot/themes/contrib/civictheme/civictheme_library/package.json index 1d2cfbcc3..adadb0d7a 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/package.json +++ b/docroot/themes/contrib/civictheme/civictheme_library/package.json @@ -2,9 +2,10 @@ "name": "civictheme", "version": "1.99.0", "private": true, - "description": "CivicTheme components library with Storybook integration.", + "description": "CivicTheme UI kit with Storybook integration.", "keywords": [ "component library", + "ui kit", "design system", "pattern library", "storybook", @@ -15,20 +16,20 @@ "repository": "https://github.com/salsadigitalauorg/civictheme_source.git", "license": "GPL-2.0", "engines": { - "node": ">=16" + "node": ">=18.14" }, "scripts": { - "build": "npm run dist && STORYBOOK_FULL=1 npm run build-storybook -- --quiet", - "build-storybook": "build-storybook -s .storybook/static", - "storybook": "start-storybook -s .storybook/static", - "storybook-full": "STORYBOOK_FULL=1 start-storybook -s .storybook/static", + "build": "npm run dist && export STORYBOOK_FULL=1 && npm run build-storybook -- --quiet", + "build-storybook": "export NODE_OPTIONS=--openssl-legacy-provider && build-storybook -s .storybook/static", + "storybook": "export NODE_OPTIONS=--openssl-legacy-provider && start-storybook -s .storybook/static", + "storybook-full": "export NODE_OPTIONS=--openssl-legacy-provider && export STORYBOOK_FULL=1 && start-storybook -s .storybook/static", "lint": "eslint ./components ./.storybook ./webpack && stylelint 'components/**/*.scss'", "lint:fix": "eslint ./components ./.storybook ./webpack --fix && stylelint 'components/**/*.scss' --fix", - "dist": "webpack --config ./webpack/webpack.prod.js", - "dist:dev": "webpack --config ./webpack/webpack.dev.js", + "dist": "export NODE_OPTIONS=--openssl-legacy-provider && webpack --config ./webpack/webpack.prod.js", + "dist:dev": "export NODE_OPTIONS=--openssl-legacy-provider && webpack --config ./webpack/webpack.dev.js", "test": "npm run test-storybook:ci", "test-storybook": "test-storybook", - "test-storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"npx http-server storybook-static --port 6006 --silent\" \"wait-on tcp:6006 && npm run test-storybook\"" + "test-storybook:ci": "concurrently --kill-others --success first --names \"SB,TEST\" --prefix-colors \"magenta,blue\" \"npx http-server storybook-static --port 6006 -a 127.0.0.1 --silent\" \"wait-on --timeout 10000 http://127.0.01:6006 && npm run test-storybook\"" }, "devDependencies": { "@babel/cli": "^7.15.4", @@ -41,7 +42,6 @@ "@storybook/addons": "^6.1.18", "@storybook/html": "^6.3.8", "@storybook/test-runner": "^0.9.1", - "@whitespace/storybook-addon-html": "^5.0.0", "addon-screen-reader": "^1.8.6", "babel-loader": "^8.2.2", "babel-plugin-syntax-dynamic-import": "^6.18.0", diff --git a/docroot/themes/contrib/civictheme/civictheme_library/scripts/extract_css_colors_to_csv.php b/docroot/themes/contrib/civictheme/civictheme_library/scripts/extract_css_colors_to_csv.php index 0b9ed972c..626cfc5e7 100644 --- a/docroot/themes/contrib/civictheme/civictheme_library/scripts/extract_css_colors_to_csv.php +++ b/docroot/themes/contrib/civictheme/civictheme_library/scripts/extract_css_colors_to_csv.php @@ -85,7 +85,7 @@ function print_help() { --help This help. Examples: - php ${script_name} path/to/variables.css + php $script_name path/to/variables.css EOF; print PHP_EOL; diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/.nvmrc b/docroot/themes/contrib/civictheme/civictheme_starter_kit/.nvmrc index b6a7d89c6..2ef343043 100644 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/.nvmrc +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/.nvmrc @@ -1 +1 @@ -16 +18.14 diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/addon-config.js b/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/addon-config.js index 24ea08937..f5dc22d05 100644 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/addon-config.js +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/addon-config.js @@ -19,7 +19,6 @@ exports.default = function () { config = [ ...config, ...[ - '@whitespace/storybook-addon-html', '@storybook/addon-a11y', ], ]; diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/main.js b/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/main.js index 92d7b4e4c..58ce8ddd9 100644 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/main.js +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/.storybook/main.js @@ -5,9 +5,9 @@ // Using Production version of the asset building Webpack configuration to // unify the building pipeline. +const path = require('path'); const { merge } = require('webpack-merge'); const webpack = require('webpack'); -const path = require('path'); const custom = require('../webpack/webpack.prod'); const scssVariables = require('./importer.scss_variables'); const iconUtils = require('../components_combined/00-base/icon/icon.utils'); diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/README.md b/docroot/themes/contrib/civictheme/civictheme_starter_kit/README.md index 5702c9523..0d4a697ba 100644 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/README.md +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/README.md @@ -1,8 +1,6 @@ # CivicTheme Starter Kit Drupal theme -Based on [CivicTheme](https://github.com/salsadigitalauorg/civictheme) Drupal theme. - -Learn more about developing with CivicTheme in [CivicTheme documentation](../../contrib/civictheme/docs/README.md). +Based on [CivicTheme](https://www.drupal.org/project/civictheme) Drupal theme. ## Compiling front-end assets. @@ -19,66 +17,10 @@ Learn more about developing with CivicTheme in [CivicTheme documentation](../../ npm run storybook -## Managing colors - -Website colors can be specified via: -- CSS code -- Color Selector -- CSS code with Color Selector overrides - -See `admin/appearance/settings/civictheme_starter_kit` for more details about colors and to -set colors via Color Selector. - -### Disabling Color Selector - -If colors managed in CSS code only, make sure that Color Selector is disabled - - ./vendor/bin/drush config-set civictheme_starter_kit.settings colors.use_color_selector 0 - -### Setting colors via Drush command - -Palette colors can be set in bulk via Drush command by providing Brand colors. - - # Enable Color Selector. - ./vendor/bin/drush config-set civictheme_starter_kit.settings colors.use_color_selector 1 - - # Enable Brand Colors. - ./vendor/bin/drush config-set civictheme_starter_kit.settings colors.use_brand_colors 1 - - # Set Brand Colors. - ./vendor/bin/drush --include=path/to/civictheme/src/Drush civictheme:set-brand-colors light_brand1 light_brand2 light_brand3 dark_brand1 dark_brand2 dark_brand3 - - # Purge dynamic assets cache. Will be rebuilt during next pageload. - ./vendor/bin/drush --include=docroot/themes/contrib/civictheme/src/Drush civictheme:clear-cache - -Example - - ./vendor/bin/drush -y config-set civictheme_starter_kit.settings colors.use_color_selector 1 - ./vendor/bin/drush -y config-set civictheme_starter_kit.settings colors.use_brand_colors 1 - ./vendor/bin/drush --include=docroot/themes/contrib/civictheme/src/Drush civictheme:set-brand-colors "#00698f" "#e6e9eb" "#121313" "#61daff" "#003a4f" "#00698f" - ./vendor/bin/drush --include=docroot/themes/contrib/civictheme/src/Drush civictheme:clear-cache - -## Updating site configuration after CivicTheme update - -1. Check that your custom theme has 2 files: - - `update_config.php` - script to update configurations. - - `civictheme_starter_kit.site_custom_configs.txt` - file with configuration - exclusions that are considered to be custom for the current site. - This file contains some generic defaults. - -2. Adjust custom configurations in `civictheme_starter_kit.site_custom_configs.txt`. - These configurations will not be compared against configurations provided by the CivicTheme. - Wildcards are supported. +## Updating sub-theme -3. Run the configuration update script: +See [Version update](https://docs.civictheme.io/drupal-theme/version-update) - php ./scripts/update_config.php \ - ../../contrib/civictheme/config \ - ../../../config/default \ - scripts/civictheme_starter_kit.site_custom_configs.txt +--- -4. Check updated configuration with a diff tool of your choice. -5. Resolve configuration overrides one-by-one. -6. Re-build local environment with updated configuration. -7. Check that everything looks good -8. If there are issues - repeat steps 2-7 until desired result is achieved. +For additional information, please refer to the [Documentation site](https://docs.civictheme.io/drupal-theme) diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo4.jpg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo4.jpg new file mode 100644 index 000000000..edf091efa Binary files /dev/null and b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo4.jpg differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo5.jpg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo5.jpg new file mode 100644 index 000000000..1d381355d Binary files /dev/null and b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo5.jpg differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo6.jpg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo6.jpg new file mode 100644 index 000000000..e40741fb3 Binary files /dev/null and b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/images/demo6.jpg differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_desktop.png b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_desktop.png deleted file mode 100644 index f8b5fc5b1..000000000 Binary files a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_desktop.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_desktop.svg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_desktop.svg new file mode 100644 index 000000000..e26fe177e --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_desktop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_mobile.png b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_mobile.png deleted file mode 100644 index f8b5fc5b1..000000000 Binary files a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_mobile.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_mobile.svg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_mobile.svg new file mode 100644 index 000000000..e26fe177e --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_dark_mobile.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_desktop.png b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_desktop.png deleted file mode 100644 index 8866583dc..000000000 Binary files a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_desktop.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_desktop.svg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_desktop.svg new file mode 100644 index 000000000..58d41db9d --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_desktop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_mobile.png b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_mobile.png deleted file mode 100644 index 8866583dc..000000000 Binary files a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_mobile.png and /dev/null differ diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_mobile.svg b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_mobile.svg new file mode 100644 index 000000000..58d41db9d --- /dev/null +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/assets/logos/logo_primary_light_mobile.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/civictheme_starter_kit.theme b/docroot/themes/contrib/civictheme/civictheme_starter_kit/civictheme_starter_kit.theme index 2c7663c01..f91f3ea00 100644 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/civictheme_starter_kit.theme +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/civictheme_starter_kit.theme @@ -5,8 +5,8 @@ * Template for CivicTheme Starter Kit theme. */ -use Drupal\views\ViewExecutable; use Drupal\paragraphs\Entity\Paragraph; +use Drupal\views\ViewExecutable; /** * Implements hook_civictheme_automated_list_preprocess_view_alter(). diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/package.json b/docroot/themes/contrib/civictheme/civictheme_starter_kit/package.json index 6b89da857..85bb7e474 100644 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/package.json +++ b/docroot/themes/contrib/civictheme/civictheme_starter_kit/package.json @@ -4,19 +4,19 @@ "description": "CivicTheme Starter Kit consumer Drupal sub-theme of CivicTheme Drupal theme", "license": "proprietary", "engines": { - "node": ">=16" + "node": ">=18.14" }, "scripts": { - "build": "npm run dist && STORYBOOK_FULL=1 npm run build-storybook -- --quiet && npm run export-colors && npm run add-lint-exclusions", - "build-storybook": "npm run gulp:build && build-storybook -s .storybook/static", - "storybook": "npm run gulp:build && concurrently --raw=true \"npm run gulp:watch\" \"start-storybook -s .storybook/static\"\n", - "storybook-full": "STORYBOOK_FULL=1 npm run gulp:build && concurrently --raw=true \"npm run gulp:watch\" \"start-storybook -s .storybook/static\"\n", + "build": "npm run dist && export STORYBOOK_FULL=1 && npm run build-storybook -- --quiet && npm run export-colors && npm run add-lint-exclusions", + "build-storybook": "export NODE_OPTIONS=--openssl-legacy-provider && npm run gulp:build && build-storybook -s .storybook/static", + "storybook": "export NODE_OPTIONS=--openssl-legacy-provider && npm run gulp:build && concurrently --raw=true \"npm run gulp:watch\" \"start-storybook -s .storybook/static\"\n", + "storybook-full": "export NODE_OPTIONS=--openssl-legacy-provider && export STORYBOOK_FULL=1 && npm run gulp:build && concurrently --raw=true \"npm run gulp:watch\" \"start-storybook -s .storybook/static\"\n", "gulp:build": "gulp", "gulp:watch": "gulp watch", "lint": "eslint ./components ./.storybook ./webpack && stylelint 'components/**/*.scss'", "lint:fix": "eslint ./components ./.storybook ./webpack --fix && stylelint 'components/**/*.scss' --fix", - "dist": "npm run gulp:build && webpack --config ./webpack/webpack.prod.js", - "dist:dev": "npm run gulp:build && webpack --config ./webpack/webpack.dev.js", + "dist": "export NODE_OPTIONS=--openssl-legacy-provider && npm run gulp:build && webpack --config ./webpack/webpack.prod.js", + "dist:dev": "export NODE_OPTIONS=--openssl-legacy-provider && npm run gulp:build && webpack --config ./webpack/webpack.dev.js", "export-colors": "php ../../../contrib/civictheme/civictheme_library/scripts/extract_css_colors_to_csv.php dist/styles.variables.css > dist/styles.variables.csv", "add-lint-exclusions": "php scripts/add_phpcs_exclusions.php storybook-static" }, @@ -32,7 +32,6 @@ "@storybook/addons": "^6.1.18", "@storybook/html": "^6.3.8", "@storybook/preset-scss": "^1.0.3", - "@whitespace/storybook-addon-html": "^5.0.0", "addon-screen-reader": "^1.8.6", "babel-loader": "^8.2.2", "babel-plugin-syntax-dynamic-import": "^6.18.0", diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/scripts/civictheme_starter_kit.site_custom_configs.txt b/docroot/themes/contrib/civictheme/civictheme_starter_kit/scripts/civictheme_starter_kit.site_custom_configs.txt deleted file mode 100644 index 1186189c5..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/scripts/civictheme_starter_kit.site_custom_configs.txt +++ /dev/null @@ -1,135 +0,0 @@ -*admin_toolbar* -*adminimal* -*civictheme_demo* -*seven* -coffee.configuration -config_devel.settings -config_ignore.settings -core.date_format.fallback -core.date_format.html_date -core.date_format.html_datetime -core.date_format.html_month -core.date_format.html_time -core.date_format.html_week -core.date_format.html_year -core.date_format.html_yearless_date -core.date_format.long -core.date_format.medium -core.date_format.short -core.entity_form_display.user.user.default -core.entity_form_mode.media.media_library -core.entity_form_mode.user.register -core.entity_view_mode.block.token -core.entity_view_mode.block_content.full -core.entity_view_mode.content_moderation_state.token -core.entity_view_mode.file.token -core.entity_view_mode.media.full -core.entity_view_mode.media.media_library -core.entity_view_mode.media.token -core.entity_view_mode.menu_link_content.token -core.entity_view_mode.node.full -core.entity_view_mode.node.rss -core.entity_view_mode.node.search_index -core.entity_view_mode.node.search_result -core.entity_view_mode.node.teaser -core.entity_view_mode.node.token -core.entity_view_mode.paragraph.preview -core.entity_view_mode.path_alias.token -core.entity_view_mode.shortcut.token -core.entity_view_mode.taxonomy_term.full -core.entity_view_mode.taxonomy_term.token -core.entity_view_mode.user.compact -core.entity_view_mode.user.full -core.entity_view_mode.user.token -core.extension -core.menu.static_menu_link_overrides -config_split.config_split* -dblog.settings -encrypt.settings -environment_indicator.settings -field.field.user.user.field_last_password_reset -field.field.user.user.field_password_expiration -field.field.user.user.field_pending_expire_sent -field.settings -field.storage.block_content.body -field.storage.node.body -field.storage.user.field_last_password_reset -field.storage.user.field_password_expiration -field.storage.user.field_pending_expire_sent -field_ui.settings -file.settings -filter.settings -hal.settings -honeypot.settings -image.settings -image.style.large -image.style.media_library -image.style.medium -image.style.thumbnail -image.style.wide -login_security.settings -media.settings -media_library.settings -menu_ui.settings -node.settings -*password_policy* -pathauto.settings -paragraphs.settings -rdf.mapping.user.user -seckit.settings -seven.settings -shield.settings -shortcut.set.default -simple_sitemap.custom_links.default -simple_sitemap.settings -simple_sitemap.sitemap.default -simple_sitemap.type.default_hreflang -system.action* -system.advisories -system.authorize -system.cron -system.date -system.diff -system.file -system.image.gd -system.image -system.logging -system.mail -system.maintenance -system.menu.account -system.menu.admin -system.menu.tools -system.performance -system.rss -system.site -system.theme.global -system.theme -taxonomy.settings -text.settings -tfa.settings -user.flood -user.mail -user.role.administrator -user.role.anonymous -user.role.authenticated -user.settings -views.settings -views.view.archive -views.view.block_content -views.view.content -views.view.content_recent -views.view.files -views.view.frontpage -views.view.media -views.view.media_library -views.view.moderated_content -views.view.taxonomy_term -views.view.user_admin_people -views.view.webform_submissions -views.view.who_s_new -views.view.who_s_online -views.view.watchdog -webform.settings -webform.webform.contact -webform.webform_options* -workflows.workflow.editorial diff --git a/docroot/themes/contrib/civictheme/civictheme_starter_kit/scripts/update_config.php b/docroot/themes/contrib/civictheme/civictheme_starter_kit/scripts/update_config.php deleted file mode 100755 index 23e42143d..000000000 --- a/docroot/themes/contrib/civictheme/civictheme_starter_kit/scripts/update_config.php +++ /dev/null @@ -1,464 +0,0 @@ - 4) { - print_help(); - - return EXIT_ERROR; - } - - $src_config_dir = trim($argv[1]) ?: ''; - if (empty($src_config_dir) || !is_readable($src_config_dir) || !is_dir($src_config_dir)) { - throw new \RuntimeException(sprintf('Source configuration directory %s is not readable.', $src_config_dir)); - } - - $dst_config_dir = trim($argv[2]) ?: 'config/default'; - if (empty($dst_config_dir) || !is_readable($dst_config_dir) || !is_dir($dst_config_dir)) { - throw new \RuntimeException(sprintf('Destination configuration directory %s is not readable.', $dst_config_dir)); - } - - // File with configuration exclusion. - // Entries in this file are used to consider the configuration as custom and - // will be unchanged. Other entries that are not in this file or a source - // config will be considered as obsolete and will be removed from the - // resulting config. - $config_exclude_file = $argv[3] ?? NULL; - if (!empty($config_exclude_file) && !is_readable($config_exclude_file)) { - throw new \RuntimeException(sprintf('Configuration exclusion file %s is not readable.', $config_exclude_file)); - } - - print "==> Started updating site config from $src_config_dir to $dst_config_dir." . PHP_EOL; - - print ' > Collecting source and destination configurations.' . PHP_EOL; - $src_configs = collect_configs($src_config_dir); - $dst_configs = collect_configs($dst_config_dir); - $excluded_configs = $config_exclude_file ? collect_excluded_configs($config_exclude_file, $dst_configs) : []; - - print ' > Calculating configuration differences.' . PHP_EOL; - print ' * Preserved (identical)' . PHP_EOL; - print ' # Preserved (excluded)' . PHP_EOL; - print ' + Added' . PHP_EOL; - print ' - Removed' . PHP_EOL; - print ' ^ Updated' . PHP_EOL; - print ' ----------------------------------------' . PHP_EOL; - $info = calc_config_diffs($src_configs, $dst_configs, $excluded_configs); - print ' ----------------------------------------' . PHP_EOL; - - print ' > Processing configuration files.' . PHP_EOL; - process_configs($dst_config_dir, $info); - - print PHP_EOL . "==> Finished updating site config in $dst_config_dir from $src_config_dir." . PHP_EOL; - print_footer($info); - - return EXIT_SUCCESS; -} - -/** - * Print help. - * - * @SuppressWarnings(PHPMD.UnusedLocalVariable) - */ -function print_help() { - $script_name = basename(__FILE__); - print << $path) { - $dst = $config_dir . DIRECTORY_SEPARATOR . $filename; - if (is_string($path)) { - copy($path, $dst); - } - elseif ($path === FALSE) { - unlink($dst); - } - } -} - -/** - * Compare contents of 2 YAML files. - * - * @SuppressWarnings(PHPMD.MissingImport) - */ -function yaml_files_are_identical($file1, $file2) { - $yaml = new Yaml(); - - $file1_yaml = $yaml->load($file1); - $file2_yaml = $yaml->load($file2); - - unset($file1_yaml['_core']); - unset($file2_yaml['_core']); - unset($file1_yaml['uuid']); - unset($file2_yaml['uuid']); - - ksortr($file1_yaml); - ksortr($file2_yaml); - - return json_encode($file1_yaml) == json_encode($file2_yaml); -} - -/** - * Print footer. - */ -function print_footer($info) { - $processed_num = count($info); - - $identical_num = count(array_filter($info, function ($v) { - return $v === TRUE; - })); - - $diff_num = count(array_filter($info, function ($v) { - return is_string($v); - })); - - $obsolete_num = count(array_filter($info, function ($v) { - return $v === FALSE; - })); - - print << '.*', '\?' => '.']; - - return preg_match("#^" . strtr(preg_quote($pattern, '#'), $replacements) . "$#i", $string); -} - -/** - * Recursively sort arrays by key. - */ -function ksortr(&$array) { - foreach ($array as &$value) { - if (is_array($value)) { - ksortr($value); - } - } - ksort($array); -} - -// Yaml loader class. -// @formatter:off -// phpcs:disable -// @see https://github.com/eriknyk/Yaml/blob/master/Yaml.php -// The MIT License -// -// Copyright (c) 2012 Erik Amaru Ortiz -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -/** - * @SuppressWarnings(PHPMD) - */ -class Yaml { const REMPTY = "\0\x0\x0\x0\x0"; public $settingDumpForceQuotes = false; public $settingUseSyckIsPossible = false; private $dumpIndent; private $dumpWordWrap; private $containsGroupAnchor = false; private $containsGroupAlias = false; private $path; private $result; private $LiteralPlaceHolder = "\137\x5f\x5f\131\101\x4d\114\137\114\x69\x74\x65\162\x61\154\x5f\102\154\157\x63\x6b\x5f\x5f\x5f"; private $SavedGroups = array(); private $indent; private $delayedPath = array(); public $nodeId; public function __construct($file = '') { if (!empty($file)) { $this->load($file); } } public function load($file) { return $this->loadWithSource($this->loadFromFile($file)); } public function loadString($yamlContent) { return $this->loadWithSource($this->loadFromString($yamlContent)); } public function loadFile($file) { return $this->load($file); } public function dump($array, $indent = false, $wordwrap = false) { if ($indent === false or !is_numeric($indent)) { $this->dumpIndent = 2; } else { $this->dumpIndent = $indent; } if ($wordwrap === false or !is_numeric($wordwrap)) { $this->dumpWordWrap = 40; } else { $this->dumpWordWrap = $wordwrap; } $string = "\x2d\55\x2d\xa"; if ($array) { $array = (array) $array; $previous_key = -1; foreach ($array as $key => $value) { if (!isset($first_key)) { $first_key = $key; } $string .= $this->yamlize($key, $value, 0, $previous_key, $first_key, $array); $previous_key = $key; } } return $string; } private function yamlize($key, $value, $indent, $previous_key = -1, $first_key = 0, $source_array = null) { if (is_array($value)) { if (empty($value)) { return $this->dumpNode($key, array(), $indent, $previous_key, $first_key, $source_array); } $string = $this->dumpNode($key, self::REMPTY, $indent, $previous_key, $first_key, $source_array); $indent += $this->dumpIndent; $string .= $this->yamlizeArray($value, $indent); } elseif (!is_array($value)) { $string = $this->dumpNode($key, $value, $indent, $previous_key, $first_key, $source_array); } return $string; } private function yamlizeArray($array, $indent) { if (is_array($array)) { $string = ''; $previous_key = -1; foreach ($array as $key => $value) { if (!isset($first_key)) { $first_key = $key; } $string .= $this->yamlize($key, $value, $indent, $previous_key, $first_key, $array); $previous_key = $key; } return $string; } else { return false; } } private function dumpNode($key, $value, $indent, $previous_key = -1, $first_key = 0, $source_array = null) { if (is_string($value) && (strpos($value, "\12") !== false || strpos($value, "\x3a\x20") !== false || strpos($value, "\x2d\x20") !== false || strpos($value, "\x2a") !== false || strpos($value, "\43") !== false || strpos($value, "\74") !== false || strpos($value, "\76") !== false || strpos($value, "\x20\40") !== false || strpos($value, "\x5b") !== false || strpos($value, "\x5d") !== false || strpos($value, "\173") !== false || strpos($value, "\x7d") !== false || strpos($value, "\x26") !== false || strpos($value, "\47") !== false || strpos($value, "\x21") === 0 || substr($value, -1, 1) == "\72")) { $value = $this->doLiteralBlock($value, $indent); } else { $value = $this->doFolding($value, $indent); } if ($value === array()) { $value = "\133\40\x5d"; } if (in_array($value, array("\164\162\165\x65", "\x54\122\125\x45", "\146\141\x6c\163\145", "\106\x41\114\x53\x45", "\171", "\131", "\156", "\116", "\x6e\x75\154\154", "\x4e\x55\114\114"), true)) { $value = $this->doLiteralBlock($value, $indent); } if (trim($value) != $value) { $value = $this->doLiteralBlock($value, $indent); } if (is_bool($value)) { $value = $value ? "\164\162\165\145" : "\146\x61\154\163\145"; } if ($value === null) { $value = "\x6e\x75\x6c\154"; } if ($value === "\x27" . self::REMPTY . "\47") { $value = null; } $spaces = str_repeat("\40", $indent); if (is_array($source_array) && array_keys($source_array) === range(0, count($source_array) - 1)) { $string = $spaces . "\55\x20" . $value . "\xa"; } else { if (strpos($key, "\x3a") !== false || strpos($key, "\x23") !== false) { $key = "\42" . $key . "\42"; } $string = rtrim($spaces . $key . "\72\x20" . $value) . "\12"; } return $string; } private function doLiteralBlock($value, $indent) { if ($value === "\xa") { return "\x5c\x6e"; } if (strpos($value, "\xa") === false && strpos($value, "\x27") === false) { return sprintf("\x27\45\x73\47", $value); } if (strpos($value, "\12") === false && strpos($value, "\42") === false) { return sprintf("\42\x25\x73\42", $value); } $exploded = explode("\12", $value); $newValue = "\174"; $indent += $this->dumpIndent; $spaces = str_repeat("\40", $indent); foreach ($exploded as $line) { $newValue .= "\12" . $spaces . $line; } return $newValue; } private function doFolding($value, $indent) { if ($this->dumpWordWrap !== 0 && is_string($value) && strlen($value) > $this->dumpWordWrap) { $indent += $this->dumpIndent; $indent = str_repeat("\40", $indent); $wrapped = wordwrap($value, $this->dumpWordWrap, "\12{$indent}"); $value = "\x3e\xa" . $indent . $wrapped; } else { if ($this->settingDumpForceQuotes && is_string($value) && $value !== self::REMPTY) { $value = "\42" . $value . "\x22"; } } return $value; } private function loadWithSource($Source) { if (empty($Source)) { return array(); } if ($this->settingUseSyckIsPossible && function_exists("\x73\171\143\153\137\154\157\141\144")) { $array = syck_load(implode('', $Source)); return is_array($array) ? $array : array(); } $this->path = array(); $this->result = array(); $cnt = count($Source); for ($i = 0; $i < $cnt; $i++) { $line = $Source[$i]; $this->indent = strlen($line) - strlen(ltrim($line)); $tempPath = $this->getParentPathByIndent($this->indent); $line = self::stripIndent($line, $this->indent); if (self::isComment($line)) { continue; } if (self::isEmpty($line)) { continue; } $this->path = $tempPath; $literalBlockStyle = self::startsLiteralBlock($line); if ($literalBlockStyle) { $line = rtrim($line, $literalBlockStyle . "\40\12"); $literalBlock = ''; $line .= $this->LiteralPlaceHolder; $literal_block_indent = strlen($Source[$i + 1]) - strlen(ltrim($Source[$i + 1])); while (++$i < $cnt && $this->literalBlockContinues($Source[$i], $this->indent)) { $literalBlock = $this->addLiteralLine($literalBlock, $Source[$i], $literalBlockStyle, $literal_block_indent); } $i--; } while (++$i < $cnt && self::greedilyNeedNextLine($line)) { $line = rtrim($line, "\40\12\x9\xd") . "\x20" . ltrim($Source[$i], "\x20\11"); } $i--; if (strpos($line, "\43")) { if (strpos($line, "\42") === false && strpos($line, "\x27") === false) { $line = preg_replace("\57\134\x73\x2b\43\x28\x2e\x2b\51\44\57", '', $line); } } $lineArray = $this->parseLine($line); if ($literalBlockStyle) { $lineArray = $this->revertLiteralPlaceHolder($lineArray, $literalBlock); } $this->addArray($lineArray, $this->indent); foreach ($this->delayedPath as $indent => $delayedPath) { $this->path[$indent] = $delayedPath; } $this->delayedPath = array(); } return $this->result; } private function loadFromFile($file) { if (!file_exists($file)) { throw new Exception("\105\162\162\157\x72\x3a\40\171\x61\x6d\154\x20\146\151\154\x65\x20\x64\x6f\145\x73\40\156\x6f\x74\x20\x65\x78\x69\x73\164\x3a\x20{$file}"); } return file($file); } private function loadFromString($input) { $lines = explode("\xa", $input); foreach ($lines as $k => $_) { $lines[$k] = rtrim($_, "\xd"); } return $lines; } private function parseLine($line) { if (!$line) { return array(); } $line = trim($line); if (!$line) { return array(); } $array = array(); $group = $this->nodeContainsGroup($line); if ($group) { $this->addGroup($line, $group); $line = $this->stripGroup($line, $group); } if ($this->startsMappedSequence($line)) { return $this->returnMappedSequence($line); } if ($this->startsMappedValue($line)) { return $this->returnMappedValue($line); } if ($this->isArrayElement($line)) { return $this->returnArrayElement($line); } if ($this->isPlainArray($line)) { return $this->returnPlainArray($line); } return $this->returnKeyValuePair($line); } private function toType($value) { if ($value === '') { return null; } $first_character = $value[0]; $last_character = substr($value, -1, 1); $is_quoted = false; do { if (!$value) { break; } if ($first_character != "\x22" && $first_character != "\x27") { break; } if ($last_character != "\42" && $last_character != "\x27") { break; } $is_quoted = true; } while (0); if ($is_quoted) { return strtr(substr($value, 1, -1), array("\134\42" => "\42", "\x27\47" => "\47", "\134\47" => "\47")); } if (strpos($value, "\40\43") !== false && !$is_quoted) { $value = preg_replace("\x2f\x5c\163\x2b\x23\x28\56\x2b\x29\x24\57", '', $value); } if (!$is_quoted) { $value = str_replace("\134\156", "\xa", $value); } if ($first_character == "\x5b" && $last_character == "\x5d") { $innerValue = trim(substr($value, 1, -1)); if ($innerValue === '') { return array(); } $explode = $this->inlineEscape($innerValue); $value = array(); foreach ($explode as $v) { $value[] = $this->toType($v); } return $value; } if (strpos($value, "\72\40") !== false && $first_character != "\173") { $array = explode("\72\x20", $value); $key = trim($array[0]); array_shift($array); $value = trim(implode("\72\40", $array)); $value = $this->toType($value); return array($key => $value); } if ($first_character == "\x7b" && $last_character == "\x7d") { $innerValue = trim(substr($value, 1, -1)); if ($innerValue === '') { return array(); } $explode = $this->inlineEscape($innerValue); $array = array(); foreach ($explode as $v) { $SubArr = $this->toType($v); if (empty($SubArr)) { continue; } if (is_array($SubArr)) { $array[key($SubArr)] = $SubArr[key($SubArr)]; continue; } $array[] = $SubArr; } return $array; } if ($value == "\156\x75\154\154" || $value == "\116\125\x4c\114" || $value == "\116\x75\x6c\x6c" || $value == '' || $value == "\176") { return null; } if (is_numeric($value) && preg_match("\x2f\136\50\x2d\x7c\51\x5b\x31\55\71\135\53\133\60\x2d\71\x5d\x2a\44\x2f", $value)) { $intvalue = (int) $value; if ($intvalue != PHP_INT_MAX) { $value = $intvalue; } return $value; } if (in_array($value, array("\164\x72\x75\x65", "\x6f\x6e", "\53", "\x79\145\x73", "\x79", "\124\162\x75\145", "\x54\122\x55\x45", "\x4f\x6e", "\117\116", "\131\105\x53", "\131\145\x73", "\131"))) { return true; } if (in_array(strtolower($value), array("\x66\x61\x6c\163\145", "\157\x66\146", "\55", "\x6e\157", "\x6e"))) { return false; } if (is_numeric($value)) { if ($value === "\60") { return 0; } if (rtrim($value, 0) === $value) { $value = (double) $value; } return $value; } return $value; } private function inlineEscape($inline) { $seqs = array(); $maps = array(); $saved_strings = array(); $regex = "\x2f\x28\77\x3a\50\x22\51\x7c\50\x3f\x3a\47\x29\51\x28\x28\x3f\50\x31\x29\133\136\42\135\53\174\133\x5e\x27\135\53\51\51\50\77\50\x31\x29\42\x7c\47\51\57"; if (preg_match_all($regex, $inline, $strings)) { $saved_strings = $strings[0]; $inline = preg_replace($regex, "\131\101\x4d\x4c\x53\164\x72\151\x6e\x67", $inline); } unset($regex); $i = 0; do { while (preg_match("\57\134\x5b\50\x5b\136\x7b\x7d\x5c\133\x5c\135\x5d\x2b\51\x5c\x5d\x2f\x55", $inline, $matchseqs)) { $seqs[] = $matchseqs[0]; $inline = preg_replace("\x2f\x5c\133\50\133\136\173\175\134\133\x5c\135\135\x2b\x29\134\135\x2f\125", "\131\x41\x4d\114\x53\145\x71" . (count($seqs) - 1) . "\163", $inline, 1); } while (preg_match("\x2f\x7b\50\133\136\134\x5b\134\135\173\x7d\x5d\53\x29\175\x2f\x55", $inline, $matchmaps)) { $maps[] = $matchmaps[0]; $inline = preg_replace("\x2f\x7b\50\x5b\136\x5c\x5b\x5c\135\x7b\175\135\x2b\x29\x7d\57\125", "\x59\x41\x4d\x4c\x4d\x61\x70" . (count($maps) - 1) . "\x73", $inline, 1); } if ($i++ >= 10) { break; } } while (strpos($inline, "\x5b") !== false || strpos($inline, "\x7b") !== false); $explode = explode("\x2c\x20", $inline); $stringi = 0; $i = 0; while (1) { if (!empty($seqs)) { foreach ($explode as $key => $value) { if (strpos($value, "\131\x41\x4d\114\123\145\x71") !== false) { foreach ($seqs as $seqk => $seq) { $explode[$key] = str_replace("\x59\101\115\x4c\x53\145\161" . $seqk . "\x73", $seq, $value); $value = $explode[$key]; } } } } if (!empty($maps)) { foreach ($explode as $key => $value) { if (strpos($value, "\131\x41\x4d\x4c\x4d\141\x70") !== false) { foreach ($maps as $mapk => $map) { $explode[$key] = str_replace("\131\101\115\114\x4d\x61\x70" . $mapk . "\163", $map, $value); $value = $explode[$key]; } } } } if (!empty($saved_strings)) { foreach ($explode as $key => $value) { while (strpos($value, "\131\x41\x4d\x4c\x53\x74\162\151\x6e\x67") !== false) { $explode[$key] = preg_replace("\57\x59\101\115\114\123\164\x72\151\156\x67\57", $saved_strings[$stringi], $value, 1); unset($saved_strings[$stringi]); ++$stringi; $value = $explode[$key]; } } } $finished = true; foreach ($explode as $key => $value) { if (strpos($value, "\x59\101\x4d\x4c\x53\145\x71") !== false) { $finished = false; break; } if (strpos($value, "\x59\x41\x4d\x4c\x4d\141\x70") !== false) { $finished = false; break; } if (strpos($value, "\131\101\115\114\x53\164\x72\151\x6e\x67") !== false) { $finished = false; break; } } if ($finished) { break; } $i++; if ($i > 10) { break; } } return $explode; } private function literalBlockContinues($line, $lineIndent) { if (!trim($line)) { return true; } if (strlen($line) - strlen(ltrim($line)) > $lineIndent) { return true; } return false; } private function referenceContentsByAlias($alias) { do { if (!isset($this->SavedGroups[$alias])) { echo "\x42\141\144\40\147\x72\157\165\160\40\x6e\141\x6d\145\72\40{$alias}\56"; break; } $groupPath = $this->SavedGroups[$alias]; $value = $this->result; foreach ($groupPath as $k) { $value = $value[$k]; } } while (false); return $value; } private function addArrayInline($array, $indent) { $CommonGroupPath = $this->path; if (empty($array)) { return false; } foreach ($array as $k => $_) { $this->addArray(array($k => $_), $indent); $this->path = $CommonGroupPath; } return true; } private function addArray($incoming_data, $incoming_indent) { if (count($incoming_data) > 1) { return $this->addArrayInline($incoming_data, $incoming_indent); } $key = key($incoming_data); $value = isset($incoming_data[$key]) ? $incoming_data[$key] : null; if ($key === "\137\137\x21\131\x41\x4d\x4c\x5a\145\162\157") { $key = "\x30"; } if ($incoming_indent == 0 && !$this->containsGroupAlias && !$this->containsGroupAnchor) { if ($key || $key === '' || $key === "\x30") { $this->result[$key] = $value; } else { $this->result[] = $value; end($this->result); $key = key($this->result); } $this->path[$incoming_indent] = $key; return; } $history = array(); $history[] = $_arr = $this->result; foreach ($this->path as $k) { $history[] = $_arr = $_arr[$k]; } if ($this->containsGroupAlias) { $value = $this->referenceContentsByAlias($this->containsGroupAlias); $this->containsGroupAlias = false; } if (is_string($key) && $key == "\74\74") { if (!is_array($_arr)) { $_arr = array(); } $_arr = array_merge($_arr, $value); } elseif ($key || $key === '' || $key === "\x30") { if (!is_array($_arr)) { $_arr = array($key => $value); } else { $_arr[$key] = $value; } } else { if (!is_array($_arr)) { $_arr = array($value); $key = 0; } else { $_arr[] = $value; end($_arr); $key = key($_arr); } } $reverse_path = array_reverse($this->path); $reverse_history = array_reverse($history); $reverse_history[0] = $_arr; $cnt = count($reverse_history) - 1; for ($i = 0; $i < $cnt; $i++) { $reverse_history[$i + 1][$reverse_path[$i]] = $reverse_history[$i]; } $this->result = $reverse_history[$cnt]; $this->path[$incoming_indent] = $key; if ($this->containsGroupAnchor) { $this->SavedGroups[$this->containsGroupAnchor] = $this->path; if (is_array($value)) { $k = key($value); if (!is_int($k)) { $this->SavedGroups[$this->containsGroupAnchor][$incoming_indent + 2] = $k; } } $this->containsGroupAnchor = false; } } private static function startsLiteralBlock($line) { $lastChar = substr(trim($line), -1); if ($lastChar != "\76" && $lastChar != "\x7c") { return false; } if ($lastChar == "\174") { return $lastChar; } if (preg_match("\43\x3c\56\52\x3f\76\44\x23", $line)) { return false; } return $lastChar; } private static function greedilyNeedNextLine($line) { $line = trim($line); if (!strlen($line)) { return false; } if (substr($line, -1, 1) == "\x5d") { return false; } if ($line[0] == "\x5b") { return true; } if (preg_match("\x23\136\x5b\x5e\x3a\135\53\x3f\72\134\x73\x2a\134\133\43", $line)) { return true; } return false; } private function addLiteralLine($literalBlock, $line, $literalBlockStyle, $indent = -1) { $line = self::stripIndent($line, $indent); if ($literalBlockStyle !== "\174") { $line = self::stripIndent($line); } $line = rtrim($line, "\15\12\x9\x20") . "\xa"; if ($literalBlockStyle == "\174") { return $literalBlock . $line; } if (strlen($line) == 0) { return rtrim($literalBlock, "\40") . "\xa"; } if ($line == "\12" && $literalBlockStyle == "\76") { return rtrim($literalBlock, "\40\x9") . "\12"; } if ($line != "\12") { $line = trim($line, "\15\xa\40") . "\x20"; } return $literalBlock . $line; } public function revertLiteralPlaceHolder($lineArray, $literalBlock) { foreach ($lineArray as $k => $_) { if (is_array($_)) { $lineArray[$k] = $this->revertLiteralPlaceHolder($_, $literalBlock); } elseif (substr($_, -1 * strlen($this->LiteralPlaceHolder)) == $this->LiteralPlaceHolder) { $lineArray[$k] = rtrim($literalBlock, "\40\15\xa"); } } return $lineArray; } private static function stripIndent($line, $indent = -1) { if ($indent == -1) { $indent = strlen($line) - strlen(ltrim($line)); } return substr($line, $indent); } private function getParentPathByIndent($indent) { if ($indent == 0) { return array(); } $linePath = $this->path; do { end($linePath); $lastIndentInParentPath = key($linePath); if ($indent <= $lastIndentInParentPath) { array_pop($linePath); } } while ($indent <= $lastIndentInParentPath); return $linePath; } private function clearBiggerPathValues($indent) { if ($indent == 0) { $this->path = array(); } if (empty($this->path)) { return true; } foreach ($this->path as $k => $_) { if ($k > $indent) { unset($this->path[$k]); } } return true; } private static function isComment($line) { if (!$line) { return false; } if ($line[0] == "\x23") { return true; } if (trim($line, "\x20\15\12\11") == "\x2d\55\55") { return true; } return false; } private static function isEmpty($line) { return trim($line) === ''; } private function isArrayElement($line) { if (!$line) { return false; } if ($line[0] != "\x2d") { return false; } if (strlen($line) > 3) { if (substr($line, 0, 3) == "\x2d\x2d\55") { return false; } } return true; } private function isHashElement($line) { return strpos($line, "\72"); } private function isLiteral($line) { if ($this->isArrayElement($line)) { return false; } if ($this->isHashElement($line)) { return false; } return true; } private static function unquote($value) { if (!$value) { return $value; } if (!is_string($value)) { return $value; } if ($value[0] == "\47") { return trim($value, "\x27"); } if ($value[0] == "\42") { return trim($value, "\42"); } return $value; } private function startsMappedSequence($line) { return $line[0] == "\55" && substr($line, -1, 1) == "\x3a"; } private function returnMappedSequence($line) { $array = array(); $key = self::unquote(trim(substr($line, 1, -1))); $array[$key] = array(); $this->delayedPath = array(strpos($line, $key) + $this->indent => $key); return array($array); } private function returnMappedValue($line) { $array = array(); $key = self::unquote(trim(substr($line, 0, -1))); $array[$key] = ''; return $array; } private function startsMappedValue($line) { return substr($line, -1, 1) == "\72"; } private function isPlainArray($line) { return $line[0] == "\x5b" && substr($line, -1, 1) == "\135"; } private function returnPlainArray($line) { return $this->toType($line); } private function returnKeyValuePair($line) { $array = array(); $key = ''; if (strpos($line, "\x3a")) { if (($line[0] == "\x22" || $line[0] == "\47") && preg_match("\x2f\136\50\x5b\x22\47\x5d\x28\x2e\x2a\x29\133\x22\47\x5d\x28\x5c\163\51\52\x3a\x29\x2f", $line, $matches)) { $value = trim(str_replace($matches[1], '', $line)); $key = $matches[2]; } else { $explode = explode("\72", $line); $key = trim($explode[0]); array_shift($explode); $value = trim(implode("\x3a", $explode)); } $value = $this->toType($value); if ($key === "\x30") { $key = "\x5f\x5f\x21\x59\x41\x4d\x4c\x5a\x65\162\x6f"; } $array[$key] = $value; } else { $array = array($line); } return $array; } private function returnArrayElement($line) { if (strlen($line) <= 1) { return array(array()); } $array = array(); $value = trim(substr($line, 1)); $value = $this->toType($value); $array[] = $value; return $array; } private function nodeContainsGroup($line) { $symbolsForReference = "\x41\55\172\x30\x2d\71\x5f\x5c\x2d"; if (strpos($line, "\46") === false && strpos($line, "\52") === false) { return false; } if ($line[0] == "\x26" && preg_match("\57\x5e\50\x26\x5b" . $symbolsForReference . "\x5d\53\x29\57", $line, $matches)) { return $matches[1]; } if ($line[0] == "\x2a" && preg_match("\x2f\x5e\x28\134\52\x5b" . $symbolsForReference . "\x5d\x2b\x29\x2f", $line, $matches)) { return $matches[1]; } if (preg_match("\x2f\50\46\133" . $symbolsForReference . "\x5d\x2b\51\x24\x2f", $line, $matches)) { return $matches[1]; } if (preg_match("\57\x28\x5c\x2a\133" . $symbolsForReference . "\x5d\x2b\x24\51\x2f", $line, $matches)) { return $matches[1]; } if (preg_match("\43\x5e\134\163\52\x3c\x3c\134\x73\52\x3a\x5c\x73\52\50\134\52\133\136\134\163\135\53\x29\x2e\x2a\x24\x23", $line, $matches)) { return $matches[1]; } return false; } private function addGroup($line, $group) { if ($group[0] == "\x26") { $this->containsGroupAnchor = substr($group, 1); } if ($group[0] == "\x2a") { $this->containsGroupAlias = substr($group, 1); } } private function stripGroup($line, $group) { $line = trim(str_replace($group, '', $line)); return $line; } } -// @formatter:on - -/** - * Show a verbose message. - */ -function verbose() { - if (getenv('SCRIPT_QUIET') != '1') { - print call_user_func_array('sprintf', func_get_args()) . PHP_EOL; - } -} - -// ////////////////////////////////////////////////////////////////////////// // -// ENTRYPOINT // -// ////////////////////////////////////////////////////////////////////////// // - -ini_set('display_errors', 1); - -if (PHP_SAPI != 'cli' || !empty($_SERVER['REMOTE_ADDR'])) { - die('This script can be only ran from the command line.'); -} - -// Custom error handler to catch errors based on set ERROR_LEVEL. -set_error_handler(function ($severity, $message, $file, $line) { - if (!(error_reporting() & $severity)) { - // This error code is not included in error_reporting. - return; - } - throw new ErrorException($message, 0, $severity, $file, $line); -}); - -// Allow to skip the script run. -if (getenv('SCRIPT_RUN_SKIP') != 1) { - try { - $code = main($argv, $argc); - if (is_null($code)) { - throw new \Exception('Script exited without providing an exit code.'); - } - exit($code); - } - catch (\ErrorException $exception) { - if ($exception->getSeverity() <= ERROR_LEVEL) { - print PHP_EOL . 'RUNTIME ERROR: ' . $exception->getMessage() . PHP_EOL; - exit($exception->getCode() == 0 ? EXIT_ERROR : $exception->getCode()); - } - } - catch (\Exception $exception) { - print PHP_EOL . 'ERROR: ' . $exception->getMessage() . PHP_EOL; - exit($exception->getCode() == 0 ? EXIT_ERROR : $exception->getCode()); - } -} diff --git a/docroot/themes/contrib/civictheme/composer.json b/docroot/themes/contrib/civictheme/composer.json index 4dc0f3e93..3e97092d8 100644 --- a/docroot/themes/contrib/civictheme/composer.json +++ b/docroot/themes/contrib/civictheme/composer.json @@ -1,5 +1,5 @@ { - "name": "salsadigitalauorg/civictheme", + "name": "drupal/civictheme", "description": "CivicTheme is a Drupal 9 component-based theme.", "type": "drupal-theme", "license": "GPL-2.0-or-later", @@ -10,8 +10,12 @@ }, "require": { "php": ">=8", - "drupal/components": "^2", + "drupal/ckeditor": "^1", + "drupal/components": "^2 || ^3@beta", "drupal/field_group": "^3.2", + "drupal/jquery_ui": "^1.6", + "drupal/jquery_ui_autocomplete": "^2", + "drupal/jquery_ui_menu": "^2", "drupal/layout_builder_restrictions": "^2.13", "drupal/linkit": "^6@beta", "drupal/menu_block": "^1.8", @@ -20,5 +24,8 @@ "drupal/redirect": "^1.8", "drupal/simple_sitemap": "^4.1", "drupal/webform": "^6.1" + }, + "suggest": { + "drupal/search_api": "Provides a framework for easily creating searches on any entity known to Drupal, using any kind of search engine." } } diff --git a/docroot/themes/contrib/civictheme/config/install/civictheme.settings.yml b/docroot/themes/contrib/civictheme/config/install/civictheme.settings.yml index 7ef523ded..e04afd0ac 100644 --- a/docroot/themes/contrib/civictheme/config/install/civictheme.settings.yml +++ b/docroot/themes/contrib/civictheme/config/install/civictheme.settings.yml @@ -9,14 +9,14 @@ components: primary: light: desktop: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_desktop.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_desktop.svg mobile: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_mobile.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_light_mobile.svg dark: desktop: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_desktop.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_desktop.svg mobile: - path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_mobile.png + path: themes/contrib/civictheme/dist/assets/logos/logo_primary_dark_mobile.svg secondary: light: desktop: @@ -75,25 +75,6 @@ colors: brand2: '#003a4f' brand3: '#00698f' palette: - dark: - heading: '#f7fdff' - body: '#e7f9ff' - background_light: '#0c4357' - background: '#003a4f' - background_dark: '#002837' - border_light: '#a5bac1' - border: '#194d60' - border_dark: '#002837' - interaction_text: '#003a4f' - interaction_background: '#61daff' - interaction_hover_text: '#002837' - interaction_hover_background: '#a0e8ff' - interaction_focus: '#8a5cd7' - highlight: '#00698f' - information: '#4dc4fd' - warning: '#e38444' - error: '#e85653' - success: '#14b0ae' light: heading: '#002a39' body: '#334349' @@ -113,5 +94,23 @@ colors: warning: '#c95100' error: '#ce3936' success: '#008482' -migration: - expose_metadata: false + dark: + heading: '#f7fdff' + body: '#e7f9ff' + background_light: '#0c4357' + background: '#003a4f' + background_dark: '#002837' + border_light: '#a5bac1' + border: '#194d60' + border_dark: '#002837' + interaction_text: '#003a4f' + interaction_background: '#61daff' + interaction_hover_text: '#002837' + interaction_hover_background: '#a0e8ff' + interaction_focus: '#8a5cd7' + highlight: '#00698f' + information: '#4dc4fd' + warning: '#e38444' + error: '#e85653' + success: '#14b0ae' +optouts: { } diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.block_content.civictheme_banner.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.block_content.civictheme_banner.default.yml index 3da0a9523..15aaffdd4 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.block_content.civictheme_banner.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.block_content.civictheme_banner.default.yml @@ -4,8 +4,8 @@ dependencies: config: - block_content.type.civictheme_banner - field.field.block_content.civictheme_banner.field_c_b_background_image + - field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode - field.field.block_content.civictheme_banner.field_c_b_banner_type - - field.field.block_content.civictheme_banner.field_c_b_blend_mode - field.field.block_content.civictheme_banner.field_c_b_featured_image - field.field.block_content.civictheme_banner.field_c_b_theme module: @@ -22,15 +22,15 @@ content: settings: media_types: { } third_party_settings: { } - field_c_b_banner_type: + field_c_b_banner_blend_mode: type: options_select - weight: 1 + weight: 4 region: content settings: { } third_party_settings: { } - field_c_b_blend_mode: + field_c_b_banner_type: type: options_select - weight: 4 + weight: 1 region: content settings: { } third_party_settings: { } diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_event.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_event.default.yml index dc688126b..06948ab44 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_event.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_event.default.yml @@ -112,7 +112,6 @@ third_party_settings: open: false description: '' required_fields: true - formatter: closed group_metadata: children: - field_c_n_topics diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_page.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_page.default.yml index 7212302c9..7565f05e8 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_page.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.node.civictheme_page.default.yml @@ -3,6 +3,7 @@ status: true dependencies: config: - field.field.node.civictheme_page.field_c_n_banner_background + - field.field.node.civictheme_page.field_c_n_banner_blend_mode - field.field.node.civictheme_page.field_c_n_banner_components - field.field.node.civictheme_page.field_c_n_banner_components_bott - field.field.node.civictheme_page.field_c_n_banner_featured_image @@ -10,7 +11,6 @@ dependencies: - field.field.node.civictheme_page.field_c_n_banner_theme - field.field.node.civictheme_page.field_c_n_banner_title - field.field.node.civictheme_page.field_c_n_banner_type - - field.field.node.civictheme_page.field_c_n_blend_mode - field.field.node.civictheme_page.field_c_n_components - field.field.node.civictheme_page.field_c_n_custom_last_updated - field.field.node.civictheme_page.field_c_n_hide_sidebar @@ -105,7 +105,7 @@ third_party_settings: group_banner_background: children: - field_c_n_banner_background - - field_c_n_blend_mode + - field_c_n_banner_blend_mode label: Background region: content parent_name: group_civictheme_banner @@ -151,7 +151,6 @@ third_party_settings: open: false description: '' required_fields: true - formatter: closed group_metadata: children: - field_c_n_topics @@ -186,6 +185,12 @@ content: settings: media_types: { } third_party_settings: { } + field_c_n_banner_blend_mode: + type: options_select + weight: 15 + region: content + settings: { } + third_party_settings: { } field_c_n_banner_components: type: paragraphs weight: 23 @@ -258,12 +263,6 @@ content: region: content settings: { } third_party_settings: { } - field_c_n_blend_mode: - type: options_select - weight: 15 - region: content - settings: { } - third_party_settings: { } field_c_n_components: type: paragraphs weight: 16 diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.paragraph.civictheme_snippet.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.paragraph.civictheme_snippet.default.yml new file mode 100644 index 000000000..cd0ea4567 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.paragraph.civictheme_snippet.default.yml @@ -0,0 +1,60 @@ +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.civictheme_snippet.field_c_p_link + - field.field.paragraph.civictheme_snippet.field_c_p_summary + - field.field.paragraph.civictheme_snippet.field_c_p_theme + - field.field.paragraph.civictheme_snippet.field_c_p_title + - field.field.paragraph.civictheme_snippet.field_c_p_topics + - paragraphs.paragraphs_type.civictheme_snippet + module: + - link +id: paragraph.civictheme_snippet.default +targetEntityType: paragraph +bundle: civictheme_snippet +mode: default +content: + field_c_p_link: + type: link_default + weight: 3 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: { } + field_c_p_summary: + type: string_textarea + weight: 1 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } + field_c_p_theme: + type: options_buttons + weight: 4 + region: content + settings: { } + third_party_settings: { } + field_c_p_title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + field_c_p_topics: + type: entity_reference_autocomplete + weight: 2 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.paragraph.civictheme_snippet_ref.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.paragraph.civictheme_snippet_ref.default.yml new file mode 100644 index 000000000..e1f294ee8 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_form_display.paragraph.civictheme_snippet_ref.default.yml @@ -0,0 +1,31 @@ +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.civictheme_snippet_ref.field_c_p_reference + - field.field.paragraph.civictheme_snippet_ref.field_c_p_theme + - paragraphs.paragraphs_type.civictheme_snippet_ref +id: paragraph.civictheme_snippet_ref.default +targetEntityType: paragraph +bundle: civictheme_snippet_ref +mode: default +content: + field_c_p_reference: + type: entity_reference_autocomplete + weight: 0 + region: content + settings: + match_operator: CONTAINS + match_limit: 10 + size: 60 + placeholder: '' + third_party_settings: { } + field_c_p_theme: + type: options_buttons + weight: 1 + region: content + settings: { } + third_party_settings: { } +hidden: + created: true + status: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.block_content.civictheme_banner.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.block_content.civictheme_banner.default.yml index 255ab8423..7db28367f 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.block_content.civictheme_banner.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.block_content.civictheme_banner.default.yml @@ -4,8 +4,8 @@ dependencies: config: - block_content.type.civictheme_banner - field.field.block_content.civictheme_banner.field_c_b_background_image + - field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode - field.field.block_content.civictheme_banner.field_c_b_banner_type - - field.field.block_content.civictheme_banner.field_c_b_blend_mode - field.field.block_content.civictheme_banner.field_c_b_featured_image - field.field.block_content.civictheme_banner.field_c_b_theme id: block_content.civictheme_banner.default @@ -23,7 +23,7 @@ content: weight: 0 region: content hidden: + field_c_b_banner_blend_mode: true field_c_b_banner_type: true - field_c_b_blend_mode: true field_c_b_featured_image: true field_c_b_theme: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_event.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_event.default.yml index cd5ce6ce4..27ae9c90e 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_event.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_event.default.yml @@ -99,8 +99,8 @@ third_party_settings: entity_view_mode_restriction: allowed_layouts: { } restricted_categories: { } - blacklisted_blocks: { } - whitelisted_blocks: { } + denylisted_blocks: { } + allowlisted_blocks: { } id: node.civictheme_event.default targetEntityType: node bundle: civictheme_event diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_navigation_card.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_navigation_card.yml index 46b39761a..ddcdeb0bc 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_navigation_card.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_navigation_card.yml @@ -4,6 +4,7 @@ dependencies: config: - core.entity_view_mode.node.civictheme_navigation_card - field.field.node.civictheme_page.field_c_n_banner_background + - field.field.node.civictheme_page.field_c_n_banner_blend_mode - field.field.node.civictheme_page.field_c_n_banner_components - field.field.node.civictheme_page.field_c_n_banner_components_bott - field.field.node.civictheme_page.field_c_n_banner_featured_image @@ -11,7 +12,6 @@ dependencies: - field.field.node.civictheme_page.field_c_n_banner_theme - field.field.node.civictheme_page.field_c_n_banner_title - field.field.node.civictheme_page.field_c_n_banner_type - - field.field.node.civictheme_page.field_c_n_blend_mode - field.field.node.civictheme_page.field_c_n_components - field.field.node.civictheme_page.field_c_n_custom_last_updated - field.field.node.civictheme_page.field_c_n_hide_sidebar @@ -53,6 +53,7 @@ content: region: content hidden: field_c_n_banner_background: true + field_c_n_banner_blend_mode: true field_c_n_banner_components: true field_c_n_banner_components_bott: true field_c_n_banner_featured_image: true @@ -60,7 +61,6 @@ hidden: field_c_n_banner_theme: true field_c_n_banner_title: true field_c_n_banner_type: true - field_c_n_blend_mode: true field_c_n_components: true field_c_n_custom_last_updated: true field_c_n_hide_sidebar: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_promo_card.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_promo_card.yml index 2f0efbe21..783dfbd10 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_promo_card.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_promo_card.yml @@ -4,6 +4,7 @@ dependencies: config: - core.entity_view_mode.node.civictheme_promo_card - field.field.node.civictheme_page.field_c_n_banner_background + - field.field.node.civictheme_page.field_c_n_banner_blend_mode - field.field.node.civictheme_page.field_c_n_banner_components - field.field.node.civictheme_page.field_c_n_banner_components_bott - field.field.node.civictheme_page.field_c_n_banner_featured_image @@ -11,7 +12,6 @@ dependencies: - field.field.node.civictheme_page.field_c_n_banner_theme - field.field.node.civictheme_page.field_c_n_banner_title - field.field.node.civictheme_page.field_c_n_banner_type - - field.field.node.civictheme_page.field_c_n_blend_mode - field.field.node.civictheme_page.field_c_n_components - field.field.node.civictheme_page.field_c_n_custom_last_updated - field.field.node.civictheme_page.field_c_n_hide_sidebar @@ -58,6 +58,7 @@ content: region: content hidden: field_c_n_banner_background: true + field_c_n_banner_blend_mode: true field_c_n_banner_components: true field_c_n_banner_components_bott: true field_c_n_banner_featured_image: true @@ -65,7 +66,6 @@ hidden: field_c_n_banner_theme: true field_c_n_banner_title: true field_c_n_banner_type: true - field_c_n_blend_mode: true field_c_n_components: true field_c_n_custom_last_updated: true field_c_n_hide_sidebar: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_slider_slide.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_slider_slide.yml index 7d527f79a..fd34b28d2 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_slider_slide.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.civictheme_slider_slide.yml @@ -4,6 +4,7 @@ dependencies: config: - core.entity_view_mode.node.civictheme_slider_slide - field.field.node.civictheme_page.field_c_n_banner_background + - field.field.node.civictheme_page.field_c_n_banner_blend_mode - field.field.node.civictheme_page.field_c_n_banner_components - field.field.node.civictheme_page.field_c_n_banner_components_bott - field.field.node.civictheme_page.field_c_n_banner_featured_image @@ -11,7 +12,6 @@ dependencies: - field.field.node.civictheme_page.field_c_n_banner_theme - field.field.node.civictheme_page.field_c_n_banner_title - field.field.node.civictheme_page.field_c_n_banner_type - - field.field.node.civictheme_page.field_c_n_blend_mode - field.field.node.civictheme_page.field_c_n_components - field.field.node.civictheme_page.field_c_n_custom_last_updated - field.field.node.civictheme_page.field_c_n_hide_sidebar @@ -54,6 +54,7 @@ content: region: content hidden: field_c_n_banner_background: true + field_c_n_banner_blend_mode: true field_c_n_banner_components: true field_c_n_banner_components_bott: true field_c_n_banner_featured_image: true @@ -61,7 +62,6 @@ hidden: field_c_n_banner_theme: true field_c_n_banner_title: true field_c_n_banner_type: true - field_c_n_blend_mode: true field_c_n_components: true field_c_n_custom_last_updated: true field_c_n_hide_sidebar: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.default.yml index 322889a73..93758f9cc 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.node.civictheme_page.default.yml @@ -3,6 +3,7 @@ status: true dependencies: config: - field.field.node.civictheme_page.field_c_n_banner_background + - field.field.node.civictheme_page.field_c_n_banner_blend_mode - field.field.node.civictheme_page.field_c_n_banner_components - field.field.node.civictheme_page.field_c_n_banner_components_bott - field.field.node.civictheme_page.field_c_n_banner_featured_image @@ -10,7 +11,6 @@ dependencies: - field.field.node.civictheme_page.field_c_n_banner_theme - field.field.node.civictheme_page.field_c_n_banner_title - field.field.node.civictheme_page.field_c_n_banner_type - - field.field.node.civictheme_page.field_c_n_blend_mode - field.field.node.civictheme_page.field_c_n_components - field.field.node.civictheme_page.field_c_n_custom_last_updated - field.field.node.civictheme_page.field_c_n_hide_sidebar @@ -88,8 +88,6 @@ third_party_settings: denylisted_blocks: { } allowlisted_blocks: { } restricted_categories: { } - blacklisted_blocks: { } - whitelisted_blocks: { } id: node.civictheme_page.default targetEntityType: node bundle: civictheme_page @@ -168,12 +166,12 @@ content: region: content hidden: field_c_n_banner_background: true + field_c_n_banner_blend_mode: true field_c_n_banner_components: true field_c_n_banner_components_bott: true field_c_n_banner_featured_image: true field_c_n_banner_theme: true field_c_n_banner_type: true - field_c_n_blend_mode: true field_c_n_hide_sidebar: true field_c_n_show_toc: true field_c_n_summary: true diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_navigation_card_ref.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_navigation_card_ref.default.yml index 5b8e0680b..ca742d658 100644 --- a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_navigation_card_ref.default.yml +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_navigation_card_ref.default.yml @@ -13,19 +13,19 @@ bundle: civictheme_navigation_card_ref mode: default content: field_c_p_reference: - weight: 1 + type: entity_reference_entity_view label: hidden settings: - view_mode: civictheme_navigation_card + view_mode: civictheme_snippet link: false third_party_settings: { } - type: entity_reference_entity_view + weight: 1 region: content field_c_p_theme: - weight: 0 + type: list_default label: hidden settings: { } third_party_settings: { } - type: list_default + weight: 0 region: content hidden: { } diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_snippet.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_snippet.default.yml new file mode 100644 index 000000000..aa26861f6 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_snippet.default.yml @@ -0,0 +1,61 @@ +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.civictheme_snippet.field_c_p_link + - field.field.paragraph.civictheme_snippet.field_c_p_summary + - field.field.paragraph.civictheme_snippet.field_c_p_theme + - field.field.paragraph.civictheme_snippet.field_c_p_title + - field.field.paragraph.civictheme_snippet.field_c_p_topics + - paragraphs.paragraphs_type.civictheme_snippet + module: + - link + - options +id: paragraph.civictheme_snippet.default +targetEntityType: paragraph +bundle: civictheme_snippet +mode: default +content: + field_c_p_link: + type: link + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: 3 + region: content + field_c_p_summary: + type: basic_string + label: hidden + settings: { } + third_party_settings: { } + weight: 2 + region: content + field_c_p_theme: + type: list_default + label: above + settings: { } + third_party_settings: { } + weight: 0 + region: content + field_c_p_title: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: { } + weight: 1 + region: content + field_c_p_topics: + type: entity_reference_label + label: hidden + settings: + link: true + third_party_settings: { } + weight: 4 + region: content +hidden: { } diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_snippet_ref.default.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_snippet_ref.default.yml new file mode 100644 index 000000000..89f2c387c --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_display.paragraph.civictheme_snippet_ref.default.yml @@ -0,0 +1,31 @@ +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.civictheme_snippet_ref.field_c_p_reference + - field.field.paragraph.civictheme_snippet_ref.field_c_p_theme + - paragraphs.paragraphs_type.civictheme_snippet_ref + module: + - options +id: paragraph.civictheme_snippet_ref.default +targetEntityType: paragraph +bundle: civictheme_snippet_ref +mode: default +content: + field_c_p_reference: + type: entity_reference_entity_view + label: hidden + settings: + view_mode: default + link: false + third_party_settings: { } + weight: 1 + region: content + field_c_p_theme: + type: list_default + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: { } diff --git a/docroot/themes/contrib/civictheme/config/install/core.entity_view_mode.node.civictheme_snippet.yml b/docroot/themes/contrib/civictheme/config/install/core.entity_view_mode.node.civictheme_snippet.yml new file mode 100644 index 000000000..5379c1796 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/core.entity_view_mode.node.civictheme_snippet.yml @@ -0,0 +1,9 @@ +langcode: en +status: true +dependencies: + module: + - node +id: node.civictheme_snippet +label: Snippet +targetEntityType: node +cache: true diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.block_content.civictheme_banner.field_c_b_blend_mode.yml b/docroot/themes/contrib/civictheme/config/install/field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode.yml similarity index 67% rename from docroot/themes/contrib/civictheme/config/install/field.field.block_content.civictheme_banner.field_c_b_blend_mode.yml rename to docroot/themes/contrib/civictheme/config/install/field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode.yml index 7e9cf2901..3d83cacaf 100644 --- a/docroot/themes/contrib/civictheme/config/install/field.field.block_content.civictheme_banner.field_c_b_blend_mode.yml +++ b/docroot/themes/contrib/civictheme/config/install/field.field.block_content.civictheme_banner.field_c_b_banner_blend_mode.yml @@ -3,11 +3,11 @@ status: true dependencies: config: - block_content.type.civictheme_banner - - field.storage.block_content.field_c_b_blend_mode + - field.storage.block_content.field_c_b_banner_blend_mode module: - options -id: block_content.civictheme_banner.field_c_b_blend_mode -field_name: field_c_b_blend_mode +id: block_content.civictheme_banner.field_c_b_banner_blend_mode +field_name: field_c_b_banner_blend_mode entity_type: block_content bundle: civictheme_banner label: 'Blend mode' diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.node.civictheme_page.field_c_n_blend_mode.yml b/docroot/themes/contrib/civictheme/config/install/field.field.node.civictheme_page.field_c_n_banner_blend_mode.yml similarity index 70% rename from docroot/themes/contrib/civictheme/config/install/field.field.node.civictheme_page.field_c_n_blend_mode.yml rename to docroot/themes/contrib/civictheme/config/install/field.field.node.civictheme_page.field_c_n_banner_blend_mode.yml index e5f5c2310..63d706b1c 100644 --- a/docroot/themes/contrib/civictheme/config/install/field.field.node.civictheme_page.field_c_n_blend_mode.yml +++ b/docroot/themes/contrib/civictheme/config/install/field.field.node.civictheme_page.field_c_n_banner_blend_mode.yml @@ -2,12 +2,12 @@ langcode: en status: true dependencies: config: - - field.storage.node.field_c_n_blend_mode + - field.storage.node.field_c_n_banner_blend_mode - node.type.civictheme_page module: - options -id: node.civictheme_page.field_c_n_blend_mode -field_name: field_c_n_blend_mode +id: node.civictheme_page.field_c_n_banner_blend_mode +field_name: field_c_n_banner_blend_mode entity_type: node bundle: civictheme_page label: 'Banner background blend mode' diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_manual_list.field_c_p_list_items.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_manual_list.field_c_p_list_items.yml index 406298848..141b2d72a 100644 --- a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_manual_list.field_c_p_list_items.yml +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_manual_list.field_c_p_list_items.yml @@ -12,6 +12,8 @@ dependencies: - paragraphs.paragraphs_type.civictheme_promo_card_ref - paragraphs.paragraphs_type.civictheme_publication_card - paragraphs.paragraphs_type.civictheme_service_card + - paragraphs.paragraphs_type.civictheme_snippet + - paragraphs.paragraphs_type.civictheme_snippet_ref - paragraphs.paragraphs_type.civictheme_subject_card - paragraphs.paragraphs_type.civictheme_subject_card_ref module: @@ -38,89 +40,100 @@ settings: civictheme_promo_card_ref: civictheme_promo_card_ref civictheme_publication_card: civictheme_publication_card civictheme_service_card: civictheme_service_card + civictheme_snippet: civictheme_snippet + civictheme_snippet_ref: civictheme_snippet_ref civictheme_subject_card: civictheme_subject_card civictheme_subject_card_ref: civictheme_subject_card_ref negate: 0 target_bundles_drag_drop: civictheme_accordion: - weight: 31 + weight: -61 enabled: false civictheme_accordion_panel: - weight: 32 + weight: -60 enabled: false civictheme_attachment: - weight: 33 + weight: -59 enabled: false civictheme_automated_list: - weight: 34 + weight: -58 enabled: false civictheme_callout: - weight: 35 + weight: -57 enabled: false - civictheme_manual_list: - weight: 41 + civictheme_campaign: + weight: -56 enabled: false civictheme_content: - weight: 37 + weight: -55 enabled: false civictheme_event_card: - weight: 38 + weight: -54 enabled: true civictheme_event_card_ref: - weight: 39 + weight: -53 enabled: true civictheme_iframe: - weight: 40 + weight: -52 + enabled: false + civictheme_manual_list: + weight: -51 enabled: false civictheme_map: - weight: 42 + weight: -50 enabled: false civictheme_navigation_card: - weight: 43 + weight: -49 enabled: true civictheme_navigation_card_ref: - weight: 44 + weight: -48 enabled: true civictheme_next_step: - weight: 45 + weight: -47 enabled: false civictheme_promo: - weight: 46 + weight: -46 enabled: false civictheme_promo_card: - weight: 47 + weight: -45 enabled: true civictheme_promo_card_ref: - weight: 48 + weight: -44 enabled: true civictheme_publication_card: - weight: 49 + weight: -43 enabled: true civictheme_quote: - weight: 51 + weight: -42 enabled: false civictheme_service_card: - weight: 52 + weight: -41 enabled: true civictheme_slider: - weight: 53 + weight: -40 enabled: false civictheme_slider_slide: - weight: 54 + weight: -39 enabled: false civictheme_slider_slide_ref: - weight: 55 + weight: -38 enabled: false + civictheme_snippet: + weight: -37 + enabled: true + civictheme_snippet_ref: + weight: -36 + enabled: true civictheme_social_icon: - weight: 56 + weight: -35 enabled: false civictheme_subject_card: - weight: 57 + weight: -34 enabled: true civictheme_subject_card_ref: - weight: 58 + weight: -33 enabled: true civictheme_webform: - weight: 60 + weight: -32 enabled: false field_type: entity_reference_revisions diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_link.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_link.yml new file mode 100644 index 000000000..999f30f26 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_link.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_link + - paragraphs.paragraphs_type.civictheme_snippet + module: + - link +id: paragraph.civictheme_snippet.field_c_p_link +field_name: field_c_p_link +entity_type: paragraph +bundle: civictheme_snippet +label: Link +description: '' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: + title: 0 + link_type: 17 +field_type: link diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_summary.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_summary.yml new file mode 100644 index 000000000..56343d5b1 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_summary.yml @@ -0,0 +1,18 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_summary + - paragraphs.paragraphs_type.civictheme_snippet +id: paragraph.civictheme_snippet.field_c_p_summary +field_name: field_c_p_summary +entity_type: paragraph +bundle: civictheme_snippet +label: Summary +description: '' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string_long diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_theme.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_theme.yml new file mode 100644 index 000000000..a3e543c22 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_theme.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_theme + - paragraphs.paragraphs_type.civictheme_snippet + module: + - options +id: paragraph.civictheme_snippet.field_c_p_theme +field_name: field_c_p_theme +entity_type: paragraph +bundle: civictheme_snippet +label: Theme +description: '' +required: true +translatable: true +default_value: + - + value: light +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_title.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_title.yml new file mode 100644 index 000000000..d58c5c816 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_title.yml @@ -0,0 +1,18 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_title + - paragraphs.paragraphs_type.civictheme_snippet +id: paragraph.civictheme_snippet.field_c_p_title +field_name: field_c_p_title +entity_type: paragraph +bundle: civictheme_snippet +label: Title +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_topics.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_topics.yml new file mode 100644 index 000000000..416f27d7b --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet.field_c_p_topics.yml @@ -0,0 +1,28 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_topics + - paragraphs.paragraphs_type.civictheme_snippet + - taxonomy.vocabulary.civictheme_topics +id: paragraph.civictheme_snippet.field_c_p_topics +field_name: field_c_p_topics +entity_type: paragraph +bundle: civictheme_snippet +label: Topics +description: '' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: + handler: 'default:taxonomy_term' + handler_settings: + target_bundles: + civictheme_topics: civictheme_topics + sort: + field: name + direction: asc + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet_ref.field_c_p_reference.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet_ref.field_c_p_reference.yml new file mode 100644 index 000000000..5e8f5c89f --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet_ref.field_c_p_reference.yml @@ -0,0 +1,30 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_reference + - node.type.civictheme_event + - node.type.civictheme_page + - paragraphs.paragraphs_type.civictheme_snippet_ref +id: paragraph.civictheme_snippet_ref.field_c_p_reference +field_name: field_c_p_reference +entity_type: paragraph +bundle: civictheme_snippet_ref +label: Reference +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: + handler: 'default:node' + handler_settings: + target_bundles: + civictheme_event: civictheme_event + civictheme_page: civictheme_page + sort: + field: _none + direction: ASC + auto_create: false + auto_create_bundle: civictheme_event +field_type: entity_reference diff --git a/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet_ref.field_c_p_theme.yml b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet_ref.field_c_p_theme.yml new file mode 100644 index 000000000..62b997874 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/field.field.paragraph.civictheme_snippet_ref.field_c_p_theme.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_c_p_theme + - paragraphs.paragraphs_type.civictheme_snippet_ref + module: + - options +id: paragraph.civictheme_snippet_ref.field_c_p_theme +field_name: field_c_p_theme +entity_type: paragraph +bundle: civictheme_snippet_ref +label: Theme +description: '' +required: true +translatable: true +default_value: + - + value: light +default_value_callback: '' +settings: { } +field_type: list_string diff --git a/docroot/themes/contrib/civictheme/config/install/field.storage.block_content.field_c_b_blend_mode.yml b/docroot/themes/contrib/civictheme/config/install/field.storage.block_content.field_c_b_banner_blend_mode.yml similarity index 92% rename from docroot/themes/contrib/civictheme/config/install/field.storage.block_content.field_c_b_blend_mode.yml rename to docroot/themes/contrib/civictheme/config/install/field.storage.block_content.field_c_b_banner_blend_mode.yml index 8c306a102..f4e7a7567 100644 --- a/docroot/themes/contrib/civictheme/config/install/field.storage.block_content.field_c_b_blend_mode.yml +++ b/docroot/themes/contrib/civictheme/config/install/field.storage.block_content.field_c_b_banner_blend_mode.yml @@ -4,8 +4,8 @@ dependencies: module: - block_content - options -id: block_content.field_c_b_blend_mode -field_name: field_c_b_blend_mode +id: block_content.field_c_b_banner_blend_mode +field_name: field_c_b_banner_blend_mode entity_type: block_content type: list_string settings: diff --git a/docroot/themes/contrib/civictheme/config/install/field.storage.node.field_c_n_blend_mode.yml b/docroot/themes/contrib/civictheme/config/install/field.storage.node.field_c_n_banner_blend_mode.yml similarity index 93% rename from docroot/themes/contrib/civictheme/config/install/field.storage.node.field_c_n_blend_mode.yml rename to docroot/themes/contrib/civictheme/config/install/field.storage.node.field_c_n_banner_blend_mode.yml index e1aa8727e..2a33b73be 100644 --- a/docroot/themes/contrib/civictheme/config/install/field.storage.node.field_c_n_blend_mode.yml +++ b/docroot/themes/contrib/civictheme/config/install/field.storage.node.field_c_n_banner_blend_mode.yml @@ -4,8 +4,8 @@ dependencies: module: - node - options -id: node.field_c_n_blend_mode -field_name: field_c_n_blend_mode +id: node.field_c_n_banner_blend_mode +field_name: field_c_n_banner_blend_mode entity_type: node type: list_string settings: diff --git a/docroot/themes/contrib/civictheme/config/install/field.storage.paragraph.field_c_p_list_item_view_as.yml b/docroot/themes/contrib/civictheme/config/install/field.storage.paragraph.field_c_p_list_item_view_as.yml index 92b718f55..20f1a8549 100644 --- a/docroot/themes/contrib/civictheme/config/install/field.storage.paragraph.field_c_p_list_item_view_as.yml +++ b/docroot/themes/contrib/civictheme/config/install/field.storage.paragraph.field_c_p_list_item_view_as.yml @@ -16,6 +16,9 @@ settings: - value: civictheme_navigation_card label: 'Navigation card' + - + value: civictheme_snippet + label: Snippet allowed_values_function: '' module: options locked: false diff --git a/docroot/themes/contrib/civictheme/config/install/paragraphs.paragraphs_type.civictheme_snippet.yml b/docroot/themes/contrib/civictheme/config/install/paragraphs.paragraphs_type.civictheme_snippet.yml new file mode 100644 index 000000000..1bf91ede5 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/paragraphs.paragraphs_type.civictheme_snippet.yml @@ -0,0 +1,9 @@ +langcode: en +status: true +dependencies: { } +id: civictheme_snippet +label: Snippet +icon_uuid: null +icon_default: null +description: '' +behavior_plugins: { } diff --git a/docroot/themes/contrib/civictheme/config/install/paragraphs.paragraphs_type.civictheme_snippet_ref.yml b/docroot/themes/contrib/civictheme/config/install/paragraphs.paragraphs_type.civictheme_snippet_ref.yml new file mode 100644 index 000000000..09158f8ec --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/install/paragraphs.paragraphs_type.civictheme_snippet_ref.yml @@ -0,0 +1,9 @@ +langcode: en +status: true +dependencies: { } +id: civictheme_snippet_ref +label: 'Snippet reference' +icon_uuid: null +icon_default: null +description: '' +behavior_plugins: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_1.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_1.yml index c9ca1037d..2f3b4c50e 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_1.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_1.yml @@ -16,15 +16,15 @@ plugin: 'menu_block:civictheme-footer' settings: id: 'menu_block:civictheme-footer' label: 'Footer menu 1' - label_display: visible + label_display: '' provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 1 expand_all_items: false parent: 'civictheme-footer:menu_link_content:8a251c00-43a4-42c4-b140-3f6b62bdc000' suggestion: civictheme_footer - label_type: fixed - label_link: false visibility: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_2.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_2.yml index 3b61560c3..174690839 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_2.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_2.yml @@ -16,15 +16,15 @@ plugin: 'menu_block:civictheme-footer' settings: id: 'menu_block:civictheme-footer' label: 'Footer menu 2' - label_display: visible + label_display: '' provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 1 expand_all_items: false parent: 'civictheme-footer:menu_link_content:8973fd39-dcfd-4607-a356-f9869a231804' suggestion: civictheme_footer - label_type: fixed - label_link: false visibility: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_3.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_3.yml index 80331cd13..7892a435b 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_3.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_3.yml @@ -16,15 +16,15 @@ plugin: 'menu_block:civictheme-footer' settings: id: 'menu_block:civictheme-footer' label: 'Footer menu 3' - label_display: visible + label_display: '' provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 1 expand_all_items: false parent: 'civictheme-footer:menu_link_content:49fb8cd6-a1cd-4a47-9b9a-db4685a5f9cd' suggestion: civictheme_footer - label_type: fixed - label_link: false visibility: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_4.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_4.yml index 4eb83e1e1..533f3007d 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_4.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_footer_menu_4.yml @@ -16,15 +16,15 @@ plugin: 'menu_block:civictheme-footer' settings: id: 'menu_block:civictheme-footer' label: 'Footer menu 4' - label_display: visible + label_display: '' provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 1 expand_all_items: false parent: 'civictheme-footer:menu_link_content:35be8705-b50e-4506-9a61-568ef0986318' suggestion: civictheme_footer - label_type: fixed - label_link: false visibility: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_primary_navigation.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_primary_navigation.yml index 595cb0bb7..09119cad3 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_primary_navigation.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_primary_navigation.yml @@ -20,11 +20,11 @@ settings: provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 3 expand_all_items: false parent: 'civictheme-primary-navigation:' suggestion: civictheme_primary_navigation - label_type: block - label_link: false visibility: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_secondary_navigation.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_secondary_navigation.yml index 1fc2da452..9f3838752 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_secondary_navigation.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_secondary_navigation.yml @@ -20,11 +20,11 @@ settings: provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 0 expand_all_items: false parent: 'civictheme-secondary-navigation:' suggestion: civictheme_secondary_navigation - label_type: block - label_link: false visibility: { } diff --git a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_side_navigation.yml b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_side_navigation.yml index a69fd137b..22ea1fd4f 100644 --- a/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_side_navigation.yml +++ b/docroot/themes/contrib/civictheme/config/optional/block.block.civictheme_side_navigation.yml @@ -5,6 +5,7 @@ dependencies: - system.menu.civictheme-primary-navigation module: - menu_block + - system theme: - civictheme id: civictheme_side_navigation @@ -16,15 +17,19 @@ plugin: 'menu_block:civictheme-primary-navigation' settings: id: 'menu_block:civictheme-primary-navigation' label: 'Side Navigation' - label_display: '' + label_display: '0' provider: menu_block follow: false follow_parent: child + label_link: false + label_type: block level: 1 depth: 3 expand_all_items: false parent: 'civictheme-primary-navigation:' suggestion: civictheme_primary_navigation - label_type: block - label_link: false -visibility: { } +visibility: + request_path: + id: request_path + negate: true + pages: /search diff --git a/docroot/themes/contrib/civictheme/config/optional/linkit.linkit_profile.civictheme.yml b/docroot/themes/contrib/civictheme/config/optional/linkit.linkit_profile.civictheme.yml index 48e2620e4..a325b153e 100644 --- a/docroot/themes/contrib/civictheme/config/optional/linkit.linkit_profile.civictheme.yml +++ b/docroot/themes/contrib/civictheme/config/optional/linkit.linkit_profile.civictheme.yml @@ -3,14 +3,13 @@ status: true dependencies: module: - node -id: civictheme label: CivicTheme +id: civictheme description: 'A CivicTheme Linkit profile' matchers: d6e543f1-e25c-410e-a212-00001f0439e2: - uuid: d6e543f1-e25c-410e-a212-00001f0439e2 id: 'entity:node' - weight: 0 + uuid: d6e543f1-e25c-410e-a212-00001f0439e2 settings: metadata: '[node:title]' bundles: @@ -20,10 +19,10 @@ matchers: substitution_type: canonical limit: 100 include_unpublished: false + weight: 0 730031d7-3db3-4e9b-b283-1662a1ebe8c4: - uuid: 730031d7-3db3-4e9b-b283-1662a1ebe8c4 id: 'entity:media' - weight: 0 + uuid: 730031d7-3db3-4e9b-b283-1662a1ebe8c4 settings: metadata: '[media:name]' bundles: @@ -31,3 +30,4 @@ matchers: group_by_bundle: false substitution_type: media limit: 100 + weight: 0 diff --git a/docroot/themes/contrib/civictheme/config/optional/search_api.index.civictheme_content.yml b/docroot/themes/contrib/civictheme/config/optional/search_api.index.civictheme_content.yml new file mode 100644 index 000000000..055911c83 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/optional/search_api.index.civictheme_content.yml @@ -0,0 +1,182 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_content + - field.storage.paragraph.field_c_p_list_items + - field.storage.paragraph.field_c_p_subtitle + - field.storage.paragraph.field_c_p_summary + - field.storage.paragraph.field_c_p_title + - field.storage.node.field_c_n_summary + - search_api.server.civictheme_database + module: + - paragraphs + - node + - search_api +id: civictheme_content +name: Content +description: '' +read_only: false +field_settings: + field_c_n_summary: + label: Summary + datasource_id: 'entity:node' + property_path: field_c_n_summary + type: text + dependencies: + config: + - field.storage.node.field_c_n_summary + field_c_p_content: + label: 'Components » Paragraph » Content » Processed text' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_content:processed' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_content + module: + - paragraphs + field_c_p_summary: + label: 'Components » Paragraph » Summary' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_summary' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_summary + module: + - paragraphs + field_c_p_title: + label: 'Components » Paragraph » Title' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_title' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_title + module: + - paragraphs + manual_list_items_field_c_p_content: + label: 'Components » Paragraph » List items » Paragraph » Content » Processed text' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_list_items:entity:field_c_p_content:processed' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_content + - field.storage.paragraph.field_c_p_list_items + module: + - paragraphs + manual_list_items_field_c_p_subtitle: + label: 'Components » Paragraph » List items » Paragraph » Subtitle' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_list_items:entity:field_c_p_subtitle' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_list_items + - field.storage.paragraph.field_c_p_subtitle + module: + - paragraphs + manual_list_items_field_c_p_summary: + label: 'Components » Paragraph » List items » Paragraph » Summary' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_list_items:entity:field_c_p_summary' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_list_items + - field.storage.paragraph.field_c_p_summary + module: + - paragraphs + manual_list_items_field_c_p_title: + label: 'Components » Paragraph » List items » Paragraph » Title' + datasource_id: 'entity:node' + property_path: 'field_c_n_components:entity:field_c_p_list_items:entity:field_c_p_title' + type: text + dependencies: + config: + - field.storage.node.field_c_n_components + - field.storage.paragraph.field_c_p_list_items + - field.storage.paragraph.field_c_p_title + module: + - paragraphs + node_grants: + label: 'Node access information' + property_path: search_api_node_grants + type: string + indexed_locked: true + type_locked: true + hidden: true + status: + label: status + datasource_id: 'entity:node' + property_path: status + type: boolean + indexed_locked: true + type_locked: true + dependencies: + module: + - node + title: + label: Title + datasource_id: 'entity:node' + property_path: title + type: text + dependencies: + module: + - node + uid: + label: uid + datasource_id: 'entity:node' + property_path: uid + type: integer + indexed_locked: true + type_locked: true + dependencies: + module: + - node +datasource_settings: + 'entity:node': + bundles: + default: true + selected: + - civictheme_alert + languages: + default: true + selected: { } +processor_settings: + add_url: { } + aggregated_field: { } + content_access: + weights: + preprocess_query: -30 + entity_type: { } + ignorecase: + weights: + preprocess_index: -20 + preprocess_query: -20 + all_fields: false + fields: + - field_c_n_summary + - field_c_p_content + - field_c_p_summary + - field_c_p_title + - title + language_with_fallback: { } + rendered_item: { } +tracker_settings: + default: + indexing_order: fifo +options: + cron_limit: 50 + index_directly: true + track_changes_in_references: true +server: civictheme_database diff --git a/docroot/themes/contrib/civictheme/config/optional/search_api.server.civictheme_database.yml b/docroot/themes/contrib/civictheme/config/optional/search_api.server.civictheme_database.yml new file mode 100644 index 000000000..77fa096ae --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/optional/search_api.server.civictheme_database.yml @@ -0,0 +1,13 @@ +langcode: en +status: true +dependencies: + module: + - search_api_db +id: civictheme_database +name: Database +description: '' +backend: search_api_db +backend_config: + database: 'default:default' + min_chars: 1 + matching: words diff --git a/docroot/themes/contrib/civictheme/config/optional/search_api.settings.yml b/docroot/themes/contrib/civictheme/config/optional/search_api.settings.yml new file mode 100644 index 000000000..12b6db3a0 --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/optional/search_api.settings.yml @@ -0,0 +1,26 @@ +default_cron_limit: 50 +cron_worker_runtime: 15 +default_tracker: default +tracking_page_size: 100 +boost_factors: + - !!float 0 + - 0.1 + - 0.2 + - 0.3 + - 0.5 + - 0.6 + - 0.7 + - 0.8 + - 0.9 + - !!float 1 + - 1.1 + - 1.2 + - 1.3 + - 1.4 + - 1.5 + - !!float 2 + - !!float 3 + - !!float 5 + - !!float 8 + - !!float 13 + - !!float 21 diff --git a/docroot/themes/contrib/civictheme/config/optional/search_api_db.settings.yml b/docroot/themes/contrib/civictheme/config/optional/search_api_db.settings.yml new file mode 100644 index 000000000..d2f16c17d --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/optional/search_api_db.settings.yml @@ -0,0 +1 @@ +autocomplete_max_occurrences: 0.9 diff --git a/docroot/themes/contrib/civictheme/config/optional/views.view.civictheme_search.yml b/docroot/themes/contrib/civictheme/config/optional/views.view.civictheme_search.yml new file mode 100644 index 000000000..9f318442d --- /dev/null +++ b/docroot/themes/contrib/civictheme/config/optional/views.view.civictheme_search.yml @@ -0,0 +1,247 @@ +langcode: en +status: true +dependencies: + config: + - search_api.index.civictheme_content + module: + - search_api +id: civictheme_search +label: Search +module: views +description: '' +tag: '' +base_table: search_api_index_civictheme_content +base_field: search_api_id +display: + default: + id: default + display_title: Default + display_plugin: default + position: 0 + display_options: + title: Search + fields: + search_api_id: + id: search_api_id + table: search_api_index_civictheme_content + field: search_api_id + relationship: none + group_type: group + admin_label: '' + entity_type: null + entity_field: null + plugin_id: standard + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + pager: + type: full + options: + offset: 0 + items_per_page: 25 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + first: '« First' + last: 'Last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + exposed_form: + type: basic + options: + submit_button: Search + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: none + options: { } + cache: + type: none + options: { } + empty: + result: + id: result + table: views + field: result + relationship: none + group_type: group + admin_label: '' + plugin_id: result + empty: true + content: 'No results found for your search. Please try again with some different keywords.' + sorts: + search_api_relevance: + id: search_api_relevance + table: search_api_index_civictheme_content + field: search_api_relevance + relationship: none + group_type: group + admin_label: '' + plugin_id: search_api + order: ASC + expose: + label: '' + field_identifier: '' + exposed: false + arguments: { } + filters: + search_api_fulltext: + id: search_api_fulltext + table: search_api_index_civictheme_content + field: search_api_fulltext + relationship: none + group_type: group + admin_label: '' + plugin_id: search_api_fulltext + operator: or + value: '' + group: 1 + exposed: true + expose: + operator_id: search_api_fulltext_op + label: Search + description: '' + use_operator: false + operator: search_api_fulltext_op + operator_limit_selection: false + operator_list: { } + identifier: keywords + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + civictheme_content_author: '0' + civictheme_content_approver: '0' + civictheme_site_administrator: '0' + anonymous: '0' + administrator: '0' + expose_fields: false + placeholder: '' + searched_fields_id: search_api_fulltext_searched_fields + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + parse_mode: terms + min_length: null + fields: { } + filter_groups: + operator: AND + groups: + 1: AND + style: + type: grid + options: + uses_fields: false + columns: 1 + automatic_width: true + alignment: horizontal + row_class_custom: '' + row_class_default: true + col_class_custom: '' + col_class_default: true + row: + type: search_api + options: + view_modes: + 'entity:node': + civictheme_event: civictheme_snippet + civictheme_page: civictheme_snippet + query: + type: search_api_query + options: + bypass_access: false + skip_access: false + preserve_facet_query_args: false + query_tags: { } + relationships: { } + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + tags: + - 'config:search_api.index.civictheme_content' + - 'search_api_list:civictheme_content' + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + path: search + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_interface' + - url + - url.query_args + - 'user.node_grants:view' + tags: + - 'config:search_api.index.civictheme_content' + - 'search_api_list:civictheme_content' diff --git a/docroot/themes/contrib/civictheme/config/schema/civictheme.schema.yml b/docroot/themes/contrib/civictheme/config/schema/civictheme.schema.yml index 5c86df1c4..6c0f44552 100644 --- a/docroot/themes/contrib/civictheme/config/schema/civictheme.schema.yml +++ b/docroot/themes/contrib/civictheme/config/schema/civictheme.schema.yml @@ -92,6 +92,9 @@ civictheme.settings: path: label: Path type: string + image_alt: + label: 'Logo image "alt" text' + type: string header: type: mapping label: 'Header settings' @@ -249,7 +252,7 @@ civictheme.settings: type: mapping label: 'Palette colors' mapping: - theme: + light: type: mapping label: Light mapping: @@ -365,10 +368,6 @@ civictheme.settings: success: label: Success type: string - migration: + optouts: type: mapping - label: Migration - mapping: - expose_metadata: - label: 'Expose migration metadata' - type: boolean + label: 'Opt-out flags' diff --git a/docroot/themes/contrib/civictheme/docs/README.md b/docroot/themes/contrib/civictheme/docs/README.md deleted file mode 100644 index 2be8afece..000000000 --- a/docroot/themes/contrib/civictheme/docs/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# CivicTheme Drupal theme documentation - -> This is still work-in-progress and will be updated to include more information. - -The CivicTheme theme technical documentation provide information on how to: -- connect the component library to Drupal -- preprocess variables for new components -- extend and modify templates within Drupal -- organise components in the Drupal theme. - -## Table of Contents - -1. [Namespaces](namespaces.md) -2. [Templates](templates.md) -3. [Assets](assets.md) - -To know more about working with CivicTheme component library please see -[dedicated documentation](../civictheme_library/docs/README.md). diff --git a/docroot/themes/contrib/civictheme/docs/assets.md b/docroot/themes/contrib/civictheme/docs/assets.md deleted file mode 100644 index d4ada60a8..000000000 --- a/docroot/themes/contrib/civictheme/docs/assets.md +++ /dev/null @@ -1,25 +0,0 @@ -# Assets - -Drupal-specific JS/CSS libraries can be provided for within the `civictheme/assets` -directory. Look at `civictheme/assets` for examples. - -## Installing the required JS libraries - - npm install - -## Building the theme assets - - npm run build - -## Linting the JS and CSS - - npm run lint - -## Running Storybook - - npm run storybook - -## Icons - -See [Icons](../civictheme_library/docs/icons.md) for an introduction to creating your -theme's icon library. diff --git a/docroot/themes/contrib/civictheme/docs/features.md b/docroot/themes/contrib/civictheme/docs/features.md deleted file mode 100644 index 2f2501c7f..000000000 --- a/docroot/themes/contrib/civictheme/docs/features.md +++ /dev/null @@ -1,51 +0,0 @@ -# Drupal Features - -## Layout Builder - -CivicTheme provides two base layouts: -- Edge-to-edge layout -- Contained layout - -`Edge-to-edge` layout provides landing page style where the backgrounds of the -component extends the full width of the browser window. If there is a sidebar -- the content becomes constrained automatically. - -`Contained` layout provides a constraint on container width and is used in more -traditional style pages. - -These layouts can be built upon and are defined in the `civictheme.info.yml` and the -twig templates are located in `../civictheme_library/components/03-organisms/content` -directory. - -## Views - -CivicTheme provides Views integration. - -### CivicTheme Automated list component - -Listing component allows editors to build lists of contents and place them -anywhere on the page as a component. - -This is achieved by providing a `civictheme_automated_list` paragraph with field values -passed to a preprocessing function that is mapped to a pre-configured -`civictheme_automated_list` view. - -The view provides configurations via paragraph to a view allowing content type -restrictions, show / hide pagination, altering the number of items and filter -configuration options. - -It is possible to replace the default `civictheme_automated_list` view with a more custom -one required for a specific site via `hook_civictheme_automated_list_view_name_alter()` (see -[civictheme.api.php](../civictheme.api.php) for details). - -CivicTheme also provides support for filters in an exposed form. For views with only -1 exposed filter, `Basic Filter` component (tag based) is enabled, -but as soon as there is more than one exposed filter - the Large Filter -component (with dropdown filters) is enabled automatically. - -## Webform integration - -CivicTheme provides integration with basic webform form elements. - -More advanced composite components are not supported yet and we welcome -contributions extending this support. diff --git a/docroot/themes/contrib/civictheme/docs/images/.gitkeep b/docroot/themes/contrib/civictheme/docs/images/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docroot/themes/contrib/civictheme/docs/namespaces.md b/docroot/themes/contrib/civictheme/docs/namespaces.md deleted file mode 100644 index 7a57ccb3a..000000000 --- a/docroot/themes/contrib/civictheme/docs/namespaces.md +++ /dev/null @@ -1,73 +0,0 @@ -_[CivicTheme Documentation](../README.md) → [CivicTheme Drupal Theme documentation](README.md) → Namespaces_ - -# Namespaces - -## Introduction - -Component namespaces mirror the namespaces in CivicTheme library as defined in -`civictheme.info.yml`. - -CivicTheme defines two sets of namespaces: atomic component namespaces and civictheme -atomic namespaces. - -## CivicTheme namespace definitions - -```yml - -components: - namespaces: - ct-base: - - components/00-base - base: - - components/00-base - ct-atoms: - - components/01-atoms - atoms: - - components/01-atoms - ct-molecules: - - components/02-molecules - molecules: - - components/02-molecules - ct-organisms: - - components/03-organisms - organisms: - - components/03-organisms - ct-templates: - - components/04-templates - templates: - - components/04-templates - ct-pages: - - components/05-pages - pages: - - components/05-pages - -``` - -## Sub-theme namespaces - -Any sub-theme of CivicTheme must implement the following component namespaces -(note how they are also contained in `civictheme.info.yml`). These namespaces -allow the overriding of CivicTheme components. - -```yaml - -components: - namespaces: - base: - - components/00-base - atoms: - - components/01-atoms - molecules: - - components/02-molecules - organisms: - - components/03-organisms - templates: - - components/04-templates - pages: - - components/05-pages - -``` - -The CivicTheme namespaces (`ct-base`, `ct-atoms`, `ct-molecules` etc.) are -used to provide access to the unaltered CivicTheme namespaces so the original civictheme -component can be extended and then overridden by a sub-theme. diff --git a/docroot/themes/contrib/civictheme/docs/templates.md b/docroot/themes/contrib/civictheme/docs/templates.md deleted file mode 100644 index 102ad20c7..000000000 --- a/docroot/themes/contrib/civictheme/docs/templates.md +++ /dev/null @@ -1,57 +0,0 @@ -# Templates - -CivicTheme theme utilises the components that are defined within CivicTheme component -library. - -We access these components via [component namespaces](namespaces.md). - -## Using CivicTheme library components - -The idea being separating the CivicTheme library component library and Drupal templates is to create -a reusable set of components that can be used in multiple CMS systems. - -The components stored within CivicTheme library have had all their Drupalisms -removed so that they can be cleanly used by other CMSs. - -** Read more about [Components](../civictheme_library/docs/components.md) to -understand how to create or extend components before reading how to connect -these components with Drupal. ** - -After setting up a component and structuring the twig file, you can include this -new component in a Drupal template with an `include` statement. See the -`civictheme/templates` directory for how CivicTheme components have been included. - -### Overriding CivicTheme templates - -For example, if you were wanting to utilise the new demo button -(see `civictheme_starter_kit/components/01-atoms/demo-button`) in your theme as a -submit button you, may override CivicTheme submit button template -`civictheme/templates/input--submit.html.twig` changing the include in the template -file to `@atoms/demo-button/demo-button.twig`. - -If you need to provide custom variables to your component, you derive these -variables through the preprocess hook system Drupal provides. Look at the files -in `civictheme/includes` directory for how the CivicTheme components are preprocesed in -Drupal. - -Because we are not using Drupalisms within our templates we equally -should be aware that we have to be careful not to rely on Twig features that -only exist within Drupal. Link URLs and text need to be provided as data to -the component system, image URLs need to be constructed (remembering to get -the required image style URL if implemented) and several other nuances we need -to be aware of when integrating with the component library. - -### But, what about default field templates - -There is a drawback (or advantage as it aligns more closely with modern UX -development workflows) to CivicTheme in that the architecture is based at the -component level rather than then field level. - -Outputting individual fields on the page will result in bare bones output as -CivicTheme theme is relying upon the developer to provide these field values to -components rather than utilising a field formatter. - -Paragraphs are the primary mechanism for linking components up with Drupal, and -we have implemented a significant number with CivicTheme. These paragraphs can be -created via paragraph fields within new content types and then organised within -layout builder to quickly create a new content type. diff --git a/docroot/themes/contrib/civictheme/includes/banner.inc b/docroot/themes/contrib/civictheme/includes/banner.inc index 8dba47d60..cd3c6237d 100644 --- a/docroot/themes/contrib/civictheme/includes/banner.inc +++ b/docroot/themes/contrib/civictheme/includes/banner.inc @@ -46,7 +46,7 @@ function _civictheme_preprocess_block__civictheme_banner(&$variables) { $background_image = civictheme_get_field_value($block, 'field_c_b_background_image', TRUE); if (!empty($background_image)) { $variables['background_image'] = civictheme_media_image_get_variables($background_image); - $variables['background_image_blend_mode'] = civictheme_get_field_value($block, 'field_c_b_blend_mode', TRUE); + $variables['background_image_blend_mode'] = civictheme_get_field_value($block, 'field_c_b_banner_blend_mode', TRUE); } $featured_image = civictheme_get_field_value($block, 'field_c_b_featured_image', TRUE); @@ -69,8 +69,6 @@ function _civictheme_preprocess_block__civictheme_banner(&$variables) { $variables['#cache']['contexts'][] = 'url.path'; $variables['#cache']['contexts'][] = 'url.query_args'; - _civictheme_migration_metadata__banner($variables); - // 'type' is internal field and should not be passed to the template. unset($variables['type']); } @@ -98,7 +96,7 @@ function _civictheme_preprocess_block__civictheme_banner__node(&$variables) { $background_image = civictheme_get_field_value($node, 'field_c_n_banner_background', TRUE); if (!empty($background_image)) { $variables['background_image'] = civictheme_media_image_get_variables($background_image); - $variables['background_image_blend_mode'] = civictheme_get_field_value($node, 'field_c_n_blend_mode', TRUE); + $variables['background_image_blend_mode'] = civictheme_get_field_value($node, 'field_c_n_banner_blend_mode', TRUE); } $featured_image = civictheme_get_field_value($node, 'field_c_n_banner_featured_image', TRUE); diff --git a/docroot/themes/contrib/civictheme/includes/menu.inc b/docroot/themes/contrib/civictheme/includes/menu.inc index a05e3fc43..cb68c1a8c 100644 --- a/docroot/themes/contrib/civictheme/includes/menu.inc +++ b/docroot/themes/contrib/civictheme/includes/menu.inc @@ -36,6 +36,11 @@ function _civictheme_preprocess_menu_items(&$items) { 'is_external' => $item['url']->isExternal(), ]; + if (empty($item['original_link']->getPluginDefinition()['expanded'])) { + $item['below'] = []; + $item['is_expanded'] = FALSE; + } + if (count($item['below'])) { _civictheme_preprocess_menu_items($item['below']); } diff --git a/docroot/themes/contrib/civictheme/includes/migration.inc b/docroot/themes/contrib/civictheme/includes/migration.inc deleted file mode 100644 index 07914e890..000000000 --- a/docroot/themes/contrib/civictheme/includes/migration.inc +++ /dev/null @@ -1,111 +0,0 @@ -load('migration.expose_metadata') ?? FALSE; -} - -/** - * Convert migration metadata to attributes. - * - * @param array $values - * Array of values to be converted to attributes. - * @param string $prefix - * (optional) Values prefix to be added to the data attribute name. - * - * @return array - * Array of converted metadata. - */ -function _civictheme_migration_metadata_convert_to_attributes(array $values, $prefix = '') { - $attributes = []; - - foreach ($values as $name => $value) { - if (is_null($value)) { - continue; - } - $attributes['data-ct-migrate-' . ($prefix ? trim($prefix, '-') . '-' : '') . $name] = is_scalar($value) ? (is_bool($value) ? (int) $value : $value) : json_encode($value); - } - - return $attributes; -} - -/** - * Exposes Page level migration metadata. - */ -function _civictheme_migration_metadata__page(&$variables) { - if (!civictheme_migrate_metadata_enabled()) { - return; - } - - $civictheme_page_default_settings = [ - 'field_c_n_vertical_spacing' => 'none', - 'field_c_n_show_toc' => FALSE, - 'field_c_n_show_last_updated' => FALSE, - 'field_c_n_hide_sidebar' => FALSE, - 'field_c_n_summary' => '', - ]; - - $node = $variables['node'] ?? NULL; - - // Convert field name to attribute name and set value either node field value - // or default value. - $attributes = []; - foreach ($civictheme_page_default_settings as $field_name => $default_value) { - $attribute_name = str_replace('_', '-', str_replace('field_c_n_', '', $field_name)); - $attributes[$attribute_name] = $node ? civictheme_get_field_value($node, $field_name) : $default_value; - } - - // Handling edge cases - we always have a node for edge cases as these - // are generated from field values. - if ($node) { - if ($attributes['show-last-updated']) { - $attributes['last-updated'] = _civictheme_node_get_updated_date($node); - } - - $thumbnail = civictheme_get_field_value($node, 'field_c_n_thumbnail', TRUE); - if (!empty($thumbnail)) { - $attributes['thumbnail'] = civictheme_media_image_get_variables($thumbnail); - } - - $topics = civictheme_get_referenced_entity_labels($node, 'field_c_n_topics'); - if (!empty($topics)) { - $topics = implode(',', $topics); - $attributes['topics'] = $topics; - } - } - - $variables['content_attributes'] = $variables['content_attributes'] ?? []; - $variables['content_attributes'] += _civictheme_migration_metadata_convert_to_attributes($attributes, 'node'); -} - -/** - * Exposes migration Banner metadata. - */ -function _civictheme_migration_metadata__banner(&$variables) { - if (!civictheme_migrate_metadata_enabled()) { - return; - } - - $attributes = []; - $attributes['type'] = $variables['type']; - $attributes['theme'] = $variables['theme']; - $attributes['hide-breadcrumb'] = (int) empty($variables['breadcrumb']); - - if (!empty($variables['background_image'])) { - $attributes['background-image-blend-mode'] = $variables['background_image_blend_mode']; - $attributes['background-image'] = $variables['background_image']; - } - - $variables['attributes'] = $variables['attributes'] ?? []; - $variables['attributes'] += _civictheme_migration_metadata_convert_to_attributes($attributes, 'banner'); -} diff --git a/docroot/themes/contrib/civictheme/includes/paragraphs.inc b/docroot/themes/contrib/civictheme/includes/paragraphs.inc index 738c28e03..aa8729d34 100644 --- a/docroot/themes/contrib/civictheme/includes/paragraphs.inc +++ b/docroot/themes/contrib/civictheme/includes/paragraphs.inc @@ -226,14 +226,14 @@ function _civictheme_preprocess_paragraph__paragraph_field__summary(&$variables) /** * Pre-process for Summary node field. */ -function _civictheme_preprocess_paragraph__node_field__summary(&$variables, $card_type = NULL) { +function _civictheme_preprocess_paragraph__node_field__summary(&$variables, $bundle = NULL) { $node = $variables['node'] ?? civictheme_get_field_value($variables['paragraph'], 'field_c_p_reference', TRUE); if ($node) { $summary = civictheme_get_field_value($node, 'field_c_n_summary', TRUE); if (!empty($summary)) { $length = CivicthemeConstants::CARD_SUMMARY_DEFAULT_LENGTH; - $card_name = _civictheme_get_card_name_from_bundle($card_type ?? $variables['paragraph']->bundle() ?? 'none'); + $card_name = _civictheme_get_card_name_from_bundle($bundle ?? (!empty($variables['paragraph']) && $variables['paragraph']->bundle()) ?? 'none'); if ($card_name) { $length = civictheme_get_theme_config_manager()->loadForComponent($card_name, 'summary_length', CivicthemeConstants::CARD_SUMMARY_DEFAULT_LENGTH); } diff --git a/docroot/themes/contrib/civictheme/includes/snippet.inc b/docroot/themes/contrib/civictheme/includes/snippet.inc new file mode 100644 index 000000000..1d01d6115 --- /dev/null +++ b/docroot/themes/contrib/civictheme/includes/snippet.inc @@ -0,0 +1,44 @@ +component_theme ?? CivicthemeConstants::THEME_LIGHT; +} diff --git a/docroot/themes/contrib/civictheme/package.json b/docroot/themes/contrib/civictheme/package.json index c19ab95a7..ac82784c1 100644 --- a/docroot/themes/contrib/civictheme/package.json +++ b/docroot/themes/contrib/civictheme/package.json @@ -8,17 +8,17 @@ "repository": "https://github.com/salsadigitalauorg/civictheme_source.git", "license": "GPL-2.0", "engines": { - "node": ">=16" + "node": ">=18.14" }, "scripts": { - "build": "npm run dist && STORYBOOK_FULL=1 npm run build-storybook -- --quiet && npm run add-lint-exclusions", - "build-storybook": "build-storybook -s .storybook/static", - "storybook": "start-storybook -s .storybook/static", - "storybook-full": "STORYBOOK_FULL=1 start-storybook -s .storybook/static", + "build": "npm run dist && export STORYBOOK_FULL=1 && npm run build-storybook -- --quiet && npm run add-lint-exclusions", + "build-storybook": "export NODE_OPTIONS=--openssl-legacy-provider && build-storybook -s .storybook/static", + "storybook": "export NODE_OPTIONS=--openssl-legacy-provider && start-storybook -s .storybook/static", + "storybook-full": "export NODE_OPTIONS=--openssl-legacy-provider && export STORYBOOK_FULL=1 && start-storybook -s .storybook/static", "lint": "eslint ./components ./.storybook ./webpack && stylelint '{components,assets/sass}/**/*.scss'", "lint:fix": "eslint ./components ./.storybook ./webpack --fix && stylelint 'components/**/*.scss' --fix", - "dist": "webpack --config ./webpack/webpack.prod.js", - "dist:dev": "webpack --config ./webpack/webpack.dev.js", + "dist": "export NODE_OPTIONS=--openssl-legacy-provider && webpack --config ./webpack/webpack.prod.js", + "dist:dev": "export NODE_OPTIONS=--openssl-legacy-provider && webpack --config ./webpack/webpack.dev.js", "add-lint-exclusions": "php civictheme_starter_kit/scripts/add_phpcs_exclusions.php dist && php civictheme_starter_kit/scripts/add_phpcs_exclusions.php storybook-static && php civictheme_starter_kit/scripts/add_phpcs_exclusions.php civictheme_library/storybook-static && php civictheme_starter_kit/scripts/add_phpcs_exclusions.php civictheme_library/dist || true" }, "devDependencies": { @@ -33,7 +33,6 @@ "@storybook/addons": "^6.1.18", "@storybook/html": "^6.3.8", "@storybook/preset-scss": "^1.0.3", - "@whitespace/storybook-addon-html": "^5.0.0", "babel-loader": "^8.2.2", "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-transform-strict-mode": "^6.24.1", diff --git a/docroot/themes/contrib/civictheme/src/CivicthemeConfigImporter.php b/docroot/themes/contrib/civictheme/src/CivicthemeConfigImporter.php index aa8a43045..aabc6207a 100644 --- a/docroot/themes/contrib/civictheme/src/CivicthemeConfigImporter.php +++ b/docroot/themes/contrib/civictheme/src/CivicthemeConfigImporter.php @@ -56,7 +56,7 @@ class CivicthemeConfigImporter implements ContainerInjectionInterface { * * @var \Drupal\Core\Lock\LockBackendInterface */ - protected $lock; + protected $lockPersistent; /** * The typed config manager. @@ -121,6 +121,13 @@ class CivicthemeConfigImporter implements ContainerInjectionInterface { */ protected $logger; + /** + * The string translation. + * + * @var \Drupal\Core\StringTranslation\TranslationInterface + */ + protected $stringTranslation; + /** * Constructor. * @@ -130,7 +137,7 @@ class CivicthemeConfigImporter implements ContainerInjectionInterface { * The configuration manager. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock backend. - * @param \Drupal\Core\Config\TypedConfigManagerInterface $typed_config + * @param \Drupal\Core\Config\TypedConfigManagerInterface $typed_config_manager * The typed configuration manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. @@ -140,7 +147,7 @@ class CivicthemeConfigImporter implements ContainerInjectionInterface { * The theme handler. * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation * The string translation service. - * @param \Drupal\Core\Extension\ModuleExtensionList $extension_list_module + * @param \Drupal\Core\Extension\ModuleExtensionList $module_extension_list * The module extension list. * @param \Drupal\Core\Config\StorageInterface $config_storage * The config storage. @@ -157,12 +164,12 @@ public function __construct( EventDispatcherInterface $event_dispatcher, ConfigManagerInterface $config_manager, LockBackendInterface $lock, - TypedConfigManagerInterface $typed_config, + TypedConfigManagerInterface $typed_config_manager, ModuleHandlerInterface $module_handler, ModuleInstallerInterface $module_installer, ThemeHandlerInterface $theme_handler, TranslationInterface $string_translation, - ModuleExtensionList $extension_list_module, + ModuleExtensionList $module_extension_list, StorageInterface $config_storage, CacheBackendInterface $cache_config, MessengerInterface $messenger, @@ -171,12 +178,12 @@ public function __construct( $this->eventDispatcher = $event_dispatcher; $this->configManager = $config_manager; $this->lockPersistent = $lock; - $this->configTyped = $typed_config; + $this->typedConfigManager = $typed_config_manager; $this->moduleHandler = $module_handler; $this->moduleInstaller = $module_installer; $this->themeHandler = $theme_handler; $this->stringTranslation = $string_translation; - $this->extensionListModule = $extension_list_module; + $this->moduleExtensionList = $module_extension_list; $this->configStorage = $config_storage; $this->cacheConfig = $cache_config; $this->messenger = $messenger; @@ -260,12 +267,12 @@ public function importSingleConfig($src_name, $locations, $dst_name = NULL, arra $this->eventDispatcher, $this->configManager, $this->lockPersistent, - $this->configTyped, + $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->stringTranslation, - $this->extensionListModule + $this->moduleExtensionList ); try { diff --git a/docroot/themes/contrib/civictheme/src/CivicthemeConfigManager.php b/docroot/themes/contrib/civictheme/src/CivicthemeConfigManager.php index a2a347d4a..fc49b44e3 100644 --- a/docroot/themes/contrib/civictheme/src/CivicthemeConfigManager.php +++ b/docroot/themes/contrib/civictheme/src/CivicthemeConfigManager.php @@ -37,6 +37,13 @@ class CivicthemeConfigManager implements ContainerInjectionInterface { */ protected $themeManager; + /** + * The config importer. + * + * @var \Drupal\civictheme\CivicthemeConfigImporter + */ + protected $configImporter; + /** * The theme extension list. * @@ -88,6 +95,11 @@ public static function create(ContainerInterface $container) { * The value of the requested setting, NULL if the setting does not exist. */ public function load($key, $default = NULL) { + // Return site slogan from system site settings. + if ($key == 'components.site_slogan.content') { + return $this->configFactory->getEditable('system.site')->get('slogan'); + } + return theme_get_setting($key, $this->theme->getName()) ?? $default; } @@ -120,6 +132,12 @@ public function loadForComponent($name, $key, $default = NULL) { * Instance of the current class. */ public function save($key, $value) { + // Set site slogan. + if ($key == 'components.site_slogan.content') { + $config = $this->configFactory->getEditable('system.site')->set('slogan', $value)->save(); + return $this; + } + $theme_name = $this->theme->getName(); $config = $this->configFactory->getEditable("$theme_name.settings"); $config->set($key, $value)->save(); diff --git a/docroot/themes/contrib/civictheme/src/CivicthemeConstants.php b/docroot/themes/contrib/civictheme/src/CivicthemeConstants.php index 4ace2d42a..5542c3617 100644 --- a/docroot/themes/contrib/civictheme/src/CivicthemeConstants.php +++ b/docroot/themes/contrib/civictheme/src/CivicthemeConstants.php @@ -32,6 +32,11 @@ final class CivicthemeConstants { */ const THEME_DARK_LABEL = 'Dark'; + const VERTICAL_SPACING_NONE = 'none'; + const VERTICAL_SPACING_TOP = 'top'; + const VERTICAL_SPACING_BOTTOM = 'bottom'; + const VERTICAL_SPACING_BOTH = 'both'; + // For per-component 'theme' default values we are relying on the defaults set // in the components' templates. // Only define per-component theme constants when other components rely on diff --git a/docroot/themes/contrib/civictheme/src/CivicthemeUpdateHelper.php b/docroot/themes/contrib/civictheme/src/CivicthemeUpdateHelper.php new file mode 100644 index 000000000..3f027e735 --- /dev/null +++ b/docroot/themes/contrib/civictheme/src/CivicthemeUpdateHelper.php @@ -0,0 +1,240 @@ +entityTypeManager = $entity_type_manager; + $this->logger = $logger; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container) { + return new static( + $container->get('entity_type.manager'), + $container->get('logger.factory')->get('action') + ); + } + + /** + * Updates configuration entities as part of a Drupal update. + * + * @param array $sandbox + * Stores information for batch updates. + * @param string $entity_type + * Entity type to load. + * @param array $entity_bundles + * Entity build to filter entities. + * @param callable $start_callback + * Start callback function to call whne batch initialise. + * @param callable $process_callback + * Process callback to process entity. + * @param callable $finish_callback + * Finish callback called when batch finished. + * @param int $batch_size + * Batch size. Defaults to 10. + * + * @return string|null + * Return log message on the last pass of the update. + */ + public function update(array &$sandbox, $entity_type, array $entity_bundles, callable $start_callback, callable $process_callback, callable $finish_callback, int $batch_size = 10): string|null { + $storage = $this->entityTypeManager->getStorage($entity_type); + + if (!isset($sandbox['entities'])) { + $sandbox['batch'] = 0; + $sandbox['entities'] = $storage->getQuery()->accessCheck(FALSE)->condition('type', $entity_bundles, 'IN')->execute(); + $sandbox['max'] = count($sandbox['entities']); + + $sandbox['results']['processed'] = []; + $sandbox['results']['updated'] = []; + $sandbox['results']['skipped'] = []; + + call_user_func($start_callback, $this); + } + + $sandbox['batch']++; + + /** @var \Drupal\Core\Entity\EntityInterface[] $entities */ + $entities = $storage->loadMultiple(array_splice($sandbox['entities'], 0, $batch_size)); + foreach ($entities as $entity) { + $sandbox['results']['processed'][] = $entity->id(); + + // Process callback may return boolean FALSE to consider this entity as + // being skipped during processing. + $process_return = call_user_func($process_callback, $this, $entity); + $sandbox['results'][$process_return === TRUE ? 'updated' : 'skipped'][] = $entity->id(); + } + + $sandbox['#finished'] = !empty($sandbox['entities']) ? ($sandbox['max'] - count($sandbox['entities'])) / $sandbox['max'] : 1; + + if ($sandbox['#finished'] >= 1) { + $log = call_user_func($finish_callback, $this); + + $log = new TranslatableMarkup("%finished\n
Update ran in %batches batch(es):\n
Processed: %processed %processed_ids\n
Updated: %updated %updated_ids\n
Skipped: %skipped %skipped_ids\n
", [ + '%finished' => $log ?? '', + '%batches' => $sandbox['batch'], + '%processed' => count($sandbox['results']['processed']), + '%processed_ids' => count($sandbox['results']['processed']) ? '(' . implode(', ', $sandbox['results']['processed']) . ')' : '', + '%updated' => count($sandbox['results']['updated']), + '%updated_ids' => count($sandbox['results']['updated']) ? '(' . implode(', ', $sandbox['results']['updated']) . ')' : '', + '%skipped' => count($sandbox['results']['skipped']), + '%skipped_ids' => count($sandbox['results']['skipped']) ? '(' . implode(', ', $sandbox['results']['skipped']) . ')' : '', + ]); + $this->logger->info($log); + + return $log; + } + + return NULL; + } + + /** + * Update field configs from path. + * + * @param array $configs + * Array of configs. + * @param string $config_path + * Path to config file. + */ + public function createConfigs(array $configs, string $config_path): void { + $source = new FileStorage($config_path); + + // Check if field already exported in config/sync. + foreach ($configs as $config => $type) { + /** @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface */ + $storage = $this->entityTypeManager->getStorage($type); + $config_read = $source->read($config); + $id = substr($config, strpos($config, '.', 6) + 1); + if ($storage->load($id) == NULL) { + $config_entity = $storage->createFromStorageRecord($config_read); + $config_entity->save(); + } + } + } + + /** + * Delete field configs after content update. + * + * @param array $configs + * Array of configs. + */ + public function deleteConfig(array $configs): void { + foreach ($configs as $config => $type) { + // Check if field already exported to config. + $storage = $this->entityTypeManager->getStorage($type); + $id = substr($config, strpos($config, '.', 6) + 1); + $config_read = $storage->load($id); + if ($config_read != NULL) { + $config_read->delete(); + } + } + } + + /** + * Update form and group display. + * + * @param string $entity_type + * Entity type to update. + * @param string $bundle + * Bundle to update. + * @param array $field_config + * Array of field configs. + * @param array|null $group_config + * Optional array of group configs. + */ + public function updateFormDisplayConfig(string $entity_type, string $bundle, array $field_config, array $group_config = NULL): void { + /** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */ + $form_display = $this->entityTypeManager + ->getStorage('entity_form_display') + ->load($entity_type . '.' . $bundle . '.default'); + + if (!$form_display) { + return; + } + + foreach ($field_config as $field => $replacements) { + $component = $form_display->getComponent($field); + $component = $component ? array_replace_recursive($component, $replacements) : $replacements; + $form_display->setComponent($field, $component); + + if ($group_config) { + $field_group = $form_display->getThirdPartySettings('field_group'); + foreach ($group_config as $group_name => $group_config_item) { + if (!empty($field_group[$group_name]['children'])) { + $field_group[$group_name]['children'] = array_merge($field_group[$group_name]['children'], $group_config_item); + $form_display->setThirdPartySetting('field_group', $group_name, $field_group[$group_name]); + } + } + } + } + + $form_display->save(); + } + + /** + * Copy field content from one field to another. + * + * @param \Drupal\Core\Entity\FieldableEntityInterface $entity + * Entity to update. + * @param array $mappings + * Array of field names with source field names as keys and destination + * field names as values. + * + * @return bool + * TRUE if the entity was updated, FALSE otherwise. + */ + public function copyFieldContent(FieldableEntityInterface $entity, array $mappings): bool { + $updated = FALSE; + + foreach ($mappings as $src_field_name => $dst_field_name) { + $src_field_value = civictheme_get_field_value($entity, $src_field_name, TRUE); + if ($entity->hasField($dst_field_name) && !is_null($src_field_value)) { + $entity->{$dst_field_name} = $src_field_value; + $updated = TRUE; + } + } + + if ($updated) { + $entity->save(); + } + + return $updated; + } + +} diff --git a/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionBase.php b/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionBase.php index 50eead776..0fde63576 100644 --- a/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionBase.php +++ b/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionBase.php @@ -11,6 +11,7 @@ use Drupal\Core\File\FileSystemInterface; use Drupal\Core\File\FileUrlGenerator; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Image\ImageFactory; use Drupal\Core\Messenger\Messenger; use Drupal\Core\StreamWrapper\StreamWrapperManager; use Drupal\Core\StringTranslation\StringTranslationTrait; @@ -75,6 +76,13 @@ abstract class CivicthemeSettingsFormSectionBase implements ContainerInjectionIn */ protected $themeConfigManager; + /** + * The image factory. + * + * @var \Drupal\Core\Image\ImageFactory + */ + protected $imageFactory; + /** * Constructor. * @@ -92,8 +100,10 @@ abstract class CivicthemeSettingsFormSectionBase implements ContainerInjectionIn * Config manager. * @param \Drupal\civictheme\CivicthemeConfigManager $civictheme_config_manager * Theme config manager. + * @param \Drupal\Core\Image\ImageFactory $image_factory + * The image factory. */ - public function __construct(ThemeManager $theme_manager, ThemeExtensionList $theme_extension_list, FileSystem $file_system, FileUrlGenerator $file_url_generator, Messenger $messenger, ConfigManager $config_manager, CivicthemeConfigManager $civictheme_config_manager) { + public function __construct(ThemeManager $theme_manager, ThemeExtensionList $theme_extension_list, FileSystem $file_system, FileUrlGenerator $file_url_generator, Messenger $messenger, ConfigManager $config_manager, CivicthemeConfigManager $civictheme_config_manager, ImageFactory $image_factory) { $this->themeManager = $theme_manager; $this->themeExtensionList = $theme_extension_list; $this->fileSystem = $file_system; @@ -101,6 +111,7 @@ public function __construct(ThemeManager $theme_manager, ThemeExtensionList $the $this->messenger = $messenger; $this->configManager = $config_manager; $this->themeConfigManager = $civictheme_config_manager; + $this->imageFactory = $image_factory; } /** @@ -114,7 +125,8 @@ public static function create(ContainerInterface $container) { $container->get('file_url_generator'), $container->get('messenger'), $container->get('config.manager'), - $container->get('class_resolver')->getInstanceFromDefinition(CivicthemeConfigManager::class) + $container->get('class_resolver')->getInstanceFromDefinition(CivicthemeConfigManager::class), + $container->get('image.factory') ); } diff --git a/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionComponents.php b/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionComponents.php index 52a9b5c25..44bf47d9b 100644 --- a/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionComponents.php +++ b/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionComponents.php @@ -80,6 +80,8 @@ public function form(&$form, FormStateInterface &$form_state) { '#default_value' => $this->themeConfigManager->load("components.logo.{$logo_type}.{$theme}.{$breakpoint}.path"), ]; + $allowed_extensions = $this->imageFactory->getSupportedExtensions(); + $allowed_extensions[] = 'svg'; $form['components']['logo'][$logo_type][$theme][$breakpoint]['upload'] = [ '#type' => 'file', '#title' => $this->t('Upload @logo_type @theme logo for @breakpoint', [ @@ -92,7 +94,7 @@ public function form(&$form, FormStateInterface &$form_state) { '@public' => rtrim($this->toFriendlyFilePath($this->getDefaultFileScheme()), '/'), ]), '#upload_validators' => [ - 'file_validate_is_image' => [], + 'file_validate_extensions' => [implode(' ', $allowed_extensions)], ], ]; } @@ -106,6 +108,22 @@ public function form(&$form, FormStateInterface &$form_state) { '#default_value' => $this->themeConfigManager->load('components.logo.image_alt'), ]; + $form['components']['site_slogan'] = [ + '#type' => 'details', + '#title' => $this->t('Site slogan'), + '#group' => 'components', + '#tree' => TRUE, + ]; + + $form['components']['site_slogan']['content'] = [ + '#title' => $this->t('Content'), + '#description' => $this->t('Set the site slogan.'), + '#type' => 'textfield', + '#required' => TRUE, + '#min' => 0, + '#default_value' => $this->themeConfigManager->load('components.site_slogan.content'), + ]; + $form['components']['header'] = [ '#type' => 'details', '#title' => $this->t('Header'), @@ -548,4 +566,14 @@ protected function externalLinkNormalizeDomain($domain) { return civictheme_external_link_normalize_domain($domain); } + /** + * Submit callback for site slogan component. + * + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function submitSiteSlogan(array &$form, FormStateInterface $form_state) { + $slogan = $form_state->getValue(['components', 'site_slogan', 'content']); + $this->themeConfigManager->save('components.site_slogan.content', $slogan); + } + } diff --git a/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionMigration.php b/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionMigration.php deleted file mode 100644 index 040599437..000000000 --- a/docroot/themes/contrib/civictheme/src/Settings/CivicthemeSettingsFormSectionMigration.php +++ /dev/null @@ -1,39 +0,0 @@ - 'details', - '#title' => $this->t('Migration'), - '#open' => FALSE, - '#tree' => TRUE, - '#weight' => 40, - '#description' => $this->t('Migrations may require access to internal field values not available in the HTML. Exposing such values adds data HTML attributes to HTML elements.'), - ]; - - $form['migration']['expose_metadata'] = [ - '#type' => 'checkbox', - '#title' => 'Expose Migration metadata', - '#default_value' => $this->themeConfigManager->load('migration.expose_metadata') ?? FALSE, - ]; - } - -} diff --git a/docroot/themes/contrib/civictheme/templates/content/node--civictheme-event--civictheme-snippet.html.twig b/docroot/themes/contrib/civictheme/templates/content/node--civictheme-event--civictheme-snippet.html.twig new file mode 100644 index 000000000..63899b80c --- /dev/null +++ b/docroot/themes/contrib/civictheme/templates/content/node--civictheme-event--civictheme-snippet.html.twig @@ -0,0 +1,7 @@ +{# +/** + * @file + * CivicTheme implementation to display an Event node as a Snippet. + */ +#} +{% include "@molecules/snippet/snippet.twig" %} diff --git a/docroot/themes/contrib/civictheme/templates/content/node--civictheme-page--civictheme-snippet.html.twig b/docroot/themes/contrib/civictheme/templates/content/node--civictheme-page--civictheme-snippet.html.twig new file mode 100644 index 000000000..574061fda --- /dev/null +++ b/docroot/themes/contrib/civictheme/templates/content/node--civictheme-page--civictheme-snippet.html.twig @@ -0,0 +1,7 @@ +{# +/** + * @file + * CivicTheme implementation to display a Page node as a Snippet. + */ +#} +{% include "@molecules/snippet/snippet.twig" %} diff --git a/docroot/themes/contrib/civictheme/templates/paragraphs/paragraph--civictheme-snippet-ref.html.twig b/docroot/themes/contrib/civictheme/templates/paragraphs/paragraph--civictheme-snippet-ref.html.twig new file mode 100644 index 000000000..37dd0342d --- /dev/null +++ b/docroot/themes/contrib/civictheme/templates/paragraphs/paragraph--civictheme-snippet-ref.html.twig @@ -0,0 +1,7 @@ +{# +/** + * @file + * CivicTheme implementation to display a Snippet reference. + */ +#} +{% include '@molecules/snippet/snippet.twig' %} diff --git a/docroot/themes/contrib/civictheme/templates/paragraphs/paragraph--civictheme-snippet.html.twig b/docroot/themes/contrib/civictheme/templates/paragraphs/paragraph--civictheme-snippet.html.twig new file mode 100644 index 000000000..48baeff81 --- /dev/null +++ b/docroot/themes/contrib/civictheme/templates/paragraphs/paragraph--civictheme-snippet.html.twig @@ -0,0 +1,7 @@ +{# +/** + * @file + * CivicTheme implementation to display a Snippet. + */ +#} +{% include '@molecules/snippet/snippet.twig' %} diff --git a/docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.bare.php.gz b/docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.bare.php.gz new file mode 100644 index 000000000..f6cd9cc9a Binary files /dev/null and b/docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.bare.php.gz differ diff --git a/docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.filled.php.gz b/docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.filled.php.gz new file mode 100644 index 000000000..bf909e5fb Binary files /dev/null and b/docroot/themes/contrib/civictheme/tests/fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.filled.php.gz differ diff --git a/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeBrowserTestBase.php b/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeBrowserTestBase.php new file mode 100644 index 000000000..cb690ce73 --- /dev/null +++ b/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeBrowserTestBase.php @@ -0,0 +1,60 @@ +container; + + require_once dirname($container->get('theme_handler')->rebuildThemeData()[$this->customTheme]->getPathname()) . '/theme-settings.provision.inc'; + $modules = _civictheme_get_theme_dependencies($this->customTheme, $this->optionalDependencies); + $container->get('module_installer')->install($modules); + + // Refresh container after installing modules. + $this->container = \Drupal::getContainer(); + $container = $this->container; + + // Ensure the default theme is installed. + $container->get('theme_installer')->install([$this->customTheme], TRUE); + + $system_theme_config = $container->get('config.factory')->getEditable('system.theme'); + if ($system_theme_config->get('default') !== $this->customTheme) { + $system_theme_config + ->set('default', $this->customTheme) + ->save(); + } + } + +} diff --git a/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeInstallOptionalTest.php b/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeInstallOptionalTest.php new file mode 100644 index 000000000..59b7e3d63 --- /dev/null +++ b/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeInstallOptionalTest.php @@ -0,0 +1,24 @@ +drupalCreateUser(['administer site configuration']); + $this->drupalLogin($adminUser); + } + +} diff --git a/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeInstallRequiredTest.php b/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeInstallRequiredTest.php new file mode 100644 index 000000000..b9aa5ae6d --- /dev/null +++ b/docroot/themes/contrib/civictheme/tests/src/Functional/CivicthemeInstallRequiredTest.php @@ -0,0 +1,28 @@ +drupalCreateUser(['administer site configuration']); + $this->drupalLogin($adminUser); + } + +} diff --git a/docroot/themes/contrib/civictheme/tests/src/Functional/Update/CivicthemeUpdatePathBareTest.php b/docroot/themes/contrib/civictheme/tests/src/Functional/Update/CivicthemeUpdatePathBareTest.php new file mode 100644 index 000000000..9d70fce8f --- /dev/null +++ b/docroot/themes/contrib/civictheme/tests/src/Functional/Update/CivicthemeUpdatePathBareTest.php @@ -0,0 +1,114 @@ +container->get('module_installer')->install(['sqlite']); + } + + /** + * {@inheritdoc} + */ + protected function setDatabaseDumpFiles() { + $this->databaseDumpFiles = [ + __DIR__ . '/../../../fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.bare.php.gz', + ]; + } + + /** + * Tests that the database was properly loaded. + * + * This is a smoke test for the hook_update_N() CivicTheme test system itself. + */ + public function testDatabaseLoaded() { + $this->assertEquals('minimal', \Drupal::config('core.extension')->get('profile')); + // Ensure that a user can be created and do a basic test that + // the site is available by logging in. + $this->drupalLogin($this->createUser(admin: TRUE)); + $this->assertSession()->statusCodeEquals(200); + } + + /** + * Tests updates. + */ + public function testUpdates() { + $this->runUpdates(); + + $this->assertSession()->pageTextContains('Update rename_block_banner_blend_mode'); + $this->assertSession()->pageTextContains("Content from field 'field_c_b_blend_mode' was moved to 'field_c_b_banner_blend_mode'."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + + $this->assertSession()->pageTextContains('Update rename_event_date_field'); + $this->assertSession()->pageTextContains("Content from field 'field_c_n_date' was moved to 'field_c_n_date_range'. The 'field_c_n_date_range' field was removed from 'civictheme_event' node type."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + + $this->assertSession()->pageTextContains('Update rename_list_fields'); + $this->assertSession()->pageTextContains("Content from field 'field_c_p_column_count' was moved to 'field_c_p_list_column_count'. Content from field 'field_c_p_fill_width' was moved to 'field_c_p_list_fill_width'."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + + $this->assertSession()->pageTextContains('Update rename_node_banner_blend_mode'); + $this->assertSession()->pageTextContains("Content from field 'field_c_n_blend_mode' was moved to 'field_c_n_banner_blend_mode'."); + $this->assertSession()->pageTextContains("The 'field_c_n_blend_mode' field was removed from 'civictheme_page' node type."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + + $this->assertSession()->pageTextContains('Update replace_summary_field'); + $this->assertSession()->pageTextContains("Content from field 'field_c_p_summary' was moved to 'field_c_p_content'. The 'field_c_p_summary' field was removed from civictheme_attachment, civictheme_callout, civictheme_next_step, civictheme_promo paragraph types."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + + $this->assertSession()->pageTextContains('Update set_vertical_spacing_empty_value'); + $this->assertSession()->pageTextContains("Updated values for fields 'field_c_n_vertical_spacing' and 'field_c_p_vertical_spacing'."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + } + +} diff --git a/docroot/themes/contrib/civictheme/tests/src/Functional/Update/CivicthemeUpdatePathFilledTest.php b/docroot/themes/contrib/civictheme/tests/src/Functional/Update/CivicthemeUpdatePathFilledTest.php new file mode 100644 index 000000000..ae9c3ceea --- /dev/null +++ b/docroot/themes/contrib/civictheme/tests/src/Functional/Update/CivicthemeUpdatePathFilledTest.php @@ -0,0 +1,114 @@ +container->get('module_installer')->install(['sqlite']); + } + + /** + * {@inheritdoc} + */ + protected function setDatabaseDumpFiles() { + $this->databaseDumpFiles = [ + __DIR__ . '/../../../fixtures/updates/drupal_10.0.0-rc1.minimal.civictheme_1.3.2.filled.php.gz', + ]; + } + + /** + * Tests that the database was properly loaded. + * + * This is a smoke test for the hook_update_N() CivicTheme test system itself. + */ + public function testDatabaseLoaded() { + $this->assertEquals('minimal', \Drupal::config('core.extension')->get('profile')); + // Ensure that a user can be created and do a basic test that + // the site is available by logging in. + $this->drupalLogin($this->createUser(admin: TRUE)); + $this->assertSession()->statusCodeEquals(200); + } + + /** + * Tests updates. + */ + public function testUpdates() { + $this->runUpdates(); + + $this->assertSession()->pageTextContains('Update rename_block_banner_blend_mode'); + $this->assertSession()->pageTextContains("Content from field 'field_c_b_blend_mode' was moved to 'field_c_b_banner_blend_mode'."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 1'); + $this->assertSession()->pageTextContains('Updated: 1'); + + $this->assertSession()->pageTextContains('Update rename_event_date_field'); + $this->assertSession()->pageTextContains("Content from field 'field_c_n_date' was moved to 'field_c_n_date_range'. The 'field_c_n_date_range' field was removed from 'civictheme_event' node type."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 0'); + $this->assertSession()->pageTextContains('Updated: 0'); + + $this->assertSession()->pageTextContains('Update rename_list_fields'); + $this->assertSession()->pageTextContains("Content from field 'field_c_p_column_count' was moved to 'field_c_p_list_column_count'. Content from field 'field_c_p_fill_width' was moved to 'field_c_p_list_fill_width'."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 24'); + $this->assertSession()->pageTextContains('Updated: 24'); + + $this->assertSession()->pageTextContains('Update rename_node_banner_blend_mode'); + $this->assertSession()->pageTextContains("Content from field 'field_c_n_blend_mode' was moved to 'field_c_n_banner_blend_mode'."); + $this->assertSession()->pageTextContains("The 'field_c_n_blend_mode' field was removed from 'civictheme_page' node type."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 155'); + $this->assertSession()->pageTextContains('Updated: 155'); + + $this->assertSession()->pageTextContains('Update replace_summary_field'); + $this->assertSession()->pageTextContains("Content from field 'field_c_p_summary' was moved to 'field_c_p_content'. The 'field_c_p_summary' field was removed from civictheme_attachment, civictheme_callout, civictheme_next_step, civictheme_promo paragraph types."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 48'); + $this->assertSession()->pageTextContains('Updated: 39'); + $this->assertSession()->pageTextContains('Skipped: 9'); + + $this->assertSession()->pageTextContains('Update set_vertical_spacing_empty_value'); + $this->assertSession()->pageTextContains("Updated values for fields 'field_c_n_vertical_spacing' and 'field_c_p_vertical_spacing'."); + $this->assertSession()->pageTextContains('Update ran in'); + $this->assertSession()->pageTextContains('Processed: 155'); + $this->assertSession()->pageTextContains('Updated: 9'); + $this->assertSession()->pageTextContains('Skipped: 146'); + } + +} diff --git a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeColorUtilityUnitTest.php b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeColorUtilityUnitTest.php index b80f7ffcd..0c1318334 100644 --- a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeColorUtilityUnitTest.php +++ b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeColorUtilityUnitTest.php @@ -10,6 +10,7 @@ * Test cases for color utility functions. * * @group CivicTheme + * @group site:unit */ class CivicthemeColorUtilityUnitTest extends CivicthemeUnitTestBase { diff --git a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeHtmlLinkUnitTest.php b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeHtmlLinkUnitTest.php index 46c318270..e691e4235 100644 --- a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeHtmlLinkUnitTest.php +++ b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeHtmlLinkUnitTest.php @@ -9,6 +9,7 @@ * Test cases for processing HTML link. * * @group CivicTheme + * @group site:unit */ class CivicthemeHtmlLinkUnitTest extends CivicthemeUnitTestBase { diff --git a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUnitTestBase.php b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUnitTestBase.php index a9e12c5bf..85dbb2088 100644 --- a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUnitTestBase.php +++ b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUnitTestBase.php @@ -19,7 +19,8 @@ abstract class CivicthemeUnitTestBase extends UnitTestCase { */ protected function setUp(): void { parent::setUp(); - require_once 'docroot/themes/contrib/civictheme/civictheme.theme'; + + require_once __DIR__ . '/../../../civictheme.theme'; } } diff --git a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUtilityUnitTest.php b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUtilityUnitTest.php index 8463c649e..97a870e87 100644 --- a/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUtilityUnitTest.php +++ b/docroot/themes/contrib/civictheme/tests/src/Unit/CivicthemeUtilityUnitTest.php @@ -10,6 +10,7 @@ * Test cases for utility functions. * * @group CivicTheme + * @group site:unit */ class CivicthemeUtilityUnitTest extends CivicthemeUnitTestBase { diff --git a/docroot/themes/contrib/civictheme/theme-settings.provision.inc b/docroot/themes/contrib/civictheme/theme-settings.provision.inc index 78ccf6571..48e01e577 100644 --- a/docroot/themes/contrib/civictheme/theme-settings.provision.inc +++ b/docroot/themes/contrib/civictheme/theme-settings.provision.inc @@ -17,6 +17,7 @@ use Drupal\block\Entity\Block; use Drupal\civictheme\CivicthemeConfigImporter; use Drupal\civictheme\CivicthemeConfigManager; use Drupal\civictheme\CivicthemeConstants; +use Drupal\Core\Config\FileStorage; use Drupal\Core\File\FileSystemInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; @@ -409,6 +410,7 @@ function civictheme_provision_place_block($label, $region, $uuid = NULL, array $ 'visibility' => [], 'weight' => 0, ]; + unset($settings['label_machine_name']); $values = []; // Remove extra values that do not belong in the settings array. @@ -651,6 +653,13 @@ function _civictheme_provision__blocks__menu_blocks() { civictheme_provision_place_block('Side Navigation', 'sidebar', NULL, [ 'plugin' => 'menu_block:civictheme-primary-navigation', 'depth' => 3, + 'visibility' => [ + 'request_path' => [ + 'id' => 'request_path', + 'negate' => TRUE, + 'pages' => '/search', + ], + ], ]); civictheme_provision_place_block('Footer menu 1', 'footer_middle_1', NULL, [ 'plugin' => 'menu_block:civictheme-footer', @@ -681,7 +690,7 @@ function _civictheme_provision__blocks__banner(array $block) { $block_content = civictheme_provision_create_block_content($block['type'], $block['name'], $block['uuid']); $block_content->field_c_b_background_image = civictheme_provision_load_media_by_name("{$theme_name}_background_1.png"); $block_content->field_c_b_theme = 'dark'; - $block_content->field_c_b_blend_mode = 'soft-light'; + $block_content->field_c_b_banner_blend_mode = 'soft-light'; $block_content->field_c_b_banner_type = 'default'; $block_content->field_c_b_featured_image = civictheme_provision_load_media_by_name("demo_image.jpg"); $block_content->save(); @@ -701,15 +710,20 @@ function _civictheme_provision__blocks__search(array $block) { $search_path = '/search'; $fallback_path = '/'; - /** @var \Drupal\path_alias\AliasRepositoryInterface $alias_repository */ - $alias_repository = \Drupal::service('path_alias.repository'); - $alias = $alias_repository->lookupByAlias($search_path, \Drupal::languageManager()->getCurrentLanguage()->getId()); - $uri = 'internal:' . ($alias ? $alias['path'] : $fallback_path); + $url_object = \Drupal::service('path.validator')->getUrlIfValid(ltrim($search_path, '/')); + + if (!$url_object instanceof Url) { + $search_path = $fallback_path; + } + + if (!str_starts_with($search_path, 'internal:')) { + $search_path = 'internal:' . $search_path; + } $block_content = civictheme_provision_create_block_content($block['type'], $block['name'], $block['uuid']); $block_content->field_c_b_link = [ 'title' => 'Search', - 'uri' => $uri, + 'uri' => $search_path, ]; $block_content->save(); civictheme_provision_place_block($block['name'], $block['region'], $block_content->uuid()); @@ -1010,23 +1024,69 @@ function civictheme_provision_permissions_map() { */ /** - * Helper to install modules required by CivicTheme. + * Install modules required by CivicTheme. + * + * This should be run before the theme is installed. + * + * @code + * drush php:eval "require_once dirname(\Drupal::getContainer()->get('theme_handler')->rebuildThemeData()['civictheme']->getPathname()) . '/theme-settings.provision.inc'; civictheme_enable_modules();" + * @endcode * * @see https://www.drupal.org/node/2652542 * @SuppressWarnings(PHPMD.StaticAccess) + * @SuppressWarnings(PHPMD.BooleanArgumentFlag) + * + * @param bool $include_optional + * Whether to include optional dependencies. Defaults to TRUE. + * + * @throws \Drupal\Core\Extension\ExtensionNameLengthException + * @throws \Drupal\Core\Extension\MissingDependencyException + */ +function civictheme_enable_modules($include_optional = TRUE) { + $dependencies = _civictheme_get_theme_dependencies('civictheme', $include_optional); + \Drupal::getContainer()->get('module_installer')->install($dependencies); +} + +/** + * Get dependencies of a theme. + * + * @param string $theme_name + * The name of the theme. + * @param bool $include_optional + * Whether to include optional dependencies. Defaults to TRUE. + * + * @return string[] + * Array of dependency names. + * + * @SuppressWarnings(PHPMD.BooleanArgumentFlag) */ -function civictheme_enable_modules() { +function _civictheme_get_theme_dependencies(string $theme_name, $include_optional = TRUE) { /** @var \Drupal\Core\Extension\ThemeHandler $theme_handler */ $theme_handler = \Drupal::getContainer()->get('theme_handler'); $theme_data = $theme_handler->rebuildThemeData(); - if (!empty($theme_data['civictheme'])) { - $modules = array_keys($theme_data['civictheme']->module_dependencies); - /** @var \Drupal\Core\Extension\ModuleInstaller $module_installer */ - $module_installer = \Drupal::getContainer()->get('module_installer'); - $module_installer->install($modules); + // Merge dependencies from the theme's info file and from the 'optional' + // config. We are deliberately not including dependencies from the 'install' + // config to make sure that any unlisted required dependencies in the + // theme's .info file would trigger an error. + $dependencies = array_keys($theme_data['civictheme']->module_dependencies); + + if ($include_optional) { + $theme_path = $theme_data[$theme_name]->subpath; + $config_storage = new FileStorage($theme_path . '/config/optional'); + + foreach ($config_storage->listAll() as $name) { + $config_dependencies = $config_storage->read($name)['dependencies'] ?? []; + if (!empty($config_dependencies)) { + $dependencies = array_merge($dependencies, $config_dependencies['module'] ?? []); + } + } } + $dependencies = array_unique($dependencies); + $dependencies = array_diff($dependencies, [$theme_name]); + + return $dependencies; } /** diff --git a/phpcs.xml b/phpcs.xml index 759b8d1d2..c4333ed7c 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -36,6 +36,9 @@ .storybook/* webpack/* + + civictheme/build/* + docroot\/modules\/custom\/cs_generated_content\/generated_content\/node\/civictheme_page_variations\/.* diff --git a/scripts/composer/DrupalSettings.php b/scripts/composer/DrupalSettings.php index 649c1e1d7..6bbe95b26 100644 --- a/scripts/composer/DrupalSettings.php +++ b/scripts/composer/DrupalSettings.php @@ -149,13 +149,13 @@ protected static function getDefaultDrupalSettingsContent($options) { [ 'default' => [ - 'database' => getenv('MARIADB_DATABASE') ?: (getenv('DREVOPS_MARIADB_DATABASE') ?: '${options['mysql_database']}'), - 'username' => getenv('MARIADB_USERNAME') ?: (getenv('DREVOPS_MARIADB_USERNAME') ?: '${options['mysql_user']}'), - 'password' => getenv('MARIADB_PASSWORD') ?: (getenv('DREVOPS_MARIADB_PASSWORD') ?: '${options['mysql_password']}'), - 'host' => getenv('MARIADB_HOST') ?: (getenv('DREVOPS_MARIADB_HOST') ?: '${options['mysql_host']}'), - 'port' => getenv('MARIADB_PORT') ?: (getenv('DREVOPS_MARIADB_PORT') ?: '${options['mysql_port']}'), + 'database' => getenv('MARIADB_DATABASE') ?: (getenv('DREVOPS_MARIADB_DATABASE') ?: '{$options['mysql_database']}'), + 'username' => getenv('MARIADB_USERNAME') ?: (getenv('DREVOPS_MARIADB_USERNAME') ?: '{$options['mysql_user']}'), + 'password' => getenv('MARIADB_PASSWORD') ?: (getenv('DREVOPS_MARIADB_PASSWORD') ?: '{$options['mysql_password']}'), + 'host' => getenv('MARIADB_HOST') ?: (getenv('DREVOPS_MARIADB_HOST') ?: '{$options['mysql_host']}'), + 'port' => getenv('MARIADB_PORT') ?: (getenv('DREVOPS_MARIADB_PORT') ?: '{$options['mysql_port']}'), 'driver' => 'mysql', - 'prefix' => '${options['mysql_prefix']}', + 'prefix' => '{$options['mysql_prefix']}', ], ], ]; diff --git a/scripts/custom/drupal-install-site-1-enable-modules.sh b/scripts/custom/drupal-install-site-1-enable-theme-modules.sh similarity index 100% rename from scripts/custom/drupal-install-site-1-enable-modules.sh rename to scripts/custom/drupal-install-site-1-enable-theme-modules.sh diff --git a/scripts/custom/drupal-install-site-2-activate-subtheme.sh b/scripts/custom/drupal-install-site-2-activate-subtheme.sh index fe041c3e7..85bccc7db 100755 --- a/scripts/custom/drupal-install-site-2-activate-subtheme.sh +++ b/scripts/custom/drupal-install-site-2-activate-subtheme.sh @@ -12,7 +12,7 @@ APP="${APP:-/app}" # ------------------------------------------------------------------------------ -[ "${CIVICTHEME_SKIP_SUBTHEME_ACTIVATION}" = "1" ] && echo "Skipping sub-theme activation" && return +[ "${CIVICTHEME_SUBTHEME_ACTIVATION_SKIP}" = "1" ] && echo "Skipping sub-theme activation" && return # Use local or global Drush, giving priority to a local drush. drush="$(if [ -f "${APP}/vendor/bin/drush" ]; then echo "${APP}/vendor/bin/drush"; else command -v drush; fi)" @@ -30,7 +30,7 @@ $drush theme:enable civictheme_demo -y echo " > Setting civictheme_demo as a default theme." $drush config-set system.theme default civictheme_demo -y -if [ "$CIVICTHEME_SKIP_SUBTHEME_FE" != "1" ] && command -v npm &> /dev/null; then +if [ "$CIVICTHEME_SUBTHEME_FE_SKIP" != "1" ] && command -v npm &> /dev/null; then pushd $APP/docroot/themes/custom/civictheme_demo >/dev/null || exit 1 if [ ! -d $APP/docroot/themes/custom/civictheme_demo/node_modules ]; then diff --git a/scripts/custom/drupal-install-site-3-enable-modules.sh b/scripts/custom/drupal-install-site-3-enable-modules.sh new file mode 100755 index 000000000..f771c96fa --- /dev/null +++ b/scripts/custom/drupal-install-site-3-enable-modules.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +## +# Enable other modules. +# +# shellcheck disable=SC2086 + +set -e +[ -n "${DREVOPS_DEBUG}" ] && set -x + +# Path to the application. +APP="${APP:-/app}" + +# ------------------------------------------------------------------------------ + +# Use local or global Drush, giving priority to a local drush. +drush="$(if [ -f "${APP}/vendor/bin/drush" ]; then echo "${APP}/vendor/bin/drush"; else command -v drush; fi)" + +if [ "${DREVOPS_DRUPAL_PROFILE}" = "govcms" ]; then + echo " > Remove GovCMS configs." + $drush -y pm-enable civictheme_govcms + $drush civictheme_govcms:remove-config +else + echo " > Enable Admin module." + $drush -y pm-enable civictheme_admin +fi + +echo " > Enable development module." +$drush -y pm-enable civictheme_dev diff --git a/scripts/custom/drupal-install-site-3-provision-content.sh b/scripts/custom/drupal-install-site-4-provision-content.sh similarity index 70% rename from scripts/custom/drupal-install-site-3-provision-content.sh rename to scripts/custom/drupal-install-site-4-provision-content.sh index 864a877da..77f31ea2b 100755 --- a/scripts/custom/drupal-install-site-3-provision-content.sh +++ b/scripts/custom/drupal-install-site-4-provision-content.sh @@ -15,15 +15,6 @@ APP="${APP:-/app}" # Use local or global Drush, giving priority to a local drush. drush="$(if [ -f "${APP}/vendor/bin/drush" ]; then echo "${APP}/vendor/bin/drush"; else command -v drush; fi)" -if [ "${DREVOPS_DRUPAL_PROFILE}" = "govcms" ]; then - echo " > Remove GovCMS configs." - $drush -y pm-enable civictheme_govcms - $drush civictheme_govcms:remove-config -else - echo " > Enable Admin module." - $drush -y pm-enable civictheme_admin -fi - if [ -n "${CIVICTHEME_CONTENT_PROFILE}" ]; then echo " > Provisioning content from \"${CIVICTHEME_CONTENT_PROFILE}\" content profile." $drush -y pm-enable civictheme_content @@ -32,13 +23,7 @@ else $drush php:eval -v "require_once '/app/docroot/themes/contrib/civictheme/theme-settings.provision.inc'; civictheme_provision_cli();" fi -echo " > Enable development module." -$drush -y pm-enable civictheme_dev - -if [ "${CIVICTHEME_SKIP_GENERATED_CONTENT_CREATE}" != "1" ]; then - echo " > Enable migration modules." - $drush -y pm-enable civictheme_migrate - +if [ "${CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP}" != "1" ]; then echo " > Generate test content." GENERATED_CONTENT_CREATE=1 $drush -y pm-enable cs_generated_content diff --git a/scripts/deploy-code-commit.sh b/scripts/deploy-code-commit.sh new file mode 100755 index 000000000..7046a3ef1 --- /dev/null +++ b/scripts/deploy-code-commit.sh @@ -0,0 +1,226 @@ +#!/usr/bin/env bash +## +# Deploy code commit. +# +# Push code repository releases to another repository. +# +# Optionally, select which subdirectory in the source repository is copied to +# which location in the destination repository. +# +# Optionally, provide a custom .gitignore.release file with included and +# excluded source files. Useful for including artifacts produced by CI that +# are not committed in the source repository. +# +# shellcheck disable=SC2086 + +set -e +[ -n "${DREVOPS_DEBUG}" ] && set -x + +CURDIR="$(cd "$(dirname "$1")"; pwd -P)/$(basename "$1")" + +# Remote repository URL. +DEPLOY_CODE_COMMIT_REMOTE_REPO="${DEPLOY_CODE_COMMIT_REMOTE_REPO:-}" + +# Remote repository branch to push commits to. +DEPLOY_CODE_COMMIT_REMOTE_BRANCH="${DEPLOY_CODE_COMMIT_REMOTE_BRANCH:-}" + +# Absolute path to the directory to copy files from. +# Defaults to the current directory. +DEPLOY_CODE_COMMIT_SRC_DIR="${DEPLOY_CODE_COMMIT_SRC_DIR:-${CURDIR}}" + +# Relative path to the directory within the destination repository. +# Defaults to the root of the destination repository. +DEPLOY_CODE_COMMIT_DST_DIR="${DEPLOY_CODE_COMMIT_DST_DIR:-./}" + +# Custom .gitignore location to replace .gitignore in the DEPLOY_CODE_COMMIT_SRC_DIR +# in order to selectively include and exclude directories that are going into +# the release. +# If does not exist - the current .gitignore will be left unchanged. +DEPLOY_CODE_COMMIT_GITIGNORE="${DEPLOY_CODE_COMMIT_GITIGNORE:-${DEPLOY_CODE_COMMIT_SRC_DIR}/.gitignore.release}" + +# Email address of the user who will be committing to a remote repository. +DEPLOY_GIT_USER_NAME="${DEPLOY_GIT_USER_NAME:-"Deployer Robot"}" + +# Name of the user who will be committing to a remote repository. +DEPLOY_GIT_USER_EMAIL="${DEPLOY_GIT_USER_EMAIL:-}" + +# SSH key fingerprint used to connect to a remote. If not used, the currently +# loaded default SSH key (the key used for code checkout) will be used or +# deployment will fail with an error if the default SSH key is not loaded. +# In most cases, the default SSH key does not work (because it is a read-only +# key used by CircleCI to checkout code from git), so you should add another +# deployment key. +DEPLOY_SSH_FINGERPRINT="${DEPLOY_SSH_FINGERPRINT:-}" + +# Default SSH file used if custom fingerprint is not provided. +DEPLOY_SSH_FILE="${DEPLOY_SSH_FILE:-${HOME}/.ssh/id_rsa}" + +# Proceed with push. +DEPLOY_CODE_COMMIT_PUSH_PROCEED="${DEPLOY_CODE_COMMIT_PUSH_PROCEED:-0}" + +################################################################################ + +echo "==> Started code release." + +# Check all required values. +[ -z "${DEPLOY_CODE_COMMIT_REMOTE_REPO}" ] && echo "Missing required value for DEPLOY_CODE_COMMIT_REMOTE_REPO." && exit 1 +[ -z "${DEPLOY_CODE_COMMIT_REMOTE_BRANCH}" ] && echo "Missing required value for DEPLOY_CODE_COMMIT_REMOTE_BRANCH." && exit 1 +[ -z "${DEPLOY_CODE_COMMIT_SRC_DIR}" ] && echo "Missing required value for DEPLOY_CODE_COMMIT_SRC_DIR." && exit 1 +[ -z "${DEPLOY_CODE_COMMIT_DST_DIR}" ] && echo "Missing required value for DEPLOY_CODE_COMMIT_DST_DIR." && exit 1 +[ -z "${DEPLOY_CODE_COMMIT_GITIGNORE}" ] && echo "Missing required value for DEPLOY_CODE_COMMIT_GITIGNORE." && exit 1 +[ -z "${DEPLOY_GIT_USER_NAME}" ] && echo "Missing required value for DEPLOY_GIT_USER_NAME." && exit 1 +[ -z "${DEPLOY_GIT_USER_EMAIL}" ] && echo "Missing required value for DEPLOY_GIT_USER_EMAIL." && exit 1 + +[ ! -d "${DEPLOY_CODE_COMMIT_SRC_DIR}" ] && echo "ERROR: Unable to find source directory ${DEPLOY_CODE_COMMIT_SRC_DIR}." && exit 1 + +## +## Git and SSH key setup. +## + +# Configure global git settings, if they do not exist. +[ "$(git config --global user.name)" == "" ] && echo "==> Configuring global git user name." && git config --global user.name "${DEPLOY_GIT_USER_NAME}" +[ "$(git config --global user.email)" == "" ] && echo "==> Configuring global git user email." && git config --global user.email "${DEPLOY_GIT_USER_EMAIL}" + +# Use custom deploy key if the fingerprint was provided. +if [ -n "${DEPLOY_SSH_FINGERPRINT}" ]; then + echo "==> Custom deployment key is provided." + DEPLOY_SSH_FILE="${DEPLOY_SSH_FINGERPRINT//:}" + DEPLOY_SSH_FILE="${HOME}/.ssh/id_rsa_${DEPLOY_SSH_FILE//\"}" +fi + +[ ! -f "${DEPLOY_SSH_FILE}" ] && echo "ERROR: SSH key file ${DEPLOY_SSH_FILE} does not exist." && exit 1 + +# Check if the key is loaded or load the key. +if ssh-add -l | grep -q "${DEPLOY_SSH_FILE}"; then + echo "==> SSH agent has ${DEPLOY_SSH_FILE} key loaded." +else + echo "==> SSH agent does not have default key loaded. Trying to load." + # Remove all other keys and add SSH key from provided fingerprint into SSH agent. + ssh-add -D > /dev/null + ssh-add "${DEPLOY_SSH_FILE}" +fi + +# Disable strict host key checking in CI. +[ -n "${CI}" ] && mkdir -p "${HOME}/.ssh/" && echo -e "\nHost *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile /dev/null\n" >> "${HOME}/.ssh/config" + +## +## Code release. +## + +# +# Remove content between #;< and #;> comments. +# +remove_special_comments_with_content() { + local token="${1}" + local dir="${2}" + local sed_opts + + sed_opts=(-i) && [ "$(uname)" == "Darwin" ] && sed_opts=(-i '') + grep -rI \ + --exclude-dir=".git" \ + --exclude-dir=".idea" \ + --exclude-dir="vendor" \ + --exclude-dir="node_modules" \ + -l "#;> $token" "${dir}" \ + | LC_ALL=C.UTF-8 xargs sed "${sed_opts[@]}" -e "/#;< $token/,/#;> $token/d" || true +} + +# +# Replace string content. +# +replace_string_content() { + local needle="${1}" + local replacement="${2}" + local dir="${3}" + local sed_opts + + sed_opts=(-i) && [ "$(uname)" == "Darwin" ] && sed_opts=(-i '') + grep -rI \ + --exclude-dir=".git" \ + --exclude-dir=".idea" \ + --exclude-dir="vendor" \ + --exclude-dir="node_modules" \ + -l "${needle}" "${dir}" \ + | xargs sed "${sed_opts[@]}" "s@$needle@$replacement@g" || true +} + +# Create a temp directory to copy source repository into to prevent changes to source. +SRC_TMPDIR=$(mktemp -d) + +echo "==> Copying files from the source repository to ${SRC_TMPDIR}." +rsync -a --keep-dirlinks ./. "${SRC_TMPDIR}" +[ -n "${DREVOPS_DEBUG}" ] && tree -L 4 "${SRC_TMPDIR}" + +# Move to the temp source repo directory. +pushd "${SRC_TMPDIR}" >/dev/null || exit 1 + +# Reset any changes that may have been introduced during the CI run. +git reset --hard + +latest_commit="$(git rev-parse HEAD)" +latest_commit_msg="$(git log -1 --pretty=%B)" +latest_commit_author="$(git show -s --format='%an <%ae>' HEAD)" + +echo " > Latest commit: ${latest_commit}." +echo " > Latest commit message: ${latest_commit_msg}." +echo " > Latest commit author: ${latest_commit_author}." + +popd >/dev/null || exit 1 + +# Create a temp directory to checkout destination repository into. +DST_TMPDIR=$(mktemp -d) + +# Move to the temp destination repo directory. +pushd "${DST_TMPDIR}" >/dev/null || exit 1 + +echo "==> Initialising an empty repository in ${DST_TMPDIR}." +git init -q + +echo "==> Checking out remote branch ${DEPLOY_CODE_COMMIT_REMOTE_BRANCH}." +git remote add destination "${DEPLOY_CODE_COMMIT_REMOTE_REPO}" +git fetch --all +git checkout -b "${DEPLOY_CODE_COMMIT_REMOTE_BRANCH}" "destination/${DEPLOY_CODE_COMMIT_REMOTE_BRANCH}" + +# Clear files before adding new files to make sure that only the contents of +# the source repository at the latest version is present. +echo "==> Clearing files in ${DEPLOY_CODE_COMMIT_DST_DIR}." +git ls-tree -d --name-only --full-name -r HEAD "${DEPLOY_CODE_COMMIT_DST_DIR}/" | xargs rm -Rf +git ls-tree --full-tree --name-only -r HEAD "${DEPLOY_CODE_COMMIT_DST_DIR}/" | xargs rm -Rf + +echo "==> Copying files from ${DEPLOY_CODE_COMMIT_SRC_DIR} to ${DEPLOY_CODE_COMMIT_DST_DIR}." +[ -n "${DREVOPS_DEBUG}" ] && tree -L 4 "${DEPLOY_CODE_COMMIT_SRC_DIR}" +# Copy all files, but preserve .git directory. +mv ".git" ".git.bak" +rsync -a --keep-dirlinks "${DEPLOY_CODE_COMMIT_SRC_DIR}/." "${DEPLOY_CODE_COMMIT_DST_DIR}" +rm -Rf .git +mv ".git.bak" ".git" + +echo "==> Removing development code in ${DEPLOY_CODE_COMMIT_DST_DIR}." +remove_special_comments_with_content "DEVELOPMENT" "${DEPLOY_CODE_COMMIT_DST_DIR}" + +# Allow to provide custom .gitignore. +if [ -f "${DEPLOY_CODE_COMMIT_GITIGNORE}" ]; then + echo "==> Copying release .gitignore file ${DEPLOY_CODE_COMMIT_GITIGNORE} to ${DEPLOY_CODE_COMMIT_DST_DIR}/.gitignore" + cp -Rf "${DEPLOY_CODE_COMMIT_GITIGNORE}" "${DEPLOY_CODE_COMMIT_DST_DIR}/.gitignore" +fi + +echo -n "==> Checking for changes... " +status="$(git status)" +if [ -z "${status##*nothing to commit*}" ]; then + echo "no changes were found. Nothing will be updated." +else + echo "==> Committing new changes." + git add -A + git commit -m "${latest_commit_msg}" --author="${latest_commit_author}" + + echo "==> Pushing to remote." + if [ "${DEPLOY_CODE_COMMIT_PUSH_PROCEED}" = "1" ]; then + git push destination "${DEPLOY_CODE_COMMIT_REMOTE_BRANCH}" + else + echo "Would push to remote, but DEPLOY_CODE_COMMIT_PUSH_PROCEED is not set to 1." + fi +fi + +popd >/dev/null || exit 1 + +echo "==> Finished code release." diff --git a/scripts/deploy-code-release.sh b/scripts/deploy-code-release.sh index 386982360..287460f19 100755 --- a/scripts/deploy-code-release.sh +++ b/scripts/deploy-code-release.sh @@ -2,7 +2,7 @@ ## # Deploy code release. # -# Mirror code repository releases to another repository with logs created from +# Push code repository releases to another repository with logs created from # the commits between release tags. # # Optionally, select which subdirectory in the source repository is copied to diff --git a/scripts/drevops/lint.sh b/scripts/drevops/lint.sh index 45cff79db..4577b16d4 100755 --- a/scripts/drevops/lint.sh +++ b/scripts/drevops/lint.sh @@ -63,5 +63,8 @@ fi # Lint theme configuration. if [ -z "${DREVOPS_LINT_TYPE##*config*}" ]; then # Lint theme configuration. - ./scripts/lint-theme-config.sh + ./scripts/lint-theme-config.sh || [ "${DREVOPS_LINT_CONFIG_ALLOW_FAILURE:-0}" -eq 1 ] + + # Lint theme schema. + ./vendor/bin/drush inspect_config civictheme.settings --detail --only-error fi diff --git a/scripts/drevops/test.sh b/scripts/drevops/test.sh index e5786f635..422fe076f 100755 --- a/scripts/drevops/test.sh +++ b/scripts/drevops/test.sh @@ -29,12 +29,21 @@ set -e # Flag to allow Unit tests to fail. DREVOPS_TEST_UNIT_ALLOW_FAILURE="${DREVOPS_TEST_UNIT_ALLOW_FAILURE:-0}" +# Group to run Unit tests. +DREVOPS_TEST_UNIT_GROUP="${DREVOPS_TEST_UNIT_GROUP:-site:unit}" + # Flag to allow Kernel tests to fail. DREVOPS_TEST_KERNEL_ALLOW_FAILURE="${DREVOPS_TEST_KERNEL_ALLOW_FAILURE:-0}" +# Group to run Kernel tests. +DREVOPS_TEST_KERNEL_GROUP="${DREVOPS_TEST_KERNEL_GROUP:-site:kernel}" + # Flag to allow Functional tests to fail. DREVOPS_TEST_FUNCTIONAL_ALLOW_FAILURE="${DREVOPS_TEST_FUNCTIONAL_ALLOW_FAILURE:-0}" +# Group to run Functional tests. +DREVOPS_TEST_FUNCTIONAL_GROUP="${DREVOPS_TEST_FUNCTIONAL_GROUP:-site:functional}" + # Flag to allow BDD tests to fail. DREVOPS_TEST_BDD_ALLOW_FAILURE="${DREVOPS_TEST_BDD_ALLOW_FAILURE:-0}" @@ -70,7 +79,6 @@ if [ -z "${DREVOPS_TEST_TYPE##*fe*}" ] && [ -n "${DREVOPS_DRUPAL_THEME}" ]; then echo "==> Run front-end tests." if [ -d "docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library/node_modules" ]; then npm run --prefix "docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library" test || \ - # Flag to allow test to fail. [ "${DREVOPS_TEST_FE_ALLOW_FAILURE}" -eq 1 ] fi else @@ -85,19 +93,25 @@ fi if [ -z "${DREVOPS_TEST_TYPE##*unit*}" ]; then echo "==> Run unit tests." - phpunit_opts=(-c /app/docroot/core/phpunit.xml.dist) + # Generic tests that do not require Drupal bootstrap. + phpunit_opts=() [ -n "${DREVOPS_TEST_REPORTS_DIR}" ] && phpunit_opts+=(--log-junit "${DREVOPS_TEST_REPORTS_DIR}"/phpunit/unit.xml) + vendor/bin/phpunit "${phpunit_opts[@]:-}" tests/phpunit --group "${DREVOPS_TEST_UNIT_GROUP}" "$@" \ + || [ "${DREVOPS_TEST_UNIT_ALLOW_FAILURE}" -eq 1 ] - vendor/bin/phpunit "${phpunit_opts[@]}" docroot/modules/custom/ --filter '/.*Unit.*/' "$@" \ + # Custom modules tests that require Drupal bootstrap. + phpunit_opts=(-c /app/docroot/core/phpunit.xml.dist) + [ -n "${DREVOPS_TEST_REPORTS_DIR}" ] && phpunit_opts+=(--log-junit "${DREVOPS_TEST_REPORTS_DIR}"/phpunit/unit_modules.xml) + vendor/bin/phpunit "${phpunit_opts[@]}" docroot/modules/custom --group "${DREVOPS_TEST_UNIT_GROUP}" "$@" \ || [ "${DREVOPS_TEST_UNIT_ALLOW_FAILURE}" -eq 1 ] + # Custom theme tests that require Drupal bootstrap. if [ -n "${DREVOPS_DRUPAL_THEME}" ]; then - vendor/bin/phpunit "${phpunit_opts[@]}" "docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}" --filter '/.*Unit.*/' "$@" \ + phpunit_opts=(-c /app/docroot/core/phpunit.xml.dist) + [ -n "${DREVOPS_TEST_REPORTS_DIR}" ] && phpunit_opts+=(--log-junit "${DREVOPS_TEST_REPORTS_DIR}"/phpunit/unit_themes.xml) + vendor/bin/phpunit "${phpunit_opts[@]}" "docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}" --group "${DREVOPS_TEST_UNIT_GROUP}" "$@" \ || [ "${DREVOPS_TEST_UNIT_ALLOW_FAILURE}" -eq 1 ] fi - - vendor/bin/phpunit "${phpunit_opts[@]}" tests/phpunit/unit/ --filter '/.*Unit.*/' "$@" \ - || [ "${DREVOPS_TEST_UNIT_ALLOW_FAILURE}" -eq 1 ] fi if [ -z "${DREVOPS_TEST_TYPE##*kernel*}" ]; then @@ -106,7 +120,7 @@ if [ -z "${DREVOPS_TEST_TYPE##*kernel*}" ]; then phpunit_opts=(-c /app/docroot/core/phpunit.xml.dist) [ -n "${DREVOPS_TEST_REPORTS_DIR}" ] && phpunit_opts+=(--log-junit "${DREVOPS_TEST_REPORTS_DIR}"/phpunit/kernel.xml) - vendor/bin/phpunit "${phpunit_opts[@]}" docroot/modules/custom/ --filter '/.*Kernel.*/' "$@" \ + vendor/bin/phpunit "${phpunit_opts[@]}" docroot/modules/custom --group "${DREVOPS_TEST_KERNEL_GROUP}" "$@" \ || [ "${DREVOPS_TEST_KERNEL_ALLOW_FAILURE:-0}" -eq 1 ] fi @@ -116,8 +130,13 @@ if [ -z "${DREVOPS_TEST_TYPE##*functional*}" ]; then phpunit_opts=(-c /app/docroot/core/phpunit.xml.dist) [ -n "${DREVOPS_TEST_REPORTS_DIR}" ] && phpunit_opts+=(--log-junit "${DREVOPS_TEST_REPORTS_DIR}"/phpunit/functional.xml) - vendor/bin/phpunit "${phpunit_opts[@]}" docroot/modules/custom/ --filter '/.*Functional.*/' "$@" \ + vendor/bin/phpunit "${phpunit_opts[@]}" docroot/modules/custom --group "${DREVOPS_TEST_FUNCTIONAL_GROUP}" "$@" \ || [ "${DREVOPS_TEST_FUNCTIONAL_ALLOW_FAILURE:-0}" -eq 1 ] + + if [ -n "${DREVOPS_DRUPAL_THEME}" ]; then + vendor/bin/phpunit "${phpunit_opts[@]}" "docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}" --group "${DREVOPS_TEST_FUNCTIONAL_GROUP}" "$@" \ + || [ "${DREVOPS_TEST_FUNCTIONAL_ALLOW_FAILURE:-0}" -eq 1 ] + fi fi if [ -z "${DREVOPS_TEST_TYPE##*bdd*}" ]; then diff --git a/scripts/test-tooling.sh b/scripts/test-tooling.sh index a17083d33..0c4e4fee7 100755 --- a/scripts/test-tooling.sh +++ b/scripts/test-tooling.sh @@ -15,7 +15,7 @@ bats tests/bats/mock.bats --tap echo "==> Test Assets mock." bats tests/bats/assets.bats --tap -if [ "${CIVICTHEME_SKIP_LIBRARY_INSTALL}" != "1" ]; then +if [ "${CIVICTHEME_LIBRARY_INSTALL_SKIP}" != "1" ]; then echo " > Test Library assets." bats tests/bats/assets_library.bats --tap fi @@ -23,7 +23,7 @@ fi echo " > Test theme assets." bats tests/bats/assets.bats --tap -if [ "${CIVICTHEME_SKIP_SUBTHEME_ACTIVATION}" != "1" ]; then +if [ "${CIVICTHEME_SUBTHEME_ACTIVATION_SKIP}" != "1" ]; then if [ "${CIVICTHEME_INSTALL_SIBLING}" = "1" ]; then echo " > Test Sub-theme sibling assets." bats tests/bats/assets_demo_sibling.bats --tap diff --git a/scripts/theme_excluded_configs.txt b/scripts/theme_excluded_configs.txt index 5a40d975b..d1b16950d 100644 --- a/scripts/theme_excluded_configs.txt +++ b/scripts/theme_excluded_configs.txt @@ -41,7 +41,6 @@ block.block.civictheme_signup block.block.civictheme_social_links block.block.exposedformcivictheme_testpage_civictheme block_content.type.basic -civictheme_migrate.settings coffee.configuration comment.* config_devel.settings @@ -86,11 +85,14 @@ core.entity_view_mode.taxonomy_term.token core.entity_view_mode.user.compact core.entity_view_mode.user.full core.entity_view_mode.user.token +core.entity_view_mode.webform.token +core.entity_view_mode.webform_submission.token core.extension core.menu.static_menu_link_overrides dblog.settings encrypt.settings environment_indicator.settings +event_log_track.* field.field.user.user.field_last_password_reset field.field.user.user.field_password_expiration field.field.user.user.field_pending_expire_sent @@ -124,10 +126,9 @@ media.type.document* media.type.image* media.type.remote_video* media.type.video* +media_file_delete.settings media_library.settings menu_ui.settings -migrate_plus.migration.* -migrate_plus.migration_group.civictheme_migrate node.settings node.type.article* node.type.page* @@ -135,6 +136,10 @@ paragraphs.settings pathauto.settings rdf.mapping.user.user redirect.settings +search_api.index.civictheme_content +search_api.server.civictheme_database +search_api.settings +search_api_db.settings seckit.settings securitytxt.settings seven.settings @@ -149,6 +154,7 @@ simple_sitemap.type.default_hreflang simple_sitemap.type.index simple_sitemap.types.* stage_file_proxy* +syslog.settings system.action* system.advisories system.authorize @@ -188,6 +194,7 @@ views.view.archive views.view.block_content views.view.civictheme_automated_list_examples views.view.civictheme_automated_list_test +views.view.civictheme_search views.view.civictheme_table_examples views.view.comment views.view.comments* diff --git a/tests/behat/bootstrap/FeatureContext.php b/tests/behat/bootstrap/FeatureContext.php index 9fa744a18..42cf81f5b 100644 --- a/tests/behat/bootstrap/FeatureContext.php +++ b/tests/behat/bootstrap/FeatureContext.php @@ -30,6 +30,8 @@ use Drupal\Core\Extension\Exception\UnknownExtensionException; use Drupal\Core\Url; use Drupal\DrupalExtension\Context\DrupalContext; +use Drupal\node\Entity\Node; +use Drupal\search_api\Plugin\search_api\datasource\ContentEntity; /** * Defines application features from the specific context. @@ -360,4 +362,121 @@ public function themeVisitSettings($name = NULL) { $this->visitPath($url->toString()); } + /** + * Remove menu links by title. + * + * Fixed upstream method incorrectly throwing error on non-existing items. + * + * Provide menu link titles in the following format: + * | Test Menu | + * | ... | + * + * @Given no :menu_name menu_links: + */ + public function menuLinksDelete($menu_name, TableNode $table) { + foreach ($table->getColumn(0) as $title) { + try { + $menu_link = $this->loadMenuLinkByTitle($title, $menu_name); + if ($menu_link) { + $menu_link->delete(); + } + } + catch (\Exception $exception) { + continue; + } + } + } + + /** + * Remove block defined by machine name. + * + * @code + * Given no blocks: + * | user_login | + * @endcode + * + * @Given no blocks: + */ + public function blockDelete(TableNode $table) { + foreach ($table->getColumn(0) as $id) { + try { + $block = \Drupal::entityTypeManager() + ->getStorage('block') + ->load($id); + + if (empty($block)) { + throw new \Exception(sprintf('Unable to find block "%s"', $id)); + } + + $block->delete(); + } + catch (\Exception $exception) { + continue; + } + } + } + + /** + * Remove block_content defined by info. + * + * @code + * Given no content blocks: + * | Component block | + * @endcode + * + * @Given no content blocks: + */ + public function contentBlockDelete(TableNode $table) { + foreach ($table->getColumn(0) as $info) { + try { + $entities = \Drupal::entityTypeManager() + ->getStorage('block_content') + ->loadByProperties(['info' => $info]); + + if (empty($entities)) { + throw new \Exception(sprintf('Unable to find block_content with info "%s"', $info)); + } + + $entity = reset($entities); + $entity->delete(); + } + catch (\Exception $exception) { + continue; + } + } + } + + /** + * Index a node with all Search API indices. + * + * @When I index :type :title for search + */ + public function searchApiIndexContent($type, $title) { + $nids = $this->contentNodeLoadMultiple($type, [ + 'title' => $title, + ]); + + if (empty($nids)) { + throw new \RuntimeException(sprintf('Unable to find %s page "%s"', $type, $title)); + } + + ksort($nids); + $nid = end($nids); + $node = Node::load($nid); + + /** @var \Drupal\node\NodeInterface $node */ + $translations = array_keys($node->getTranslationLanguages()); + $get_ids = function (string $langcode) use ($nid): string { + return $nid . ':' . $langcode; + }; + $index_ids = array_map($get_ids, $translations); + $item_id = 'entity:node/' . $nid . ':' . reset($translations); + + $indexes = ContentEntity::getIndexesForEntity($node); + foreach ($indexes as $index) { + $index->trackItemsInserted('entity:node', $index_ids); + $index->indexSpecificItems([$item_id => $index->loadItem($item_id)]); + } + } + } diff --git a/tests/behat/features/block_type.civictheme_banner.fields.feature b/tests/behat/features/block_type.civictheme_banner.fields.feature index 13162498b..d74d9b2c2 100644 --- a/tests/behat/features/block_type.civictheme_banner.fields.feature +++ b/tests/behat/features/block_type.civictheme_banner.fields.feature @@ -9,6 +9,6 @@ Feature: Banner block fields And I should see an "[name='field_c_b_banner_type'].required" element And I should see an "[name='field_c_b_theme']" element And I should see an "[name='field_c_b_background_image[media_library_selection]']" element - And I should see an "[name='field_c_b_blend_mode']" element - And I should not see an "[name='field_c_b_blend_mode'].required" element + And I should see an "[name='field_c_b_banner_blend_mode']" element + And I should not see an "[name='field_c_b_banner_blend_mode'].required" element And I should see an "[name='field_c_b_featured_image[media_library_selection]']" element diff --git a/tests/behat/features/block_type.civictheme_mobile_navigation.fields.feature b/tests/behat/features/block_type.civictheme_mobile_navigation.fields.feature index 40fd773a6..45bbe65d1 100644 --- a/tests/behat/features/block_type.civictheme_mobile_navigation.fields.feature +++ b/tests/behat/features/block_type.civictheme_mobile_navigation.fields.feature @@ -3,7 +3,7 @@ Feature: Mobile Navigation block fields @api Scenario: Fields appear as expected - Given I am logged in as a user with the "Site Administrator" role + Given I am logged in as a user with the "Administrator" role When I go to "block/add/civictheme_mobile_navigation" Then I should see an "[name='field_c_b_top[0][target_id]']" element And I should not see an "[name='field_c_b_top[0][target_id]'].required" element diff --git a/tests/behat/features/block_type.civictheme_search.fields.feature b/tests/behat/features/block_type.civictheme_search.fields.feature index d7f5243a3..a34433a31 100644 --- a/tests/behat/features/block_type.civictheme_search.fields.feature +++ b/tests/behat/features/block_type.civictheme_search.fields.feature @@ -3,7 +3,7 @@ Feature: Search block fields @api Scenario: Fields appear as expected - Given I am logged in as a user with the "Site Administrator" role + Given I am logged in as a user with the "Administrator" role When I visit "block/add/civictheme_search" Then the response status code should be 200 And should see an "[name='field_c_b_link[0][uri]']" element diff --git a/tests/behat/features/block_type.civictheme_social_links.fields.feature b/tests/behat/features/block_type.civictheme_social_links.fields.feature index 64acd1d5c..0ebc0575f 100644 --- a/tests/behat/features/block_type.civictheme_social_links.fields.feature +++ b/tests/behat/features/block_type.civictheme_social_links.fields.feature @@ -3,7 +3,7 @@ Feature: Social Links block fields @api Scenario: Fields appear as expected - Given I am logged in as a user with the "Site Administrator" role + Given I am logged in as a user with the "Administrator" role When I visit "block/add/civictheme_social_links" Then the response status code should be 200 And I should see an "[name='field_c_b_theme']" element diff --git a/tests/behat/features/content_type.civictheme_page.fields.feature b/tests/behat/features/content_type.civictheme_page.fields.feature index 8e251dc21..8d71ba7bd 100644 --- a/tests/behat/features/content_type.civictheme_page.fields.feature +++ b/tests/behat/features/content_type.civictheme_page.fields.feature @@ -67,9 +67,9 @@ Feature: CivicTheme Page content type fields And should see an "[name='field_c_n_banner_background[media_library_selection]']" element And I see field "Banner background blend mode" - And should see an "[name='field_c_n_blend_mode']" element - And should see an "[name='field_c_n_blend_mode'].required" element - And should not see an "[name='field_c_n_blend_mode'][disabled]" element + And should see an "[name='field_c_n_banner_blend_mode']" element + And should see an "[name='field_c_n_banner_blend_mode'].required" element + And should not see an "[name='field_c_n_banner_blend_mode'][disabled]" element And I should see the text "Banner featured image" And should see an "[name='field_c_n_banner_featured_image[media_library_selection]']" element diff --git a/tests/behat/features/migrate.feature b/tests/behat/features/migrate.feature deleted file mode 100644 index f620b0ede..000000000 --- a/tests/behat/features/migrate.feature +++ /dev/null @@ -1,108 +0,0 @@ -@p1 @civictheme @civictheme_migrate -Feature: Tests the CivicTheme migration functionality - - Background: - Given managed file: - | filename | uri | path | - | civictheme_migrate.page_content_1.json | public://civictheme_migrate.page_content_1.json | civictheme_migrate.page_content_1.json | - | civictheme_migrate.page_content_2.json | public://civictheme_migrate.page_content_2.json | civictheme_migrate.page_content_2.json | - | civictheme_migrate.media_content_1.json | public://civictheme_migrate.media_content_1.json | civictheme_migrate.media_content_1.json | - | civictheme_migrate.media_content_2.json | public://civictheme_migrate.media_content_2.json | civictheme_migrate.media_content_2.json | - | civictheme_migrate.invalid_json_1.json | public://civictheme_migrate.invalid_json_1.json | civictheme_migrate.invalid_json_1.json | - - And I run drush "mr --group=civictheme_migrate" - And I run drush "cset civictheme_migrate.settings content_configuration_files [] -y" - And I run drush "cset civictheme_migrate.settings media_configuration_files [] -y" - - @api - Scenario Outline: Only administrator can access the CivicTheme migration configuration form - - Given I am logged in as a user with the "" role - When I go to "admin/config/civictheme-migrate" - Then the response status code should be - - Examples: - | role | code | - | civictheme_content_author | 403 | - | civictheme_content_approver | 403 | - | civictheme_site_administrator | 403 | - | administrator | 200 | - - @api @javascript - Scenario: Migration configuration form should be setup correctly - Given I am logged in as a user with the "administrator" role - When I go to "admin/config/civictheme-migrate" - Then I should see the text "CivicTheme Migrate Settings" - And I select the radio button "Local" - And I should see the text "Upload extracted content JSON Files" - And I should not see the text "Connect to remote API to retrieve extracted content JSON files" - And I should not see a visible "textarea[name='content_endpoint'][required='required']" element - And I should not see a visible "textarea[name='media_endpoint'][required='required']" element - And I select the radio button "Remote" - And I should see the text "Connect to remote API to retrieve extracted content JSON files" - And I see the text "Migration source Page content JSON URL endpoints" - And I see the text "Migration source Media JSON URL endpoints" - And I should see a visible "textarea[name='content_endpoint'][required='required']" element - And I should see a visible "textarea[name='media_endpoint'][required='required']" element - And I should not see a visible "input[name='auth_username'][required='required']" element - And I should not see a visible "input[name='auth_password'][required='required']" element - And I select the radio button "Basic authentication" - And I should see a visible "textarea[name='content_endpoint'][required='required']" element - And I should see a visible "textarea[name='media_endpoint'][required='required']" element - And I should see a visible "input[name='auth_username'][required='required']" element - And I should see a visible "input[name='auth_password'][required='required']" element - And I should see the button "Retrieve files" - And I should see the button "Save configuration" - - @api @javascript - Scenario: Valid Extracted content JSON can be retrieved and retriever handles incorrect URLs - Given I am logged in as a user with the "administrator" role - And I go to "admin/config/civictheme-migrate" - And I select the radio button "Remote" - And I fill in "Migration source Page content JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.page_content_1.json" - And I fill in "Migration source Media JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.media_content_1.json" - - When I fill in "Migration source Page content JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.invalid_json_1.json" - And I press the "Retrieve files" button - Then I should see the text "JSON is malformed / invalid" - - When I fill in "Migration source Media JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.invalid_json_1.json" - And I press the "Retrieve files" button - Then I should see the text "JSON is malformed / invalid" - - When I fill in "Migration source Page content JSON URL endpoints" with "http://nginx:8080/sites/default/files/file-does-not-exist.json" - And I press the "Retrieve files" button - Then I should see the message containing "Client error" - - @api @javascript - Scenario: Valid Extracted content JSON can be imported and a Migration can be setup - Given no page content: - | title | - | [TEST] Banner title - Migrated Content 1 | - - When I am logged in as an administrator - And I go to "admin/config/civictheme-migrate" - And I select the radio button "Remote" - And I fill in "Migration source Page content JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.page_content_1.json" - And I fill in "Migration source Media JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.media_content_1.json" - And I press the "Retrieve files" button - And I fill in "Migration source Page content JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.page_content_2.json" - And I fill in "Migration source Media JSON URL endpoints" with "http://nginx:8080/sites/default/files/civictheme_migrate.media_content_2.json" - And I press the "Retrieve files" button - Then I should see the message "Migration content files have been retrieved" - - When I press the "Generate migration" button - Then I should be in the "admin/structure/migrate/manage/civictheme_migrate/migrations" path - - When I run drush "mim --group=civictheme_migrate" - And I visit "/test/migrated-content-1" - Then I should see "[TEST] Banner title - Migrated Content 1" in the ".ct-banner__title" element - And I should see "Last updated: 8 Oct 2022" - And I should see an ".ct-layout.ct-vertical-spacing--both" element - And I should see an ".ct-banner.ct-theme-dark.ct-banner--decorative" element - And I should see an ".ct-banner__inner.ct-background--darken" element - - # Cleanup. - When I run drush "mr --group=civictheme_migrate" - And I run drush "cset civictheme_migrate.settings content_configuration_files [] -y" - And I run drush "cset civictheme_migrate.settings media_configuration_files [] -y" diff --git a/tests/behat/features/paragraph.civictheme_snippet.fields.feature b/tests/behat/features/paragraph.civictheme_snippet.fields.feature new file mode 100644 index 000000000..7c2b7c0d8 --- /dev/null +++ b/tests/behat/features/paragraph.civictheme_snippet.fields.feature @@ -0,0 +1,28 @@ +@p0 @civictheme @civictheme_snippet +Feature: Snippet fields + + @api + Scenario: Fields appear as expected + Given I am logged in as a user with the "Site Administrator" role + When I visit "node/add/civictheme_page" + And I fill in "Title" with "[TEST] Page fields" + When I press "Add Manual list" + And I press "Add Snippet" + + Then I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_title][0][value]']" element + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_title][0][value]'].required" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_title][0][value]'][disabled]" element + + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_summary][0][value]']" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_summary][0][value]'].required" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_summary][0][value]'][disabled]" element + + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_link][0][uri]']" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_link][0][uri]'].required" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_link][0][uri]'][disabled]" element + + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_topics][0][target_id]']" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_topics][0][target_id]'].required" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_topics][0][target_id]'][disabled]" element + + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_theme]']" element diff --git a/tests/behat/features/paragraph.civictheme_snippet.render.feature b/tests/behat/features/paragraph.civictheme_snippet.render.feature new file mode 100644 index 000000000..0810c7e20 --- /dev/null +++ b/tests/behat/features/paragraph.civictheme_snippet.render.feature @@ -0,0 +1,57 @@ +@p1 @civictheme @civictheme_snippet +Feature: Snippet render + + Background: + Given "civictheme_page" content: + | title | status | + | [TEST] Page Snippets test | 1 | + + And "civictheme_topics" terms: + | name | + | [TEST] Topic 1 | + | [TEST] Topic 2 | + | [TEST] Topic 3 | + + @api + Scenario: CivicTheme page content type page can be viewed by anonymous with Snippets + Given I am an anonymous user + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Page Snippets test" has "civictheme_manual_list" paragraph: + | field_c_p_title | [TEST] Snippet list | + | field_c_p_list_column_count | 4 | + | field_c_p_list_link_above | 0: View all snippets - 1: https://example.com | + | field_c_p_list_fill_width | 0 | + And "field_c_p_list_items" in "civictheme_manual_list" "paragraph" with "field_c_p_title" of "[TEST] Snippet list" has "civictheme_snippet" paragraph: + | field_c_p_title | Snippet title 1 | + | field_c_p_summary | Summary text 1 | + | field_c_p_link | 0: Test link - 1: https://example.com | + | field_c_p_topics | [TEST] Topic 1 | + | field_c_p_theme | light | + And "field_c_p_list_items" in "civictheme_manual_list" "paragraph" with "field_c_p_title" of "[TEST] Snippet list" has "civictheme_snippet" paragraph: + | field_c_p_title | Snippet title 2 | + | field_c_p_summary | Summary text 2 | + | field_c_p_link | 0: Test link - 1: https://example.com | + | field_c_p_topics | [TEST] Topic 2, [TEST] Topic 3 | + | field_c_p_theme | dark | + And "field_c_p_list_items" in "civictheme_manual_list" "paragraph" with "field_c_p_title" of "[TEST] Snippet list" has "civictheme_snippet" paragraph: + | field_c_p_title | Snippet title 3 | + | field_c_p_summary | Summary text 3 | + | field_c_p_link | 0: Test link - 1: https://example.com | + | field_c_p_theme | dark | + And "field_c_p_list_items" in "civictheme_manual_list" "paragraph" with "field_c_p_title" of "[TEST] Snippet list" has "civictheme_snippet" paragraph: + | field_c_p_title | Snippet title 4 | + | field_c_p_link | 0: Test link - 1: https://example.com | + | field_c_p_theme | dark | + + When I visit "civictheme_page" "[TEST] Page Snippets test" + And I should see the text "[TEST] Snippet list" + Then I should see the link "View all snippets" with "https://example.com" in '.ct-list' + And I should see 4 ".ct-snippet" elements + And I should see 4 ".ct-snippet__title" elements + And I should see 3 ".ct-snippet__summary" elements + And I should see the text "Snippet title 1" + And I should see the text "Snippet title 2" + And I should see the text "Snippet title 3" + And I should see the text "Snippet title 4" + And I should see the text "[TEST] Topic 1" + And I should see the text "[TEST] Topic 2" + And I should see the text "[TEST] Topic 3" diff --git a/tests/behat/features/paragraph.civictheme_snippet_ref.fields.feature b/tests/behat/features/paragraph.civictheme_snippet_ref.fields.feature new file mode 100644 index 000000000..6a499cb8f --- /dev/null +++ b/tests/behat/features/paragraph.civictheme_snippet_ref.fields.feature @@ -0,0 +1,16 @@ +@p0 @civictheme @civictheme_snippet_ref +Feature: Snippet reference fields + + @api + Scenario: Fields appear as expected + Given I am logged in as a user with the "Site Administrator" role + When I visit "node/add/civictheme_page" + And I fill in "Title" with "[TEST] Page fields" + When I press "Add Manual list" + And I press "Add Snippet reference" + + Then I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_reference][0][target_id]']" element + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_reference][0][target_id]'].required" element + And I should not see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_reference][0][target_id]'][disabled]" element + + And I should see an "[name='field_c_n_components[0][subform][field_c_p_list_items][0][subform][field_c_p_theme]']" element diff --git a/tests/behat/features/paragraph.civictheme_snippet_ref.render.feature b/tests/behat/features/paragraph.civictheme_snippet_ref.render.feature new file mode 100644 index 000000000..69ac8de32 --- /dev/null +++ b/tests/behat/features/paragraph.civictheme_snippet_ref.render.feature @@ -0,0 +1,47 @@ +@p0 @civictheme @civictheme_snippet_ref +Feature: Navigation reference card render + + Background: + Given "civictheme_topics" terms: + | name | + | [TEST] Topic 1 | + | [TEST] Topic 2 | + | [TEST] Topic 3 | + + And "civictheme_page" content: + | title | status | field_c_n_summary | field_c_n_topics | + | [TEST] Page with container | 1 | | | + | [TEST] Referenced Page 1 | 1 | Summary 1 | [TEST] Topic 1 | + | [TEST] Referenced Page 2 | 1 | Summary 2 | [TEST] Topic 2, [TEST] Topic 3 | + + @api + Scenario: Anonymous user can view Navigation reference card + Given I am an anonymous user + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Page with container" has "civictheme_manual_list" paragraph: + | field_c_p_title | [TEST] Reference list title | + | field_c_p_list_column_count | 3 | + | field_c_p_list_fill_width | 0 | + And "field_c_p_list_items" in "civictheme_manual_list" "paragraph" with "field_c_p_title" of "[TEST] Reference list title" has "civictheme_snippet_ref" paragraph: + | field_c_p_reference | [TEST] Referenced Page 1 | + | field_c_p_theme | light | + And "field_c_p_list_items" in "civictheme_manual_list" "paragraph" with "field_c_p_title" of "[TEST] Reference list title" has "civictheme_snippet_ref" paragraph: + | field_c_p_reference | [TEST] Referenced Page 2 | + | field_c_p_theme | dark | + + When I visit "civictheme_page" "[TEST] Page with container" + And I should see the text "[TEST] Reference list title" + And I should see 1 ".ct-list" elements + And I should see 2 ".ct-snippet" elements + And I should see 1 ".ct-snippet.ct-theme-light" elements + And I should see 1 ".ct-snippet.ct-theme-dark" elements + And I should see 2 ".ct-snippet__title" elements + And I should see 2 ".ct-snippet__summary" elements + And I should see 2 ".ct-snippet__title__link" elements + And I should see 2 ".ct-snippet__tags" elements + And I should see the text "[TEST] Referenced Page 1" + And I should see the text "Summary 1" + And I should see the text "[TEST] Topic 1" + And I should see the text "[TEST] Referenced Page 2" + And I should see the text "Summary 2" + And I should see the text "[TEST] Topic 2" + And I should see the text "[TEST] Topic 3" diff --git a/tests/behat/features/search.feature b/tests/behat/features/search.feature new file mode 100644 index 000000000..1222a0cbd --- /dev/null +++ b/tests/behat/features/search.feature @@ -0,0 +1,115 @@ +@search @p1 +Feature: Search API + + As a site user, I want to search for content. + + @api + Scenario: User searches for Page content + Given civictheme_page content: + | title | status | field_c_n_summary | + | [TEST] Search result 1 firstuniquestring | 1 | Summary 1 firstuniquestringsummary | + | [TEST] Search result 2 seconduniquestring | 1 | Summary 2 seconduniquestringsummary | + | [TEST] Search result 3 thirduniquestring | 1 | Summary 3 thirduniquestringsummary | + + # Page 1, 3 searchable strings: 2 unique and 1 shared. + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 1 firstuniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 1 content 1

test content fourthuniquestring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 1 firstuniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 1 content 2

test content fifthuniquestring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 1 firstuniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 1 content 3

test content firstsharedstring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + + # Page 2, 3 searchable strings: 2 unique and 1 shared. + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 2 seconduniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 2 content 1

test content sixthuniquestring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 2 seconduniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 2 content 2

test content seventhuniquestring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 2 seconduniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 2 content 3

test content firstsharedstring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + + # Page 2, 3 searchable strings: 2 unique and 1 shared. + And "field_c_n_components" in "civictheme_page" "node" with "title" of "[TEST] Search result 3 thirduniquestring" has "civictheme_content" paragraph: + | field_c_p_theme | light | + | field_c_p_content:value |

[TEST] Page 3 content 1

test content eighthuniquestring

| + | field_c_p_content:format | civictheme_rich_text | + | field_c_p_background | 0 | + + And I index "civictheme_page" "[TEST] Search result 1 firstuniquestring" for search + And I index "civictheme_page" "[TEST] Search result 2 seconduniquestring" for search + And I index "civictheme_page" "[TEST] Search result 3 thirduniquestring" for search + + And I go to the homepage + And I click "Search" + And I wait 2 seconds + Then I should see "Search" in the ".ct-heading" element + And I should not see a ".ct-side-navigation" element + + # Search for common strings. + When I fill in "keywords" with "test" + And I press "Search" + Then I should see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should see "firstuniquestringsummary" in the ".ct-list" element + And I should see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should see "seconduniquestringsummary" in the ".ct-list" element + And I should see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element + And I should see "thirduniquestringsummary" in the ".ct-list" element + + # Search for unique strings in Title. + When I fill in "keywords" with "firstuniquestring" + And I press "Search" + Then I should see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element + + # Search for unique strings in Summary. + When I fill in "keywords" with "seconduniquestringsummary" + And I press "Search" + Then I should not see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element + + # Search for unique strings in content. + When I fill in "keywords" with "fourthuniquestring" + And I press "Search" + Then I should see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element + + # Search for unique strings in content across multiple pages. + When I fill in "keywords" with "fourthuniquestring sixthuniquestring" + And I press "Search" + Then I should see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element + + # Search for shared strings in content across multiple pages. + When I fill in "keywords" with "firstsharedstring" + And I press "Search" + Then I should see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should not see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element + + # Search for unique and shared strings in content across multiple pages. + When I fill in "keywords" with "firstsharedstring eighthuniquestring" + And I press "Search" + Then I should see "[TEST] Search result 1 firstuniquestring" in the ".ct-list" element + And I should see "[TEST] Search result 2 seconduniquestring" in the ".ct-list" element + And I should see "[TEST] Search result 3 thirduniquestring" in the ".ct-list" element diff --git a/tests/behat/features/table.render.feature b/tests/behat/features/table.render.feature index c8a128972..b7275ec4e 100644 --- a/tests/behat/features/table.render.feature +++ b/tests/behat/features/table.render.feature @@ -4,8 +4,8 @@ Feature: Table render @api @testmode Scenario: Views page should show table with correct markup. Given civictheme_page content: - | title | status | created | - | [TEST] Page 1 | 1 | [relative:1 second ago] | + | title | status | created | + | [TEST] Page 1 | 1 | [relative:1 second ago] | | [TEST] Page 2 | 1 | [relative:2 seconds ago] | | [TEST] Page 3 | 1 | [relative:3 seconds ago] | | [TEST] Page 4 | 1 | [relative:4 seconds ago] | diff --git a/tests/behat/features/theme.settings.components.feature b/tests/behat/features/theme.settings.components.feature index 1c9c4926f..7669b4333 100644 --- a/tests/behat/features/theme.settings.components.feature +++ b/tests/behat/features/theme.settings.components.feature @@ -60,6 +60,10 @@ Feature: Components settings are available in the theme settings And I should see an "input[name='components[header][theme]']" element And I should see an "#edit-components-header-theme--wrapper.required" element + And I should see the text "Content" + And I should see an "input[name='components[site_slogan][content]']" element + And I should see an "#edit-components-site-slogan-content.required" element + And I should see the text "Theme" And I should see an "input[name='components[footer][theme]']" element And I should see an "#edit-components-footer-theme--wrapper.required" element @@ -213,6 +217,34 @@ Feature: Components settings are available in the theme settings And I check the box "Confirm settings reset" And I press "reset_to_defaults" Then I should see the text "Theme configuration was reset to defaults." + + @api + Scenario: The CivicTheme theme settings verify custom logo configuration with SVG image upload + Given I am logged in as a user with the "Site Administrator" role + And I visit current theme settings page + + When I attach the file "test_image_logo_svg_light_desktop.svg" to "Upload Primary Light logo for Desktop" + And I attach the file "test_image_logo_svg_light_mobile.svg" to "Upload Primary Light logo for Mobile" + And I attach the file "test_image_logo_svg_dark_desktop.svg" to "Upload Primary Dark logo for Desktop" + And I attach the file "test_image_logo_svg_dark_mobile.svg" to "Upload Primary Dark logo for Mobile" + And I select the radio button "Light" with the id "edit-components-header-theme-light" + And I select the radio button "Default" with the id "edit-components-header-logo-type-default" + And I select the radio button "Dark" with the id "edit-components-footer-theme-dark" + And I select the radio button "Default" with the id "edit-components-footer-logo-type-default" + And I press "Save configuration" + Then I should see the text "The configuration options have been saved." + + And I go to the homepage + And I should see the ".ct-logo img.ct-image" element with the "src" attribute set to "/sites/default/files/test_image_logo_svg_light_desktop.svg" + And I should see the ".ct-logo img.ct-image" element with the "src" attribute set to "/sites/default/files/test_image_logo_svg_light_mobile.svg" + And I should see the ".ct-logo img.ct-image" element with the "src" attribute set to "/sites/default/files/test_image_logo_svg_dark_desktop.svg" + And I should see the ".ct-logo img.ct-image" element with the "src" attribute set to "/sites/default/files/test_image_logo_svg_dark_mobile.svg" + + # Reset settings. + When I visit current theme settings page + And I check the box "Confirm settings reset" + And I press "reset_to_defaults" + Then I should see the text "Theme configuration was reset to defaults." @api Scenario: The CivicTheme theme settings External Links component validation works. @@ -256,3 +288,21 @@ Feature: Components settings are available in the theme settings And I check the box "Confirm settings reset" And I press "reset_to_defaults" Then I should see the text "Theme configuration was reset to defaults." + + @api + Scenario: The CivicTheme theme settings to set site slogan. + Given I am logged in as a user with the "Site Administrator" role + + When I visit current theme settings page + When I fill in "components[site_slogan][content]" with "A design system by Salsa Digital - Updated" + And I press "Save configuration" + Then I should see the text "The configuration options have been saved." + + And I go to the homepage + And I should see the text "A design system by Salsa Digital - Updated" + + # Reset settings. + When I visit current theme settings page + And I check the box "Confirm settings reset" + And I press "reset_to_defaults" + Then I should see the text "Theme configuration was reset to defaults." diff --git a/tests/behat/features/theme.settings.migration_metadata.feature b/tests/behat/features/theme.settings.migration_metadata.feature deleted file mode 100644 index 6129d8da0..000000000 --- a/tests/behat/features/theme.settings.migration_metadata.feature +++ /dev/null @@ -1,99 +0,0 @@ -@p0 @civictheme @civictheme_theme_settings @civictheme_theme_settings_migration @civictheme_migration -Feature: Migration metadata is available on selected components. - - @api - Scenario: The CivicTheme theme setting `Expose Migration metadata` exposes meta data in DOM - Given managed file: - | filename | uri | path | - | test_image.jpg | public://civictheme_test/test_image.jpg | test_image.jpg | - And "civictheme_image" media: - | name | field_c_m_image | - | [TEST] CivicTheme Image | test_image.jpg | - And "civictheme_topics" terms: - | name | - | [TEST] Topic 1 | - | [TEST] Topic 2 | - | [TEST] Topic 3 | - Given "civictheme_page" content: - | title | status | field_c_n_summary | field_c_n_topics | field_c_n_thumbnail | field_c_n_vertical_spacing | field_c_n_show_toc | field_c_n_show_last_updated | field_c_n_hide_sidebar | field_c_n_custom_last_updated | field_c_n_banner_background | field_c_n_blend_mode | field_c_n_banner_type | field_c_n_banner_theme | field_c_n_banner_hide_breadcrumb | - | [TEST] Page 1 | 1 | [TEST] Summary | [TEST] Topic 1, [TEST] Topic 2, [TEST] Topic 3 | [TEST] CivicTheme Image | top | 1 | 1 | 0 | 2022-07-01 | [TEST] CivicTheme Image | luminosity | default | light | 1 | - And "civictheme_page" content: - | title | status | field_c_n_vertical_spacing | field_c_n_show_toc | field_c_n_show_last_updated | field_c_n_hide_sidebar | field_c_n_custom_last_updated | field_c_n_banner_type | field_c_n_banner_theme | field_c_n_banner_hide_breadcrumb | - | [TEST] Page 2 | 1 | bottom | 0 | 0 | 1 | 2022-07-01 | large | dark | 0 | - - When I am logged in as a user with the "Site Administrator" role - And I visit current theme settings page - - # Reset settings. - And I check the box "Confirm settings reset" - And I press "reset_to_defaults" - Then I should see the text "Theme configuration was reset to defaults." - - And I check the box "Expose Migration metadata" - And I press "Save configuration" - - And I visit "civictheme_page" "[TEST] Page 1" - Then should see a "[data-ct-migrate-node-vertical-spacing='top']" element - And should see a "[data-ct-migrate-node-show-toc='1']" element - And should see a "[data-ct-migrate-node-summary='[TEST] Summary']" element - And should see a "[data-ct-migrate-node-thumbnail]" element - And should see a "[data-ct-migrate-node-topics='[TEST] Topic 1,[TEST] Topic 2,[TEST] Topic 3']" element - And should see a "[data-ct-migrate-node-show-last-updated='1']" element - And should see a "[data-ct-migrate-node-hide-sidebar='0']" element - And should see a "[data-ct-migrate-node-last-updated='1 Jul 2022']" element - And should see a "[data-ct-migrate-banner-background-image-blend-mode='luminosity']" element - And should see a "[data-ct-migrate-banner-background-image]" element - And should see a "[data-ct-migrate-banner-type='default']" element - And should see a "[data-ct-migrate-banner-theme='light']" element - And should see a "[data-ct-migrate-banner-hide-breadcrumb='1']" element - - When I visit "civictheme_page" "[TEST] Page 2" - Then should see a "[data-ct-migrate-node-vertical-spacing='bottom']" element - And should not see a "[data-ct-migrate-node-summary]" element - And should not see a "[data-ct-migrate-node-thumbnail]" element - And should not see a "[data-ct-migrate-node-topics]" element - And should see a "[data-ct-migrate-node-show-toc='0']" element - And should see a "[data-ct-migrate-node-show-last-updated='0']" element - And should see a "[data-ct-migrate-node-hide-sidebar='1']" element - And should not see a "[data-ct-migrate-node-last-updated]" element - # CivicTheme has default background image for banner. - And should see a "[data-ct-migrate-banner-background-image-blend-mode='soft-light']" element - And should see a "[data-ct-migrate-banner-background-image]" element - And should see a "[data-ct-migrate-banner-type='large']" element - And should see a "[data-ct-migrate-banner-theme='dark']" element - And should see a "[data-ct-migrate-banner-hide-breadcrumb='0']" element - - When I visit current theme settings page - And I uncheck the box "Expose Migration metadata" - And I press "Save configuration" - - And I visit "civictheme_page" "[TEST] Page 1" - Then should not see a "[data-ct-migrate-node-vertical-spacing='top']" element - And should not see a "[data-ct-migrate-node-show-toc='1']" element - And should not see a "[data-ct-migrate-node-summary='[TEST] Summary']" element - And should not see a "[data-ct-migrate-node-thumbnail]" element - And should not see a "[data-ct-migrate-node-topics='[TEST] Topic 1,[TEST] Topic 2,[TEST] Topic 3']" element - And should not see a "[data-ct-migrate-node-show-last-updated='1']" element - And should not see a "[data-ct-migrate-node-hide-sidebar='0']" element - And should not see a "[data-ct-migrate-node-last-updated='1 Jul 2022']" element - And should not see a "[data-ct-migrate-banner-background-image-blend-mode='luminosity']" element - And should not see a "[data-ct-migrate-banner-background-image]" element - And should not see a "[data-ct-migrate-banner-type='default']" element - And should not see a "[data-ct-migrate-banner-theme='light']" element - And should not see a "[data-ct-migrate-banner-hide-breadcrumb='1']" element - - When I visit "civictheme_page" "[TEST] Page 2" - Then should not see a "[data-ct-migrate-node-vertical-spacing='bottom']" element - And should not see a "[data-ct-migrate-node-summary]" element - And should not see a "[data-ct-migrate-node-thumbnail]" element - And should not see a "[data-ct-migrate-node-topics]" element - And should not see a "[data-ct-migrate-node-show-toc='0']" element - And should not see a "[data-ct-migrate-node-show-last-updated='0']" element - And should not see a "[data-ct-migrate-node-hide-sidebar='1']" element - And should not see a "[data-ct-migrate-node-last-updated]" element - # CivicTheme has default background image for banner. - And should not see a "[data-ct-migrate-banner-background-image-blend-mode='soft-light']" element - And should not see a "[data-ct-migrate-banner-background-image]" element - And should not see a "[data-ct-migrate-banner-type='large']" element - And should not see a "[data-ct-migrate-banner-theme='dark']" element - And should not see a "[data-ct-migrate-banner-hide-breadcrumb='0']" element diff --git a/tests/behat/features/theme.settings.vertical_tabs.feature b/tests/behat/features/theme.settings.vertical_tabs.feature index 96c1ffaa1..81e3becf9 100644 --- a/tests/behat/features/theme.settings.vertical_tabs.feature +++ b/tests/behat/features/theme.settings.vertical_tabs.feature @@ -1,4 +1,4 @@ -@p0 @d9only @civictheme @civictheme_theme_settings @civictheme_vertical_tabs_settings +@p0 @d9only @civictheme @civictheme_theme_settings @civictheme_vertical_tabs_settings @skipped Feature: Correct vertical tab does not focus on form validation @api @javascript diff --git a/tests/behat/features/view.civictheme_automated_list_examples.feature b/tests/behat/features/view.civictheme_automated_list_examples.feature index b24289727..c0d767dcb 100644 --- a/tests/behat/features/view.civictheme_automated_list_examples.feature +++ b/tests/behat/features/view.civictheme_automated_list_examples.feature @@ -137,7 +137,7 @@ Feature: CivicTheme listing renders on views pages with filters # | civictheme-no-sidebar/listing-one-filter-single-select | # | civictheme-no-sidebar/listing-one-filter-single-select-exposed-block | - @api @testmode + @api @testmode Scenario Outline: Listing example - One filter - Multi Given I am an anonymous user When I go to "" @@ -195,8 +195,8 @@ Feature: CivicTheme listing renders on views pages with filters And I should not see the text "[TEST] Page 15" Examples: - | path | - | civictheme-no-sidebar/listing-multiple-filters | + | path | + | civictheme-no-sidebar/listing-multiple-filters | # Disabled test below as it fails in CI with "An illegal choice # has been detected. Please contact the site administrator." message. # Need to investigate. diff --git a/tests/behat/fixtures/civictheme_migrate.invalid_json_1.json b/tests/behat/fixtures/civictheme_migrate.invalid_json_1.json deleted file mode 100644 index 0c2f744b4..000000000 --- a/tests/behat/fixtures/civictheme_migrate.invalid_json_1.json +++ /dev/null @@ -1 +0,0 @@ -Invalid JSON file. diff --git a/tests/behat/fixtures/civictheme_migrate.media_content_1.json b/tests/behat/fixtures/civictheme_migrate.media_content_1.json deleted file mode 100644 index d2a27e057..000000000 --- a/tests/behat/fixtures/civictheme_migrate.media_content_1.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "uuid": "c97a9b08-f3b0-477b-97f7-8b61f9d4a527", - "name": "test.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-05/Your%20preferred%20agency%20-%20Get%20your%20agency%20to%20adopt%20it.png", - "alt": "Test alt text for thumbnail" - }, - { - "uuid": "7fdce6fd-3bcb-4ffa-b349-2a6eb0b049c4", - "name": "test2.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-05/Adapt%20-%20Modify%20and%20create.png", - "alt": "Test alt text for thumbnail" - }, - { - "uuid": "7966cf0a-598d-4da2-8443-837fccd46109", - "name": "test3.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-05/salsa-campaign.png", - "alt": "" - } -] diff --git a/tests/behat/fixtures/civictheme_migrate.media_content_2.json b/tests/behat/fixtures/civictheme_migrate.media_content_2.json deleted file mode 100644 index 45245fc4f..000000000 --- a/tests/behat/fixtures/civictheme_migrate.media_content_2.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "uuid": "f352fb5f-5319-4a09-a039-6b7080b31443", - "name": "D10 launch.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-10/D10%20launch.png", - "alt": "Test alt text for thumbnail" - }, - { - "uuid": "7bed7c3c-ebab-44aa-b19e-0e164ab81d10", - "name": "test4.png", - "file": "https://www.civictheme.io/sites/default/files/images/2022-05/Adopt%20-%20The%20DIY%20approach.png", - "alt": "Test alt text for thumbnail" - }, - { - "uuid": "427186ad-c561-4441-9951-28399d8a4923", - "name": "demo_banner-background.png", - "file": "https://www.civictheme.io/sites/default/files/demo_banner-background.png", - "alt": "Test background" - } -] diff --git a/tests/behat/fixtures/civictheme_migrate.page_content_1.json b/tests/behat/fixtures/civictheme_migrate.page_content_1.json deleted file mode 100644 index 7ba83857f..000000000 --- a/tests/behat/fixtures/civictheme_migrate.page_content_1.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "id": "4593761e-8a5d-4564-8c0e-2126fb4f3338", - "title": "[TEST] Migrated Content 1", - "alias": "/test/migrated-content-1", - "summary": "Summary for [TEST] Migrated Content 1", - "topics": "[TEST] Topic 1,[TEST] Topic 2,[TEST] Topic 3,[TEST] Topic 4", - "thumbnail": [ - "f352fb5f-5319-4a09-a039-6b7080b31443" - ], - "vertical_spacing": "top", - "hide_sidebar": true, - "show_last_updated_date": true, - "last_updated_date": "8 Oct 2022", - "show_toc": true, - "banner": { - "type": "container", - "children": [ - { - "theme": "dark", - "title": "[TEST] Banner title - Migrated Content 1", - "banner_type": "large", - "blend_mode": "darken", - "featured_image": [ - "7bed7c3c-ebab-44aa-b19e-0e164ab81d10" - ], - "background": [ - "427186ad-c561-4441-9951-28399d8a4923" - ], - "hide_breadcrumb": true - } - ] - } - } -] diff --git a/tests/behat/fixtures/civictheme_migrate.page_content_2.json b/tests/behat/fixtures/civictheme_migrate.page_content_2.json deleted file mode 100644 index 87f81e6f4..000000000 --- a/tests/behat/fixtures/civictheme_migrate.page_content_2.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "id": "4593761e-8a5d-4564-8c0e-2126fb4f3334", - "title": "[TEST] Migrated Content 6", - "alias": "/test/migrated-content-6", - "summary": "Summary for [TEST] Migrated Content 6", - "topics": "[TEST] Topic 1,[TEST] Topic 2,[TEST] Topic 6, [TEST] Topic 7", - "thumbnail": [ - "c97a9b08-f3b0-477b-97f7-8b61f9d4a527" - ], - "vertical_spacing": "top", - "hide_sidebar": true, - "show_last_updated_date": false, - "last_updated_date": "1 Oct 2022", - "show_toc": true, - "banner": { - "type": "container", - "children": [ - { - "theme": "light", - "title": "[TEST] Banner title - Migrated Content 6", - "banner_type": "default", - "blend_mode": "soft-light", - "featured_image": [ - "7fdce6fd-3bcb-4ffa-b349-2a6eb0b049c4" - ], - "background": [ - "427186ad-c561-4441-9951-28399d8a4923" - ], - "hide_breadcrumb": true - } - ] - } - } -] diff --git a/tests/behat/fixtures/test_image_logo_svg_dark_desktop.svg b/tests/behat/fixtures/test_image_logo_svg_dark_desktop.svg new file mode 100644 index 000000000..e26fe177e --- /dev/null +++ b/tests/behat/fixtures/test_image_logo_svg_dark_desktop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/behat/fixtures/test_image_logo_svg_dark_mobile.svg b/tests/behat/fixtures/test_image_logo_svg_dark_mobile.svg new file mode 100644 index 000000000..e26fe177e --- /dev/null +++ b/tests/behat/fixtures/test_image_logo_svg_dark_mobile.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/behat/fixtures/test_image_logo_svg_light_desktop.svg b/tests/behat/fixtures/test_image_logo_svg_light_desktop.svg new file mode 100644 index 000000000..58d41db9d --- /dev/null +++ b/tests/behat/fixtures/test_image_logo_svg_light_desktop.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/behat/fixtures/test_image_logo_svg_light_mobile.svg b/tests/behat/fixtures/test_image_logo_svg_light_mobile.svg new file mode 100644 index 000000000..58d41db9d --- /dev/null +++ b/tests/behat/fixtures/test_image_logo_svg_light_mobile.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/behat/fixtures/test_svg.svg b/tests/behat/fixtures/test_svg.svg index 0c4a077b5..73d679fbb 100644 --- a/tests/behat/fixtures/test_svg.svg +++ b/tests/behat/fixtures/test_svg.svg @@ -16,4 +16,4 @@ - \ No newline at end of file + diff --git a/tests/phpunit/unit/AddPhpcsExclusionsUnitTest.php b/tests/phpunit/unit/AddPhpcsExclusionsUnitTest.php index 4008f342e..61ee39c22 100644 --- a/tests/phpunit/unit/AddPhpcsExclusionsUnitTest.php +++ b/tests/phpunit/unit/AddPhpcsExclusionsUnitTest.php @@ -5,6 +5,7 @@ * * Unit tests for add_phpcs_exclusions.php. * + * @group site:unit * @group scripts * * phpcs:disable Drupal.Commenting.DocComment.MissingShort diff --git a/tests/phpunit/unit/CivicthemeCreateSubthemeScriptUnitTest.php b/tests/phpunit/unit/CivicthemeCreateSubthemeScriptUnitTest.php index 85d3684c4..f5e4f83b2 100644 --- a/tests/phpunit/unit/CivicthemeCreateSubthemeScriptUnitTest.php +++ b/tests/phpunit/unit/CivicthemeCreateSubthemeScriptUnitTest.php @@ -5,6 +5,7 @@ * * Unit tests for civictheme_create_subtheme.php. * + * @group site:unit * @group scripts * * phpcs:disable Drupal.Commenting.DocComment.MissingShort diff --git a/tests/phpunit/unit/ExtractCssColorsToCsvScriptUnitTest.php b/tests/phpunit/unit/ExtractCssColorsToCsvScriptUnitTest.php index bec5907da..f1418ea24 100644 --- a/tests/phpunit/unit/ExtractCssColorsToCsvScriptUnitTest.php +++ b/tests/phpunit/unit/ExtractCssColorsToCsvScriptUnitTest.php @@ -5,6 +5,7 @@ * * Unit tests for extract_css_colors_to_csv.php. * + * @group site:unit * @group scripts * * phpcs:disable Drupal.Commenting.DocComment.MissingShort diff --git a/tests/phpunit/unit/UpdateConfigsScriptUnitTest.php b/tests/phpunit/unit/UpdateConfigsScriptUnitTest.php deleted file mode 100644 index a4ad1447b..000000000 --- a/tests/phpunit/unit/UpdateConfigsScriptUnitTest.php +++ /dev/null @@ -1,554 +0,0 @@ -runScript($args, TRUE); - $this->assertEquals($expected_code, $result['code']); - $this->assertStringContainsString($expected_output, $result['output']); - } - - public function dataProviderMain() { - return [ - [ - '--help', - 0, - 'Site configuration updater', - ], - [ - '-help', - 0, - 'Site configuration updater', - ], - [ - '-h', - 0, - 'Site configuration updater', - ], - [ - '-?', - 0, - 'Site configuration updater', - ], - [ - [], - 1, - 'Site configuration updater', - ], - [ - [1, 2, 3, 4, 5], - 1, - 'Site configuration updater', - ], - - // Validation of path existence. - [ - 'some/non_existing/theme/config/dir', - 1, - 'Source configuration directory some/non_existing/theme/config/dir is not readable.', - ], - [ - [ - $this->tempdir(), - 'some/non_existing/site/config/dir', - ], - 1, - 'Destination configuration directory some/non_existing/site/config/dir is not readable.', - ], - [ - [ - $this->tempdir(), - $this->tempdir(), - 'some/non_existing/site_config_file.txt', - ], - 1, - 'Configuration exclusion file some/non_existing/site_config_file.txt is not readable.', - ], - ]; - } - - /** - * @dataProvider dataProviderCollectConfigs - * @runInSeparateProcess - */ - public function testCollectConfigs($file_structure, $expected) { - $this->createTmpFilesFromFixtures($file_structure); - $expected = $this->arrayReplaceValue($expected, function ($value) { - return $this->toTmpPath($value); - }); - $actual = collect_configs($this->tmpDir); - $this->assertEquals($expected, $actual); - } - - public function dataProviderCollectConfigs() { - return [ - [ - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - ], - - [ - [ - 'install/unchanged1.yml' => 'unchanged1.yml', - 'install/unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'install' => [ - 'unchanged1.yml' => 'install/unchanged1.yml', - 'unchanged2.yml' => 'install/unchanged2.yml', - ], - ], - ], - [ - [ - 'optional/unchanged1.yml' => 'unchanged1.yml', - 'optional/unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'optional' => [ - 'unchanged1.yml' => 'optional/unchanged1.yml', - 'unchanged2.yml' => 'optional/unchanged2.yml', - ], - ], - ], - [ - [ - 'install/unchanged1.yml' => 'unchanged1.yml', - 'install/unchanged2.yml' => 'unchanged2.yml', - 'optional/unchanged3.yml' => 'unchanged1.yml', - 'optional/unchanged4.yml' => 'unchanged2.yml', - ], - [ - 'install' => [ - 'unchanged1.yml' => 'install/unchanged1.yml', - 'unchanged2.yml' => 'install/unchanged2.yml', - ], - 'optional' => [ - 'unchanged3.yml' => 'optional/unchanged3.yml', - 'unchanged4.yml' => 'optional/unchanged4.yml', - ], - ], - ], - ]; - } - - /** - * @dataProvider dataProviderCollectExcludedConfigs - * @runInSeparateProcess - */ - public function testCollectExcludedConfigs($custom_configs_content_lines, $configs, $expected) { - $custom_configs_file = $this->tempdir() . DIRECTORY_SEPARATOR . 'site_custom_config.txt'; - file_put_contents($custom_configs_file, implode(PHP_EOL, $custom_configs_content_lines)); - $actual = collect_excluded_configs($custom_configs_file, $configs); - $this->assertEquals($expected, $actual); - } - - public function dataProviderCollectExcludedConfigs() { - return [ - // No lines. - [ - [], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - ], - - // Comments. - [ - [ - '# Comment 1', - '# Comment 2', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - ], - - [ - [ - 'pattern1.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'pattern1.yml' => 'pattern1.yml', - ], - [ - 'pattern1.yml' => 'pattern1.yml', - ], - ], - - [ - [ - 'pattern1.yml', - 'pattern2.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'pattern1.yml' => 'pattern1.yml', - 'pattern2.yml' => 'pattern2.yml', - ], - [ - 'pattern1.yml' => 'pattern1.yml', - 'pattern2.yml' => 'pattern2.yml', - ], - ], - - // Wildcard. - [ - [ - 'pattern1.yml', - 'pattern2.yml', - 'pattern3*', - 'pattern4*', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'pattern1.yml' => 'pattern1.yml', - 'pattern2.yml' => 'pattern2.yml', - 'pattern3.sub1.yml' => 'pattern3.sub1.yml', - 'pattern3.sub2.yml' => 'pattern3.sub2.yml', - ], - [ - 'pattern1.yml' => 'pattern1.yml', - 'pattern2.yml' => 'pattern2.yml', - 'pattern3.sub1.yml' => 'pattern3.sub1.yml', - 'pattern3.sub2.yml' => 'pattern3.sub2.yml', - ], - ], - - // Full example. - [ - [ - '# Comment 1.', - 'pattern1', - 'pattern2.yml', - '# Comment 2.', - 'pattern3*', - 'pattern4*', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'pattern1.yml' => 'pattern1.yml', - 'pattern2.yml' => 'pattern2.yml', - 'pattern3.sub1.yml' => 'pattern3.sub1.yml', - 'pattern3.sub2.yml' => 'pattern3.sub2.yml', - ], - [ - 'pattern1.yml' => 'pattern1.yml', - 'pattern2.yml' => 'pattern2.yml', - 'pattern3.sub1.yml' => 'pattern3.sub1.yml', - 'pattern3.sub2.yml' => 'pattern3.sub2.yml', - ], - ], - ]; - } - - /** - * @dataProvider dataProviderYamlFilesAreIdentical - * @runInSeparateProcess - */ - public function testYamlFilesAreIdentical($file1, $file2, $expected) { - $this->assertEquals($expected, yaml_files_are_identical($this->fixtureFile($file1), $this->fixtureFile($file2))); - } - - public function dataProviderYamlFilesAreIdentical() { - return [ - // Simple pass and fail. - ['unchanged1.yml', 'unchanged1.yml', TRUE], - ['unchanged1.yml', 'unchanged2.yml', FALSE], - // UUID and Core removal. - ['unchanged1.yml', 'unchanged1_no_uuid.yml', TRUE], - ['unchanged1.yml', 'unchanged1_no_core.yml', TRUE], - ['unchanged1.yml', 'unchanged1_no_uuid_core.yml', TRUE], - // Alphabetical sort. - ['unchanged1.yml', 'unchanged1_alphabetical.yml', TRUE], - ]; - } - - /** - * @dataProvider dataProviderCalcConfigDiffs - * @runInSeparateProcess - */ - public function testCalcConfigDiffs(array $src, array $dst, array $excluded, array $expected) { - $src = $this->replaceFixturePaths($src, 'src'); - $dst = $this->replaceFixturePaths($dst, 'dst'); - $expected = $this->replaceFixturePaths($expected, 'src'); - $actual = calc_config_diffs($src, $dst, $excluded); - $this->assertEquals($expected, $actual); - } - - public function dataProviderCalcConfigDiffs() { - return [ - [[], [], [], []], - // No present configs. - [ - ['unchanged1.yml' => 'unchanged1.yml'], - [], - [], - ['unchanged1.yml' => 'unchanged1.yml'], - ], - [ - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - ], - [ - ['install' => ['unchanged1.yml' => 'unchanged1.yml']], - [], - [], - ['unchanged1.yml' => 'unchanged1.yml'], - ], - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - ], - [], - [], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - ], - - // Identical configs. - [ - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1_alphabetical.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged2_no_uuid_core.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1_alphabetical.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - [ - [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged2_no_uuid_core.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1_alphabetical.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged2_no_uuid_core.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1_alphabetical.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - - // Different. - [ - [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged1_no_uuid_core.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => 'unchanged1_no_uuid_core.yml', - ], - ], - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged1_no_uuid_core.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => 'unchanged1_no_uuid_core.yml', - ], - ], - - // Excluded, identical, excluded identical file. - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged2_no_uuid_core.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - - // Excluded, different, excluded identical file. - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged2_no_uuid_core.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged2.yml', - 'unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - ], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - - // Excluded, different, excluded different file. - [ - [ - 'install' => [ - 'unchanged1.yml' => 'unchanged1_no_uuid_core.yml', - 'unchanged2.yml' => 'unchanged2_no_uuid_core.yml', - ], - ], - [ - 'unchanged1.yml' => 'unchanged1.yml', - 'unchanged2.yml' => 'unchanged1.yml', - ], - [ - 'unchanged2.yml' => 'unchanged2.yml', - ], - [ - 'unchanged1.yml' => TRUE, - 'unchanged2.yml' => TRUE, - ], - ], - ]; - } - -}