Beispiel #1
0
    /**
     * Returns in <help_book_page_comments> tag
     *
     * @param Element $element
     * @return string
     */
    function renderComments(Element $element)
    {
        list($disqus_account_id, $disqus_url_prefix, $disqus_identifier_prefix) = $this->getSettings();
        if ($disqus_account_id && $disqus_url_prefix) {
            if ($element instanceof BookPage) {
                $url = $disqus_url_prefix . '/books/' . $element->getBookName() . '/' . $element->getSlug() . '.html';
                $identifier = $disqus_identifier_prefix . '/books/' . $element->getBookName() . '/' . $element->getSlug();
            } elseif ($element instanceof WhatsNewArticle) {
                $url = $disqus_url_prefix . '/whats-new/' . $element->getShortName() . '.html';
                $identifier = $disqus_identifier_prefix . '/whats-new/' . $element->getShortName();
            } else {
                return '';
            }
            $title = var_export($element->getTitle(), true);
            return <<<EOS
<div id="disqus_thread"></div>
<script type="text/javascript">
  var disqus_shortname = "{$disqus_account_id}";
  var disqus_identifier = "{$identifier}";
  var disqus_title = {$title};
  var disqus_url = "{$url}";

  (function() {
    var dsq = document.createElement("script"); dsq.type = "text/javascript"; dsq.async = true;
    dsq.src = "//" + disqus_shortname + ".disqus.com/embed.js";
    (document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]).appendChild(dsq);
  })();
</script>
EOS;
        } else {
            return '';
        }
    }
Beispiel #2
0
 /**
  * Link to a help book page
  *
  * @param  array       $params
  * @param  string      $content
  * @param  Smarty      $smarty
  * @param  boolean     $repeat
  * @return string|null
  * @throws ParamRequiredError
  */
 public static function block_page($params, $content, &$smarty, &$repeat)
 {
     if ($repeat) {
         return null;
     }
     $name = isset($params['name']) && $params['name'] ? $params['name'] : null;
     if (empty($name)) {
         throw new ParamRequiredError('name');
     }
     $book_name = isset($params['book']) ? $params['book'] : null;
     $section = isset($params['section']) && $params['section'] ? '#s-' . Shade::slug($params['section']) : null;
     if (empty($book_name)) {
         if (self::$current_element instanceof Book) {
             $book_name = self::$current_element->getShortName();
         } elseif (self::$current_element instanceof BookPage) {
             $book_name = self::$current_element->getBookName();
         }
     }
     $book = $book_name ? self::getCurrentProject()->getBook($book_name) : null;
     if ($book instanceof Book) {
         $page = $book->getPage($name);
         if ($page instanceof BookPage) {
             $params['href'] = self::getBookPageUrl($book->getShortName(), $page->getShortName()) . $section;
             if (empty($params['class'])) {
                 $params['class'] = 'link_to_book_page';
             } else {
                 $params['class'] .= ' link_to_book_page';
             }
             $params['data-page-name'] = $page->getShortName();
             $params['data-book-name'] = $book->getShortName();
             return Shade::htmlTag('a', $params, $content);
         } else {
             $development_error_message = 'Page not found';
         }
     } else {
         $development_error_message = 'Book not found';
     }
     if (Shade::isTesting() && isset($development_error_message)) {
         return '<span style="color: red; border-bottom: 1px dotted red; cursor: help;" title="Invalid page link: ' . Shade::clean($development_error_message) . '">' . $content . '</span>';
     } else {
         return $content;
     }
 }