Example #1
0
 /**
  * Configures the newly created item's extras
  * Extras are processed one by one in order not to reset values set by other extensions
  *
  * @param ItemInterface $item
  * @param array         $options
  */
 private function buildExtras(ItemInterface $item, array $options)
 {
     if (!empty($options['extras'])) {
         foreach ($options['extras'] as $key => $value) {
             $item->setExtra($key, $value);
         }
     }
 }
 public function decorate(KnpMenuItem $knpMenuItem, AdminMenuItem $adminMenuItem)
 {
     if ($adminMenuItem instanceof RoutableItem && $adminMenuItem->getRoute()) {
         $knpMenuItem->setUri($this->router->generate($adminMenuItem->getRoute(), $adminMenuItem->getRouteParameters()));
         $routes = $knpMenuItem->getExtra('routes', array());
         $routes[] = array('route' => $adminMenuItem->getRoute(), 'parameters' => $adminMenuItem->getRouteParameters());
         $knpMenuItem->setExtra('routes', $routes);
     }
 }
Example #3
0
 protected function addNavLinkRoute(ItemInterface $menu, $label, $route, $routeParameters = array())
 {
     $item = $menu->addChild($label, array('route' => $route, 'routeParameters' => $routeParameters));
     $item->setExtra('translation_domain', $menu->getExtra('translation_domain'));
     $menu->setExtra('request_uri', $menu->getExtra('request_uri'));
     if ($item->getUri() == $menu->getExtra('request_uri')) {
         $item->setAttribute('class', 'active');
     }
     return $item;
 }
 public function decorate(KnpMenuItem $knpMenuItem, AdminMenuItem $adminMenuItem)
 {
     if ($adminMenuItem instanceof ElementItem && $adminMenuItem->hasOption('elements')) {
         $routes = $knpMenuItem->getExtra('routes', array());
         /** @var Element $element */
         foreach ($adminMenuItem->getOption('elements') as $element) {
             $routes[] = array('route' => $element->getRoute(), 'parameters' => $element->getRouteParameters());
         }
         $knpMenuItem->setExtra('routes', $routes);
     }
 }
 /**
  * Build an item based on options
  * @param ItemInterface $item
  * @param array         $options
  */
 public function buildItem(ItemInterface $item, array $options)
 {
     if ($options['navbar']) {
         $item->setChildrenAttribute('class', 'nav navbar-nav');
     }
     if ($options['pills']) {
         $item->setChildrenAttribute('class', 'nav nav-pills');
     }
     if ($options['stacked']) {
         $class = $item->getChildrenAttribute('class');
         $item->setChildrenAttribute('class', $class . ' nav-stacked');
     }
     if ($options['dropdown-header']) {
         $item->setAttribute('role', 'presentation')->setAttribute('class', 'dropdown-header')->setUri(null);
     }
     if ($options['list-group']) {
         //echo "BLUBBB";
         $item->setChildrenAttribute('class', 'list-group');
         $item->setAttribute('class', 'list-group-item');
     }
     //var_dump($item->getLabel(), $item->getChildrenAttributes());
     if ($options['list-group-item']) {
         $item->setAttribute('class', 'list-group-item');
     }
     if ($options['dropdown']) {
         $item->setUri('#')->setAttribute('class', 'dropdown')->setLinkAttribute('class', 'dropdown-toggle')->setLinkAttribute('data-toggle', 'dropdown')->setChildrenAttribute('class', 'dropdown-menu')->setChildrenAttribute('role', 'menu');
         if ($options['caret']) {
             $item->setExtra('caret', 'true');
         }
     }
     if ($options['divider']) {
         $item->setLabel('')->setUri(null)->setAttribute('role', 'presentation')->setAttribute('class', 'divider');
     }
     if ($options['pull-right']) {
         $class = $item->getChildrenAttribute('class', '');
         $item->setChildrenAttribute('class', $class . ' pull-right');
     }
     if ($options['icon']) {
         $item->setExtra('icon', $options['icon']);
     }
 }
 /**
  * Modify menu by adding, removing or editing items.
  *
  * @param \Knp\Menu\ItemInterface $menu
  * @param array                   $options
  * @param string|null             $alias
  */
 public function build(ItemInterface $menu, array $options = [], $alias = null)
 {
     $user = $this->tokenStorage->getToken()->getUser();
     $menu->setExtra('type', $alias);
     if (is_object($user)) {
         /** @var $entity NavigationItemInterface */
         $entity = $this->factory->createItem($alias, []);
         /** @var $repo NavigationRepositoryInterface */
         $repo = $this->em->getRepository(get_class($entity));
         $items = $repo->getNavigationItems($user->getId(), $alias, $options);
         foreach ($items as $item) {
             $menu->addChild($alias . '_item_' . $item['id'], ['extras' => $item, 'uri' => $item['url'], 'label' => $item['title']]);
         }
     }
 }
 /**
  * Modify menu by adding, removing or editing items.
  *
  * @param \Knp\Menu\ItemInterface $menu
  * @param array                   $options
  * @param string|null             $alias
  */
 public function build(ItemInterface $menu, array $options = array(), $alias = null)
 {
     $user = $this->securityContext->getToken() ? $this->securityContext->getToken()->getUser() : null;
     $menu->setExtra('type', $alias);
     if (is_object($user)) {
         $currentOrganization = $this->securityContext->getToken()->getOrganizationContext();
         /** @var $entity NavigationItemInterface */
         $entity = $this->factory->createItem($alias, array());
         /** @var $repo NavigationRepositoryInterface */
         $repo = $this->em->getRepository(ClassUtils::getClass($entity));
         $items = $repo->getNavigationItems($user->getId(), $currentOrganization, $alias, $options);
         foreach ($items as $item) {
             $menu->addChild($alias . '_item_' . $item['id'], array('extras' => $item, 'uri' => $item['url'], 'label' => $item['title']));
         }
     }
 }
