|
- <?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);
- }
- }
|