<?php 
/*
 * Provide navigation sidebar functionality to Dokuwiki Templates
 *
 * This is not currently part of the official Dokuwiki release
 *
 * @author Christopher Smith <chris@jalakai.co.uk>
 * @author Don Bowman <don@lynsoft.co.uk>
 */

/******  sidebar configuration settings  ******/
  tpl_loadConfig();

/******  determine the sidebar class  ******/
  $sidebar_class = 
      "sidebar sidebar_".tpl_getConf('layout').'_'.tpl_getConf('orientation');


/*
 * 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) 


/*
 * print a sidebar edit button - if appropriate
 */
function tpl_sidebar_editbtn() {//func

/******  declare global variables  ******/
  global $ID, $conf, $lang;

/******  check if button wanted  ******/
  if (!tpl_getConf('rb_showeditbtn')) 
    return;
  
/******  check if sidebar page exists  ******/
  $fileSidebar = getSidebarFN(getNS($ID), 'sidebar');
  if (!$fileSidebar) 
    return;
  
/******  check if user has edit permission for the sidebar page  ******/
  if (auth_quickaclcheck($fileSidebar) < AUTH_EDIT) 
    return;
  
/******  generate button  ******/
  ?>
    <div class="secedit">
      <form class="button" method="post" action="<?php echo wl($fileSidebar,'do=edit'); ?>" 
          onsubmit="return svchk()">
        <input type="hidden" name="do" value="edit" />
        <input type="hidden" name="rev" value="" />
        <input type="hidden" name="id" value="<?php echo $fileSidebar; ?>" />
        <input type="submit" value="<?php echo $lang['btn_sidebaredit']; ?>" class="button" />
      </form>
    </div>
  <?php

  }//function tpl_sidebar_editbtn() 


/*
 * display the sidebar
 */
function tpl_sidebar_content() {//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  ******/
  $fileSidebar = '';
  $fileSidebar = getSidebarFN(getNS($ID), 'sidebar');

/******  show main sidebar if necessary  ******/
  if (tpl_getConf('rb_main_sidebar')  && 
      $fileSidebar != 'sidebar'       &&
      file_exists(wikiFN('sidebar'))) {//do
    $ID = 'sidebar';
    $REV = '';
    $ACT = 'show';
    tpl_content(false);
    if (tpl_getConf('rb_showeditbtn')) {//do
      tpl_sidebar_editbtn();
      echo "<br>";
      }//if (tpl_getConf('rb_showeditbtn'))
    echo "<hr>";
    }//if (tpl_getConf('rb_main_sidebar')  && ... 

/******  show current sidebar  ******/
  if ($fileSidebar) {//do
    $ID = $fileSidebar;
    $REV = '';
    $ACT = 'show';
    tpl_content(false);
    if (tpl_getConf('rb_showeditbtn')) 
      tpl_sidebar_editbtn();
    }//if ($fileSidebar)

/******  show index  ******/
  else {//if (!$fileSidebar)
    $REV = '';
    $ACT = 'index';
    tpl_content(false);
    }//if (!$fileSidebar)
    
/******  restore global variables  ******/
  $ID = $saveID;
  $REV = $saveREV;
  $ACT = $saveACT;

  }//function tpl_sidebar_content()