diff --git a/config/install/views.view.summary_contents_filters.yml b/config/install/views.view.summary_contents_filters.yml index 870ab9a..9c13cbd 100644 --- a/config/install/views.view.summary_contents_filters.yml +++ b/config/install/views.view.summary_contents_filters.yml @@ -746,52 +746,6 @@ display: plugin_id: bundle entity_type: node entity_field: type - moderation_state: - id: moderation_state - table: node_field_revision - field: moderation_state - relationship: none - group_type: group - admin_label: '' - operator: in - value: { } - group: 1 - exposed: true - expose: - operator_id: moderation_state_op - label: 'Moderation state' - description: '' - use_operator: false - operator: moderation_state_op - identifier: moderation_state - required: false - remember: false - multiple: false - remember_roles: - authenticated: authenticated - anonymous: '0' - administrator: '0' - approver: '0' - site_admin: '0' - editor: '0' - previewer: '0' - event_author: '0' - grant_author: '0' - reduce: false - 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: node - plugin_id: moderation_state_filter status: id: status table: node_field_data diff --git a/config/install/views.view.tide_site_moderated_content_filters.yml b/config/install/views.view.tide_site_moderated_content_filters.yml new file mode 100644 index 0000000..58d401f --- /dev/null +++ b/config/install/views.view.tide_site_moderated_content_filters.yml @@ -0,0 +1,1041 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_node_primary_site + - field.storage.node.field_node_site + - taxonomy.vocabulary.sites + - workflows.workflow.editorial + module: + - content_moderation + - node + - taxonomy + - user + - workflows +id: tide_site_moderated_content_filters +label: 'Moderated content' +module: views +description: 'Find and moderate content.' +tag: '' +base_table: node_field_revision +base_field: vid +core: 8.x +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'view any unpublished content' + 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: Filter + reset_button: true + 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: '‹ Previous' + next: 'Next ›' + first: '« First' + last: 'Last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + override: true + sticky: true + caption: '' + summary: '' + description: '' + columns: + title: title + type: type + name: name + moderation_state: moderation_state + changed: changed + info: + title: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + type: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + name: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + moderation_state: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + changed: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + default: changed + empty_table: true + row: + type: fields + fields: + title: + id: title + table: node_field_revision + field: title + relationship: none + group_type: group + admin_label: '' + label: Title + 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: false + ellipsis: false + 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: 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: node + entity_field: title + plugin_id: field + field_node_primary_site: + id: field_node_primary_site + table: node__field_node_primary_site + field: field_node_primary_site + relationship: nid + group_type: group + admin_label: '' + label: Site + 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: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + 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 + plugin_id: field + field_node_site: + id: field_node_site + table: node__field_node_site + field: field_node_site + relationship: nid + group_type: group + admin_label: '' + label: Sub-Site + 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: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + 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 + plugin_id: field + type: + id: type + table: node_field_data + field: type + relationship: nid + group_type: group + admin_label: '' + label: 'Content type' + 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: target_id + type: entity_reference_label + settings: + link: false + group_column: target_id + 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: node + entity_field: type + plugin_id: field + name: + id: name + table: users_field_data + field: name + relationship: uid + group_type: group + admin_label: '' + label: Author + 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: user_name + settings: + link_to_entity: 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: user + entity_field: name + plugin_id: field + moderation_state: + id: moderation_state + table: node_field_revision + field: moderation_state + relationship: none + group_type: group + admin_label: '' + label: 'Moderation state' + 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: content_moderation_state + 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: node + plugin_id: field + changed: + id: changed + table: node_field_revision + field: changed + relationship: none + group_type: group + admin_label: '' + label: Updated + 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: false + ellipsis: false + 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: timestamp + settings: + date_format: short + custom_date_format: '' + timezone: '' + 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: node + entity_field: changed + plugin_id: field + operations: + id: operations + table: node_revision + 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: true + entity_type: node + plugin_id: entity_operations + filters: + latest_revision: + id: latest_revision + table: node_revision + field: latest_revision + relationship: none + group_type: group + admin_label: '' + operator: '=' + value: '' + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + 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: node + plugin_id: latest_revision + title: + id: title + table: node_field_revision + field: title + relationship: none + group_type: group + admin_label: '' + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: title_op + label: Title + description: '' + use_operator: false + operator: title_op + identifier: title + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + 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: node + entity_field: title + plugin_id: string + field_node_primary_site_target_id: + id: field_node_primary_site_target_id + table: node__field_node_primary_site + field: field_node_primary_site_target_id + relationship: nid + group_type: group + admin_label: '' + operator: or + value: { } + group: 1 + exposed: true + expose: + operator_id: field_node_primary_site_target_id_op + label: Site + description: '' + use_operator: false + operator: field_node_primary_site_target_id_op + operator_limit_selection: false + operator_list: { } + identifier: field_node_primary_site_target_id + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + approver: '0' + site_admin: '0' + editor: '0' + previewer: '0' + event_author: '0' + grant_author: '0' + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + reduce_duplicates: true + type: select + limit: true + vid: sites + hierarchy: true + error_message: true + plugin_id: taxonomy_index_tid + field_node_site_target_id: + id: field_node_site_target_id + table: node__field_node_site + field: field_node_site_target_id + relationship: nid + group_type: group + admin_label: '' + operator: or + value: { } + group: 1 + exposed: true + expose: + operator_id: field_node_site_target_id_op + label: Sub-Site + description: '' + use_operator: false + operator: field_node_site_target_id_op + operator_limit_selection: false + operator_list: { } + identifier: field_node_site_target_id + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + approver: '0' + site_admin: '0' + editor: '0' + previewer: '0' + event_author: '0' + grant_author: '0' + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + reduce_duplicates: true + type: select + limit: true + vid: sites + hierarchy: true + error_message: true + plugin_id: taxonomy_index_tid + type: + id: type + table: node_field_data + field: type + relationship: nid + group_type: group + admin_label: '' + operator: in + value: { } + group: 1 + exposed: true + expose: + operator_id: type_op + label: 'Content type' + description: '' + use_operator: false + operator: type_op + identifier: type + 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: node + entity_field: type + plugin_id: bundle + moderation_state: + id: moderation_state + table: node_field_revision + field: moderation_state + relationship: none + group_type: group + admin_label: '' + operator: in + value: + editorial-draft: editorial-draft + editorial-needs_review: editorial-needs_review + editorial-archived: editorial-archived + editorial-archive_pending: editorial-archive_pending + group: 1 + exposed: true + expose: + operator_id: moderation_state_op + label: 'Moderation state' + description: '' + use_operator: false + operator: moderation_state_op + operator_limit_selection: false + operator_list: { } + identifier: moderation_state + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + approver: '0' + site_admin: '0' + editor: '0' + previewer: '0' + event_author: '0' + grant_author: '0' + reduce: true + 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: node + plugin_id: moderation_state_filter + moderation_state_1: + id: moderation_state_1 + table: node_field_revision + field: moderation_state + relationship: none + group_type: group + admin_label: '' + operator: 'not in' + value: + editorial-published: editorial-published + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + 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: node + plugin_id: moderation_state_filter + sorts: { } + title: 'Moderated content' + header: { } + footer: { } + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + relationship: none + group_type: group + admin_label: '' + empty: true + tokenize: false + content: 'No moderated content available. Only pending versions of content, such as drafts, are listed here.' + plugin_id: text_custom + relationships: + nid: + id: nid + table: node_field_revision + field: nid + relationship: none + group_type: group + admin_label: 'Get the actual content from a content revision.' + required: false + entity_type: node + entity_field: nid + plugin_id: standard + uid: + id: uid + table: node_field_revision + field: uid + relationship: none + group_type: group + admin_label: User + required: false + entity_type: node + entity_field: uid + plugin_id: standard + arguments: { } + display_extenders: { } + filter_groups: + operator: AND + groups: + 1: AND + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user + - 'user.node_grants:view' + - user.permissions + tags: + - 'config:field.storage.node.field_node_primary_site' + - 'config:field.storage.node.field_node_site' + - 'config:workflow_list' + moderated_content: + display_plugin: page + id: moderated_content + display_title: 'Moderated content' + position: 1 + display_options: + display_extenders: { } + path: admin/content/moderated + display_description: '' + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user + - 'user.node_grants:view' + - user.permissions + tags: + - 'config:field.storage.node.field_node_primary_site' + - 'config:field.storage.node.field_node_site' + - 'config:workflow_list' diff --git a/src/TideSitePathAliasListBuilder.php b/src/TideSitePathAliasListBuilder.php new file mode 100644 index 0000000..0cffbe4 --- /dev/null +++ b/src/TideSitePathAliasListBuilder.php @@ -0,0 +1,32 @@ +getAlias(); + $path = $entity->getPath(); + $url = Url::fromUserInput($path); + $parent['data']['alias']['data'] = [ + '#type' => 'link', + '#title' => $alias, + '#url' => $url->setOption('attributes', ['title' => $alias]), + ]; + return $parent; + } + +} diff --git a/tide_site.install b/tide_site.install index 30f63cc..c30bc2c 100644 --- a/tide_site.install +++ b/tide_site.install @@ -286,3 +286,39 @@ function tide_site_update_8012() { $field->setSetting('alt_field', TRUE)->save(); } } + +/** + * Disable content moderation view. + */ +function tide_site_update_8014() { + $view = 'tide_core_moderated_content_filters'; + \Drupal::entityTypeManager()->getStorage('view') + ->load($view) + ->setStatus(FALSE) + ->save(); + + \Drupal::entityTypeManager()->getStorage('view')->load($view)->delete(); + \Drupal::configFactory()->getEditable('views.view.tide_core_moderated_content_filters')->delete(); +} + +/** + * Import content moderation view. + */ +function tide_site_update_8015() { + $view = 'views.view.tide_site_moderated_content_filters'; + $config_path = drupal_get_path('module', 'tide_site') . '/config/install'; + $source = new FileStorage($config_path); + $config_storage = \Drupal::service('config.storage'); + $config_storage->write($view, $source->read($view)); +} + +/** + * Import summary content filters view. + */ +function tide_site_update_8016() { + $view = 'views.view.summary_contents_filters'; + $config_path = drupal_get_path('module', 'tide_site') . '/config/install'; + $source = new FileStorage($config_path); + $config_storage = \Drupal::service('config.storage'); + $config_storage->write($view, $source->read($view)); +} diff --git a/tide_site.module b/tide_site.module index 2ad0594..4abd87b 100644 --- a/tide_site.module +++ b/tide_site.module @@ -17,6 +17,7 @@ use Drupal\tide_site\TideSiteMenuAutocreate; use Drupal\views\ViewExecutable; use Drupal\path_alias\Entity\PathAlias; use Drupal\path_alias\PathAliasInterface; +use Drupal\tide_site\TideSitePathAliasListBuilder; /** * Implements hook_entity_bundle_create(). @@ -681,3 +682,12 @@ function tide_site_form_views_exposed_form_alter(&$form, FormStateInterface $for } } } + +/** + * Implements hook_entity_type_alter(). + */ +function tide_site_entity_type_alter(array &$entity_types) { + if (isset($entity_types['path_alias'])) { + $entity_types['path_alias']->setListBuilderClass(TideSitePathAliasListBuilder::class); + } +}