From ad8880d02c7ea3ed5839adb279c8ef9a20dd5846 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sun, 13 Sep 2015 21:56:52 +0200 Subject: [PATCH] adds proposal votes --- app/assets/javascripts/votes.js.coffee | 5 +- app/controllers/proposals_controller.rb | 5 + app/helpers/votes_helper.rb | 13 +- app/models/proposal.rb | 11 +- app/views/debates/_votes.html.erb | 2 +- app/views/proposals/_votes.html.erb | 10 +- app/views/proposals/vote.js.erb | 1 + config/initializers/vote_extensions.rb | 2 +- config/locales/en.yml | 3 +- config/locales/es.yml | 3 +- spec/features/votes_spec.rb | 248 +++++++++++++++++++++++- spec/models/proposal_spec.rb | 19 ++ spec/support/common_actions.rb | 15 ++ 13 files changed, 311 insertions(+), 26 deletions(-) create mode 100644 app/views/proposals/vote.js.erb diff --git a/app/assets/javascripts/votes.js.coffee b/app/assets/javascripts/votes.js.coffee index 4ccfb2131..09f2a7db0 100644 --- a/app/assets/javascripts/votes.js.coffee +++ b/app/assets/javascripts/votes.js.coffee @@ -12,8 +12,5 @@ App.Votes = initialize: -> App.Votes.hoverize votes for votes in $("div.votes") + App.Votes.hoverize votes for votes in $("div.supports") false - - - - diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index da6fad73f..4e6b6bacc 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -67,6 +67,11 @@ class ProposalsController < ApplicationController respond_with @proposal, template: 'proposals/_refresh_flag_actions' end + def vote + @proposal.register_vote(current_user, 'yes') + set_proposal_votes(@proposal) + end + private def proposal_params diff --git a/app/helpers/votes_helper.rb b/app/helpers/votes_helper.rb index fa25fcca7..b3c5fc9b5 100644 --- a/app/helpers/votes_helper.rb +++ b/app/helpers/votes_helper.rb @@ -1,7 +1,7 @@ module VotesHelper - def css_classes_for_debate_vote(debate_votes, debate) - case debate_votes[debate.id] + def css_classes_for_vote(votes, votable) + case votes[votable.id] when true {in_favor: "voted", against: "no-voted"} when false @@ -11,13 +11,4 @@ module VotesHelper end end - def css_classes_for_proposal_vote(proposal_votes, proposal) - case proposal_votes[proposal.id] - when true - {in_favor: "voted"} - else - {in_favor: ""} - end - end - end diff --git a/app/models/proposal.rb b/app/models/proposal.rb index 8337b5bd2..dd08ce196 100644 --- a/app/models/proposal.rb +++ b/app/models/proposal.rb @@ -70,7 +70,16 @@ class Proposal < ActiveRecord::Base end def votable_by?(user) - user.level_two_verified? || !user.voted_for?(self) + user.level_two_or_three_verified? + end + + def register_vote(user, vote_value) + return unless votable_by?(user) + if user.voted_for?(self) + unvote_by(user) + else + vote_by(voter: user, vote: vote_value) + end end def code diff --git a/app/views/debates/_votes.html.erb b/app/views/debates/_votes.html.erb index 5f38b1e7a..89a03752f 100644 --- a/app/views/debates/_votes.html.erb +++ b/app/views/debates/_votes.html.erb @@ -1,4 +1,4 @@ -<% voted_classes = css_classes_for_debate_vote(@debate_votes, debate) %> +<% voted_classes = css_classes_for_vote(@debate_votes, debate) %>
<%= link_to vote_debate_path(debate, value: 'yes'), diff --git a/app/views/proposals/_votes.html.erb b/app/views/proposals/_votes.html.erb index 3405f0f35..29af37f9f 100644 --- a/app/views/proposals/_votes.html.erb +++ b/app/views/proposals/_votes.html.erb @@ -1,4 +1,4 @@ -<% voted_classes = css_classes_for_proposal_vote(@proposal_votes, proposal) %> +<% voted_classes = css_classes_for_vote(@proposal_votes, proposal) %>
@@ -9,10 +9,12 @@ <%= t("proposals.proposal.supports", count: proposal.total_votes) %> <%= t("proposals.proposal.supports_necessary") %> - <%= link_to vote_proposal_path(proposal, value: 'yes'), class: "button button-support tiny radius expand #{voted_classes[:in_favor]}", +
+ <%= link_to vote_proposal_path(proposal, value: 'yes'), class: "button button-support tiny radius expand #{voted_classes[:in_favor]}", title: t('proposals.proposal.support'), method: "post", remote: true do %> <%= t("proposals.proposal.support") %> - <% end %> + <% end %> +
<% if user_signed_in? && current_user.organization? %>