trakerプラグインの改造

  • trackerプラグインで、ページ作成時の命名規則をあらかじめ決められるようにするための改造パッチです。

パッチ

使用方法

  • あらかじめフィールドとして _name を定義します。 なお、指定可能なものは、タイプが select のものと、_date のみです。
  * fields
  |項目名  |見出し    |タイプ  |オプション|デフォルト|h
  |Proposer|投稿者    |page    |20        |anonymous |
  |Category|カテゴリー|select  |          |          |
  |Severity|重要度    |select  |          |低        |
  |Status  |状態      |select  |          |提案      |
  |Version |バージョン|text    |10        |          |
  |Summary |サマリ    |title   |60        |          |
  |Messages|メッセージ|textarea|60,6      |          |
+ |_name   |ページ名  |hidden  |          |[Category]/[_date]|
  • :config/plugin/tracker/hogehoge/form の _name は外しておいてください。
  |RIGHT:      |LEFT:     |c
  |~投稿者     |[Proposer]|
  |~カテゴリー |[Category]|
  |~優先順位   |[Severity]|
  |~状態       |[Status]  |
- |~ページ名   |[_name] &size(12){空欄のままだと自動的にページ名が振られます。};|
  |~バージョン |[Version] &size(12){空白でも構いません};|
  |~サマリ     |[Summary] |
  |~メッセージ |[Messages]|
  |>|CENTER:[_submit]     |
  • trackerでページを作成すると、選択したカテゴリー名/日付/連番 というページ名になります。

