public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('contentTypeGroupId', 'hidden', ['constraints' => new Callback(function ($contentTypeGroupId, ExecutionContextInterface $context) {
         try {
             $this->contentTypeService->loadContentTypeGroup($contentTypeGroupId);
         } catch (NotFoundException $e) {
             $context->buildViolation('content_type.error.content_type_group.not_found')->setParameter('%id%', $contentTypeGroupId)->addViolation();
         }
     })])->add('create', 'submit', ['label' => 'content_type.create']);
 }
 public function processUpdate(FormActionEvent $event)
 {
     /** @var \EzSystems\RepositoryForms\Data\ContentTypeGroup\ContentTypeGroupUpdateData|\EzSystems\RepositoryForms\Data\ContentTypeGroup\ContentTypeGroupCreateData $data */
     $data = $event->getData();
     if ($data->isNew()) {
         $contentTypeGroup = $this->contentTypeService->createContentTypeGroup($data);
     } else {
         $this->contentTypeService->updateContentTypeGroup($data->contentTypeGroup, $data);
         $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($data->getId());
     }
     $data->setContentTypeGroup($contentTypeGroup);
 }
 public function createContentTypeAction(Request $request, $contentTypeGroupId, $languageCode = null)
 {
     $createForm = $this->createForm(new ContentTypeCreateType($this->contentTypeService), ['contentTypeGroupId' => $contentTypeGroupId]);
     $createForm->handleRequest($request);
     if ($createForm->isValid()) {
         $languageCode = $languageCode ?: $this->prioritizedLanguages[0];
         $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($createForm->getData()['contentTypeGroupId']);
         $contentTypeCreateStruct = new ContentTypeCreateStruct(['identifier' => '__new__' . md5(microtime(true)), 'mainLanguageCode' => $languageCode, 'names' => [$languageCode => 'New ContentType']]);
         $contentTypeDraft = $this->contentTypeService->createContentType($contentTypeCreateStruct, [$contentTypeGroup]);
         return $this->redirectToRouteAfterFormPost('admin_contenttypeUpdate', ['contentTypeId' => $contentTypeDraft->id, 'languageCode' => $languageCode]);
     }
     // Form validation failed. Send errors as notifications.
     foreach ($createForm->getErrors(true) as $error) {
         $this->notifyErrorPlural($error->getMessageTemplate(), $error->getMessagePluralization(), $error->getMessageParameters(), 'ezrepoforms_content_type');
     }
     return $this->redirectToRouteAfterFormPost('admin_contenttypeGroupView', ['contentTypeGroupId' => $contentTypeGroupId]);
 }
Ejemplo n.º 4
0
 /**
  * Removes the given group from the content type and returns the updated group list
  *
  * @param $contentTypeId
  * @param $contentTypeGroupId
  *
  * @throws \eZ\Publish\Core\REST\Server\Exceptions\ForbiddenException
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\NotFoundException
  * @return \eZ\Publish\Core\REST\Server\Values\ContentTypeGroupRefList
  */
 public function unlinkContentTypeFromGroup($contentTypeId, $contentTypeGroupId)
 {
     $contentType = $this->contentTypeService->loadContentType($contentTypeId);
     $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($contentTypeGroupId);
     $existingContentTypeGroups = $contentType->getContentTypeGroups();
     $contentTypeInGroup = false;
     foreach ($existingContentTypeGroups as $existingGroup) {
         if ($existingGroup->id == $contentTypeGroup->id) {
             $contentTypeInGroup = true;
             break;
         }
     }
     if (!$contentTypeInGroup) {
         throw new Exceptions\NotFoundException('Content type is not in the given group');
     }
     if (count($existingContentTypeGroups) == 1) {
         throw new ForbiddenException('Content type cannot be unlinked from the only remaining group');
     }
     $this->contentTypeService->unassignContentTypeGroup($contentType, $contentTypeGroup);
     $contentType = $this->contentTypeService->loadContentType($contentTypeId);
     return new Values\ContentTypeGroupRefList($contentType, $contentType->getContentTypeGroups());
 }
 /**
  * Get a Content Type Group object by id
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If group can not be found
  *
  * @param mixed $contentTypeGroupId
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup
  */
 public function loadContentTypeGroup($contentTypeGroupId)
 {
     return $this->service->loadContentTypeGroup($contentTypeGroupId);
 }