/** * 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 ''; } }
/** * 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; } }