コメント

  • 今まで動作していたものが、パッチを当てることによって動作しなくなる恐れがあります。必ずバックアップを取ってからパッチをあててください。 -- teanan 2006-02-02 (木) 11:51:40
  • とっても素晴らしいのですが、text,titleフィールドも指定可能にしてほすぃ・・・。 -- satchmo 2006-03-07 (火) 08:37:58
    • text,titleフィールドに対応しようとしたのですが、処理のタイミング的にちょっと面倒なので、見送ってます (^^; -- teanan 2006-03-07 (火) 09:19:54
  • というか設置方法がよく分かりません(ダメ -- satchmo 2006-03-07 (火) 08:46:18
  • patchの当て方につきましては dev:diff をご参考にどうぞ。元の tracker.inc.phpはコピーして残しておいたほうが安心です。あとは普通にtrackerを設置するだけです。既に他のtrackerを設置されていた場合、影響を与える可能性がありますのでご注意ください。 -- teanan 2006-03-07 (火) 09:14:14
    • ・・・答えを外していたらすみません (^^; -- teanan 2006-03-07 (火) 09:22:37
  • teananさん早起きですね。親切にありがとうございます。select,_date属性はFAQで出ていたからだと思いますが、text,title等も含められるように出来るんでしょうか。 -- satchmo 2006-03-07 (火) 09:22:19
  • patchの当て方分かりました。Windowsのバイナリがあったので助かりました。外してませんよー。 -- satchmo 2006-03-07 (火) 09:41:06
  • 自分で出来ればとソース見ましたが、パソコン語は「もし、この場合は○○、そうでなければ▽▽、但し、□□は含まないが(rya」となかなか結論を言わないまどろっこしいヤツみたいで読み切れません・・・。 -- satchmo 2006-03-07 (火) 10:14:04
  • 試してみたところ、textフィールドは大丈夫っぽいです (^^; titleはダメのようです。 -- teanan 2006-03-07 (火) 10:37:54
  • おお!試してみます。titleなんでだめなんでしょうね。 -- satchmo 2006-03-07 (火) 10:46:35
  • すごい小手先の対応で申し訳ないですが、パッチ済みのtrackerに下記のコードを追加するとそれっぽく動くようになります。 -- teanan 2006-03-07 (火) 10:52:49
パッチ済み tracker.inc.php : 150行目付近
		$name = str_replace("[$key]", $value, $name);
	}
+	// postに含まれるfieldを置換する
+	foreach ($post as $key=>$value)
+	{
+		if (! is_array($value)) {
+			$name = str_replace("[$key]", $value, $name);
+		}
+	}
	$real = is_pagename($name) ? $name . '/' . ++$num : ++$num;
	$page = get_fullname('./'.$real,$base);
  • 確認ですが、要素としてtextはOKでtitleはダメってことで良いでしょうか? -- satchmo 2006-03-07 (火) 11:16:02
  • 上記の追加コードでtitleもいけました。textは追加コードなしで大丈夫です。 -- teanan 2006-03-07 (火) 12:47:44
    • 試したのは「[Category]/[Summary]/[_date]」です。 -- teanan 2006-03-07 (火) 12:49:59
  • 素晴らしい!ほぼOKです!しかし注意点としてlistbox3プラグインと相性悪いですね。あとformに_nameが指定されてないせいか、最後に必ず連番が付いてしまうのだけ解決したいです・・・。 -- satchmo 2006-03-07 (火) 15:24:06
  • formに[_name]入れてみてもダメでした>連番 -- satchmo 2006-03-07 (火) 15:37:34
  • どのような指定をされているか教えていただけませんか? 同じページにならない限り、連番はつかないと思いますが・・ -- teanan 2006-03-07 (火) 17:27:45
  • config設置ページです。それを使って追加すると、こうなります。 -- satchmo 2006-03-07 (火) 17:58:51
  • すみません。configのcomplistです。 -- satchmo 2006-03-07 (火) 18:19:55
  • ちなみに試しに追加したりいじってもいいですよ。 -- satchmo 2006-03-07 (火) 18:40:18
  • 原因がわかりました。一度もとのtracker.inc.phpに戻してから、下記のパッチをあててください。 -- teanan 2006-03-07 (火) 19:13:38
  • やってみます! -- satchmo 2006-03-07 (火) 19:30:47
  • うまくいきました(T▽T) -- satchmo 2006-03-07 (火) 19:40:02
  • 特定の文字列(「!」とか)が入るとうまくいかない不具合がありますね。互換性リスト -- satchmo 2006-03-11 (土) 16:26:28
    • だめなパターンがわかりません (^^; 何か例を挙げていただけませんか? -- teanan 2006-03-13 (月) 08:55:41

  • 次何かダメだったパターンが出たら晒します。 -- satchmo 2006-03-13 (月) 17:37:53
    • よろしくです :) -- teanan 2006-03-13 (月) 23:50:04
  • ダメパターン来ました!「!」「?」「&」「#」「$」「%」あたりが引っかかってるようです。 -- satchmo 2006-03-17 (金) 08:33:53
  • ここここもそうですね。 -- satchmo 2006-03-17 (金) 08:37:54
  • ここも確かそうだったと思いますが、自分で直した気がします。 -- satchmo 2006-03-17 (金) 08:40:30
  • なるほど、ページ名として使用できない文字がふくまれているため、別のページ名をつけに言っているようです。たとえば、「&」や「:」、「#」などが該当します。 -- teanan 2006-03-17 (金) 09:15:21
    • どのように回避するかですが、一番手っ取り早いのは該当の文字をアンダースコアに置換してしまう方法ですが、いかがでしょう。 -- teanan 2006-03-17 (金) 09:18:42
plugin/tracker.inc.php : 157行目付近
  }
+ $name = preg_replace('/[\r\n\t\f\[\]\<\>\#&\"\:]/', '_' ,$name);

  if(!is_pagename($name)) {
      $real = ++$num;
  • 日本語ユーザー限定で、これはどうでしょう?素人なりに考えてみました。 -- satchmo 2006-03-17 (金) 14:29:10
    plugin/tracker.inc.php : 157行目付近
      }
    + $name = preg_replace('\&', '&' ,$name);
    + $name = preg_replace('\"', '”' ,$name);
    + $name = preg_replace('\:', ':' ,$name);
    + $name = preg_replace('\!', '!' ,$name);
    + $name = preg_replace('\?', '?' ,$name);
    
      if(!is_pagename($name)) {
          $real = ++$num;
  • 考えた結果、ユーザーにはこんな感じで注意を施し、アンダースコアで行きます。今後外人さんも参加するかも知れないので。 -- satchmo 2006-03-17 (金) 14:43:40
  • 階層で管理できるのはすごく便利ですが、親ページが存在しなかったりするとちょっと扱いづらいですね。「親ページがなければ、規定の書式でページを作る」という機能をつけられないものでしょうか・・・。 -- ぬしぶ 2006-11-15 (水) 18:12:52
  • バグ報告です。入力文字列の両端にスペースがあると、ページ名が通常の連番になってしまいます。 -- 2006-12-16 (土) 02:35:38
  • 例えば、どのようなルールでページ名を作成されようとしているのでしょうか。ページ名の一部にtextフィールドで指定したものがあるような感じでしょうか? -- teanan 2006-12-16 (土) 03:04:45
  • そうですね。[_date]/[Summary]、|Summary|概要| text| というようなルールで作成しています。 -- 西日 2006-12-16 (土) 12:21:22
©teanan/interfair laboratory 1992-2007 all rights reserved.



最終更新のRSS

添付ファイル: filetracker.diff.txt 1165件 [詳細] filetracker.diff2.txt 869件 [詳細]