/**
  * Returns an HTML string containing an 'a' element for the given page
  *
  * @param  AbstractPage $page  page to generate HTML for
  * @param  boolean      $hasParent if the breadcrumb has a parent
  * @return string
  */
 public function htmlify(AbstractPage $page, $hasParent = false)
 {
     $html = '<li';
     if (!$hasParent) {
         $html .= ' class="active"';
     }
     $html .= '>';
     $label = $page->getLabel();
     if (null !== ($translator = $this->getTranslator())) {
         $label = $translator->translate($label, $this->getTranslatorTextDomain());
     }
     $escaper = $this->view->plugin('escapeHtml');
     $label = $escaper($label);
     if ($page->getHref() && ($hasParent || !$hasParent && $this->getLinkLast())) {
         $anchorAttribs = $this->htmlAttribs(array('href' => $page->getHref()));
         $html .= '<a' . $anchorAttribs . '>' . $label . '</a>';
     } else {
         $html .= $label;
     }
     if ($hasParent) {
         $html .= '<span class="divider">' . $this->getSeparator() . '</span>';
     }
     $html .= '</li>';
     return $html;
 }
 /**
  * @inheritdoc
  */
 public function htmlify(AbstractPage $page)
 {
     $title = $this->translate($page->getTitle(), $page->getTextDomain());
     // get attribs for anchor element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $page->getClass(), 'href' => $page->getHref(), 'target' => $page->getTarget());
     return '<a' . $this->htmlAttribs($attribs) . '>' . $this->htmlifyLabel($page) . '</a>';
 }
 /**
  * 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 AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page               page to generate HTML for
  * @param  bool         $escapeLabel        Whether or not to escape the label
  * @param  bool         $addClassToListItem Whether or not to add the page class to the list item
  * @return string
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $page->getTitle());
     if ($addClassToListItem === false) {
         $attribs['class'] = $page->getClass();
     }
     // does page have a href?
     $href = $page->getHref();
     if ('#' !== $href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     $label = $page->getLabel();
     //$this->translate(, $page->getTextDomain());
     if ($escapeLabel === true) {
         /** @var \Zend\View\Helper\EscapeHtml $escaper */
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #4
0
 /**
  * @override htmlify from the parent/base/super class
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     // !!! This method will be executed in the namespace of the class
     // !!! But the methods of the super/base class will be executed in its own namespace
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     // translate label and title?
     if (null !== ($translator = $this->getTranslator())) {
         $textDomain = $this->getTranslatorTextDomain();
         if (is_string($label) && !empty($label)) {
             $label = $translator->translate($label, $textDomain);
         }
         if (is_string($title) && !empty($title)) {
             $title = $translator->translate($title, $textDomain);
         }
     }
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $title);
     $attribs['class'] = '';
     if ($addClassToListItem === false) {
         $attribs['class'] = $page->getClass();
     }
     // Stoyan
     $attribs['class'] .= $attribs['class'] ? ' ' : '';
     $attribs['class'] .= $page->getAnchorClass();
     //		echo 'Menu<pre>';
     //		echo 'Class: ' . $page->getClass();
     //		echo 'Anchor Class: ' . $page->getAnchorClass();
     //		print_r($attribs);
     //		echo '</pre>';
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     if ($escapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
 /**
  * Returns an HTML string containing an 'a' element for the given page
  *
  * @param  AbstractPage $page  page to generate HTML for
  * @return string
  */
 public function htmlify(AbstractPage $page)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     if (null !== ($translator = $this->getTranslator())) {
         $textDomain = $this->getTranslatorTextDomain();
         if (is_string($label) && !empty($label)) {
             $label = $translator->translate($label, $textDomain);
         }
         if (is_string($title) && !empty($title)) {
             $title = $translator->translate($title, $textDomain);
         }
     }
     // get attribs for anchor element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $page->getClass(), 'href' => $page->getHref(), 'target' => $page->getTarget());
     $escaper = $this->view->plugin('escapeHtml');
     return '<a' . $this->htmlAttribs($attribs) . '>' . $escaper($label) . '</a>';
 }
 /**
  * @inheritdoc
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false, $isTreeView = false)
 {
     // get attribs for element
     $attribs = ['id' => $page->getId(), 'title' => $this->translate($page->getTitle(), $page->getTextDomain())];
     if ($addClassToListItem === false) {
         $attribs['class'] = $page->getClass();
     }
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     return '<' . $element . $this->htmlAttribs($attribs) . '>' . $this->htmlifyLabel($page, $escapeLabel, $isTreeView) . '</' . $element . '>';
 }
Beispiel #7
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 AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page               page to generate HTML for
  * @param  bool         $escapeLabel        Whether or not to escape the label
  * @param  bool         $addClassToListItem Whether or not to add the page class to the list item
  * @return string
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     // translate label and title?
     if (null !== ($translator = $this->getTranslator())) {
         $textDomain = $this->getTranslatorTextDomain();
         if (is_string($label) && !empty($label)) {
             $label = $translator->translate($label, $textDomain);
         }
         if (is_string($title) && !empty($title)) {
             $title = $translator->translate($title, $textDomain);
         }
     }
     // get attribs for element
     $element = 'a';
     $extended = '';
     $attribs = array('id' => $page->getId(), 'title' => $title, 'href' => '#');
     $class = array();
     if ($addClassToListItem === false) {
         $class[] = $page->getClass();
     }
     if ($page->isDropdown) {
         $attribs['data-toggle'] = 'dropdown';
         $class[] = 'dropdown-toggle';
         $extended = ' <b class="caret"></b>';
     }
     if (count($class) > 0) {
         $attribs['class'] = implode(' ', $class);
     }
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     if ($escapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     $html .= $extended;
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #8
0
 public function renderNavbar(\Zend\Navigation\Navigation $container = null, $leftElements = null, $rightElements = null, \Zend\Navigation\Page\AbstractPage $brandLink = null, $brandName = null, $fixed = true, $fixedBottom = false, $responsive = true, $renderIcons = true, $inverse = false)
 {
     if (null === $container) {
         $container = $this->getContainer();
     }
     if ($leftElements && !is_array($leftElements)) {
         $leftElements = array($leftElements);
     }
     if ($rightElements && !is_array($rightElements)) {
         $rightElements = array($rightElements);
     }
     $html = '';
     //Navbar scaffolding
     $navbarClass = 'navbar';
     if ($fixed) {
         if ($fixedBottom) {
             $navbarClass .= ' navbar-fixed-bottom';
         } else {
             $navbarClass .= ' navbar-fixed-top';
         }
     }
     if ($inverse) {
         $navbarClass .= ' navbar-inverse';
     }
     $html .= '<div class="' . $navbarClass . '">';
     $html .= "\n" . '<div class="navbar-inner">';
     $html .= "\n" . '<div class="container">';
     //Responsive (button)
     if ($responsive) {
         $html .= "\n" . '<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">';
         $html .= "\n" . '<span class="icon-bar"></span>';
         $html .= "\n" . '<span class="icon-bar"></span>';
         $html .= "\n" . '<span class="icon-bar"></span>';
         $html .= "\n" . '</a>';
     }
     //Brand
     if ($brandLink) {
         $view = $this->getView();
         if ($brandName) {
             $brandName = $view->escapeHtml($brandName);
         } else {
             $brandName = $view->escapeHtml($brandLink->getLabel());
         }
         $html .= "\n" . '<a class="brand" href="' . $brandLink->getHref() . '">' . $brandName . '</a>';
     }
     //Responsive (div)
     if ($responsive) {
         $html .= "\n" . '<div class="nav-collapse">';
     }
     //Primary container
     $options = array('align' => null, 'ulClass' => 'nav');
     $html .= "\n" . $this->renderContainer($container, $renderIcons, true, $options);
     //Left elements
     if ($leftElements) {
         $html .= "\n" . $this->renderElements($leftElements, 'left', $renderIcons);
     }
     //Right elements
     if ($rightElements) {
         $html .= "\n" . $this->renderElements($rightElements, 'right', $renderIcons);
     }
     //Responsive (close div)
     if ($responsive) {
         $html .= "\n" . '</div>';
     }
     //Scaffolding (close divs)
     $html .= "\n</div>";
     $html .= "\n</div>";
     $html .= "\n</div>";
     return $html;
 }
Beispiel #9
0
 /**
  * {@inheritDoc}
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     $renderer = $this->getView();
     if ($partial = $page->get('partial')) {
         return $renderer->partial($partial, compact('page', 'escapeLabel', 'addClassToListItem'));
     }
     // get attribs for element
     $attribs = ['id' => $page->getId()];
     if ($title = $page->getTitle()) {
         $attribs['title'] = $this->translate($title, $page->getTextDomain());
     }
     if ($pageAttribs = $page->get('attribs')) {
         $attribs = array_merge($pageAttribs, $attribs);
     }
     if ($addClassToListItem === false) {
         if (!empty($attribs['class'])) {
             $attribs['class'] .= " {$page->getClass()}";
         } else {
             $attribs['class'] = $page->getClass();
         }
     }
     if (($label = $page->get('label_helper')) && ($helper = $this->view->plugin($label))) {
         if (method_exists($helper, 'setTranslatorTextDomain')) {
             $helper->setTranslatorTextDomain($page->getTextDomain());
         }
         $label = $helper();
     } elseif ($label = $page->getLabel()) {
         $label = $this->translate($label, $page->getTextDomain());
     }
     $html = '';
     if ($label) {
         if ($escapeLabel === true) {
             /* @var $escaper \Zend\View\Helper\EscapeHtml */
             $escaper = $this->view->plugin('escapeHtml');
             $html .= $escaper($label);
         } else {
             $html .= $label;
         }
     }
     $params = $replacedParams = $page->get('params');
     if ($placeholders = $page->get('link_placeholders')) {
         foreach ($placeholders as $name => $value) {
             if (!isset($replacedParams[$name])) {
                 $replacedParams[$name] = $value;
             }
         }
     }
     if ($replacedParams && ($placeholders = $this->getLinkPlaceholders())) {
         foreach ($replacedParams as $name => $value) {
             if (isset($placeholders[$value])) {
                 $replacedParams[$name] = $placeholders[$value];
             }
         }
     }
     $page->set('params', $replacedParams);
     // does page have a href
     if ($href = $page->getHref()) {
         $element = 'a';
         $attribs['href'] = $page->get('uri') ?: $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $page->set('params', $params);
     if ($ns = $page->get($this->decoratorNamespace)) {
         $html = $renderer->decorator($html, $ns);
     }
     $html = "<{$element}{$this->htmlAttribs($attribs)}>{$html}</{$element}>";
     return $html;
 }
