From 27a48ae84a5452ad74f610c4c039b043fc12d20d Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 20 Sep 2018 21:32:47 -0400 Subject: [PATCH] [highlightjs] Use new 'head'/'footer' hooks - Create separate addon javascript file - Register stylesheet and Javascript files --- highlightjs/highlightjs.js | 6 ++++++ highlightjs/highlightjs.php | 36 ++++++++++++------------------------ 2 files changed, 18 insertions(+), 24 deletions(-) create mode 100644 highlightjs/highlightjs.js diff --git a/highlightjs/highlightjs.js b/highlightjs/highlightjs.js new file mode 100644 index 00000000..b198c705 --- /dev/null +++ b/highlightjs/highlightjs.js @@ -0,0 +1,6 @@ +hljs.initHighlightingOnLoad(); + +document.addEventListener('postprocess_liveupdate', function () { + var blocks = document.querySelectorAll('pre code:not(.hljs)'); + Array.prototype.forEach.call(blocks, hljs.highlightBlock); +}); diff --git a/highlightjs/highlightjs.php b/highlightjs/highlightjs.php index e8b5fe01..8d05453b 100644 --- a/highlightjs/highlightjs.php +++ b/highlightjs/highlightjs.php @@ -11,41 +11,29 @@ use Friendica\Core\Addon; function highlightjs_install() { - Addon::registerHook('page_end', __FILE__, 'highlightjs_page_end'); + Addon::registerHook('head' , __FILE__, 'highlightjs_head'); + Addon::registerHook('footer', __FILE__, 'highlightjs_footer'); } function highlightjs_uninstall() { - Addon::unregisterHook('page_end', __FILE__, 'highlightjs_page_end'); + Addon::unregisterHook('head' , __FILE__, 'highlightjs_head'); + Addon::unregisterHook('footer', __FILE__, 'highlightjs_footer'); } -function highlightjs_page_end(App $a, &$b) +function highlightjs_head(App $a, &$b) { - $basedir = $a->get_baseurl() . '/addon/highlightjs/asset'; - if ($a->getCurrentTheme() == 'frio') { $style = 'bootstrap'; } else { $style = 'default'; } - $a->page['htmlhead'] .= <<< HTML - - - -HTML; - - $b .= <<< HTML - - - - -HTML; + $a->registerStylesheet(__DIR__ . '/asset/styles/' . $style . '.css'); +} + +function highlightjs_footer(App $a, &$b) +{ + $a->registerFooterScript(__DIR__ . '/asset/highlight.pack.js'); + $a->registerFooterScript(__DIR__ . '/highlightjs.js'); }