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