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}