3 * PukiWiki BugTrack¥×¥é¥°¥¤¥ó
5 * CopyRight 2002 Y.MASUI GPL2
6 * http://masui.net/pukiwiki/ masui@masui.net
11 * $Id: bugtrack.inc.php,v 1.19 2004/12/25 00:43:22 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 ($post['mode'] == 'submit') {
45 $page = plugin_bugtrack_write($post['base'], $post['pagename'], $post['summary'],
46 $post['name'], $post['priority'], $post['state'], $post['category'],
47 $post['version'], $post['body']);
49 header('Location: ' . get_script_uri() . '?' . rawurlencode($page));
55 $ret['msg'] = $_bugtrack_plugin_title;
56 $ret["body"] = plugin_bugtrack_print_form($vars['category']);
63 function plugin_bugtrack_print_form($base,$category)
65 global $_bugtrack_plugin_priority_list,$_bugtrack_plugin_state_list;
66 global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name;
67 global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_body;
68 global $_bugtrack_plugin_summary, $_bugtrack_plugin_submit, $_bugtrack_plugin_version;
69 global $_bugtrack_plugin_pagename, $_bugtrack_plugin_pagename_comment;
70 global $_bugtrack_plugin_version_comment;
73 $select_priority = '';
74 for ($i = 0; $i < count($_bugtrack_plugin_priority_list); ++$i) {
75 if ($i < count($_bugtrack_plugin_priority_list) - 1) {
79 $selected = ' selected="selected"';
81 $select_priority .= "<option value=\"{$_bugtrack_plugin_priority_list[$i]}\"$selected>{$_bugtrack_plugin_priority_list[$i]}</option>\n";
85 for ($i = 0; $i < count($_bugtrack_plugin_state_list); ++$i) {
86 $select_state .= "<option value=\"{$_bugtrack_plugin_state_list[$i]}\">{$_bugtrack_plugin_state_list[$i]}</option>\n";
89 if (count($category) == 0) {
90 $encoded_category = '<input name="category" type="text" />';
93 $encoded_category = '<select name="category">';
94 foreach ($category as $_category) {
95 $s_category = htmlspecialchars($_category);
96 $encoded_category .= "<option value=\"$s_category\">$s_category</option>\n";
98 $encoded_category .= '</select>';
101 $s_base = htmlspecialchars($base);
104 <form action="$script" method="post">
107 <th>$_bugtrack_plugin_name</th>
108 <td><input name="name" size="20" type="text" /></td>
111 <th>$_bugtrack_plugin_category</th>
112 <td>$encoded_category</td>
115 <th>$_bugtrack_plugin_priority</th>
116 <td><select name="priority">$select_priority</select></td>
119 <th>$_bugtrack_plugin_state</th>
120 <td><select name="state">$select_state</select></td>
123 <th>$_bugtrack_plugin_pagename</th>
124 <td><input name="pagename" size="20" type="text" />$_bugtrack_plugin_pagename_comment</td>
127 <th>$_bugtrack_plugin_version</th>
128 <td><input name="version" size="10" type="text" />$_bugtrack_plugin_version_comment</td>
131 <th>$_bugtrack_plugin_summary</th>
132 <td><input name="summary" size="60" type="text" /></td>
135 <th>$_bugtrack_plugin_body</th>
136 <td><textarea name="body" cols="60" rows="6"></textarea></td>
139 <td colspan="2" align="center">
140 <input type="submit" value="$_bugtrack_plugin_submit" />
141 <input type="hidden" name="plugin" value="bugtrack" />
142 <input type="hidden" name="mode" value="submit" />
143 <input type="hidden" name="base" value="$s_base" />
153 function plugin_bugtrack_template($base, $summary, $name, $priority, $state, $category, $version, $body)
155 global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name;
156 global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_base;
157 global $_bugtrack_plugin_body, $_bugtrack_plugin_version;
158 global $script, $WikiName;
160 if (!preg_match("/^$WikiName$$/",$name)) {
164 if (!preg_match("/^$WikiName$$/",$base)) {
170 -$_bugtrack_plugin_base: $base
171 -$_bugtrack_plugin_name: $name
172 -$_bugtrack_plugin_priority: $priority
173 -$_bugtrack_plugin_state: $state
174 -$_bugtrack_plugin_category: $category
175 -$_bugtrack_plugin_date: now?
176 -$_bugtrack_plugin_version: $version
178 **$_bugtrack_plugin_body
186 function plugin_bugtrack_write($base, $pagename, $summary, $name, $priority, $state, $category, $version, $body)
190 $base = strip_bracket($base);
191 $pagename = strip_bracket($pagename);
193 $postdata = plugin_bugtrack_template($base, $summary, $name, $priority, $state, $category, $version, $body);
199 } while (is_page($page));
201 if ($pagename == '') {
202 page_write($page,$postdata);
205 $pagename = get_fullname($pagename,$base);
206 // ¤¹¤Ç¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¤«¡¢Ìµ¸ú¤Ê¥Ú¡¼¥¸Ì¾¤¬»ØÄꤵ¤ì¤¿
207 if (is_page($pagename) or !is_pagename($pagename)) {
208 // ¥Ú¡¼¥¸Ì¾¤ò¥Ç¥Õ¥©¥ë¥È¤ËÌ᤹
212 page_write($page,"move to [[$pagename]]");
214 page_write($pagename,$postdata);
220 function plugin_bugtrack_convert()
224 $base = $vars['page'];
226 if (func_num_args() > 0) {
227 $args = func_get_args();
229 $_base = strip_bracket(array_shift($category));
230 $_base = get_fullname($_base,$base);
231 if (is_pagename($_base))
237 return plugin_bugtrack_print_form($base,$category);
241 function plugin_bugtrack_pageinfo($page,$no = NULL)
243 global $WikiName, $InterWikiName, $BracketName;
246 $no = preg_match('/\/([0-9]+)$/',$page,$matches) ? $matches[1] : 0;
249 $source = get_source($page);
250 if (preg_match("/move\s*to\s*($WikiName|$InterWikiName|\[\[$BracketName\]\])/",$source[0],$match)) {
251 return plugin_bugtrack_pageinfo(strip_bracket($match[1]),$no);
254 $body = join("\n",$source);
255 $summary = $name = $priority = $state = $category = 'test';
257 foreach(array('summary','name','priority','state','category') as $item) {
258 $itemname = '_bugtrack_plugin_'.$item;
260 $itemname = $$itemname;
261 if (preg_match("/-\s*$itemname\s*:\s*(.*)\s*/",$body,$matches)) {
262 if ($item == 'name') {
263 $$item = htmlspecialchars(strip_bracket($matches[1]));
266 $$item = htmlspecialchars($matches[1]);
271 if (preg_match("/\*([^\n]+)/",$body,$matches)) {
272 $summary = $matches[1];
273 make_heading($summary);
276 return array($page, $no, $summary, $name, $priority, $state, $category);
279 function plugin_bugtrack_list_convert()
281 global $script,$vars;
282 global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name;
283 global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_summary;
284 global $_bugtrack_plugin_state_sort,$_bugtrack_plugin_state_list,$_bugtrack_plugin_state_bgcolor;
286 $page = $vars['page'];
287 if (func_num_args()) {
288 list($_page) = func_get_args();
289 $_page = get_fullname(strip_bracket($_page),$page);
290 if (is_pagename($_page))
298 $pattern_len = strlen($pattern);
299 foreach (get_existpages() as $page) {
300 if (strpos($page,$pattern) === 0 and is_numeric(substr($page,$pattern_len))) {
301 $line = plugin_bugtrack_pageinfo($page);
302 array_push($data,$line);
307 for ($i = 0; $i <= count($_bugtrack_plugin_state_list) + 1; ++$i) {
308 $table[$i] = array();
311 foreach ($data as $line) {
312 list($page, $no, $summary, $name, $priority, $state, $category) = $line;
313 $page_link = make_pagelink($page);
314 $state_no = array_search($state,$_bugtrack_plugin_state_sort);
315 if ($state_no === NULL or $state_no === FALSE) {
316 $state_no = count($_bugtrack_plugin_state_list);
319 $bgcolor = $_bugtrack_plugin_state_bgcolor[$state_no];
322 <td style="background-color:$bgcolor">$page_link</td>
323 <td style="background-color:$bgcolor">$state</td>
324 <td style="background-color:$bgcolor">$priority</td>
325 <td style="background-color:$bgcolor">$category</td>
326 <td style="background-color:$bgcolor">$name</td>
327 <td style="background-color:$bgcolor">$summary</td>
330 $table[$state_no][$no] = $row;
335 <th>$_bugtrack_plugin_state</th>
336 <th>$_bugtrack_plugin_priority</th>
337 <th>$_bugtrack_plugin_category</th>
338 <th>$_bugtrack_plugin_name</th>
339 <th>$_bugtrack_plugin_summary</th>
342 for ($i = 0; $i <= count($_bugtrack_plugin_state_list); ++$i) {
343 ksort($table[$i],SORT_NUMERIC);
344 $table_html .= join("\n",$table[$i]);
347 return "<table border=\"1\">\n$table_html</table>";