xref: /plugin/wikicalendar-ng/syntax.php (revision f04822b53689fa967819069be5b315ad125c35aa)
1de76d2a4SMichael Klier<?php
2de76d2a4SMichael Klier/**
3*f04822b5SNiko Spindler * DokuWiki Syntax Plugin WikiCalendar-ng
4de76d2a4SMichael Klier *
5de76d2a4SMichael Klier * @license  GPL 2 (http://www.gnu.org/licenses/gpl.html)
6de76d2a4SMichael Klier * @author Michael Klier <chi@chimeric.de>
7*f04822b5SNiko Spindler * @edited Nick Spindler <n1ck@gmx.at>
8de76d2a4SMichael Klier */
9de76d2a4SMichael Klier
10de76d2a4SMichael Klierif(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
11de76d2a4SMichael Klierif(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
12de76d2a4SMichael Klierrequire_once(DOKU_PLUGIN.'syntax.php');
13de76d2a4SMichael Klier
14de76d2a4SMichael Klier/**
15de76d2a4SMichael Klier * All DokuWiki plugins to extend the parser/rendering mechanism
16de76d2a4SMichael Klier * need to inherit from this class
17de76d2a4SMichael Klier */
18de76d2a4SMichael Klierclass syntax_plugin_wikicalendar extends DokuWiki_Syntax_Plugin {
19de76d2a4SMichael Klier
20de76d2a4SMichael Klier    /**
21de76d2a4SMichael Klier     * namespace of the calendar
22de76d2a4SMichael Klier     */
23de76d2a4SMichael Klier    var $calendar_ns    = '';
24de76d2a4SMichael Klier
25de76d2a4SMichael Klier    /**
26de76d2a4SMichael Klier     * namespace of the current viewed month
27de76d2a4SMichael Klier     */
28de76d2a4SMichael Klier    var $month_ns       = '';
29de76d2a4SMichael Klier
30de76d2a4SMichael Klier    /**
31de76d2a4SMichael Klier     * indicator if first week of the month has been generated
32de76d2a4SMichael Klier     */
33de76d2a4SMichael Klier    var $firstWeek      = false;
34de76d2a4SMichael Klier
35de76d2a4SMichael Klier    /**
36de76d2a4SMichael Klier     * array with localisations of weekdays
37de76d2a4SMichael Klier     */
38de76d2a4SMichael Klier    var $langDays       = array();
39de76d2a4SMichael Klier
40de76d2a4SMichael Klier    /**
41de76d2a4SMichael Klier     * array with localistaions of month
42de76d2a4SMichael Klier     */
43de76d2a4SMichael Klier    var $langMonth      = array();
44de76d2a4SMichael Klier
45de76d2a4SMichael Klier    /**
46de76d2a4SMichael Klier     * the current date
47de76d2a4SMichael Klier     */
48de76d2a4SMichael Klier    var $curDate        = array();
49de76d2a4SMichael Klier
50de76d2a4SMichael Klier    /**
51de76d2a4SMichael Klier     * the month to show
52de76d2a4SMichael Klier     */
53de76d2a4SMichael Klier    var $showMonth      = '';
54de76d2a4SMichael Klier
55de76d2a4SMichael Klier    /**
56de76d2a4SMichael Klier     * the year to show
57de76d2a4SMichael Klier     */
58de76d2a4SMichael Klier    var $showYear       = '';
59de76d2a4SMichael Klier
60de76d2a4SMichael Klier    /**
61de76d2a4SMichael Klier     * the global timestamp for date-operations
62de76d2a4SMichael Klier     */
63de76d2a4SMichael Klier    var $gTimestamp     = '';
64de76d2a4SMichael Klier
65de76d2a4SMichael Klier    /**
66de76d2a4SMichael Klier     * number days of the current month
67de76d2a4SMichael Klier     */
68de76d2a4SMichael Klier    var $numDays        = '';
69de76d2a4SMichael Klier
70de76d2a4SMichael Klier    /**
71de76d2a4SMichael Klier     * date-date to generate the calendar
72de76d2a4SMichael Klier     */
73de76d2a4SMichael Klier    var $viewDate       = array();
74de76d2a4SMichael Klier
75de76d2a4SMichael Klier    /**
76de76d2a4SMichael Klier     * return some info
77de76d2a4SMichael Klier     */
78de76d2a4SMichael Klier    function getInfo(){
79de76d2a4SMichael Klier        return array(
80de76d2a4SMichael Klier            'author' => 'Michael Klier (chi)',
81de76d2a4SMichael Klier            'email'  => 'chi@chimeric.de',
82de76d2a4SMichael Klier            'date'   => @file_get_contents(DOKU_PLUGIN.'wikicalendar/VERSION'),
83de76d2a4SMichael Klier            'name'   => 'WikiCalendar Plugin',
84de76d2a4SMichael Klier            'desc'   => 'Implements a simple Calendar with links to wikipages.',
85de76d2a4SMichael Klier            'url'    => 'http://dokuwiki.org/plugin:wikicalendar'
86de76d2a4SMichael Klier        );
87de76d2a4SMichael Klier    }
88de76d2a4SMichael Klier
89de76d2a4SMichael Klier    /**
90de76d2a4SMichael Klier     * Some Information first.
91de76d2a4SMichael Klier     */
92de76d2a4SMichael Klier    function getType() { return 'substition'; }
93de76d2a4SMichael Klier    function getPType() { return 'block'; }
94de76d2a4SMichael Klier    function getSort() { return 125; }
95de76d2a4SMichael Klier
96de76d2a4SMichael Klier    /**
97de76d2a4SMichael Klier     * Connect pattern to lexer
98de76d2a4SMichael Klier     */
99de76d2a4SMichael Klier    function connectTo($mode) {
100de76d2a4SMichael Klier        $this->Lexer->addSpecialPattern('{{cal>.+?}}',$mode,'plugin_wikicalendar');
101de76d2a4SMichael Klier    }
102de76d2a4SMichael Klier
103de76d2a4SMichael Klier    /**
104de76d2a4SMichael Klier     * Handle the match
105de76d2a4SMichael Klier     */
106*f04822b5SNiko Spindler    function handle($match, $state, $pos, Doku_Handler $handler){
107de76d2a4SMichael Klier        $match = substr($match,6,-2);
108de76d2a4SMichael Klier        return array($match);
109de76d2a4SMichael Klier    }
110de76d2a4SMichael Klier
111de76d2a4SMichael Klier    /**
112de76d2a4SMichael Klier     * Create output
113de76d2a4SMichael Klier     */
114*f04822b5SNiko Spindler    function render($mode, Doku_Renderer $renderer, $data) {
115de76d2a4SMichael Klier        global $ID;
1166d279233SMichael Klier        global $conf;
117de76d2a4SMichael Klier
118db91b7a2SMichael Klier        if($mode == 'xhtml'){
119db91b7a2SMichael Klier
120db91b7a2SMichael Klier            $tz = date_default_timezone_get();
121db91b7a2SMichael Klier            if($this->getConf('timezone')) {
122db91b7a2SMichael Klier                date_default_timezone_set($this->getConf('timezone'));
123db91b7a2SMichael Klier            }
124db91b7a2SMichael Klier
125de76d2a4SMichael Klier            // define some variables first
126de76d2a4SMichael Klier            $this->calendar_ns  = ($data[0]) ? $data[0] : $ID;
127de76d2a4SMichael Klier            $this->langDays     = $this->getLang('days');
128de76d2a4SMichael Klier            $this->langMonth    = $this->getLang('month');
129de76d2a4SMichael Klier            $this->curDate      = getdate(time());
130*f04822b5SNiko Spindler            $requestMonth       = $_REQUEST['plugin_wikicalendar_month'] ?? null;
131*f04822b5SNiko Spindler            $requestYear        = $_REQUEST['plugin_wikicalendar_year'] ?? null;
132*f04822b5SNiko Spindler            $this->showMonth    = is_numeric($requestMonth) ? $requestMonth : $this->curDate['mon'];
133*f04822b5SNiko Spindler            $this->showYear     = is_numeric($requestYear) ? $requestYear : $this->curDate['year'];
134de76d2a4SMichael Klier            $this->gTimestamp   = mktime(0,0,0,$this->showMonth,1,$this->showYear);
135de76d2a4SMichael Klier            $this->numDays      = date('t',$this->gTimestamp);
136de76d2a4SMichael Klier            $this->viewDate     = getdate($this->gTimestamp);
137de76d2a4SMichael Klier            $this->today        = ($this->viewDate['mon'] == $this->curDate['mon'] &&
138de76d2a4SMichael Klier                                   $this->viewDate['year'] == $this->curDate['year']) ?
139de76d2a4SMichael Klier                                   $this->curDate['mday'] : null;
1406d279233SMichael Klier
1416d279233SMichael Klier            // if month directory exists we keep the old scheme
1426d279233SMichael Klier            if(is_dir($conf['datadir'].'/'.str_replace(':','/',$this->calendar_ns.':'.$this->showYear.':'.$this->showMonth))) {
143de76d2a4SMichael Klier                $this->month_ns = $this->calendar_ns.':'.$this->showYear.':'.$this->showMonth;
1446d279233SMichael Klier            } else {
1456d279233SMichael Klier                if($this->showMonth < 10) {
1466d279233SMichael Klier                    $this->month_ns = $this->calendar_ns.':'.$this->showYear.':0'.$this->showMonth;
1476d279233SMichael Klier                } else {
1486d279233SMichael Klier                    $this->month_ns = $this->calendar_ns.':'.$this->showYear.':'.$this->showMonth;
1496d279233SMichael Klier                }
1506d279233SMichael Klier            }
1516d279233SMichael Klier
152*f04822b5SNiko Spindler            $this->MonthStart = ($this->viewDate['wday'] == 0) ? 7 : $this->viewDate['wday'];
153180fbbb2SMichael Klier            if($this->MonthStart == 7 && $this->getConf('weekstart') == 'Sunday') {
154180fbbb2SMichael Klier                $this->MonthStart = 0;
155180fbbb2SMichael Klier            }
156de76d2a4SMichael Klier
157de76d2a4SMichael Klier            // turn off caching
158de76d2a4SMichael Klier            $renderer->info['cache'] = false;
159de76d2a4SMichael Klier
160de76d2a4SMichael Klier            $renderer->doc .= '<div class="plugin_wikicalendar">' . DOKU_LF;
161de76d2a4SMichael Klier            $renderer->doc .= $this->_month_xhtml();
162de76d2a4SMichael Klier            $renderer->doc .= $this->_form_go2();
163de76d2a4SMichael Klier            $renderer->doc .= '</div>' . DOKU_LF;
164de76d2a4SMichael Klier
165db91b7a2SMichael Klier            date_default_timezone_set($tz);
166de76d2a4SMichael Klier            return true;
167de76d2a4SMichael Klier        }
168db91b7a2SMichael Klier
169de76d2a4SMichael Klier        return false;
170de76d2a4SMichael Klier    }
171de76d2a4SMichael Klier
172de76d2a4SMichael Klier    /**
173de76d2a4SMichael Klier     * Renders the Calendar (month-view)
174de76d2a4SMichael Klier     *
175de76d2a4SMichael Klier     * @author Michael Klier <chi@chimeric.de>
176de76d2a4SMichael Klier     */
177de76d2a4SMichael Klier    function _month_xhtml() {
178de76d2a4SMichael Klier        global $ID;
179de76d2a4SMichael Klier
180*f04822b5SNiko Spindler        $out = '';
181*f04822b5SNiko Spindler        $wd = 0;
182*f04822b5SNiko Spindler        $this->firstWeek = false;
183*f04822b5SNiko Spindler
184de76d2a4SMichael Klier        $script = script();
185de76d2a4SMichael Klier
186de76d2a4SMichael Klier        $prevMonth  = ($this->showMonth-1 > 0)  ? ($this->showMonth-1) : 12;
187de76d2a4SMichael Klier        $nextMonth  = ($this->showMonth+1 < 13) ? ($this->showMonth+1) : 1;
188de76d2a4SMichael Klier
189de76d2a4SMichael Klier        switch(true) {
190de76d2a4SMichael Klier            case($prevMonth == 12):
191de76d2a4SMichael Klier                $prevYear = ($this->showYear-1);
192de76d2a4SMichael Klier                $nextYear = $this->showYear;
193de76d2a4SMichael Klier                break;
194de76d2a4SMichael Klier            case($nextMonth == 1):
195de76d2a4SMichael Klier                $nextYear = ($this->showYear+1);
196de76d2a4SMichael Klier                $prevYear = $this->showYear;
197de76d2a4SMichael Klier                break;
198de76d2a4SMichael Klier            default:
199de76d2a4SMichael Klier                $prevYear = $this->showYear;
200de76d2a4SMichael Klier                $nextYear = $this->showYear;
201de76d2a4SMichael Klier                break;
202de76d2a4SMichael Klier        }
203de76d2a4SMichael Klier
204de76d2a4SMichael Klier        // create calendar-header
205de76d2a4SMichael Klier        $out .= <<<CALHEAD
206de76d2a4SMichael Klier<table class="plugin_wikicalendar">
207de76d2a4SMichael Klier  <tr>
208de76d2a4SMichael Klier    <th class="month">
209de76d2a4SMichael Klier      <form action="{$script}" method="post" class="prevnext">
210de76d2a4SMichael Klier        <input type="hidden" name="id" value="{$ID}" />
211de76d2a4SMichael Klier        <input type="hidden" name="plugin_wikicalendar_year" value="{$prevYear}" />
212de76d2a4SMichael Klier        <input type="hidden" name="plugin_wikicalendar_month" value="{$prevMonth}" />
213de76d2a4SMichael Klier        <input type="submit" class="btn_prev_month" name="submit" value="&larr;" accesskey="P" title="{$this->langMonth[$prevMonth]} {$prevYear}" />
214de76d2a4SMichael Klier      </form>
215de76d2a4SMichael Klier    </th>
216de76d2a4SMichael Klier    <th class="blank">&nbsp;</th>
217de76d2a4SMichael Klier    <th class="blank">&nbsp;</th>
218de76d2a4SMichael Klier    <th class="month">{$this->langMonth[$this->viewDate['mon']]}<br />{$this->showYear}<br /></th>
219de76d2a4SMichael Klier    <th class="blank">&nbsp;</th>
220de76d2a4SMichael Klier    <th class="blank">&nbsp;</th>
221de76d2a4SMichael Klier    <th class="month">
222de76d2a4SMichael Klier      <form action="{$script}" method="post" class="prevnext">
223de76d2a4SMichael Klier        <input type="hidden" name="id" value="{$ID}" />
224de76d2a4SMichael Klier        <input type="hidden" name="plugin_wikicalendar_year" value="{$nextYear}" />
225de76d2a4SMichael Klier        <input type="hidden" name="plugin_wikicalendar_month" value="{$nextMonth}" />
226de76d2a4SMichael Klier        <input type="submit" class="btn_next_month" name="submit" value="&rarr;" accesskey="N" title="{$this->langMonth[$nextMonth]} {$nextYear}" />
227de76d2a4SMichael Klier      </form>
228de76d2a4SMichael Klier    </th>
229de76d2a4SMichael Klier  </tr>
230de76d2a4SMichael KlierCALHEAD;
231de76d2a4SMichael Klier
232de76d2a4SMichael Klier        // create calendar weekday-headers
233de76d2a4SMichael Klier        $out .= "<tr>";
2345d6390e4SMichael Klier        if($this->getConf('weekstart') == 'Sunday') {
2355d6390e4SMichael Klier            $last = array_pop($this->langDays);
2365d6390e4SMichael Klier            array_unshift($this->langDays, $last);
2375d6390e4SMichael Klier        }
238de76d2a4SMichael Klier        foreach($this->langDays as $day) {
239de76d2a4SMichael Klier            $out .= '<td class="weekday">'.$day.'</td>';
240de76d2a4SMichael Klier        }
241de76d2a4SMichael Klier        $out .= "</tr>\n";
242de76d2a4SMichael Klier
243de76d2a4SMichael Klier        // create calendar-body
244de76d2a4SMichael Klier        for($i=1;$i<=$this->numDays;$i++) {
245de76d2a4SMichael Klier            $day = $i;
2466d279233SMichael Klier            //set day-wikipage - use leading zeros on new pages
2476d279233SMichael Klier            if($day < 10) {
2486d279233SMichael Klier                if(page_exists($this->month_ns.':'.$day)) {
249de76d2a4SMichael Klier                    $dayWP = $this->month_ns.':'.$day;
2506d279233SMichael Klier                } else {
2516d279233SMichael Klier                    $dayWP = $this->month_ns.':0'.$day;
2526d279233SMichael Klier                }
2536d279233SMichael Klier            } else {
2546d279233SMichael Klier                $dayWP = $this->month_ns.':'.$day;
2556d279233SMichael Klier            }
256de76d2a4SMichael Klier            // close row at end of week
257de76d2a4SMichael Klier            if($wd == 7) $out .= '</tr>';
258de76d2a4SMichael Klier            // set weekday
259de76d2a4SMichael Klier            if(!isset($wd) or $wd == 7) { $wd = 0; }
260de76d2a4SMichael Klier            // start new row when new week starts
261de76d2a4SMichael Klier            if($wd == 0) $out .= '<tr>';
262de76d2a4SMichael Klier
263de76d2a4SMichael Klier            // create blank fields up to the first day of the month
2645d6390e4SMichael Klier            $offset = ($this->getConf('weekstart') == 'Sunday') ? 0 : 1;
265de76d2a4SMichael Klier            if(!$this->firstWeek) {
2665d6390e4SMichael Klier                while($wd < ($this->MonthStart - $offset)) {
267de76d2a4SMichael Klier                    $out .= '<td class="blank">&nbsp;</td>';
268de76d2a4SMichael Klier                    $wd++;
269de76d2a4SMichael Klier                }
270de76d2a4SMichael Klier                // ok - first week is printet
271de76d2a4SMichael Klier                $this->firstWeek = true;
272de76d2a4SMichael Klier            }
273de76d2a4SMichael Klier
274de76d2a4SMichael Klier            // check for today
275de76d2a4SMichael Klier            if($this->today == $day) {
276de76d2a4SMichael Klier                $out .= '<td class="today">'.$this->_calendar_day($dayWP,$day).'</td>';
277de76d2a4SMichael Klier            } else {
278de76d2a4SMichael Klier                $out .= '<td class="day">'.$this->_calendar_day($dayWP,$day).'</td>';
279de76d2a4SMichael Klier            }
280de76d2a4SMichael Klier
281de76d2a4SMichael Klier            // fill remaining days with blanks
282de76d2a4SMichael Klier            if($i == $this->numDays && $wd < 7) {
283de76d2a4SMichael Klier                while($wd<7) {
284de76d2a4SMichael Klier                    $out .= '<td class="blank">&nbsp;</td>';
285de76d2a4SMichael Klier                    $wd++;
286de76d2a4SMichael Klier                }
287de76d2a4SMichael Klier                $out .= '</tr>';
288de76d2a4SMichael Klier            }
289de76d2a4SMichael Klier
290de76d2a4SMichael Klier            // dont forget to count weekdays
291de76d2a4SMichael Klier            $wd++;
292de76d2a4SMichael Klier        }
293de76d2a4SMichael Klier
294de76d2a4SMichael Klier        // finally close the table
295de76d2a4SMichael Klier        $out .= '</table>';
296de76d2a4SMichael Klier
297de76d2a4SMichael Klier        return ($out);
298de76d2a4SMichael Klier    }
299de76d2a4SMichael Klier
300de76d2a4SMichael Klier    /**
301de76d2a4SMichael Klier     * Generates the content of each day in the calendar-table.
302de76d2a4SMichael Klier     *
303de76d2a4SMichael Klier     * @author Michael Klier <chi@chimeric.de>
304de76d2a4SMichael Klier     */
305de76d2a4SMichael Klier    function _calendar_day($wp, $day) {
306de76d2a4SMichael Klier        global $lang;
307de76d2a4SMichael Klier        global $ID;
308*f04822b5SNiko Spindler        $out = '';
309de76d2a4SMichael Klier
310de76d2a4SMichael Klier        if(file_exists(wikiFN($wp))) {
311de76d2a4SMichael Klier            $out .= '<div class="isevent">';
312de76d2a4SMichael Klier            if(auth_quickaclcheck($wp) >= AUTH_READ) {
313*f04822b5SNiko Spindler                $out .= '<a href="' . wl($wp, array('do' => 'edit', 'plugin_wikicalendar_redirect_id' => $ID, 'plugin_wikicalendar_month' => $this->showMonth, 'plugin_wikicalendar_year' => $this->showYear)) . '" class="plugin_wikicalendar_btn" title="' . $lang['btn_edit'] . '"><img src="' . DOKU_BASE . 'lib/plugins/wikicalendar/img/edit01.png" alt="' . $lang['btn_edit'] . '" width="18" height="18" /></a>' . DOKU_LF;
314de76d2a4SMichael Klier            }
315de76d2a4SMichael Klier            $out .= '<div class="day_num"><a href="' . wl($wp) . '" class="wikilink1" title="' . $wp . '">'.$day.'</a></div>';
316de76d2a4SMichael Klier            $out .= '<div class="abstract">' . p_get_metadata($wp, 'description abstract') . '</div>' . DOKU_LF;
317de76d2a4SMichael Klier        } else {
318de76d2a4SMichael Klier            $out .= '<div class="noevent">';
319de76d2a4SMichael Klier            if(auth_quickaclcheck($wp) >= AUTH_CREATE) {
320de76d2a4SMichael Klier                //$out .= $this->_btn_add_day($wp);
321*f04822b5SNiko Spindler                $out .= '<a href="' . wl($wp, array('do' => 'edit', 'plugin_wikicalendar_redirect_id' => $ID, 'plugin_wikicalendar_month' => $this->showMonth, 'plugin_wikicalendar_year' => $this->showYear)) . '" class="plugin_wikicalendar_btn" title="' . $lang['btn_create'] . '"><img src="' . DOKU_BASE . 'lib/plugins/wikicalendar/img/edit01.png" alt="' . $lang['btn_edit'] . '" width="18" height="18" /></a>' . DOKU_LF;
322de76d2a4SMichael Klier            }
323de76d2a4SMichael Klier            $out .= '<div class="day_num">'.$day.'</div>';
324de76d2a4SMichael Klier        }
325de76d2a4SMichael Klier        $out .= '</div>';
326de76d2a4SMichael Klier        return ($out);
327de76d2a4SMichael Klier    }
328de76d2a4SMichael Klier
329de76d2a4SMichael Klier    /**
330de76d2a4SMichael Klier     * Generates a From to jump to selected dates
331de76d2a4SMichael Klier     *
332de76d2a4SMichael Klier     * @author Michael Klier <chi@chimeric.de>
333de76d2a4SMichael Klier     */
334de76d2a4SMichael Klier    function _form_go2() {
335*f04822b5SNiko Spindler        $out = '';
336de76d2a4SMichael Klier        global $ID;
337de76d2a4SMichael Klier
338de76d2a4SMichael Klier        $out .= '<table class="inline plugin_wikicalendar_go2">' . DOKU_LF;
339de76d2a4SMichael Klier
340de76d2a4SMichael Klier        $out .= '<form action="'.script().'" method="post">' . DOKU_LF;
341de76d2a4SMichael Klier        $out .= '<tr class="default">' . DOKU_LF;
342de76d2a4SMichael Klier        $out .= '<td><label>'.$this->getLang('year').':</label></td>' . DOKU_LF;
343de76d2a4SMichael Klier        $out .= '<td><div class="input">' . DOKU_LF;
344de76d2a4SMichael Klier        $out .= '<select id="year" name="plugin_wikicalendar_year">' . DOKU_LF;
345de76d2a4SMichael Klier
346de76d2a4SMichael Klier        $year_start = ($this->showYear != $this->curDate['year']) ? $this->showYear - 10 : $this->curDate['year'] - 5;
347de76d2a4SMichael Klier        $year_end   = $this->showYear + 10;
348de76d2a4SMichael Klier
349de76d2a4SMichael Klier        for($i=$year_start;$i<=$year_end;$i++) {
350de76d2a4SMichael Klier            if($i == $this->showYear || $i == $this->curDate['year']) {
351de76d2a4SMichael Klier                $out .= '<option value="'.$i.'" selected="selected">'.$i.'</option>' . DOKU_LF;
352de76d2a4SMichael Klier            } else {
353de76d2a4SMichael Klier                $out .= '<option value="'.$i.'">'.$i.'</option>' . DOKU_LF;
354de76d2a4SMichael Klier            }
355de76d2a4SMichael Klier        }
356de76d2a4SMichael Klier
357de76d2a4SMichael Klier        $out .= '</select>' . DOKU_LF;
358de76d2a4SMichael Klier        $out .= '</div>' . DOKU_LF;
359de76d2a4SMichael Klier        $out .= '</td>' . DOKU_LF;
360de76d2a4SMichael Klier        $out .= '<td><label>'.$this->getLang('mon').':</label></td>' . DOKU_LF;
361de76d2a4SMichael Klier        $out .= '<td><div class="input">' . DOKU_LF;
362de76d2a4SMichael Klier        $out .= '<select id="month" name="plugin_wikicalendar_month">' . DOKU_LF;
363de76d2a4SMichael Klier
36459e8a14bSMichael Klier        for($i=1;$i<=12;$i++) {
365de76d2a4SMichael Klier            if($i == $this->showMonth) {
366de76d2a4SMichael Klier                $out .= '<option value="'.$i.'" selected="selected">'.$this->langMonth[$i].'</option>' . DOKU_LF;
367de76d2a4SMichael Klier            } else {
368de76d2a4SMichael Klier                $out .= '<option value="'.$i.'">'.$this->langMonth[$i].'</option>' . DOKU_LF;
369de76d2a4SMichael Klier            }
370de76d2a4SMichael Klier        }
371de76d2a4SMichael Klier
372de76d2a4SMichael Klier        $out .= '</select>' . DOKU_LF;
373de76d2a4SMichael Klier        $out .= '</div>' . DOKU_LF;
374de76d2a4SMichael Klier        $out .= '</td>' . DOKU_LF;
375de76d2a4SMichael Klier        $out .= '<td><input type="hidden" name="id" value="'.$ID.'" />' . DOKU_LF;
376de76d2a4SMichael Klier        $out .= '<input type="submit" class="button" name="go2" value="'.$this->getLang('go').'" />' . DOKU_LF;
377de76d2a4SMichael Klier        $out .= '</form>' . DOKU_LF;
378de76d2a4SMichael Klier
379de76d2a4SMichael Klier        if($this->showYear != $this->curDate['year'] or $this->showMonth != $this->curDate['mon']) {
380de76d2a4SMichael Klier            $out .= '<form action="'.script().'" method="post" class="go2" onsubmit="">' . DOKU_LF;
381de76d2a4SMichael Klier            $out .= '<input type="hidden" name="id" value="'.$ID.'" />' . DOKU_LF;
382de76d2a4SMichael Klier            $out .= '<input type="submit" class="button" name="back2cur" value="'.$this->getLang('current').'" />' . DOKU_LF;
383de76d2a4SMichael Klier            $out .= '</form>' . DOKU_LF;
384de76d2a4SMichael Klier        } else {
385de76d2a4SMichael Klier            $out .= '</td></tr>' . DOKU_LF;
386de76d2a4SMichael Klier        }
387de76d2a4SMichael Klier
388de76d2a4SMichael Klier        $out .= '</table>' . DOKU_LF;
389de76d2a4SMichael Klier
390de76d2a4SMichael Klier        return ($out);
391de76d2a4SMichael Klier    }
392de76d2a4SMichael Klier}
393de76d2a4SMichael Klier//Setup Vim: tabstop=4 enc=utf8
394