*/ if(!defined('DOKU_LF')) define('DOKU_LF',"\n"); // load sidebar contents $sbl = explode(',',tpl_getConf('sidebar_content')); /** * Prints the sidebars * * @author Michael Klier */ function tpl_sidebar() { $sb_order = explode(',', tpl_getConf('sidebar_order')); $sb_content = explode(',', tpl_getConf('sidebar_content')); // add toolbox and toc to sidebar contents array_push($sb_content, 'toolbox'); // process contents by given order foreach($sb_order as $sb) { if(in_array($sb,$sb_content)) { $key = array_search($sb,$sb_content); unset($sb_content[$key]); tpl_sidebar_dispatch($sb); } } // check for left content not specified by order if(is_array($sb_content) && !empty($sb_content) > 0) { foreach($sb_content as $sb) { tpl_sidebar_dispatch($sb); } } } /** * Dispatches the given sidebar type to return the right content * * @author Michael Klier */ function tpl_sidebar_dispatch($sb) { global $lang; global $conf; global $ID; global $REV; global $INFO; $svID = $ID; // save current ID $svREV = $REV; // save current REV $pname = tpl_getConf('pagename'); switch($sb) { case 'main': $main_sb = $pname; if(@file_exists(wikiFN($main_sb)) && auth_quickaclcheck($main_sb) >= AUTH_READ) { print '' . DOKU_LF; } break; case 'namespace': $user_ns = tpl_getConf('user_sidebar_namespace'); $group_ns = tpl_getConf('group_sidebar_namespace'); if(!preg_match("/^".$user_ns.":.*?$|^".$group_ns.":.*?$/", $svID)) { // skip group/user sidebars and current ID $ns_sb = _getNsSb($svID); if($ns_sb && auth_quickaclcheck($ns_sb) >= AUTH_READ) { print '' . DOKU_LF; } } break; case 'user': $user_ns = tpl_getConf('user_sidebar_namespace'); if(isset($INFO['userinfo']['name'])) { $user = $_SERVER['REMOTE_USER']; $user_sb = $user_ns . ':' . $user . ':' . $pname; if(@file_exists(wikiFN($user_sb))) { print ''; } // check for namespace sidebars in user namespace too if(preg_match('/'.$user_ns.':'.$user.':.*/', $svID)) { $ns_sb = _getNsSb($svID); if($ns_sb && $ns_sb != $user_sb && auth_quickaclcheck($ns_sb) >= AUTH_READ) { print '' . DOKU_LF; } } } break; case 'group': $group_ns = tpl_getConf('group_sidebar_namespace'); if(isset($INFO['userinfo']['name'], $INFO['userinfo']['grps'])) { foreach($INFO['userinfo']['grps'] as $grp) { $group_sb = $group_ns.':'.$grp.':'.$pname; if(@file_exists(wikiFN($group_sb)) && auth_quickaclcheck($group_sb) >= AUTH_READ) { print '' . DOKU_LF; } } } break; case 'index': print '' . DOKU_LF; break; case 'toc': if(auth_quickaclcheck($svID) >= AUTH_READ) { $toc = tpl_toc(true); // replace ids to keep XHTML compliance if(!empty($toc)) { $toc = preg_replace('/id="(.*?)"/', 'id="sb__\1"', $toc); print '' . DOKU_LF; } } break; case 'toolbox': $actions = array('admin', 'edit', 'history', 'recent', 'backlink', 'subscription', 'index', 'login', 'profile'); print '' . DOKU_LF; break; case 'trace': print '' . DOKU_LF; break; case 'extra': print '' . DOKU_LF; break; default: // check for user defined sidebars if(@file_exists(DOKU_TPLINC.'sidebars/'.$sb.'/sidebar.php')) { print '' . DOKU_LF; } break; } // restore ID and REV $ID = $svID; $REV = $svREV; } /** * Removes the TOC of the sidebar pages and * shows a edit button if the user has enough rights * * @author Michael Klier */ function p_sidebar_xhtml($sb) { $data = p_wiki_xhtml($sb,'',false); if(auth_quickaclcheck($sb) >= AUTH_EDIT) { $data .= '
'.html_btn('secedit',$sb,'',array('do'=>'edit','rev'=>'','post')).'
'; } // strip TOC $data = preg_replace('/
.*?(<\/div>\n<\/div>)/s', '', $data); // replace headline ids for XHTML compliance $data = preg_replace('/(.*?<\/a><\/h.*?>)/','\1sb_\2\3sb_\4\5', $data); return ($data); } /** * Renders the Index * * copy of html_index located in /inc/html.php * * @author Andreas Gohr * @author Michael Klier */ function p_index_xhtml($ns) { require_once(DOKU_INC.'inc/search.php'); global $conf; global $ID; $dir = $conf['datadir']; $ns = cleanID($ns); #fixme use appropriate function if(empty($ns)){ $ns = dirname(str_replace(':','/',$ID)); if($ns == '.') $ns =''; } $ns = utf8_encodeFN(str_replace(':','/',$ns)); // only extract headline preg_match('/

.*?<\/h1>/', p_locale_xhtml('index'), $match); print $match[0]; $data = array(); search($data,$conf['datadir'],'search_index',array('ns' => $ns)); print '
' . DOKU_LF; print html_buildlist($data,'idx','html_list_index','html_li_index'); print '
' . DOKU_LF; } /** * searches for namespace sidebars * * @author Michael Klier */ function _getNsSb($id) { $pname = tpl_getConf('pagename'); $ns_sb = ''; $path = explode(':', $id); $found = false; while(count($path) > 0) { $ns_sb = implode(':', $path).':'.$pname; if(@file_exists(wikiFN($ns_sb))) return $ns_sb; array_pop($path); } // nothing found return false; } //Setup vim: ts=4 sw=4: ?>