From 2824d168497c7949fedf10e6b53ead5d41bd9ce1 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:08:08 +0200 Subject: [PATCH 01/27] tmp commit manager vote --- .../management/proposals_controller.rb | 18 ++++++++++++++++++ app/helpers/admin_helper.rb | 2 +- app/views/management/proposals/index.html.erb | 1 + app/views/proposals/index.html.erb | 2 +- config/routes.rb | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 app/controllers/management/proposals_controller.rb create mode 100644 app/views/management/proposals/index.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb new file mode 100644 index 000000000..da643d4a4 --- /dev/null +++ b/app/controllers/management/proposals_controller.rb @@ -0,0 +1,18 @@ +class Management::ProposalsController < Management::BaseController + include HasOrders + + has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index + + def index + @proposals = Proposal.all.limit(10).page(params[:page]) + @tag_cloud = [] + set_proposal_votes(@proposals) + end + + private + + def set_proposal_votes(proposals) + @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} + end + +end \ No newline at end of file diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index 1c72fedbf..a8711e5d7 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -1,7 +1,7 @@ module AdminHelper def side_menu - render "/#{namespace}/menu" + #render "/#{namespace}/menu" end def official_level_options diff --git a/app/views/management/proposals/index.html.erb b/app/views/management/proposals/index.html.erb new file mode 100644 index 000000000..7c02f6d29 --- /dev/null +++ b/app/views/management/proposals/index.html.erb @@ -0,0 +1 @@ +<%= render template: "proposals/index" %> \ No newline at end of file diff --git a/app/views/proposals/index.html.erb b/app/views/proposals/index.html.erb index 28807d247..c0bbdc009 100644 --- a/app/views/proposals/index.html.erb +++ b/app/views/proposals/index.html.erb @@ -44,7 +44,7 @@ <%= link_to t("proposals.index.start_proposal"), new_proposal_path, class: 'button radius expand' %> - <%= render @proposals %> + <%= render partial: 'proposals/proposal', collection: @proposals %> <%= paginate @proposals %> diff --git a/config/routes.rb b/config/routes.rb index 391bc5415..3c23d5b5d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,6 +169,7 @@ Rails.application.routes.draw do get 'sign_in', to: 'sessions#create' resources :sessions, only: :create + resources :proposals, only: :index end # Example of regular route: From f2ab0e6c7210f2b9d7f9a24f2b46272568ee411d Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:43:00 +0200 Subject: [PATCH 02/27] basic proposal voting my managers --- .../management/proposals_controller.rb | 19 ++++++++-- .../management/proposals/_proposal.html.erb | 35 +++++++++++++++++++ .../management/proposals/_votes.html.erb | 9 +++++ app/views/management/proposals/index.html.erb | 21 ++++++++++- config/routes.rb | 6 +++- 5 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 app/views/management/proposals/_proposal.html.erb create mode 100644 app/views/management/proposals/_votes.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index da643d4a4..2b0de30d6 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,18 +1,33 @@ class Management::ProposalsController < Management::BaseController + skip_before_action :verify_manager include HasOrders + before_action :set_proposal, only: :vote has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index def index @proposals = Proposal.all.limit(10).page(params[:page]) - @tag_cloud = [] - set_proposal_votes(@proposals) + end + + def vote + @proposal.register_vote(current_user, 'yes') + redirect_to management_proposals_url, notice: "Succesfully voted" end private + def set_proposal + @proposal = Proposal.find(params[:id]) + end + def set_proposal_votes(proposals) @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} end + def current_user + #CHANGE ME + #Should be user being managed + User.first + end + end \ No newline at end of file diff --git a/app/views/management/proposals/_proposal.html.erb b/app/views/management/proposals/_proposal.html.erb new file mode 100644 index 000000000..f91fd2b4f --- /dev/null +++ b/app/views/management/proposals/_proposal.html.erb @@ -0,0 +1,35 @@ +
+
+
+ +
+
+ <%= t("proposals.proposal.proposal") %> + +

<%= link_to proposal.title, "#" %>

+ +

+   +  •  + <%= l proposal.created_at.to_date %> +  •  + + <%= proposal.try(:author).try(:name) %> + +

+ +
+

<%= proposal.summary %>

+
+
+ + <%= render "shared/tags", taggable: proposal, limit: 5 %> +
+
+ +
+ <%= render 'votes', proposal: proposal %> +
+
+
+
\ No newline at end of file diff --git a/app/views/management/proposals/_votes.html.erb b/app/views/management/proposals/_votes.html.erb new file mode 100644 index 000000000..7ef6fd6e3 --- /dev/null +++ b/app/views/management/proposals/_votes.html.erb @@ -0,0 +1,9 @@ +
+
+ <%= link_to vote_management_proposal_path(proposal, value: 'yes'), + class: "button button-support tiny radius expand", + title: t('proposals.proposal.support_title'), method: "post" do %> + <%= t("proposals.proposal.support") %> + <% end %> +
+
diff --git a/app/views/management/proposals/index.html.erb b/app/views/management/proposals/index.html.erb index 7c02f6d29..2aa28c219 100644 --- a/app/views/management/proposals/index.html.erb +++ b/app/views/management/proposals/index.html.erb @@ -1 +1,20 @@ -<%= render template: "proposals/index" %> \ No newline at end of file +
+
+
+ +
+
+ <% if @search_terms %> +

+ <%= page_entries_info @proposals %> + <%= t("proposals.index.search_results", count: @proposals.size, search_term: @search_terms) %> +

