diff --git a/core/modules/comment/src/CommentLazyBuilders.php b/core/modules/comment/src/CommentLazyBuilders.php index d553411b9f34db02ef2ea932179c97b693557d64..a3d3df36848d032f27bf37381a6f9e9621a9b527 100644 --- a/core/modules/comment/src/CommentLazyBuilders.php +++ b/core/modules/comment/src/CommentLazyBuilders.php @@ -184,7 +184,8 @@ protected function buildLinks(CommentInterface $entity, EntityInterface $comment ]; } $field_definition = $commented_entity->getFieldDefinition($entity->getFieldName()); - if ($entity->access('create') + if ($entity->isPublished() + && $entity->access('create') && $field_definition->getSetting('default_mode') === CommentManagerInterface::COMMENT_MODE_THREADED) { $links['comment-reply'] = [ 'title' => t('Reply'), diff --git a/core/modules/comment/tests/src/Functional/CommentThreadingTest.php b/core/modules/comment/tests/src/Functional/CommentThreadingTest.php index 38620e75af52ebe2f0f623a4d4674f07b1a93550..75cff165aa8d7dac073c0976e32ed57443508c54 100644 --- a/core/modules/comment/tests/src/Functional/CommentThreadingTest.php +++ b/core/modules/comment/tests/src/Functional/CommentThreadingTest.php @@ -18,6 +18,31 @@ class CommentThreadingTest extends CommentTestBase { */ protected $defaultTheme = 'stark'; + /** + * Check the reply link on unpublished comments. + */ + public function testCommentReplyLinkUnpublished(): void { + // Set comments to have a subject with preview disabled. + $this->setCommentPreview(DRUPAL_DISABLED); + $this->setCommentForm(FALSE); + $this->setCommentSettings('default_mode', CommentManagerInterface:: COMMENT_MODE_THREADED, 'Comment paging changed.'); + + // Create a node. + $this->drupalLogin($this->adminUser); + $this->node = $this->drupalCreateNode(['type' => 'article', 'promote' => 1, 'uid' => $this->webUser->id()]); + + // Post comment #1. + $comment_text = $this->randomMachineName(); + $comment1 = $this->postComment($this->node, $comment_text, '', TRUE); + $this->drupalGet($this->node->toUrl()); + $this->assertSession()->pageTextContains('Reply'); + $comment1->setUnpublished(); + $comment1->save(); + + $this->drupalGet($this->node->toUrl()); + $this->assertSession()->pageTextNotContains('Reply'); + } + /** * Tests the comment threading. */ @@ -33,7 +58,6 @@ public function testCommentThreading(): void { $this->node = $this->drupalCreateNode(['type' => 'article', 'promote' => 1, 'uid' => $this->webUser->id()]); // Post comment #1. - $this->drupalLogin($this->webUser); $subject_text = $this->randomMachineName(); $comment_text = $this->randomMachineName();