From 7edbf92f017f05ed0867d005ab2279f3b0cb1e71 Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Thu, 18 Sep 2014 12:25:53 +0900 Subject: [PATCH 1/8] Give user an option to drop pending events when enabling an agent. This is shown in a confirmation dialog introduced for enable/disable actions. --- app/controllers/agents_controller.rb | 8 ++- app/views/agents/_action_menu.html.erb | 58 +++++++++++++++++++++- spec/controllers/agents_controller_spec.rb | 12 +++++ 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/app/controllers/agents_controller.rb b/app/controllers/agents_controller.rb index a459e8b5..d53cea95 100644 --- a/app/controllers/agents_controller.rb +++ b/app/controllers/agents_controller.rb @@ -122,7 +122,13 @@ class AgentsController < ApplicationController @agent = current_user.agents.find(params[:id]) respond_to do |format| - if @agent.update_attributes(params[:agent]) + if @agent.with_transaction_returning_status { + @agent.attributes = params[:agent] + if params[:drop_pending_events] && @agent.can_receive_events? + @agent.set_last_checked_event_id + end + @agent.save + } format.html { redirect_back "'#{@agent.name}' was successfully updated." } format.json { render json: @agent, status: :ok, location: agent_path(@agent) } else diff --git a/app/views/agents/_action_menu.html.erb b/app/views/agents/_action_menu.html.erb index 4a202f3d..4b3ed2bc 100644 --- a/app/views/agents/_action_menu.html.erb +++ b/app/views/agents/_action_menu.html.erb @@ -21,9 +21,13 @@
  • <% if agent.disabled? %> - <%= link_to ' Enable agent'.html_safe, agent_path(agent, :agent => { :disabled => false }, :return => returnTo), :method => :put %> + <%= link_to '#', 'data-toggle' => 'modal', 'data-target' => "#confirm-enable-agent#{agent.id}" do %> + Enable agent + <% end %> <% else %> - <%= link_to ' Disable agent'.html_safe, agent_path(agent, :agent => { :disabled => true }, :return => returnTo), :method => :put %> + <%= link_to '#', 'data-toggle' => 'modal', 'data-target' => "#confirm-disable-agent#{agent.id}" do %> + Disable agent + <% end %> <% end %>
  • @@ -49,3 +53,53 @@ <%= link_to ' Delete agent'.html_safe, agent_path(agent, :return => returnTo), method: :delete, data: { confirm: 'Are you sure that you want to permanently delete this Agent?' }, :tabindex => "-1" %> + +<% if agent.disabled? %> + +<% else %> + +<% end %> diff --git a/spec/controllers/agents_controller_spec.rb b/spec/controllers/agents_controller_spec.rb index bb77629f..06235b89 100644 --- a/spec/controllers/agents_controller_spec.rb +++ b/spec/controllers/agents_controller_spec.rb @@ -251,6 +251,18 @@ describe AgentsController do response.should redirect_to(agents_path) end end + + it "updates last_checked_event_id when drop_pending_events is given" do + sign_in users(:bob) + agent = agents(:bob_website_agent) + agent.disabled = true + agent.last_checked_event_id = nil + agent.save! + post :update, id: agents(:bob_website_agent).to_param, agent: { disabled: 'false' }, drop_pending_events: true + agent.reload + agent.disabled.should == false + agent.last_checked_event_id.should == Event.maximum(:id) + end end describe "PUT leave_scenario" do From c138a49824fe71dcda40436d8cd55be03a284352 Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Thu, 18 Sep 2014 14:11:19 +0900 Subject: [PATCH 2/8] Fix debug code. --- app/views/agents/_action_menu.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/agents/_action_menu.html.erb b/app/views/agents/_action_menu.html.erb index 4b3ed2bc..cfe1ef9f 100644 --- a/app/views/agents/_action_menu.html.erb +++ b/app/views/agents/_action_menu.html.erb @@ -67,7 +67,7 @@