1*5046b436Sluqi114<?php 2*5046b436Sluqi114/** 3*5046b436Sluqi114 * Template Functions 4*5046b436Sluqi114 * 5*5046b436Sluqi114 * This file provides template specific custom functions that are 6*5046b436Sluqi114 * not provided by the DokuWiki core. 7*5046b436Sluqi114 * It is common practice to start each function with an underscore 8*5046b436Sluqi114 * to make sure it won't interfere with future core functions. 9*5046b436Sluqi114 */ 10*5046b436Sluqi114 11*5046b436Sluqi114// must be run from within DokuWiki 12*5046b436Sluqi114if (!defined('DOKU_INC')) die(); 13*5046b436Sluqi114 14*5046b436Sluqi114/** 15*5046b436Sluqi114 * Create link/button to discussion page and back 16*5046b436Sluqi114 * 17*5046b436Sluqi114 * @author Anika Henke <anika@selfthinker.org> 18*5046b436Sluqi114 */ 19*5046b436Sluqi114function _tpl_discussion($discussionPage, $title, $backTitle, $link=0, $wrapper=0, $return=0) { 20*5046b436Sluqi114 global $ID; 21*5046b436Sluqi114 $output = ''; 22*5046b436Sluqi114 23*5046b436Sluqi114 $discussPage = str_replace('@ID@', $ID, $discussionPage); 24*5046b436Sluqi114 $discussPageRaw = str_replace('@ID@', '', $discussionPage); 25*5046b436Sluqi114 $isDiscussPage = strpos($ID, $discussPageRaw) !== false; 26*5046b436Sluqi114 $backID = ':'.str_replace($discussPageRaw, '', $ID); 27*5046b436Sluqi114 28*5046b436Sluqi114 if ($wrapper) $output .= "<$wrapper>"; 29*5046b436Sluqi114 30*5046b436Sluqi114 if ($isDiscussPage) { 31*5046b436Sluqi114 if ($link) { 32*5046b436Sluqi114 ob_start(); 33*5046b436Sluqi114 tpl_pagelink($backID, $backTitle); 34*5046b436Sluqi114 $output .= ob_get_contents(); 35*5046b436Sluqi114 ob_end_clean(); 36*5046b436Sluqi114 } else { 37*5046b436Sluqi114 $output .= html_btn('back2article', $backID, '', array(), 'get', 0, $backTitle); 38*5046b436Sluqi114 } 39*5046b436Sluqi114 } else { 40*5046b436Sluqi114 if ($link) { 41*5046b436Sluqi114 ob_start(); 42*5046b436Sluqi114 tpl_pagelink($discussPage, $title); 43*5046b436Sluqi114 $output .= ob_get_contents(); 44*5046b436Sluqi114 ob_end_clean(); 45*5046b436Sluqi114 } else { 46*5046b436Sluqi114 $output .= html_btn('discussion', $discussPage, '', array(), 'get', 0, $title); 47*5046b436Sluqi114 } 48*5046b436Sluqi114 } 49*5046b436Sluqi114 50*5046b436Sluqi114 if ($wrapper) $output .= "</$wrapper>"; 51*5046b436Sluqi114 if ($return) return $output; 52*5046b436Sluqi114 echo $output; 53*5046b436Sluqi114} 54*5046b436Sluqi114 55*5046b436Sluqi114/** 56*5046b436Sluqi114 * Create link/button to user page 57*5046b436Sluqi114 * 58*5046b436Sluqi114 * @author Anika Henke <anika@selfthinker.org> 59*5046b436Sluqi114 */ 60*5046b436Sluqi114function _tpl_userpage($userPage, $title, $link=0, $wrapper=0, $return=0) { 61*5046b436Sluqi114 if (empty($_SERVER['REMOTE_USER'])) return; 62*5046b436Sluqi114 63*5046b436Sluqi114 global $conf; 64*5046b436Sluqi114 $output = ''; 65*5046b436Sluqi114 $userPage = str_replace('@USER@', $_SERVER['REMOTE_USER'], $userPage); 66*5046b436Sluqi114 67*5046b436Sluqi114 if ($wrapper) $output .= "<$wrapper>"; 68*5046b436Sluqi114 69*5046b436Sluqi114 if ($link) { 70*5046b436Sluqi114 ob_start(); 71*5046b436Sluqi114 tpl_pagelink($userPage, $title); 72*5046b436Sluqi114 $output .= ob_get_contents(); 73*5046b436Sluqi114 ob_end_clean(); 74*5046b436Sluqi114 } else { 75*5046b436Sluqi114 $output .= html_btn('userpage', $userPage, '', array(), 'get', 0, $title); 76*5046b436Sluqi114 } 77*5046b436Sluqi114 78*5046b436Sluqi114 if ($wrapper) $output .= "</$wrapper>"; 79*5046b436Sluqi114 if ($return) return $output; 80*5046b436Sluqi114 echo $output; 81*5046b436Sluqi114} 82*5046b436Sluqi114 83*5046b436Sluqi114/** 84*5046b436Sluqi114 * Wrapper around custom template actions 85*5046b436Sluqi114 * 86*5046b436Sluqi114 * @author Anika Henke <anika@selfthinker.org> 87*5046b436Sluqi114 */ 88*5046b436Sluqi114function _tpl_action($type, $link=0, $wrapper=0, $return=0) { 89*5046b436Sluqi114 switch ($type) { 90*5046b436Sluqi114 case 'discussion': 91*5046b436Sluqi114 if (tpl_getConf('discussionPage')) { 92*5046b436Sluqi114 $output = _tpl_discussion(tpl_getConf('discussionPage'), tpl_getLang('discussion'), tpl_getLang('back_to_article'), $link, $wrapper, 1); 93*5046b436Sluqi114 if ($return) return $output; 94*5046b436Sluqi114 echo $output; 95*5046b436Sluqi114 } 96*5046b436Sluqi114 break; 97*5046b436Sluqi114 case 'userpage': 98*5046b436Sluqi114 if (tpl_getConf('userPage')) { 99*5046b436Sluqi114 $output = _tpl_userpage(tpl_getConf('userPage'), tpl_getLang('userpage'), $link, $wrapper, 1); 100*5046b436Sluqi114 if ($return) return $output; 101*5046b436Sluqi114 echo $output; 102*5046b436Sluqi114 } 103*5046b436Sluqi114 break; 104*5046b436Sluqi114 } 105*5046b436Sluqi114} 106*5046b436Sluqi114 107*5046b436Sluqi114/** 108*5046b436Sluqi114 * copied to core (available since Detritus) 109*5046b436Sluqi114 */ 110*5046b436Sluqi114if (!function_exists('tpl_toolsevent')) { 111*5046b436Sluqi114 function tpl_toolsevent($toolsname, $items, $view='main') { 112*5046b436Sluqi114 $data = array( 113*5046b436Sluqi114 'view' => $view, 114*5046b436Sluqi114 'items' => $items 115*5046b436Sluqi114 ); 116*5046b436Sluqi114 117*5046b436Sluqi114 $hook = 'TEMPLATE_'.strtoupper($toolsname).'_DISPLAY'; 118*5046b436Sluqi114 $evt = new Doku_Event($hook, $data); 119*5046b436Sluqi114 if($evt->advise_before()){ 120*5046b436Sluqi114 foreach($evt->data['items'] as $k => $html) echo $html; 121*5046b436Sluqi114 } 122*5046b436Sluqi114 $evt->advise_after(); 123*5046b436Sluqi114 } 124*5046b436Sluqi114} 125*5046b436Sluqi114 126*5046b436Sluqi114/** 127*5046b436Sluqi114 * copied from core (available since Binky) 128*5046b436Sluqi114 */ 129*5046b436Sluqi114if (!function_exists('tpl_classes')) { 130*5046b436Sluqi114 function tpl_classes() { 131*5046b436Sluqi114 global $ACT, $conf, $ID, $INFO; 132*5046b436Sluqi114 $classes = array( 133*5046b436Sluqi114 'dokuwiki', 134*5046b436Sluqi114 'mode_'.$ACT, 135*5046b436Sluqi114 'tpl_'.$conf['template'], 136*5046b436Sluqi114 !empty($_SERVER['REMOTE_USER']) ? 'loggedIn' : '', 137*5046b436Sluqi114 $INFO['exists'] ? '' : 'notFound', 138*5046b436Sluqi114 ($ID == $conf['start']) ? 'home' : '', 139*5046b436Sluqi114 ); 140*5046b436Sluqi114 return join(' ', $classes); 141*5046b436Sluqi114 } 142*5046b436Sluqi114} 143