diff --git a/.github/workflows/packages_components.yml b/.github/workflows/packages_components.yml index 6af99d233e..27986d3709 100644 --- a/.github/workflows/packages_components.yml +++ b/.github/workflows/packages_components.yml @@ -19,7 +19,7 @@ jobs: - name: "List Packages" id: create-list - run: echo "packages=$(find src/CoreShop/Bundle -mindepth 2 -maxdepth 2 -type f -name composer.json -exec dirname '{}' \; | sed -e 's/src\/CoreShop\///g' | sort | jq --raw-input . | jq --slurp . | jq -c .)" >> $GITHUB_OUTPUT + run: echo "packages=$(find src/CoreShop/Component -mindepth 2 -maxdepth 2 -type f -name composer.json -exec dirname '{}' \; | sed -e 's/src\/CoreShop\///g' | sort | jq --raw-input . | jq --slurp . | jq -c .)" >> $GITHUB_OUTPUT outputs: packages: "${{ steps.create-list.outputs.packages }}" diff --git a/src/CoreShop/Bundle/FrontendBundle/Resources/install/pimcore/staticroutes.yml b/src/CoreShop/Bundle/FrontendBundle/Resources/install/pimcore/staticroutes.yml index 981b3933d8..62ba5dee90 100644 --- a/src/CoreShop/Bundle/FrontendBundle/Resources/install/pimcore/staticroutes.yml +++ b/src/CoreShop/Bundle/FrontendBundle/Resources/install/pimcore/staticroutes.yml @@ -247,8 +247,8 @@ routes: priority: 2 coreshop_wishlist_summary: - pattern: '/(\w+)\/shop\/wishlist(?:\/((.*)))$/' - reverse: '/%_locale/shop/wishlist/{%identifier}' + pattern: '/(\w+)\/shop\/wishlist(?:\/((.*)))?$/' + reverse: '/%_locale/shop/wishlist{/%identifier}' controller: 'coreshop.storage_list.controller.wishlist:summaryAction' variables: _locale,identifier priority: 2 diff --git a/src/CoreShop/Bundle/FrontendBundle/Resources/views/Wishlist/share/summary.html.twig b/src/CoreShop/Bundle/FrontendBundle/Resources/views/Wishlist/share/summary.html.twig deleted file mode 100644 index b2ebf9216b..0000000000 --- a/src/CoreShop/Bundle/FrontendBundle/Resources/views/Wishlist/share/summary.html.twig +++ /dev/null @@ -1,50 +0,0 @@ -{% extends '@CoreShopFrontend/layout.html.twig' %} -{% import '@CoreShopFrontend/Common/Macro/currency.html.twig' as currency %} - -{% block content %} - {% if storage_list.hasItems %} -
- - - - - - - - - - {% for item in storage_list.items %} - {% set product = item.product %} - {% set productUrl = pimcore_object_path(product) %} - - - - - - {% endfor %} - -
- {{ 'coreshop.ui.image'|trans }} - - {{ 'coreshop.ui.product_details'|trans }} - - {{ 'coreshop.ui.price'|trans }} -
- {% if item.product and item.product.image is pimcore_asset_image %} - - {{ item.product.image|pimcore_image_thumbnail_html('coreshop_productCart', {'imgAttributes': {'class': 'img-fluid'}, 'alt': item.product.name, 'title': item.product.name}) }} - - {% endif %} - - - {{ product.name }} - - - {{ currency.getPrice(product) }} -
-
- {% else %} -

{{ 'coreshop.ui.wishlist_empty'|trans }}

