示例#1
0
 protected function renderSubMenu(Zend_Navigation_Page $page)
 {
     $html = '';
     $pages = $page->getPages();
     foreach ($pages as $subPage) {
         if ($this->acl && $subPage->getResource()) {
             if (!$this->acl->hasPermission($subPage->getResource(), $subPage->getPrivilege())) {
                 continue;
             }
         }
         if ($subPage->isActive()) {
             $this->activePageId = $this->getId($subPage);
         }
         if (!$subPage->isVisible(true)) {
             continue;
         }
         if (!$subPage->getHref()) {
             continue;
         }
         $html .= sprintf('<li><div class="menu-glyph" %s><a id="%s" href="%s" class="%s">%s</a></div></li>', $this->getInlineStyle($subPage->getId(), 15), 'menu-' . $this->getId($subPage), $subPage->getHref(), $subPage->getClass(), $this->view->escape($subPage->getLabel()));
     }
     return $html ? sprintf('<ul>%s</ul>', $html) : $html;
 }
示例#2
0
 /**
  * Recursively removes the given page from the parent container, including all subpages
  *
  * @param Zend_Navigation_Page $page The page to remove from the parent container and all its subpages.
  * @param Zend_Navigation_Container $parentContainer The parent container (by default it is this navigation) 
  * from which to remove the page from its subpages
  * @param boolean $reattach Whether the subpages of the $page should be reattached to $parentContainer
  * @return boolean Whether the page was removed
  */
 public function removePageRecursive(Zend_Navigation_Page $page, Zend_Navigation_Container $parentContainer = null, $reattach = false)
 {
     if ($parentContainer === null) {
         $parentContainer = $this;
     }
     $childPages = $page->getPages();
     $removed = $parentContainer->removePage($page);
     if ($removed && $reattach) {
         // reattach the child pages to the container page
         foreach ($childPages as $childPage) {
             $pageOrder = $this->_getLastPageOrderInContainer($parentContainer) + 1;
             $page->setOrder($pageOrder);
             $this->addPageToContainer($childPage, $parentContainer);
         }
     }
     foreach ($parentContainer->getPages() as $subPage) {
         $removed = $removed || $this->removePageRecursive($page, $subPage, $reattach);
     }
     return $removed;
 }
示例#3
0
 /**
  * Returns an HTML string containing an 'a' element for the given page if
  * the page's href is not empty, and a 'span' element if it is empty
  *
  * Overrides {@link Zend_View_Helper_Navigation_Abstract::htmlify()}.
  *
  * @param  Zend_Navigation_Page $page  page to generate HTML for
  * @return string                      HTML string for the given page
  */
 public function htmlify(Zend_Navigation_Page $page, $endOfTree = false)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     // translate label and title?
     if ($this->getUseTranslator() && ($t = $this->getTranslator())) {
         if (is_string($label) && !empty($label)) {
             $label = $t->translate($label);
         }
         if (is_string($title) && !empty($title)) {
             $title = $t->translate($title);
         }
     }
     $hasChilds = false;
     if (!$endOfTree) {
         foreach ($page->getPages() as $child) {
             if ($child->isVisible()) {
                 $hasChilds = true;
                 break;
             }
         }
     }
     $class = $page->getClass();
     $dataToggle = '';
     $dropdown = false;
     if ($hasChilds) {
         if ($class != '') {
             $class .= ' ';
         }
         $class .= 'dropdown-toggle';
         $dataToggle = ' data-toggle="dropdown"';
         $dropdown = true;
     }
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $class);
     // does page have a href?
     if ($href = $page->getHref()) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
         $attribs['accesskey'] = $page->getAccessKey();
     } else {
         $element = 'span';
     }
     return '<' . $element . $this->_htmlAttribs($attribs) . '' . $dataToggle . '>' . $this->view->escape($label) . ($dropdown ? ' <b class="caret"></b>' : '') . '</' . $element . '>';
 }
 /**
  * Returns an HTML string containing an 'a' element for the given page if
  * the page's href is not empty, and a 'span' element if it is empty
  *
  * Overrides {@link Zend_View_Helper_Navigation_Abstract::htmlify()}.
  *
  * @param  Zend_Navigation_Page $page  page to generate HTML for
  * @return string                      HTML string for the given page
  */
 public function htmlify(Zend_Navigation_Page $page, $endOfTree = false)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     // translate label and title?
     if ($this->getUseTranslator() && ($t = $this->getTranslator())) {
         if (is_string($label) && !empty($label)) {
             $label = $t->translate($label);
         }
         if (is_string($title) && !empty($title)) {
             $title = $t->translate($title);
         }
     }
     $hasChilds = false;
     if (!$endOfTree) {
         foreach ($page->getPages() as $child) {
             if ($child->isVisible()) {
                 $hasChilds = true;
                 break;
             }
         }
     }
     $class = $page->getClass();
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $class);
     // does page have a href?
     if ($href = $page->getHref()) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
         $attribs['accesskey'] = $page->getAccessKey();
     } else {
         $element = 'span';
     }
     if ($page->icon !== null) {
         if ($page->isActive()) {
             $page->icon = 'icon-white ' . $page->icon;
         }
     }
     return '<' . $element . $this->_htmlAttribs($attribs) . '>' . ($page->icon !== null ? '<i class="' . $page->icon . '"></i> ' : '') . $this->view->escape($label) . '</' . $element . '>';
 }