xref: /plugin/mikioplugin/action.php (revision 91d1557bf464495a6f6eda7f02431cd65795de0a)
117e6d639SJames Collins<?php
217e6d639SJames Collins/**
317e6d639SJames Collins * Mikio Plugin
417e6d639SJames Collins *
53deaf3a5SJames Collins * @version    1.0
63deaf3a5SJames Collins * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
717e6d639SJames Collins * @author     James Collins <james.collins@outlook.com.au>
817e6d639SJames Collins */
917e6d639SJames Collins
1017e6d639SJames Collinsif(!defined('DOKU_INC')) die();
1117e6d639SJames Collins
127935713eSJames Collinsrequire_once('icons/icons.php');
137935713eSJames Collins
14dc121371SJames Collinsif(!function_exists('glob_recursive')) {
15dc121371SJames Collins  function glob_recursive($pattern, $flags = 0) {
16dc121371SJames Collins    $files = glob($pattern, $flags);
17dc121371SJames Collins    foreach(glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
18dc121371SJames Collins      $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
19dc121371SJames Collins    }
20dc121371SJames Collins    return $files;
21dc121371SJames Collins  }
22dc121371SJames Collins}
23dc121371SJames Collins
2417e6d639SJames Collinsclass action_plugin_mikioplugin extends DokuWiki_Action_Plugin {
2517e6d639SJames Collins
2617e6d639SJames Collins	public function register(Doku_Event_Handler $controller) {
2717e6d639SJames Collins		$controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_load');
2817e6d639SJames Collins	}
2917e6d639SJames Collins
3017e6d639SJames Collins	public function _load(Doku_Event $event, $param) {
3117e6d639SJames Collins		global $conf;
327935713eSJames Collins    global $MIKIO_ICONS;
333deaf3a5SJames Collins
34*91d1557bSJames Collins    $baseDir = str_replace('\\', '/', DOKU_BASE.'lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/');
353deaf3a5SJames Collins    $stylesheets = [];
36dc121371SJames Collins    $less = [];
373deaf3a5SJames Collins    $scripts = [];
383deaf3a5SJames Collins
397935713eSJames Collins    if(is_array($MIKIO_ICONS)) {
407935713eSJames Collins        $icons = Array();
417935713eSJames Collins        foreach($MIKIO_ICONS as $icon) {
427935713eSJames Collins            if(isset($icon['name']) && isset($icon['css']) && isset($icon['insert'])) {
437935713eSJames Collins                $icons[] = $icon;
443deaf3a5SJames Collins
457935713eSJames Collins                if($icon['css'] != '') {
467935713eSJames Collins                    if(strpos($icon['css'], '//') === FALSE) {
477935713eSJames Collins                        $stylesheets[] = $baseDir . 'icons/' . $icon['css'];
487935713eSJames Collins                    } else {
497935713eSJames Collins                        $stylesheets[] = $icon['css'];
5017e6d639SJames Collins                    }
5117e6d639SJames Collins                }
527935713eSJames Collins            }
537935713eSJames Collins        }
547935713eSJames Collins        $MIKIO_ICONS = $icons;
557935713eSJames Collins    } else {
567935713eSJames Collins        $MIKIO_ICONS = [];
577935713eSJames Collins    }
5817e6d639SJames Collins
59*91d1557bSJames Collins    $stylesList = glob_recursive(str_replace('\\', '/', 'lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/styles/*'));
60dc121371SJames Collins    if($stylesList !== FALSE) {
61dc121371SJames Collins      foreach($stylesList as $value) {
62dc121371SJames Collins        $filename = strtolower($value);
63dc121371SJames Collins        if(substr($filename, -5) == '.less' || substr($filename, -5) == '.css') {
64dc121371SJames Collins          $stylesheets[] = '/' . $filename;
65dc121371SJames Collins        }
66dc121371SJames Collins      }
67dc121371SJames Collins    }
68dc121371SJames Collins
69dc121371SJames Collins    $stylesheets = array_unique($stylesheets);
70dc121371SJames Collins
71dc121371SJames Collins    // css
723deaf3a5SJames Collins    foreach ($stylesheets as $style) {
73dc121371SJames Collins      if(strtolower(substr($style, -5)) == '.less') {
74dc121371SJames Collins        $less[] = $style;
75dc121371SJames Collins      } else {
763deaf3a5SJames Collins        array_unshift($event->data['link'], array(
773deaf3a5SJames Collins            'type' => 'text/css',
783deaf3a5SJames Collins            'rel'  => 'stylesheet',
793deaf3a5SJames Collins            'href' => $style
803deaf3a5SJames Collins        ));
813deaf3a5SJames Collins      }
82dc121371SJames Collins    }
8317e6d639SJames Collins
84dc121371SJames Collins    // less
85dc121371SJames Collins    array_unshift($less, '/assets/variables.less', '/assets/styles.less');
86dc121371SJames Collins
87dc121371SJames Collins    $lessSorted = [];
88dc121371SJames Collins    foreach($less as $key=>$value) {
89dc121371SJames Collins      if(substr(strtolower($value), -14) == 'variables.less') {
90dc121371SJames Collins        $lessSorted[] = $value;
91dc121371SJames Collins        unset($less[$key]);
92dc121371SJames Collins      }
93dc121371SJames Collins    }
94dc121371SJames Collins
95dc121371SJames Collins    $lessSorted = array_merge($lessSorted, $less);
96dc121371SJames Collins    $lessPath = implode(',', $lessSorted);
97dc121371SJames Collins
98dc121371SJames Collins    array_unshift($event->data['link'], array(
99dc121371SJames Collins      'type' => 'text/css',
100dc121371SJames Collins      'rel'  => 'stylesheet',
101dc121371SJames Collins      'href' => $baseDir . 'css.php?css=' . str_replace($baseDir, '', $lessPath)
102dc121371SJames Collins    ));
103dc121371SJames Collins
104dc121371SJames Collins    // js
1053deaf3a5SJames Collins    foreach ($scripts as $script) {
1063deaf3a5SJames Collins      $event->data['script'][] = array(
1073deaf3a5SJames Collins        'type'  => 'text/javascript',
1083deaf3a5SJames Collins        '_data' => '',
1093deaf3a5SJames Collins        'src'   => $script
1103deaf3a5SJames Collins      );
1113deaf3a5SJames Collins    }
1123deaf3a5SJames Collins  }
1133deaf3a5SJames Collins}