2 // PukiWiki - Yet another WikiWikiWeb clone
4 // Copyright 2002-2017 PukiWiki Development Team
5 // License: GPL v2 or (at your option) any later version
10 // #calendar2({[pagename|*],[yyyymm],[off]})
11 // off: Don't view today's
13 function plugin_calendar2_convert()
15 global $vars, $post, $get, $weeklabels, $WikiName, $BracketName;
16 global $_calendar2_plugin_edit, $_calendar2_plugin_empty;
18 $script = get_base_uri();
19 $date_str = get_date('Ym');
20 $base = strip_bracket($vars['page']);
23 if (func_num_args()) {
24 $args = func_get_args();
25 foreach ($args as $arg) {
26 if (is_numeric($arg) && strlen($arg) == 6) {
28 } else if ($arg == 'off') {
31 $base = strip_bracket($arg);
39 $prefix = $base . '/';
41 $r_base = rawurlencode($base);
42 $s_base = htmlsc($base);
43 $r_prefix = rawurlencode($prefix);
44 $s_prefix = htmlsc($prefix);
46 $yr = substr($date_str, 0, 4);
47 $mon = substr($date_str, 4, 2);
48 if ($yr != get_date('Y') || $mon != get_date('m')) {
52 $now_day = get_date('d');
56 $today = getdate(mktime(0, 0, 0, $mon, $now_day, $yr) - LOCALZONE + ZONETIME);
58 $m_num = $today['mon'];
59 $d_num = $today['mday'];
60 $year = $today['year'];
62 $f_today = getdate(mktime(0, 0, 0, $m_num, 1, $year) - LOCALZONE + ZONETIME);
63 $wday = $f_today['wday'];
66 $m_name = $year . '.' . $m_num;
68 $y = substr($date_str, 0, 4) + 0;
69 $m = substr($date_str, 4, 2) + 0;
71 $prev_date_str = ($m == 1) ?
72 sprintf('%04d%02d', $y - 1, 12) : sprintf('%04d%02d', $y, $m - 1);
74 $next_date_str = ($m == 12) ?
75 sprintf('%04d%02d', $y + 1, 1) : sprintf('%04d%02d', $y, $m + 1);
79 $ret = '<table border="0" summary="calendar frame">' . "\n" .
81 ' <td valign="top">' . "\n";
84 <table class="style_calendar" cellspacing="1" width="150" border="0" summary="calendar body">
86 <td class="style_td_caltop" colspan="7">
87 <a href="$script?plugin=calendar2&file=$r_base&date=$prev_date_str"><<</a>
88 <strong>$m_name</strong>
89 <a href="$script?plugin=calendar2&file=$r_base&date=$next_date_str">>></a>
92 if ($prefix) $ret .= "\n" .
93 ' <br />[<a href="' . get_page_uri($base) . '">' . $s_base . '</a>]';
100 foreach($weeklabels as $label)
101 $ret .= ' <td class="style_td_week">' . $label . '</td>' . "\n";
103 $ret .= ' </tr>' . "\n" .
106 for ($i = 0; $i < $wday; $i++)
107 $ret .= ' <td class="style_td_blank"> </td>' . "\n";
109 while (checkdate($m_num, $day, $year)) {
110 $dt = sprintf('%4d-%02d-%02d', $year, $m_num, $day);
111 $page = $prefix . $dt;
112 $r_page = pagename_urlencode($page);
113 $s_page = htmlsc($page);
115 if ($wday == 0 && $day > 1)
120 $style = 'style_td_day'; // Weekday
121 if (! $other_month && ($day == $today['mday']) && ($m_num == $today['mon']) && ($year == $today['year'])) { // Today
122 $style = 'style_td_today';
123 } else if ($wday == 0) { // Sunday
124 $style = 'style_td_sun';
125 } else if ($wday == 6) { // Saturday
126 $style = 'style_td_sat';
129 if (is_page($page)) {
130 $link = '<a href="' . get_page_uri($page) . '" title="' . $s_page .
131 '"><strong>' . $day . '</strong></a>';
134 $link = '<span class="small">' . $day . '</small>';
136 $link = $script . '?cmd=edit&page=' . $r_page . '&refer=' . $r_base;
137 $link = '<a class="small" href="' . $link . '" title="' . $s_page . '">' . $day . '</a>';
141 $ret .= ' <td class="' . $style . '">' . "\n" .
149 while ($wday++ < 7) // Blank
150 $ret .= ' <td class="style_td_blank"> </td>' . "\n";
152 $ret .= ' </tr>' . "\n" .
156 $tpage = $prefix . sprintf('%4d-%02d-%02d', $today['year'],
157 $today['mon'], $today['mday']);
158 $r_tpage = rawurlencode($tpage);
159 if (is_page($tpage)) {
160 $_page = $vars['page'];
161 $get['page'] = $post['page'] = $vars['page'] = $tpage;
162 $str = convert_html(get_source($tpage));
163 $str .= '<hr /><a class="small" href="' . $script .
164 '?cmd=edit&page=' . $r_tpage . '">' .
165 $_calendar2_plugin_edit . '</a>';
166 $get['page'] = $post['page'] = $vars['page'] = $_page;
168 $str = sprintf($_calendar2_plugin_empty,
169 make_pagelink(sprintf('%s%4d-%02d-%02d', $prefix,
170 $today['year'], $today['mon'], $today['mday'])));
172 $ret .= ' </td>' . "\n" .
173 ' <td valign="top">' . $str . '</td>' . "\n" .
181 function plugin_calendar2_action()
185 $page = strip_bracket($vars['page']);
187 if ($vars['file']) $vars['page'] = $vars['file'];
189 $date = $vars['date'];
191 if ($date == '') $date = get_date('Ym');
192 $yy = sprintf('%04d.%02d', substr($date, 0, 4),substr($date, 4, 2));
194 $aryargs = array($vars['page'], $date);
195 $s_page = htmlsc($vars['page']);
197 $ret['msg'] = 'calendar ' . $s_page . '/' . $yy;
198 $ret['body'] = call_user_func_array('plugin_calendar2_convert', $aryargs);
200 $vars['page'] = $page;