public function updateFieldDefinition($identifier, FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct) { $contentTypeDraft = $this->contentTypeService->createContentTypeDraft($this->currentContentType); $this->contentTypeService->updateFieldDefinition($contentTypeDraft, $this->currentContentType->getFieldDefinition($identifier), $fieldDefinitionUpdateStruct); $this->contentTypeService->publishContentTypeDraft($contentTypeDraft); $this->currentContentType = $this->contentTypeService->loadContentTypeByIdentifier($this->currentContentType->identifier); }
public function processDefaultAction(FormActionEvent $event) { // Don't update anything if we just want to cancel the draft. if ($event->getClickedButton() === 'removeDraft') { return; } // Always update FieldDefinitions and ContentTypeDraft /** @var \EzSystems\RepositoryForms\Data\ContentTypeData $contentTypeData */ $contentTypeData = $event->getData(); $contentTypeDraft = $contentTypeData->contentTypeDraft; foreach ($contentTypeData->fieldDefinitionsData as $fieldDefData) { $this->contentTypeService->updateFieldDefinition($contentTypeDraft, $fieldDefData->fieldDefinition, $fieldDefData); } $this->contentTypeService->updateContentTypeDraft($contentTypeDraft, $contentTypeData); }
/** * Updates the attributes of a field definition * * @param $contentTypeId * @param $fieldDefinitionId * * @throws \eZ\Publish\Core\REST\Server\Exceptions\ForbiddenException * @throws \eZ\Publish\Core\REST\Common\Exceptions\NotFoundException * @return \eZ\Publish\Core\REST\Server\Values\FieldDefinitionList */ public function updateContentTypeDraftFieldDefinition($contentTypeId, $fieldDefinitionId, Request $request) { $contentTypeDraft = $this->contentTypeService->loadContentTypeDraft($contentTypeId); $fieldDefinitionUpdate = $this->inputDispatcher->parse(new Message(array('Content-Type' => $request->headers->get('Content-Type'), 'Url' => $request->getPathInfo()), $request->getContent())); $fieldDefinition = null; foreach ($contentTypeDraft->getFieldDefinitions() as $fieldDef) { if ($fieldDef->id == $fieldDefinitionId) { $fieldDefinition = $fieldDef; } } if ($fieldDefinition === null) { throw new Exceptions\NotFoundException("Field definition not found: '{$request->getPathInfo()}'."); } try { $this->contentTypeService->updateFieldDefinition($contentTypeDraft, $fieldDefinition, $fieldDefinitionUpdate); } catch (InvalidArgumentException $e) { throw new ForbiddenException($e->getMessage()); } $updatedDraft = $this->contentTypeService->loadContentTypeDraft($contentTypeId); foreach ($updatedDraft->getFieldDefinitions() as $fieldDef) { if ($fieldDef->id == $fieldDefinitionId) { return new Values\RestFieldDefinition($updatedDraft, $fieldDef); } } throw new Exceptions\NotFoundException("Field definition not found: '{$request->getPathInfo()}'."); }
/** * Update a field definition * * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If the field id in the update struct is not found or does not belong to the content type of * If the given identifier is used in an existing field of the given content type * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to edit a content type * * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft the content type draft * @param \eZ\Publish\API\Repository\Values\ContentType\FieldDefinition $fieldDefinition the field definition which should be updated * @param \eZ\Publish\API\Repository\Values\ContentType\FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct */ public function updateFieldDefinition(ContentTypeDraft $contentTypeDraft, FieldDefinition $fieldDefinition, FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct) { $returnValue = $this->service->updateFieldDefinition($contentTypeDraft, $fieldDefinition, $fieldDefinitionUpdateStruct); $this->signalDispatcher->emit(new UpdateFieldDefinitionSignal(array('contentTypeDraftId' => $contentTypeDraft->id, 'fieldDefinitionId' => $fieldDefinition->id))); return $returnValue; }