**listbox.inc.php [#c98e1593]
|RIGHT:100|LEFT:360|c
|~サマリ|リストボックスプラグイン|
|~リビジョン|1.2|
|~対応バージョン|1.4|
|~投稿者|[[KaWaZ]]|
|~投稿日|&new{2003-10-06 (MON) 10:41:53};|


**説明 [#j6803ea9]
-変更可能なリストボックスを表示するプラグインです。
-%%インラインプラグインとして動作します%%((ブロック型プラグインでないとタグの不整合が発生します。))。
-formによる改行の挿入などが起こらないよう作ってあるので、意図した通りにページデザインに組み込めます。
**使用方法 [#ke7b7625]
~第1引数に現在の値、第2引数以降にリストボックスの内容を指定します。
-インライン型
 &listbox(いちご,りんご,いちご,みかん,秋刀魚,スイカ);
-ブロック型【推奨】
 #listbox2(いちご,りんご,いちご,みかん,秋刀魚,スイカ)

**デモ [#s5fb79dc]
~以下のURLでプラグインの動作の確認が出来ます。
-[[デモ:http://www.kawaz.jp/pukiwiki/?SandBox%2Flistbox%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%A4%CE%BB%EE%B8%B32]]
**ダウンロード [#f1c61fc8]
-&ref(listbox2.inc.php-1.2);
~ボックス型プラグインにしてタグの不整合を無くしたものです。【推奨】
-&ref(listbox.inc.php-1.5);
~インライン型プラグインのままタグの不整合を%%無くしたものです%%が残っています。
~javascriptを使ってHTML/XHTMLの制限を%%回避しています%%回避できてません。


**コメント [#a44c714e]
-[[KaWaZ]] &new{2003-10-06 (MON) 11:27:38};
~bugtrack プラグインで状態や優先度の変更をするのにソース編集しなきゃいけないのが不満で、それを改善するための第一歩として作ってみました。
-[[merlin]] &new{2003-10-06 (MON) 11:59:25};
~面白いですね。こういうののスタイルはcssに分けた方がいいのかなぁ? とりあえずこっちでも[[デモ>merlin:Plugin/Demo/listbox.inc.php]]
-[[KaWaZ]] &new{2003-10-06 (MON) 15:46:00};
~ネットスケープで上手く表示できない不具合があったので修正しました&ref(listbox.inc.php-1.3);。
-[[sha]] &new{2003-10-07 (TUE) 01:06:50};
~これはいいですね。www.kawaz.jpには行けませんでしたよ。Javascriptを使っているようですので、「ブラウザでJavascriptを有効にするように」と説明を付け加えておいてはどうでしょうか。
-[[reimy]] &new{2003-10-07 (TUE) 01:11:50};
~XHTML 1.1 Strictで not validになります。理由はインライン型プラグインにしているからです。&color(crimson){''インラインプラグインでは、XHTMLのブロックレベル要素は使用できません。XHTMLのインライン要素のみ使用できます''};。XHTMLのブロックレベル要素である<form>タグを使用するプラグインはブロック型プラグインでなければいけません。現状では下記のように出力されており、タグの不整合が発生しています。
 <p>
   <form action="http://www.kawaz.jp/pukiwiki/" method="post" style="display:inline;margin:0;">
     <select name="value" style="vertical-align:middle;" onchange="this.form.submit();">
       <option value='あべし' selected>あべし</option>
 (中略)
       <input type="hidden" name="number" value="13" />
       <input type="hidden" name="plugin" value="listbox" />
       <input type="hidden" name="refer" value="SandBox/listboxプラグインの試験" />
   </form>
 </p>
~<form>は<p>の子要素にはできません。<p>の子要素にできるのは、XHTMLのインライン要素のみです。
~<select>や<input>は<form>の子要素にはできません。<div>などを間に入れる必要があります。<form>を使用している他のブロック型プラグインのソースを参照してください。
--[[merlin]] &new{2003-10-07 (TUE) 09:12:14};
~そうかぁ ソース見てなんか変だと思ったのはそれだったんですね。ちゃんと勉強しなくちゃ..デモページにXHTMLチェックも入れよう。
-[[KaWaZ]] &new{2003-10-07 (TUE) 19:42:16};
~ボックス型プラグインにした listbox2 と、インライン型プラグインのまま XHTML1 の不整合をなくしたバージョン 1.5 をアップロードしました。
~[[デモページ>http://www.kawaz.jp/pukiwiki/?SandBox%2Flistbox%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%A4%CE%BB%EE%B8%B32]]でも書いていますが、僕としてはデザインや使い勝手上、lsitboxはインライン型プラグインとして実装したいのですが現在の PukiWiki ではそう実装しようとすると矛盾が起きてしまいどうするのが良いのか悩んでます。1.5 では、とりあえず javascript で回避してみました。
--[[sha]] &new{2003-10-07 (TUE) 23:33:13};
~可能かどうか確認していませんが、getメソッドを使ってプラグインのaction()へパラメータを引き渡せばJavascriptの中でも<form>を使わずに記述できませんか?
-[[reimy]] &new{2003-10-08 (WED) 00:44:41};
~listbox.inc.phpのインライン型プラグインのタグの不整合は直ってないです。
 <p>優先度:<script type="text/javascript">
 (中略)
 </script>
 <select style="vertical-align:middle;" onchange="plugin_listbox_onchange(0,this.value);">
   <option value='CVS待ち' selected='selected'>CVS待ち</option>
   <option value='完了'>完了</option>
   <option value='保留'>保留</option>
   <option value='却下'>却下</option>
 </select>
 </p>
~<p>タグは<select>を子要素にできません。<p>タグの中にインライン要素のタグしか子要素にできないのは、XHTML 1.1だけでなくXHTML 1.0/HTML 4.01のSctrict/Transitional/Frameset共通です。
~それとlistbox.inc.phpのブロック型プラグインの中でdisplay:inlineが指定されていますが、意味ないです。指定するのならdisplay:run-inです。但し、CSS2のプロパティなのでInternet Explorerではサポートされていません(代わりにInternet ExplorerではCSS3のdisplay:inline-blockがサポートされています)。そもそも個々の<input>タグを<div>で囲む必要はないです。<form>~</form>の子要素に<div>~</div>を置けば、<div>の子要素として好きな配置で複数の<input>や<select>を置けます(各<input><select>の間に改行が入らなくて済む)。
-[[reimy]] &new{2003-10-08 (WED) 01:05:32};
~1.4 rc3以降では、テーブルの各セルの中でブロック型プラグインが使用可能([[dev:開発日記/2003-05-29]])なので、trackerプラグインの中でブロック型プラグインのlistboxプラグインを指定することで、trackerプラグインによるbugtrackの「状態」や「優先度」の変更が可能になります。trackerプラグインでbugtrackを実現する方法は、[[しろくろのへや::config/plugin/tracker/default]]参照。
-[[merlin]] &new{2003-10-16 (THU) 08:20:07};
~tracker + listbox2 でのサンプルを [[merlin:Plugin/Demo/tracker.inc.php/todotest]] に置きました。
-[[merlin]] &new{2003-10-21 (TUE) 00:53:00};
~listbox2 v1.1 は、XHTML1.1 Invalid です。 以下を変更することが必要です。
 function plugin_listbox2_getOptions($value, $options) {
   $options_html = '';
   foreach($options as $option) {
     if($option == '') {
       continue;
     }
     $option_enc = htmlspecialchars($option);
     if($value == $option) {
 -     $options_html .= "<option value='$option_enc' selected>$option_enc</option>";
 +     $options_html .= "<option value='$option_enc' selected='selected'>$option_enc</option>";
     } else {
       $options_html .= "<option value='$option_enc'>$option_enc</option>";
     }
   }
  return $options_html;
-[[KaWaZ]] &new{2003-11-30 (SUN) 16:59:58};
~listbox2 を v1.2 として修正しました。[[merlin]] さんの XHTML1.1 valid のパッチを当てました。また、check_editable 関数を使って編集に認証が必要なページではリストボックスの値を変更できないようにしました。
- [[欲しいプラグイン/204]], [[欲しいプラグイン/391]] --  &new{2012-03-30 (金) 12:38:53};

#comment

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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.064 sec.

OSDN