Exemple #1
0
 /**
  * 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>';
 }
Exemple #2
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\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 . '>';
 }
Exemple #3
0
 /**
  * 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);
 }
Exemple #4
0
    /**
     * 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();
    }