diff --git a/app/controllers/admin/spending_proposals_controller.rb b/app/controllers/admin/spending_proposals_controller.rb index 5eb28d5b7..8e23cc77a 100644 --- a/app/controllers/admin/spending_proposals_controller.rb +++ b/app/controllers/admin/spending_proposals_controller.rb @@ -11,18 +11,15 @@ class Admin::SpendingProposalsController < Admin::BaseController end def show - @admins = Administrator.includes(:user).all - @valuators = Valuator.includes(:user).all.order("users.username ASC") end def edit - @spending_proposal = SpendingProposal.find(params[:id]) @admins = Administrator.includes(:user).all + @valuators = Valuator.includes(:user).all.order("users.username ASC") @tags = ActsAsTaggableOn::Tag.where('taggings.taggable_type' => 'SpendingProposal').includes(:taggings) end def update - @spending_proposal = SpendingProposal.find(params[:id]) if @spending_proposal.update(spending_proposal_params) redirect_to admin_spending_proposal_path(@spending_proposal), notice: t("flash.actions.update.spending_proposal") else @@ -44,7 +41,7 @@ class Admin::SpendingProposalsController < Admin::BaseController private def spending_proposal_params - params.require(:spending_proposal).permit(:administrator_id, :tag_list) + params.require(:spending_proposal).permit(:administrator_id, :tag_list, valuator_ids: []) end end diff --git a/app/views/admin/spending_proposals/edit.html.erb b/app/views/admin/spending_proposals/edit.html.erb index d189b29c5..022fdb0c9 100644 --- a/app/views/admin/spending_proposals/edit.html.erb +++ b/app/views/admin/spending_proposals/edit.html.erb @@ -6,6 +6,22 @@ label: false }, class: "js-submit-on-change" %> +
+ <% @valuators.each do |valuator| %> +
+ <%= check_box_tag "valuator_ids_#{valuator.id}", + valuator.id, @spending_proposal.valuators.include?(valuator), + name: 'spending_proposal[valuator_ids][]', + class: "js-submit-on-change" %> + <%= label_tag "valuator_ids_#{valuator.id}", truncate(valuator.name), class: "inline" %> +
+ <% end %> + + <% if @valuators.blank? %> +

<%= t("admin.spending_proposals.show.no_valuators") %>

+ <% end %> +
+
<%= f.label :tag_list, t("proposals.form.tags_label") %>

<%= t("proposals.form.tags_instructions") %>

diff --git a/app/views/admin/spending_proposals/show.html.erb b/app/views/admin/spending_proposals/show.html.erb index 23a641bfb..fc826f747 100644 --- a/app/views/admin/spending_proposals/show.html.erb +++ b/app/views/admin/spending_proposals/show.html.erb @@ -39,25 +39,19 @@

<%= t("admin.spending_proposals.show.assigned_valuators") %>:

- <%= render "assigned_valuators" %> +
<%= link_to t("admin.spending_proposals.show.assign_valuators"), "", class: "js-toggle-link", data: {"toggle-selector" => "#valuators-assign-list"} %> - -

<%= t("admin.spending_proposals.show.dossier") %>

<%= t("admin.spending_proposals.show.price") %> (<%= t("admin.spending_proposals.show.currency") %>): @@ -77,4 +71,4 @@ <% if @spending_proposal.internal_comments.present? %>

<%= t("admin.spending_proposals.show.internal_comments") %>

<%= simple_format(safe_html_with_links(@spending_proposal.internal_comments.html_safe), {}, sanitize: false) %> -<% end %> \ No newline at end of file +<% end %> diff --git a/spec/features/admin/spending_proposals_spec.rb b/spec/features/admin/spending_proposals_spec.rb index 3b0aa646e..f7c53cd7a 100644 --- a/spec/features/admin/spending_proposals_spec.rb +++ b/spec/features/admin/spending_proposals_spec.rb @@ -264,6 +264,32 @@ feature 'Admin spending proposals' do expect(page).to have_content 'Assigned admin: Marta' end + scenario "Add valuators" do + spending_proposal = create(:spending_proposal) + + valuator1 = create(:valuator, user: create(:user, username: 'Valentina', email: 'v1@valuators.org')) + valuator2 = create(:valuator, user: create(:user, username: 'Valerian', email: 'v2@valuators.org')) + valuator3 = create(:valuator, user: create(:user, username: 'Val', email: 'v3@valuators.org')) + + visit edit_admin_spending_proposal_path(spending_proposal) + + within('#valuators-assign-list') do + check "valuator_ids_#{valuator1.id}" + check "valuator_ids_#{valuator3.id}" + end + + click_button 'Update' + + expect(page).to have_content 'Investment project updated succesfully.' + + within('#assigned_valuators') do + expect(page).to have_content('Valentina (v1@valuators.org)') + expect(page).to have_content('Val (v3@valuators.org)') + expect(page).to_not have_content('Undefined') + expect(page).to_not have_content('Valerian (v2@valuators.org)') + end + end + scenario "Adds existing tags", :js do create(:spending_proposal, tag_list: 'Education, Health')