From 28e6a103825c5fc2dc0093cc2d434d7fcf8c14f2 Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 5 Jan 2017 15:17:49 +0100 Subject: [PATCH 01/17] Hides balloting controls when not in the balloting phase --- .../budgets/ballot/_progress_bar.html.erb | 3 +- .../budgets/investments/_header.html.erb | 10 ++-- .../budgets/investments/_sidebar.html.erb | 50 ++++++++++--------- app/views/budgets/show.html.erb | 2 +- spec/features/budgets/investments_spec.rb | 26 +++++++++- 5 files changed, 61 insertions(+), 30 deletions(-) diff --git a/app/views/budgets/ballot/_progress_bar.html.erb b/app/views/budgets/ballot/_progress_bar.html.erb index 45c338b88..3f10b54cf 100644 --- a/app/views/budgets/ballot/_progress_bar.html.erb +++ b/app/views/budgets/ballot/_progress_bar.html.erb @@ -3,7 +3,8 @@
+ id="progress" + aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">

<%= @heading.name %>

- <% if @ballot.valid_heading?(@heading) %>
<%= render 'budgets/ballot/progress_bar' %> @@ -41,6 +40,9 @@ ) %>

<% end %> + <% else %> + <%= @budget.formatted_heading_price(@heading) %> + <% end %>
diff --git a/app/views/budgets/investments/_sidebar.html.erb b/app/views/budgets/investments/_sidebar.html.erb index 173132257..f7cf65317 100644 --- a/app/views/budgets/investments/_sidebar.html.erb +++ b/app/views/budgets/investments/_sidebar.html.erb @@ -1,6 +1,6 @@
-<% if @budget.accepting? %> +<% if can?(:create, Budget::Investment.new(budget: @budget)) %> <% if current_user && current_user.level_two_or_three_verified? %> <%= link_to t("budget.investments.index.sidebar.create"), new_budget_investment_path, class: "button budget expanded" %> <% else %> @@ -11,29 +11,33 @@ <% end %> <% end %> - - -<% if @heading && @ballot.investments.by_heading(@heading.id).count > 0 %> -

- - <%= t("budget.investments.index.sidebar.voted_html", - count: @ballot.investments.by_heading(@heading.id).count, - amount_spent: @ballot.formatted_amount_spent(@heading)) %> - -

-<% else %> -

<%= t("budget.investments.index.sidebar.zero") %>

-<% end %> +<% if @heading && can?(:show, @ballot) %> - -

<%= t("budget.investments.index.sidebar.voted_info") %>

+ + +

<%= t("budget.investments.index.sidebar.voted_info") %>

+<% end %> diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb index 22096a526..a9bcf339c 100644 --- a/app/views/budgets/show.html.erb +++ b/app/views/budgets/show.html.erb @@ -17,7 +17,7 @@ <%= t("budgets.phases.#{@budget.phase}") %>

