Example #1
0
 /**
  * {@inheritdoc}
  */
 public function getTitle()
 {
     if (!$this->moderationInfo->isModeratedEntity($this->entity)) {
         // Moderation isn't enabled.
         return parent::getTitle();
     }
     // @todo https://www.drupal.org/node/2779933 write a test for this.
     return $this->moderationInfo->isLiveRevision($this->entity) ? $this->t('New draft') : $this->t('Edit draft');
 }
 /**
  * {@inheritdoc}
  */
 public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state)
 {
     /** @var ContentEntityInterface $entity */
     $entity = $items->getEntity();
     /* @var \Drupal\Core\Config\Entity\ConfigEntityInterface $bundle_entity */
     $bundle_entity = $this->entityTypeManager->getStorage($entity->getEntityType()->getBundleEntityType())->load($entity->bundle());
     if (!$this->moderationInformation->isModeratedEntity($entity)) {
         // @todo https://www.drupal.org/node/2779933 write a test for this.
         return $element + ['#access' => FALSE];
     }
     $default = $items->get($delta)->value ?: $bundle_entity->getThirdPartySetting('content_moderation', 'default_moderation_state', FALSE);
     /** @var \Drupal\content_moderation\ModerationStateInterface $default_state */
     $default_state = $this->entityTypeManager->getStorage('moderation_state')->load($default);
     if (!$default || !$default_state) {
         throw new \UnexpectedValueException(sprintf('The %s bundle has an invalid moderation state configuration, moderation states are enabled but no default is set.', $bundle_entity->label()));
     }
     $transitions = $this->validator->getValidTransitions($entity, $this->currentUser);
     $target_states = [];
     /** @var \Drupal\content_moderation\Entity\ModerationStateTransition $transition */
     foreach ($transitions as $transition) {
         $target_states[$transition->getToState()] = $transition->label();
     }
     // @todo https://www.drupal.org/node/2779933 write a test for this.
     $element += ['#access' => FALSE, '#type' => 'select', '#options' => $target_states, '#default_value' => $default, '#published' => $default ? $default_state->isPublishedState() : FALSE, '#key_column' => $this->column];
     $element['#element_validate'][] = array(get_class($this), 'validateElement');
     // Use the dropbutton.
     $element['#process'][] = [get_called_class(), 'processActions'];
     return $element;
 }
 /**
  * @dataProvider providerBoolean
  * @covers ::shouldModerateEntitiesOfBundle
  */
 public function testShouldModerateEntities($status)
 {
     $entity_type = new ContentEntityType(['id' => 'test_entity_type', 'bundle_entity_type' => 'entity_test_bundle', 'handlers' => ['moderation' => ModerationHandler::class]]);
     $moderation_information = new ModerationInformation($this->setupModerationEntityManager($status), $this->getUser());
     $this->assertEquals($status, $moderation_information->shouldModerateEntitiesOfBundle($entity_type, 'test_bundle'));
 }