From 18b5dd7cb7dbfc888075cafddcf3bc4319c49bfc Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Tue, 8 Apr 2025 14:11:57 +0200 Subject: [PATCH 1/7] Get Layout Definition for Group ID --- config/classification_store.yaml | 8 +- .../Controller/GetLayoutByGroupController.php | 105 ++++++++++++++++++ .../Event/GroupLayoutEvent.php | 42 +++++++ .../Hydrator/GroupLayoutHydrator.php | 37 ++++++ .../Hydrator/GroupLayoutHydratorInterface.php | 33 ++++++ .../MappedParameter/LayoutParameter.php | 43 +++++++ .../Repository/GroupConfigRepository.php | 17 +++ .../GroupConfigRepositoryInterface.php | 6 + .../Repository/KeyGroupRelationRepository.php | 14 +++ .../KeyGroupRelationRepositoryInterface.php | 5 + .../Schema/GroupLayout.php | 75 +++++++++++++ src/ClassificationStore/Schema/KeyLayout.php | 71 ++++++++++++ .../Service/GroupService.php | 50 +++++++++ .../Service/GroupServiceInterface.php | 8 ++ .../Service/KeyGroupLayoutService.php | 73 ++++++++++++ .../KeyGroupLayoutServiceInterface.php | 37 ++++++ .../Service/KeyGroupRelationService.php | 42 +++++++ translations/studio_api_docs.en.yaml | 5 +- 18 files changed, 669 insertions(+), 2 deletions(-) create mode 100644 src/ClassificationStore/Controller/GetLayoutByGroupController.php create mode 100644 src/ClassificationStore/Event/GroupLayoutEvent.php create mode 100644 src/ClassificationStore/Hydrator/GroupLayoutHydrator.php create mode 100644 src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php create mode 100644 src/ClassificationStore/MappedParameter/LayoutParameter.php create mode 100644 src/ClassificationStore/Schema/GroupLayout.php create mode 100644 src/ClassificationStore/Schema/KeyLayout.php create mode 100644 src/ClassificationStore/Service/KeyGroupLayoutService.php create mode 100644 src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php diff --git a/config/classification_store.yaml b/config/classification_store.yaml index f71bed000..f7347663b 100644 --- a/config/classification_store.yaml +++ b/config/classification_store.yaml @@ -25,6 +25,9 @@ services: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\KeyGroupRelationServiceInterface: class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\KeyGroupRelationService + Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\KeyGroupLayoutServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\KeyGroupLayoutService + Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\SearchHelperServiceInterface: class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\SearchHelperService @@ -57,4 +60,7 @@ services: class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\GroupHydrator Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\KeyGroupRelationHydratorInterface: - class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\KeyGroupRelationHydrator \ No newline at end of file + class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\KeyGroupRelationHydrator + + Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\GroupLayoutHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\GroupLayoutHydrator \ No newline at end of file diff --git a/src/ClassificationStore/Controller/GetLayoutByGroupController.php b/src/ClassificationStore/Controller/GetLayoutByGroupController.php new file mode 100644 index 000000000..c9e0ae2d2 --- /dev/null +++ b/src/ClassificationStore/Controller/GetLayoutByGroupController.php @@ -0,0 +1,105 @@ +value)] + #[Get( + path: self::PREFIX . '/classification-store/layout-by-group/{groupId}', + operationId: 'classification_store_get_layout_by_group', + description: 'classification_store_get_layout_by_group_description', + summary: 'classification_store_get_layout_by_group_summary', + tags: [Tags::ClassificationStore->value] + )] + #[SuccessResponse( + description: 'classification_store_get_layout_by_group_response', + content: new JsonContent(ref: GroupLayout::class, type: 'object') + )] + #[QueryIdParameter( + description: 'object ID', + namePrefix: 'object', + required: false + )] + #[PathIdParameter( + type: 'Group ID', + name: 'groupId', + )] + #[TextFieldParameter( + name: 'fieldName', + description: 'Field Name', + required: true, + example: 'technicalAttributes' + )] + #[DefaultResponses([ + HttpResponseCodes::FORBIDDEN, + HttpResponseCodes::UNAUTHORIZED, + HttpResponseCodes::NOT_FOUND, + ])] + public function getLayoutByGroup( + #[MapQueryString] LayoutParameter $layoutParameter, + int $groupId, + ): JsonResponse { + return $this->jsonResponse( + $this->groupService->getLayoutDefinition($groupId, $layoutParameter) + ); + } +} diff --git a/src/ClassificationStore/Event/GroupLayoutEvent.php b/src/ClassificationStore/Event/GroupLayoutEvent.php new file mode 100644 index 000000000..739d1ce43 --- /dev/null +++ b/src/ClassificationStore/Event/GroupLayoutEvent.php @@ -0,0 +1,42 @@ +groupLayout; + } +} diff --git a/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php b/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php new file mode 100644 index 000000000..575b3cc74 --- /dev/null +++ b/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php @@ -0,0 +1,37 @@ +getId(), + name: $group->getName(), + description: $group->getDescription(), + keys: $keys, + ); + } +} \ No newline at end of file diff --git a/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php b/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php new file mode 100644 index 000000000..dc6ce2a69 --- /dev/null +++ b/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php @@ -0,0 +1,33 @@ + $keys + */ + public function hydrate(array $keys, GroupConfig $group): GroupLayout; +} \ No newline at end of file diff --git a/src/ClassificationStore/MappedParameter/LayoutParameter.php b/src/ClassificationStore/MappedParameter/LayoutParameter.php new file mode 100644 index 000000000..40f950d5c --- /dev/null +++ b/src/ClassificationStore/MappedParameter/LayoutParameter.php @@ -0,0 +1,43 @@ +fieldName; + } + + public function getObjectId(): int + { + return $this->objectId; + } +} diff --git a/src/ClassificationStore/Repository/GroupConfigRepository.php b/src/ClassificationStore/Repository/GroupConfigRepository.php index 997621343..c2b652fa3 100644 --- a/src/ClassificationStore/Repository/GroupConfigRepository.php +++ b/src/ClassificationStore/Repository/GroupConfigRepository.php @@ -17,7 +17,9 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\SearchHelperServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\MappedParameter\CollectionParametersInterface; +use Pimcore\Model\DataObject\Classificationstore\GroupConfig; use Pimcore\Model\DataObject\Classificationstore\GroupConfig\Listing; use function count; @@ -80,6 +82,21 @@ public function getCountByStoreId(int $storeId): int return $listing->count(); } + /** + * {@inheritDoc} + */ + public function getById(int $id): GroupConfig + { + $group = GroupConfig::getById($id); + + if (!$group) { + throw new NotFoundException('group', $id); + } + + return $group; + } + + private function applyGroupIdsFilter(Listing $list, array $groupIds): void { $placeholders = implode(',', array_fill(0, count($groupIds), '?')); diff --git a/src/ClassificationStore/Repository/GroupConfigRepositoryInterface.php b/src/ClassificationStore/Repository/GroupConfigRepositoryInterface.php index ee3f009b2..b106115d1 100644 --- a/src/ClassificationStore/Repository/GroupConfigRepositoryInterface.php +++ b/src/ClassificationStore/Repository/GroupConfigRepositoryInterface.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository; +use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\MappedParameter\CollectionParametersInterface; use Pimcore\Model\DataObject\Classificationstore\GroupConfig; @@ -42,4 +43,9 @@ public function getAllGroupsByStore( ): array; public function getCountByStoreId(int $storeId): int; + + /** + * @throws NotFoundException + */ + public function getById(int $id): GroupConfig; } diff --git a/src/ClassificationStore/Repository/KeyGroupRelationRepository.php b/src/ClassificationStore/Repository/KeyGroupRelationRepository.php index 05fc1330d..9531e265b 100644 --- a/src/ClassificationStore/Repository/KeyGroupRelationRepository.php +++ b/src/ClassificationStore/Repository/KeyGroupRelationRepository.php @@ -75,6 +75,20 @@ public function getCountByStoreId(int $storeId, ?array $groupIds = null): int return $listing->count(); } + /** + * {@inheritdoc} + */ + public function getByGroupId(int $groupId): array + { + $listing = new Listing(); + $listing->setOrder('ASC'); + $listing->setOrderKey('id'); + $listing->setCondition('groupID = ?', [$groupId]); + + return $listing->load(); + } + + private function applySearchTermFilter(Listing $list, string $searchTerm): void { $searchTerms = $this->searchHelperService->getTranslatedSearchFilterTerms($searchTerm); diff --git a/src/ClassificationStore/Repository/KeyGroupRelationRepositoryInterface.php b/src/ClassificationStore/Repository/KeyGroupRelationRepositoryInterface.php index 82aa0fea3..d09e70d4b 100644 --- a/src/ClassificationStore/Repository/KeyGroupRelationRepositoryInterface.php +++ b/src/ClassificationStore/Repository/KeyGroupRelationRepositoryInterface.php @@ -35,4 +35,9 @@ public function getPaginatedKeyGroupRelationByStore( ): array; public function getCountByStoreId(int $storeId, ?array $groupIds = null): int; + + /** + * @return KeyGroupRelation[] + */ + public function getByGroupId(int $groupId): array; } diff --git a/src/ClassificationStore/Schema/GroupLayout.php b/src/ClassificationStore/Schema/GroupLayout.php new file mode 100644 index 000000000..ff0cd2213 --- /dev/null +++ b/src/ClassificationStore/Schema/GroupLayout.php @@ -0,0 +1,75 @@ +id; + } + + public function getName(): string + { + return $this->name; + } + + public function getDescription(): string + { + return $this->description; + } + + /** + * @return KeyLayout[] + */ + public function getKeys(): array + { + return $this->keys; + } +} diff --git a/src/ClassificationStore/Schema/KeyLayout.php b/src/ClassificationStore/Schema/KeyLayout.php new file mode 100644 index 000000000..4ba52ac8c --- /dev/null +++ b/src/ClassificationStore/Schema/KeyLayout.php @@ -0,0 +1,71 @@ +id; + } + + public function getName(): string + { + return $this->name; + } + + public function getDescription(): string + { + return $this->description; + } + + public function getDefinition(): EncryptedField|Data + { + return $this->definition; + } +} diff --git a/src/ClassificationStore/Service/GroupService.php b/src/ClassificationStore/Service/GroupService.php index ec94a0b10..9d2dd58a8 100644 --- a/src/ClassificationStore/Service/GroupService.php +++ b/src/ClassificationStore/Service/GroupService.php @@ -18,12 +18,19 @@ use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\ConcreteObjectResolver; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Event\GroupEvent; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Event\GroupLayoutEvent; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\GroupHydratorInterface; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\GroupLayoutHydratorInterface; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\LayoutParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\ListClassificationStoreParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository\GroupConfigRepositoryInterface; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository\KeyGroupRelationRepositoryInterface; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\KeyLayout; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\Response\Collection; use Pimcore\Model\DataObject\ClassDefinition\Data\Classificationstore; +use Pimcore\Model\DataObject\Classificationstore\KeyGroupRelation; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use function count; @@ -37,6 +44,9 @@ public function __construct( private GroupConfigRepositoryInterface $groupConfigRepository, private EventDispatcherInterface $eventDispatcher, private GroupHydratorInterface $groupHydrator, + private KeyGroupRelationRepositoryInterface $keyGroupRelationRepository, + private KeyGroupLayoutServiceInterface $keyGroupLayoutService, + private GroupLayoutHydratorInterface $groupLayoutHydrator, ) { } @@ -98,4 +108,44 @@ public function getAllowedGroupIds(ListClassificationStoreParameter $parameter): return $fieldDefinition->getAllowedGroupIds(); } + + /** + * {@inheritDoc} + */ + public function getLayoutDefinition(int $groupId, LayoutParameter $layoutParameter): GroupLayout + { + $keys = $this->keyGroupRelationRepository->getByGroupId($groupId); + $object = $this->concreteObjectResolver->getById($layoutParameter->getObjectId()); + + if (!$object) { + throw new NotFoundException('object', $layoutParameter->getObjectId()); + } + + $keyLayouts = []; + foreach ($keys as $key) { + $definition = $this->keyGroupLayoutService->getLayoutDefinition( + $key, + $object, + $layoutParameter->getFieldName() + ); + + $keyLayouts[] = new KeyLayout( + id: $key->getKeyId(), + name: $key->getName(), + description: $key->getDescription(), + definition: $definition, + ); + } + + + $group = $this->groupConfigRepository->getById($groupId); + $groupLayout = $this->groupLayoutHydrator->hydrate($keyLayouts, $group); + + $this->eventDispatcher->dispatch( + new GroupLayoutEvent($groupLayout), + GroupLayoutEvent::EVENT_NAME + ); + + return $groupLayout; + } } diff --git a/src/ClassificationStore/Service/GroupServiceInterface.php b/src/ClassificationStore/Service/GroupServiceInterface.php index e71ade792..16ee2830b 100644 --- a/src/ClassificationStore/Service/GroupServiceInterface.php +++ b/src/ClassificationStore/Service/GroupServiceInterface.php @@ -17,7 +17,9 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service; use Exception; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\LayoutParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\ListClassificationStoreParameter; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\Response\Collection; @@ -39,4 +41,10 @@ public function getGroups(ListClassificationStoreParameter $parameter): Collecti * @throws NotFoundException */ public function getAllowedGroupIds(ListClassificationStoreParameter $parameter): array; + + /** + * @throws Exception + * @throws NotFoundException + */ + public function getLayoutDefinition(int $groupId, LayoutParameter $layoutParameter): GroupLayout; } diff --git a/src/ClassificationStore/Service/KeyGroupLayoutService.php b/src/ClassificationStore/Service/KeyGroupLayoutService.php new file mode 100644 index 000000000..21f53eba0 --- /dev/null +++ b/src/ClassificationStore/Service/KeyGroupLayoutService.php @@ -0,0 +1,73 @@ +getDefinition(), true); + $definition = $this->serviceResolver->getFieldDefinitionFromJson( + $definition, + $keyGroupRelation->getType() + ); + + if (method_exists($definition, '__wakeup')) { + $definition->__wakeup(); + } + + + if ($definition instanceof LayoutDefinitionEnrichmentInterface) { + $context['object'] = $object; + $context['class'] = $object->getClass(); + $context['ownerType'] = 'classificationstore'; + $context['ownerName'] = $fieldName; + $context['keyId'] = $keyGroupRelation->getKeyId(); + $context['groupId'] = $keyGroupRelation->getGroupId(); + $context['keyDefinition'] = $definition; + + + $definition = $definition->enrichLayoutDefinition($object, $context); + } + + + return $definition; + } +} diff --git a/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php b/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php new file mode 100644 index 000000000..5b234e83e --- /dev/null +++ b/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php @@ -0,0 +1,37 @@ +getDefinition(), true); + $definition = \Pimcore\Model\DataObject\Classificationstore\Service::getFieldDefinitionFromJson( + $definition, + $keyGroupRelation->getType() + ); + + if (method_exists($definition, '__wakeup')) { + $definition->__wakeup(); + } + + + if ($definition instanceof LayoutDefinitionEnrichmentInterface) { + $context['object'] = $object; + $context['class'] = $object->getClass(); + $context['ownerType'] = 'classificationstore'; + $context['ownerName'] = $fieldName; + $context['keyId'] = $keyGroupRelation->getKeyId(); + $context['groupId'] = $keyGroupRelation->getGroupId(); + $context['keyDefinition'] = $definition; + + + $definition = $definition->enrichLayoutDefinition($object, $context); + } + + + return $definition; + } } diff --git a/translations/studio_api_docs.en.yaml b/translations/studio_api_docs.en.yaml index 0bf5e9443..00bce6738 100644 --- a/translations/studio_api_docs.en.yaml +++ b/translations/studio_api_docs.en.yaml @@ -897,4 +897,7 @@ classification_store_get_groups_summary: Get all classification store groups for classification_store_get_groups_response: List of classification store groups classification_store_get_key_group_relations_description: Get all classification store key group relations for given fieldName classification_store_get_key_group_relations_summary: Get all classification store key group relations for given fieldName -classification_store_get_key_group_relations_response: List of classification store key group relations \ No newline at end of file +classification_store_get_key_group_relations_response: List of classification store key group relations +classification_store_get_layout_by_group_description: Get Layout definition for given group +classification_store_get_layout_by_group_summary: Get Layout definition for given group +classification_store_get_layout_by_group_response: Layout definition \ No newline at end of file From baab09169f069688ecf539b9d8449bd6c3966245 Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Tue, 8 Apr 2025 15:11:51 +0200 Subject: [PATCH 2/7] Get Layout Definition for Collection ID --- .../GetLayoutByCollectionController.php | 107 ++++++++++++++++++ .../CollectionRelationsRepository.php | 12 ++ ...CollectionRelationsRepositoryInterface.php | 7 ++ .../Schema/CollectionLayout.php | 46 ++++++++ .../Service/CollectionService.php | 21 ++++ .../Service/CollectionServiceInterface.php | 8 ++ translations/studio_api_docs.en.yaml | 5 +- 7 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 src/ClassificationStore/Controller/GetLayoutByCollectionController.php create mode 100644 src/ClassificationStore/Schema/CollectionLayout.php diff --git a/src/ClassificationStore/Controller/GetLayoutByCollectionController.php b/src/ClassificationStore/Controller/GetLayoutByCollectionController.php new file mode 100644 index 000000000..24716d279 --- /dev/null +++ b/src/ClassificationStore/Controller/GetLayoutByCollectionController.php @@ -0,0 +1,107 @@ +value)] + #[Get( + path: self::PREFIX . '/classification-store/layout-by-collection/{collectionId}', + operationId: 'classification_store_get_layout_by_collection', + description: 'classification_store_get_layout_by_collection_description', + summary: 'classification_store_get_layout_by_collection_summary', + tags: [Tags::ClassificationStore->value] + )] + #[SuccessResponse( + description: 'classification_store_get_layout_by_collection_response', + content: new JsonContent(ref: CollectionLayout::class, type: 'object') + )] + #[QueryIdParameter( + description: 'object ID', + namePrefix: 'object', + required: false + )] + #[PathIdParameter( + type: 'Collection ID', + name: 'collectionId', + )] + #[TextFieldParameter( + name: 'fieldName', + description: 'Field Name', + required: true, + example: 'technicalAttributes' + )] + #[DefaultResponses([ + HttpResponseCodes::FORBIDDEN, + HttpResponseCodes::UNAUTHORIZED, + HttpResponseCodes::NOT_FOUND, + ])] + public function getLayoutByCollection( + #[MapQueryString] LayoutParameter $layoutParameter, + int $collectionId, + ): JsonResponse { + return $this->jsonResponse( + $this->collectionService->getLayoutDefinition($collectionId, $layoutParameter) + ); + } +} diff --git a/src/ClassificationStore/Repository/CollectionRelationsRepository.php b/src/ClassificationStore/Repository/CollectionRelationsRepository.php index 25a0046f1..72e575e7c 100644 --- a/src/ClassificationStore/Repository/CollectionRelationsRepository.php +++ b/src/ClassificationStore/Repository/CollectionRelationsRepository.php @@ -20,6 +20,7 @@ use Doctrine\DBAL\Exception; use Pimcore\Bundle\StaticResolverBundle\Db\DbResolverInterface; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\DatabaseException; +use Pimcore\Model\DataObject\Classificationstore\CollectionGroupRelation; /** * @internal @@ -58,4 +59,15 @@ public function getCollectionIdsWith(array $groupIds): array throw new DatabaseException($e->getMessage()); } } + + /** + * {@inheritDoc} + */ + public function getFromCollection(int $collectionId): array + { + $listing = new CollectionGroupRelation\Listing(); + $listing->setCondition('colId = ?', $collectionId); + + return $listing->load(); + } } diff --git a/src/ClassificationStore/Repository/CollectionRelationsRepositoryInterface.php b/src/ClassificationStore/Repository/CollectionRelationsRepositoryInterface.php index 4c6bc3e6c..832df02e5 100644 --- a/src/ClassificationStore/Repository/CollectionRelationsRepositoryInterface.php +++ b/src/ClassificationStore/Repository/CollectionRelationsRepositoryInterface.php @@ -17,6 +17,7 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\DatabaseException; +use Pimcore\Model\DataObject\Classificationstore\CollectionGroupRelation; /** * @internal @@ -31,4 +32,10 @@ interface CollectionRelationsRepositoryInterface * @throws DatabaseException */ public function getCollectionIdsWith(array $groupIds): array; + + /** + * @return array + * + */ + public function getFromCollection(int $collectionId): array; } diff --git a/src/ClassificationStore/Schema/CollectionLayout.php b/src/ClassificationStore/Schema/CollectionLayout.php new file mode 100644 index 000000000..da3f9d72a --- /dev/null +++ b/src/ClassificationStore/Schema/CollectionLayout.php @@ -0,0 +1,46 @@ +groups; + } +} diff --git a/src/ClassificationStore/Service/CollectionService.php b/src/ClassificationStore/Service/CollectionService.php index 2741a925e..4c4214fa1 100644 --- a/src/ClassificationStore/Service/CollectionService.php +++ b/src/ClassificationStore/Service/CollectionService.php @@ -17,11 +17,14 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service; use Exception; +use phpDocumentor\Reflection\FqsenResolver; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Event\CollectionEvent; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\CollectionHydratorInterface; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\LayoutParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\ListClassificationStoreParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository\CollectionConfigRepositoryInterface; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Repository\CollectionRelationsRepositoryInterface; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\CollectionLayout; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\DatabaseException; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\Response\Collection; @@ -78,6 +81,24 @@ public function getCollections(ListClassificationStoreParameter $parameter): Col ); } + /** + * {@inheritDoc} + */ + public function getLayoutDefinition(int $collectionId, LayoutParameter $layoutParameter): CollectionLayout + { + $groups = $this->collectionRelationsRepository->getFromCollection($collectionId); + + $layouts = []; + foreach ($groups as $group) { + $layouts[] = $this->groupService->getLayoutDefinition($group->getGroupId(), $layoutParameter); + } + + return new CollectionLayout( + groups: $layouts + ); + } + + /** * @return array * diff --git a/src/ClassificationStore/Service/CollectionServiceInterface.php b/src/ClassificationStore/Service/CollectionServiceInterface.php index d1aca9278..18b70c71d 100644 --- a/src/ClassificationStore/Service/CollectionServiceInterface.php +++ b/src/ClassificationStore/Service/CollectionServiceInterface.php @@ -17,7 +17,9 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service; use Exception; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\LayoutParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\ListClassificationStoreParameter; +use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\CollectionLayout; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\Response\Collection; @@ -31,4 +33,10 @@ interface CollectionServiceInterface * @throws NotFoundException */ public function getCollections(ListClassificationStoreParameter $parameter): Collection; + + /** + * @throws Exception + * @throws NotFoundException + */ + public function getLayoutDefinition(int $collectionId, LayoutParameter $layoutParameter): CollectionLayout; } diff --git a/translations/studio_api_docs.en.yaml b/translations/studio_api_docs.en.yaml index 00bce6738..983f76ea5 100644 --- a/translations/studio_api_docs.en.yaml +++ b/translations/studio_api_docs.en.yaml @@ -900,4 +900,7 @@ classification_store_get_key_group_relations_summary: Get all classification sto classification_store_get_key_group_relations_response: List of classification store key group relations classification_store_get_layout_by_group_description: Get Layout definition for given group classification_store_get_layout_by_group_summary: Get Layout definition for given group -classification_store_get_layout_by_group_response: Layout definition \ No newline at end of file +classification_store_get_layout_by_group_response: Layout definition +classification_store_get_layout_by_collection_description: Get Layout definition for given collection +classification_store_get_layout_by_collection_summary: Get Layout definition for given collection +classification_store_get_layout_by_collection_response: Layout definition \ No newline at end of file From a2e20774d9dfd99bf4da08a358fbc0351f0495fa Mon Sep 17 00:00:00 2001 From: martineiber <11687066+martineiber@users.noreply.github.com> Date: Tue, 8 Apr 2025 13:13:39 +0000 Subject: [PATCH 3/7] Apply php-cs-fixer changes --- .../Controller/GetLayoutByCollectionController.php | 4 +--- .../Controller/GetLayoutByGroupController.php | 2 +- .../Hydrator/GroupLayoutHydrator.php | 3 +-- .../Hydrator/GroupLayoutHydratorInterface.php | 3 +-- .../Repository/GroupConfigRepository.php | 1 - .../Repository/KeyGroupRelationRepository.php | 1 - src/ClassificationStore/Schema/KeyLayout.php | 1 - src/ClassificationStore/Service/CollectionService.php | 2 -- src/ClassificationStore/Service/GroupService.php | 2 -- .../Service/KeyGroupLayoutService.php | 10 ++-------- .../Service/KeyGroupRelationService.php | 7 +------ 11 files changed, 7 insertions(+), 29 deletions(-) diff --git a/src/ClassificationStore/Controller/GetLayoutByCollectionController.php b/src/ClassificationStore/Controller/GetLayoutByCollectionController.php index 24716d279..f2f48254b 100644 --- a/src/ClassificationStore/Controller/GetLayoutByCollectionController.php +++ b/src/ClassificationStore/Controller/GetLayoutByCollectionController.php @@ -21,13 +21,11 @@ use OpenApi\Attributes\JsonContent; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\LayoutParameter; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\CollectionLayout; -use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\CollectionServiceInterface; -use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\GroupServiceInterface; use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; -use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\IdParameter as QueryIdParameter; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Path\IdParameter as PathIdParameter; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\IdParameter as QueryIdParameter; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\TextFieldParameter; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\DefaultResponses; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\SuccessResponse; diff --git a/src/ClassificationStore/Controller/GetLayoutByGroupController.php b/src/ClassificationStore/Controller/GetLayoutByGroupController.php index c9e0ae2d2..c9cbf94e3 100644 --- a/src/ClassificationStore/Controller/GetLayoutByGroupController.php +++ b/src/ClassificationStore/Controller/GetLayoutByGroupController.php @@ -24,8 +24,8 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service\GroupServiceInterface; use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController; use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; -use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\IdParameter as QueryIdParameter; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Path\IdParameter as PathIdParameter; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\IdParameter as QueryIdParameter; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\TextFieldParameter; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\DefaultResponses; use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\SuccessResponse; diff --git a/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php b/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php index 575b3cc74..e749ea739 100644 --- a/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php +++ b/src/ClassificationStore/Hydrator/GroupLayoutHydrator.php @@ -14,7 +14,6 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ - namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; @@ -34,4 +33,4 @@ public function hydrate(array $keys, GroupConfig $group): GroupLayout keys: $keys, ); } -} \ No newline at end of file +} diff --git a/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php b/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php index dc6ce2a69..af22c3817 100644 --- a/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php +++ b/src/ClassificationStore/Hydrator/GroupLayoutHydratorInterface.php @@ -14,7 +14,6 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ - namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; @@ -30,4 +29,4 @@ interface GroupLayoutHydratorInterface * @param array $keys */ public function hydrate(array $keys, GroupConfig $group): GroupLayout; -} \ No newline at end of file +} diff --git a/src/ClassificationStore/Repository/GroupConfigRepository.php b/src/ClassificationStore/Repository/GroupConfigRepository.php index c2b652fa3..987b9c18a 100644 --- a/src/ClassificationStore/Repository/GroupConfigRepository.php +++ b/src/ClassificationStore/Repository/GroupConfigRepository.php @@ -96,7 +96,6 @@ public function getById(int $id): GroupConfig return $group; } - private function applyGroupIdsFilter(Listing $list, array $groupIds): void { $placeholders = implode(',', array_fill(0, count($groupIds), '?')); diff --git a/src/ClassificationStore/Repository/KeyGroupRelationRepository.php b/src/ClassificationStore/Repository/KeyGroupRelationRepository.php index 9531e265b..6c6083328 100644 --- a/src/ClassificationStore/Repository/KeyGroupRelationRepository.php +++ b/src/ClassificationStore/Repository/KeyGroupRelationRepository.php @@ -88,7 +88,6 @@ public function getByGroupId(int $groupId): array return $listing->load(); } - private function applySearchTermFilter(Listing $list, string $searchTerm): void { $searchTerms = $this->searchHelperService->getTranslatedSearchFilterTerms($searchTerm); diff --git a/src/ClassificationStore/Schema/KeyLayout.php b/src/ClassificationStore/Schema/KeyLayout.php index 4ba52ac8c..a5a85afe8 100644 --- a/src/ClassificationStore/Schema/KeyLayout.php +++ b/src/ClassificationStore/Schema/KeyLayout.php @@ -36,7 +36,6 @@ )] final readonly class KeyLayout { - public function __construct( #[Property(description: 'ID', type: 'integer', example: 42)] private int $id, diff --git a/src/ClassificationStore/Service/CollectionService.php b/src/ClassificationStore/Service/CollectionService.php index 4c4214fa1..8301205df 100644 --- a/src/ClassificationStore/Service/CollectionService.php +++ b/src/ClassificationStore/Service/CollectionService.php @@ -17,7 +17,6 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service; use Exception; -use phpDocumentor\Reflection\FqsenResolver; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Event\CollectionEvent; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\CollectionHydratorInterface; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\MappedParameter\LayoutParameter; @@ -98,7 +97,6 @@ public function getLayoutDefinition(int $collectionId, LayoutParameter $layoutPa ); } - /** * @return array * diff --git a/src/ClassificationStore/Service/GroupService.php b/src/ClassificationStore/Service/GroupService.php index 9d2dd58a8..bfc7ad4d2 100644 --- a/src/ClassificationStore/Service/GroupService.php +++ b/src/ClassificationStore/Service/GroupService.php @@ -30,7 +30,6 @@ use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException; use Pimcore\Bundle\StudioBackendBundle\Response\Collection; use Pimcore\Model\DataObject\ClassDefinition\Data\Classificationstore; -use Pimcore\Model\DataObject\Classificationstore\KeyGroupRelation; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use function count; @@ -137,7 +136,6 @@ public function getLayoutDefinition(int $groupId, LayoutParameter $layoutParamet ); } - $group = $this->groupConfigRepository->getById($groupId); $groupLayout = $this->groupLayoutHydrator->hydrate($keyLayouts, $group); diff --git a/src/ClassificationStore/Service/KeyGroupLayoutService.php b/src/ClassificationStore/Service/KeyGroupLayoutService.php index 21f53eba0..72f463cab 100644 --- a/src/ClassificationStore/Service/KeyGroupLayoutService.php +++ b/src/ClassificationStore/Service/KeyGroupLayoutService.php @@ -16,7 +16,6 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service; - use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\ClassificationStore\ServiceResolverInterface; use Pimcore\Model\DataObject\ClassDefinition\Data; use Pimcore\Model\DataObject\ClassDefinition\Data\EncryptedField; @@ -31,8 +30,7 @@ { public function __construct( private ServiceResolverInterface $serviceResolver - ) - { + ) { } /** @@ -41,8 +39,7 @@ public function __construct( public function getLayoutDefinition( KeyGroupRelation $keyGroupRelation, Concrete $object, string $fieldName - ): EncryptedField|Data - { + ): EncryptedField|Data { $definition = json_decode($keyGroupRelation->getDefinition(), true); $definition = $this->serviceResolver->getFieldDefinitionFromJson( $definition, @@ -53,7 +50,6 @@ public function getLayoutDefinition( $definition->__wakeup(); } - if ($definition instanceof LayoutDefinitionEnrichmentInterface) { $context['object'] = $object; $context['class'] = $object->getClass(); @@ -63,11 +59,9 @@ public function getLayoutDefinition( $context['groupId'] = $keyGroupRelation->getGroupId(); $context['keyDefinition'] = $definition; - $definition = $definition->enrichLayoutDefinition($object, $context); } - return $definition; } } diff --git a/src/ClassificationStore/Service/KeyGroupRelationService.php b/src/ClassificationStore/Service/KeyGroupRelationService.php index dbc070ceb..47284ffbf 100644 --- a/src/ClassificationStore/Service/KeyGroupRelationService.php +++ b/src/ClassificationStore/Service/KeyGroupRelationService.php @@ -16,7 +16,6 @@ namespace Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Service; -use Exception; use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\ClassificationStore\GroupConfigResolverInterface; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Event\KeyGroupRelationEvent; use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Hydrator\KeyGroupRelationHydratorInterface; @@ -89,8 +88,7 @@ public function getKeyGroupRelations(ListClassificationStoreParameter $parameter public function getLayoutDefinition( KeyGroupRelation $keyGroupRelation, Concrete $object, string $fieldName - ): EncryptedField|Data - { + ): EncryptedField|Data { $definition = json_decode($keyGroupRelation->getDefinition(), true); $definition = \Pimcore\Model\DataObject\Classificationstore\Service::getFieldDefinitionFromJson( $definition, @@ -101,7 +99,6 @@ public function getLayoutDefinition( $definition->__wakeup(); } - if ($definition instanceof LayoutDefinitionEnrichmentInterface) { $context['object'] = $object; $context['class'] = $object->getClass(); @@ -111,11 +108,9 @@ public function getLayoutDefinition( $context['groupId'] = $keyGroupRelation->getGroupId(); $context['keyDefinition'] = $definition; - $definition = $definition->enrichLayoutDefinition($object, $context); } - return $definition; } } From b62952fe2bf345595bf66487534189b7cc0bdefb Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Tue, 8 Apr 2025 15:28:04 +0200 Subject: [PATCH 4/7] Fix Style. --- src/ClassificationStore/Service/KeyGroupLayoutService.php | 3 ++- .../Service/KeyGroupLayoutServiceInterface.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ClassificationStore/Service/KeyGroupLayoutService.php b/src/ClassificationStore/Service/KeyGroupLayoutService.php index 72f463cab..3c16fb1d1 100644 --- a/src/ClassificationStore/Service/KeyGroupLayoutService.php +++ b/src/ClassificationStore/Service/KeyGroupLayoutService.php @@ -38,7 +38,8 @@ public function __construct( */ public function getLayoutDefinition( KeyGroupRelation $keyGroupRelation, - Concrete $object, string $fieldName + Concrete $object, + string $fieldName ): EncryptedField|Data { $definition = json_decode($keyGroupRelation->getDefinition(), true); $definition = $this->serviceResolver->getFieldDefinitionFromJson( diff --git a/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php b/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php index 5b234e83e..6a539c70a 100644 --- a/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php +++ b/src/ClassificationStore/Service/KeyGroupLayoutServiceInterface.php @@ -32,6 +32,7 @@ interface KeyGroupLayoutServiceInterface */ public function getLayoutDefinition( KeyGroupRelation $keyGroupRelation, - Concrete $object, string $fieldName + Concrete $object, + string $fieldName ): EncryptedField|Data; } From cf2d31d19956e48cf3a51929b0bcf64671998422 Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Tue, 8 Apr 2025 15:30:55 +0200 Subject: [PATCH 5/7] Fix Style. --- src/ClassificationStore/Service/KeyGroupRelationService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ClassificationStore/Service/KeyGroupRelationService.php b/src/ClassificationStore/Service/KeyGroupRelationService.php index 47284ffbf..db0a90cdb 100644 --- a/src/ClassificationStore/Service/KeyGroupRelationService.php +++ b/src/ClassificationStore/Service/KeyGroupRelationService.php @@ -87,7 +87,8 @@ public function getKeyGroupRelations(ListClassificationStoreParameter $parameter */ public function getLayoutDefinition( KeyGroupRelation $keyGroupRelation, - Concrete $object, string $fieldName + Concrete $object, + string $fieldName ): EncryptedField|Data { $definition = json_decode($keyGroupRelation->getDefinition(), true); $definition = \Pimcore\Model\DataObject\Classificationstore\Service::getFieldDefinitionFromJson( From ebaf9f35576b437c21df9c23315235eaa006b331 Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Tue, 8 Apr 2025 16:32:36 +0200 Subject: [PATCH 6/7] Remove internal form Event and the according Schema. --- src/ClassificationStore/Event/CollectionEvent.php | 4 +--- src/ClassificationStore/Event/GroupEvent.php | 4 +--- src/ClassificationStore/Event/GroupLayoutEvent.php | 4 +--- src/ClassificationStore/Event/KeyGroupRelationEvent.php | 4 +--- src/ClassificationStore/Schema/Collection.php | 4 +--- src/ClassificationStore/Schema/Group.php | 4 +--- src/ClassificationStore/Schema/GroupLayout.php | 4 +--- src/ClassificationStore/Schema/KeyGroupRelation.php | 4 +--- 8 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/ClassificationStore/Event/CollectionEvent.php b/src/ClassificationStore/Event/CollectionEvent.php index dbc038ae5..e3347895b 100644 --- a/src/ClassificationStore/Event/CollectionEvent.php +++ b/src/ClassificationStore/Event/CollectionEvent.php @@ -19,9 +19,7 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\Collection; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; -/** - * @internal - */ + final class CollectionEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.collection'; diff --git a/src/ClassificationStore/Event/GroupEvent.php b/src/ClassificationStore/Event/GroupEvent.php index 885862095..c3c3f1d84 100644 --- a/src/ClassificationStore/Event/GroupEvent.php +++ b/src/ClassificationStore/Event/GroupEvent.php @@ -19,9 +19,7 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\Group; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; -/** - * @internal - */ + final class GroupEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.group'; diff --git a/src/ClassificationStore/Event/GroupLayoutEvent.php b/src/ClassificationStore/Event/GroupLayoutEvent.php index 739d1ce43..333258557 100644 --- a/src/ClassificationStore/Event/GroupLayoutEvent.php +++ b/src/ClassificationStore/Event/GroupLayoutEvent.php @@ -19,9 +19,7 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; -/** - * @internal - */ + final class GroupLayoutEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.group_layout'; diff --git a/src/ClassificationStore/Event/KeyGroupRelationEvent.php b/src/ClassificationStore/Event/KeyGroupRelationEvent.php index 20157c433..336a78e31 100644 --- a/src/ClassificationStore/Event/KeyGroupRelationEvent.php +++ b/src/ClassificationStore/Event/KeyGroupRelationEvent.php @@ -19,9 +19,7 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\KeyGroupRelation; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; -/** - * @internal - */ + final class KeyGroupRelationEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.key_group_relation'; diff --git a/src/ClassificationStore/Schema/Collection.php b/src/ClassificationStore/Schema/Collection.php index 85efe4561..25543ce78 100644 --- a/src/ClassificationStore/Schema/Collection.php +++ b/src/ClassificationStore/Schema/Collection.php @@ -21,9 +21,7 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; -/** - * @internal - */ + #[Schema( title: 'Classification Store Collection', required: [ diff --git a/src/ClassificationStore/Schema/Group.php b/src/ClassificationStore/Schema/Group.php index c7a61bbf7..dedecb042 100644 --- a/src/ClassificationStore/Schema/Group.php +++ b/src/ClassificationStore/Schema/Group.php @@ -21,9 +21,7 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; -/** - * @internal - */ + #[Schema( title: 'Classification Store Group', required: [ diff --git a/src/ClassificationStore/Schema/GroupLayout.php b/src/ClassificationStore/Schema/GroupLayout.php index ff0cd2213..563aad310 100644 --- a/src/ClassificationStore/Schema/GroupLayout.php +++ b/src/ClassificationStore/Schema/GroupLayout.php @@ -22,9 +22,7 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; -/** - * @internal - */ + #[Schema( title: 'Classification Store Group Layout', required: [ diff --git a/src/ClassificationStore/Schema/KeyGroupRelation.php b/src/ClassificationStore/Schema/KeyGroupRelation.php index a1ecefbd1..cb354d9b7 100644 --- a/src/ClassificationStore/Schema/KeyGroupRelation.php +++ b/src/ClassificationStore/Schema/KeyGroupRelation.php @@ -21,9 +21,7 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; -/** - * @internal - */ + #[Schema( title: 'Classification Store KeyGroupRelation', required: [ From 7b693b7d0194835160ee42cc7cb43a4fa508bbf7 Mon Sep 17 00:00:00 2001 From: martineiber <11687066+martineiber@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:33:52 +0000 Subject: [PATCH 7/7] Apply php-cs-fixer changes --- src/ClassificationStore/Event/CollectionEvent.php | 1 - src/ClassificationStore/Event/GroupEvent.php | 1 - src/ClassificationStore/Event/GroupLayoutEvent.php | 1 - src/ClassificationStore/Event/KeyGroupRelationEvent.php | 1 - src/ClassificationStore/Schema/Collection.php | 1 - src/ClassificationStore/Schema/Group.php | 1 - src/ClassificationStore/Schema/GroupLayout.php | 1 - src/ClassificationStore/Schema/KeyGroupRelation.php | 1 - 8 files changed, 8 deletions(-) diff --git a/src/ClassificationStore/Event/CollectionEvent.php b/src/ClassificationStore/Event/CollectionEvent.php index e3347895b..cbaf091d1 100644 --- a/src/ClassificationStore/Event/CollectionEvent.php +++ b/src/ClassificationStore/Event/CollectionEvent.php @@ -19,7 +19,6 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\Collection; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; - final class CollectionEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.collection'; diff --git a/src/ClassificationStore/Event/GroupEvent.php b/src/ClassificationStore/Event/GroupEvent.php index c3c3f1d84..095647582 100644 --- a/src/ClassificationStore/Event/GroupEvent.php +++ b/src/ClassificationStore/Event/GroupEvent.php @@ -19,7 +19,6 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\Group; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; - final class GroupEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.group'; diff --git a/src/ClassificationStore/Event/GroupLayoutEvent.php b/src/ClassificationStore/Event/GroupLayoutEvent.php index 333258557..dd057bded 100644 --- a/src/ClassificationStore/Event/GroupLayoutEvent.php +++ b/src/ClassificationStore/Event/GroupLayoutEvent.php @@ -19,7 +19,6 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\GroupLayout; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; - final class GroupLayoutEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.group_layout'; diff --git a/src/ClassificationStore/Event/KeyGroupRelationEvent.php b/src/ClassificationStore/Event/KeyGroupRelationEvent.php index 336a78e31..4d59a0c11 100644 --- a/src/ClassificationStore/Event/KeyGroupRelationEvent.php +++ b/src/ClassificationStore/Event/KeyGroupRelationEvent.php @@ -19,7 +19,6 @@ use Pimcore\Bundle\StudioBackendBundle\ClassificationStore\Schema\KeyGroupRelation; use Pimcore\Bundle\StudioBackendBundle\Event\AbstractPreResponseEvent; - final class KeyGroupRelationEvent extends AbstractPreResponseEvent { public const EVENT_NAME = 'pre_response.classification_store.key_group_relation'; diff --git a/src/ClassificationStore/Schema/Collection.php b/src/ClassificationStore/Schema/Collection.php index 25543ce78..44fe5c88a 100644 --- a/src/ClassificationStore/Schema/Collection.php +++ b/src/ClassificationStore/Schema/Collection.php @@ -21,7 +21,6 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; - #[Schema( title: 'Classification Store Collection', required: [ diff --git a/src/ClassificationStore/Schema/Group.php b/src/ClassificationStore/Schema/Group.php index dedecb042..0d4590ae0 100644 --- a/src/ClassificationStore/Schema/Group.php +++ b/src/ClassificationStore/Schema/Group.php @@ -21,7 +21,6 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; - #[Schema( title: 'Classification Store Group', required: [ diff --git a/src/ClassificationStore/Schema/GroupLayout.php b/src/ClassificationStore/Schema/GroupLayout.php index 563aad310..cffbda298 100644 --- a/src/ClassificationStore/Schema/GroupLayout.php +++ b/src/ClassificationStore/Schema/GroupLayout.php @@ -22,7 +22,6 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; - #[Schema( title: 'Classification Store Group Layout', required: [ diff --git a/src/ClassificationStore/Schema/KeyGroupRelation.php b/src/ClassificationStore/Schema/KeyGroupRelation.php index cb354d9b7..8f55220a8 100644 --- a/src/ClassificationStore/Schema/KeyGroupRelation.php +++ b/src/ClassificationStore/Schema/KeyGroupRelation.php @@ -21,7 +21,6 @@ use Pimcore\Bundle\StudioBackendBundle\Util\Schema\AdditionalAttributesInterface; use Pimcore\Bundle\StudioBackendBundle\Util\Trait\AdditionalAttributesTrait; - #[Schema( title: 'Classification Store KeyGroupRelation', required: [