Tracker_list プラグインの無駄な処理

[fixed] fixed heading anchor を削除する処理が過剰 (二回目は不要のはず)

次の部分の処理が無駄だと思うのですが、いかがでしょう。

// $Id: tracker.inc.php,v 1.36 2007/03/29 15:05:52 henoheno Exp $
(中略)
class Tracker_list
{
(中略)
	function add($page,$name)
	{
(中略)
		$source = plugin_tracker_get_source($page);
		if (preg_match('/move\sto\s(.+)/',$source[0],$matches))
		{
(中略)
			return $this->add($page,$name);
		}
		$source = join('',preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/','$1$2',$source)); //無駄だと思う部分

(中略)
function plugin_tracker_get_source($page)
{
	$source = get_source($page);
	// 見出しの固有ID部を削除
	$source = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m','$1$2',$source);
	// #freezeを削除
	return preg_replace('/^#freeze\s*$/im', '', $source);
}

plugin_tracker_get_source の途中、preg_replace でアンカー名を消す置き換えをしているのに、
plugin_tracker_get_source で呼び出したソースに、もう一度アンカー名を消す置き換えをしようとしています。
この部分は、

-		$source = join('',preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/','$1$2',$source));
+		$source = join('',$source);

と修正したほうが、よいと思います。


[fixed] unset() すべきリソース


[fixed] 不要なフィールドをテーブルに抱え込んでいる


[rejected] その他: $this->order


[fixed] その他: 表示上限をマイナスで指定した時



その他: ヘルプの記載と実際の動作の違いについて


改行の扱い (tracker_listにおいて、表が崩れたり、意図しないWiki textが生成される原因)


コメント



補足

Tracker_field->Tracker_field()
plugin_tracker_get_fields() で、クラスのインスタンスを生成する時に、呼び出される。
Tracker_field->get_tag()
plugin_tracker_convert() が、入力フォームを形成するために、呼び出す。
Tracker_field->get_style()
Tracker_list->replace_item() が、リストの各項目に応じてテンプレートで設定したスタイルを適用するために、呼び出す。
例えば、defaultの[Status]で、提案のスタイルを適用すると、BGCOLOR(#ffccff):データとなる。
 単純に%s を各データに置き換えるだけなので、
表形式以外でこの機能を使うには、「&color(,#ffccff){%s};」のように設定する必要がある。
Tracker_field->format_value()
plugin_tracker_action() が、フォームから送信されたデータをページに書き込むデータに変換するために、呼び出す。
Tracker_field->format_cell()
Tracker_list->replace_item() が、ページに記録されたデータをリストに表示する形式に変換するために、呼び出す。
例えば、textarea のデータを表形式に対応させるため改行を削除する(表形式以外でもこの処理は固定ですけど)
例えば、[_update]等の日時データを人が読める形式にする
 など...
Tracker_field->get_value()
Tracker_list->sort() が、ソート専用の値を得るために、呼び出す。
例えば、defaultの[Status]は、提案は0番、着手は1番、...、却下は5番、これ以外は値そのまま、を数値的比較でソートする。
ただ、その他の値は、意図した順番(最初か最後)にならない可能性があります。

test
TEST

*test&br;TEST
test
TEST
test
TEST
:test&br;TEST|test&br;TEST
test
TEST
test
TEST
|test&br;TEST|test&br;TEST|
test
TEST
test
TEST
,test&br;TEST,test&br;TEST
-test&br;TEST

test
TEST

&size(22){test&br;TEST};

*1 ある程度コメント等がある(データ量のある)ページでないと...
*2 各ページのソースが5 Kバイトで400 ページある、としても約2 Mバイトですし、全項目をリスト化するわけでもないし
*3 デフォルトなら、:config/plugin/tracker/default
*4 リストのページで設定すれば表示できるが、表形式の場合、表示が崩れる可能性がある
*5 例えば、テストする時
*6 まとめページみたくなってきてる(汗)
*7 bracketで項目名を書き込むあの手法を止めれば

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-09-24 (月) 16:09:41
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.215 sec.

SourceForge