質問箱/5003

カテゴリサイト管理・運営
サマリtracker の checkbox で画像表示したい
バージョン1.4.7_notb_utf8
投稿者けんじ?
状態完了
投稿日2010-08-18 (水) 21:28:57

質問

したい事
tracker で使用できる項目形式に「 checkbox 」というチェックボックス項目形式がありますが、
こちらの checkbox を使用時に tracker の from 内で 画像ファイルを ref プラグインで表示したいのですが、 どうやれば良いでしょう?

現在私が使用している設定・方法だと、 from 内のチェックボックス右側に表示される checkbox の見出し(見本)が以下のように出力されます。
<label for="_p_tracker_checkbox_11_3">&amp;ref(http://pukiwiki.sourceforge.jp/image/rss.png);</label>
これを以下のようにしたいです。
<label for="_p_tracker_checkbox_11_3"><img src="http://pukiwiki.sourceforge.jp/image/rss.png" /></label>
もしくは以下(IE だとどちらにしても画像クリック時にチェックはつかないので)、
<img src="http://pukiwiki.sourceforge.jp/image/rss.png" />
試してみた事(1)
plugin/tracker.inc.php を改造し、
  • input の「 label 」 を表示しないようにする (514行目付近)
    -'[]" id="' . $s_id . '" value="' . $s_option . '"' . $checked . ' />' .
    -'<label for="' . $s_id . '">' . $s_option . '</label>' . "\n";
    +'[]" id="' . $s_id . '" value="' . $s_option . '"' . $checked . ' />' . "\n";
  • from 内の [checkbox] 右側に直接 ref プラグインで見本画像を配置
    |~チェック1   |[checkbox1] &ref(http://pukiwiki.sourceforge.jp/image/rss.png);|
    |~チェック2   |[checkbox2] &ref(http://pukiwiki.sourceforge.jp/image/xml.png);|
    しかし、これだと [checkbox] 一つに付き一つの画像しか選べられません。 また、page 内の [checkbox] 項目が指定個所に限定されてしまうので、空欄となってしまいます。 画像が数個であればよいのですが、10個以上選択できるようにしたいので、同一の指定個所から全ての画像を 拾い上げてくれるような動作が良かったのでダメでした。
試してみた事(2)
  • plugin/tracker.inc.php の 508行目付近。
     $s_option = htmlspecialchars($option[0]);
    +$s_label = convert_html($option[0]);
     $checked = array_key_exists(trim($option[0]),$defaults) ?
     	' checked="checked"' : '';
     ++$id;
     $s_id = '_p_tracker_' . $s_name . '_' . $this->id . '_' . $id;
     $retval .= '<input type="checkbox" name="' . $s_name .
     	'[]" id="' . $s_id . '" value="' . $s_option . '"' . $checked . ' />' .
    -	'<label for="' . $s_id . '">' . $s_option . '</label>' . "\n";
    +	'<label for="' . $s_id . '">' . $s_label . '</label>' . "\n";
    しかし、convert_html だと <p> で出力されるので改行になる。適当な関数を探してます。
    <label for="_p_tracker_checkbox_11_3"><p> [実際は改行なし]
    <img src="http://pukiwiki.sourceforge.jp/image/rss.png" /></p></label>
現在の設定(「したい事」の設定です)
  • :config/plugin/tracker/hoge
    * fields
    |項目名  |見出し    |タイプ  |オプション|デフォルト|h
    |Proposer    |投稿者    |format  |          |          |
    |checkbox|チェック  |checkbox|          |          |
    * Proposer
    |条件|セルの書式|文字書式|h
    |IS NOT NULL|%s|[[%s]]|
    |NULL|%s|[[名無しさん]]| //正しく動作させるには IS NULL と書く
    * checkbox
    |見出し|セルの書式|h
    |&ref(http://pukiwiki.sourceforge.jp/image/rss.png);|%s|
    |&ref(http://pukiwiki.sourceforge.jp/image/xml.png);|%s|
    //|rss.png|&ref(http://pukiwiki.sourceforge.jp/image/%s);| でも複数拾い上げてくれない
  • :config/plugin/tracker/hoge/form
    |RIGHT:     |LEFT:     |c
    |~投稿者     |[Proposer]|
    |~チェック   |[checkbox]|
    |>|CENTER:[_submit]     |
  • :config/plugin/tracker/hoge/list
    |~[_page]   |~[Proposer]|~[checkbox]|h
    |[_page]    |[Proposer] |[checkbox] |
    //|~[_page]   |~[Proposer]|~[checkbox1]|h 「試してみた事(2)」の場合
    //|[_page]    |[Proposer] |[checkbox1][checkbox2] | 「試してみた事(2)」の場合
  • :config/plugin/tracker/hoge/page
    -投稿者:     [Proposer]
    -チェック:   [checkbox]
    //-チェック1:   [checkbox1] 「試してみた事(2)」の場合
    //-チェック2:   [checkbox2] 「試してみた事(2)」の場合
ついでに
今回 format 項目形式についても設定内容として記載したのですが、format が NULL の場合空のまま出力されます。
過去に tracker プラグイン作成者の ぱんださんのサイトに同様の質問と解決がありました(tracker.inc.php/25 - しろくろのへや)。
こちらは他の方でも発生してますか?であれば BugTrack に
  • 2010/08/19 追記:
    config に NULL と記載していたので出力されませんでした。正しく出力するには IS NULLと条件列に書く必要があります。

回答

  • まずは、format項目形式について。空の場合の条件名は、IS NULLが正解です。(しろくろのへや::config/plugin/tracker/sampleなどを参照)
    IS NULLが未定義のままなので、その条件のときは何もせずにそのまま出力しているだけです。 -- 2010-08-18 (水) 23:40:32
    • ありがとうございます。format項目形式 は、条件を IS NULL に書き換えることで正常に動作するようになりました。
      こちらのPukiWiki-official では NULL で記載されていたで、疑いもせず、また調べも足りませんでした。ご教授ありがとうございます(ぱんださんのサイトでも一部 NULL)。
      PukiWiki-official の tracker定義ページを後で NULLIS NULL に書きかえておきます。 -- けんじ? 2010-08-18 (水) 23:58:25
    • PukiWiki-officialの:で始まるページは編集認証がかかっているので、WebTrackにお知らせするぐらいしかできませんよ。 -- 2010-08-19 (木) 00:20:05
  • そもそもradio,select,checkbox形式の選択項目名で、wiki書式を使えるような設計になっていません。(「整形済みテキスト」のように、そのまま表示されます)
    フォームの中に存在するとまずいHTMLタグ*1が紛れ込む可能性ができてしまいますが、それでもよければ
     		foreach ($this->config->get($this->name) as $option)
     		{
     			$s_option = htmlspecialchars($option[0]);
    +			$s_label  = make_link($option[0]);
     			$checked = array_key_exists(trim($option[0]),$defaults) ?
     				' checked="checked"' : '';
     			++$id;
     			$s_id = '_p_tracker_' . $s_name . '_' . $this->id . '_' . $id;
     			$retval .= '<input type="checkbox" name="' . $s_name .
     				'[]" id="' . $s_id . '" value="' . $s_option . '"' . $checked . ' />' .
    -				'<label for="' . $s_id . '">' . $s_option . '</label>' . "\n";
    +				'<label for="' . $s_id . '">' . $s_label . '</label>' . "\n";
     		}
    と修正すれば、wiki書式を変換するようになります。 -- 2010-08-19 (木) 00:16:41
    • 一応、参考にどうぞ。dev:プラグイン/開発者向け -- 2010-08-19 (木) 00:28:26
    • ありがとうございます!! 期待していた通りの動作をするようになりました。参考URLもありがとうございます、そういったページを探していたので助かります。dev内を検索しつつ dev:PukiWiki/関数一覧表 を頼りに trackerプラグイン内の関数を総当たりで試していたのですが (..; 、trackerを含めると検索でヒットせず辿り着けなかったページだったので助かります(逆に関数のみだとヒット数が膨大)。
      HTMLタグが紛れ込む可能性についてですが、一応 tracker/hoge を
      * checkbox
      |&ref(http://pukiwiki.sourceforge.jp/image/rss.png,nolink,[Proposer]);|%s|
      |[[&ref(http://pukiwiki.sourceforge.jp/image/rss.png,nolink,title01);>#]]|%s|
      |[[&ref(http://pukiwiki.sourceforge.jp/image/rss.png,nolink,[Proposer]);>#]]|%s|
      などにして試してみましが、それらしい表示にはなりませんでした。他の項目形式はまだ試していないのですが、元々こういった形で使用する予定はないので、問題なしです。
      この度は、適切なご回答・ご助言を賜りありがとうございます。質問が解決したのでこちらの質問箱の状態を完了にしておきます。こちらのページの内容は後で見やすいように書き換えておきます。
      PukiWiki-official の tracker定義ページ「 NULL → IS NULL 」書きかえの件ですが、おっしゃるように編集認証が必要だったので 雑談 にその旨コメントしておきました。しばらく経って、どなたも編集なさらない様でしたら、教えて頂いた WebTrack の方に投稿しようと思います。 -- けんじ? 2010-08-19 (木) 01:07:16

*1 フォームの中にフォームが存在する、など

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-19 (木) 09:59:16
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.234 sec.

OSDN