implement new breadcrumb on image and document edition in the catalog. Fix #460
This commit is contained in:
@@ -466,7 +466,7 @@
|
||||
<default key="_controller">Thelia\Controller\Admin\ContentController::createAction</default>
|
||||
</route>
|
||||
|
||||
<route id="admin.content.update" path="admin/content/update/{content_id}">
|
||||
<route id="admin.content.update" path="/admin/content/update/{content_id}">
|
||||
<default key="_controller">Thelia\Controller\Admin\ContentController::updateAction</default>
|
||||
<requirement key="content_id">\d+</requirement>
|
||||
</route>
|
||||
|
||||
86
core/lib/Thelia/Model/Breadcrumb/FolderBreadcrumbTrait.php
Normal file
86
core/lib/Thelia/Model/Breadcrumb/FolderBreadcrumbTrait.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*************************************************************************************/
|
||||
/* This file is part of the Thelia package. */
|
||||
/* */
|
||||
/* Copyright (c) OpenStudio */
|
||||
/* email : dev@thelia.net */
|
||||
/* web : http://www.thelia.net */
|
||||
/* */
|
||||
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||
/* file that was distributed with this source code. */
|
||||
/*************************************************************************************/
|
||||
|
||||
namespace Thelia\Model\Breadcrumb;
|
||||
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
use Symfony\Component\Routing\Router;
|
||||
use Thelia\Core\Template\Loop\FolderPath;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
|
||||
trait FolderBreadcrumbTrait {
|
||||
|
||||
public function getBaseBreadcrumb(Router $router, ContainerInterface $container, $folderId, &$locale)
|
||||
{
|
||||
$translator = Translator::getInstance();
|
||||
$catalogUrl = $router->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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user