*/ // must be run within Dokuwiki if (!defined('DOKU_INC')) die(); if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/'); require_once (DOKU_PLUGIN . 'action.php'); class action_plugin_adminhomepage extends DokuWiki_Action_Plugin { /** * return some info */ function getInfo() { return array ( 'author' => 'Håkan Sandell', 'email' => 'hakan.sandell@home.se', 'date' => @file_get_contents(DOKU_PLUGIN.'adminhomepage/VERSION'), 'name' => 'AdminHomePage', 'desc' => 'Replacement for "Admin" page with better usability', 'url' => 'http://www.dokuwiki.org/plugin:adminhomepage' ); } /** * register the eventhandlers */ function register(& $controller) { $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_act_preprocess'); $controller->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, 'handle_act_unknown'); } /** * Looks for admin action, if found the name is changed so TPL_ACT_UNKNOWN is raised */ function handle_act_preprocess(& $event, $param) { if (($event->data == 'admin') && empty($_REQUEST['page']) && (act_permcheck($event->data) == 'admin')) { $event->data = 'adminhomepage'; $event->stopPropagation(); $event->preventDefault(); } } /** * Catches the "unknown" event "adminhomepage" and outputs the alternative admin main page */ function handle_act_unknown(& $event, $param) { if ($event->data == 'adminhomepage') { $this->_html_admin(); $event->stopPropagation(); $event->preventDefault(); } } function _html_admin(){ global $ID; global $INFO; global $lang; global $conf; global $auth; // build menu of admin functions from the plugins that handle them $pluginlist = plugin_list('admin'); $menu = array(); foreach ($pluginlist as $p) { if($obj =& plugin_load('admin',$p) === NULL) continue; // check permissions if($obj->forAdminOnly() && !$INFO['isadmin']) continue; $menu[$p] = array('plugin' => $p, 'prompt' => $obj->getMenuText($conf['lang']), 'sort' => $obj->getMenuSort() ); } // check if UserManager available $usermanageravailable = true; if (!isset($auth)) { $usermanageravailable = false; } else if (!$auth->canDo('getUsers')) { $usermanageravailable = false; } // output main tasks ptln('

'.$this->getLang('pageheader').'

'); ptln('
'); ptln('
'); if ($INFO['isadmin']) { if ($usermanageravailable) { ptln(' '); } ptln(' '); ptln(' '); ptln(' '); }else{ ptln(' '); } ptln('
'); ptln('
'); ptln('
'.$this->getLang('wiki_version').'
'.getVersion().'
'); ptln('
'.$this->getLang('php_version').'
'.phpversion().'
'); ptln('
'); ptln('
'); // remove the four main plugins unset($menu['acl']); if ($usermanageravailable) unset($menu['usermanager']); unset($menu['config']); unset($menu['plugin']); // output the remaining menu usort($menu, 'p_sort_modes'); ptln('

'.$this->getLang('more_adminheader').'

'); ptln('
'); echo $this->render($this->getLang('more_admintext')); ptln('
'); } }