adds valuators to spending proposals
Conflicts: app/views/admin/spending_proposals/show.html.erb
This commit is contained in:
@@ -11,18 +11,15 @@ class Admin::SpendingProposalsController < Admin::BaseController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@admins = Administrator.includes(:user).all
|
|
||||||
@valuators = Valuator.includes(:user).all.order("users.username ASC")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@spending_proposal = SpendingProposal.find(params[:id])
|
|
||||||
@admins = Administrator.includes(:user).all
|
@admins = Administrator.includes(:user).all
|
||||||
|
@valuators = Valuator.includes(:user).all.order("users.username ASC")
|
||||||
@tags = ActsAsTaggableOn::Tag.where('taggings.taggable_type' => 'SpendingProposal').includes(:taggings)
|
@tags = ActsAsTaggableOn::Tag.where('taggings.taggable_type' => 'SpendingProposal').includes(:taggings)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@spending_proposal = SpendingProposal.find(params[:id])
|
|
||||||
if @spending_proposal.update(spending_proposal_params)
|
if @spending_proposal.update(spending_proposal_params)
|
||||||
redirect_to admin_spending_proposal_path(@spending_proposal), notice: t("flash.actions.update.spending_proposal")
|
redirect_to admin_spending_proposal_path(@spending_proposal), notice: t("flash.actions.update.spending_proposal")
|
||||||
else
|
else
|
||||||
@@ -44,7 +41,7 @@ class Admin::SpendingProposalsController < Admin::BaseController
|
|||||||
private
|
private
|
||||||
|
|
||||||
def spending_proposal_params
|
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
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,6 +6,22 @@
|
|||||||
label: false },
|
label: false },
|
||||||
class: "js-submit-on-change" %>
|
class: "js-submit-on-change" %>
|
||||||
|
|
||||||
|
<div id="valuators-assign-list" class="row">
|
||||||
|
<% @valuators.each do |valuator| %>
|
||||||
|
<div class="small-12 medium-4 column end">
|
||||||
|
<%= 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" %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if @valuators.blank? %>
|
||||||
|
<p><%= t("admin.spending_proposals.show.no_valuators") %></p>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="small-12 column">
|
<div class="small-12 column">
|
||||||
<%= f.label :tag_list, t("proposals.form.tags_label") %>
|
<%= f.label :tag_list, t("proposals.form.tags_label") %>
|
||||||
<p class="note"><%= t("proposals.form.tags_instructions") %></p>
|
<p class="note"><%= t("proposals.form.tags_instructions") %></p>
|
||||||
|
|||||||
@@ -39,25 +39,19 @@
|
|||||||
|
|
||||||
<p><strong><%= t("admin.spending_proposals.show.assigned_valuators") %>:</strong></p>
|
<p><strong><%= t("admin.spending_proposals.show.assigned_valuators") %>:</strong></p>
|
||||||
<div id="assigned_valuators">
|
<div id="assigned_valuators">
|
||||||
<%= render "assigned_valuators" %>
|
<ul>
|
||||||
|
<% if @spending_proposal.valuators.any? %>
|
||||||
|
<% @spending_proposal.valuators.each do |valuator| %>
|
||||||
|
<li><%= valuator.name %> (<%= valuator.email %>)</li>
|
||||||
|
<% end %>
|
||||||
|
<% else %>
|
||||||
|
<li><%= t("admin.spending_proposals.show.undefined") %></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= link_to t("admin.spending_proposals.show.assign_valuators"), "", class: "js-toggle-link", data: {"toggle-selector" => "#valuators-assign-list"} %>
|
<%= link_to t("admin.spending_proposals.show.assign_valuators"), "", class: "js-toggle-link", data: {"toggle-selector" => "#valuators-assign-list"} %>
|
||||||
|
|
||||||
<div style="display:none" id="valuators-assign-list" class="row">
|
|
||||||
<%= form_for(@spending_proposal, url: assign_valuators_admin_spending_proposal_path(@spending_proposal), remote: true, html: {id: 'valuators_assignment_form'}) do |f| %>
|
|
||||||
<% @valuators.each do |valuator| %>
|
|
||||||
<div class="small-12 medium-4 column end">
|
|
||||||
<%= 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.email), class: "inline" %>
|
|
||||||
</div>
|
|
||||||
<% end -%>
|
|
||||||
<% end -%>
|
|
||||||
<% if @valuators.blank? %><p><%= t("admin.spending_proposals.show.no_valuators") %></p><% end %>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2><%= t("admin.spending_proposals.show.dossier") %></h2>
|
<h2><%= t("admin.spending_proposals.show.dossier") %></h2>
|
||||||
|
|
||||||
<p><strong><%= t("admin.spending_proposals.show.price") %> (<%= t("admin.spending_proposals.show.currency") %>):</strong>
|
<p><strong><%= t("admin.spending_proposals.show.price") %> (<%= t("admin.spending_proposals.show.currency") %>):</strong>
|
||||||
|
|||||||
@@ -264,6 +264,32 @@ feature 'Admin spending proposals' do
|
|||||||
expect(page).to have_content 'Assigned admin: Marta'
|
expect(page).to have_content 'Assigned admin: Marta'
|
||||||
end
|
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
|
scenario "Adds existing tags", :js do
|
||||||
create(:spending_proposal, tag_list: 'Education, Health')
|
create(:spending_proposal, tag_list: 'Education, Health')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user