diff --git a/config/views.view.db_links.yml b/config/views.view.db_links.yml index c22854b1..924ab443 100644 --- a/config/views.view.db_links.yml +++ b/config/views.view.db_links.yml @@ -157,6 +157,57 @@ display: multi_type: separator separator: ', ' field_api_classes: false + linkcheckerlink_group_entity_label: + id: linkcheckerlink_group_entity_label + table: linkchecker_link + field: linkcheckerlink_group_entity_label + relationship: none + group_type: group + admin_label: '' + entity_type: linkcheckerlink + plugin_id: linkcheckerlink_group_entity_label + label: 'Operation / Cluster' + 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 + link_to_entity: 1 linkcheckerlink_page_entity_label: id: linkcheckerlink_page_entity_label table: linkchecker_link @@ -460,6 +511,15 @@ display: 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 @@ -1172,6 +1232,15 @@ display: 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 @@ -1830,6 +1899,57 @@ display: multi_type: separator separator: ', ' field_api_classes: false + linkcheckerlink_group_entity_label: + id: linkcheckerlink_group_entity_label + table: linkchecker_link + field: linkcheckerlink_group_entity_label + relationship: none + group_type: group + admin_label: '' + entity_type: linkcheckerlink + plugin_id: linkcheckerlink_group_entity_label + label: 'Operation / Cluster' + 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 + link_to_entity: 1 linkcheckerlink_page_entity_label: id: linkcheckerlink_page_entity_label table: linkchecker_link @@ -2067,6 +2187,15 @@ display: 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 diff --git a/html/modules/custom/hr_paragraphs/hr_paragraphs.module b/html/modules/custom/hr_paragraphs/hr_paragraphs.module index f1640d3b..2a639cc0 100644 --- a/html/modules/custom/hr_paragraphs/hr_paragraphs.module +++ b/html/modules/custom/hr_paragraphs/hr_paragraphs.module @@ -2468,4 +2468,12 @@ function hr_paragraphs_views_data_alter(array &$data) { 'id' => 'linkchecker_link_active_revisions', ], ]; + + $data['linkchecker_link']['linkcheckerlink_group_entity_label'] = [ + 'field' => [ + 'title' => t('Group entity label'), + 'help' => t('The label of the entity that is related to the file.'), + 'id' => 'linkcheckerlink_group_entity_label', + ], + ]; } diff --git a/html/modules/custom/hr_paragraphs/src/Plugin/views/field/LinkcheckerLinkGroupEntityLabel.php b/html/modules/custom/hr_paragraphs/src/Plugin/views/field/LinkcheckerLinkGroupEntityLabel.php new file mode 100644 index 00000000..1dc91e7a --- /dev/null +++ b/html/modules/custom/hr_paragraphs/src/Plugin/views/field/LinkcheckerLinkGroupEntityLabel.php @@ -0,0 +1,104 @@ + FALSE]; + return $options; + } + + /** + * {@inheritdoc} + */ + public function buildOptionsForm(&$form, FormStateInterface $form_state) { + $form['link_to_entity'] = [ + '#title' => $this->t('Link to entity'), + '#description' => $this->t('Make entity label a link to entity page.'), + '#type' => 'checkbox', + '#default_value' => !empty($this->options['link_to_entity']), + ]; + parent::buildOptionsForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function query() { + } + + /** + * {@inheritdoc} + */ + public function render(ResultRow $values) { + $linkchecker_link = $this->getEntity($values); + + if (!$linkchecker_link instanceof LinkCheckerLinkInterface) { + return ''; + } + + if (!$linkchecker_link->hasField('entity_id')) { + return ''; + } + + if ($linkchecker_link->get('entity_id')->isEmpty()) { + return ''; + } + + $linked_entity = $linkchecker_link->get('entity_id')->entity; + + if (!$linked_entity instanceof EntityInterface) { + return ''; + } + + while ($linked_entity->getEntityTypeId() === 'paragraph' && $linked_entity->getParentEntity() !== NULL) { + $linked_entity = $linked_entity->getParentEntity(); + } + + $parent_entity = $linked_entity; + + // Get group. + $group_content_array = GroupRelationship::loadByEntity($linked_entity); + $group_content = reset($group_content_array); + if ($group_content) { + $parent_entity = $group_content->getGroup(); + } + + if (!empty($this->options['link_to_entity'])) { + try { + $this->options['alter']['url'] = $parent_entity->toUrl(); + $this->options['alter']['make_link'] = TRUE; + } + catch (UndefinedLinkTemplateException $e) { + $this->options['alter']['make_link'] = FALSE; + } + catch (EntityMalformedException $e) { + $this->options['alter']['make_link'] = FALSE; + } + } + + return $this->sanitizeValue($parent_entity->label()); + } + +}