+ <% end %> +
+ + <%= render @proposals %> + <%= paginate @proposals %> +
+
+
+
\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 3c23d5b5d..afb421ac5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,7 +169,11 @@ Rails.application.routes.draw do get 'sign_in', to: 'sessions#create' resources :sessions, only: :create - resources :proposals, only: :index + resources :proposals, only: :index do + member do + post :vote + end + end end # Example of regular route: From 4458de508982ffe1c0717c2bda3ef34a2f716f85 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:56:18 +0200 Subject: [PATCH 03/27] bringing back admin side menu --- app/helpers/admin_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index a8711e5d7..1c72fedbf 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -1,7 +1,7 @@ module AdminHelper def side_menu - #render "/#{namespace}/menu" + render "/#{namespace}/menu" end def official_level_options From 1bbafba24ef9e09e729fb9391473c24fca0ce14d Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:56:33 +0200 Subject: [PATCH 04/27] adds search for proposals --- app/controllers/management/proposals_controller.rb | 11 +++++++---- app/views/admin/shared/_proposal_search.html.erb | 10 ++++++++++ app/views/management/proposals/index.html.erb | 2 ++ config/locales/admin.en.yml | 3 +++ config/locales/admin.es.yml | 3 +++ 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 app/views/admin/shared/_proposal_search.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 2b0de30d6..283aa9428 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,13 +1,12 @@ class Management::ProposalsController < Management::BaseController skip_before_action :verify_manager include HasOrders + include CommentableActions before_action :set_proposal, only: :vote - has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index + before_action :parse_search_terms, only: :index - def index - @proposals = Proposal.all.limit(10).page(params[:page]) - end + has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index def vote @proposal.register_vote(current_user, 'yes') @@ -30,4 +29,8 @@ class Management::ProposalsController < Management::BaseController User.first end + def resource_model + Proposal + end + end \ No newline at end of file diff --git a/app/views/admin/shared/_proposal_search.html.erb b/app/views/admin/shared/_proposal_search.html.erb new file mode 100644 index 000000000..9604edf34 --- /dev/null +++ b/app/views/admin/shared/_proposal_search.html.erb @@ -0,0 +1,10 @@ +<%= form_for(Proposal.new, url: url, as: :proposal, method: :get) do |f| %> +
+
+ <%= text_field_tag :search, "", placeholder: t("admin.shared.proposal_search.placeholder") %> +
+
+ <%= f.submit t("admin.shared.proposal_search.button"), class: "button radius success" %> +
+
+<% end %> \ No newline at end of file diff --git a/app/views/management/proposals/index.html.erb b/app/views/management/proposals/index.html.erb index 2aa28c219..f6044265c 100644 --- a/app/views/management/proposals/index.html.erb +++ b/app/views/management/proposals/index.html.erb @@ -1,4 +1,6 @@
+ <%= render 'admin/shared/proposal_search', url: management_proposals_path %> +
diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index d298f8250..a70329132 100644 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -26,6 +26,9 @@ en: user_search: placeholder: 'Search user by name or email' button: 'Search' + proposal_search: + placeholder: 'Search proposals by title, description or question' + button: 'Search' organizations: index: title: Organizations diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index b9845c21e..40aef5f24 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -26,6 +26,9 @@ es: user_search: placeholder: 'Buscar usuario por nombre o email' button: 'Buscar' + proposal_search: + placeholder: 'Buscar propuestas por título, descripción o pregunta' + button: 'Buscar' organizations: index: title: Organizaciones From a884219cc9fd4fea52f934dc7425a4c5b848c192 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 19:12:56 +0200 Subject: [PATCH 05/27] adds creation of proposals by managers --- app/controllers/management/proposals_controller.rb | 4 ++-- app/views/management/proposals/new.html.erb | 1 + app/views/proposals/_form.html.erb | 2 +- app/views/proposals/edit.html.erb | 2 +- app/views/proposals/new.html.erb | 2 +- config/routes.rb | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 app/views/management/proposals/new.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 283aa9428..1681fb004 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -19,8 +19,8 @@ class Management::ProposalsController < Management::BaseController @proposal = Proposal.find(params[:id]) end - def set_proposal_votes(proposals) - @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} + def proposal_params + params.require(:proposal).permit(:title, :question, :summary, :description, :external_url, :video_url, :responsible_name, :tag_list, :terms_of_service, :captcha, :captcha_key) end def current_user diff --git a/app/views/management/proposals/new.html.erb b/app/views/management/proposals/new.html.erb new file mode 100644 index 000000000..2641331a0 --- /dev/null +++ b/app/views/management/proposals/new.html.erb @@ -0,0 +1 @@ +<%= render template: 'proposals/new', form_url: management_proposals_url %> \ No newline at end of file diff --git a/app/views/proposals/_form.html.erb b/app/views/proposals/_form.html.erb index 40b0e5b52..4c14730fe 100644 --- a/app/views/proposals/_form.html.erb +++ b/app/views/proposals/_form.html.erb @@ -1,4 +1,4 @@ -<%= form_for(@proposal) do |f| %> +<%= form_for(@proposal, url: form_url) do |f| %> <%= render 'shared/errors', resource: @proposal %>
diff --git a/app/views/proposals/edit.html.erb b/app/views/proposals/edit.html.erb index 7d7ce413b..1ed03d533 100644 --- a/app/views/proposals/edit.html.erb +++ b/app/views/proposals/edit.html.erb @@ -12,6 +12,6 @@

<%= t("proposals.edit.editing") %>

- <%= render "form" %> + <%= render "form", form_url: proposal_url(@proposal) %>
diff --git a/app/views/proposals/new.html.erb b/app/views/proposals/new.html.erb index 0bda9fd56..a24a31e77 100644 --- a/app/views/proposals/new.html.erb +++ b/app/views/proposals/new.html.erb @@ -11,7 +11,7 @@ <%= t("proposals.new.more_info")%> <% end %>
- <%= render "form" %> + <%= render "proposals/form", form_url: proposals_url %>
diff --git a/config/routes.rb b/config/routes.rb index afb421ac5..5b62b5494 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,7 +169,7 @@ Rails.application.routes.draw do get 'sign_in', to: 'sessions#create' resources :sessions, only: :create - resources :proposals, only: :index do + resources :proposals, only: [:index, :new, :create] do member do post :vote end From aba255dbd3d2a7e9565a62e8918db554020105f7 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Tue, 6 Oct 2015 14:27:34 +0200 Subject: [PATCH 06/27] adds print of new proposals --- .../management/proposals_controller.rb | 12 ++++++- .../management/proposals/_votes.html.erb | 36 +++++++++++++++---- app/views/management/proposals/print.html.erb | 33 +++++++++++++++++ config/routes.rb | 4 +++ 4 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 app/views/management/proposals/print.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 1681fb004..3b630a5ae 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,18 +1,23 @@ class Management::ProposalsController < Management::BaseController skip_before_action :verify_manager + include HasOrders include CommentableActions before_action :set_proposal, only: :vote before_action :parse_search_terms, only: :index - has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index + has_orders %w{hot_score confidence_score created_at most_commented random}, only: [:index, :print] def vote @proposal.register_vote(current_user, 'yes') redirect_to management_proposals_url, notice: "Succesfully voted" end + def print + @proposals = Proposal.all.page(params[:page]).for_render.send("sort_by_#{@current_order}") + end + private def set_proposal @@ -33,4 +38,9 @@ class Management::ProposalsController < Management::BaseController Proposal end + #Duplicated in application_controller. Move to a concenrn. + def set_proposal_votes(proposals) + @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} + end + end \ No newline at end of file diff --git a/app/views/management/proposals/_votes.html.erb b/app/views/management/proposals/_votes.html.erb index 7ef6fd6e3..ac0c93b09 100644 --- a/app/views/management/proposals/_votes.html.erb +++ b/app/views/management/proposals/_votes.html.erb @@ -1,9 +1,31 @@
-
- <%= link_to vote_management_proposal_path(proposal, value: 'yes'), - class: "button button-support tiny radius expand", - title: t('proposals.proposal.support_title'), method: "post" do %> - <%= t("proposals.proposal.support") %> - <% end %> -
+ + <% if action_name == 'print' %> +
+ + + <%= supports_percentage(proposal) %> / <%= t("proposals.proposal.total_percent") %> + +
+ + + <%= t("proposals.proposal.supports", count: proposal.total_votes) %>  + + "> + <%= t("proposals.proposal.supports_necessary") %> + + + + <% else %> + +
+ <%= link_to vote_management_proposal_path(proposal, value: 'yes'), + class: "button button-support tiny radius expand", + title: t('proposals.proposal.support_title'), method: "post" do %> + <%= t("proposals.proposal.support") %> + <% end %> +
+ + <% end %> +
diff --git a/app/views/management/proposals/print.html.erb b/app/views/management/proposals/print.html.erb new file mode 100644 index 000000000..c223dbd4c --- /dev/null +++ b/app/views/management/proposals/print.html.erb @@ -0,0 +1,33 @@ +
+ <%= t("manage.create_user.print") %> +
+
+ +
+
+
+

