Issue #2922018 by jhedstrom, amateescu: Set revision creation time when moderating content
parent
20564b99a0
commit
839d67fa83
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Drupal\content_moderation\Form;
|
namespace Drupal\content_moderation\Form;
|
||||||
|
|
||||||
|
use Drupal\Component\Datetime\Time;
|
||||||
use Drupal\Core\Entity\ContentEntityInterface;
|
use Drupal\Core\Entity\ContentEntityInterface;
|
||||||
use Drupal\Core\Entity\RevisionLogInterface;
|
use Drupal\Core\Entity\RevisionLogInterface;
|
||||||
use Drupal\Core\Form\FormBase;
|
use Drupal\Core\Form\FormBase;
|
||||||
|
|
@ -25,6 +26,13 @@ class EntityModerationForm extends FormBase {
|
||||||
*/
|
*/
|
||||||
protected $moderationInfo;
|
protected $moderationInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The time service.
|
||||||
|
*
|
||||||
|
* @var \Drupal\Component\Datetime\Time
|
||||||
|
*/
|
||||||
|
protected $time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The moderation state transition validation service.
|
* The moderation state transition validation service.
|
||||||
*
|
*
|
||||||
|
|
@ -39,9 +47,12 @@ class EntityModerationForm extends FormBase {
|
||||||
* The moderation information service.
|
* The moderation information service.
|
||||||
* @param \Drupal\content_moderation\StateTransitionValidation $validation
|
* @param \Drupal\content_moderation\StateTransitionValidation $validation
|
||||||
* The moderation state transition validation service.
|
* The moderation state transition validation service.
|
||||||
|
* @param \Drupal\Component\Datetime\Time $time
|
||||||
|
* The time service.
|
||||||
*/
|
*/
|
||||||
public function __construct(ModerationInformationInterface $moderation_info, StateTransitionValidation $validation) {
|
public function __construct(ModerationInformationInterface $moderation_info, StateTransitionValidation $validation, Time $time) {
|
||||||
$this->moderationInfo = $moderation_info;
|
$this->moderationInfo = $moderation_info;
|
||||||
|
$this->time = $time;
|
||||||
$this->validation = $validation;
|
$this->validation = $validation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -51,7 +62,8 @@ class EntityModerationForm extends FormBase {
|
||||||
public static function create(ContainerInterface $container) {
|
public static function create(ContainerInterface $container) {
|
||||||
return new static(
|
return new static(
|
||||||
$container->get('content_moderation.moderation_information'),
|
$container->get('content_moderation.moderation_information'),
|
||||||
$container->get('content_moderation.state_transition_validation')
|
$container->get('content_moderation.state_transition_validation'),
|
||||||
|
$container->get('datetime.time')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -132,6 +144,7 @@ class EntityModerationForm extends FormBase {
|
||||||
$entity->set('moderation_state', $new_state);
|
$entity->set('moderation_state', $new_state);
|
||||||
|
|
||||||
if ($entity instanceof RevisionLogInterface) {
|
if ($entity instanceof RevisionLogInterface) {
|
||||||
|
$entity->setRevisionCreationTime($this->time->getRequestTime());
|
||||||
$entity->setRevisionLogMessage($form_state->getValue('revision_log'));
|
$entity->setRevisionLogMessage($form_state->getValue('revision_log'));
|
||||||
$entity->setRevisionUserId($this->currentUser()->id());
|
$entity->setRevisionUserId($this->currentUser()->id());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,7 @@ class ModerationFormTest extends ModerationStateTestBase {
|
||||||
// Make a pending revision.
|
// Make a pending revision.
|
||||||
$node->title = $this->randomMachineName();
|
$node->title = $this->randomMachineName();
|
||||||
$node->moderation_state->value = 'draft';
|
$node->moderation_state->value = 'draft';
|
||||||
|
$node->setRevisionCreationTime(12345);
|
||||||
$node->save();
|
$node->save();
|
||||||
|
|
||||||
$another_user = $this->drupalCreateUser($this->permissions);
|
$another_user = $this->drupalCreateUser($this->permissions);
|
||||||
|
|
@ -217,6 +218,10 @@ class ModerationFormTest extends ModerationStateTestBase {
|
||||||
|
|
||||||
$this->drupalGet(sprintf('node/%d/revisions', $node->id()));
|
$this->drupalGet(sprintf('node/%d/revisions', $node->id()));
|
||||||
$this->assertText('by ' . $another_user->getAccountName());
|
$this->assertText('by ' . $another_user->getAccountName());
|
||||||
|
|
||||||
|
// Verify the revision creation time has been updated.
|
||||||
|
$node = $node->load($node->id());
|
||||||
|
$this->assertGreaterThan(12345, $node->getRevisionCreationTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue