From 480808cc7d77501710ed0cf9acaccf04eb95684c Mon Sep 17 00:00:00 2001 From: Andy Broomfield Date: Fri, 20 Dec 2024 16:00:58 +0000 Subject: [PATCH 1/3] Remove the override releated links from service pages Fix #72 This is a holdover from the old BHCC site, but the functionlity for automated links was never implemented in Localgov Drupal. This will remove this field for new sites, and will always render the releated links if they are present regardless. --- ...ay.node.localgov_services_page.default.yml | 9 -- ...ay.node.localgov_services_page.default.yml | 2 - ...de.localgov_services_page.search_index.yml | 2 - ...e.localgov_services_page.search_result.yml | 2 - ...lay.node.localgov_services_page.teaser.yml | 2 - ...s_page.localgov_override_related_links.yml | 22 ----- ...e.node.localgov_override_related_links.yml | 17 ---- .../Block/ServicesRelatedLinksBlock.php | 98 +------------------ 8 files changed, 2 insertions(+), 152 deletions(-) delete mode 100644 modules/localgov_services_page/config/install/field.field.node.localgov_services_page.localgov_override_related_links.yml delete mode 100644 modules/localgov_services_page/config/install/field.storage.node.localgov_override_related_links.yml diff --git a/modules/localgov_services_page/config/install/core.entity_form_display.node.localgov_services_page.default.yml b/modules/localgov_services_page/config/install/core.entity_form_display.node.localgov_services_page.default.yml index 8214731..59e1f96 100644 --- a/modules/localgov_services_page/config/install/core.entity_form_display.node.localgov_services_page.default.yml +++ b/modules/localgov_services_page/config/install/core.entity_form_display.node.localgov_services_page.default.yml @@ -6,7 +6,6 @@ dependencies: - field.field.node.localgov_services_page.localgov_common_tasks - field.field.node.localgov_services_page.localgov_download_links - field.field.node.localgov_services_page.localgov_hide_related_topics - - field.field.node.localgov_services_page.localgov_override_related_links - field.field.node.localgov_services_page.localgov_page_components - field.field.node.localgov_services_page.localgov_related_links - field.field.node.localgov_services_page.localgov_services_parent @@ -56,7 +55,6 @@ third_party_settings: children: - localgov_hide_related_topics - localgov_topic_classified - - localgov_override_related_links - localgov_related_links label: 'Related content' region: content @@ -120,13 +118,6 @@ content: settings: display_label: true third_party_settings: { } - localgov_override_related_links: - type: boolean_checkbox - weight: 10 - region: content - settings: - display_label: true - third_party_settings: { } localgov_page_components: type: entity_browser_entity_reference weight: 10 diff --git a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.default.yml b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.default.yml index d897eca..c95ba0a 100644 --- a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.default.yml +++ b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.default.yml @@ -6,7 +6,6 @@ dependencies: - field.field.node.localgov_services_page.localgov_common_tasks - field.field.node.localgov_services_page.localgov_download_links - field.field.node.localgov_services_page.localgov_hide_related_topics - - field.field.node.localgov_services_page.localgov_override_related_links - field.field.node.localgov_services_page.localgov_page_components - field.field.node.localgov_services_page.localgov_related_links - field.field.node.localgov_services_page.localgov_topic_classified @@ -40,7 +39,6 @@ hidden: localgov_common_tasks: true localgov_download_links: true localgov_hide_related_topics: true - localgov_override_related_links: true localgov_related_links: true localgov_topic_classified: true links: true diff --git a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_index.yml b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_index.yml index a5f9b91..1493b0f 100644 --- a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_index.yml +++ b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_index.yml @@ -7,7 +7,6 @@ dependencies: - field.field.node.localgov_services_page.localgov_common_tasks - field.field.node.localgov_services_page.localgov_download_links - field.field.node.localgov_services_page.localgov_hide_related_topics - - field.field.node.localgov_services_page.localgov_override_related_links - field.field.node.localgov_services_page.localgov_page_components - field.field.node.localgov_services_page.localgov_related_links - field.field.node.localgov_services_page.localgov_services_parent @@ -93,5 +92,4 @@ content: hidden: links: true localgov_hide_related_topics: true - localgov_override_related_links: true search_api_excerpt: true diff --git a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_result.yml b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_result.yml index 80e425b..6bb984b 100644 --- a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_result.yml +++ b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.search_result.yml @@ -7,7 +7,6 @@ dependencies: - field.field.node.localgov_services_page.localgov_common_tasks - field.field.node.localgov_services_page.localgov_download_links - field.field.node.localgov_services_page.localgov_hide_related_topics - - field.field.node.localgov_services_page.localgov_override_related_links - field.field.node.localgov_services_page.localgov_page_components - field.field.node.localgov_services_page.localgov_related_links - field.field.node.localgov_services_page.localgov_services_parent @@ -32,7 +31,6 @@ hidden: localgov_common_tasks: true localgov_download_links: true localgov_hide_related_topics: true - localgov_override_related_links: true localgov_page_components: true localgov_related_links: true localgov_services_parent: true diff --git a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.teaser.yml b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.teaser.yml index 7c556d2..db3475c 100644 --- a/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.teaser.yml +++ b/modules/localgov_services_page/config/install/core.entity_view_display.node.localgov_services_page.teaser.yml @@ -7,7 +7,6 @@ dependencies: - field.field.node.localgov_services_page.localgov_common_tasks - field.field.node.localgov_services_page.localgov_download_links - field.field.node.localgov_services_page.localgov_hide_related_topics - - field.field.node.localgov_services_page.localgov_override_related_links - field.field.node.localgov_services_page.localgov_page_components - field.field.node.localgov_services_page.localgov_related_links - field.field.node.localgov_services_page.localgov_topic_classified @@ -33,7 +32,6 @@ hidden: localgov_common_tasks: true localgov_download_links: true localgov_hide_related_topics: true - localgov_override_related_links: true localgov_page_components: true localgov_related_links: true localgov_topic_classified: true diff --git a/modules/localgov_services_page/config/install/field.field.node.localgov_services_page.localgov_override_related_links.yml b/modules/localgov_services_page/config/install/field.field.node.localgov_services_page.localgov_override_related_links.yml deleted file mode 100644 index 29e4f20..0000000 --- a/modules/localgov_services_page/config/install/field.field.node.localgov_services_page.localgov_override_related_links.yml +++ /dev/null @@ -1,22 +0,0 @@ -langcode: en -status: true -dependencies: - config: - - field.storage.node.localgov_override_related_links - - node.type.localgov_services_page -id: node.localgov_services_page.localgov_override_related_links -field_name: localgov_override_related_links -entity_type: node -bundle: localgov_services_page -label: 'Replace automatically generated links' -description: '' -required: false -translatable: false -default_value: - - - value: 0 -default_value_callback: '' -settings: - on_label: 'On' - off_label: 'Off' -field_type: boolean diff --git a/modules/localgov_services_page/config/install/field.storage.node.localgov_override_related_links.yml b/modules/localgov_services_page/config/install/field.storage.node.localgov_override_related_links.yml deleted file mode 100644 index ecde17f..0000000 --- a/modules/localgov_services_page/config/install/field.storage.node.localgov_override_related_links.yml +++ /dev/null @@ -1,17 +0,0 @@ -langcode: und -status: true -dependencies: - module: - - node -id: node.localgov_override_related_links -field_name: localgov_override_related_links -entity_type: node -type: boolean -settings: { } -module: core -locked: false -cardinality: 1 -translatable: true -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php b/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php index fde2f17..55e65c6 100644 --- a/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php +++ b/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php @@ -5,8 +5,6 @@ use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Url; use Drupal\localgov_services\Plugin\Block\ServicesBlockBase; -use Drupal\node\Entity\Node; -use Drupal\taxonomy\TermInterface; /** * Provides a 'Services Related Links Block' block. @@ -26,7 +24,7 @@ class ServicesRelatedLinksBlock extends ServicesBlockBase implements ContainerFa public function build() { $build = []; - $links = $this->getShouldUseManual() ? $this->buildManual() : $this->buildAutomated(); + $links = $this->getLinks(); if ($links) { $build[] = [ @@ -44,7 +42,7 @@ public function build() { * @return array * Array of links. */ - private function buildManual() { + private function getLinks() { $links = []; if ($this->node->hasField('localgov_related_links')) { @@ -61,96 +59,4 @@ private function buildManual() { return $links; } - /** - * Automatically builds a list of links based on the most relevant pages. - * - * @todo Decide how the automated link generation should work. - * - * @return array - * Array of links. - */ - private function buildAutomated() { - // Return an empty array for the time being. - return []; - - // @codingStandardsIgnoreStart - // Convert topics field into an array we can use in the query. - $topics = []; - - foreach ($this->getTopics() as $topic) { - $topics[] = $topic->id(); - } - - if ($topics) { - // Perform our query. - $query = $this->database->query('SELECT entity_id FROM node__localgov_topic_classified - LEFT JOIN node_field_data ON node_field_data.nid=node__localgov_topic_classified.entity_id - WHERE node__localgov_topic_classified.entity_id != :nid - AND node__localgov_topic_classified.localgov_topic_classified_target_id IN (:tids[]) - AND node_field_data.status=1 - GROUP BY node__localgov_topic_classified.entity_id - ORDER BY count(*) desc - LIMIT 6;', - [ - ':nid' => $this->node->id(), - ':tids[]' => $topics, - ] - ); - - $list = []; - foreach ($query->fetchAll() as $result) { - $node = Node::load($result->entity_id); - $list[] = [ - 'title' => $node->getTitle(), - 'url' => $node->toUrl(), - ]; - } - - return $list; - } - - return []; - // @codingStandardsIgnoreEnd - } - - /** - * Decide if we should use a manual override. - * - * @return bool - * Should manual links be displayed? - */ - private function getShouldUseManual() { - if ($this->node->hasField('localgov_override_related_links') && !$this->node->get('localgov_override_related_links')->isEmpty()) { - return $this->node->get('localgov_override_related_links')->first()->getValue()['value']; - } - - return FALSE; - } - - /** - * Build links array for the related topics block. - * - * @return array - * Array of topics. - */ - private function getTopics() { - $topics = []; - - if ($this->node->hasField('localgov_topic_classified')) { - - /** @var \Drupal\taxonomy\TermInterface $term_info */ - foreach ($this->node->get('localgov_topic_classified')->getValue() as $term_info) { - $topicEntity = $this->entityTypeManager->getStorage('taxonomy_term')->load($term_info['target_id']); - - // Add topic only if an actual taxonomy term, - // deleted topics can return NULL if still present on the node. - if ($topicEntity instanceof TermInterface) { - $topics[] = $topicEntity; - } - } - } - - return $topics; - } - } From a832d4cef8c242eb94d89907dbc457220a10a885 Mon Sep 17 00:00:00 2001 From: Andy Broomfield Date: Mon, 23 Dec 2024 10:03:02 +0000 Subject: [PATCH 2/3] Remove references to override_related_links from tests Related links should now always show when present --- .../tests/src/Functional/ServicesPageTest.php | 1 - tests/src/Functional/ServicesBlockTest.php | 1 - 2 files changed, 2 deletions(-) diff --git a/modules/localgov_services_page/tests/src/Functional/ServicesPageTest.php b/modules/localgov_services_page/tests/src/Functional/ServicesPageTest.php index 3a3e80d..32e2c50 100644 --- a/modules/localgov_services_page/tests/src/Functional/ServicesPageTest.php +++ b/modules/localgov_services_page/tests/src/Functional/ServicesPageTest.php @@ -64,7 +64,6 @@ public function testServicesPage() { $this->assertSession()->pageTextContains('localgov_hide_related_topics'); $this->assertSession()->pageTextContains('localgov_page_components'); $this->assertSession()->pageTextContains('localgov_related_links'); - $this->assertSession()->pageTextContains('localgov_override_related_links'); $this->assertSession()->pageTextContains('localgov_topic_classified'); $this->assertSession()->pageTextContains('localgov_services_parent'); diff --git a/tests/src/Functional/ServicesBlockTest.php b/tests/src/Functional/ServicesBlockTest.php index 99d8450..8b11492 100644 --- a/tests/src/Functional/ServicesBlockTest.php +++ b/tests/src/Functional/ServicesBlockTest.php @@ -78,7 +78,6 @@ public function testServiceCoreBlocksDisplay() { // Check manually added related links. $this->assertSession()->pageTextNotContains('Related Links'); - $services_page->set('localgov_override_related_links', ['value' => 1]); $services_page->set('localgov_related_links', [ 'uri' => 'http://test.com/', 'title' => 'Example related link', From 50567a8427fb58b5b8d6a1d1edf43eb2d3746064 Mon Sep 17 00:00:00 2001 From: ekes Date: Fri, 10 Jan 2025 13:25:52 +0100 Subject: [PATCH 3/3] Support existing installs using override to hide links. --- .../Block/ServicesRelatedLinksBlock.php | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php b/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php index 55e65c6..75482cb 100644 --- a/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php +++ b/modules/localgov_services_page/src/Plugin/Block/ServicesRelatedLinksBlock.php @@ -21,12 +21,12 @@ class ServicesRelatedLinksBlock extends ServicesBlockBase implements ContainerFa /** * {@inheritdoc} */ - public function build() { + public function build(): array { $build = []; - $links = $this->getLinks(); + $links = $this->displayLinks() ? $this->getLinks() : []; - if ($links) { + if (count($links)) { $build[] = [ '#theme' => 'services_related_links_block', '#links' => $links, @@ -42,7 +42,7 @@ public function build() { * @return array * Array of links. */ - private function getLinks() { + private function getLinks(): array { $links = []; if ($this->node->hasField('localgov_related_links')) { @@ -59,4 +59,21 @@ private function getLinks() { return $links; } + /** + * Legacy: Decide if we should use a manual override. + * + * Field has been removed from new installs. + * https://github.com/localgovdrupal/localgov_services/pull/291 + * + * @return bool + * Should manual links be displayed? + */ + private function displayLinks(): bool { + if ($this->node->hasField('localgov_override_related_links') && !$this->node->get('localgov_override_related_links')->isEmpty()) { + return $this->node->get('localgov_override_related_links')->first()->getValue()['value']; + } + + return TRUE; + } + }