+ <%= t("proposals.index.select_order_long") %> +

+ <%= render 'shared/order_selector', i18n_namespace: "proposals.index" %> +
+
+
+ + <%= render @proposals %> + <%= paginate @proposals %> +
+
+
+ + + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 5b62b5494..b3a2a5476 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -173,6 +173,10 @@ Rails.application.routes.draw do member do post :vote end + + collection do + get :print + end end end From 74b92ca317d91f760a3c05f9cdbd3f53bb40f222 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:08:08 +0200 Subject: [PATCH 07/27] tmp commit manager vote --- .../management/proposals_controller.rb | 18 ++++++++++++++++++ app/helpers/admin_helper.rb | 2 +- app/views/management/proposals/index.html.erb | 1 + app/views/proposals/index.html.erb | 2 +- config/routes.rb | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 app/controllers/management/proposals_controller.rb create mode 100644 app/views/management/proposals/index.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb new file mode 100644 index 000000000..da643d4a4 --- /dev/null +++ b/app/controllers/management/proposals_controller.rb @@ -0,0 +1,18 @@ +class Management::ProposalsController < Management::BaseController + include HasOrders + + has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index + + def index + @proposals = Proposal.all.limit(10).page(params[:page]) + @tag_cloud = [] + set_proposal_votes(@proposals) + end + + private + + def set_proposal_votes(proposals) + @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} + end + +end \ No newline at end of file diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index 1c72fedbf..a8711e5d7 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -1,7 +1,7 @@ module AdminHelper def side_menu - render "/#{namespace}/menu" + #render "/#{namespace}/menu" end def official_level_options diff --git a/app/views/management/proposals/index.html.erb b/app/views/management/proposals/index.html.erb new file mode 100644 index 000000000..7c02f6d29 --- /dev/null +++ b/app/views/management/proposals/index.html.erb @@ -0,0 +1 @@ +<%= render template: "proposals/index" %> \ No newline at end of file diff --git a/app/views/proposals/index.html.erb b/app/views/proposals/index.html.erb index 28807d247..c0bbdc009 100644 --- a/app/views/proposals/index.html.erb +++ b/app/views/proposals/index.html.erb @@ -44,7 +44,7 @@ <%= link_to t("proposals.index.start_proposal"), new_proposal_path, class: 'button radius expand' %>
- <%= render @proposals %> + <%= render partial: 'proposals/proposal', collection: @proposals %> <%= paginate @proposals %> diff --git a/config/routes.rb b/config/routes.rb index 391bc5415..3c23d5b5d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,6 +169,7 @@ Rails.application.routes.draw do get 'sign_in', to: 'sessions#create' resources :sessions, only: :create + resources :proposals, only: :index end # Example of regular route: From 4881f5bd1ec5b3997733d56f432e234c2a8071e0 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:43:00 +0200 Subject: [PATCH 08/27] basic proposal voting my managers --- .../management/proposals_controller.rb | 19 ++++++++-- .../management/proposals/_proposal.html.erb | 35 +++++++++++++++++++ .../management/proposals/_votes.html.erb | 9 +++++ app/views/management/proposals/index.html.erb | 21 ++++++++++- config/routes.rb | 6 +++- 5 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 app/views/management/proposals/_proposal.html.erb create mode 100644 app/views/management/proposals/_votes.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index da643d4a4..2b0de30d6 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,18 +1,33 @@ class Management::ProposalsController < Management::BaseController + skip_before_action :verify_manager include HasOrders + before_action :set_proposal, only: :vote has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index def index @proposals = Proposal.all.limit(10).page(params[:page]) - @tag_cloud = [] - set_proposal_votes(@proposals) + end + + def vote + @proposal.register_vote(current_user, 'yes') + redirect_to management_proposals_url, notice: "Succesfully voted" end private + def set_proposal + @proposal = Proposal.find(params[:id]) + end + def set_proposal_votes(proposals) @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} end + def current_user + #CHANGE ME + #Should be user being managed + User.first + end + end \ No newline at end of file diff --git a/app/views/management/proposals/_proposal.html.erb b/app/views/management/proposals/_proposal.html.erb new file mode 100644 index 000000000..f91fd2b4f --- /dev/null +++ b/app/views/management/proposals/_proposal.html.erb @@ -0,0 +1,35 @@ +
+
+
+ +
+
+ <%= t("proposals.proposal.proposal") %> + +

<%= link_to proposal.title, "#" %>

+ +

+   +  •  + <%= l proposal.created_at.to_date %> +  •  + + <%= proposal.try(:author).try(:name) %> + +

+ +
+

<%= proposal.summary %>

+
+
+ + <%= render "shared/tags", taggable: proposal, limit: 5 %> +
+
+ +
+ <%= render 'votes', proposal: proposal %> +
+
+
+
\ No newline at end of file diff --git a/app/views/management/proposals/_votes.html.erb b/app/views/management/proposals/_votes.html.erb new file mode 100644 index 000000000..7ef6fd6e3 --- /dev/null +++ b/app/views/management/proposals/_votes.html.erb @@ -0,0 +1,9 @@ +
+
+ <%= link_to vote_management_proposal_path(proposal, value: 'yes'), + class: "button button-support tiny radius expand", + title: t('proposals.proposal.support_title'), method: "post" do %> + <%= t("proposals.proposal.support") %> + <% end %> +
+
diff --git a/app/views/management/proposals/index.html.erb b/app/views/management/proposals/index.html.erb index 7c02f6d29..2aa28c219 100644 --- a/app/views/management/proposals/index.html.erb +++ b/app/views/management/proposals/index.html.erb @@ -1 +1,20 @@ -<%= render template: "proposals/index" %> \ No newline at end of file +
+
+
+ +
+
+ <% if @search_terms %> +

+ <%= page_entries_info @proposals %> + <%= t("proposals.index.search_results", count: @proposals.size, search_term: @search_terms) %> +

