142 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable file
		
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Template Functions
 | |
|  *
 | |
|  * This file provides template specific custom functions that are
 | |
|  * not provided by the DokuWiki core.
 | |
|  * It is common practice to start each function with an underscore
 | |
|  * to make sure it won't interfere with future core functions.
 | |
|  */
 | |
| 
 | |
| // must be run from within DokuWiki
 | |
| if (!defined('DOKU_INC')) die();
 | |
| 
 | |
| /**
 | |
|  * Create link/button to discussion page and back
 | |
|  *
 | |
|  * @author Anika Henke <anika@selfthinker.org>
 | |
|  */
 | |
| function _tpl_discussion($discussionPage, $title, $backTitle, $link=0, $wrapper=0, $return=0) {
 | |
|     global $ID;
 | |
|     $output = '';
 | |
| 
 | |
|     $discussPage    = str_replace('@ID@', $ID, $discussionPage);
 | |
|     $discussPageRaw = str_replace('@ID@', '', $discussionPage);
 | |
|     $isDiscussPage  = strpos($ID, $discussPageRaw) !== false;
 | |
|     $backID         = ':'.str_replace($discussPageRaw, '', $ID);
 | |
| 
 | |
|     if ($wrapper) $output .= "<$wrapper>";
 | |
| 
 | |
|     if ($isDiscussPage) {
 | |
|         if ($link) {
 | |
|             ob_start();
 | |
|             tpl_pagelink($backID, $backTitle);
 | |
|             $output .= ob_get_contents();
 | |
|             ob_end_clean();
 | |
|         } else {
 | |
|             $output .= html_btn('back2article', $backID, '', array(), 'get', 0, $backTitle);
 | |
|         }
 | |
|     } else {
 | |
|         if ($link) {
 | |
|             ob_start();
 | |
|             tpl_pagelink($discussPage, $title);
 | |
|             $output .= ob_get_contents();
 | |
|             ob_end_clean();
 | |
|         } else {
 | |
|             $output .= html_btn('discussion', $discussPage, '', array(), 'get', 0, $title);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     if ($wrapper) $output .= "</$wrapper>";
 | |
|     if ($return) return $output;
 | |
|     echo $output;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Create link/button to user page
 | |
|  *
 | |
|  * @author Anika Henke <anika@selfthinker.org>
 | |
|  */
 | |
| function _tpl_userpage($userPage, $title, $link=0, $wrapper=0, $return=0) {
 | |
|     if (empty($_SERVER['REMOTE_USER'])) return;
 | |
| 
 | |
|     global $conf;
 | |
|     $output = '';
 | |
|     $userPage = str_replace('@USER@', $_SERVER['REMOTE_USER'], $userPage);
 | |
| 
 | |
|     if ($wrapper) $output .= "<$wrapper>";
 | |
| 
 | |
|     if ($link) {
 | |
|         ob_start();
 | |
|         tpl_pagelink($userPage, $title);
 | |
|         $output .= ob_get_contents();
 | |
|         ob_end_clean();
 | |
|     } else {
 | |
|         $output .= html_btn('userpage', $userPage, '', array(), 'get', 0, $title);
 | |
|     }
 | |
| 
 | |
|     if ($wrapper) $output .= "</$wrapper>";
 | |
|     if ($return) return $output;
 | |
|     echo $output;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Wrapper around custom template actions
 | |
|  *
 | |
|  * @author Anika Henke <anika@selfthinker.org>
 | |
|  */
 | |
| function _tpl_action($type, $link=0, $wrapper=0, $return=0) {
 | |
|     switch ($type) {
 | |
|         case 'discussion':
 | |
|             if (tpl_getConf('discussionPage')) {
 | |
|                 $output = _tpl_discussion(tpl_getConf('discussionPage'), tpl_getLang('discussion'), tpl_getLang('back_to_article'), $link, $wrapper, 1);
 | |
|                 if ($return) return $output;
 | |
|                 echo $output;
 | |
|             }
 | |
|             break;
 | |
|         case 'userpage':
 | |
|             if (tpl_getConf('userPage')) {
 | |
|                 $output = _tpl_userpage(tpl_getConf('userPage'), tpl_getLang('userpage'), $link, $wrapper, 1);
 | |
|                 if ($return) return $output;
 | |
|                 echo $output;
 | |
|             }
 | |
|             break;
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * copied to core (available since Detritus)
 | |
|  */
 | |
| if (!function_exists('tpl_toolsevent')) {
 | |
|     function tpl_toolsevent($toolsname, $items, $view='main') {
 | |
|         $data = array(
 | |
|             'view'  => $view,
 | |
|             'items' => $items
 | |
|         );
 | |
| 
 | |
|         $hook = 'TEMPLATE_'.strtoupper($toolsname).'_DISPLAY';
 | |
|         $evt = new Doku_Event($hook, $data);
 | |
|         if($evt->advise_before()){
 | |
|             foreach($evt->data['items'] as $k => $html) echo $html;
 | |
|         }
 | |
|         $evt->advise_after();
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * copied from core (available since Binky)
 | |
|  */
 | |
| if (!function_exists('tpl_classes')) {
 | |
|     function tpl_classes() {
 | |
|         global $ACT, $conf, $ID, $INFO;
 | |
|         $classes = array(
 | |
|             'dokuwiki',
 | |
|             'mode_'.$ACT,
 | |
|             'tpl_'.$conf['template'],
 | |
|             !empty($_SERVER['REMOTE_USER']) ? 'loggedIn' : '',
 | |
|             $INFO['exists'] ? '' : 'notFound',
 | |
|             ($ID == $conf['start']) ? 'home' : '',
 | |
|         );
 | |
|         return join(' ', $classes);
 | |
|     }
 | |
| }
 | 
