Пример #1
0
 public function render(ItemInterface $item, array $options = array())
 {
     $options = array_merge(array('currentClass' => 'active'), $options);
     if ($item->isRoot()) {
         $item->setChildrenAttribute('class', trim('nav navbar-nav ' . $item->getChildrenAttribute('class')));
     }
     return parent::render($item, $options);
 }
Пример #2
0
 /**
  * @param ContentEntity $contentEntity
  * @param array $options
  * @return string
  */
 public function render($contentEntity, $options = array())
 {
     $contentMenuItems = $this->cq()->getContentMenuItems($contentEntity);
     /**
      * @var \Knp\Menu\MenuItem $rootMenu
      * @var \Knp\Menu\MenuItem $menu
      *
      */
     $menu = array();
     $rootMenu = $options['factory']->createItem($contentEntity->getSlug());
     $rootMenu->setChildrenAttribute('id', $options['id']);
     $rootMenu->setChildrenAttribute('class', $options['class']);
     $menu[$contentEntity->getId()] = $rootMenu;
     /**
      * @var ContentEntity $content
      */
     foreach ($contentMenuItems as $content) {
         $menu[$content->getId()] = $menu[$content->getTreeParent()->getId()]->addChild($content->getSlug(), array('uri' => '#'));
         if (isset($options['emptyTitle']) && $options['emptyTitle'] === true) {
             $menu[$content->getId()]->setLabel('');
         } else {
             $menu[$content->getId()]->setLabel($content->getTitle());
         }
         $contentMeta = $this->cm()->getContentAllMeta($content);
         if (isset($contentMeta['linkType']) && $contentMeta['linkType'] == 'route') {
             if (isset($contentMeta['linkRoute']) && !empty($contentMeta['linkRoute'])) {
                 $linkURL = $this->tp()->getCurrentSkin()->getNavigationRoute($contentMeta['linkRoute']);
                 $menu[$content->getId()]->setUri($linkURL);
             }
         }
         if (isset($contentMeta['linkType']) && $contentMeta['linkType'] == 'link') {
             if (isset($contentMeta['linkExternal']) && !empty($contentMeta['linkExternal'])) {
                 $menu[$content->getId()]->setUri($contentMeta['linkExternal']);
             }
         }
         if (isset($contentMeta['linkType']) && $contentMeta['linkType'] == 'content') {
             if (isset($contentMeta['linkContent']) && $contentMeta['linkContent'] instanceof ContentEntity) {
                 $contentLinkURL = $this->cq()->getPublicURL($contentMeta['linkContent']);
                 $menu[$content->getId()]->setUri($contentLinkURL);
             }
         }
         if (isset($contentMeta['linkTarget']) && !empty($contentMeta['linkTarget'])) {
             $menu[$content->getId()]->setLinkAttribute('target', $contentMeta['linkTarget']);
         }
         if (isset($contentMeta['linkClass']) && !empty($contentMeta['linkClass'])) {
             $menu[$content->getId()]->setLinkAttribute('class', $contentMeta['linkClass']);
         }
     }
     $requestURL = $this->getRequest()->getRequestUri();
     $menuTemplate = $this->getContentTemplate($contentEntity);
     $matcher = new Matcher();
     $voter = new UriVoter($requestURL);
     $matcher->addVoter($voter);
     $renderer = new TwigRenderer($options['environment'], $menuTemplate, $matcher);
     return $renderer->render($menu[$contentEntity->getId()]);
 }