Dies ist eine alte Version des Dokuments!
DokuWiki
Plugin sidebar
Die neue action.php: Keife störende Sidebar in Admin und Edit
<?php /** * Sidebar Action Plugin * * @license GPLv3 (http://www.gnu.org/licenses/gpl.html) * @link http://www.dokuwiki.org/plugin:sidebar * @author Markus Birth <markus@birth-online.de> * @author Christopher Smith <chris@jalakai.co.uk> */ 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_sidebar extends DokuWiki_Action_Plugin { protected static $done = false; /** * return some info */ function getInfo(){ return confToHash(dirname(__FILE__).'/INFO.txt'); } /** * plugin should use this method to register its handlers with the dokuwiki's event controller */ public function register(dokuwiki\Extension\EventHandler $controller) { $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, '_output'); } function _debug(&$event, $param) { ptln($param); ptln(''); } function _output(&$event, $param) { // ### ANPASSUNG START ### // Verhindert die Anzeige der Sidebar im Admin-Bereich, beim Editieren UND in der Vorschau global $ACT; if ($ACT == 'admin' || $ACT == 'edit' || $ACT == 'preview') return; // ### ANPASSUNG ENDE ### if (!$this->getConf('enable') || self::$done) return; self::$done = true; // prevent recursive calls when doing tpl_content() later on $bodyClass = 'sidebar sidebar_' . $this->getConf('layout') . '_' . $this->getConf('orientation'); ptln('</div>', 2); // close the main content area ptln('<script type="text/javascript">', 2); ptln('var body = document.getElementsByTagName(\'BODY\')[0].className = \'' . $bodyClass . '\';', 4); ptln('</script>', 2); ptln('<style type="text/css" media="print">', 2); ptln('#sidebar { display: none; }', 4); ptln('</style>', 2); ptln('<div id="sidebar">', 2); ptln('<div id="sidebartop">', 4); $this->tpl_sidebar_editbtn(); ptln('</div>', 4); ptln('<div id="sidebar_content">', 4); $this->tpl_sidebar_content(); ptln('</div>', 4); // the </div> for closing the "sidebar"-div will be provided by DokuWiki main template } // recursive function to establish best sidebar file to be used function getSidebarFN($ns, $file) { // check for wiki page = $ns:$file (or $file where no namespace) $nsFile = ($ns) ? "$ns:$file" : $file; if (file_exists(wikiFN($nsFile)) && auth_quickaclcheck($nsFile)) return $nsFile; // no namespace left, exit with no file found if (!$ns) return ''; // remove deepest namespace level and call function recursively $i = strrpos($ns, ":"); $ns = ($i) ? substr($ns, 0, $i) : false; return $this->getSidebarFN($ns, $file); } // print a sidebar edit button - if appropriate function tpl_sidebar_editbtn() { global $ID; // check sidebar configuration if (!$this->getConf('showeditbtn') || !$this->getConf('page')) return; // check sidebar page exists $fileSidebar = $this->getSidebarFN(getNS($ID), $this->getConf('page')); if (!$fileSidebar) return; // check user has edit permission for the sidebar page if (auth_quickaclcheck($fileSidebar) < AUTH_EDIT) return; ptln('<div class="secedit">', 6); ptln('<form class="button" method="post" action="' . wl($fileSidebar, 'do=edit') . '" onsubmit="return svchk()">', 8); ptln('<input type="hidden" name="do" value="edit" />', 10); ptln('<input type="hidden" name="rev" value="" />', 10); ptln('<input type="hidden" name="id" value="' . $fileSidebar . '" />', 10); ptln('<input type="submit" value="' . $this->getConf('editbtntxt') . '" class="button" />', 10); ptln('</form>', 8); ptln('</div>', 6); } // display the sidebar function tpl_sidebar_content() { global $ID, $REV, $ACT, $conf; // save globals $saveID = $ID; $saveREV = $REV; $saveACT = $ACT; // discover file to be displayed in navigation sidebar $fileSidebar = ''; if ($this->getConf('page')) { $fileSidebar = $this->getSidebarFN(getNS($ID), $this->getConf('page')); } // determine what to display if ($fileSidebar) { $ID = $fileSidebar; $REV = ''; $ACT = 'show'; // ptln(p_wiki_xhtml($ID, $REV, false)); tpl_content(); } else { # global $IDX; # html_index($IDX); # $ID = getNS($ID); $REV = ''; $ACT = 'index'; tpl_content(); } // restore globals $ID = $saveID; $REV = $saveREV; $ACT = $saveACT; } }
