diff --git a/core/modules/content_moderation/src/EntityOperations.php b/core/modules/content_moderation/src/EntityOperations.php index d33f9ed..c42214f 100644 --- a/core/modules/content_moderation/src/EntityOperations.php +++ b/core/modules/content_moderation/src/EntityOperations.php @@ -271,13 +271,13 @@ protected function isDefaultRevisionPublished(EntityInterface $entity, WorkflowI // Load the translated revision. $language_revision = $default_revision->getTranslation($language->getId()); // Return TRUE if a translation with a published state is found. - if ($workflow->getState($language_revision->moderation_state->value)->isPublishedState()) { + if ($language_revision->moderation_state->value && $workflow->getState($language_revision->moderation_state->value)->isPublishedState()) { return TRUE; } } } - return $workflow->getState($default_revision->moderation_state->value)->isPublishedState(); + return $language_revision->moderation_state->value && $workflow->getState($default_revision->moderation_state->value)->isPublishedState(); } } diff --git a/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php b/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php index d9308e8..2845e47 100644 --- a/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php +++ b/core/modules/content_moderation/src/Plugin/Validation/Constraint/ModerationStateConstraintValidator.php @@ -7,6 +7,7 @@ use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\content_moderation\ModerationInformationInterface; use Drupal\content_moderation\StateTransitionValidation; +use Drupal\Core\TypedData\TranslatableInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; @@ -117,9 +118,17 @@ public function validate($value, Constraint $constraint) { protected function isFirstTimeModeration(EntityInterface $entity) { $original_entity = $this->moderationInformation->getLatestRevision($entity->getEntityTypeId(), $entity->id()); - $original_id = $original_entity->moderation_state; + if ($original_entity instanceof TranslatableInterface && $original_entity->isTranslatable()) { + $language = $entity->language(); + // Use Language specific revision for translatable content. + $original_entity = $original_entity->getTranslation($language->getId()); + } + + if ($original_entity) { + $original_id = $original_entity->moderation_state->value; + } - return !($entity->moderation_state && $original_entity && $original_id); + return !($entity->moderation_state->value && $original_entity && $original_id); } }