/** * Returns an HTML string containing an 'a' element for the given page * * @param \Zend\Navigation\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 Zend\View\Helper\Navigation\AbstractHelper::htmlify()}. * * @param \Zend\Navigation\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? if ($href = $page->getHref()) { $element = 'a'; $attribs['href'] = $href; $attribs['target'] = $page->getTarget(); } else { $element = 'span'; } return '<' . $element . $this->_htmlAttribs($attribs) . '>' . $this->view->escape($label) . '</' . $element . '>'; }
/** * Returns an escaped absolute URL for the given page * * @param \Zend\Navigation\AbstractPage $page page to get URL from * @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 $curDoc = $this->view->url(); $curDoc = '/' == $curDoc ? '' : trim($curDoc, '/'); $url = rtrim($this->getServerUrl(), '/') . '/' . $curDoc . (empty($curDoc) ? '' : '/') . $href; } return $this->_xmlEscape($url); }
/** * Renders the given $page as a link element, with $attrib = $relation * * @param \Zend\Navigation\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 rendered link element * @throws \Zend\View\Exception if $attrib is invalid */ public function renderLink(AbstractPage $page, $attrib, $relation) { if (!in_array($attrib, array('rel', 'rev'))) { $e = new View\Exception(sprintf( 'Invalid relation attribute "%s", must be "rel" or "rev"', $attrib)); $e->setView($this->view); throw $e; } 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(); }