3 * PukiWiki BugTrack¥×¥é¥°¥¤¥ó
5 * CopyRight 2002 Y.MASUI GPL2
6 * http://masui.net/pukiwiki/ masui@masui.net
11 * $Id: bugtrack.inc.php,v 1.21 2005/01/23 07:17:37 henoheno Exp $
14 function plugin_bugtrack_init()
17 '_bugtrack_plugin_priority_list' => array('¶ÛµÞ', '½ÅÍ×', 'ÉáÄÌ', 'Äã'),
18 '_bugtrack_plugin_state_list' => array('Äó°Æ', 'Ãå¼ê', 'CVSÂÔ¤Á', '´°Î»', 'ÊÝα', 'µÑ²¼'),
19 '_bugtrack_plugin_state_sort' => array('Ãå¼ê', 'CVSÂÔ¤Á', 'ÊÝα', '´°Î»', 'Äó°Æ', 'µÑ²¼'),
20 '_bugtrack_plugin_state_bgcolor' => array('#ccccff', '#ffcc99', '#ccddcc', '#ccffcc', '#ffccff', '#cccccc', '#ff3333'),
22 '_bugtrack_plugin_title' => '$1 Bugtrack Plugin',
23 '_bugtrack_plugin_base' => '¥Ú¡¼¥¸',
24 '_bugtrack_plugin_summary' => '¥µ¥Þ¥ê',
25 '_bugtrack_plugin_priority' => 'Í¥Àè½ç°Ì',
26 '_bugtrack_plugin_state' => '¾õÂÖ',
27 '_bugtrack_plugin_name' => 'Åê¹Æ¼Ô',
28 '_bugtrack_plugin_date' => 'Åê¹ÆÆü',
29 '_bugtrack_plugin_body' => '¥á¥Ã¥»¡¼¥¸',
30 '_bugtrack_plugin_category' => '¥«¥Æ¥´¥ê¡¼',
31 '_bugtrack_plugin_pagename' => '¥Ú¡¼¥¸Ì¾',
32 '_bugtrack_plugin_pagename_comment' => '<small>¶õÍó¤Î¤Þ¤Þ¤À¤È¼«Æ°Åª¤Ë¥Ú¡¼¥¸Ì¾¤¬¿¶¤é¤ì¤Þ¤¹¡£</small>',
33 '_bugtrack_plugin_version_comment' => '<small>¶õÍó¤Ç¤â¹½¤¤¤Þ¤»¤ó</small>',
34 '_bugtrack_plugin_version' => '¥Ð¡¼¥¸¥ç¥ó',
35 '_bugtrack_plugin_submit' => 'ÄɲÃ'
37 set_plugin_messages($messages);
40 function plugin_bugtrack_action()
42 global $post, $vars, $_bugtrack_plugin_title;
44 if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
46 if ($post['mode'] == 'submit') {
47 $page = plugin_bugtrack_write($post['base'], $post['pagename'], $post['summary'],
48 $post['name'], $post['priority'], $post['state'], $post['category'],
49 $post['version'], $post['body']);
51 header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
57 $ret['msg'] = $_bugtrack_plugin_title;
58 $ret["body"] = plugin_bugtrack_print_form($vars['category']);
65 function plugin_bugtrack_print_form($base, $category)
67 global $_bugtrack_plugin_priority_list,$_bugtrack_plugin_state_list;
68 global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name;
69 global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_body;
70 global $_bugtrack_plugin_summary, $_bugtrack_plugin_submit, $_bugtrack_plugin_version;
71 global $_bugtrack_plugin_pagename, $_bugtrack_plugin_pagename_comment;
72 global $_bugtrack_plugin_version_comment;
75 $select_priority = '';
76 for ($i = 0; $i < count($_bugtrack_plugin_priority_list); ++$i) {
77 if ($i < count($_bugtrack_plugin_priority_list) - 1) {
80 $selected = ' selected="selected"';
82 $select_priority .= '<option value="' . $_bugtrack_plugin_priority_list[$i] . '"' .
83 $selected . '>' . $_bugtrack_plugin_priority_list[$i] . '</option>' . "\n";
87 for ($i = 0; $i < count($_bugtrack_plugin_state_list); ++$i)
88 $select_state .= '<option value="' . $_bugtrack_plugin_state_list[$i] . '">' .
89 $_bugtrack_plugin_state_list[$i] . '</option>' . "\n";
91 if (empty($category)) {
92 $encoded_category = '<input name="category" type="text" />';
94 $encoded_category = '<select name="category">';
95 foreach ($category as $_category) {
96 $s_category = htmlspecialchars($_category);
97 $encoded_category .= '<option value="' . $s_category . '">' .
98 $s_category . '</option>' . "\n";
100 $encoded_category .= '</select>';
103 $s_base = htmlspecialchars($base);
106 <form action="$script" method="post">
109 <th>$_bugtrack_plugin_name</th>
110 <td><input name="name" size="20" type="text" /></td>
113 <th>$_bugtrack_plugin_category</th>
114 <td>$encoded_category</td>
117 <th>$_bugtrack_plugin_priority</th>
118 <td><select name="priority">$select_priority</select></td>
121 <th>$_bugtrack_plugin_state</th>
122 <td><select name="state">$select_state</select></td>
125 <th>$_bugtrack_plugin_pagename</th>
126 <td><input name="pagename" size="20" type="text" />$_bugtrack_plugin_pagename_comment</td>
129 <th>$_bugtrack_plugin_version</th>
130 <td><input name="version" size="10" type="text" />$_bugtrack_plugin_version_comment</td>
133 <th>$_bugtrack_plugin_summary</th>
134 <td><input name="summary" size="60" type="text" /></td>
137 <th>$_bugtrack_plugin_body</th>
138 <td><textarea name="body" cols="60" rows="6"></textarea></td>
141 <td colspan="2" align="center">
142 <input type="submit" value="$_bugtrack_plugin_submit" />
143 <input type="hidden" name="plugin" value="bugtrack" />
144 <input type="hidden" name="mode" value="submit" />
145 <input type="hidden" name="base" value="$s_base" />
155 function plugin_bugtrack_template($base, $summary, $name, $priority, $state, $category, $version, $body)
157 global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name;
158 global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_base;
159 global $_bugtrack_plugin_body, $_bugtrack_plugin_version;
160 global $script, $WikiName;
162 if (! preg_match("/^$WikiName$$/",$name)) $name = '[[' . $name . ']]';
163 if (! preg_match("/^$WikiName$$/",$base)) $base = '[[' . $base . ']]';
168 -$_bugtrack_plugin_base: $base
169 -$_bugtrack_plugin_name: $name
170 -$_bugtrack_plugin_priority: $priority
171 -$_bugtrack_plugin_state: $state
172 -$_bugtrack_plugin_category: $category
173 -$_bugtrack_plugin_date: now?
174 -$_bugtrack_plugin_version: $version
176 **$_bugtrack_plugin_body
184 function plugin_bugtrack_write($base, $pagename, $summary, $name, $priority, $state, $category, $version, $body)
188 $base = strip_bracket($base);
189 $pagename = strip_bracket($pagename);
191 $postdata = plugin_bugtrack_template($base, $summary, $name, $priority,
192 $state, $category, $version, $body);
197 $page = $base . '/' . $i;
198 } while (is_page($page));
200 if ($pagename == '') {
201 page_write($page, $postdata);
203 $pagename = get_fullname($pagename, $base);
204 // ¤¹¤Ç¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¤«¡¢Ìµ¸ú¤Ê¥Ú¡¼¥¸Ì¾¤¬»ØÄꤵ¤ì¤¿
205 if (is_page($pagename) || ! is_pagename($pagename)) {
206 $pagename = $page; // ¥Ú¡¼¥¸Ì¾¤ò¥Ç¥Õ¥©¥ë¥È¤ËÌ᤹
208 page_write($page, 'move to [[' . $pagename . ']]');
210 page_write($pagename, $postdata);
216 function plugin_bugtrack_convert()
220 if (PKWK_READONLY) return ''; // Show nothing
222 $base = $vars['page'];
224 if (func_num_args() > 0) {
225 $args = func_get_args();
227 $_base = strip_bracket(array_shift($category));
228 $_base = get_fullname($_base, $base);
229 if (is_pagename($_base)) $base = $_base;
232 return plugin_bugtrack_print_form($base, $category);
236 function plugin_bugtrack_pageinfo($page, $no = NULL)
238 global $WikiName, $InterWikiName, $BracketName;
241 $no = preg_match('/\/([0-9]+)$/', $page, $matches) ? $matches[1] : 0;
243 $source = get_source($page);
245 if (preg_match("/move\s*to\s*($WikiName|$InterWikiName|\[\[$BracketName\]\])/", $source[0], $match))
246 return plugin_bugtrack_pageinfo(strip_bracket($match[1]), $no);
248 $body = join("\n", $source);
249 $summary = $name = $priority = $state = $category = 'test';
251 foreach(array('summary', 'name', 'priority', 'state', 'category') as $item) {
252 $itemname = '_bugtrack_plugin_' . $item;
254 $itemname = $$itemname;
255 if (preg_match("/-\s*$itemname\s*:\s*(.*)\s*/", $body, $matches)) {
256 if ($item == 'name') {
257 $$item = htmlspecialchars(strip_bracket($matches[1]));
259 $$item = htmlspecialchars($matches[1]);
264 if (preg_match("/\*([^\n]+)/", $body, $matches)) {
265 $summary = $matches[1];
266 make_heading($summary);
269 return array($page, $no, $summary, $name, $priority, $state, $category);
272 function plugin_bugtrack_list_convert()
274 global $script, $vars;
275 global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name;
276 global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_summary;
277 global $_bugtrack_plugin_state_sort,$_bugtrack_plugin_state_list,$_bugtrack_plugin_state_bgcolor;
279 $page = $vars['page'];
280 if (func_num_args()) {
281 list($_page) = func_get_args();
282 $_page = get_fullname(strip_bracket($_page),$page);
283 if (is_pagename($_page)) $page = $_page;
287 $pattern = $page . '/';
288 $pattern_len = strlen($pattern);
289 foreach (get_existpages() as $page) {
290 if (strpos($page, $pattern) === 0 && is_numeric(substr($page, $pattern_len))) {
291 $line = plugin_bugtrack_pageinfo($page);
292 array_push($data, $line);
297 for ($i = 0; $i <= count($_bugtrack_plugin_state_list) + 1; ++$i)
298 $table[$i] = array();
300 foreach ($data as $line) {
301 list($page, $no, $summary, $name, $priority, $state, $category) = $line;
302 $page_link = make_pagelink($page);
303 $state_no = array_search($state, $_bugtrack_plugin_state_sort);
304 if ($state_no === NULL || $state_no === FALSE)
305 $state_no = count($_bugtrack_plugin_state_list);
307 $bgcolor = $_bugtrack_plugin_state_bgcolor[$state_no];
310 <td style="background-color:$bgcolor">$page_link</td>
311 <td style="background-color:$bgcolor">$state</td>
312 <td style="background-color:$bgcolor">$priority</td>
313 <td style="background-color:$bgcolor">$category</td>
314 <td style="background-color:$bgcolor">$name</td>
315 <td style="background-color:$bgcolor">$summary</td>
318 $table[$state_no][$no] = $row;
323 <th>$_bugtrack_plugin_state</th>
324 <th>$_bugtrack_plugin_priority</th>
325 <th>$_bugtrack_plugin_category</th>
326 <th>$_bugtrack_plugin_name</th>
327 <th>$_bugtrack_plugin_summary</th>
330 for ($i = 0; $i <= count($_bugtrack_plugin_state_list); ++$i) {
331 ksort($table[$i], SORT_NUMERIC);
332 $table_html .= join("\n", $table[$i]);
335 return '<table border="1">' . "\n" . $table_html . '</table>';