diff --git a/inc/html.php b/inc/html.php index 443409f05e040f3ec5b440772e1e76ca6a6ccfc8..4f729aa9816995d2ee4698ca2e1f16798785dacd 100644 --- a/inc/html.php +++ b/inc/html.php @@ -2073,7 +2073,8 @@ function html_admin(){ $menu[$p] = array('plugin' => $p, 'prompt' => $obj->getMenuText($conf['lang']), - 'sort' => $obj->getMenuSort() + 'icon' => $obj->getMenuIconSvgOnly(), + 'sort' => $obj->getMenuSort(), ); } @@ -2171,10 +2172,20 @@ function html_admin(){ // output the menu ptln('<div class="clearer"></div>'); print p_locale_xhtml('adminplugins'); - ptln('<ul>'); + ptln('<ul class="admin_plugins icon">'); foreach ($menu as $item) { if (!$item['prompt']) continue; - ptln(' <li><div class="li"><a href="'.wl($ID, 'do=admin&page='.$item['plugin']).'">'.$item['prompt'].'</a></div></li>'); + ptln('<li><div class="li admin_plugin_container">'); + ptln('<div class="admin_plugin_icon">'); + //add icon to the item, in case of being specified + if(strlen($item['icon']) > 0){ + ptln('<img src="'.$item['icon'].'" alt="admin_icon_'.hsc($item['prompt']).'"></img>'); + } + ptln('</div>'); + ptln('<div class="admin_plugin_name"><a href="'.wl($ID, 'do=admin&page='.$item['plugin']).'">'); + ptln($item['prompt']); + ptln('</a></div>'); + ptln('</div></li>'); } ptln('</ul>'); } diff --git a/lib/plugins/admin.php b/lib/plugins/admin.php index 39dece4536bb113bd02fa79f9f623e21b858ba16..fd849bd387ca213f492dc38f530191c50690e60c 100644 --- a/lib/plugins/admin.php +++ b/lib/plugins/admin.php @@ -30,6 +30,36 @@ class DokuWiki_Admin_Plugin extends DokuWiki_Plugin { return $menutext; } + /** + * Return the path to the icon being displayed in the main admin menu. + * Default means, there won't be any icon. + * (Override this function for setting another image) + * + * CAUTION: + * Only svg-files are allowed + * + */ + public function getMenuIcon(){ + return ''; + } + + /** + * Return the path to the icon being displayed in the main admin menu. + * In case of file mime-type not being SVG, an empty string will be returned. + * @return string menu icon url or empty + */ + public function getMenuIconSvgOnly(){ + $returnValue = ''; + + if(strlen($this->getMenuIcon()) != '' && is_file(DOKU_INC.substr($this->getMenuIcon(), strlen(DOKU_BASE)))){ + $calculated = mimetype(DOKU_INC.substr($this->getMenuIcon(), strlen(DOKU_BASE)), false); + if(is_array($calculated) && $calculated[0] == 'svg') { + $returnValue = $this->getMenuIcon(); + } + } + return $returnValue; + } + /** * Determine position in list in admin window * Lower values are sorted up diff --git a/lib/tpl/dokuwiki/css/_admin.css b/lib/tpl/dokuwiki/css/_admin.css index bdde006e0cbcea996cd9b2865d89a324c36c003d..c2af93e2c5e52256ec3cc295bf28d01f627376fd 100644 --- a/lib/tpl/dokuwiki/css/_admin.css +++ b/lib/tpl/dokuwiki/css/_admin.css @@ -49,6 +49,55 @@ background-image: url(../../images/admin/popularity.png); } +/* DokuWiki additional plugins below */ +.dokuwiki ul.admin_plugins { + float: left; + width: 40%; +} + +.dokuwiki ul.admin_plugins.no_icon{ + float: left; + width: 40%; +} + +.dokuwiki ul.admin_plugins.icon{ + list-style-type: none; +} + +.dokuwiki ul.admin_plugins li { + pading-left: 35px; + margin: 0 0 0.4em 0; + color: inherit; + background: transparent none no-repeat scroll 0 0; +} + +.dokuwiki ul.admin_plugins li .admin_plugin_container { + display: block; + height: 20px; + vertical-align: middle; +} + +.dokuwiki ul.admin_plugins li .admin_plugin_container div.admin_plugin_icon { + width: 20px; + height: 20px; + display: inline-block; + vertical-align: middle; +} + +.dokuwiki ul.admin_plugins li .admin_plugin_container div.admin_plugin_icon img { + height: 20px; + width: 20px; +} + +.dokuwiki ul.admin_plugins li .admin_plugin_container div.admin_plugin_name { + padding-left: 0.5em; + vertical-align: middle; + display: inline-block; + text-align: center; + margin: 0 auto; +} + + /* DokuWiki version below */ .dokuwiki #admin__version { clear: left;