* @author Esther Brunner * @author Don Bowman */ /** * Recursive function to establish best sidebar file to be used */ function getSidebarFN($ns, $file) {//func /****** 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 getSidebarFN($ns, $file); }//function getSidebarFN($ns, $file) /** * Display the sidebar */ function spacedok_sidebar() {//func /****** declare global variables ******/ global $ID, $REV, $ACT, $conf; /****** save global variables ******/ $saveID = $ID; $saveREV = $REV; // $saveACT = $ACT; /****** find file to be displayed in navigation sidebar ******/ $sidebar = tpl_getConf('sidebar_page'); $fileSidebar = getSidebarFN(getNS($ID), $sidebar); /****** show main sidebar if necessary ******/ if (tpl_getConf('spacedok_main_sidebar') && $fileSidebar != $sidebar) {//do $ID = $sidebar; $REV = ''; echo p_wiki_xhtml($ID, $REV, false); // $ACT = 'show'; // tpl_content(false); echo "
"; }//if (tpl_getConf('spacedok_main_sidebar') && $fileSidebar != $sidebar) /****** show current sidebar ******/ if ($fileSidebar) {//do $ID = $fileSidebar; $REV = ''; echo p_wiki_xhtml($ID, $REV, false); // $ACT = 'show'; // tpl_content(false); }//if ($fileSidebar) /****** show index ******/ else {//if (!$fileSidebar) // $REV = ''; // $ACT = 'index'; global $IDX; html_index($IDX); // tpl_content(false); }//if (!$fileSidebar) /****** restore global variables ******/ $ID = $saveID; $REV = $saveREV; // $ACT = $saveACT; }//function spacedok_sidebar() /** * Return the correct ID for
*/ function spacedok_classID() {//func echo 'spacedok__'.tpl_getConf('width').'_'.tpl_getConf('sidebar_position'); }//function spacedok_classID() /** * Checks if the color scheme has changed */ function spacedok_checkColor() {//func /****** set local variables ******/ $color = tpl_getConf('color'); $file = DOKU_TPLINC.'style.ini'; $file2 = DOKU_TPLINC.'style_'.$color.'.ini'; $ini = parse_ini_file($file); /****** change theme as requested ******/ if ($ini['__theme__'] != '_'.$color) {//do if ((@file_exists($file2)) && (@unlink($file)) && (@copy($file2, $file))) {//do global $conf; if ($conf['fperm']) chmod($file, $conf['fperm']); }//if ((@file_exists($file2)) && (@unlink($file)) && (@copy($file2, $file))) else {//if not ((@file_exists($file2)) && (@unlink($file)) && (@copy($file2, $file))) msg('Could not set correct style.ini file for your chosen color scheme.', -1); }//else {//if not ... }//if ($ini['__theme__'] != '_'.$color) }//function spacedok_checkColor() /** * Display tabs for easy navigation */ function spacedok_tabs() {//func /****** declare global variables ******/ global $ID; /****** set local variables ******/ $out = ''; /****** get tabs file name ******/ $ns = getNS($ID); $tabsFile = wikiFN(($ns).':'.tpl_getConf('tabs_page')); /****** show tabs ******/ if ((@file_exists($tabsFile)) && (auth_quickaclcheck($tabs))) {//do $ins = p_cached_instructions($tabsFile); /****** process each tab ******/ foreach ($ins as $in) {//do /****** collect internal links to pages in same namespace ******/ if ($in[0] == 'internallink') {//do list($id, $hash) = explode('#', $in[1][0], 2); resolve_pageid(getNS($ID), $id, $exists); /****** ignore links to other namespaces ******/ if (getNS($id) != $ns) continue; /****** ignore links to non-existent pages ******/ if (!$exists) continue; /****** determine link title ******/ $title = hsc($in[1][1]); if (!$title) $title = hsc(p_get_first_heading($id)); if (!$title) $title = hsc(ucwords(noNS($id))); /****** now construct the output link ******/ if ($id == $ID) $out .= ''.$title.' '; else $out .= ''.$title.' '; }//if ($in[0] == 'internallink') /****** first header of tabs.txt is heading for whole namespace ******/ elseif (($in[0] == 'header') && (!$heading)) {//do $heading = $in[1][0]; $level = $in[1][1]; }//if (($in[0] == 'header') && (!$heading)) }//foreach ($ins as $in) /****** add heading to list ******/ if ($heading) $out = ''.$heading.''.$out; /****** show list ******/ echo '
'.$out.'
'; }//if ((@file_exists($tabsFile)) && (auth_quickaclcheck($tabs))) }//function spacedok_tabs() /** * Outputs the namespace title */ function spacedok_nstitle() {//func /****** declare global variables ******/ global $ID; /****** get namespace title ******/ $title = p_get_metadata(getNS($ID).':'.tpl_getConf('tabs_page'), 'title'); /****** show namespace title ******/ if ($title) echo $title.': '; }//function spacedok_nstitle()