- {% endif %} -
-{% endblock %} diff --git a/src/CoreShop/Bundle/ResourceBundle/Resources/config/services.yml b/src/CoreShop/Bundle/ResourceBundle/Resources/config/services.yml index b6a3812585..56822bb9b0 100755 --- a/src/CoreShop/Bundle/ResourceBundle/Resources/config/services.yml +++ b/src/CoreShop/Bundle/ResourceBundle/Resources/config/services.yml @@ -97,4 +97,10 @@ services: decorates: 'CoreShop\Component\Pimcore\Slug\DataObjectSlugGeneratorInterface' arguments: - '@CoreShop\Bundle\ResourceBundle\Slug\ResourceConfigurationSlugGenerator.inner' + - '@CoreShop\Component\Resource\Metadata\RegistryInterface' + + CoreShop\Component\Resource\Pimcore\ResourceSlugLinkGenerator: + decorates: 'CoreShop\Component\Pimcore\Slug\SluggableLinkGenerator' + arguments: + - '@CoreShop\Component\Resource\Pimcore\ResourceSlugLinkGenerator.inner' - '@CoreShop\Component\Resource\Metadata\RegistryInterface' \ No newline at end of file diff --git a/src/CoreShop/Bundle/StorageListBundle/Controller/StorageListController.php b/src/CoreShop/Bundle/StorageListBundle/Controller/StorageListController.php index b3e6bc5616..a5772e368e 100644 --- a/src/CoreShop/Bundle/StorageListBundle/Controller/StorageListController.php +++ b/src/CoreShop/Bundle/StorageListBundle/Controller/StorageListController.php @@ -238,7 +238,7 @@ public function summaryAction(Request $request): Response } if (!$isSharedList && $list instanceof ShareableStorageListInterface && $list->listCanBeShared()) { - $params['share_link'] = $this->generateUrl($this->summaryRoute, ['token' => $list->getToken()], UrlGeneratorInterface::ABSOLUTE_URL); + $params['share_link'] = $this->generateUrl($this->summaryRoute, ['identifier' => $list->getToken()], UrlGeneratorInterface::ABSOLUTE_URL); } return $this->render($this->templateSummary, $params); diff --git a/src/CoreShop/Component/Pimcore/Slug/SluggableLinkGenerator.php b/src/CoreShop/Component/Pimcore/Slug/SluggableLinkGenerator.php index c1b57c88ea..d5ff9e639d 100644 --- a/src/CoreShop/Component/Pimcore/Slug/SluggableLinkGenerator.php +++ b/src/CoreShop/Component/Pimcore/Slug/SluggableLinkGenerator.php @@ -19,7 +19,6 @@ namespace CoreShop\Component\Pimcore\Slug; use CoreShop\Component\Pimcore\Exception\LinkGenerationNotPossibleException; -use CoreShop\Component\Resource\Metadata\RegistryInterface; use Pimcore\Http\Request\Resolver\SiteResolver; use Pimcore\Model\DataObject\ClassDefinition\LinkGeneratorInterface; use Pimcore\Model\DataObject\Concrete; @@ -30,7 +29,6 @@ class SluggableLinkGenerator implements LinkGeneratorInterface public function __construct( private SiteResolver $siteResolver, private RequestStack $requestStack, - private RegistryInterface $metadataRegistry, ) { } @@ -44,14 +42,6 @@ public function generate(Concrete $object, array $params = []): string )); } - if ($this->metadataRegistry->hasClass($object::class)) { - $metadata = $this->metadataRegistry->getByClass($object::class); - - if ($metadata->hasParameter('slug') && !$metadata->getParameter('slug')) { - throw new LinkGenerationNotPossibleException(); - } - } - $slugs = $object->getSlug($params['_locale'] ?? null); $slug = null; $fallbackSlug = null; diff --git a/src/CoreShop/Component/Pimcore/composer.json b/src/CoreShop/Component/Pimcore/composer.json index 8579473b99..7e54d6f420 100644 --- a/src/CoreShop/Component/Pimcore/composer.json +++ b/src/CoreShop/Component/Pimcore/composer.json @@ -24,7 +24,8 @@ } ], "require": { - "pimcore/pimcore": "^10.5" + "pimcore/pimcore": "^10.5", + "laminas/laminas-stdlib": "^3.6" }, "require-dev": { "phpstan/phpstan": "^1.5.4", diff --git a/src/CoreShop/Component/Resource/Pimcore/ResourceSlugLinkGenerator.php b/src/CoreShop/Component/Resource/Pimcore/ResourceSlugLinkGenerator.php new file mode 100644 index 0000000000..ccd1c3f046 --- /dev/null +++ b/src/CoreShop/Component/Resource/Pimcore/ResourceSlugLinkGenerator.php @@ -0,0 +1,57 @@ +getFullPath(), + SluggableInterface::class, + ) + ); + } + + if ($this->metadataRegistry->hasClass($object::class)) { + $metadata = $this->metadataRegistry->getByClass($object::class); + + if ($metadata->hasParameter('slug') && !$metadata->getParameter('slug')) { + throw new LinkGenerationNotPossibleException(); + } + } + + return $this->inner->generate($object, $params); + } +}