Welcome !! Now 2010.02.09 17:55 (JST)

EasyPoll(0.3.1)

EasyPoll は、投票機能をサイトに追加します。スニペットとモジュールで成り立っています。通常は、クッキーを使って2重投稿を防止しますが、IPアドレスを記録することによってより厳しい2重投稿の防止を実現できます。管理画面のモジュールによって、質問と選択肢を設定し、スニペットコールによって、それを表示します。

1ページに複数の投票機能を設置することも可能です。また、違うページに設置した2つの投稿機能のデータをリンクさせることも出来ます。

参照ページ:EasyPoll

参照ドキュメント:EasyPollに同梱のdocumentation.html

テスト環境

  • サーバ:XREA  
    • PHP 5.2.3
    • MYSQL 5.1.20-beta
  • MODx: 0.9.6.3
  • EasyPoll(0.3.1)

動作環境

  • MODx095 or  096x推奨(他のバージョンでは未検証)
  • MooTools with XHR module ... Ajax機能を使うときに必要(使わなければなくて良い)。
  • PHP 5.1 以上
  • MySQL 4.1 以上

インストール

  1. ダウンロードしたファイルを解凍します。
  2. 以下が現れます。
    • __MACOSX
    • EasyPoll_0.3.3
    • このうち、「__MACOSX」は、関係ありません。無視します。
  3. EasyPoll_0.3.3を開くと以下が現れます。
    • modules
    • snippets

モジュールからインストールしましょう

  1. modules を開くと以下のファイルが現れます。
    • EasyPoll
    • .DS_Store
    • このうち「.DS_Store」は、関係ありません。無視します。
  2. 日本語言語ファイルを該当ディレクトリにコピーします。
  3. EasyPoll フォルダごと/asstes/modules/以下にアップロードします。
  4. 管理画面にログインします。
  5. モジュール>モジュール管理と進みます。
  6. 「モジュールの作成」をクリックします。
  7. モジュール名を「EasyPoll」と入力します
  8. 説明に「Version 0.3.1」と入力します。
  9. エディターでEasyPollフォルダ内の「module.php」を開き、内容をコピーして、管理画面のモジュールコード(PHP)に貼り付けます。
    • この時、最初の行の「<?php」 と、最後の行の「?>」は、必ず削除してください。そうしないと、エラーになります。
  10. その他は、任意で入力してください。
  11. 保存をクリックします。
  12. モジュール管理の画面に、「EasaPoll」が現れます。
    • EasyPollの管理画面
  13. 管理画面のEasyPool のキューブアイコンをクリックして、「モジュールの実行」をクリックします。
    • EasyPollを実行する
  14. 以下のような画面になります
    • インストール実行
    • 「Click heare to install」をクリックします。
  15. 以下のようになればOKです。戻るをクリックします。
    • インストール完了
  16. 以下のようになります。
    • インストール完了
  17. ftpで接続します。「/modules/EasyPoll/setup.sql」および、どう階層にある「module.php」を削除します。セキュリティ上必要なことですので、忘れないようにしましょう。

スニペットをインストールします

  1. 解凍したフォルダのsnippetsを開きます。
  2. EasyPoll 以下をassets/snippets/以下にアップロードします。
  3. 日本語言語ファイルを該当ディレクトリにコピーします。
  4. 管理画面でスニペットを新規作成します。詳しくは、リソースのインストール方法についてを参照してください。
  5. スニペット名は「EasyPoll」、説明には、「Version 0.3.1」と入力します。
  6. ftpで接続し「snippets/EasyPoll/snippet.php」を削除します。セキュリティ上必要なことですので、忘れないようにしましょう。

準備

投票用の質問や選択肢の言語を指定します

  1. 管理画面>リソース>モジュール>EasyPoll>「言語」
    • 言語の設定
    • 言語コード jp
    • 言語ファイル japanese-utf8.inc.php
  2. 追加をクリックします
    • 言語の追加完了

質問と選択肢を作る

