]> git.mxchange.org Git - friendica-addons.git/blob - highlightjs/highlightjs.php
e8b5fe019bf04b49623b6ea3c6548df6ce433897
[friendica-addons.git] / highlightjs / highlightjs.php
1 <?php
2 /**
3  * Name: Syntax Highlighting
4  * Description: Highlights syntax of code blocks with highlight.js
5  * Version: 1.0
6  * Author: Hypolite Petovan <hypolite@mrpetovan.com>
7  */
8
9 use Friendica\App;
10 use Friendica\Core\Addon;
11
12 function highlightjs_install()
13 {
14         Addon::registerHook('page_end', __FILE__, 'highlightjs_page_end');
15 }
16
17 function highlightjs_uninstall()
18 {
19         Addon::unregisterHook('page_end', __FILE__, 'highlightjs_page_end');
20 }
21
22 function highlightjs_page_end(App $a, &$b)
23 {
24         $basedir = $a->get_baseurl() . '/addon/highlightjs/asset';
25
26         if ($a->getCurrentTheme() == 'frio') {
27                 $style = 'bootstrap';
28         } else {
29                 $style = 'default';
30         }
31
32         $a->page['htmlhead'] .= <<< HTML
33
34 <link rel="stylesheet" href="{$basedir}/styles/{$style}.css">
35
36 HTML;
37
38         $b .= <<< HTML
39
40 <script type="text/javascript" src="{$basedir}/highlight.pack.js"></script>
41 <script type="text/javascript">
42         hljs.initHighlightingOnLoad();
43
44         document.addEventListener('postprocess_liveupdate', function () {
45                 var blocks = document.querySelectorAll('pre code:not(.hljs)');
46                 Array.prototype.forEach.call(blocks, hljs.highlightBlock);
47         });
48 </script>
49
50 HTML;
51 }