+ <% end %> +
+ + <%= render @proposals %> + <%= paginate @proposals %> +
+
+
+
\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 3c23d5b5d..afb421ac5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,7 +169,11 @@ Rails.application.routes.draw do get 'sign_in', to: 'sessions#create' resources :sessions, only: :create - resources :proposals, only: :index + resources :proposals, only: :index do + member do + post :vote + end + end end # Example of regular route: From 5f76da39a6e1f5b1a53d87bbc3b96cbb7d3ec840 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:56:18 +0200 Subject: [PATCH 09/27] bringing back admin side menu --- app/helpers/admin_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index a8711e5d7..1c72fedbf 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -1,7 +1,7 @@ module AdminHelper def side_menu - #render "/#{namespace}/menu" + render "/#{namespace}/menu" end def official_level_options From 33a3ece1c285b1a9811079c55c08864fd5b6d0aa Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 18:56:33 +0200 Subject: [PATCH 10/27] adds search for proposals --- app/controllers/management/proposals_controller.rb | 11 +++++++---- app/views/admin/shared/_proposal_search.html.erb | 10 ++++++++++ app/views/management/proposals/index.html.erb | 2 ++ config/locales/admin.en.yml | 3 +++ config/locales/admin.es.yml | 3 +++ 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 app/views/admin/shared/_proposal_search.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 2b0de30d6..283aa9428 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,13 +1,12 @@ class Management::ProposalsController < Management::BaseController skip_before_action :verify_manager include HasOrders + include CommentableActions before_action :set_proposal, only: :vote - has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index + before_action :parse_search_terms, only: :index - def index - @proposals = Proposal.all.limit(10).page(params[:page]) - end + has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index def vote @proposal.register_vote(current_user, 'yes') @@ -30,4 +29,8 @@ class Management::ProposalsController < Management::BaseController User.first end + def resource_model + Proposal + end + end \ No newline at end of file diff --git a/app/views/admin/shared/_proposal_search.html.erb b/app/views/admin/shared/_proposal_search.html.erb new file mode 100644 index 000000000..9604edf34 --- /dev/null +++ b/app/views/admin/shared/_proposal_search.html.erb @@ -0,0 +1,10 @@ +<%= form_for(Proposal.new, url: url, as: :proposal, method: :get) do |f| %> +
+
+ <%= text_field_tag :search, "", placeholder: t("admin.shared.proposal_search.placeholder") %> +
+
+ <%= f.submit t("admin.shared.proposal_search.button"), class: "button radius success" %> +
+
+<% end %> \ No newline at end of file diff --git a/app/views/management/proposals/index.html.erb b/app/views/management/proposals/index.html.erb index 2aa28c219..f6044265c 100644 --- a/app/views/management/proposals/index.html.erb +++ b/app/views/management/proposals/index.html.erb @@ -1,4 +1,6 @@
+ <%= render 'admin/shared/proposal_search', url: management_proposals_path %> +
diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index d298f8250..a70329132 100644 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -26,6 +26,9 @@ en: user_search: placeholder: 'Search user by name or email' button: 'Search' + proposal_search: + placeholder: 'Search proposals by title, description or question' + button: 'Search' organizations: index: title: Organizations diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index b9845c21e..40aef5f24 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -26,6 +26,9 @@ es: user_search: placeholder: 'Buscar usuario por nombre o email' button: 'Buscar' + proposal_search: + placeholder: 'Buscar propuestas por título, descripción o pregunta' + button: 'Buscar' organizations: index: title: Organizaciones From 0acdf5722bec2878587ffe9c1374a646565041ed Mon Sep 17 00:00:00 2001 From: rgarcia Date: Mon, 5 Oct 2015 19:12:56 +0200 Subject: [PATCH 11/27] adds creation of proposals by managers --- app/controllers/management/proposals_controller.rb | 4 ++-- app/views/management/proposals/new.html.erb | 1 + app/views/proposals/_form.html.erb | 2 +- app/views/proposals/edit.html.erb | 2 +- app/views/proposals/new.html.erb | 2 +- config/routes.rb | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 app/views/management/proposals/new.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 283aa9428..1681fb004 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -19,8 +19,8 @@ class Management::ProposalsController < Management::BaseController @proposal = Proposal.find(params[:id]) end - def set_proposal_votes(proposals) - @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} + def proposal_params + params.require(:proposal).permit(:title, :question, :summary, :description, :external_url, :video_url, :responsible_name, :tag_list, :terms_of_service, :captcha, :captcha_key) end def current_user diff --git a/app/views/management/proposals/new.html.erb b/app/views/management/proposals/new.html.erb new file mode 100644 index 000000000..2641331a0 --- /dev/null +++ b/app/views/management/proposals/new.html.erb @@ -0,0 +1 @@ +<%= render template: 'proposals/new', form_url: management_proposals_url %> \ No newline at end of file diff --git a/app/views/proposals/_form.html.erb b/app/views/proposals/_form.html.erb index 40b0e5b52..4c14730fe 100644 --- a/app/views/proposals/_form.html.erb +++ b/app/views/proposals/_form.html.erb @@ -1,4 +1,4 @@ -<%= form_for(@proposal) do |f| %> +<%= form_for(@proposal, url: form_url) do |f| %> <%= render 'shared/errors', resource: @proposal %>
diff --git a/app/views/proposals/edit.html.erb b/app/views/proposals/edit.html.erb index 7d7ce413b..1ed03d533 100644 --- a/app/views/proposals/edit.html.erb +++ b/app/views/proposals/edit.html.erb @@ -12,6 +12,6 @@

<%= t("proposals.edit.editing") %>

- <%= render "form" %> + <%= render "form", form_url: proposal_url(@proposal) %>
diff --git a/app/views/proposals/new.html.erb b/app/views/proposals/new.html.erb index 0bda9fd56..a24a31e77 100644 --- a/app/views/proposals/new.html.erb +++ b/app/views/proposals/new.html.erb @@ -11,7 +11,7 @@ <%= t("proposals.new.more_info")%> <% end %>
- <%= render "form" %> + <%= render "proposals/form", form_url: proposals_url %>
diff --git a/config/routes.rb b/config/routes.rb index afb421ac5..5b62b5494 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -169,7 +169,7 @@ Rails.application.routes.draw do get 'sign_in', to: 'sessions#create' resources :sessions, only: :create - resources :proposals, only: :index do + resources :proposals, only: [:index, :new, :create] do member do post :vote end From 015e57ddada35e2aafc6c8595765cebbcc33d726 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Tue, 6 Oct 2015 14:27:34 +0200 Subject: [PATCH 12/27] adds print of new proposals --- .../management/proposals_controller.rb | 12 ++++++- .../management/proposals/_votes.html.erb | 36 +++++++++++++++---- app/views/management/proposals/print.html.erb | 33 +++++++++++++++++ config/routes.rb | 4 +++ 4 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 app/views/management/proposals/print.html.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 1681fb004..3b630a5ae 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,18 +1,23 @@ class Management::ProposalsController < Management::BaseController skip_before_action :verify_manager + include HasOrders include CommentableActions before_action :set_proposal, only: :vote before_action :parse_search_terms, only: :index - has_orders %w{hot_score confidence_score created_at most_commented random}, only: :index + has_orders %w{hot_score confidence_score created_at most_commented random}, only: [:index, :print] def vote @proposal.register_vote(current_user, 'yes') redirect_to management_proposals_url, notice: "Succesfully voted" end + def print + @proposals = Proposal.all.page(params[:page]).for_render.send("sort_by_#{@current_order}") + end + private def set_proposal @@ -33,4 +38,9 @@ class Management::ProposalsController < Management::BaseController Proposal end + #Duplicated in application_controller. Move to a concenrn. + def set_proposal_votes(proposals) + @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} + end + end \ No newline at end of file diff --git a/app/views/management/proposals/_votes.html.erb b/app/views/management/proposals/_votes.html.erb index 7ef6fd6e3..ac0c93b09 100644 --- a/app/views/management/proposals/_votes.html.erb +++ b/app/views/management/proposals/_votes.html.erb @@ -1,9 +1,31 @@
-
- <%= link_to vote_management_proposal_path(proposal, value: 'yes'), - class: "button button-support tiny radius expand", - title: t('proposals.proposal.support_title'), method: "post" do %> - <%= t("proposals.proposal.support") %> - <% end %> -
+ + <% if action_name == 'print' %> +
+ + + <%= supports_percentage(proposal) %> / <%= t("proposals.proposal.total_percent") %> + +
+ + + <%= t("proposals.proposal.supports", count: proposal.total_votes) %>  + + "> + <%= t("proposals.proposal.supports_necessary") %> + + + + <% else %> + +
+ <%= link_to vote_management_proposal_path(proposal, value: 'yes'), + class: "button button-support tiny radius expand", + title: t('proposals.proposal.support_title'), method: "post" do %> + <%= t("proposals.proposal.support") %> + <% end %> +
+ + <% end %> +
diff --git a/app/views/management/proposals/print.html.erb b/app/views/management/proposals/print.html.erb new file mode 100644 index 000000000..c223dbd4c --- /dev/null +++ b/app/views/management/proposals/print.html.erb @@ -0,0 +1,33 @@ +
+ <%= t("manage.create_user.print") %> +
+
+ +
+
+
+