Beispiel #10
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 AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page page to generate HTML for
  * @param  bool $escapeLabel Whether or not to escape the label
  * @param  bool $addClassToListItem Whether or not to add the page class to the list item
  * @return string
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $addonLeft = $page->get('addon-left');
     $addonRight = $page->get('addon-right');
     $title = $page->getTitle();
     // translate label and title?
     if (null !== ($translator = $this->getTranslator())) {
         $textDomain = $this->getTranslatorTextDomain();
         if (is_string($label) && !empty($label)) {
             $label = $translator->translate($label, $textDomain);
         }
         if (is_string($title) && !empty($title)) {
             $title = $translator->translate($title, $textDomain);
         }
     }
     // get attribs for element
     $attribs = ['id' => $page->getId(), 'title' => $title];
     // add additional attributes
     $attr = $page->get('attribs');
     if (is_array($attr)) {
         $attribs = $attribs + $attr;
     }
     //if ($addClassToListItem === false) {
     $attribs['class'] = $page->getClass();
     //}
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     if ($addonLeft) {
         $html .= $addonLeft;
     }
     if ($escapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     if ($addonRight) {
         $html .= $addonRight;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #11
0
 /**
  * Returns an HTML string containing an 'a' element for the given page
  *
  * @param  AbstractPage $page  page to generate HTML for
  * @return string              HTML string (<a href="…">Label</a>)
  */
 public function htmlify(AbstractPage $page)
 {
     $label = $this->translate($page->getLabel(), $page->getTextDomain());
     $title = $this->translate($page->getTitle(), $page->getTextDomain());
     // get attribs for anchor element
     $attribs = ['id' => $page->getId(), 'title' => $title, 'class' => $page->getClass(), 'href' => $page->getHref(), 'target' => $page->getTarget()];
     /** @var \Zend\View\Helper\EscapeHtml $escaper */
     $escaper = $this->view->plugin('escapeHtml');
     $label = $escaper($label);
     return '<a' . $this->htmlAttribs($attribs) . '>' . $label . '</a>';
 }
Beispiel #12
0
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     if ($page instanceof \Zend\Navigation\Page\Uri && $page->dropdown) {
         $dropdown = '<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">';
         $dropdown .= $this->translate($page->getLabel(), $page->getTextDomain());
         $dropdown .= ' <span class="caret"></span></a>' . PHP_EOL;
         return $dropdown;
     }
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $this->translate($page->getTitle(), $page->getTextDomain()));
     if ($addClassToListItem === false) {
         $attribs['class'] = $page->getClass();
     }
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     $label = $this->translate($page->getLabel(), $page->getTextDomain());
     if ($escapeLabel === true) {
         /** @var \Zend\View\Helper\EscapeHtml $escaper */
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #13
0
 /**
  * {@inheritDoc}
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true)
 {
     $renderer = $this->getView();
     if ($partial = $page->get('partial')) {
         return $renderer->partial($partial, compact('page', 'escapeLabel'));
     }
     // get attribs for element
     $attribs = ['id' => $page->getId()];
     if (!$this->getRenderAsList() && ($class = $this->getContainerClass())) {
         $attribs['class'] = $class;
     }
     if ($title = $page->getTitle()) {
         $attribs['title'] = $title = $this->translate($title, $page->getTextDomain());
     }
     $html = '';
     if ($label = $page->getLabel()) {
         $label = $this->translate($label, $page->getTextDomain());
         if ($escapeLabel === true) {
             /* @var $escaper \Zend\View\Helper\EscapeHtml */
             $escaper = $this->view->plugin('escapeHtml');
             $html .= $escaper($title ?: $label);
         } else {
             $html .= $title ?: $label;
         }
     }
     // does page have a href
     if ($href = $page->getHref()) {
         $element = 'a';
         $attribs['href'] = $page->get('uri') ?: $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $html = "<{$element}{$this->htmlAttribs($attribs)}>{$html}</{$element}>";
     return $html;
 }
