** bugtrack_status.inc.php [#edc979fc] |RIGHT:100|LEFT:360|c |~サマリ|bugtrack_status| |~サマリ|bugtrackの状態書き換えプラグイン| |~リビジョン|1.0| |~対応バージョン|1.4.5_1で確認| |~投稿者|[[a-isd]]| |~投稿日|&new{2006-03-17 (金) 18:42:28};| *概要 [#i1570bb2] bugtrackは便利なんだが、ステータスを変える面倒くささを何とかしたいと思って作ったプラグインです。 状態のセレクションを出し、選んで「変更」ボタン1発で本文中の -状態: で始まる行を見つけて書き換えます。「着手」とすべきところを「作業中」などど変えてしまい行が真っ赤になって慌てて書き換えることを無くせます。 どう動くのか試すには、プラグインをインストールし、 -状態: #bugtrack_status だけ書いたページを作ってみてください。 変更ボタンを押すたびに状態行を書き換え、変更履歴を残していきます。 *説明 [#hd2e22b7] bugtrack_statusは引数をとります。 #bugtrack_status('提案','着手','テスト中','承認待ち','リリース待ち','完了','保留','却下') の様に。取った引数がセレクションに現れます。 引数がない場合、bugtrack標準の '提案','着手','CVS待ち','完了','保留','却下' がセレクションになります。 bugtrackにこれを組み込むには、bugtrack.inc.phpを書き換え、bugtrackが新しくページを作る際のテンプレートに埋め込めばOKです。 *ライセンス [#t71482ef] CC-GNU LGPL *ソース [#tcead5b4] bugtrack_status.inc.php <?php /* Bugtrack Status plugin * * Licence: CC-GNU LGPL * * rev1.0 by ISHIDA,Akiya (email:ishida-pkw63h@kardia.co.jp) on 2006/3/17 */ function plugin_bugtrack_status_action() { global $script, $vars, $now, $_title_updated, $_no_name; global $_msg_comment_collided, $_title_comment_collided; if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing'); $oldpage = get_source($vars['refer']); foreach ($oldpage as $line) { if (preg_match('/^-状態:/',$line)){ $page[]='-状態: '.$vars['status']."\n"; } elseif (preg_match('/#bugtrack_status/',$line)){ $page[]='--'.$vars['status'].' '.$now."\n"; $page[]=$line; } else $page[]=$line; } $title = $_title_updated; $body = ''; if (md5(@join('', $oldpage)) != $vars['digest']) { $title = $_title_comment_collided; $body = $_msg_comment_collided . make_pagelink($vars['refer']); } page_write($vars['refer'], join('',$page)); $retvars['msg'] = $title; $retvars['body'] = $body; $vars['page'] = $vars['refer']; return $retvars; } function plugin_bugtrack_status_convert() { global $script, $vars, $digest; if (PKWK_READONLY) return ''; // Show nothing $page = get_source($vars['page']); foreach ($page as $line) { if (preg_match('/^-状態:\s(\S+)/',$line,$m)){ $status=$m[1]; break; } } $options = func_num_args() ? func_get_args() : array('提案','着手','CVS待ち','完了','保留','却下'); $s_page = htmlspecialchars($vars['page']); foreach ($options as $v){ $sels[]=sprintf('<option value="%s"%s>%s</option>',$v,($status==$v)?" selected":"",$v); } $sels = join('',$sels); $string = <<<EOD <div> <form action="$script" method="post"> <input type="hidden" name="refer" value="$s_page" /> <input type="hidden" name="plugin" value="bugtrack_status" /> <input type="hidden" name="digest" value="$digest" /> <select name="status"> $sels </select> <input type="submit" name="bugtrack_status" value="変更" /> </form> </div> EOD; return $string; }