+ <%= t("proposals.index.select_order_long") %> +

+ <%= render 'shared/order_selector', i18n_namespace: "proposals.index" %> +
+
+
+ + <%= render @proposals %> + <%= paginate @proposals %> +
+
+
+ + + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 5b62b5494..b3a2a5476 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -173,6 +173,10 @@ Rails.application.routes.draw do member do post :vote end + + collection do + get :print + end end end From 18e66160fe60ab386f1930ae160215927d965f00 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 13:56:51 +0200 Subject: [PATCH 13/27] adds manager creating proposals spec --- .../management/proposals_controller.rb | 2 +- app/views/management/proposals/new.html.erb | 8 +++- spec/features/management/proposals_spec.rb | 43 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 spec/features/management/proposals_spec.rb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 3b630a5ae..6e0d535c9 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -31,7 +31,7 @@ class Management::ProposalsController < Management::BaseController def current_user #CHANGE ME #Should be user being managed - User.first + User.last end def resource_model diff --git a/app/views/management/proposals/new.html.erb b/app/views/management/proposals/new.html.erb index 2641331a0..3586594f6 100644 --- a/app/views/management/proposals/new.html.erb +++ b/app/views/management/proposals/new.html.erb @@ -1 +1,7 @@ -<%= render template: 'proposals/new', form_url: management_proposals_url %> \ No newline at end of file +
+ +
+ <%= render "proposals/form", form_url: management_proposals_url %> +
+ +
diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb new file mode 100644 index 000000000..520ed4cc3 --- /dev/null +++ b/spec/features/management/proposals_spec.rb @@ -0,0 +1,43 @@ +require 'rails_helper' + +feature 'Proposals' do + + scenario 'Creating proposals on behalve of someone' do + ####CHANGE ME + ####Should identify the user being managed + managed_user = create(:user) + #### + + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + + visit new_management_proposal_path + + fill_in 'proposal_title', with: 'Help refugees' + fill_in 'proposal_question', with: '¿Would you like to give assistance to war refugees?' + fill_in 'proposal_summary', with: 'In summary, what we want is...' + fill_in 'proposal_description', with: 'This is very important because...' + fill_in 'proposal_external_url', with: 'http://rescue.org/refugees' + fill_in 'proposal_video_url', with: 'http://youtube.com' + fill_in 'proposal_responsible_name', with: 'Isabel Garcia' + fill_in 'proposal_captcha', with: correct_captcha_text + check 'proposal_terms_of_service' + + click_button 'Start a proposal' + + expect(page).to have_content 'Proposal was successfully created.' + + expect(page).to have_content 'Help refugees' + expect(page).to have_content '¿Would you like to give assistance to war refugees?' + expect(page).to have_content 'In summary, what we want is...' + expect(page).to have_content 'This is very important because...' + expect(page).to have_content 'http://rescue.org/refugees' + expect(page).to have_content 'http://youtube.com' + expect(page).to have_content managed_user.name + expect(page).to have_content I18n.l(Proposal.last.created_at.to_date) + end + + scenario 'Voting proposals on behalve of someone' + scenario 'Printing proposals' + +end \ No newline at end of file From a3503c7eb35c2fd9803726cfa596b6972e675a15 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 14:40:47 +0200 Subject: [PATCH 14/27] refactors manager proposal votes --- .../management/proposals_controller.rb | 2 +- .../management/proposals/_proposal.html.erb | 36 +------------------ .../management/proposals/_votes.html.erb | 33 ++--------------- app/views/management/proposals/vote.js.erb | 1 + app/views/proposals/_proposal.html.erb | 3 +- app/views/proposals/_votes.html.erb | 2 +- app/views/proposals/show.html.erb | 3 +- 7 files changed, 10 insertions(+), 70 deletions(-) create mode 100644 app/views/management/proposals/vote.js.erb diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 6e0d535c9..7cf052a26 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -11,7 +11,7 @@ class Management::ProposalsController < Management::BaseController def vote @proposal.register_vote(current_user, 'yes') - redirect_to management_proposals_url, notice: "Succesfully voted" + set_proposal_votes(@proposal) end def print diff --git a/app/views/management/proposals/_proposal.html.erb b/app/views/management/proposals/_proposal.html.erb index f91fd2b4f..be7a2e6b2 100644 --- a/app/views/management/proposals/_proposal.html.erb +++ b/app/views/management/proposals/_proposal.html.erb @@ -1,35 +1 @@ -
-
-
- -
-
- <%= t("proposals.proposal.proposal") %> - -

<%= link_to proposal.title, "#" %>

- -

-   -  •  - <%= l proposal.created_at.to_date %> -  •  - - <%= proposal.try(:author).try(:name) %> - -

- -
-

<%= proposal.summary %>

-
-
- - <%= render "shared/tags", taggable: proposal, limit: 5 %> -
-
- -
- <%= render 'votes', proposal: proposal %> -
-
-
-
\ No newline at end of file +<%= render partial: 'proposals/proposal', locals: {proposal: proposal} %> \ No newline at end of file diff --git a/app/views/management/proposals/_votes.html.erb b/app/views/management/proposals/_votes.html.erb index ac0c93b09..922c3e383 100644 --- a/app/views/management/proposals/_votes.html.erb +++ b/app/views/management/proposals/_votes.html.erb @@ -1,31 +1,2 @@ -
- - <% if action_name == 'print' %> -
- - - <%= supports_percentage(proposal) %> / <%= t("proposals.proposal.total_percent") %> - -
- - - <%= t("proposals.proposal.supports", count: proposal.total_votes) %>  - - "> - <%= t("proposals.proposal.supports_necessary") %> - - - - <% else %> - -
- <%= link_to vote_management_proposal_path(proposal, value: 'yes'), - class: "button button-support tiny radius expand", - title: t('proposals.proposal.support_title'), method: "post" do %> - <%= t("proposals.proposal.support") %> - <% end %> -
- - <% end %> - -
+<%= render 'proposals/votes', + { proposal: proposal, vote_url: vote_management_proposal_path(proposal, value: 'yes') } %> \ No newline at end of file diff --git a/app/views/management/proposals/vote.js.erb b/app/views/management/proposals/vote.js.erb new file mode 100644 index 000000000..73b2507c2 --- /dev/null +++ b/app/views/management/proposals/vote.js.erb @@ -0,0 +1 @@ +<%= render template: 'proposals/vote' %> \ No newline at end of file diff --git a/app/views/proposals/_proposal.html.erb b/app/views/proposals/_proposal.html.erb index 575722805..c536c897f 100644 --- a/app/views/proposals/_proposal.html.erb +++ b/app/views/proposals/_proposal.html.erb @@ -47,7 +47,8 @@
- <%= render 'proposals/votes', proposal: proposal %> + <%= render 'votes', + { proposal: proposal, vote_url: vote_proposal_path(proposal, value: 'yes') } %>
diff --git a/app/views/proposals/_votes.html.erb b/app/views/proposals/_votes.html.erb index 965f61bf7..b7e7d12a0 100644 --- a/app/views/proposals/_votes.html.erb +++ b/app/views/proposals/_votes.html.erb @@ -22,7 +22,7 @@ <%= t("proposals.proposal.already_supported") %> <% else %> - <%= link_to vote_proposal_path(proposal, value: 'yes'), + <%= link_to vote_url, class: "button button-support tiny radius expand", title: t('proposals.proposal.support_title'), method: "post", remote: true do %> <%= t("proposals.proposal.support") %> diff --git a/app/views/proposals/show.html.erb b/app/views/proposals/show.html.erb index 119968e4d..b72d7c7d5 100644 --- a/app/views/proposals/show.html.erb +++ b/app/views/proposals/show.html.erb @@ -97,7 +97,8 @@

