/** * 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); } }
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'])); } } }
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']]); }