Example #8
0
 public function build(ItemInterface $menu, array $options = array(), $alias = null)
 {
     $menu->setExtra('type', 'dropdown');
     /* Disabled status menu till active stream will be implemented (BAP-617)
         $menu->addChild(
            'Update status',
            array(
                 'route'      => 'oro_user_status_create',
                 'attributes' => array(
                     'class' => 'update-status'
                 ),
                'linkAttributes' => array(
                    'class' => 'no-hash'
                )
            )
        );*/
     $menu->addChild('divider-' . rand(1, 99999))->setLabel('')->setAttribute('class', 'divider');
     $menu->addChild('Logout', array('route' => 'oro_user_security_logout', 'linkAttributes' => array('class' => 'no-hash')));
 }
 /**
  * @param ItemInterface $menu
  * @param array         $data
  * @param array         $itemList
  * @param array         $options
  *
  * @return \Knp\Menu\ItemInterface
  */
 private function createFromArray(ItemInterface $menu, array $data, array &$itemList, array $options = array())
 {
     $isAllowed = false;
     foreach ($data as $itemCode => $itemData) {
         if (!empty($itemList[$itemCode])) {
             $itemOptions = $itemList[$itemCode];
             if (empty($itemOptions['name'])) {
                 $itemOptions['name'] = $itemCode;
             }
             if (empty($itemOptions['route']) && empty($itemOptions['uri'])) {
                 $itemOptions['route'] = $itemCode;
             }
             if (!empty($itemData['position'])) {
                 $itemOptions['extras']['position'] = $itemData['position'];
             }
             $this->moveToExtras($itemOptions, 'translateDomain');
             $this->moveToExtras($itemOptions, 'translateParameters');
             $newMenuItem = $menu->addChild($itemOptions['name'], array_merge($itemOptions, $options));
             if (!empty($itemData['children'])) {
                 $this->createFromArray($newMenuItem, $itemData['children'], $itemList, $options);
             }
             $isAllowed = $isAllowed || $newMenuItem->getExtra('isAllowed');
         }
     }
     $menu->setExtra('isAllowed', $isAllowed);
     if ($menu->getExtra('hideIfEmpty') && $menu->hasChildren()) {
         $willDisplaySomeChildren = false;
         foreach ($menu->getChildren() as $child) {
             if ($child->isDisplayed() && $child->getExtra('isAllowed')) {
                 $willDisplaySomeChildren = true;
                 break;
             }
         }
         if (!$willDisplaySomeChildren) {
             $menu->setDisplay(false);
         }
     }
 }
 /**
  * @param ItemInterface $menu
  * @param array         $data
  * @param array         $itemList
  * @param array         $options
  *
  * @return \Knp\Menu\ItemInterface
  */
 private function createFromArray(ItemInterface $menu, array $data, array &$itemList, array $options = array())
 {
     $isAllowed = false;
     foreach ($data as $itemCode => $itemData) {
         if (!empty($itemList[$itemCode])) {
             $itemOptions = $itemList[$itemCode];
             if (empty($itemOptions['name'])) {
                 $itemOptions['name'] = $itemCode;
             }
             if (!empty($itemData['position'])) {
                 $itemOptions['extras']['position'] = $itemData['position'];
             }
             $this->moveToExtras($itemOptions, 'translateDomain');
             $this->moveToExtras($itemOptions, 'translateParameters');
             $newMenuItem = $menu->addChild($itemOptions['name'], array_merge($itemOptions, $options));
             if (!empty($itemData['children'])) {
                 $this->createFromArray($newMenuItem, $itemData['children'], $itemList, $options);
             }
             $isAllowed = $isAllowed || $newMenuItem->getExtra('isAllowed');
         }
     }
     $menu->setExtra('isAllowed', $isAllowed);
 }
 public function build(ItemInterface $menu, array $options = [], $alias = null)
 {
     $menu->setExtra('type', 'dropdown');
     $menu->addChild('divider-' . rand(1, 99999))->setLabel('')->setAttribute('class', 'divider');
     $menu->addChild('Logout', ['route' => 'oro_user_security_logout', 'check_access' => false, 'linkAttributes' => ['class' => 'no-hash']]);
 }
 /**
  * {@inheritDoc}
  */
 public function build(ItemInterface $menu, array $options = array(), $alias = null)
 {
     $menu->setExtra('type', 'dropdown');
     $menu->addChild('divider-' . rand(1, 99999))->setLabel('')->setAttribute('class', 'divider');
     $menu->addChild('orob2b.account.menu.account_user_logout.label', ['route' => 'orob2b_account_account_user_security_logout', 'linkAttributes' => ['class' => 'no-hash']]);
 }