public function htmlifyLabel(AbstractPage $page)
 {
     $label = $this->translate($page->getLabel(), $page->getTextDomain());
     /** @var \Zend\View\Helper\EscapeHtml $escaper */
     $escaper = $this->view->plugin('escapeHtml');
     $label = $escaper($label);
     if (isset($page->icon)) {
         $attribs = array('class' => 'fa fa-' . $page->icon);
         $label = '<i ' . $this->htmlAttribs($attribs) . '></i> ' . $label;
     }
     return $label;
 }
Beispiel #2
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>';
 }
 /**
  * Returns an HTML string of page label with icon support.
  *
  * @param  AbstractPage $page page to generate HTML for
  * @param  bool $escapeLabel Whether or not to escape the label
  * @return string
  */
 public function htmlifyLabel(AbstractPage $page, $escapeLabel = true, $isTreeView = false)
 {
     $label = $this->translate($page->getLabel(), $page->getTextDomain());
     if ($escapeLabel) {
         /** @var \Zend\View\Helper\EscapeHtml $escaper */
         $escaper = $this->view->plugin('escapeHtml');
         $label = $escaper($label);
     }
     $label = '<span>' . $label . '</span>';
     if (isset($page->icon)) {
         $attribs = array('class' => 'fa fa-' . $page->icon);
         $label = '<i ' . $this->htmlAttribs($attribs) . '></i> ' . $label;
     }
     if ($isTreeView) {
         $label .= '<i class="fa fa-angle-left pull-right"></i>';
     }
     return $label;
 }
Beispiel #4
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;
 }
 /**
  * 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 = ['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 #6
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 #7
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 #8
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 #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;
 }