From b6c77bf0cfa4fbc692c6dc2b262ffa535efe15fd Mon Sep 17 00:00:00 2001 From: Maria Young Date: Mon, 8 Jul 2024 18:00:20 +0100 Subject: [PATCH 1/3] Add linkchecker report --- composer.json | 1 + composer.lock | 68 +- config/sync/core.extension.yml | 2 + config/sync/linkchecker.settings.yml | 44 + .../sync/views.view.broken_links_report.yml | 1205 +++++++++++++++++ 5 files changed, 1319 insertions(+), 1 deletion(-) create mode 100644 config/sync/linkchecker.settings.yml create mode 100644 config/sync/views.view.broken_links_report.yml diff --git a/composer.json b/composer.json index 17eb498..5439641 100644 --- a/composer.json +++ b/composer.json @@ -27,6 +27,7 @@ "drupal/geofield_map": "^3.0", "drupal/gtm": "^1.8", "drupal/hotjar": "^3.1", + "drupal/linkchecker": "^2.0", "drupal/masquerade": "^2.0@beta", "drupal/menu_block": "^1.10", "drupal/purge": "3.x-dev@dev", diff --git a/composer.lock b/composer.lock index 134e85c..4a49516 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": "4d0efe81a6dc4d89051a280768e5bd4c", + "content-hash": "e6c1683e5a349d61ea586718c6369e6b", "packages": [ { "name": "agile-collective/ac_eu_cookie_compliance_tweaks", @@ -5293,6 +5293,72 @@ "issues": "https://www.drupal.org/project/issues/link_attributes" } }, + { + "name": "drupal/linkchecker", + "version": "2.0.0-alpha2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/linkchecker.git", + "reference": "2.0.0-alpha2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/linkchecker-2.0.0-alpha2.zip", + "reference": "2.0.0-alpha2", + "shasum": "87a6843707dd457049336c3320cc6000179925f9" + }, + "require": { + "drupal/core": "^9.4 || ^10.0", + "drupal/dynamic_entity_reference": "^3.0 || ^4.0" + }, + "require-dev": { + "drupal/redirect": "^1.8" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0-alpha2", + "datestamp": "1705475131", + "security-coverage": { + "status": "not-covered", + "message": "Alpha releases are not covered by Drupal security advisories." + } + }, + "drush": { + "services": { + "drush.services.yml": "^10 || ^11" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "hass", + "homepage": "https://www.drupal.org/u/hass" + }, + { + "name": "See other contributors", + "homepage": "https://www.drupal.org/node/243795/committers" + }, + { + "name": "hass", + "homepage": "https://www.drupal.org/user/85918" + }, + { + "name": "VladimirAus", + "homepage": "https://www.drupal.org/user/673120" + } + ], + "description": "Periodically checks for broken links in node types, blocks and fields and reports the results.", + "homepage": "https://www.drupal.org/project/linkchecker", + "support": { + "source": "https://git.drupal.org/project/linkchecker.git", + "issues": "https://www.drupal.org/project/issues/linkchecker" + } + }, { "name": "drupal/linkit", "version": "6.1.2", diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 81fb50d..d2c068c 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -20,6 +20,7 @@ module: dbal: 0 dblog: 0 disclosure_nav: 0 + dynamic_entity_reference: 0 dynamic_page_cache: 0 editor: 0 entity_browser: 0 @@ -62,6 +63,7 @@ module: lgd_org_blocks: 0 link: 0 link_attributes: 0 + linkchecker: 0 linkit: 0 localgov_core: 0 localgov_directories: 0 diff --git a/config/sync/linkchecker.settings.yml b/config/sync/linkchecker.settings.yml new file mode 100644 index 0000000..3ad0f24 --- /dev/null +++ b/config/sync/linkchecker.settings.yml @@ -0,0 +1,44 @@ +_core: + default_config_hash: FzFKuqOuk667AkDorrqvXkc_-M4D-Ac1XeGGusxS1JU +scan_blocks: null +check_links_types: 0 +default_url_scheme: 'https://' +base_path: localgovdrupal.org +extract: + from_a: true + from_audio: false + from_embed: false + from_iframe: false + from_img: false + from_object: false + from_video: false + filter_blacklist: + filter_align: filter_align + filter_caption: filter_caption + filter_autop: filter_autop + media_embed: media_embed + editor_file_reference: '0' + filter_image_lazy_load: '0' + filter_html_image_secure: '0' + filter_url: '0' + filter_html_escape: '0' + filter_htmlcorrector: '0' + filter_html: '0' + linkit: '0' +check: + connections_max: 8 + connections_max_per_domain: 2 + disable_link_check_for_urls: |- + example.com + example.net + example.org + library: core + interval: 2419200 + useragent: 'Drupal (+https://drupal.org/)' +error: + action_status_code_301: 0 + action_status_code_404: 0 + ignore_response_codes: "200\r\n206\r\n302\r\n304\r\n401\r\n403" + impersonate_account: admin +logging: + level: 6 diff --git a/config/sync/views.view.broken_links_report.yml b/config/sync/views.view.broken_links_report.yml new file mode 100644 index 0000000..83956cc --- /dev/null +++ b/config/sync/views.view.broken_links_report.yml @@ -0,0 +1,1205 @@ +uuid: 48925e9c-87eb-4add-8171-d1ae92a04631 +langcode: en +status: true +dependencies: + config: + - system.menu.admin + module: + - linkchecker + - user +_core: + default_config_hash: G19NgTMdwaqUb6hm1fXazGVwr0N2GRkmKCiNhpTkB4o +id: broken_links_report +label: 'Broken links report' +module: views +description: '' +tag: '' +base_table: linkchecker_link +base_field: lid +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'access broken links report' + cache: + type: tag + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: full + options: + items_per_page: 50 + offset: 0 + id: 0 + total_pages: null + tags: + previous: ‹‹ + next: ›› + first: '« First' + last: 'Last »' + expose: + items_per_page: true + items_per_page_label: 'Items per page' + items_per_page_options: '10, 25, 50, 100' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + override: true + sticky: false + caption: '' + summary: '' + description: '' + columns: + url__uri: url__uri + last_check: last_check + method: method + code: code + error: error + fail_count: fail_count + entity_id__target_id: entity_id__target_id + entity_field__value: entity_field__value + entity_langcode: entity_langcode + status: status + operations: operations + info: + url__uri: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + last_check: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + method: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + code: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + error: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + fail_count: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + entity_id__target_id: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + entity_field__value: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + entity_langcode: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + status: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + operations: + align: '' + separator: '' + empty_column: false + responsive: '' + default: '-1' + empty_table: false + row: + type: fields + fields: + entity_field: + id: entity_field + table: linkchecker_link + field: entity_field + relationship: none + group_type: group + admin_label: '' + label: 'Entity field' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: entity_field + plugin_id: field + entity_langcode: + id: entity_langcode + table: linkchecker_link + field: entity_langcode + relationship: none + group_type: group + admin_label: '' + label: 'Entity language' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: language + settings: + link_to_entity: false + native_language: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: entity_langcode + plugin_id: field + linkcheckerlink_page_entity_label: + id: linkcheckerlink_page_entity_label + table: linkchecker_link + field: linkcheckerlink_page_entity_label + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + link_to_entity: 1 + entity_type: linkcheckerlink + plugin_id: linkcheckerlink_page_entity_label + url: + id: url + table: linkchecker_link + field: url + relationship: none + group_type: group + admin_label: '' + label: URL + 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 + click_sort_column: value + type: uri_link + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: url + plugin_id: field + last_check: + id: last_check + table: linkchecker_link + field: last_check + relationship: none + group_type: group + admin_label: '' + label: 'Last checked' + 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: nowrap + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: Never + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: timestamp + settings: + date_format: medium + custom_date_format: '' + timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: last_check + plugin_id: field + method: + id: method + table: linkchecker_link + field: method + relationship: none + group_type: group + admin_label: '' + label: Method + 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 + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: method + plugin_id: field + code: + id: code + table: linkchecker_link + field: code + relationship: none + group_type: group + admin_label: '' + label: 'Status code' + 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: nowrap + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: code + plugin_id: field + error: + id: error + table: linkchecker_link + field: error + relationship: none + group_type: group + admin_label: '' + label: Error + 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 + click_sort_column: value + type: basic_string + settings: { } + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: error + plugin_id: field + fail_count: + id: fail_count + table: linkchecker_link + field: fail_count + relationship: none + group_type: group + admin_label: '' + label: 'Fail count' + 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: nowrap + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: fail_count + plugin_id: field + nothing: + id: nothing + table: views + field: nothing + relationship: none + group_type: group + admin_label: '' + label: 'Found here' + exclude: false + alter: + alter_text: true + text: "Entity: {{ linkcheckerlink_page_entity_label }}
\r\nField: {{ entity_field }}
\r\nLanguage: {{ entity_langcode }}" + 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: false + plugin_id: custom + status: + id: status + table: linkchecker_link + field: status + relationship: none + group_type: group + admin_label: '' + label: 'Test link' + 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: nowrap + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: boolean + settings: + format: unicode-yes-no + format_custom_true: '' + format_custom_false: '' + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: linkcheckerlink + entity_field: status + plugin_id: field + operations: + id: operations + table: linkchecker_link + field: operations + relationship: none + group_type: group + admin_label: '' + label: Operations + 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 + destination: false + entity_type: null + entity_field: null + plugin_id: entity_operations + filters: + url: + id: url + table: linkchecker_link + field: url + relationship: none + group_type: group + admin_label: '' + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: url_op + label: URL + description: '' + use_operator: false + operator: url_op + identifier: url + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + placeholder: '' + operator_limit_selection: false + operator_list: { } + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: linkcheckerlink + entity_field: url + plugin_id: string + code_1: + id: code_1 + table: linkchecker_link + field: code + relationship: none + group_type: group + admin_label: '' + operator: '=' + value: + min: '' + max: '' + value: '' + group: 1 + exposed: true + expose: + operator_id: code_1_op + label: 'Status code' + description: null + use_operator: false + operator: code_1_op + operator_limit_selection: false + operator_list: { } + identifier: result + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + placeholder: null + min_placeholder: null + max_placeholder: null + is_grouped: true + group_info: + label: Result + description: '' + identifier: result + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: + 1: + title: Failed + operator: 'not between' + value: + value: '' + min: '200' + max: '299' + 2: + title: 'Success (2xx)' + operator: between + value: + value: '' + min: '200' + max: '299' + 3: + title: 'Redirect (3xx)' + operator: between + value: + value: '' + min: '300' + max: '399' + 4: + title: 'Client error (4xx)' + operator: between + value: + value: '' + min: '400' + max: '499' + 5: + title: 'Server error (5xx)' + operator: between + value: + value: '' + min: '500' + max: '599' + entity_type: linkcheckerlink + entity_field: code + plugin_id: numeric + code: + id: code + table: linkchecker_link + field: code + relationship: none + group_type: group + admin_label: '' + operator: '=' + value: + min: '' + max: '' + value: '' + group: 1 + exposed: true + expose: + operator_id: code_op + label: 'Status code' + description: '' + use_operator: false + operator: code_op + identifier: code + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + placeholder: '' + min_placeholder: '' + max_placeholder: '' + operator_limit_selection: false + operator_list: { } + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: linkcheckerlink + entity_field: code + plugin_id: numeric + entity_langcode: + id: entity_langcode + table: linkchecker_link + field: entity_langcode + relationship: none + group_type: group + admin_label: '' + operator: in + value: { } + group: 1 + exposed: true + expose: + operator_id: entity_langcode_op + label: 'Entity language' + description: '' + use_operator: false + operator: entity_langcode_op + identifier: entity_langcode + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + reduce: false + operator_limit_selection: false + operator_list: { } + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: linkcheckerlink + entity_field: entity_langcode + plugin_id: language + sorts: { } + title: 'Broken links report' + header: { } + footer: + result: + id: result + table: views + field: result + relationship: none + group_type: group + admin_label: '' + empty: false + content: 'Displaying @start - @end of @total' + plugin_id: result + empty: { } + relationships: { } + arguments: { } + display_extenders: { } + show_admin_links: true + filter_groups: + operator: AND + groups: + 1: AND + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } + page_1: + display_plugin: page + id: page_1 + display_title: Page + position: 1 + display_options: + display_extenders: { } + path: admin/reports/linkchecker + menu: + type: normal + title: 'Broken links' + description: 'Shows a list of broken links in content.' + expanded: false + parent: system.admin_reports + weight: 0 + context: '0' + menu_name: admin + tab_options: + type: none + title: '' + description: '' + weight: 0 + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } From 41d177cbfc767f8d1fbeaf20dc85b15e9513b02a Mon Sep 17 00:00:00 2001 From: Maria Young Date: Tue, 9 Jul 2024 17:37:29 +0100 Subject: [PATCH 2/3] Link checking config --- ...eld.paragraph.image_link.localgov_link.yml | 5 + ...lgov_accordion_pane.localgov_body_text.yml | 8 +- ...calgov_call_out_box.localgov_body_text.yml | 8 +- ....localgov_call_out_box.localgov_button.yml | 5 + ...lgov_contact.localgov_contact_facebook.yml | 5 + ...gov_contact.localgov_contact_instagram.yml | 5 + ..._contact.localgov_contact_other_social.yml | 5 + ...gov_contact.localgov_contact_other_url.yml | 5 + ...algov_contact.localgov_contact_twitter.yml | 5 + ....localgov_contact.localgov_contact_url.yml | 5 + ...mpaign.localgov_featured_campaign_link.yml | 5 + ...localgov_featured_teaser.localgov_link.yml | 5 + ...localgov_featured_teaser.localgov_text.yml | 8 +- ...ov_featured_teasers.localgov_body_text.yml | 5 + ...calgov_ia_block.localgov_ia_block_link.yml | 5 + ...algov_ia_block.localgov_ia_block_links.yml | 5 + ...ocalgov_key_contact_item.localgov_link.yml | 5 + ...agraph.localgov_key_fact.localgov_text.yml | 8 +- ...elled_icon.localgov_labelled_icon_link.yml | 5 + ...eld.paragraph.localgov_link.field_link.yml | 5 + ...ocalgov_link_and_summary.localgov_link.yml | 5 + ...h.localgov_media_with_text.field_links.yml | 5 + ...localgov_media_with_text.localgov_link.yml | 5 + ...localgov_media_with_text.localgov_text.yml | 8 +- ...m_teaser.localgov_newsroom_teaser_link.yml | 5 + ...h.localgov_numbered_text.localgov_text.yml | 5 + ....localgov_tab_panel.localgov_body_text.yml | 8 +- ....paragraph.localgov_text.localgov_text.yml | 8 +- ...ple_image_and_links.localgov_body_text.yml | 5 + ...multiple_image_and_links.localgov_link.yml | 5 + .../sync/views.view.broken_links_report.yml | 446 +++++++++--------- 31 files changed, 387 insertions(+), 230 deletions(-) diff --git a/config/sync/field.field.paragraph.image_link.localgov_link.yml b/config/sync/field.field.paragraph.image_link.localgov_link.yml index 3ea9324..4089b1f 100644 --- a/config/sync/field.field.paragraph.image_link.localgov_link.yml +++ b/config/sync/field.field.paragraph.image_link.localgov_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.image_link module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor id: paragraph.image_link.localgov_link field_name: localgov_link entity_type: paragraph diff --git a/config/sync/field.field.paragraph.localgov_accordion_pane.localgov_body_text.yml b/config/sync/field.field.paragraph.localgov_accordion_pane.localgov_body_text.yml index b0bfa3c..cc70f35 100644 --- a/config/sync/field.field.paragraph.localgov_accordion_pane.localgov_body_text.yml +++ b/config/sync/field.field.paragraph.localgov_accordion_pane.localgov_body_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_body_text - paragraphs.paragraphs_type.localgov_accordion_pane module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: g4-lvUVByBYNx5PJX2Q9QueCFTNtveqPlhvlRQIdZho id: paragraph.localgov_accordion_pane.localgov_body_text @@ -19,5 +24,6 @@ required: true translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.localgov_call_out_box.localgov_body_text.yml b/config/sync/field.field.paragraph.localgov_call_out_box.localgov_body_text.yml index e5c90d5..60ae380 100644 --- a/config/sync/field.field.paragraph.localgov_call_out_box.localgov_body_text.yml +++ b/config/sync/field.field.paragraph.localgov_call_out_box.localgov_body_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_body_text - paragraphs.paragraphs_type.localgov_call_out_box module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: HwZMtIoKne-rUz_gMfMFUem5YB8BhTErOWdzEA-4Ejc id: paragraph.localgov_call_out_box.localgov_body_text @@ -19,5 +24,6 @@ required: false translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.localgov_call_out_box.localgov_button.yml b/config/sync/field.field.paragraph.localgov_call_out_box.localgov_button.yml index 08e2816..08a2764 100644 --- a/config/sync/field.field.paragraph.localgov_call_out_box.localgov_button.yml +++ b/config/sync/field.field.paragraph.localgov_call_out_box.localgov_button.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_call_out_box module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: XoJlbP8ctFb4mKzYzmjZE8vOZWcKwCx1vR5rqI3DBOU id: paragraph.localgov_call_out_box.localgov_button diff --git a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_facebook.yml b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_facebook.yml index 88079df..0defaf8 100644 --- a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_facebook.yml +++ b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_facebook.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_contact module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: SEHPpmi60BrQZ5Kpb76awje8B2V3qyfkC4pLGaAYU7I id: paragraph.localgov_contact.localgov_contact_facebook diff --git a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_instagram.yml b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_instagram.yml index 53f7510..8989fd2 100644 --- a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_instagram.yml +++ b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_instagram.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_contact module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: ZGaXZTds-qr_7ADVTbZfD752iI_M12LVxGGhtev2XWo id: paragraph.localgov_contact.localgov_contact_instagram diff --git a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_social.yml b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_social.yml index b9179a2..758ec1e 100644 --- a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_social.yml +++ b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_social.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_contact module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: xuqdF59jgbIo0bzHbQD4ObA-z2674_yDXXbq0IQFltw id: paragraph.localgov_contact.localgov_contact_other_social diff --git a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_url.yml b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_url.yml index 921ae0d..6284abd 100644 --- a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_url.yml +++ b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_other_url.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_contact module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: 4mKmhPzAbHmD60rvpQLnd3WYwZgW4lOTr3IGGyS6iVY id: paragraph.localgov_contact.localgov_contact_other_url diff --git a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_twitter.yml b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_twitter.yml index 2ded6d4..d636524 100644 --- a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_twitter.yml +++ b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_twitter.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_contact module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: hUGvpmZPYSkOVu1SQ42zFEYVhDHZuo1vuf0nhfzD8rQ id: paragraph.localgov_contact.localgov_contact_twitter diff --git a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_url.yml b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_url.yml index 7f47279..714b0ae 100644 --- a/config/sync/field.field.paragraph.localgov_contact.localgov_contact_url.yml +++ b/config/sync/field.field.paragraph.localgov_contact.localgov_contact_url.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_contact module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: E8rSMi_7TWMtGAo6n7Ax7w37mFyZuR4x4Bku2XTPcbQ id: paragraph.localgov_contact.localgov_contact_url diff --git a/config/sync/field.field.paragraph.localgov_featured_campaign.localgov_featured_campaign_link.yml b/config/sync/field.field.paragraph.localgov_featured_campaign.localgov_featured_campaign_link.yml index 6471dda..b609ab1 100644 --- a/config/sync/field.field.paragraph.localgov_featured_campaign.localgov_featured_campaign_link.yml +++ b/config/sync/field.field.paragraph.localgov_featured_campaign.localgov_featured_campaign_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_featured_campaign module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: rWOmQVvrqfqGSAemvmcgEbDOCk9a8_EWcqagUa30wu4 id: paragraph.localgov_featured_campaign.localgov_featured_campaign_link diff --git a/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_link.yml b/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_link.yml index 718bcbe..3a87c8d 100644 --- a/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_link.yml +++ b/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_featured_teaser module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: lmGJrGy8XJ4544-_cYEyJ3ho25MAFOPPJiVvpXpKRms id: paragraph.localgov_featured_teaser.localgov_link diff --git a/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_text.yml b/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_text.yml index c6f9612..3596fc0 100644 --- a/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_text.yml +++ b/config/sync/field.field.paragraph.localgov_featured_teaser.localgov_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_text - paragraphs.paragraphs_type.localgov_featured_teaser module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: i-SXyoAxWNwUx9hn2wYA0Oyh2lRRotqDi4qFKfoopzQ id: paragraph.localgov_featured_teaser.localgov_text @@ -19,5 +24,6 @@ required: false translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.localgov_featured_teasers.localgov_body_text.yml b/config/sync/field.field.paragraph.localgov_featured_teasers.localgov_body_text.yml index 1eeb708..666b5f4 100644 --- a/config/sync/field.field.paragraph.localgov_featured_teasers.localgov_body_text.yml +++ b/config/sync/field.field.paragraph.localgov_featured_teasers.localgov_body_text.yml @@ -7,7 +7,12 @@ dependencies: - filter.format.wysiwyg - paragraphs.paragraphs_type.localgov_featured_teasers module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor id: paragraph.localgov_featured_teasers.localgov_body_text field_name: localgov_body_text entity_type: paragraph diff --git a/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_link.yml b/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_link.yml index c648552..25dba32 100644 --- a/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_link.yml +++ b/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_ia_block module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: QTnqZOe4lPYlIiQ_QYK6PzqFsEDszJRpy2EVa1v7obc id: paragraph.localgov_ia_block.localgov_ia_block_link diff --git a/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_links.yml b/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_links.yml index 46c3b3a..cbe3898 100644 --- a/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_links.yml +++ b/config/sync/field.field.paragraph.localgov_ia_block.localgov_ia_block_links.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_ia_block module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: 7ng18YvInKfE1ECW1aA02gzCREq7sUJnkApaJPj0jcg id: paragraph.localgov_ia_block.localgov_ia_block_links diff --git a/config/sync/field.field.paragraph.localgov_key_contact_item.localgov_link.yml b/config/sync/field.field.paragraph.localgov_key_contact_item.localgov_link.yml index 4d1c332..69ad96d 100644 --- a/config/sync/field.field.paragraph.localgov_key_contact_item.localgov_link.yml +++ b/config/sync/field.field.paragraph.localgov_key_contact_item.localgov_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_key_contact_item module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: p-2Yi0lOUKfeizQZP2LRsM1dK0evwTma-e8OkUU4210 id: paragraph.localgov_key_contact_item.localgov_link diff --git a/config/sync/field.field.paragraph.localgov_key_fact.localgov_text.yml b/config/sync/field.field.paragraph.localgov_key_fact.localgov_text.yml index 29af2f1..ea04094 100644 --- a/config/sync/field.field.paragraph.localgov_key_fact.localgov_text.yml +++ b/config/sync/field.field.paragraph.localgov_key_fact.localgov_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_text - paragraphs.paragraphs_type.localgov_key_fact module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: P9B45-K-G_s_OVDnFKb7Mqvn_CwPaVTeJ3589WudwZI id: paragraph.localgov_key_fact.localgov_text @@ -19,5 +24,6 @@ required: true translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.localgov_labelled_icon.localgov_labelled_icon_link.yml b/config/sync/field.field.paragraph.localgov_labelled_icon.localgov_labelled_icon_link.yml index cddcca3..d56181f 100644 --- a/config/sync/field.field.paragraph.localgov_labelled_icon.localgov_labelled_icon_link.yml +++ b/config/sync/field.field.paragraph.localgov_labelled_icon.localgov_labelled_icon_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_labelled_icon module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: 8PeBnpbVB0jBsL18FRqKJbIfwHTongEoC0psvBUuRLI id: paragraph.localgov_labelled_icon.localgov_labelled_icon_link diff --git a/config/sync/field.field.paragraph.localgov_link.field_link.yml b/config/sync/field.field.paragraph.localgov_link.field_link.yml index 9b62ac8..6f9a829 100644 --- a/config/sync/field.field.paragraph.localgov_link.field_link.yml +++ b/config/sync/field.field.paragraph.localgov_link.field_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_link module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor id: paragraph.localgov_link.field_link field_name: field_link entity_type: paragraph diff --git a/config/sync/field.field.paragraph.localgov_link_and_summary.localgov_link.yml b/config/sync/field.field.paragraph.localgov_link_and_summary.localgov_link.yml index db68496..6c4e96f 100644 --- a/config/sync/field.field.paragraph.localgov_link_and_summary.localgov_link.yml +++ b/config/sync/field.field.paragraph.localgov_link_and_summary.localgov_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_link_and_summary module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: Xvcjk2OwNuX1i7z1hAQtMjHZsEbkdafE5jn1MuQ0uGo id: paragraph.localgov_link_and_summary.localgov_link diff --git a/config/sync/field.field.paragraph.localgov_media_with_text.field_links.yml b/config/sync/field.field.paragraph.localgov_media_with_text.field_links.yml index 737a62a..9ef174c 100644 --- a/config/sync/field.field.paragraph.localgov_media_with_text.field_links.yml +++ b/config/sync/field.field.paragraph.localgov_media_with_text.field_links.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_media_with_text module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor id: paragraph.localgov_media_with_text.field_links field_name: field_links entity_type: paragraph diff --git a/config/sync/field.field.paragraph.localgov_media_with_text.localgov_link.yml b/config/sync/field.field.paragraph.localgov_media_with_text.localgov_link.yml index 469c245..80f5358 100644 --- a/config/sync/field.field.paragraph.localgov_media_with_text.localgov_link.yml +++ b/config/sync/field.field.paragraph.localgov_media_with_text.localgov_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_media_with_text module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: xHpi2dXAefycbmS98UaCNOiMDbvixPF_ZOGRJGO1-0U id: paragraph.localgov_media_with_text.localgov_link diff --git a/config/sync/field.field.paragraph.localgov_media_with_text.localgov_text.yml b/config/sync/field.field.paragraph.localgov_media_with_text.localgov_text.yml index 78bb617..b7928b4 100644 --- a/config/sync/field.field.paragraph.localgov_media_with_text.localgov_text.yml +++ b/config/sync/field.field.paragraph.localgov_media_with_text.localgov_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_text - paragraphs.paragraphs_type.localgov_media_with_text module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: L2PphbcDalK3_DWcQVhYhXv3DAUm215qZGVNcNVGUD8 id: paragraph.localgov_media_with_text.localgov_text @@ -19,5 +24,6 @@ required: false translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.localgov_newsroom_teaser.localgov_newsroom_teaser_link.yml b/config/sync/field.field.paragraph.localgov_newsroom_teaser.localgov_newsroom_teaser_link.yml index 3e9f4a6..821a4bb 100644 --- a/config/sync/field.field.paragraph.localgov_newsroom_teaser.localgov_newsroom_teaser_link.yml +++ b/config/sync/field.field.paragraph.localgov_newsroom_teaser.localgov_newsroom_teaser_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.localgov_newsroom_teaser module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor _core: default_config_hash: x3G7fjc-ChD17yHBXywfXvJIikBoDPuoew6TmDOnu_M id: paragraph.localgov_newsroom_teaser.localgov_newsroom_teaser_link diff --git a/config/sync/field.field.paragraph.localgov_numbered_text.localgov_text.yml b/config/sync/field.field.paragraph.localgov_numbered_text.localgov_text.yml index 1dddfaf..a8adbbe 100644 --- a/config/sync/field.field.paragraph.localgov_numbered_text.localgov_text.yml +++ b/config/sync/field.field.paragraph.localgov_numbered_text.localgov_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_text - paragraphs.paragraphs_type.localgov_numbered_text module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor id: paragraph.localgov_numbered_text.localgov_text field_name: localgov_text entity_type: paragraph diff --git a/config/sync/field.field.paragraph.localgov_tab_panel.localgov_body_text.yml b/config/sync/field.field.paragraph.localgov_tab_panel.localgov_body_text.yml index f2bf70a..e1a1468 100644 --- a/config/sync/field.field.paragraph.localgov_tab_panel.localgov_body_text.yml +++ b/config/sync/field.field.paragraph.localgov_tab_panel.localgov_body_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_body_text - paragraphs.paragraphs_type.localgov_tab_panel module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: HCNjectxnbImX2gFepQjptWH1OnQZkmOMzq4UQByhUo id: paragraph.localgov_tab_panel.localgov_body_text @@ -19,5 +24,6 @@ required: true translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.localgov_text.localgov_text.yml b/config/sync/field.field.paragraph.localgov_text.localgov_text.yml index e92c076..e50fd1d 100644 --- a/config/sync/field.field.paragraph.localgov_text.localgov_text.yml +++ b/config/sync/field.field.paragraph.localgov_text.localgov_text.yml @@ -6,7 +6,12 @@ dependencies: - field.storage.paragraph.localgov_text - paragraphs.paragraphs_type.localgov_text module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor _core: default_config_hash: coOUNwEHi31kSbDURy8GVhyFNMMgBVCAT0CkJt1iLzI id: paragraph.localgov_text.localgov_text @@ -19,5 +24,6 @@ required: false translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.paragraph.multiple_image_and_links.localgov_body_text.yml b/config/sync/field.field.paragraph.multiple_image_and_links.localgov_body_text.yml index ac0fc35..b57601b 100644 --- a/config/sync/field.field.paragraph.multiple_image_and_links.localgov_body_text.yml +++ b/config/sync/field.field.paragraph.multiple_image_and_links.localgov_body_text.yml @@ -7,7 +7,12 @@ dependencies: - filter.format.wysiwyg - paragraphs.paragraphs_type.multiple_image_and_links module: + - linkchecker - text +third_party_settings: + linkchecker: + scan: true + extractor: html_link_extractor id: paragraph.multiple_image_and_links.localgov_body_text field_name: localgov_body_text entity_type: paragraph diff --git a/config/sync/field.field.paragraph.multiple_image_and_links.localgov_link.yml b/config/sync/field.field.paragraph.multiple_image_and_links.localgov_link.yml index 789670f..6e26c21 100644 --- a/config/sync/field.field.paragraph.multiple_image_and_links.localgov_link.yml +++ b/config/sync/field.field.paragraph.multiple_image_and_links.localgov_link.yml @@ -7,6 +7,11 @@ dependencies: - paragraphs.paragraphs_type.multiple_image_and_links module: - link + - linkchecker +third_party_settings: + linkchecker: + scan: true + extractor: link_link_extractor id: paragraph.multiple_image_and_links.localgov_link field_name: localgov_link entity_type: paragraph diff --git a/config/sync/views.view.broken_links_report.yml b/config/sync/views.view.broken_links_report.yml index 83956cc..80babfe 100644 --- a/config/sync/views.view.broken_links_report.yml +++ b/config/sync/views.view.broken_links_report.yml @@ -18,160 +18,12 @@ base_table: linkchecker_link base_field: lid display: default: - display_plugin: default id: default display_title: Master + display_plugin: default position: 0 display_options: - access: - type: perm - options: - perm: 'access broken links report' - cache: - type: tag - options: { } - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - replica: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Apply - reset_button: false - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: full - options: - items_per_page: 50 - offset: 0 - id: 0 - total_pages: null - tags: - previous: ‹‹ - next: ›› - first: '« First' - last: 'Last »' - expose: - items_per_page: true - items_per_page_label: 'Items per page' - items_per_page_options: '10, 25, 50, 100' - items_per_page_options_all: false - items_per_page_options_all_label: '- All -' - offset: false - offset_label: Offset - quantity: 9 - style: - type: table - options: - grouping: { } - row_class: '' - default_row_class: true - override: true - sticky: false - caption: '' - summary: '' - description: '' - columns: - url__uri: url__uri - last_check: last_check - method: method - code: code - error: error - fail_count: fail_count - entity_id__target_id: entity_id__target_id - entity_field__value: entity_field__value - entity_langcode: entity_langcode - status: status - operations: operations - info: - url__uri: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - last_check: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - method: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - code: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - error: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - fail_count: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - entity_id__target_id: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - entity_field__value: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - entity_langcode: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - status: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - operations: - align: '' - separator: '' - empty_column: false - responsive: '' - default: '-1' - empty_table: false - row: - type: fields + title: 'Broken links report' fields: entity_field: id: entity_field @@ -180,6 +32,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: entity_field + plugin_id: field label: 'Entity field' exclude: true alter: @@ -235,9 +90,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: entity_field - plugin_id: field entity_langcode: id: entity_langcode table: linkchecker_link @@ -245,6 +97,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: entity_langcode + plugin_id: field label: 'Entity language' exclude: true alter: @@ -301,9 +156,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: entity_langcode - plugin_id: field linkcheckerlink_page_entity_label: id: linkcheckerlink_page_entity_label table: linkchecker_link @@ -311,6 +163,8 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + plugin_id: linkcheckerlink_page_entity_label label: '' exclude: true alter: @@ -353,8 +207,6 @@ display: empty_zero: false hide_alter_empty: true link_to_entity: 1 - entity_type: linkcheckerlink - plugin_id: linkcheckerlink_page_entity_label url: id: url table: linkchecker_link @@ -362,6 +214,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: url + plugin_id: field label: URL exclude: false alter: @@ -416,9 +271,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: url - plugin_id: field last_check: id: last_check table: linkchecker_link @@ -426,6 +278,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: last_check + plugin_id: field label: 'Last checked' exclude: false alter: @@ -492,9 +347,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: last_check - plugin_id: field method: id: method table: linkchecker_link @@ -502,6 +354,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: method + plugin_id: field label: Method exclude: false alter: @@ -557,9 +412,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: method - plugin_id: field code: id: code table: linkchecker_link @@ -567,6 +419,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: code + plugin_id: field label: 'Status code' exclude: false alter: @@ -623,9 +478,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: code - plugin_id: field error: id: error table: linkchecker_link @@ -633,6 +485,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: error + plugin_id: field label: Error exclude: false alter: @@ -687,9 +542,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: error - plugin_id: field fail_count: id: fail_count table: linkchecker_link @@ -697,6 +549,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: fail_count + plugin_id: field label: 'Fail count' exclude: false alter: @@ -753,9 +608,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: fail_count - plugin_id: field nothing: id: nothing table: views @@ -763,6 +615,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: custom label: 'Found here' exclude: false alter: @@ -804,7 +657,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: false - plugin_id: custom status: id: status table: linkchecker_link @@ -812,6 +664,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: status + plugin_id: field label: 'Test link' exclude: false alter: @@ -857,8 +712,8 @@ display: type: boolean settings: format: unicode-yes-no - format_custom_true: '' format_custom_false: '' + format_custom_true: '' group_column: value group_columns: { } group_rows: true @@ -869,9 +724,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: linkcheckerlink - entity_field: status - plugin_id: field operations: id: operations table: linkchecker_link @@ -879,6 +731,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: null + entity_field: null + plugin_id: entity_operations label: Operations exclude: false alter: @@ -921,9 +776,47 @@ display: empty_zero: false hide_alter_empty: true destination: false - entity_type: null - entity_field: null - plugin_id: entity_operations + pager: + type: full + options: + offset: 0 + items_per_page: 50 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + first: '« First' + last: 'Last »' + expose: + items_per_page: true + items_per_page_label: 'Items per page' + items_per_page_options: '10, 25, 50, 100' + 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: Apply + 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: perm + options: + perm: 'access broken links report' + cache: + type: tag + options: { } + empty: { } + sorts: { } + arguments: { } filters: url: id: url @@ -932,6 +825,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: url + plugin_id: string operator: contains value: '' group: 1 @@ -942,6 +838,8 @@ display: description: '' use_operator: false operator: url_op + operator_limit_selection: false + operator_list: { } identifier: url required: false remember: false @@ -951,8 +849,6 @@ display: anonymous: '0' administrator: '0' placeholder: '' - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -965,9 +861,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - entity_type: linkcheckerlink - entity_field: url - plugin_id: string code_1: id: code_1 table: linkchecker_link @@ -975,6 +868,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: code + plugin_id: numeric operator: '=' value: min: '' @@ -996,9 +892,9 @@ display: multiple: false remember_roles: authenticated: authenticated - placeholder: null min_placeholder: null max_placeholder: null + placeholder: null is_grouped: true group_info: label: Result @@ -1015,40 +911,37 @@ display: title: Failed operator: 'not between' value: - value: '' min: '200' max: '299' + value: '' 2: title: 'Success (2xx)' operator: between value: - value: '' min: '200' max: '299' + value: '' 3: title: 'Redirect (3xx)' operator: between value: - value: '' min: '300' max: '399' + value: '' 4: title: 'Client error (4xx)' operator: between value: - value: '' min: '400' max: '499' + value: '' 5: title: 'Server error (5xx)' operator: between value: - value: '' min: '500' max: '599' - entity_type: linkcheckerlink - entity_field: code - plugin_id: numeric + value: '' code: id: code table: linkchecker_link @@ -1056,6 +949,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: code + plugin_id: numeric operator: '=' value: min: '' @@ -1069,6 +965,8 @@ display: description: '' use_operator: false operator: code_op + operator_limit_selection: false + operator_list: { } identifier: code required: false remember: false @@ -1077,11 +975,9 @@ display: authenticated: authenticated anonymous: '0' administrator: '0' - placeholder: '' min_placeholder: '' max_placeholder: '' - operator_limit_selection: false - operator_list: { } + placeholder: '' is_grouped: false group_info: label: '' @@ -1094,9 +990,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - entity_type: linkcheckerlink - entity_field: code - plugin_id: numeric entity_langcode: id: entity_langcode table: linkchecker_link @@ -1104,6 +997,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: linkcheckerlink + entity_field: entity_langcode + plugin_id: language operator: in value: { } group: 1 @@ -1114,6 +1010,8 @@ display: description: '' use_operator: false operator: entity_langcode_op + operator_limit_selection: false + operator_list: { } identifier: entity_langcode required: false remember: false @@ -1123,8 +1021,6 @@ display: anonymous: '0' administrator: '0' reduce: false - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -1137,11 +1033,123 @@ display: default_group: All default_group_multiple: { } group_items: { } - entity_type: linkcheckerlink - entity_field: entity_langcode - plugin_id: language - sorts: { } - title: 'Broken links report' + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + url__uri: url__uri + last_check: last_check + method: method + code: code + error: error + fail_count: fail_count + entity_id__target_id: entity_id__target_id + entity_field__value: entity_field__value + entity_langcode: entity_langcode + status: status + operations: operations + default: '-1' + info: + url__uri: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + last_check: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + method: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + code: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + error: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + fail_count: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + entity_id__target_id: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + entity_field__value: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + entity_langcode: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + status: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + operations: + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: false + caption: '' + description: '' + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + show_admin_links: true header: { } footer: result: @@ -1151,18 +1159,10 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: result empty: false content: 'Displaying @start - @end of @total' - plugin_id: result - empty: { } - relationships: { } - arguments: { } display_extenders: { } - show_admin_links: true - filter_groups: - operator: AND - groups: - 1: AND cache_metadata: max-age: -1 contexts: @@ -1173,9 +1173,9 @@ display: - user.permissions tags: { } page_1: - display_plugin: page id: page_1 display_title: Page + display_plugin: page position: 1 display_options: display_extenders: { } @@ -1184,11 +1184,11 @@ display: type: normal title: 'Broken links' description: 'Shows a list of broken links in content.' + weight: 0 expanded: false + menu_name: admin parent: system.admin_reports - weight: 0 context: '0' - menu_name: admin tab_options: type: none title: '' From da675d8be39414506b32411b9fc20fccd7c3628a Mon Sep 17 00:00:00 2001 From: Stephen Cox Date: Fri, 12 Jul 2024 09:39:26 +0100 Subject: [PATCH 3/3] Fixerd linkchecker install --- composer.json | 2 +- composer.lock | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 9972a10..4c64bf3 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "drupal/geofield_map": "^3.0", "drupal/gtm": "^1.8", "drupal/hotjar": "^3.1", - "drupal/linkchecker": "^2.0", + "drupal/linkchecker": "^2.0@alpha", "drupal/masquerade": "^2.0@beta", "drupal/menu_block": "^1.10", "drupal/purge": "3.x-dev@dev", diff --git a/composer.lock b/composer.lock index ef76ea4..425d4f3 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": "26a4442d5a24dedf875239df2d714099", + "content-hash": "37d7d31484f13fae8f826e363373da44", "packages": [ { "name": "agile-collective/ac_eu_cookie_compliance_tweaks", @@ -5369,6 +5369,72 @@ "issues": "https://www.drupal.org/project/issues/link_attributes" } }, + { + "name": "drupal/linkchecker", + "version": "2.0.0-alpha2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/linkchecker.git", + "reference": "2.0.0-alpha2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/linkchecker-2.0.0-alpha2.zip", + "reference": "2.0.0-alpha2", + "shasum": "87a6843707dd457049336c3320cc6000179925f9" + }, + "require": { + "drupal/core": "^9.4 || ^10.0", + "drupal/dynamic_entity_reference": "^3.0 || ^4.0" + }, + "require-dev": { + "drupal/redirect": "^1.8" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0-alpha2", + "datestamp": "1705475131", + "security-coverage": { + "status": "not-covered", + "message": "Alpha releases are not covered by Drupal security advisories." + } + }, + "drush": { + "services": { + "drush.services.yml": "^10 || ^11" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "hass", + "homepage": "https://www.drupal.org/u/hass" + }, + { + "name": "See other contributors", + "homepage": "https://www.drupal.org/node/243795/committers" + }, + { + "name": "hass", + "homepage": "https://www.drupal.org/user/85918" + }, + { + "name": "VladimirAus", + "homepage": "https://www.drupal.org/user/673120" + } + ], + "description": "Periodically checks for broken links in node types, blocks and fields and reports the results.", + "homepage": "https://www.drupal.org/project/linkchecker", + "support": { + "source": "https://git.drupal.org/project/linkchecker.git", + "issues": "https://www.drupal.org/project/issues/linkchecker" + } + }, { "name": "drupal/linkit", "version": "6.1.4",