Issue #3346218 by Kaushik1216, Harlor, urvashi_vora, xjm, pradhumanjain2311, nayana_mvr, smustgrave, larowlan, catch: Status message on comment edit is 'Your comment has been posted.'

merge-requests/5897/head^2
xjm 2024-04-17 18:11:54 -05:00
parent e021637080
commit 67f56fc232
No known key found for this signature in database
GPG Key ID: 206B0B8743BDF4C2
2 changed files with 29 additions and 11 deletions

View File

@ -16,6 +16,7 @@ use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Link;
use Drupal\Core\Render\RendererInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
@ -379,6 +380,7 @@ class CommentForm extends ContentEntityForm {
public function save(array $form, FormStateInterface $form_state) {
$comment = $this->entity;
$entity = $comment->getCommentedEntity();
$is_new = $this->entity->isNew();
$field_name = $comment->getFieldName();
$uri = $entity->toUrl();
$logger = $this->logger('comment');
@ -392,16 +394,8 @@ class CommentForm extends ContentEntityForm {
'%subject' => $comment->getSubject(),
'link' => Link::fromTextAndUrl(t('View'), $comment->toUrl()->setOption('fragment', 'comment-' . $comment->id()))->toString(),
]);
// Explain the approval queue if necessary.
if (!$comment->isPublished()) {
if (!$this->currentUser->hasPermission('administer comments')) {
$this->messenger()->addStatus($this->t('Your comment has been queued for review by site administrators and will be published after approval.'));
}
}
else {
$this->messenger()->addStatus($this->t('Your comment has been posted.'));
}
// Add an appropriate message upon submitting the comment form.
$this->messenger()->addStatus($this->getStatusMessage($comment, $is_new));
$query = [];
// Find the current display page for this comment.
$field_definition = $this->entityFieldManager->getFieldDefinitions($entity->getEntityTypeId(), $entity->bundle())[$field_name];
@ -421,4 +415,28 @@ class CommentForm extends ContentEntityForm {
$form_state->setRedirectUrl($uri);
}
/**
* Gets an appropriate status message when a comment is saved.
*
* @param \Drupal\comment\CommentInterface $comment
* The comment being saved.
* @param bool $is_new
* TRUE if a new comment is created. $comment->isNew() cannot be used here
* because the comment has already been saved by the time the message is
* rendered.
*
* @return \Drupal\Core\StringTranslation\TranslatableMarkup
* A translatable string containing the appropriate status message.
*/
protected function getStatusMessage(CommentInterface $comment, bool $is_new): TranslatableMarkup {
if (!$comment->isPublished() && !$this->currentUser->hasPermission('administer comments')) {
return $this->t('Your comment has been queued for review by site administrators and will be published after approval.');
}
// Check whether the comment is new or not.
if ($is_new) {
return $this->t('Your comment has been posted.');
}
return $this->t('Your comment has been updated.');
}
}

View File

@ -178,7 +178,7 @@ class CommentPreviewTest extends CommentTestBase {
// Check that saving a comment produces a success message.
$this->drupalGet('comment/' . $comment->id() . '/edit');
$this->submitForm($edit, 'Save');
$this->assertSession()->pageTextContains('Your comment has been posted.');
$this->assertSession()->pageTextContains('Your comment has been updated.');
// Check that the comment fields are correct after loading the saved comment.
$this->drupalGet('comment/' . $comment->id() . '/edit');