/** * 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; }
/** * 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; }
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; }
/** * @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 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; }
/** * 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>'; }
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; }
/** * 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; }
/** * 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 * @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; }
/** * 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 . '>'; }
/** * {@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; }
/** * {@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; }
/** * 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; }
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; }
/** * 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>'; }
/** * 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; }
/** * 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; }
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 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>'; }
/** * 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; }
/** * 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; }
/** * 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(); }