@@ -122,7 +122,13 @@ class AgentsController < ApplicationController |
||
| 122 | 122 |
@agent = current_user.agents.find(params[:id]) |
| 123 | 123 |
|
| 124 | 124 |
respond_to do |format| |
| 125 |
- if @agent.update_attributes(params[:agent]) |
|
| 125 |
+ if @agent.with_transaction_returning_status {
|
|
| 126 |
+ @agent.attributes = params[:agent] |
|
| 127 |
+ if params[:drop_pending_events] && @agent.can_receive_events? |
|
| 128 |
+ @agent.set_last_checked_event_id |
|
| 129 |
+ end |
|
| 130 |
+ @agent.save |
|
| 131 |
+ } |
|
| 126 | 132 |
format.html { redirect_back "'#{@agent.name}' was successfully updated." }
|
| 127 | 133 |
format.json { render json: @agent, status: :ok, location: agent_path(@agent) }
|
| 128 | 134 |
else |
@@ -21,9 +21,13 @@ |
||
| 21 | 21 |
|
| 22 | 22 |
<li> |
| 23 | 23 |
<% if agent.disabled? %> |
| 24 |
- <%= link_to '<i class="glyphicon glyphicon-play"></i> Enable agent'.html_safe, agent_path(agent, :agent => { :disabled => false }, :return => returnTo), :method => :put %>
|
|
| 24 |
+ <%= link_to '#', 'data-toggle' => 'modal', 'data-target' => "#confirm-enable-agent#{agent.id}" do %>
|
|
| 25 |
+ <i class="glyphicon glyphicon-play"></i> Enable agent |
|
| 26 |
+ <% end %> |
|
| 25 | 27 |
<% else %> |
| 26 |
- <%= link_to '<i class="glyphicon glyphicon-pause"></i> Disable agent'.html_safe, agent_path(agent, :agent => { :disabled => true }, :return => returnTo), :method => :put %>
|
|
| 28 |
+ <%= link_to '#', 'data-toggle' => 'modal', 'data-target' => "#confirm-disable-agent#{agent.id}" do %>
|
|
| 29 |
+ <i class="glyphicon glyphicon-pause"></i> Disable agent |
|
| 30 |
+ <% end %> |
|
| 27 | 31 |
<% end %> |
| 28 | 32 |
</li> |
| 29 | 33 |
|
@@ -49,3 +53,53 @@ |
||
| 49 | 53 |
<%= link_to '<span class="color-danger glyphicon glyphicon-remove"></span> 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" %>
|
| 50 | 54 |
</li> |
| 51 | 55 |
</ul> |
| 56 |
+ |
|
| 57 |
+<% if agent.disabled? %> |
|
| 58 |
+<div id="confirm-enable-agent<%= agent.id %>" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="confirmEnableAgentLabel" aria-hidden="true"> |
|
| 59 |
+ <div class="modal-dialog modal-sm"> |
|
| 60 |
+ <div class="modal-content"> |
|
| 61 |
+ <div class="modal-header"> |
|
| 62 |
+ <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> |
|
| 63 |
+ <h4 class="modal-title">Confirm</h4> |
|
| 64 |
+ </div> |
|
| 65 |
+ <div class="modal-body"> |
|
| 66 |
+ <p>Enable "<%= agent.name %>"?</p> |
|
| 67 |
+ </div> |
|
| 68 |
+ <div class="modal-footer"> |
|
| 69 |
+ <%= form_for(agent, as: :agent, url: agent_path(agent, return: returnTo), method: 'PUT') do |f| %> |
|
| 70 |
+ <% if agent.can_receive_events? || true %> |
|
| 71 |
+ <div class="form-group"> |
|
| 72 |
+ <%= check_box_tag check_box_id = "agent#{agent.id}_drop_pending_events", 'true', false, name: :drop_pending_events %>
|
|
| 73 |
+ <%= label_tag check_box_id, 'Drop pending events' %> |
|
| 74 |
+ </div> |
|
| 75 |
+ <% end %> |
|
| 76 |
+ <%= f.hidden_field :disabled, value: 'false' %> |
|
| 77 |
+ <%= f.button 'No', class: 'btn btn-default', 'data-dismiss' => 'modal' %> |
|
| 78 |
+ <%= f.submit 'Yes', class: 'btn btn-primary' %> |
|
| 79 |
+ <% end %> |
|
| 80 |
+ </div> |
|
| 81 |
+ </div> |
|
| 82 |
+ </div> |
|
| 83 |
+</div> |
|
| 84 |
+<% else %> |
|
| 85 |
+<div id="confirm-disable-agent<%= agent.id %>" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="confirmDisableAgentLabel" aria-hidden="true"> |
|
| 86 |
+ <div class="modal-dialog modal-sm"> |
|
| 87 |
+ <div class="modal-content"> |
|
| 88 |
+ <div class="modal-header"> |
|
| 89 |
+ <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> |
|
| 90 |
+ <h4 class="modal-title">Confirm</h4> |
|
| 91 |
+ </div> |
|
| 92 |
+ <div class="modal-body"> |
|
| 93 |
+ <p>Disable "<%= agent.name %>"?</p> |
|
| 94 |
+ </div> |
|
| 95 |
+ <div class="modal-footer"> |
|
| 96 |
+ <%= form_for(agent, as: :agent, url: agent_path(agent, return: returnTo), method: 'PUT') do |f| %> |
|
| 97 |
+ <%= f.hidden_field :disabled, value: 'true' %> |
|
| 98 |
+ <%= f.button 'No', class: 'btn btn-default', 'data-dismiss' => 'modal' %> |
|
| 99 |
+ <%= f.submit 'Yes', class: 'btn btn-primary' %> |
|
| 100 |
+ <% end %> |
|
| 101 |
+ </div> |
|
| 102 |
+ </div> |
|
| 103 |
+ </div> |
|
| 104 |
+</div> |
|
| 105 |
+<% end %> |
@@ -251,6 +251,18 @@ describe AgentsController do |
||
| 251 | 251 |
response.should redirect_to(agents_path) |
| 252 | 252 |
end |
| 253 | 253 |
end |
| 254 |
+ |
|
| 255 |
+ it "updates last_checked_event_id when drop_pending_events is given" do |
|
| 256 |
+ sign_in users(:bob) |
|
| 257 |
+ agent = agents(:bob_website_agent) |
|
| 258 |
+ agent.disabled = true |
|
| 259 |
+ agent.last_checked_event_id = nil |
|
| 260 |
+ agent.save! |
|
| 261 |
+ post :update, id: agents(:bob_website_agent).to_param, agent: { disabled: 'false' }, drop_pending_events: true
|
|
| 262 |
+ agent.reload |
|
| 263 |
+ agent.disabled.should == false |
|
| 264 |
+ agent.last_checked_event_id.should == Event.maximum(:id) |
|
| 265 |
+ end |
|
| 254 | 266 |
end |
| 255 | 267 |
|
| 256 | 268 |
describe "PUT leave_scenario" do |