Skip to content

Commit 846cb26

Browse files
authored
grid config listing fixes (#1711)
1 parent 15a7d47 commit 846cb26

21 files changed

Lines changed: 291 additions & 40 deletions

src/Asset/Controller/Grid/Configuration/DeleteConfigurationController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
*/
3838
final class DeleteConfigurationController extends AbstractApiController
3939
{
40+
private const string ROUTE = '/assets/grid/configuration/{configurationId}/delete';
41+
4042
public function __construct(
4143
SerializerInterface $serializer,
4244
private readonly ConfigurationServiceInterface $gridConfigurationService,
@@ -48,13 +50,13 @@ public function __construct(
4850
* @throws ForbiddenException|InvalidArgumentException|NotFoundException
4951
*/
5052
#[Route(
51-
'/assets/grid/configuration/{configurationId}/delete',
53+
self::ROUTE,
5254
name: 'pimcore_studio_api_delete_asset_grid_configuration',
5355
methods: ['DELETE'],
5456
)]
5557
#[IsGranted(UserPermissions::ASSETS->value)]
5658
#[Delete(
57-
path: self::PREFIX . '/assets/grid/configuration/{configurationId}/delete',
59+
path: self::PREFIX . self::ROUTE,
5860
operationId: 'asset_delete_grid_configuration_by_configurationId',
5961
description: 'asset_delete_grid_configuration_by_configurationId_description',
6062
summary: 'asset_delete_grid_configuration_by_configurationId_summary',

src/Asset/Controller/Grid/Configuration/GetAvailableColumnsController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
*/
3838
final class GetAvailableColumnsController extends AbstractApiController
3939
{
40+
private const string ROUTE = '/assets/grid/available-columns';
41+
4042
public function __construct(
4143
SerializerInterface $serializer,
4244
private readonly ColumnConfigurationServiceInterface $columnConfigurationService,
@@ -48,13 +50,13 @@ public function __construct(
4850
* @throws NotFoundException|SearchException
4951
*/
5052
#[Route(
51-
'/assets/grid/available-columns',
53+
self::ROUTE,
5254
name: 'pimcore_studio_api_get_asset_grid_available_configuration',
5355
methods: ['GET']
5456
)]
5557
#[IsGranted(UserPermissions::ASSETS->value)]
5658
#[Get(
57-
path: self::PREFIX . '/assets/grid/available-columns',
59+
path: self::PREFIX . self::ROUTE,
5860
operationId: 'asset_get_available_grid_columns',
5961
description: 'asset_get_available_grid_columns_description',
6062
summary: 'asset_get_available_grid_columns_summary',

src/Asset/Controller/Grid/Configuration/GetConfigurationController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
*/
3939
final class GetConfigurationController extends AbstractApiController
4040
{
41+
private const string ROUTE = '/assets/grid/configuration/{folderId}';
42+
4143
public function __construct(
4244
SerializerInterface $serializer,
4345
private readonly ConfigurationServiceInterface $gridConfigurationService,
@@ -49,13 +51,13 @@ public function __construct(
4951
* @throws NotFoundException
5052
*/
5153
#[Route(
52-
'/assets/grid/configuration/{folderId}',
54+
self::ROUTE,
5355
name: 'pimcore_studio_api_get_asset_grid_configuration',
5456
methods: ['GET'],
5557
)]
5658
#[IsGranted(UserPermissions::ASSETS->value)]
5759
#[Get(
58-
path: self::PREFIX . '/assets/grid/configuration/{folderId}',
60+
path: self::PREFIX . self::ROUTE,
5961
operationId: 'asset_get_grid_configuration_by_folderId',
6062
description: 'asset_get_grid_configuration_by_folderId_description',
6163
summary: 'asset_get_grid_configuration_by_folderId_summary',

src/Asset/Controller/Grid/Configuration/ListSavedConfigurationsController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*/
3737
final class ListSavedConfigurationsController extends AbstractApiController
3838
{
39+
private const string ROUTE = '/assets/grid/configurations';
40+
3941
public function __construct(
4042
SerializerInterface $serializer,
4143
private readonly ConfigurationServiceInterface $configurationService,
@@ -47,13 +49,13 @@ public function __construct(
4749
* @throws NotFoundException|SearchException
4850
*/
4951
#[Route(
50-
'/assets/grid/configurations',
52+
self::ROUTE,
5153
name: 'pimcore_studio_api_get_asset_saved_grid_configurations',
5254
methods: ['GET']
5355
)]
5456
#[IsGranted(UserPermissions::ASSETS->value)]
5557
#[Get(
56-
path: self::PREFIX . '/assets/grid/configurations',
58+
path: self::PREFIX . self::ROUTE,
5759
operationId: 'asset_get_saved_grid_configurations',
5860
description: 'asset_get_saved_grid_configurations_description',
5961
summary: 'asset_get_saved_grid_configurations_summary',
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
/**
5+
* This source file is available under the terms of the
6+
* Pimcore Open Core License (POCL)
7+
* Full copyright and license information is available in
8+
* LICENSE.md which is distributed with this source code.
9+
*
10+
* @copyright Copyright (c) Pimcore GmbH (https://www.pimcore.com)
11+
* @license Pimcore Open Core License (POCL)
12+
*/
13+
14+
namespace Pimcore\Bundle\StudioBackendBundle\Asset\Controller\Grid\Configuration;
15+
16+
use OpenApi\Attributes\Delete;
17+
use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController;
18+
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\ForbiddenException;
19+
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\InvalidArgumentException;
20+
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException;
21+
use Pimcore\Bundle\StudioBackendBundle\Grid\Service\UpdateConfigurationServiceInterface;
22+
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Path\IdParameter;
23+
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\DefaultResponses;
24+
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\SuccessResponse;
25+
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Config\Tags;
26+
use Pimcore\Bundle\StudioBackendBundle\Util\Constant\HttpResponseCodes;
27+
use Pimcore\Bundle\StudioBackendBundle\Util\Constant\UserPermissions;
28+
use Symfony\Component\HttpFoundation\Response;
29+
use Symfony\Component\Routing\Attribute\Route;
30+
use Symfony\Component\Security\Http\Attribute\IsGranted;
31+
use Symfony\Component\Serializer\SerializerInterface;
32+
33+
/**
34+
* @internal
35+
*/
36+
final class RemoveFavoriteController extends AbstractApiController
37+
{
38+
private const string ROUTE = '/assets/grid/configuration/remove-favorite/{configurationId}/{folderId}';
39+
40+
public function __construct(
41+
SerializerInterface $serializer,
42+
private readonly UpdateConfigurationServiceInterface $updateConfigurationService
43+
) {
44+
parent::__construct($serializer);
45+
}
46+
47+
/**
48+
* @throws NotFoundException|ForbiddenException|InvalidArgumentException
49+
*/
50+
#[Route(
51+
self::ROUTE,
52+
name: 'pimcore_studio_api_asset_remove_grid_configuration_as_favorite',
53+
methods: ['DELETE'],
54+
)]
55+
#[IsGranted(UserPermissions::ASSETS->value)]
56+
#[Delete(
57+
path: self::PREFIX . self::ROUTE,
58+
operationId: 'asset_remove_grid_configuration_as_favorite',
59+
description: 'asset_remove_grid_configuration_as_favorite_description',
60+
summary: 'asset_remove_grid_configuration_as_favorite_summary',
61+
tags: [Tags::AssetGrid->value]
62+
)]
63+
#[IdParameter(
64+
type: 'configurationId',
65+
name: 'configurationId'
66+
)]
67+
#[IdParameter(
68+
type: 'folderId',
69+
name: 'folderId'
70+
)]
71+
#[SuccessResponse(
72+
description: 'asset_remove_grid_configuration_as_favorite_success_response'
73+
)]
74+
#[DefaultResponses([
75+
HttpResponseCodes::UNAUTHORIZED,
76+
HttpResponseCodes::FORBIDDEN,
77+
HttpResponseCodes::NOT_FOUND,
78+
])]
79+
public function removeAssetGridConfigurationAsFavorite(
80+
int $configurationId,
81+
int $folderId
82+
): Response {
83+
$this->updateConfigurationService->removeAssetGridConfigurationAsFavorite($configurationId, $folderId);
84+
85+
return new Response();
86+
}
87+
}

