2017-11-17 2 views
-3

私は訪問者の投票を無効にしたい、または以前の状態にロールバックしたい。Jquery upvote plugin訪問者の投票を無効にする

これを達成するには、jvery upvoteプラグインにuseridを渡したいと思います。クラス名がの<div id="comment-1">にリンク要素を追加すると、userid変数をJquery upvoteプラグインに渡すことができます。しかし、今回はサイトデザインが壊れてしまいました。

私の2番目のアプローチは、クリックイベントを追加することでした。しかし、私はそれが二度呼ばれると思います。

ユーザー定義変数をjquery upvoteプラグインに渡す適切な方法はありますか。

私がしたいのは、匿名ユーザーがSOのように投稿に投票するのを無効にすることです。

<html> 
    <head> 
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/lib/jquery.upvote.css"> 
    </head> 
    <body> 
     <div id="comment-1" class="upvote"> 
      <a class="upvote" title="This idea is helpful"></a> 
      <span class="count">5</span> 
      <a class="downvote"></a> 
      <a class="star starred"></a> 
     </div> 

     <div id="message"></div> 

これはjavascriptの部分です。

 <script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script> 
     <script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/jquery.upvote.js"></script> 
     <script> 

     $(function() { 
      var userid = 0; 
      var visitor = "{{ visitor }}"; 
      var callback = function(data) { 
       $.post({ 
        url: '/vote', 
        data: JSON.stringify({ id: data.id, up: data.upvoted, userid: userid, 
              down: data.downvoted, count: data.count, star: data.starred }), 
        contentType: "application/json", 
        success: function(response) { 

         if (response == 'visitor') { 
          alert("You should register to vote posts") 
         } 
         console.log(response); 

        } 
       }); 
      }; 

      $('#comment-1').upvote({id: 1, callback: callback}); 

      if (visitor) { 
       alert("You should register to vote on posts"); 
      } 


     }); 

     </script> 
    </body> 
</html> 

voting.py

from flask import Flask, render_template, request, url_for, jsonify 

app = Flask(__name__) 


@app.route('/') 
def index(): 
    return render_template('voting.html') 

@app.route('/vote', methods=['POST']) 
def vote(): 
    data = request.get_json() 
    result = str(data) 
    print("userid", data['userid']) 
    if (data['userid'] == 0): 
     return ('visitor') 

    print (result) 
    return result 


if __name__ == "__main__": 
    app.run(debug=True) 

https://jsfiddle.net/54ytp9ee/

更新:downvotersにもかかわらず、私は解決策を見つけることができるはずです。今は期待どおりに動作します。

+3

: 'http://yourserver.com/voteクライアント側ではない。 –

答えて

0

downvoters私は解決策を見つけることができるはずです。ここには実用的な解決策があります。

javascriptの一部voting.html

<html> 
    <head> 
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/lib/jquery.upvote.css"> 
    </head> 
    <body> 
     <div id="comment-1" class="upvote"> 
      <a class="upvote" title="I like this idea"></a> 
      <span class="count">5</span> 
      <a class="downvote"></a> 
      <a class="star starred"></a> 
     </div> 

     <div id="message"></div> 

:仕事はここで行われるべき

 <script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script> 
     <script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/jquery.upvote.js"></script> 
     <script> 

     $(function() { 
      var userid = 0;     
      var callback = function(data) { 
       $.post({ 
        url: '/vote', 
        data: JSON.stringify({ id : data.id, up: data.upvoted, userid: userid, 
              down : data.downvoted, count : data.count, star : data.starred }), 
        contentType: "application/json", 

        success: function(response) { 

         console.log('Response ', response); 

         if (response.visitor) { 

          alert ('Please log in to vote'); 
          var counter = response.count; 
          $('#comment-1').upvote({count: counter, upvoted: 0, downvoted:0, starred: 0, id: 1, callback: callback}); 
          location.reload(); 
         } 
        } 
       }); 
      }; 

      $('#comment-1').upvote({id: 1, callback: callback}); 

     }); 

     </script> 
    </body> 
</html> 

voting.py

from flask import Flask, render_template, request, url_for, jsonify 

app = Flask(__name__) 


@app.route('/') 
def index(): 
    return render_template('voting.html') 

@app.route('/vote', methods=['POST']) 
def vote(): 
    data = request.get_json() 
    result = str(data) 

    if (data['userid'] == 0): 

     if (data['up']): 
      data['count'] = data['count'] - 1 

     if (data['down']): 
      data['count'] = data['count'] + 1 

     return jsonify({'visitor' : True, 'count' : data['count'] }), 200, {'ContentType':'application/json'} 

    return result 


if __name__ == "__main__": 
    app.run(debug=True) 
関連する問題