**vote2.inc.php [#a5375c22] |RIGHT:100|LEFT:360|c |~サマリ|インライン型の投票プラグイン(+タイムスタンプ更新しない)| |~リビジョン|0.12| |~対応バージョン|1.4| |~投稿者|[[sha]]| |~投稿日|&new{2003-08-14 (THU) 06:02:39};| **概要 [#t7b283e4] -インライン型で、''&vote2''を1行に複数個置ける。 -''notimestamp''を引数に書くと、ページのタイムスタンプを更新しない。 -従来通り、ブロック型もあるよ。 -投票ボタンだけ、得票だけの表示が可能。 -遠隔投票が可能。別のページ・位置にあるvote2へ投票できる。ただし、同じサイト内。 -''notitle''を引数に書くと、その後に続く、同じ型(ブロック型かインライン型)の''vote2''も含めてtooltipのようなtitle表示が抑制される。 #contents **説明 [#k007a224] -[[雑談]](2003-08-14 (THU) 00:41:49)をきっかけに作成を決めた。 -[[1.4標準プラグイン>PukiWiki/プラグイン/1.4]]にある、ブロック型な[[''vote.inc.php''>PukiWiki/プラグイン/1.4#wf9de988]]を拡張したプラグイン(vote.inc.php v1.14がベース) -#trackerとの組み合わせで、各ページに散らばっている得票を#tracker_listで一覧表示したり、ボタンをまとめたりできる。 -XHTML1.1 validation check済み。 -ここで実験しています。→「[[sha:vote2.inc.php]]」 **使用法 [#w353fd1e] -引数の仕様 &vote2(<ラベル>\[数字\],[notimestamp|nonumber|nolabel|notitle|<vote2指定>]); #vote2(<ラベル>\[数字\],<ラベル>\[数字\],...,[notimestamp|nonumber|nolabel|notitle|<vote2指定>]) -引数の意味~ <ラベル>: 投票項目 <ラベル>[数字]: 投票項目の直後にカギ括弧で投票数が保存される。 notimestamp: 引数につけるとページのタイムスタンプを更新しない。 nonumber: 引数につけると得票を表示しない。 nolabel: ラベルやボタンを表示しない。 notitle: tooltipのようなtitle表示を抑制。そのvote2以降の同じ型のvote2に対して有効。 <vote2指定>: 遠隔投票の場合の投票先の指定。詳細は下記参照 -<vote2指定>の仕様と説明 <vote2指定>:= <ページ名>=<vote2番号>[i|b|r] <ページ名>: ページ名。"this"でvote2を書いたのと同じページを指定。 <vote2番号>: インライン型またはブロック型のどちらかにおける、 そのページ内の絶対番号(0番から)または相対番号(r指定時)。 i: インライン型の絶対番号を指定。省略で呼出し側のvote2の型に従う。 b: ブロック型の絶対番号を指定。省略で呼出し側のvote2の型に従う。 r: 相対番号を指定。投票受付側のvote2の型とページが同じことが必要。 -インライン型の場合、<ラベル>は一つしか書けない。もし複数書くと%%最後%%最初の一つが有効になる。<ラベル>がなくても遠隔投票の受付が可能。 -ブロック型の場合、<ラベル>を複数書ける。(従来と同じ) -<vote2番号>は目標とする&vote2の得票数にマウスカーソルを合わせるとポップアップで表示されるので、それを記載する。 -得票数以外の場所にマウスカーソルを合わせると、投票の宛先の<vote2指定>(遠隔投票の場合)か<vote2番号>が表示される。 -インライン型のパーザーとして、''make_link.php''の''class InlineConverter''を利用した。PukiWikiのパージングと全く同じなので検出ミスや対象間違いが防げる。それに伴って次の「無効となる記載方法」が不要となった。 -%%無効となる記載方法%%~ %%引数に半角空白でもいいから何かあれば、遠隔投票を受信できる。投票場所を間違えないための微妙な仕様。%%→全て安全&有効になった。 --%%&vote2;←無効だが安全。引数なし%%→有効に変更。遠隔投票受付可。 --%%&vote2();←無効だが安全。引数は空文字列%%→有効に変更。遠隔投票受付可。 --&vote2( );←これは有効。引数に半角空白が入っている。 --%%&vote2(...){};←禁止&危険。bodyの中括弧がある。投票場所を間違える可能性がある。%%→安全&有効に変更。body部分は自動的に削除される。 **使用例 [#uf19ecc3] +インライン型なので1行中に項目を並べて書ける~ テーブルで記載すると、従来のブロック型を横にした記載も可能。 |>|>|>|CENTER:どう思いますか?|h |~Oかめ納豆|&vote2(すばらしい[123]);|&vote2(まあまあ[2]);|&vote2(そうでもない[3]);| |~K粒納豆|&vote2(すばらしい[8]);|&vote2(まあまあ[1]);|&vote2(そうでもない);| 【表示例】(区別のため&color(red){赤字};で示す)。~ |COLOR(red):|COLOR(red):|COLOR(red):|COLOR(red):|c |>|>|>|CENTER:どう思いますか?|h |~Oかめ納豆|すばらしい 12 |まあまあ 2 |そうでもない 3 | |~K粒納豆|すばらしい 8 |まあまあ 1 |そうでもない 0 | &br;&br; +インライン型。タイムスタンプを更新しないモード~ 引数に''notimestamp''を付ける。 --&vote2(はい[3],notimestamp); / &vote2(いいえ[1],notimestamp); 【表示例】(区別のため&color(red){赤字};で示す)。~ --&color(red){はい 3 / いいえ 1}; &br;&br; +ブロック型。タイムスタンプを更新しないモード~ 引数に''notimestamp''を付ける。 #vote2(はい[4],いいえ[2],notimestamp) 【表示例】。従来の#voteと同じ。 |CENTER:|CENTER:|c |BGCOLOR(#FFCCCC):''選択肢''|BGCOLOR(#FFCCCC):''投票''| |BGCOLOR(#EEF5FF):はい|BGCOLOR(#EEF5FF):4 [投票]| |BGCOLOR(#DDE5FF):いいえ|BGCOLOR(#DDE5FF):2 [投票]| &br; +遠隔投票~ 次のi.の&vote2がインライン型の0番目だとして「りんご 345」が表示されている。ii.の&vote2は「りんごに一票」というリンクだけが表示されている。iii.は相対指定の場合。ii.とiii.のリンクでi.の得票に投票できる。 ++&vote2(りんご[345],notimestamp); ++&vote2(りんごに一票,nonumber,this=0i); ++&vote2(相対指定で一票,nonumber,this=-2r); 【表示例】(区別のため&color(red){赤字};で示す)。~ ++&color(red){りんご 345}; ++&color(red){りんごに一票}; ++&color(red){相対指定で一票}; &br;&br; +インライン型をテーブル内に使って数字だけ右寄せにする方法~ 遠隔投票の応用で実現する。 |CENTER:|RIGHT:|c |項目|カウンター|h |&vote2(赤信号,this=1r,nonumber);|&vote2([223],nolabel);| |&vote2(黄信号,this=1r,nonumber);|&vote2([12],nolabel);| |&vote2(青信号,this=1r,nonumber);|&vote2([1],nolabel);| 【表示例】~ |CENTER:COLOR(red):|RIGHT:COLOR(red):|c |項目|カウンター|h |赤信号|223| |黄信号|12| |青信号|1| &br;&br; +#trackerとの連携 --#trackerとの組み合わせで、各ページに散らばっている得票を#tracker_listで一覧表示したり、ボタンをまとめたりできる。~ 詳細はここを参照→「[[#trackerとの連携>sha:vote2.inc.php#c92b79c2]]」 **ダウンロード [#f473b785] ここに添付しました。御利用下さい。 -「&ref(vote2.inc.php.12);」←提供中 |CENTER:||c |リビジョン|内容|h |v0.12|インライン型をclass InlineConverterに対応した仕様に修正| |v0.11|notitleオプションに対応| |v0.10|遠隔投票で''this''で同じページ内。エラー処理| |v0.9|遠隔投票で相対指定(r)。インライン型でラベル無しでも遠隔投票受付可| |v0.8|debug/引数が無い&vote2により投票場所を間違える現象。他| |v0.7|debug/遠隔投票の後にある通常投票のdigestが嘘。他| |v0.6|debug/投票先が無いなどで失敗した時にはそう表示| |v0.5|debug/digest関連を元に戻す。細かい修正| |v0.4|debug/%%digestをページに埋め込むべきでない。%%べきだ| |v0.3|細かい修正| |v0.2|遠隔投票、得票表示のみ、投票ボタン表示のみに対応| |v0.1|vote.inc.phpとaddline.inc.phpから新規作成。debug| **アンケート [#bf244174] -このプラグインに満足しておりますか? ||RIGHT:|c |BGCOLOR(#FFCCCC):''選択肢''|BGCOLOR(#FFCCCC):''投票''| |BGCOLOR(#EEF5FF):はい|BGCOLOR(#EEF5FF):428| |BGCOLOR(#DDE5FF):いいえ|BGCOLOR(#DDE5FF):77| -「いいえ」に投票した方に質問です。~ どのような修正を加えれば、よくなると思いますか?下記のコメントに記入して下さい。 **コメント [#d194d018] -[[sha]] &new{2003-08-14 (THU) 07:12:33}; ~引数にページ名と番号を指定して、別のページに張り付けた&vote2に投票できる仕組みが必要かも。 --[[sha]] &new{2003-08-14 (THU) 12:14:32}; ~''vote2.inc.php.2''で対応済み。 -[[sha]] &new{2003-08-14 (THU) 22:23:13}; ~懸案事項。どこも更新してないのに更新したと出ることがある。ちゃんとチェックしなきゃ。 --[[sha]] &new{2003-08-14 (THU) 22:50:56}; ~''vote2.inc.php.6''で対応しました。 -[[sha]] &new{2003-08-17 (SUN) 11:56:46}; ~''vote2.inc.php.9''で、遠隔投票の相対指定は投票先が同じページないといけないので、引数の仕様としてはもっと工夫の余地ありかな。 --[[sha]] &new{2003-08-17 (SUN) 20:15:08}; ~''vote2.inc.php.10''で対応。また、ページ名として''this''を書くと同じページを指定したことになる。 -[[名無しさん]] &new{2003-08-20 (WED) 12:01:00}; ~これって投票結果を降順ソートしたりできないんですかね? --[[sha]] &new{2003-08-20 (WED) 13:19:20}; ~インライン型は配置がばらばらなのでブロック型の話ですね。現状ではできませんが、それって、もしかして要望?(^_^;) -[[みこ]] &new{2003-09-02 (TUE) 13:02:03}; ~数字のみ右寄せってCSSつかってできるとうれしいのですが・・・ --[[sha]] &new{2003-09-02 (TUE) 13:52:47}; ~ブロック型の場合ですね。カラム<td>を数字用に1つ用意して、CSS用のクラスを用意すればよいでしょうか?vote2_td2とか? --[[sha]] &new{2003-09-03 (WED) 01:44:19}; ~あれ?CSSを使わなくても既に右寄せになってますよ。もしかして、インライン型をテーブルで使った場合の話でしょうか?もしその場合だとしたら、CSSではコントロールできませんが、遠隔投票の応用で実現できます。上の使用例に載せておきました。 ---[[みこ]] &new{2003-09-03 (WED) 09:59:46}; ~すみません、言葉が足りませんでした。インラインです。使用例ありがとうございます。 -[[oku]] &new{2003-09-26 (FRI) 02:48:31}; ~インライン型でvote番号がポップアップされないようにする方法はありますか?なんの番号なのか混乱を招きそうな気がするので。 --[[reimy]] &new{2003-09-26 (FRI) 03:02:46}; ~下記の部分を書き換えれば? 遠隔投票の場合、使いにくくなるかも。nonumberオプションだけでなく、notitleオプションもあったほうがいいのかな? ---124行目 + if ( $nonumber == FALSE ) $f_cnt = "<span> " . $cnt . " </span>"; - if ( $nonumber == FALSE ) $f_cnt = "<span title=\"$o_vote_inno\"> " . $cnt . " </span>"; ---128行目 + <a href="$script?plugin=vote2&refer=$f_page&vote_inno=$vote_inno&vote_$e_arg=$f_vote_plugin_votes&digest=$f_digest" >$link</a>$f_cnt - <a href="$script?plugin=vote2&refer=$f_page&vote_inno=$vote_inno&vote_$e_arg=$f_vote_plugin_votes&digest=$f_digest" title="$f_vote_inno">$link</a>$f_cnt ---240行目 + if ( $nonumber == FALSE ) $f_cnt = "<span> " . $cnt . " </span>"; - if ( $nonumber == FALSE ) $f_cnt = "<span title=\"$o_vote_no\"> " . $cnt . " </span>"; ---273行目 + <table cellspacing="0" cellpadding="2" class="style_table" summary="vote"> - <table cellspacing="0" cellpadding="2" class="style_table" summary="vote" title="$f_vote_no"> --[[oku]] &new{2003-09-27 (SAT) 22:19:50}; ~ありがとうございます。m(__)m とりあえず私は希望しておきます > notitle --[[sha]] &new{2003-09-27 (SAT) 22:25:35}; ~notitleですね。多忙につき後日対応の予定。 --[[sha]] &new{2003-10-05 (SUN) 18:20:12}; ~対応しました。お試し下さい。''notitle''を指定したvote2以降のvote2(ただし同じ型)も同様にtitle表示が抑制されます。 --[[oku]] &new{2003-10-12 (SUN) 16:25:42}; ~あ、最初のvote2だけに指定すればOKだったのですね。良い感じです。ちなみに実際の利用例はこんな感じです。http://www.simeji.com/wiki/pukiwiki.php?FeedDemon (一番下の部分) -[[jjyun]] &new{2004-06-06 (SUN) 17:47:03}; ~%%(要望)[[欲しいプラグイン/25]]にあるようにtrackerなど組み合わせて、カウント機能を持ったリンク集を作ってみたいと思っています。そこのコメントにあるようにvote2の機能に「指定サイトへ飛んで行く」機能の搭載を検討していただけないでしょうか?%% --[[jjyun]] &new{2004-07-27 (TUE) 20:48:23}; ~vote2に対する上記の要望は取り下げることにします。 -[[taku]] &new{2004-06-10 (THU) 12:58:58}; ~投票者による項目の追加は出来ますか? --[[名無しさん]] &new{2004-06-10 (THU) 13:34:23}; ~Wikiですので、ページが凍結されていないかぎり、誰でも項目の追加・削除が可能です --[[taku]] &new{2004-06-12 (SAT) 18:59:03}; ~あ、そうでした(苦笑)間抜けな質問に答えていただきありがとうございます(^^;) - vote2で投票結果を2回呼び出すようにはできないでしょうか。 -- [[カーミラ]] &new{2006-03-15 (水) 10:17:01}; ページの一番上に「はい」だけの投票ボタンと得票数を表示しておき &vote2(はい[0],notimestamp,nolabel); 投票ボタン:&vote2(this=0i,はい,nonumber); ページの一番下に |&vote2(this=0i,はい,nonumber);&vote2(はい[0],notimestamp,nolabel);|&vote2(いいえ[2]);|&vote2(どちらでもない[3]);| の3択の投票ボタンを呼び出す様な物です。~ 投票はうまくいったのですが、数字の呼び出しが上手くいきません。 - 同一IPからの連続投票の禁止などは出来ないのでしょうか。 -- [[poo]] &new{2006-03-21 (火) 20:26:38}; - 同じく、多重投票の抑制があると嬉しいのですが。 -- [[Tanac]] &new{2006-12-13 (水) 16:50:50}; -- 上にも書かれているように、Wikiは直接データ書き換えできるんだから、多重投票の抑制をしたところで意味がないでしょう。&br;投票データを別ファイルに出力するようなプラグインを作った上で多重投票の抑止の機能を持たせるようにすれば意味がある。 -- [[Ilfa]] &new{2007-05-09 (水) 22:25:03}; - 再投票可能時間って何分なんでしょうか? -- &new{2012-11-23 (金) 07:33:19}; - 特に改造していない場合、voteプラグインと同じく無制限かと。[[多重投稿規制の改造>#ob9447a5]]だと1回のみなので、counter プラグインのように前回の時間も記録してチェックを入れないとかな。 -- &new{2012-11-23 (金) 14:35:46}; - デフォルトですが投票してから次がいつまでたっても投票できないで困っています 複数に投票してもらいたいのに -- &new{2012-11-23 (金) 17:53:18}; - 半日明けたのに再投票できません 15の項目の中から複数に投票してもらいたいときどうすればいいんでしょうか? -- &new{2012-11-24 (土) 07:14:50}; - エラーメッセージがわかれば核心に迫れるかもしれませんが、[[attachrefプラグイン>自作プラグイン/attachref.inc.php]]のような場所ズレ番号ズレの問題なら<vote2指定> で絶対番号指定をするように変更するとか? -- &new{2012-11-24 (土) 12:42:35}; - それが15項目あるうちから複数項目に投票(つまり3~4回と投票)してもらいたいけど連投制限に引っかかってできなくなって困っていることの解決策なのでしょうか?難しすぎて何のお話なのか理解できません。投票は一度きりしかできないのか?一度投票してから数時間でできるのか?再投票にはキャッシュの削除などが必要なのか?こういった質問なのですが書き方悪かったでしょうかね・・・ -- &new{2012-11-24 (土) 15:20:32}; - 時間経過で再投票がいつまでもできないだけじゃないね。得票数消してまた投票集計開始しようとしても以前投票しているからなのか重複不可と出て二度と同じ形での設問ができない。 -- &new{2013-02-14 (木) 23:07:18}; -- #vote2(はい[5],いいえ,どちらでもない,不明) -- &new{2013-02-14 (木) 23:07:58}; -- #vote2(はい[5],いいえ[5],どちらでもない[5],不明[3]) -- &new{2013-02-14 (木) 23:08:38}; -- #vote2(はい,いいえ,どちらでもない,不明)投票数消してページ保存しても再投票できない -- &new{2013-02-14 (木) 23:09:21}; -- #も&も同じ設問だと投票できない? 以前に投票したことがある項目はリセット後に再度投票してもらおうとしても二度とできないみたい。ここを見直すべきでは? -- &new{2013-02-15 (金) 15:35:05}; #comment **多重投票を規制する改造 [#re17f0e6] -多重投票規制 --とりあえず自分も必要になったためちょっと改造してみた。wiki/chkは投票ごとに切り替えれるといいが、ソース追うのめんどくさかった。~ array_unshift($vote, $name .'['.($cnt+1).']');の箇所を探して下記ソースに差し替えるだけ。 -- &new{2009-07-02 (木) 22:05:18}; /* *ここから追加するよ!! */ $y_flg = false; $y_file = "wiki/chk"; $fo = file($y_file); foreach ($fo as $foEach) { if (trim($foEach) == getenv("REMOTE_ADDR")) { $y_flg = true; break; } } if (!$y_flg) { array_unshift($vote, $name .'['.($cnt+1).']'); //-- カウントの追加 $fp = fopen($y_file, 'a+'); if ($fp) { if (flock($fp, LOCK_EX)) { fwrite($fp, getenv("REMOTE_ADDR")."\n"); } } } else { array_unshift($vote, $name .'['.($cnt).']'); } /* *ここまでだよ! */ --投票ごとの多重投稿規制 -- &new{2009-10-28 (水) 09:40:00}; $y_file = "wiki/chk_".urlencode($vars['refer']); でどうでしょう? --投票ごとの多重投稿規制 ファイル名が長いとOSによってエラーになるので $y_file = "wiki/chk_".md5(urlencode($vars['refer'])); のほうがよい? -- &new{2009-11-10 (水) 15:10:00}; -最初のは全ての投票共通で、2個目か3個目のを取り込んでもページ単位で共通になってしまう。項目数はともかく問いが1つなら問題ないだろうけど、1ページに複数の問いを置くタイプの運用とは相性が悪そう。 -- &new{2013-02-15 (金) 18:59:22}; - コレ、いいですね!wikiwiki.jpのレンタルwikiでも使えるようになってるのですごいです。 -- [[アルテック]] &new{2013-09-27 (金) 19:10:20}; #comment