web-dev-qa-db-ja.com

同じユーザーが投稿を数回投票する

認証されたユーザーがコンテンツを何度もVoteできるケースがあります。

Node発言Vote This)の上部にボタンを配置し、ユーザーがボタンをクリックするとボタンが表示されます確認を求めますか?本当に投票しますか?確認すると、同じページにリダイレクトされ、もう一度ボタンをクリックできるようになります。ただし、裏面では、投票の時間と投票したユーザー。投票数ではなく、日付と時刻と人だけ。

フラグモジュールとグローバルフラグモジュールでこれを試しましたが、問題は次のとおりです。フラグが立てられると、フラグが解除されるだけです。

私はまた、5つ星のモジュールを試してみましたが、星を1つだけ(CSSを使用してボタンに変更できます)、確認を求めていません。日付と時刻も記録されません(ここでは間違っているかもしれませんが、Fivestarをいじって、設定オプションが見つかりませんでした)。

VotingAPIには私の場合に役立つものがあるはずですが、これらの条件を満たす方法を特定できません。私は指導を求めています。

更新:@ Adam Balsam's に加えて、確認のために回答しました

次のようにjQueryを使用してidをリンクに追加します:(ノードには1票しかありません

$('.plus1-link').attr('id', 'vote-plus');

次に、jQuery確認ダイアログを次のように追加しました。

$('#vote-plus').click(function(e) {
               var cnf = confirm('Do you really want to vote?');
               if(cnf === false) {
                   e.preventDefault();
               }
            });

エレガントな解決策ではないかもしれませんが、このようにして確認ダイアログオプションを解決しました。

3
user12947

投票APIモジュールPlus1モジュール (開発バージョン)と共に使用します。動作するデモは here で見つかります。

投票APIでは、7.x-2.11からすぐに投票ロールオーバーが可能です。ユーザーが投票できるようにするためにVoting APIを使用するフロントエンドモジュールが必要なだけで、Plus1がうまくいくようです。

  1. 投票APIを有効にし、モジュール管理ページ(/ admin/config/search/votingapi-モジュールのメンテナーはhook_menu()実装を更新する必要があります)で、Anonと登録ユーザーの投票ロールオーバーをすぐに選択します。
  2. Plus 1モジュールを有効にします(依存関係としてctoolsが必要です)。アルファ版にはいくつかの権限の問題があると思われるため、開発版を使用してください。
  3. Plus1管理ページ(admin/config/user-interface/plus1)でユーザーに投票を許可するコンテンツタイプを選択します。
  4. 匿名ユーザーと認証済みユーザーに、「ノードへの投票」権限へのアクセス権を付与します。

投票APIモジュールは、投票の時間と投票したユーザーを記録します。 Lullabotのvotingapiのドキュメント をご覧ください。具体的には votingapi_select_votes() です。

Plus 1モジュールには、AJAXを介して投票を行い、いくつかのスタイリングを提供するために、いくつかのストックJSとCSSが付属しています。ただし、これらのファイルを管理インターフェイスから除外して、自分の経験。

1
Adam Balsam

ここにあなたが試すことができるものがあります。

コンテンツタイプ「投票」を作成します。 エンティティ参照 フィールドを追加します(投票を関連ノードにリンクするため)。

次に、ユーザーがフラグを使用して投票できるようにします。ユーザーがコンテンツにフラグを立てるときは、次のような Rule を使用します。

  • イベント:Nodeにフラグが立てられています
  • アクション1:エンティティを作成し、タイプvoteのノード(作成者:ログインユーザー、エンティティ参照フィールドの値を現在のノード)
  • アクション2:ノードのフラグを解除する

このようにして、ユーザーはノードに複数回フラグを立てることができ、そのたびに、各投票の日付と時刻を含む投票ノードが作成されます。

2
Patrick Kenny

パッチvotingapiモジュール のためにあります 匿名ユーザーと認証されたユーザーの両方の投票ロールオーバー時間を制御 。ロールオーバー時間をゼロ秒に設定すると、ユーザーが好きなだけ投票できるようになります。

Vote Up Down module と組み合わせて、そのモジュールの開発バージョンを使用(または手動でパッチを適用)します。この設定により、ユーザー(認証済みまたは匿名)がコンテンツに無制限に投票できるようになります。

「本当に投票しますか?」まで確認、クリックをインターセプトし、確認時にそれを実行するには、おそらく小さなモジュールまたは単にJSスニペットを記述する必要があります。

更新:
そのパッチは、3月に7.x-2.11モジュールに組み込まれたようです。そのため、そのブランチを使用している限り、この機能はすでにあるはずです。モジュール管理ページでAnonとAuthの両方を「今すぐ」にロールオーバーするだけです。

1
Adam Balsam