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 14*dc121371SJames Collinsif(!function_exists('glob_recursive')) { 15*dc121371SJames Collins function glob_recursive($pattern, $flags = 0) { 16*dc121371SJames Collins $files = glob($pattern, $flags); 17*dc121371SJames Collins foreach(glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) { 18*dc121371SJames Collins $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags)); 19*dc121371SJames Collins } 20*dc121371SJames Collins return $files; 21*dc121371SJames Collins } 22*dc121371SJames Collins} 23*dc121371SJames 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 343deaf3a5SJames Collins $baseDir = DOKU_BASE.'lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/'; 353deaf3a5SJames Collins $stylesheets = []; 36*dc121371SJames 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*dc121371SJames Collins $stylesList = glob_recursive('lib/plugins' . str_replace(dirname(dirname(__FILE__)), '', dirname(__FILE__)) . '/styles/*'); 60*dc121371SJames Collins if($stylesList !== FALSE) { 61*dc121371SJames Collins foreach($stylesList as $value) { 62*dc121371SJames Collins $filename = strtolower($value); 63*dc121371SJames Collins if(substr($filename, -5) == '.less' || substr($filename, -5) == '.css') { 64*dc121371SJames Collins $stylesheets[] = '/' . $filename; 65*dc121371SJames Collins } 66*dc121371SJames Collins } 67*dc121371SJames Collins } 68*dc121371SJames Collins 69*dc121371SJames Collins $stylesheets = array_unique($stylesheets); 70*dc121371SJames Collins 71*dc121371SJames Collins // css 723deaf3a5SJames Collins foreach ($stylesheets as $style) { 73*dc121371SJames Collins if(strtolower(substr($style, -5)) == '.less') { 74*dc121371SJames Collins $less[] = $style; 75*dc121371SJames 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 } 82*dc121371SJames Collins } 8317e6d639SJames Collins 84*dc121371SJames Collins // less 85*dc121371SJames Collins array_unshift($less, '/assets/variables.less', '/assets/styles.less'); 86*dc121371SJames Collins 87*dc121371SJames Collins $lessSorted = []; 88*dc121371SJames Collins foreach($less as $key=>$value) { 89*dc121371SJames Collins if(substr(strtolower($value), -14) == 'variables.less') { 90*dc121371SJames Collins $lessSorted[] = $value; 91*dc121371SJames Collins unset($less[$key]); 92*dc121371SJames Collins } 93*dc121371SJames Collins } 94*dc121371SJames Collins 95*dc121371SJames Collins $lessSorted = array_merge($lessSorted, $less); 96*dc121371SJames Collins $lessPath = implode(',', $lessSorted); 97*dc121371SJames Collins 98*dc121371SJames Collins array_unshift($event->data['link'], array( 99*dc121371SJames Collins 'type' => 'text/css', 100*dc121371SJames Collins 'rel' => 'stylesheet', 101*dc121371SJames Collins 'href' => $baseDir . 'css.php?css=' . str_replace($baseDir, '', $lessPath) 102*dc121371SJames Collins )); 103*dc121371SJames Collins 104*dc121371SJames 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}