Beispiel #14
0
 /**
  * Returns an HTML string containing an 'a' element for the given page
  *
  * @param  AbstractPage $page  page to generate HTML for
  * @return string                      HTML string for the given page
  */
 public function htmlify(AbstractPage $page)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     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);
         }
     }
     // get attribs for anchor element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $page->getClass(), 'href' => $page->getHref(), 'target' => $page->getTarget());
     return '<a' . $this->_htmlAttribs($attribs) . '>' . $this->view->vars()->escape($label) . '</a>';
 }
Beispiel #15
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 AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page               page to generate HTML for
  * @param  bool         $escapeLabel        Whether or not to escape the label
  * @param  bool         $addClassToListItem Whether or not to add the page class to the list item
  * @return string
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false)
 {
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $this->translate($page->getTitle(), $page->getTextDomain()));
     if ($addClassToListItem === false) {
         $attribs['class'] = $page->getClass();
     }
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     if ($page->isDropdown) {
         $attribs['data-toggle'] = 'dropdown';
         $class[] = 'dropdown-toggle';
         $innerHtml = ' <b class="caret"></b>';
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     // Icon
     $icon = $page->get('icon');
     if (!empty($icon)) {
         $html .= '<i class="' . $icon . '"></i>';
     }
     $label = $this->translate($page->getLabel(), $page->getTextDomain());
     if ($escapeLabel === true) {
         /** @var \Zend\View\Helper\EscapeHtml $escaper */
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     if (isset($innerHtml)) {
         $html .= $innerHtml;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #16
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 AbstractHelper::htmlify()}.
  *
  * @param AbstractPage $page               page to generate HTML for
  * @param bool         $escapeLabel        Whether or not to escape the label
  * @param bool         $addClassToListItem Whether or not to add the page class to the list item
  *
  * @return string
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false, $isActive = false)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     //translates label and title
     $this->translateLabelAndTitle($label, $title);
     // get attribs for element
     $element = 'a';
     $extended = '';
     $attribs = array('id' => $page->getId(), 'title' => $title, 'href' => '#');
     $class = array();
     if ($addClassToListItem === false) {
         $class[] = $page->getClass();
     }
     if ($page->isDropdown) {
         $attribs['data-toggle'] = 'dropdown-toggle';
         $class[] = 'hassub';
     }
     if ($isActive) {
         $class[] = 'selected';
     }
     if (count($class) > 0) {
         $attribs['class'] = implode(' ', $class);
     }
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     if ($escapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     $html .= $extended;
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #17
0
 public function htmlify(AbstractPage $oPage, $bEscapeLabel = true, $bAddClassToItemList = false)
 {
     //get label and title for translating
     $sLabel = $oPage->getLabel();
     $sTitle = $oPage->getTitle();
     //translate label and title?
     if (null !== ($oTranslator = $this->getTranslator())) {
         $sTextDomain = $this->getTranslatorTextDomain();
         if (is_string($sLabel) && !empty($sLabel)) {
             $sLabel = $oTranslator->translate($sLabel, $sTextDomain);
         }
         if (is_string($sTitle) && !empty($sTitle)) {
             $sTitle = $oTranslator->translate($sTitle, $sTextDomain);
         }
     }
     //get attribs for element
     $aAttribs = array('id' => $oPage->getId(), 'title' => $sTitle);
     $aAttr = $oPage->get('attribs');
     if (is_array($aAttr)) {
         $aAttribs = $aAttribs + $aAttr;
     }
     //does page have a href?
     $sHref = $oPage->getHref();
     if ($sHref) {
         $sElement = 'a';
         $aAttribs['href'] = $sHref;
         $aAttribs['target'] = $oPage->getTarget();
     } else {
         $sElement = 'span';
     }
     $sHtml = '<' . $sElement . $this->htmlAttribs($aAttribs) . '>';
     if ($bEscapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         $sHtml .= $escaper($sLabel);
     } else {
         $sHtml .= $sLabel;
     }
     $sHtml .= '</' . $sElement . '>';
     return $sHtml;
 }
 /**
  * Returns an HTML string containing an 'a' element for the given page
  * @param \Zend\Navigation\Page\AbstractPage $page
  * @param bool $renderIcons
  * @param bool $activeIconInverse
  * @return string
  */
 public function htmlifyA(\Zend\Navigation\Page\AbstractPage $page, $renderIcons = true, $activeIconInverse = true)
 {
     // get label and title for translating
     $label = $this->translate($page->getLabel());
     $title = $this->translate($page->getTitle());
     $escaper = $this->view->plugin('escapeHtml');
     //Get attribs for anchor element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $page->getClass(), 'href' => $page->getHref(), 'target' => $page->getTarget());
     if ($renderIcons) {
         $iconHtml = $this->htmlifyIcon($page, $activeIconInverse);
     } else {
         $iconHtml = '';
     }
     $html = '<a' . $this->htmlAttribs($attribs) . '>' . $iconHtml . $escaper($label) . '</a>';
     return $html;
 }
Beispiel #19
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 AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page   page to generate HTML for
  * @param bool $escapeLabel     Whether or not to escape the label
  * @return string               HTML string for the given page
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     // translate label and title?
     if (null !== ($translator = $this->getTranslator())) {
         $textDomain = $this->getTranslatorTextDomain();
         if (is_string($label) && !empty($label)) {
             $label = $translator->translate($label, $textDomain);
         }
         if (is_string($title) && !empty($title)) {
             $title = $translator->translate($title, $textDomain);
         }
     }
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $page->getClass());
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . '>';
     if ($escapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         $html .= $escaper($label);
     } else {
         $html .= $label;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
 /**
  * Copy from Zend helper menu
  * @see \Zend\View\Helper\Navigation\Menu::htmlify()
  */
 public function htmlify(AbstractPage $page, $escapeLabel = false, $addClassToListItem = false)
 {
     // get label and title for translating
     $label = $page->getLabel();
     $title = $page->getTitle();
     // translate label and title?
     if (null !== ($translator = $this->getTranslator())) {
         $textDomain = $this->getTranslatorTextDomain();
         if (is_string($label) && !empty($label)) {
             $label = $translator->translate($label, $textDomain);
         }
         if (is_string($title) && !empty($title)) {
             $title = $translator->translate($title, $textDomain);
         }
     }
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $title);
     if ($addClassToListItem === false) {
         $attribs['class'] = $page->getClass();
     }
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
         if (true == ($aClass = $page->get('aClass'))) {
             $addClass = isset($attribs['class']) ? ' ' . $attribs['class'] : '';
             $attribs['class'] = $aClass . $addClass;
             $addClass = '';
         }
         if (true == ($subIdent = $page->get('listSubIdent'))) {
             $addClass = isset($attribs['class']) ? ' ' . $attribs['class'] : '';
             $attribs['class'] = isset($this->attr['linkClassDropdown']) ? $this->attr['linkClassDropdown'] . $addClass : $addClass;
             $attribs['data-ident'] = 'subIdent' . $subIdent;
         } elseif (0 == $this->depth) {
             $addClass = isset($attribs['class']) ? ' ' . $attribs['class'] : '';
             $attribs['class'] = isset($this->attr['linkClassDefault']) ? $this->attr['linkClassDefault'] . $addClass : $addClass;
         }
         if (true == ($aAttribute = $page->get('aAttribute'))) {
             $attribs = array_merge($attribs, $aAttribute);
         }
     } else {
         $element = 'span';
     }
     $aData = '';
     if (true == ($aData = $page->get('aData'))) {
         $aData = ' ' . $aData;
     }
     $html = '<' . $element . $this->htmlAttribs($attribs) . $aData . '>';
     if ($escapeLabel === true) {
         $escaper = $this->view->plugin('escapeHtml');
         //$html .= $escaper($label);
         $html .= $label;
     } else {
         $html .= $label;
     }
     if (true == ($aLabelExt = $page->get('aLabelExt'))) {
         $html .= $aLabelExt;
     }
     $html .= '</' . $element . '>';
     return $html;
 }
