Example #1
0
 /**
  * unless 'raw' extra isn't set to true, we try to translate the label.
  *
  * @param ItemInterface $item
  * @param array         $options
  *
  * @return string
  */
 protected function renderLabel(ItemInterface $item, array $options)
 {
     if ($options['allow_safe_labels'] && $item->getExtra('safe_label', false)) {
         return $item->getLabel();
     }
     if ($item->getExtra('raw', false) !== false) {
         return $this->escape($item->getLabel());
     }
     return $this->escape(trans($item->getLabel()));
 }
 public function render(ItemInterface $item, array $options = array())
 {
     $options = array_merge($this->defaultOptions, $options);
     $translator = $options['translator'];
     $itemIterator = new \Knp\Menu\Iterator\RecursiveItemIterator($item);
     $iterator = new \RecursiveIteratorIterator($itemIterator, \RecursiveIteratorIterator::SELF_FIRST);
     $items = [];
     foreach ($iterator as $item) {
         $translatedLabel = $translator->trans($item->getLabel());
         $id = $item->getName();
         $itemData = ['id' => strtolower($item->getName()), 'name' => $translatedLabel, 'uri' => $item->getUri()];
         $itemData['has_children'] = $item->hasChildren();
         $parentId = $item->getParent()->getName();
         if ($parentId !== $id) {
             $itemData['parent'] = strtolower($parentId);
             if (!isset($items[$parentId]['children'])) {
                 $items[$parentId]['children'] = [];
             }
             $items[$parentId]['children'][] = $itemData;
         }
         if (isset($items[$id])) {
             $items[$id] = array_merge($itemData, $items[$id]);
         } else {
             $items[$id] = $itemData;
         }
     }
     return $items;
 }
Example #3
0
 /**
  * Configures the newly created item with the passed options
  *
  * @param ItemInterface $item
  * @param array         $options
  */
 public function buildItem(ItemInterface $item, array $options)
 {
     if (!empty($options['path'])) {
         $item->setUri(site_url($options['path']));
     }
     if (!empty($options['icon_class'])) {
         $item->setLabel('<i class="' . $options['icon_class'] . '"></i> ' . $item->getLabel());
         $item->setExtra('safe_label', true);
     }
     $this->buildExtras($item, $options);
 }
Example #4
0
 protected function renderLabel(ItemInterface $item, array $options)
 {
     $html = '<i class="' . $item->getIcon() . '"></i> ';
     $html .= '<span>' . $item->getLabel() . '</span>';
     if ($item->hasChildren()) {
         $drop = false;
         foreach ($item->getChildren() as $child) {
             if (\App::isGranted($child->getPermissions())) {
                 $drop = true;
             }
         }
         if ($drop) {
             $html .= '<i class="fa fa-angle-left pull-right"></i>';
         }
     }
     return $html;
 }
Example #5
0
    /**
     * Renders the link in a a tag with link attributes or
     * the label in a span tag with label attributes
     *
     * Tests if item has a an uri and if not tests if it's
     * the current item and if the text has to be rendered
     * as a link or not.
     *
     * @param \Knp\Menu\ItemInterface $item The item to render the link or label for
     * @param array $options The options to render the item
     * @return string
     */
    public function renderLink(ItemInterface $item, array $options = array())
    {
        $options = array_merge($this->getDefaultOptions(), $options);

        if ($item->getUri() && (!$item->isCurrent() || $options['currentAsLink'])) {
            $text = sprintf('<a href="%s"%s>%s</a>', $this->escape($item->getUri()), $this->renderHtmlAttributes($item->getLinkAttributes()), $this->escape($item->getLabel()));
        } else {
            $text = sprintf('<span%s>%s</span>', $this->renderHtmlAttributes($item->getLabelAttributes()), $this->escape($item->getLabel()));
        }

        return $this->format($text, 'link', $item->getLevel());
    }
Example #6
0
 /**
  * @param \Knp\Menu\ItemInterface $item
  * @param array $options
  * @return string
  */
 protected function getText(ItemInterface $item, array $options)
 {
     if ($options['allow_safe_labels'] && $item->getExtra('safe_label', false)) {
         return $item->getLabel();
     }
     return $this->escape($item->getLabel());
 }
Example #7
0
 /**
  * Renders the menu label.
  *
  * @param Item  $item
  * @param array $options
  *
  * @return string
  */
 protected function renderLabel(Item $item, array $options)
 {
     $icon = '';
     if ($item->getExtra('icon')) {
         $icon = $this->renderIcon($item->getExtra('icon'));
     }
     if ($options['allow_safe_labels'] && $item->getExtra('safe_label', false)) {
         return $icon . $item->getLabel();
     }
     return $icon . $this->escape($item->getLabel());
 }
 private function getBreadcrumbsItem(ItemInterface $item)
 {
     return array('label' => $item->getLabel(), 'uri' => $item->getUri(), 'item' => $item);
 }