<%= t("votes.supports") %>

- <%= render 'proposals/votes', proposal: @proposal %> + <%= render 'votes', + { proposal: @proposal, vote_url: vote_proposal_path(@proposal, value: 'yes') } %>
From 22271253d1d92e4ca03a3cdda71a879aaba76883 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 14:41:00 +0200 Subject: [PATCH 15/27] adds spec for manager proposal votes --- spec/features/management/proposals_spec.rb | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 520ed4cc3..c6272f7eb 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -37,7 +37,28 @@ feature 'Proposals' do expect(page).to have_content I18n.l(Proposal.last.created_at.to_date) end - scenario 'Voting proposals on behalve of someone' + scenario 'Voting proposals on behalve of someone', :js do + proposal = create(:proposal) + + ####CHANGE ME + ####Should identify the user being managed + managed_user = create(:user, :level_two) + #### + + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + + visit management_proposals_path + + within("#proposals") do + find('.in-favor a').click + + expect(page).to have_content "1 support" + expect(page).to have_content "You already supported this proposal, share it!" + end + expect(URI.parse(current_url).path).to eq(management_proposals_path) + end + scenario 'Printing proposals' end \ No newline at end of file From 5560c84b6603c5638d0cbe953f9154ffd82653ba Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 14:56:27 +0200 Subject: [PATCH 16/27] adds spec for manager print proposals --- .../management/proposals_controller.rb | 1 + app/views/management/proposals/print.html.erb | 2 +- spec/features/management/proposals_spec.rb | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 7cf052a26..8b9850bca 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -16,6 +16,7 @@ class Management::ProposalsController < Management::BaseController def print @proposals = Proposal.all.page(params[:page]).for_render.send("sort_by_#{@current_order}") + set_proposal_votes(@proposal) end private diff --git a/app/views/management/proposals/print.html.erb b/app/views/management/proposals/print.html.erb index c223dbd4c..f3835aca7 100644 --- a/app/views/management/proposals/print.html.erb +++ b/app/views/management/proposals/print.html.erb @@ -1,5 +1,5 @@
- <%= t("manage.create_user.print") %> + Print
diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index c6272f7eb..2603d9297 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -59,6 +59,20 @@ feature 'Proposals' do expect(URI.parse(current_url).path).to eq(management_proposals_path) end - scenario 'Printing proposals' + scenario 'Printing proposals', :js do + 5.times { create(:proposal) } + + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + + visit print_management_proposals_path + + find("#print_link").click + + ### CHANGE ME + # should probably test something else here + # maybe that we are loading a print.css stylesheet? + ### + end end \ No newline at end of file From e49bea806b18c054accbf3488b0f764da313c1ea Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 15:24:31 +0200 Subject: [PATCH 17/27] fixes specs for voting hightlights --- app/views/welcome/_votes.html.erb | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/views/welcome/_votes.html.erb diff --git a/app/views/welcome/_votes.html.erb b/app/views/welcome/_votes.html.erb new file mode 100644 index 000000000..4419a0b12 --- /dev/null +++ b/app/views/welcome/_votes.html.erb @@ -0,0 +1,2 @@ +<%= render 'proposals/votes', + { proposal: proposal, vote_url: vote_proposal_path(proposal, value: 'yes') } %> \ No newline at end of file From c21a78e1643d99d01d645b989b2e2ac2ee289d9c Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 15:37:59 +0200 Subject: [PATCH 18/27] checks for verified users when creating and voting proposals --- .../management/proposals_controller.rb | 8 ++ spec/features/management/proposals_spec.rb | 117 ++++++++++++------ 2 files changed, 84 insertions(+), 41 deletions(-) diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 8b9850bca..a2d233ecc 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -4,6 +4,8 @@ class Management::ProposalsController < Management::BaseController include HasOrders include CommentableActions + before_action :check_verified_user, except: :print + before_action :set_proposal, only: :vote before_action :parse_search_terms, only: :index @@ -39,6 +41,12 @@ class Management::ProposalsController < Management::BaseController Proposal end + def check_verified_user + unless current_user.level_two_or_three_verified? + redirect_to management_root_path, alert: 'User is not verified' + end + end + #Duplicated in application_controller. Move to a concenrn. def set_proposal_votes(proposals) @proposal_votes = current_user ? current_user.proposal_votes(proposals) : {} diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 2603d9297..bf629990f 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -2,61 +2,96 @@ require 'rails_helper' feature 'Proposals' do - scenario 'Creating proposals on behalve of someone' do - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user) - #### + context "Create" do - manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + scenario 'Creating proposals on behalve of someone' do + ####CHANGE ME + ####Should identify the user being managed + managed_user = create(:user, :level_two) + #### - visit new_management_proposal_path + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) - fill_in 'proposal_title', with: 'Help refugees' - fill_in 'proposal_question', with: '¿Would you like to give assistance to war refugees?' - fill_in 'proposal_summary', with: 'In summary, what we want is...' - fill_in 'proposal_description', with: 'This is very important because...' - fill_in 'proposal_external_url', with: 'http://rescue.org/refugees' - fill_in 'proposal_video_url', with: 'http://youtube.com' - fill_in 'proposal_responsible_name', with: 'Isabel Garcia' - fill_in 'proposal_captcha', with: correct_captcha_text - check 'proposal_terms_of_service' + visit new_management_proposal_path - click_button 'Start a proposal' + fill_in 'proposal_title', with: 'Help refugees' + fill_in 'proposal_question', with: '¿Would you like to give assistance to war refugees?' + fill_in 'proposal_summary', with: 'In summary, what we want is...' + fill_in 'proposal_description', with: 'This is very important because...' + fill_in 'proposal_external_url', with: 'http://rescue.org/refugees' + fill_in 'proposal_video_url', with: 'http://youtube.com' + fill_in 'proposal_captcha', with: correct_captcha_text + check 'proposal_terms_of_service' - expect(page).to have_content 'Proposal was successfully created.' + click_button 'Start a proposal' - expect(page).to have_content 'Help refugees' - expect(page).to have_content '¿Would you like to give assistance to war refugees?' - expect(page).to have_content 'In summary, what we want is...' - expect(page).to have_content 'This is very important because...' - expect(page).to have_content 'http://rescue.org/refugees' - expect(page).to have_content 'http://youtube.com' - expect(page).to have_content managed_user.name - expect(page).to have_content I18n.l(Proposal.last.created_at.to_date) + expect(page).to have_content 'Proposal was successfully created.' + + expect(page).to have_content 'Help refugees' + expect(page).to have_content '¿Would you like to give assistance to war refugees?' + expect(page).to have_content 'In summary, what we want is...' + expect(page).to have_content 'This is very important because...' + expect(page).to have_content 'http://rescue.org/refugees' + expect(page).to have_content 'http://youtube.com' + expect(page).to have_content managed_user.name + expect(page).to have_content I18n.l(Proposal.last.created_at.to_date) + end + + scenario "Should not allow unverified users to create proposals" do + ####CHANGE ME + ####Should identify the user being managed + unverified_user = create(:user) + #### + + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + + visit new_management_proposal_path + + expect(page).to have_content "User is not verified" + end end - scenario 'Voting proposals on behalve of someone', :js do - proposal = create(:proposal) + context "Voting" do - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user, :level_two) - #### + scenario 'Voting proposals on behalve of someone', :js do + proposal = create(:proposal) - manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + ####CHANGE ME + ####Should identify the user being managed + managed_user = create(:user, :level_two) + #### - visit management_proposals_path + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) - within("#proposals") do - find('.in-favor a').click + visit management_proposals_path - expect(page).to have_content "1 support" - expect(page).to have_content "You already supported this proposal, share it!" + within("#proposals") do + find('.in-favor a').click + + expect(page).to have_content "1 support" + expect(page).to have_content "You already supported this proposal, share it!" + end + expect(URI.parse(current_url).path).to eq(management_proposals_path) + end + + scenario "Should not allow unverified users to vote proposals", :focus do + proposal = create(:proposal) + + ####CHANGE ME + ####Should identify the user being managed + unverified_user = create(:user) + #### + + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + + visit management_proposals_path + + expect(page).to have_content "User is not verified" end - expect(URI.parse(current_url).path).to eq(management_proposals_path) end scenario 'Printing proposals', :js do From ea6ef5996ffd541c4181f3a22d773193bdfc8d93 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 15:39:42 +0200 Subject: [PATCH 19/27] refactors manager login to spec helper --- spec/features/management/proposals_spec.rb | 8 ++++---- spec/support/common_actions.rb | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index bf629990f..1214ada10 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -11,7 +11,7 @@ feature 'Proposals' do #### manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + login_as_manager(manager) visit new_management_proposal_path @@ -45,7 +45,7 @@ feature 'Proposals' do #### manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + login_as_manager(manager) visit new_management_proposal_path @@ -64,7 +64,7 @@ feature 'Proposals' do #### manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + login_as_manager(manager) visit management_proposals_path @@ -86,7 +86,7 @@ feature 'Proposals' do #### manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + login_as_manager(manager) visit management_proposals_path diff --git a/spec/support/common_actions.rb b/spec/support/common_actions.rb index d1a6bcdf6..2236e85da 100644 --- a/spec/support/common_actions.rb +++ b/spec/support/common_actions.rb @@ -24,6 +24,10 @@ module CommonActions click_button 'Log in' end + def login_as_manager(manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + end + def confirm_email expect(page).to have_content "A message with a confirmation link has been sent to your email address." From 4afff52968fca3f296f90ce21ddeb4209a25696c Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:05:44 +0200 Subject: [PATCH 20/27] adds searching spec for manager proposals --- spec/features/management/proposals_spec.rb | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 1214ada10..bd374b269 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -92,6 +92,32 @@ feature 'Proposals' do expect(page).to have_content "User is not verified" end + + scenario "Searching" do + proposal1 = create(:proposal, title: "Show me what you got") + proposal2 = create(:proposal, title: "Get Schwifty") + + manager = create(:manager) + login_as_manager(manager) + + ####CHANGE ME + ####Should identify the user being managed + managed_user = create(:user, :level_two) + #### + + visit management_proposals_path + + fill_in "search", with: "what you got" + click_button "Search" + + expect(current_path).to eq(management_proposals_path) + + within("#proposals") do + expect(page).to have_css('.proposal', count: 1) + expect(page).to have_content(proposal1.title) + expect(page).to_not have_content(proposal2.title) + end + end end scenario 'Printing proposals', :js do From b532982440b719ced9f93ece1c8723600b4f2a93 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:09:31 +0200 Subject: [PATCH 21/27] adds filtering spec for manager printing proposals --- spec/features/management/proposals_spec.rb | 50 +++++++++++++++++----- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index bd374b269..2994ef50d 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -120,20 +120,50 @@ feature 'Proposals' do end end - scenario 'Printing proposals', :js do - 5.times { create(:proposal) } + context "Printing" do + scenario 'Printing proposals', :js do + 5.times { create(:proposal) } - manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) + manager = create(:manager) + visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) - visit print_management_proposals_path + visit print_management_proposals_path - find("#print_link").click + find("#print_link").click - ### CHANGE ME - # should probably test something else here - # maybe that we are loading a print.css stylesheet? - ### + ### CHANGE ME + # should probably test something else here + # maybe that we are loading a print.css stylesheet? + ### + end + + scenario "Filtering", :js do + create(:proposal, title: 'Best proposal').update_column(:confidence_score, 10) + create(:proposal, title: 'Worst proposal').update_column(:confidence_score, 2) + create(:proposal, title: 'Medium proposal').update_column(:confidence_score, 5) + + manager = create(:manager) + login_as_manager(manager) + + ####CHANGE ME + ####Should identify the user being managed + managed_user = create(:user, :level_two) + #### + + visit print_management_proposals_path + + select 'most supported', from: 'order-selector' + + expect(page).to have_selector('.js-order-selector[data-order="confidence_score"]') + + within '#proposals' do + expect('Best proposal').to appear_before('Medium proposal') + expect('Medium proposal').to appear_before('Worst proposal') + end + + expect(current_url).to include('order=confidence_score') + expect(current_url).to include('page=1') + end end end \ No newline at end of file From 2928b6ded5f8b91ceb16d28e5f61c17d395bac20 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:17:32 +0200 Subject: [PATCH 22/27] refactors manager specs --- spec/features/management/proposals_spec.rb | 68 +++++++--------------- spec/support/common_actions.rb | 7 +++ 2 files changed, 27 insertions(+), 48 deletions(-) diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 2994ef50d..967ea90c8 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -2,16 +2,16 @@ require 'rails_helper' feature 'Proposals' do + background do + manager = create(:manager) + login_as_manager(manager) + end + context "Create" do scenario 'Creating proposals on behalve of someone' do - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user, :level_two) - #### - - manager = create(:manager) - login_as_manager(manager) + user = create(:user, :level_two) + login_managed_user(user) visit new_management_proposal_path @@ -34,18 +34,13 @@ feature 'Proposals' do expect(page).to have_content 'This is very important because...' expect(page).to have_content 'http://rescue.org/refugees' expect(page).to have_content 'http://youtube.com' - expect(page).to have_content managed_user.name + expect(page).to have_content user.name expect(page).to have_content I18n.l(Proposal.last.created_at.to_date) end scenario "Should not allow unverified users to create proposals" do - ####CHANGE ME - ####Should identify the user being managed - unverified_user = create(:user) - #### - - manager = create(:manager) - login_as_manager(manager) + user = create(:user) + login_managed_user(user) visit new_management_proposal_path @@ -58,13 +53,8 @@ feature 'Proposals' do scenario 'Voting proposals on behalve of someone', :js do proposal = create(:proposal) - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user, :level_two) - #### - - manager = create(:manager) - login_as_manager(manager) + user = create(:user, :level_two) + login_managed_user(user) visit management_proposals_path @@ -77,16 +67,11 @@ feature 'Proposals' do expect(URI.parse(current_url).path).to eq(management_proposals_path) end - scenario "Should not allow unverified users to vote proposals", :focus do + scenario "Should not allow unverified users to vote proposals" do proposal = create(:proposal) - ####CHANGE ME - ####Should identify the user being managed - unverified_user = create(:user) - #### - - manager = create(:manager) - login_as_manager(manager) + user = create(:user) + login_managed_user(user) visit management_proposals_path @@ -97,13 +82,8 @@ feature 'Proposals' do proposal1 = create(:proposal, title: "Show me what you got") proposal2 = create(:proposal, title: "Get Schwifty") - manager = create(:manager) - login_as_manager(manager) - - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user, :level_two) - #### + user = create(:user, :level_two) + login_managed_user(user) visit management_proposals_path @@ -124,9 +104,6 @@ feature 'Proposals' do scenario 'Printing proposals', :js do 5.times { create(:proposal) } - manager = create(:manager) - visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) - visit print_management_proposals_path find("#print_link").click @@ -137,18 +114,13 @@ feature 'Proposals' do ### end - scenario "Filtering", :js do + scenario "Filtering proposals to be printed", :js do create(:proposal, title: 'Best proposal').update_column(:confidence_score, 10) create(:proposal, title: 'Worst proposal').update_column(:confidence_score, 2) create(:proposal, title: 'Medium proposal').update_column(:confidence_score, 5) - manager = create(:manager) - login_as_manager(manager) - - ####CHANGE ME - ####Should identify the user being managed - managed_user = create(:user, :level_two) - #### + user = create(:user, :level_two) + login_managed_user(user) visit print_management_proposals_path diff --git a/spec/support/common_actions.rb b/spec/support/common_actions.rb index 2236e85da..1059b1c2f 100644 --- a/spec/support/common_actions.rb +++ b/spec/support/common_actions.rb @@ -28,6 +28,13 @@ module CommonActions visit management_sign_in_path(login: manager.username, clave_usuario: manager.password) end + def login_managed_user(user) + #### + # CHANGE ME + # Should identify the user being managed + #### + end + def confirm_email expect(page).to have_content "A message with a confirmation link has been sent to your email address." From 411ec5c9a4b785006fe86d5dc351199af2b563c1 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:21:10 +0200 Subject: [PATCH 23/27] adding translations --- app/views/management/proposals/print.html.erb | 4 +++- config/locales/management.en.yml | 7 ++++++- config/locales/management.es.yml | 7 ++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/views/management/proposals/print.html.erb b/app/views/management/proposals/print.html.erb index f3835aca7..9fd1c50cb 100644 --- a/app/views/management/proposals/print.html.erb +++ b/app/views/management/proposals/print.html.erb @@ -1,5 +1,7 @@
- Print + + <%= t('management.proposals.print.print_button') %> +
diff --git a/config/locales/management.en.yml b/config/locales/management.en.yml index 92e8475a5..473fb47a5 100644 --- a/config/locales/management.en.yml +++ b/config/locales/management.en.yml @@ -2,4 +2,9 @@ en: management: dashboard: index: - title: Management Dashboard \ No newline at end of file + title: Management Dashboard + proposals: + print: + print_button: Print + alert: + unverified_user: User is not verified \ No newline at end of file diff --git a/config/locales/management.es.yml b/config/locales/management.es.yml index de4e58f9f..937993c01 100644 --- a/config/locales/management.es.yml +++ b/config/locales/management.es.yml @@ -2,4 +2,9 @@ es: management: dashboard: index: - title: Gestión \ No newline at end of file + title: Gestión + proposals: + print: + print_button: Imprimir + alert: + unverified_user: Este usuario no está verificado \ No newline at end of file From 36875f8211f668ceaa47009792ba94cccded0526 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:25:21 +0200 Subject: [PATCH 24/27] brings back manager verification check --- app/controllers/management/proposals_controller.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index a2d233ecc..3e1953c28 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -1,6 +1,4 @@ class Management::ProposalsController < Management::BaseController - skip_before_action :verify_manager - include HasOrders include CommentableActions From 33ee1a159f5b2c87419686763ab7ebd430011b33 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:27:26 +0200 Subject: [PATCH 25/27] cleans up --- app/controllers/management/proposals_controller.rb | 1 - spec/features/management/proposals_spec.rb | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index 3e1953c28..a90740660 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -3,7 +3,6 @@ class Management::ProposalsController < Management::BaseController include CommentableActions before_action :check_verified_user, except: :print - before_action :set_proposal, only: :vote before_action :parse_search_terms, only: :index diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 967ea90c8..362aba565 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -62,7 +62,7 @@ feature 'Proposals' do find('.in-favor a').click expect(page).to have_content "1 support" - expect(page).to have_content "You already supported this proposal, share it!" + expect(page).to have_content "You already supported this proposal" end expect(URI.parse(current_url).path).to eq(management_proposals_path) end From 6b22d98a13deee75921e8c03c6bb89a82a6af606 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:31:58 +0200 Subject: [PATCH 26/27] fixes typo --- spec/features/management/proposals_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb index 362aba565..571c07ec8 100644 --- a/spec/features/management/proposals_spec.rb +++ b/spec/features/management/proposals_spec.rb @@ -9,7 +9,7 @@ feature 'Proposals' do context "Create" do - scenario 'Creating proposals on behalve of someone' do + scenario 'Creating proposals on behalf of someone' do user = create(:user, :level_two) login_managed_user(user) @@ -50,7 +50,7 @@ feature 'Proposals' do context "Voting" do - scenario 'Voting proposals on behalve of someone', :js do + scenario 'Voting proposals on behalf of someone', :js do proposal = create(:proposal) user = create(:user, :level_two) From 96633327b59bd871a5f157db7bc0519e589b19d8 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 8 Oct 2015 18:35:04 +0200 Subject: [PATCH 27/27] adds missing translation --- app/controllers/management/proposals_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/management/proposals_controller.rb b/app/controllers/management/proposals_controller.rb index a90740660..8ae63e94e 100644 --- a/app/controllers/management/proposals_controller.rb +++ b/app/controllers/management/proposals_controller.rb @@ -40,7 +40,7 @@ class Management::ProposalsController < Management::BaseController def check_verified_user unless current_user.level_two_or_three_verified? - redirect_to management_root_path, alert: 'User is not verified' + redirect_to management_root_path, alert: t("management.proposals.alert.unverified_user") end end