From e96a3debda643da01d65826ad9a1331183920ee2 Mon Sep 17 00:00:00 2001
From: Mateus Rambo Strey <mars11@inf.ufpr.br>
Date: Thu, 24 Mar 2016 11:10:58 -0300
Subject: [PATCH] fix review rate javascript

---
 app/assets/javascripts/application/reviews.js |  6 +--
 app/controllers/reviews_controller.rb         |  6 ++-
 app/views/reviews/_review.html.erb            | 51 ++++++++++---------
 3 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/app/assets/javascripts/application/reviews.js b/app/assets/javascripts/application/reviews.js
index bec87d6e8..8d246d57c 100644
--- a/app/assets/javascripts/application/reviews.js
+++ b/app/assets/javascripts/application/reviews.js
@@ -19,11 +19,11 @@ $(document).ready(function(){
 
 	$('.review-button-approve').on('ajax:success', function() {
 		$(this).parent().children('.review-button-desapprove').removeClass('desapproved');
-		$(this).addClass('approved');
+		$(this).hasClass('approved') ? $(this).removeClass('approved') : $(this).addClass('approved');
 	});
 
 	$('.review-button-desapprove').on('ajax:success', function() {
 		$(this).parent().children('.review-button-approve').removeClass('approved');
-		$(this).addClass('desapproved');
+		$(this).hasClass('desapproved') ? $(this).removeClass('desapproved') : $(this).addClass('desapproved');
 	});
-});
\ No newline at end of file
+});
diff --git a/app/controllers/reviews_controller.rb b/app/controllers/reviews_controller.rb
index 534119072..75e783ee4 100644
--- a/app/controllers/reviews_controller.rb
+++ b/app/controllers/reviews_controller.rb
@@ -63,7 +63,11 @@ class ReviewsController < ApplicationController
 
     rate = Rate.where(user: user, review: review).first_or_initialize
 
-    rate.update(approves: approves)
+    if rate.approves == approves
+      rate.destroy
+    else
+      rate.update(approves: approves)
+    end
 
     render json: { approves: approves } if request.xhr?
   end
diff --git a/app/views/reviews/_review.html.erb b/app/views/reviews/_review.html.erb
index 761733968..a1834b646 100644
--- a/app/views/reviews/_review.html.erb
+++ b/app/views/reviews/_review.html.erb
@@ -15,7 +15,7 @@
         <%= render 'reviews/ratingstars', rate_id: "avg", value: review.rating_average.to_i, review_id: review.id, disabled: true%>
       </div>
 
-      <div id="popovercontent_<%=review.id%>" style="display: none">      
+      <div id="popovercontent_<%=review.id%>" style="display: none">
         <% review.rating_values.each do |r| %>
         <%= render 'reviews/rating', rate: r[:rating], value: r[:value], review_id: review.id %>
         <% end %>
@@ -25,7 +25,7 @@
 
     <div class="col-md-8 review-right-data">
 
-      <div class="row review-title">      
+      <div class="row review-title">
         <div class="col-md-12">
           <h3><%= review.name %></h3>
         </div>
@@ -35,7 +35,7 @@
         <div class="col-md-12">
           <b>Comentário</b><br>
           <%= review.description %>
-        </div>      
+        </div>
       </div>
 
       <div class="row">
@@ -51,7 +51,7 @@
         </div>
 
       </div>
-      
+
       <div class="row">
 
         <div class="review-footer">
@@ -61,27 +61,28 @@
             <% else %>
             Esta avaliação não possui votos suficientes.
             <% end %>
-          </span> 
-
-          
-          <% approves = review.user_approves?(current_user) %>
-          <% button_approves_class = "btn btn-default btn-xs review-button review-button-approve " %>
-          <% button_desapproves_class = "btn btn-default btn-xs review-button review-button-desapprove " %>
-          <% if !approves.nil? %>
-            <% if approves%>
-              <%button_approves_class += "approved" %>
-            <%else%>
-              <%button_desapproves_class += "desapproved" %>
+          </span>
+
+          <% unless review.user == current_user %>
+            <% approves = review.user_approves?(current_user) %>
+            <% button_approves_class = "btn btn-default btn-xs review-button review-button-approve " %>
+            <% button_desapproves_class = "btn btn-default btn-xs review-button review-button-desapprove " %>
+            <% if !approves.nil? %>
+              <% if approves%>
+                <%button_approves_class += "approved" %>
+              <%else%>
+                <%button_desapproves_class += "desapproved" %>
+              <%end%>
             <%end%>
-          <%end%>
 
-          <%= link_to rate_review_path(id: review.id, approves: true), class: button_approves_class, method: :post, remote: true do %>
-          <i class="fa fa-thumbs-up fa-2x" aria-hidden="true"></i>
-          <% end %>
-          
-          <%= link_to rate_review_path(id: review.id, approves: false), class: button_desapproves_class, method: :post, remote: true do %>
-          <i class="fa fa-thumbs-down fa-2x" aria-hidden="true"></i>
-          <% end %>
+            <%= link_to rate_review_path(id: review.id, approves: true), class: button_approves_class, method: :post, remote: true do %>
+            <i class="fa fa-thumbs-up fa-2x" aria-hidden="true"></i>
+            <% end %>
+
+            <%= link_to rate_review_path(id: review.id, approves: false), class: button_desapproves_class, method: :post, remote: true do %>
+            <i class="fa fa-thumbs-down fa-2x" aria-hidden="true"></i>
+            <% end %>
+          <%end %>
 
           <%= link_to '#', class: 'btn btn-default btn-xs review-button', style:"display:none", method: :post, remote: true do %>
           <i class="fa fa-flag fa-2x" aria-hidden="true"></i>
@@ -96,5 +97,5 @@
     </div>
   </div>
 
-  
-</div>
\ No newline at end of file
+
+</div>
-- 
GitLab