public function createContentType(ContentTypeCreateStruct $struct) { if (!isset($struct->mainLanguageCode)) { $struct->mainLanguageCode = 'eng-GB'; } if (!isset($struct->names)) { $struct->names = ['eng-GB' => $struct->identifier]; } $this->contentTypeService->publishContentTypeDraft($this->contentTypeService->createContentType($struct, [$this->contentTypeService->loadContentTypeGroupByIdentifier('Content')])); $this->currentContentType = $this->contentTypeService->loadContentTypeByIdentifier($struct->identifier); }
/** * Create new content type draft * * @param array $data * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft */ private function getNewDraft(array &$data) { $struct = $this->contentTypeService->newContentTypeCreateStruct($data['identifier']); $this->fillValueObject($struct, $data); $struct->mainLanguageCode = $this->getContentDataMainLanguage($data); $groups = $this->getContentTypeGroups($data); return $this->contentTypeService->createContentType($struct, $groups); }
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]); }
/** * Creates a new content type draft in the given content type group * * @param $contentTypeGroupId * * @throws \eZ\Publish\Core\REST\Server\Exceptions\ForbiddenException * @throws \eZ\Publish\Core\REST\Server\Exceptions\BadRequestException * @return \eZ\Publish\Core\REST\Server\Values\CreatedContentType */ public function createContentType($contentTypeGroupId, Request $request) { $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($contentTypeGroupId); $publish = $request->query->has('publish') && $request->query->get('publish') === 'true'; try { $contentTypeDraft = $this->contentTypeService->createContentType($this->inputDispatcher->parse(new Message(array('Content-Type' => $request->headers->get('Content-Type'), '__publish' => $publish), $request->getContent())), array($contentTypeGroup)); } catch (InvalidArgumentException $e) { throw new ForbiddenException($e->getMessage()); } catch (ContentTypeValidationException $e) { throw new BadRequestException($e->getMessage()); } catch (ContentTypeFieldDefinitionValidationException $e) { throw new BadRequestException($e->getMessage()); } catch (Exceptions\Parser $e) { throw new BadRequestException($e->getMessage()); } if ($publish) { $this->contentTypeService->publishContentTypeDraft($contentTypeDraft); $contentType = $this->contentTypeService->loadContentType($contentTypeDraft->id); return new Values\CreatedContentType(array('contentType' => new Values\RestContentType($contentType, $contentType->getFieldDefinitions()))); } return new Values\CreatedContentType(array('contentType' => new Values\RestContentType($contentTypeDraft, $contentTypeDraft->getFieldDefinitions()))); }
/** * Create a Content Type object. * * The content type is created in the state STATUS_DRAFT. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to create a content type * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException In case when * - array of content type groups does not contain at least one content type group * - identifier or remoteId in the content type create struct already exists * - there is a duplicate field identifier in the content type create struct * - content type create struct does not contain at least one field definition create struct * @throws \eZ\Publish\API\Repository\Exceptions\ContentTypeFieldDefinitionValidationException * if a field definition in the $contentTypeCreateStruct is not valid * * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeCreateStruct $contentTypeCreateStruct * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup[] $contentTypeGroups Required array of * {@link ContentTypeGroup} to link type with (must contain one) * * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft */ public function createContentType(ContentTypeCreateStruct $contentTypeCreateStruct, array $contentTypeGroups) { $returnValue = $this->service->createContentType($contentTypeCreateStruct, $contentTypeGroups); $this->signalDispatcher->emit(new CreateContentTypeSignal(array('contentTypeId' => $returnValue->id))); return $returnValue; }