次にモジュール画面「EesyPoll」で、質問と選択肢を作ります。

  1. 管理画面>リソース>モジュール>EasyPoll>「投票」
    • 質問の設定
    • 「内部タイトル」は、管理画面で理見るときのタイトルです。
    • 「翻訳(jp)」は、フロントエンドで見せるためのタイトルです。
      • 二つが同じである必要はありません。
    • 「開始日」と「終了日」を指定できます。
      • 開始日を未来にすると、その時まで投票は表示されません。
    • 「表示」は、投票を表示するかどうかを決定します。
  2. 表示するかどうかを指定します。
  3. 保存をクリックします。
    • 質問の登録完了
  4. 「選択肢を編集」をクリックします
    • 選択肢の入力
  5. 内部タイトルと翻訳(jp)を入力して、保存します。
    • 選択肢入力完了
  6. 選択肢の数分繰り返します。

使い方

あとは、投票機能を呼び出したいところにスニペットコールを書くだけです。

基本的な書式

[!EasyPoll? &lang=`jp`!]

必須パラメータ

  • &lang

投票用の質問や選択肢の言語で、モジュールEasyPollで、言語コードと言語ファイルを日本語にした場合は、上記を定義しないと、エラーになります。

パラメーター

pollid

モジュールEasyPoll で設定した、質問のIDを指定します。指定しなければ、「表示」チェックが入った質問の中で一番最後に作った、質問が投票に利用されます。デフォルト「false(指定しない)」

インスタンス

[!EasyPoll? &easylang=`jp` &lang=`jp` &pollid=`5`!]

※ID=5の質問を利用する

lang

スニペットで使う、言語を指定します。この言語ファイルは、EaayPoll/lang/以下になければなりません。デフォルト「en(英語)」。

easylang

モジュールEasyPollでの、質問と選択肢に使う言語を指定します。デフォルト「&lang」。

onevote

クッキーを利用して、訪問者の2重投票を制限するかどうかを指定します。デフォルト「false(制限しない)」

useip

訪問者のIPアドレスを記録して、2重投票を制限するかどうかを指定します。IPアドレスは、データベースに書き込まれます。IPアドレスを消去するには、モジュールEasyPoll の「管理」から「記録された投票者のIPアドレスをすべて消去」をクリックします。デフォルト「false(しない)」。

ovtime

クッキーの有効期間を指定します。デフォルト「one week(1週間)」。

noajax

Ajax の利用を不可能にするかどうかを指定します。デフォルト「false(しない=Ajaxを利用する)」。この場合、二つのスクリプトファイルが、<head>~</head>に追記されます。動作としては、投票した結果を画面遷移なしに(リロードすることなく)表示します。

これを「true」にセットすると、スクリプトファイルは、追加されませんが、単に投票後に画面をリロードして結果を表示するだけで、EasyPollは、きちんと動作します。また、同様の理由で、ブラウザのスクリプト機能が無効にセットされていてもEasyPollfは、動作しますするので、このパラメータは、通常、利用しません。もし、JavaScript機能が有効にセットされているブラウザに対して、敢えて、無効にしたい場合には、「true」をセットしてください(サンクス>sama55さん)。

css

スタイルシートを追加するかどうかを指定します。デフォルト「false(しない)」。

インスタンス

[!EasyPoll? &easylang=`jp` &lang=`jp` &pollid=`5` &css=`assets/templates/common/ep.css`!]

accuracy

投票結果のパーセンテージの小数点以下の桁数を指定します。デフォルト「1(小数点第1位まで表示)」

votesorting

投票結果の表示順を指定します。デフォルト「Sorting ASC」以下を指定できます。

  • Sorting ASC ... モジュールでの選択肢の順
  • Sorting DESC ... モジュールでの選択肢の逆順
  • Votes ASC ... 投票獲得数の少ない順
  • Votes DESC ... 投票獲得数の多い順

archive

通常の出力の代わりに、すべての投票の投票結果を出力するかどうか指定します(投票は出来ません)。デフォルト「false」。このパラメータを「true」にすると、以下のバラメータは無効になります。

また、&customjs で指定したJavaScript が利用されます。

skipfirst

このパラメータは、arhiveがtrueの時に機能します。最初の投票をスキップして表示するかどうかをしていします。デフォルト「false(スキップしない)」

identifier

1ページに複数の投票を置く場合、それぞれのスニペットコールの中で、別の値を設定します。1つ1つの投票をスニペット側が識別するための設定です。デフォルト「easypoll」

nojs

mootoolsをソースに追記を停止するかどうかを指定します。デフォルト「false(停止しない=追記する)」。すでに、mootools が記述されている場合は、これを「true」にします。

