Loading core/modules/comment/config/schema/comment.views.schema.yml +4 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,10 @@ views.field.comment_last_timestamp: views.field.comment_link_approve: type: views.field.comment_link label: 'Comment approve link' mapping: text: type: label label: 'Text to display' views.field.comment_link_reply: type: views.field.comment_link Loading core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_schema.yml 0 → 100644 +301 −0 Original line number Diff line number Diff line langcode: en status: true dependencies: module: - comment - user id: test_comment_schema label: Comments module: comment description: 'Find and manage comments.' tag: default base_table: comment_field_data base_field: cid display: default: id: default display_title: Default display_plugin: default position: 0 display_options: title: Comments fields: subject: id: subject table: comment_field_data field: subject relationship: none group_type: group admin_label: '' entity_type: comment entity_field: subject plugin_id: field 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: 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: comment_permalink 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 approve_comment: id: approve_comment table: comment field: approve_comment relationship: none group_type: group admin_label: '' entity_type: comment plugin_id: comment_link_approve label: 'Link to approve comment' 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 text: Approve status: id: status table: comment_field_data field: status relationship: none group_type: group admin_label: '' entity_type: comment entity_field: status plugin_id: field label: 'Approved status' 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: boolean settings: format: yes-no format_custom_false: '' format_custom_true: Approved 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 pager: type: none options: offset: 0 exposed_form: type: basic options: submit_button: Filter 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: 'administer comments' cache: type: none options: { } empty: { } sorts: { } arguments: { } filters: { } filter_groups: operator: AND groups: { } style: type: table options: grouping: { } row_class: '' default_row_class: false columns: approve_comment: approve_comment default: '-1' info: approve_comment: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' override: false 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: { } css_class: '' use_ajax: false group_by: false show_admin_links: true use_more: false use_more_always: true use_more_text: more header: { } footer: { } hide_attachment_summary: false display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - user.permissions tags: { } cacheable: false page_1: id: page_1 display_title: Page display_plugin: page position: 1 display_options: display_extenders: { } path: admin/moderate-comments cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - user.permissions tags: { } core/modules/comment/tests/src/Functional/Views/CommentApproveLinkTest.php 0 → 100644 +59 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\comment\Functional\Views; /** * Test the "approve_comment" views field for approving comments. * * @group comment */ class CommentApproveLinkTest extends CommentTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'comment', 'comment_test_views', 'system', 'views', ]; /** * {@inheritdoc} */ protected $defaultTheme = 'stark'; /** * Views used by this test. * * @var array */ public static $testViews = ['test_comment_schema']; /** * {@inheritdoc} */ protected function setUp($import_test_views = TRUE, $modules = ['comment_test_views']): void { parent::setUp($import_test_views, $modules); } /** * Tests that "approve comment" link exists and works as expected. */ public function testCommentApproveLink() { $this->drupalLogin($this->drupalCreateUser(['administer comments'])); // Set the comment status to unpublished. $this->comment->setUnpublished(); $this->comment->save(); $this->drupalGet('/admin/moderate-comments'); $this->assertSession()->pageTextContains($this->comment->getSubject()); $this->assertSession()->linkExists('Approve'); $this->clickLink('Approve'); $this->drupalGet('/admin/moderate-comments'); $this->assertSession()->linkNotExists('Approve'); // Ensure that "published" column in table is marked as yes. $this->assertSession()->elementTextContains('xpath', "//table/tbody/tr/td[3]", 'Yes'); } } Loading
core/modules/comment/config/schema/comment.views.schema.yml +4 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,10 @@ views.field.comment_last_timestamp: views.field.comment_link_approve: type: views.field.comment_link label: 'Comment approve link' mapping: text: type: label label: 'Text to display' views.field.comment_link_reply: type: views.field.comment_link Loading
core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_schema.yml 0 → 100644 +301 −0 Original line number Diff line number Diff line langcode: en status: true dependencies: module: - comment - user id: test_comment_schema label: Comments module: comment description: 'Find and manage comments.' tag: default base_table: comment_field_data base_field: cid display: default: id: default display_title: Default display_plugin: default position: 0 display_options: title: Comments fields: subject: id: subject table: comment_field_data field: subject relationship: none group_type: group admin_label: '' entity_type: comment entity_field: subject plugin_id: field 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: 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: comment_permalink 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 approve_comment: id: approve_comment table: comment field: approve_comment relationship: none group_type: group admin_label: '' entity_type: comment plugin_id: comment_link_approve label: 'Link to approve comment' 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 text: Approve status: id: status table: comment_field_data field: status relationship: none group_type: group admin_label: '' entity_type: comment entity_field: status plugin_id: field label: 'Approved status' 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: boolean settings: format: yes-no format_custom_false: '' format_custom_true: Approved 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 pager: type: none options: offset: 0 exposed_form: type: basic options: submit_button: Filter 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: 'administer comments' cache: type: none options: { } empty: { } sorts: { } arguments: { } filters: { } filter_groups: operator: AND groups: { } style: type: table options: grouping: { } row_class: '' default_row_class: false columns: approve_comment: approve_comment default: '-1' info: approve_comment: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' override: false 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: { } css_class: '' use_ajax: false group_by: false show_admin_links: true use_more: false use_more_always: true use_more_text: more header: { } footer: { } hide_attachment_summary: false display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - user.permissions tags: { } cacheable: false page_1: id: page_1 display_title: Page display_plugin: page position: 1 display_options: display_extenders: { } path: admin/moderate-comments cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - user.permissions tags: { }
core/modules/comment/tests/src/Functional/Views/CommentApproveLinkTest.php 0 → 100644 +59 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\comment\Functional\Views; /** * Test the "approve_comment" views field for approving comments. * * @group comment */ class CommentApproveLinkTest extends CommentTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'comment', 'comment_test_views', 'system', 'views', ]; /** * {@inheritdoc} */ protected $defaultTheme = 'stark'; /** * Views used by this test. * * @var array */ public static $testViews = ['test_comment_schema']; /** * {@inheritdoc} */ protected function setUp($import_test_views = TRUE, $modules = ['comment_test_views']): void { parent::setUp($import_test_views, $modules); } /** * Tests that "approve comment" link exists and works as expected. */ public function testCommentApproveLink() { $this->drupalLogin($this->drupalCreateUser(['administer comments'])); // Set the comment status to unpublished. $this->comment->setUnpublished(); $this->comment->save(); $this->drupalGet('/admin/moderate-comments'); $this->assertSession()->pageTextContains($this->comment->getSubject()); $this->assertSession()->linkExists('Approve'); $this->clickLink('Approve'); $this->drupalGet('/admin/moderate-comments'); $this->assertSession()->linkNotExists('Approve'); // Ensure that "published" column in table is marked as yes. $this->assertSession()->elementTextContains('xpath', "//table/tbody/tr/td[3]", 'Yes'); } }