diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index 5dd991c3a..b438c10e0 100644 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -466,7 +466,7 @@ Thelia\Controller\Admin\ContentController::createAction - + Thelia\Controller\Admin\ContentController::updateAction \d+ diff --git a/core/lib/Thelia/Model/Breadcrumb/FolderBreadcrumbTrait.php b/core/lib/Thelia/Model/Breadcrumb/FolderBreadcrumbTrait.php new file mode 100644 index 000000000..af000b3e9 --- /dev/null +++ b/core/lib/Thelia/Model/Breadcrumb/FolderBreadcrumbTrait.php @@ -0,0 +1,86 @@ +generate('admin.catalog', [], Router::ABSOLUTE_URL); + $breadcrumb = [ + $translator->trans('Home', [], 'bo.default') => $router->generate('admin.home.view', [], Router::ABSOLUTE_URL), + $translator->trans('Folder', [], 'bo.default') => $catalogUrl, + ]; + + $folderPath = new FolderPath($container); + $folderPath->initializeArgs([ + 'folder' => $folderId, + 'visible' => '*' + ]); + + $results = $folderPath->buildArray(); + + foreach ($results as $result) { + $breadcrumb[$result['TITLE']] = sprintf("%s?folder_id=%d", + $router->generate('admin.folders.default',[], Router::ABSOLUTE_URL), + $result['ID'] + ); + } + + $locale = $result['LOCALE']; + + return $breadcrumb; + } + + public function getFolderBreadcrumb($router, $container, $tab) + { + $locale = null; + $folder = $this->getFolder(); + $breadcrumb = $this->getBaseBreadcrumb($router, $container, $this->getParentId(), $locale); + + $folder->setLocale($locale); + + $breadcrumb[$folder->getTitle()] = sprintf("%s?current_tab=%s", + $router->generate('admin.folders.update',['folder_id' => $folder->getId()], Router::ABSOLUTE_URL), + $tab + ); + + return $breadcrumb; + } + + public function getContentBreadcrumb(Router $router, ContainerInterface $container, $tab) + { + $content = $this->getContent(); + $locale = null; + + $breadcrumb = $this->getBaseBreadcrumb($router, $container, $content->getDefaultFolderId(), $locale); + + $content->setLocale($locale); + + $request = $container->get('request'); + //$breadcrumb[$product->getTitle()] = $product->getUrl().'¤t_tab=images'; + $breadcrumb[$content->getTitle()] = sprintf("%s?current_tab=%s", + $router->generate('admin.content.update', ['content_id' => $content->getId()], Router::ABSOLUTE_URL), + $tab + ); + + return $breadcrumb; + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Model/ContentDocument.php b/core/lib/Thelia/Model/ContentDocument.php index 0ffa355d7..bd3e16ec9 100644 --- a/core/lib/Thelia/Model/ContentDocument.php +++ b/core/lib/Thelia/Model/ContentDocument.php @@ -2,13 +2,18 @@ namespace Thelia\Model; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\Router; use Thelia\Model\Base\ContentDocument as BaseContentDocument; use Propel\Runtime\Connection\ConnectionInterface; +use Thelia\Model\Breadcrumb\BreadcrumbInterface; +use Thelia\Model\Breadcrumb\FolderBreadcrumbTrait; -class ContentDocument extends BaseContentDocument +class ContentDocument extends BaseContentDocument implements BreadcrumbInterface { use \Thelia\Model\Tools\ModelEventDispatcherTrait; use \Thelia\Model\Tools\PositionManagementTrait; + use FolderBreadcrumbTrait; /** * Calculate next position relative to our parent @@ -62,4 +67,15 @@ class ContentDocument extends BaseContentDocument return true; } + + /** + * + * return the complete breadcrumb for a given resource. + * + * @return array + */ + public function getBreadcrumb(Router $router, ContainerInterface $container, $tab) + { + return $this->getContentBreadcrumb($router, $container, $tab); + } } diff --git a/core/lib/Thelia/Model/ContentImage.php b/core/lib/Thelia/Model/ContentImage.php index d8b919647..98fe5a669 100644 --- a/core/lib/Thelia/Model/ContentImage.php +++ b/core/lib/Thelia/Model/ContentImage.php @@ -2,13 +2,18 @@ namespace Thelia\Model; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\Router; use Thelia\Model\Base\ContentImage as BaseContentImage; use Propel\Runtime\Connection\ConnectionInterface; +use Thelia\Model\Breadcrumb\BreadcrumbInterface; +use Thelia\Model\Breadcrumb\FolderBreadcrumbTrait; -class ContentImage extends BaseContentImage +class ContentImage extends BaseContentImage implements BreadcrumbInterface { use \Thelia\Model\Tools\ModelEventDispatcherTrait; use \Thelia\Model\Tools\PositionManagementTrait; + use FolderBreadcrumbTrait; /** * Calculate next position relative to our parent @@ -62,4 +67,15 @@ class ContentImage extends BaseContentImage return true; } + + /** + * + * return the complete breadcrumb for a given resource. + * + * @return array + */ + public function getBreadcrumb(Router $router, ContainerInterface $container, $tab) + { + return $this->getContentBreadcrumb($router, $container, $tab); + } } diff --git a/core/lib/Thelia/Model/FolderDocument.php b/core/lib/Thelia/Model/FolderDocument.php index 3fce9450f..9e38d37fc 100644 --- a/core/lib/Thelia/Model/FolderDocument.php +++ b/core/lib/Thelia/Model/FolderDocument.php @@ -2,13 +2,18 @@ namespace Thelia\Model; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\Router; use Thelia\Model\Base\FolderDocument as BaseFolderDocument; use Propel\Runtime\Connection\ConnectionInterface; +use Thelia\Model\Breadcrumb\BreadcrumbInterface; +use Thelia\Model\Breadcrumb\FolderBreadcrumbTrait; -class FolderDocument extends BaseFolderDocument +class FolderDocument extends BaseFolderDocument implements BreadcrumbInterface { use \Thelia\Model\Tools\ModelEventDispatcherTrait; use \Thelia\Model\Tools\PositionManagementTrait; + use FolderBreadcrumbTrait; /** * Calculate next position relative to our parent @@ -62,4 +67,9 @@ class FolderDocument extends BaseFolderDocument return true; } + + public function getBreadcrumb(Router $router, ContainerInterface $container, $tab) + { + return $this->getFolderBreadcrumb($router, $container, $tab); + } } diff --git a/core/lib/Thelia/Model/FolderImage.php b/core/lib/Thelia/Model/FolderImage.php index 8c66e98d2..dfc630190 100644 --- a/core/lib/Thelia/Model/FolderImage.php +++ b/core/lib/Thelia/Model/FolderImage.php @@ -2,13 +2,18 @@ namespace Thelia\Model; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\Router; use Thelia\Model\Base\FolderImage as BaseFolderImage; use Propel\Runtime\Connection\ConnectionInterface; +use Thelia\Model\Breadcrumb\BreadcrumbInterface; +use Thelia\Model\Breadcrumb\FolderBreadcrumbTrait; -class FolderImage extends BaseFolderImage +class FolderImage extends BaseFolderImage implements BreadcrumbInterface { use \Thelia\Model\Tools\ModelEventDispatcherTrait; use \Thelia\Model\Tools\PositionManagementTrait; + use FolderBreadcrumbTrait; /** * Calculate next position relative to our parent @@ -62,4 +67,15 @@ class FolderImage extends BaseFolderImage return true; } + + /** + * + * return the complete breadcrumb for a given resource. + * + * @return array + */ + public function getBreadcrumb(Router $router, ContainerInterface $container, $tab) + { + return $this->getFolderBreadcrumb($router, $container, $tab); + } }