diff --git a/core/modules/content_moderation/src/EntityOperations.php b/core/modules/content_moderation/src/EntityOperations.php index 3f66100581..f0de8ce107 100644 --- a/core/modules/content_moderation/src/EntityOperations.php +++ b/core/modules/content_moderation/src/EntityOperations.php @@ -272,13 +272,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 b664c65d25..5765b49d08 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,11 +118,20 @@ 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. + if ($original_entity->hasTranslation($language->getId())) { + $original_entity = $original_entity->getTranslation($language->getId()); + } + } + if ($original_entity) { $original_id = $original_entity->moderation_state; } - return !($entity->moderation_state && $original_entity && $original_id); + return !($entity->moderation_state->value && $original_entity && $original_id); } }