src/Asset/Controller/Grid/Configuration/SaveConfigurationController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
*/
3838
final class SaveConfigurationController extends AbstractApiController
3939
{
40+
private const string ROUTE = '/assets/grid/configuration/save';
41+
4042
public function __construct(
4143
SerializerInterface $serializer,
4244
private readonly SaveConfigurationServiceInterface $gridSaveConfigurationService
@@ -48,13 +50,13 @@ public function __construct(
4850
* @throws NotFoundException
4951
*/
5052
#[Route(
51-
'/assets/grid/configuration/save',
53+
self::ROUTE,
5254
name: 'pimcore_studio_api_save_asset_grid_configuration',
5355
methods: ['POST'],
5456
)]
5557
#[IsGranted(UserPermissions::ASSETS->value)]
5658
#[Post(
57-
path: self::PREFIX . '/assets/grid/configuration/save',
59+
path: self::PREFIX . self::ROUTE,
5860
operationId: 'asset_save_grid_configuration',
5961
description: 'asset_save_grid_configuration_description',
6062
summary: 'asset_save_grid_configuration_description',

src/Asset/Controller/Grid/Configuration/SetAsFavoriteController.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@
3535
*/
3636
final class SetAsFavoriteController extends AbstractApiController
3737
{
38+
private const string ROUTE = '/assets/grid/configuration/set-as-favorite/{configurationId}/{folderId}';
39+
3840
public function __construct(
3941
SerializerInterface $serializer,
40-
private UpdateConfigurationServiceInterface $updateConfigurationService
42+
private readonly UpdateConfigurationServiceInterface $updateConfigurationService
4143
) {
4244
parent::__construct($serializer);
4345
}
@@ -46,13 +48,13 @@ public function __construct(
4648
* @throws NotFoundException|ForbiddenException|InvalidArgumentException
4749
*/
4850
#[Route(
49-
'/assets/grid/configuration/set-as-favorite/{configurationId}/{folderId}',
51+
self::ROUTE,
5052
name: 'pimcore_studio_api_asset_set_grid_configuration_as_favorite',
5153
methods: ['POST'],
5254
)]
5355
#[IsGranted(UserPermissions::ASSETS->value)]
5456
#[Post(
55-
path: self::PREFIX . '/assets/grid/configuration/set-as-favorite/{configurationId}/{folderId}',
57+
path: self::PREFIX . self::ROUTE,
5658
operationId: 'asset_set_grid_configuration_as_favorite',
5759
description: 'asset_set_grid_configuration_as_favorite_description',
5860
summary: 'asset_set_grid_configuration_as_favorite_summary',
@@ -67,7 +69,7 @@ public function __construct(
6769
name: 'folderId'
6870
)]
6971
#[SuccessResponse(
70-
description: 'asset_set_grid_configuration_as_favorite_response'
72+
description: 'asset_set_grid_configuration_as_favorite_success_response'
7173
)]
7274
#[DefaultResponses([
7375
HttpResponseCodes::UNAUTHORIZED,