- <% if @budget.accepting? %> + <% if can?(:create, Budget::Investment.new(budget: @budget)) %> <% if current_user && current_user.level_two_or_three_verified? %> <%= link_to t("budget.investments.index.sidebar.create"), new_budget_investment_path(@budget), class: "button margin-top" %> <% else %> diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 39f443ce3..5a2598b25 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -204,6 +204,18 @@ feature 'Budget Investments' do click_button 'Create' expect(page).to have_content error_message end + + scenario 'Ballot is not visible' do + login_as(author) + + visit budget_investments_path(budget, heading_id: heading.id) + + expect(page).to_not have_link('Check my ballot') + expect(page).to_not have_css('#progress_bar') + within('#sidebar') do + expect(page).to_not have_content('My ballot') + end + end end scenario "Show" do @@ -277,7 +289,7 @@ feature 'Budget Investments' do end - context "Phase 3 - Final Voting" do + context "Balloting Phase" do background do budget.update(phase: "balloting") @@ -400,6 +412,18 @@ feature 'Budget Investments' do end end + scenario 'Ballot is visible' do + login_as(author) + + visit budget_investments_path(budget, heading_id: heading.id) + + expect(page).to have_link('Check my ballot') + expect(page).to have_css('#progress_bar') + within('#sidebar') do + expect(page).to have_content('My ballot') + end + end + end end From 7eba0fee50cdaeb9e0487ecfb9242d378be8aded Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 5 Jan 2017 15:18:16 +0100 Subject: [PATCH 02/17] Deactivates /ballot view when not in the balloting phase --- app/controllers/budgets/ballots_controller.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/budgets/ballots_controller.rb b/app/controllers/budgets/ballots_controller.rb index 3c163253d..cae02359f 100644 --- a/app/controllers/budgets/ballots_controller.rb +++ b/app/controllers/budgets/ballots_controller.rb @@ -3,6 +3,7 @@ module Budgets before_action :authenticate_user! load_and_authorize_resource :budget before_action :load_ballot + authorize_resource :ballot, through: :budget def show render template: "budgets/ballot/show" @@ -11,8 +12,9 @@ module Budgets private def load_ballot - @ballot = Budget::Ballot.where(user: current_user, budget: @budget).first_or_create + query = Budget::Ballot.where(user: current_user, budget: @budget) + @ballot = @budget.balloting? ? query.first_or_create : query.first_or_initialize end end -end \ No newline at end of file +end From e0d3752f72f5a63b746b676084f2bd5c53b832c5 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Thu, 5 Jan 2017 17:23:30 +0100 Subject: [PATCH 03/17] improves styles of budgets investments views --- app/assets/stylesheets/participation.scss | 2 +- app/views/budgets/investments/_header.html.erb | 4 ++-- app/views/budgets/investments/_investment.html.erb | 2 +- .../budgets/investments/_investment_show.html.erb | 12 ++---------- app/views/budgets/investments/_votes.html.erb | 2 +- 5 files changed, 7 insertions(+), 15 deletions(-) diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index edb11f9b5..015f343ce 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -462,7 +462,7 @@ word-break: break-word; } -.proposal-show, .investment-project-show { +.proposal-show, .investment-project-show, .budget-investment-show { .supports { padding: $line-height/2 0 0; diff --git a/app/views/budgets/investments/_header.html.erb b/app/views/budgets/investments/_header.html.erb index 8cbf84b5a..ca3ee4f69 100644 --- a/app/views/budgets/investments/_header.html.erb +++ b/app/views/budgets/investments/_header.html.erb @@ -20,7 +20,7 @@
-

<%= @heading.name %>

+

<%= @heading.name %>

<% if can? :show, @ballot %>
diff --git a/app/views/budgets/investments/_investment.html.erb b/app/views/budgets/investments/_investment.html.erb index 87c2f663e..4c6423f70 100644 --- a/app/views/budgets/investments/_investment.html.erb +++ b/app/views/budgets/investments/_investment.html.erb @@ -35,7 +35,7 @@ <%= heading_name(investment.heading) %>

-

<%= link_to investment.description, namespaced_budget_investment_path(investment) %>

+

<%= investment.description %>

<% end %> diff --git a/app/views/budgets/investments/_investment_show.html.erb b/app/views/budgets/investments/_investment_show.html.erb index 28659533d..9592d7cf2 100644 --- a/app/views/budgets/investments/_investment_show.html.erb +++ b/app/views/budgets/investments/_investment_show.html.erb @@ -1,11 +1,5 @@
- -
<%= link_to :back, class: "back" do %> @@ -57,7 +51,7 @@ <% if investment.should_show_aside? %>
- - diff --git a/app/views/budgets/investments/_votes.html.erb b/app/views/budgets/investments/_votes.html.erb index e1dd2860c..c119083d2 100644 --- a/app/views/budgets/investments/_votes.html.erb +++ b/app/views/budgets/investments/_votes.html.erb @@ -10,7 +10,7 @@
<% if user_voted_for %> -
+
<%= t("budget.investments.investment.already_supported") %>
<% elsif investment.should_show_votes? %> From 0171538a2de576b77e291625bc19a154c169d30a Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Thu, 5 Jan 2017 17:23:50 +0100 Subject: [PATCH 04/17] updates i18n --- app/views/budgets/show.html.erb | 2 +- config/locales/budgets.en.yml | 8 ++++---- config/locales/budgets.es.yml | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb index a9bcf339c..11d19d77b 100644 --- a/app/views/budgets/show.html.erb +++ b/app/views/budgets/show.html.erb @@ -14,7 +14,7 @@

<%= t('budget.show.phase') %>
- <%= t("budgets.phases.#{@budget.phase}") %> + <%= t("budget.phase.#{@budget.phase}") %>

<% if can?(:create, Budget::Investment.new(budget: @budget)) %> diff --git a/config/locales/budgets.en.yml b/config/locales/budgets.en.yml index fa3aa3dd9..d8a8f234c 100644 --- a/config/locales/budgets.en.yml +++ b/config/locales/budgets.en.yml @@ -26,11 +26,11 @@ en: phase: accepting: Accepting proposals reviewing: Reviewing proposals - selecting: Selecting - valuating: Valuating - balloting: Balloting + selecting: Selecting proposals + valuating: Valuating proposals + balloting: Balloting proposals reviewing_ballots: Reviewing Ballots - finished: Finished + finished: Finished budget groups: index: group_title: "Groups" diff --git a/config/locales/budgets.es.yml b/config/locales/budgets.es.yml index ad7d1025e..439910e64 100644 --- a/config/locales/budgets.es.yml +++ b/config/locales/budgets.es.yml @@ -26,11 +26,11 @@ es: phase: accepting: Aceptando propuestas reviewing: Revisando propuestas - selecting: Fase de selección - valuating: Fase de evaluación de propuestas - balloting: Fase de votación + selecting: Selección de propuestas + valuating: Evaluación de propuestas + balloting: Votación de propuestas reviewing_ballots: Contando resultados - finished: Terminado + finished: Presupuesto terminado groups: index: group_title: "Grupos" From 248755a8015f2eb5de02dc228d50f7ebe9a9cf44 Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 5 Jan 2017 17:38:36 +0100 Subject: [PATCH 05/17] Modifies the investment orders shown by phase --- .../budgets/investments_controller.rb | 2 +- app/models/budget.rb | 11 ++++++++++ spec/models/budget_spec.rb | 22 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index 0084e71db..60cce8682 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -17,7 +17,7 @@ module Budgets feature_flag :budgets has_orders %w{most_voted newest oldest}, only: :show - has_orders ->(c){ c.instance_variable_get(:@budget).balloting? ? %w{random price} : %w{random confidence_score} }, only: :index + has_orders ->(c) { c.instance_variable_get(:@budget).investments_orders }, only: :index invisible_captcha only: [:create, :update], honeypot: :subtitle, scope: :budget_investment diff --git a/app/models/budget.rb b/app/models/budget.rb index e2acf1de8..b974c89a9 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -94,6 +94,17 @@ class Budget < ActiveRecord::Base formatted_amount(amount_spent(heading)) end + def investments_orders + case phase + when 'accepting', 'reviewing' + %w{random} + when 'balloting', 'reviewing_ballots' + %w{random price} + else + %w{random confidence_score} + end + end + private def sanitize_descriptions diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index 17f4de4ff..1157a152b 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -64,5 +64,27 @@ describe Budget do expect(budget.heading_price(create(:budget_heading))).to eq(-1) end end + + describe "investments_orders" do + let(:budget) { create(:budget) } + it "is random when accepting and reviewing" do + budget.phase = 'accepting' + expect(budget.investments_orders).to eq(['random']) + budget.phase = 'reviewing' + expect(budget.investments_orders).to eq(['random']) + end + it "is random and price when ballotting and reviewing ballots" do + budget.phase = 'balloting' + expect(budget.investments_orders).to eq(['random', 'price']) + budget.phase = 'reviewing_ballots' + expect(budget.investments_orders).to eq(['random', 'price']) + end + it "is random and confidence_score in all other cases" do + budget.phase = 'selecting' + expect(budget.investments_orders).to eq(['random', 'confidence_score']) + budget.phase = 'valuating' + expect(budget.investments_orders).to eq(['random', 'confidence_score']) + end + end end From f503c492f3df8213904339f06f09a2be99290c1c Mon Sep 17 00:00:00 2001 From: Alberto Garcia Cabeza Date: Thu, 5 Jan 2017 17:43:57 +0100 Subject: [PATCH 06/17] improves styles for budgets investments ballot and votes --- app/assets/stylesheets/participation.scss | 1 + .../ballot/_investment_for_sidebar.html.erb | 3 ++- app/views/budgets/investments/_ballot.html.erb | 4 ++-- app/views/budgets/investments/_votes.html.erb | 2 +- config/locales/budgets.en.yml | 4 +++- config/locales/budgets.es.yml | 18 ++++++++++-------- 6 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app/assets/stylesheets/participation.scss b/app/assets/stylesheets/participation.scss index 015f343ce..a062cadb8 100644 --- a/app/assets/stylesheets/participation.scss +++ b/app/assets/stylesheets/participation.scss @@ -712,6 +712,7 @@ } .remove .icon-check-circle { + color: $budget; display: block; font-size: rem-calc(70); line-height: rem-calc(70); diff --git a/app/views/budgets/ballot/_investment_for_sidebar.html.erb b/app/views/budgets/ballot/_investment_for_sidebar.html.erb index c172e6146..059951253 100644 --- a/app/views/budgets/ballot/_investment_for_sidebar.html.erb +++ b/app/views/budgets/ballot/_investment_for_sidebar.html.erb @@ -9,7 +9,8 @@ class: "remove-investment-project", method: :delete, remote: true do %> - + <%= t('budgets.ballots.show.remove') %> + <% end %> <% end %> diff --git a/app/views/budgets/investments/_ballot.html.erb b/app/views/budgets/investments/_ballot.html.erb index d319a8aa6..741586197 100644 --- a/app/views/budgets/investments/_ballot.html.erb +++ b/app/views/budgets/investments/_ballot.html.erb @@ -3,7 +3,7 @@ <% if ballot.has_investment?(investment) %>
- ">

@@ -42,7 +42,7 @@ <% if reason.present? && !ballot.has_investment?(investment) %> -