xref: /template/parabola/tpl_functions.php (revision 3a03c4b66b42ebcafa9acf72221b555cd0717f3d)
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