src/Asset/Controller/Grid/Configuration/UpdateConfigurationController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
*/
3939
final class UpdateConfigurationController extends AbstractApiController
4040
{
41+
private const string ROUTE = '/assets/grid/configuration/update/{configurationId}';
42+
4143
public function __construct(
4244
SerializerInterface $serializer,
4345
private readonly UpdateConfigurationServiceInterface $gridSaveConfigurationService
@@ -49,13 +51,13 @@ public function __construct(
4951
* @throws NotFoundException|InvalidArgumentException|ForbiddenException
5052
*/
5153
#[Route(
52-
'/assets/grid/configuration/update/{configurationId}',
54+
self::ROUTE,
5355
name: 'pimcore_studio_api_update_asset_grid_configuration',
5456
methods: ['PUT'],
5557
)]
5658
#[IsGranted(UserPermissions::ASSETS->value)]
5759
#[Put(
58-
path: self::PREFIX . '/assets/grid/configuration/update/{configurationId}',
60+
path: self::PREFIX . self::ROUTE,
5961
operationId: 'asset_update_grid_configuration',
6062
description: 'asset_update_grid_configuration_description',
6163
summary: 'asset_update_grid_configuration_summary',

src/DataObject/Controller/Grid/Configuration/DeleteConfigurationController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*/
3737
final class DeleteConfigurationController extends AbstractApiController
3838
{
39+
private const string ROUTE = '/data-object/grid/configuration/{configurationId}';
40+
3941
public function __construct(
4042
SerializerInterface $serializer,
4143
private readonly ConfigurationServiceInterface $gridConfigurationService,
@@ -47,13 +49,13 @@ public function __construct(
4749
* @throws ForbiddenException|NotFoundException
4850
*/
4951
#[Route(
50-
'/data-object/grid/configuration/{configurationId}',
52+
self::ROUTE,
5153
name: 'pimcore_studio_api_delete_data_object_grid_configuration',
5254
methods: ['DELETE'],
5355
)]
5456
#[IsGranted(UserPermissions::DATA_OBJECTS->value)]
5557
#[Delete(
56-
path: self::PREFIX . '/data-object/grid/configuration/{configurationId}',
58+
path: self::PREFIX . self::ROUTE,
5759
operationId: 'data_object_delete_grid_configuration_by_configurationId',
5860
description: 'data_object_delete_grid_configuration_by_configurationId_description',
5961
summary: 'data_object_delete_grid_configuration_by_configurationId_summary',

src/DataObject/Controller/Grid/Configuration/GetConfigurationController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
*/
4040
final class GetConfigurationController extends AbstractApiController
4141
{
42+
private const string ROUTE = '/data-object/grid/configuration/{folderId}/{classId}';
43+
4244
public function __construct(
4345
SerializerInterface $serializer,
4446
private readonly ConfigurationServiceInterface $gridConfigurationService,
@@ -50,13 +52,13 @@ public function __construct(
5052
* @throws NotFoundException
5153
*/
5254
#[Route(
53-
'/data-object/grid/configuration/{folderId}/{classId}',
55+
self::ROUTE,
5456
name: 'pimcore_studio_api_get_data_object_grid_configuration',
5557
methods: ['GET'],
5658
)]
5759
#[IsGranted(UserPermissions::DATA_OBJECTS->value)]
5860
#[Get(
59-
path: self::PREFIX . '/data-object/grid/configuration/{folderId}/{classId}',
61+
path: self::PREFIX . self::ROUTE,
6062
operationId: 'data_object_get_grid_configuration',
6163
description: 'data_object_get_grid_configuration_description',
6264
summary: 'data_object_get_grid_configuration_summary',

0 commit comments

Comments
 (0)