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