diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index f8e3fe8..971f08e 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -107,10 +107,8 @@ @plan.assign_creator(current_user.id) - @plan.set_possible_guidance_groups - - @selected_guidance_groups = @plan.guidance_groups.map{ |pgg| [pgg.name, pgg.id, :checked => false] } - @selected_guidance_groups.sort! + @all_guidance_groups = @plan.get_guidance_group_options + @selected_guidance_groups = @plan.plan_guidance_groups.pluck(:guidance_group_id) respond_to do |format| if @plan.save @@ -130,10 +128,8 @@ @plan = Plan.eager_load(params[:id]) authorize @plan @editing = (!params[:editing].nil? && @plan.administerable_by?(current_user.id)) - @selected_guidance_groups = [] - all_guidance_groups = @plan.plan_guidance_groups - @selected_guidance_groups = all_guidance_groups.map{ |pgg| [ pgg.guidance_group.name, pgg.guidance_group.id, :checked => pgg.selected ] } - @selected_guidance_groups.sort! + @all_guidance_groups = @plan.get_guidance_group_options + @selected_guidance_groups = @plan.plan_guidance_groups.pluck(:guidance_group_id) @based_on = @plan.base_template respond_to :html @@ -182,18 +178,24 @@ def update_guidance_choices @plan = Plan.find(params[:id]) authorize @plan - guidance_ids = params[:plan][:plan_guidance_group_ids] - -# TODO: This always appears to be empty for a new plan. What SHOULD it contain, all guidance_groups? - @plan.plan_guidance_groups.each do |pgg| - pgg.selected = guidance_ids.include?(pgg.guidance_group_id.to_s) - pgg.save! + guidance_group_ids = params[:guidance_group_ids].blank? ? [] : params[:guidance_group_ids].map(&:to_i) + all_guidance_groups = @plan.get_guidance_group_options + plan_groups = @plan.guidance_groups + guidance_groups = GuidanceGroup.where( id: guidance_group_ids) + all_guidance_groups.each do |group| + # case where plan group exists but not in selection + if plan_groups.include?(group) && ! guidance_groups.include?(group) + # remove from plan groups + @plan.guidance_groups.delete(group) + end + # case where plan group dosent exist and in selection + if !plan_groups.include?(group) && guidance_groups.include?(group) + # add to plan groups + @plan.guidance_groups << group + end end - @plan.save! - - respond_to do |format| - format.json { head :no_content } - end + @plan.save + redirect_to action: "show" end def share diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index ce0d122..57b504f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -47,7 +47,7 @@ end end end - + if @user.save! redirect_to({controller: 'users', action: 'admin_index'}, {notice: _('Information was successfully updated.')}) # helpers.success key does not exist, replaced with a generic string else diff --git a/app/models/plan.rb b/app/models/plan.rb index c89b793..5b284b0 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -147,6 +147,18 @@ self.guidance_groups = ggroups.uniq end + ## + # returns all of the possible guidance groups for the plan (all options to + # be selected by the user to display) + # + # @return Array + def get_guidance_group_options + ggroups = GuidanceGroup.all + # funder organisations + # default guidance (dcc) + # own organisation? + end + diff --git a/app/views/plans/_plan_details.html.erb b/app/views/plans/_plan_details.html.erb index dde9a2f..656e6e4 100644 --- a/app/views/plans/_plan_details.html.erb +++ b/app/views/plans/_plan_details.html.erb @@ -173,20 +173,22 @@
- <%= semantic_form_for @plan, :url => {:controller => :plans, :action => :update_guidance_choices }, :html=>{:method=>:put}, :remote => true do |f| %> - <%= f.inputs do %> - <%= f.input :plan_guidance_groups, - :as => :check_boxes, - :collection => selected_guidance_groups %> - <% end %> - - <%= f.actions do %> -
- <%= f.submit _('Save'), :class => 'btn btn-primary' %> - <%= _('helpers.links.cancel') %> -
- <%end%> - <%end%> + <%= form_tag( update_guidance_choices_plan_path(@plan), method: :put) do %> + + + <% @all_guidance_groups.each do |group| %> + + + + <% end %> + + +
+ <%= check_box_tag "guidance_group_ids[]", group.id, @selected_guidance_groups.include?(group.id) %> + <%= group.name %> +
+ <%= submit_tag _('Save'), class: "btn btn-primary"%> + <% end %>