Beispiel #21
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 AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page  page to generate HTML for
  * @return string              HTML string for the given page
  */
 public function htmlify(AbstractPage $page)
 {
     // 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);
         }
     }
     // get attribs for element
     $attribs = array('id' => $page->getId(), 'title' => $title, 'class' => $page->getClass());
     // does page have a href?
     $href = $page->getHref();
     if ($href) {
         $element = 'a';
         $attribs['href'] = $href;
         $attribs['target'] = $page->getTarget();
     } else {
         $element = 'span';
     }
     $escaper = $this->view->plugin('escapeHtml');
     return '<' . $element . $this->_htmlAttribs($attribs) . '>' . $escaper($label) . '</' . $element . '>';
 }
Beispiel #22
0
 /**
  * Renders the given $page as a link element, with $attrib = $relation
  *
  * @param  AbstractPage $page     the page to render the link for
  * @param  string       $attrib   the attribute to use for $type,
  *                                either 'rel' or 'rev'
  * @param  string       $relation relation type, muse be one of;
  *                                alternate, appendix, bookmark,
  *                                chapter, contents, copyright,
  *                                glossary, help, home, index, next,
  *                                prev, section, start, stylesheet,
  *                                subsection
  * @return string
  * @throws Exception\DomainException
  */
 public function renderLink(AbstractPage $page, $attrib, $relation)
 {
     if (!in_array($attrib, array('rel', 'rev'))) {
         throw new Exception\DomainException(sprintf('Invalid relation attribute "%s", must be "rel" or "rev"', $attrib));
     }
     if (!($href = $page->getHref())) {
         return '';
     }
     // TODO: add more attribs
     // http://www.w3.org/TR/html401/struct/links.html#h-12.2
     $attribs = array($attrib => $relation, 'href' => $href, 'title' => $page->getLabel());
     return '<link' . $this->htmlAttribs($attribs) . $this->getClosingBracket();
 }