customjs

自作のJavaScriptを利用できます。そのまま、ファイルまでのパスを書くか、または、<script>~</script>で、囲って直接スクリプトを書くこともできます。

また、チャンクにスクリプトを書く場合もかならず、<script>~</script>の間に書き、「'customjs=`@chunk チャンク名`」のように指定します。チャンクを使う場合、ファイル名までのパスを書くこともできます。

jscallback

いかなるファンクションコールも可能です。それは、Ajaxが呼ばれるときと、完全に読み込まれたときに最初に呼ばれるでしょう(なんかよくわからん)。

このファンクションのためにふたつのパラメータが与えられます。ひとつめは、レスポンスです。レスポンスは、最初と、htmlが読み込み終わるまでの間、「false」です。

二つめは、poll エレメントのIDです。それは、&identifier と同じです。複数の投票を1ページに設置するための手助けになるでしょう(意味アヤシイです)。

showexception

エラー表示をさせるかどうかを指定します。デフォルト「false(しない)」。たとえば、存在しないpollidを指定したときなど、画面には何も表示されませんが、これを「true」にセットすると、エラーが表示されます。これは、テスト運用時には、大変有用ですが、実運用では、利用するべきではありません。

テンプレート用パラメータ

tplVoteOuter

投票用のテンプレートです。一番外側に来ます。デフォルトは以下です。

<div class="pollvotes">
  <h3>[+question+]</h3>
  <ul>[+choices+]</ul>
  [+submit+] [+results+]
</div>

※この外側に、「div with id="<&identifier>" class="easypoll"」が入ります。

tplVote

投票用のテンプレートです。tplVoteOuter の中の[+choices+]に入ります。デフォルトは以下です。

<li>[+select+] [+answer+]</li>

tplResultOuter

投票結果用のテンプレートです。一番外側に来ます。デフォルトは以下です。

<div class="pollresults">
  <h3>[+question+]</h3>
  <ul>[+choices+]</ul>
  <p>[+totaltext+]: [+totalvotes+]</p>
</div>

tplResult

投票結果用のテンプレートです。tplResultOuter の中の[+choices+]に入ります。デフォルトは以下です。

<li>
  <strong>[+answer+]</strong> ([+votes+] / [+percent+]%)
  <div class="easypoll_bar">
    <div class="easypoll_inner" style="width:[+percent_int+]%"></div>
  </div>
</li>

tplError

エラーメッセージ用のテンプレートです。デフォルトは以下です。

<div class="easypoll_error">[+message+]</div>

プレースホルダ

tplVoteOuter

tplVoteOuterで利用できるプレースホルダは以下の通りです。

  • [+question+] ... 投票のタイトルを挿入します。
  • [+choices+] ... 選択肢群を挿入します。tplVote が入り込みます。
  • [+submit+] ... 投票ボタンを挿入します。
  • [+results+] ... 投票結果を見るためのボタンを挿入します。

※上記のうち、[+question+], [+choices+], [+submit+]は、必ず入れてください。

tplResultOuter

tplResultOuterで利用できるプレースホルダは以下の通りです。

  • [+question+] ... 投票のタイトルを挿入します。
  • [+totalvotes+] ... 総投票数を挿入します。
    [+totaltext+] ... 「総投票数:」等の言葉を挿入します。
    [+choices+] ... それぞれの選択肢とその結果を挿入します。

※ [+question+],  [+choices+] は、必ず入れてください。

tplVote

tplVoteで利用できるプレースホルダは以下の通りです。

  • [+select+] ... ラジオボタンを挿入します。
  • [+answer+] = 選択肢を挿入します。

 ※上記は、二つとも必ず入れてください。

tplResult

tplResultで利用できるブレースホルダは以下の通りです。

  • [+answer+] ... 選択肢を挿入します。
  • [+percent+] ... 投票結果をパーセントで表示します。小数点以下の桁数は、&accuracy で決定されます。
  • [+percent_int+] ...パーセンテージの整数を挿入します。これは、CSSで利用されます。tplResultを参照してください。
    [+votes+] ...投票数を挿入します。

tplError

tplError で利用できるプレースホルダは以下の通りです。

  • [+message+] ... エラーメッセージを挿入します。
 

サンプル

△ページトップ