vendor/uvdesk/core-framework/Dashboard/AsideTemplate.php line 23

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\CoreFrameworkBundle\Dashboard;
  3. use Twig\Environment as TwigEnvironment;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use Webkul\UVDesk\CoreFrameworkBundle\Services\UserService;
  6. use Webkul\UVDesk\CoreFrameworkBundle\Framework\ExtendableComponentInterface;
  7. use Webkul\UVDesk\CoreFrameworkBundle\Dashboard\Segments\PanelSidebarInterface;
  8. use Webkul\UVDesk\CoreFrameworkBundle\Dashboard\Segments\PanelSidebarItemInterface;
  9. class AsideTemplate implements ExtendableComponentInterface
  10. {
  11.     const SECTION_TEMPLATE '<div class="uv-brick"><div class="uv-brick-head"><h6>[[ TITLE ]]</h6><p>[[ DESCRIPTION ]]</p></div><div class="uv-brick-section">[[ COLLECTION ]]</div></div>';
  12.     const SECTION_ITEM_TEMPLATE '<a href="[[ PATH ]]"><div class="uv-brick-container"><div class="uv-brick-icon">[[ SVG ]]</div><p>[[ TITLE ]]</p></div></a>';
  13.     private $panelSidebars = [];
  14.     private $panelSidebarItems = [];
  15.     public function __construct(RequestStack $requestStackTwigEnvironment $twigUserService $userService)
  16.     {
  17.         $this->twig $twig;
  18.         $this->userService $userService;
  19.         $this->requestStack $requestStack;
  20.     }
  21.     public function addPanelSidebar(PanelSidebarInterface $panelSidebar$tags = [])
  22.     {
  23.         $this->panelSidebars[get_class($panelSidebar)] = $panelSidebar;
  24.     }
  25.     public function addPanelSidebarItem(PanelSidebarItemInterface $panelSidebarItem$tags = [])
  26.     {
  27.         $this->panelSidebarItems[get_class($panelSidebarItem)] = $panelSidebarItem;
  28.     }
  29.     public function renderSidebar($sidebarReference)
  30.     {
  31.         $sidebar = [
  32.             'title'      => null,
  33.             'collection' => [],
  34.         ];
  35.         if (!empty($this->panelSidebars[$sidebarReference])) {
  36.             $sidebar['title'] = $sidebarReference::getTitle();
  37.             $route $this->requestStack->getCurrentRequest()->get('_route');
  38.             foreach ($this->panelSidebarItems as $itemReference => $item) {
  39.                 if ($item::getSidebarReferenceId() == $sidebarReference) {
  40.                     $supportedRoutes array_unique(array_merge((array) $item::getRouteName(), $item::getSupportedRoutes()));
  41.                     if (null == $item::getRoles()) {
  42.                         $sidebar['collection'][] = [
  43.                             'title'     => $item::getTitle(),
  44.                             'routeName' => $item::getRouteName(),
  45.                             'isActive'  => in_array($route$supportedRoutes),
  46.                         ];
  47.                     } else {
  48.                         foreach ($item::getRoles() as $requiredPermission) {
  49.                             if ($this->userService->isAccessAuthorized($requiredPermission)) {
  50.                                 $sidebar['collection'][] = [
  51.                                     'title'     => $item::getTitle(),
  52.                                     'routeName' => $item::getRouteName(),
  53.                                     'isActive'  => in_array($route$supportedRoutes),
  54.                                 ];
  55.                                 break;
  56.                             }
  57.                         }
  58.                     }
  59.                 }
  60.             }
  61.         } else {
  62.             $sidebar['title'] = $sidebarReference::getTitle();
  63.             $route $this->requestStack->getCurrentRequest()->get('_route');
  64.             foreach ($this->panelSidebarItems as $itemReference => $item) {
  65.                 if ($item::getSidebarReferenceId() == $sidebarReference) {
  66.                     $supportedRoutes array_unique(array_merge((array) $item::getRouteName(), $item::getSupportedRoutes()));
  67.                     if (null == $item::getRoles()) {
  68.                         $sidebar['collection'][] = [
  69.                             'title'     => $item::getTitle(),
  70.                             'routeName' => $item::getRouteName(),
  71.                             'isActive'  => in_array($route$supportedRoutes),
  72.                         ];
  73.                     } else {
  74.                         foreach ($item::getRoles() as $requiredPermission) {
  75.                             if ($this->userService->isAccessAuthorized($requiredPermission)) {
  76.                                 $sidebar['collection'][] = [
  77.                                     'title'     => $item::getTitle(),
  78.                                     'routeName' => $item::getRouteName(),
  79.                                     'isActive'  => in_array($route$supportedRoutes),
  80.                                 ];
  81.                                 break;
  82.                             }
  83.                         }
  84.                     }
  85.                 }
  86.             }
  87.         }
  88.         // Sort sidebar items alphabatically
  89.         usort($sidebar['collection'], function ($item_1$item_2) {
  90.             return strcasecmp($item_1['title'], $item_2['title']);
  91.         });
  92.         return $this->twig->render('@UVDeskCoreFramework/Templates/aside.html.twig', ['sidebar' => $sidebar]);
  93.     }
  94. }