diff --git a/src/lib/Form/Processor/PreviewFormProcessor.php b/src/lib/Form/Processor/PreviewFormProcessor.php index d18d0c8014..f024bbb062 100644 --- a/src/lib/Form/Processor/PreviewFormProcessor.php +++ b/src/lib/Form/Processor/PreviewFormProcessor.php @@ -92,7 +92,7 @@ public function processPreview(FormActionEvent $event): void $referrerLocation = $event->getOption('referrerLocation'); try { - $contentDraft = $this->saveDraft($data, $languageCode); + $contentDraft = $this->saveDraft($data, $languageCode, false); $contentLocation = $this->resolveLocation($contentDraft, $referrerLocation, $data); $url = $this->urlGenerator->generate('ezplatform.content.preview', [ 'locationId' => null !== $contentLocation ? $contentLocation->id : null, @@ -130,7 +130,7 @@ public function processPreview(FormActionEvent $event): void * @throws ContentValidationException * @throws ContentFieldValidationException */ - private function saveDraft(ContentStruct $data, string $languageCode): Content + private function saveDraft(ContentStruct $data, string $languageCode, bool $validate): Content { $mainLanguageCode = $this->resolveMainLanguageCode($data); foreach ($data->fieldsData as $fieldDefIdentifier => $fieldData) { @@ -142,9 +142,9 @@ private function saveDraft(ContentStruct $data, string $languageCode): Content } if ($data->isNew()) { - $contentDraft = $this->contentService->createContent($data, $data->getLocationStructs()); + $contentDraft = $this->contentService->createContent($data, $data->getLocationStructs(), $validate); } else { - $contentDraft = $this->contentService->updateContent($data->contentDraft->getVersionInfo(), $data); + $contentDraft = $this->contentService->updateContent($data->contentDraft->getVersionInfo(), $data, $validate); } return $contentDraft; diff --git a/src/lib/Form/Type/Extension/Content/ContentEditTypeExtension.php b/src/lib/Form/Type/Extension/Content/ContentEditTypeExtension.php index 05c7c55508..c00f7c9139 100644 --- a/src/lib/Form/Type/Extension/Content/ContentEditTypeExtension.php +++ b/src/lib/Form/Type/Extension/Content/ContentEditTypeExtension.php @@ -10,8 +10,10 @@ use EzSystems\EzPlatformContentForms\Form\Type\Content\ContentEditType; use Symfony\Component\Form\AbstractTypeExtension; +use Symfony\Component\Form\Event\PostSubmitEvent; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormEvents; /** * Extends Content Edit form with additional fields. @@ -26,9 +28,20 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('preview', SubmitType::class, [ 'label' => /** @Desc("Preview") */ 'preview', - 'attr' => ['hidden' => true], + 'attr' => [ + 'hidden' => true, + 'formnovalidate' => 'formnovalidate', + ], 'translation_domain' => 'content_preview', ]); + + $builder->addEventListener(FormEvents::POST_SUBMIT, static function (PostSubmitEvent $event): void { + $form = $event->getForm(); + + if ($form->get('preview')->isClicked()) { + $event->stopPropagation(); + } + }, 900); } public static function getExtendedTypes(): iterable