**[[質問箱5/3]] [#a35231d6]
#author("2018-03-11T21:31:42+09:00;2010-08-19T09:59:16+09:00","","")
**[[質問箱/5003]] [#a35231d6]
|RIGHT:70|LEFT:410|c
|~カテゴリ|サイト管理・運営|
|~サマリ|tracker の checkbox で画像表示したい|
|~バージョン|1.4.7_notb_utf8|
|~投稿者|[[けんじ]]|
|~状態|完了|
|~投稿日|&new{2010-08-18 (水) 21:28:57};|
***質問 [#ef07acaf]
: したい事|
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 - しろくろのへや>しろくろのへや:tracker.inc.php/25]])。~
こちらは他の方でも発生してますか?であれば BugTrack に~
-- 2010/08/19 追記:~
config に ''NULL'' と記載していたので出力されませんでした。正しく出力するには ''IS NULL''と条件列に書く必要があります。

***回答 [#ha531097]
- まずは、format項目形式について。空の場合の条件名は、''IS NULL''が正解です。([[しろくろのへや::config/plugin/tracker/sample]]などを参照)&br;''IS NULL''が未定義のままなので、その条件のときは何もせずにそのまま出力しているだけです。 --  &new{2010-08-18 (水) 23:40:32};
-- ありがとうございます。format項目形式 は、条件を ''IS NULL'' に書き換えることで正常に動作するようになりました。&br();こちらのPukiWiki-official では NULL で記載されていたで、疑いもせず、また調べも足りませんでした。ご教授ありがとうございます(ぱんださんのサイトでも一部 NULL)。&br();PukiWiki-official の tracker定義ページを後で  ''NULL'' → ''IS NULL'' に書きかえておきます。 -- [[けんじ]] &new{2010-08-18 (水) 23:58:25};
-- PukiWiki-officialの'':''で始まるページは編集認証がかかっているので、WebTrackにお知らせするぐらいしかできませんよ。 --  &new{2010-08-19 (木) 00:20:05};
- そもそもradio,select,checkbox形式の選択項目名で、wiki書式を使えるような設計になっていません。(「整形済みテキスト」のように、そのまま表示されます)&br;フォームの中に存在するとまずいHTMLタグ((フォームの中にフォームが存在する、など))が紛れ込む可能性ができてしまいますが、それでもよければ
  		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書式を変換するようになります。 --  &new{2010-08-19 (木) 00:16:41};
-- 一応、参考にどうぞ。[[dev:プラグイン/開発者向け]] --  &new{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 の方に投稿しようと思います。 -- [[けんじ]] &new{2010-08-19 (木) 01:07:16};

// #comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

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

SourceForge