Beispiel #23
0
 /**
  * Returns an escaped absolute URL for the given page
  *
  * @param  AbstractPage $page
  * @return string
  */
 public function url(AbstractPage $page)
 {
     $href = $page->getHref();
     if (!isset($href[0])) {
         // no href
         return '';
     } elseif ($href[0] == '/') {
         // href is relative to root; use serverUrl helper
         $url = $this->getServerUrl() . $href;
     } elseif (preg_match('/^[a-z]+:/im', (string) $href)) {
         // scheme is given in href; assume absolute URL already
         $url = (string) $href;
     } else {
         // href is relative to current document; use url helpers
         $basePathHelper = $this->getView()->plugin('basepath');
         $curDoc = $basePathHelper();
         $curDoc = '/' == $curDoc ? '' : trim($curDoc, '/');
         $url = rtrim($this->getServerUrl(), '/') . '/' . $curDoc . (empty($curDoc) ? '' : '/') . $href;
     }
     if (!in_array($url, $this->urls)) {
         $this->urls[] = $url;
         return $this->xmlEscape($url);
     }
     return null;
 }
Beispiel #24
0
 /**
  * This is a rewrite of the parent classes version that should be mostly compatable
  * while adding functionality for Twitter Bootstrap.
  * 
  * Returns an HTML string containing an 'a' element for the given page.
  *
  * Overrides {@link AbstractHelper::htmlify()}.
  *
  * @param  AbstractPage $page               page to generate HTML for
  * @param  bool         $escapeLabel        Whether or not to escape the label
  * @param  bool         $addClassToListItem Whether or not to add the page class to the list item
  * @return string
  */
 public function htmlify(AbstractPage $page, $escapeLabel = true, $addClassToListItem = false, $attribs = array())
 {
     // Set attributes
     $pageAttribs = array('id' => $page->getId(), 'title' => $this->translate($page->getTitle(), $page->getTextDomain()));
     if ($addClassToListItem === false) {
         if (key_exists('class', $attribs)) {
             $attribs['class'] .= ' ' . $page->getClass();
         } else {
             $pageAttribs['class'] = $page->getClass();
         }
     }
     if ($page->getHref()) {
         $pageAttribs['href'] = $page->getHref();
         $pageAttribs['target'] = $page->getTarget();
     } else {
         $pageAttribs['href'] = "#";
     }
     // Merge attributes from the page with passed attributs
     // if two attributes conflict, passed attributes should win.
     $attribs = array_merge($pageAttribs, $attribs);
     // Convert attributes array into a string of HTML/XML attributes
     $attributesString = "";
     foreach ($attribs as $key => $value) {
         if (!($value === null || is_string($value) && !strlen($value))) {
             $attributesString .= "{$key}='{$value}' ";
         }
     }
     // Set Label
     $label = $this->translate($page->getLabel(), $page->getTextDomain());
     if ($escapeLabel === true) {
         /** @var \Zend\View\Helper\EscapeHtml $escaper */
         $escaper = $this->view->plugin('escapeHtml');
         $label = $escaper($label);
     }
     $html = "<a {$attributesString}>{$label}</a>";
     return $html;
 }