diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb
index c8001e0..373c36d 100644
--- a/app/controllers/deliverables_controller.rb
+++ b/app/controllers/deliverables_controller.rb
@@ -12,6 +12,10 @@ class DeliverablesController < InheritedResources::Base
create! { contract_url(@project, @contract) }
end
+ def destroy
+ destroy! { contract_url(@project, @contract) }
+ end
+
protected
def begin_of_association_chain
diff --git a/app/views/contracts/show.html.erb b/app/views/contracts/show.html.erb
index 96c9f4c..3e51d58 100644
--- a/app/views/contracts/show.html.erb
+++ b/app/views/contracts/show.html.erb
@@ -31,6 +31,8 @@
<%= l(:field_labor) %> |
<%= l(:field_overhead) %> |
<%= l(:field_fixed) %> |
+ |
+ <%= l(:button_delete) %> |
<% resource.deliverables.each do |deliverable| %>
@@ -44,6 +46,9 @@
--- |
--- |
--- |
+ |
+ <%= link_to(l(:button_delete), contract_deliverable_path(@project, resource, deliverable), :method => :delete, :confirm => l(:text_are_you_sure), :class => 'icon icon-del') %> |
+
<% end %>
<% end %>
diff --git a/init.rb b/init.rb
index 0a30b1a..5b630df 100644
--- a/init.rb
+++ b/init.rb
@@ -16,7 +16,7 @@ Redmine::Plugin.register :redmine_contracts do
project_module :contracts do
permission(:manage_budget, {
:contracts => [:index, :new, :create, :show, :edit, :update, :destroy],
- :deliverables => [:new, :create]
+ :deliverables => [:new, :create, :destroy]
}, :public => true)
end
diff --git a/test/integration/deliverables_delete_test.rb b/test/integration/deliverables_delete_test.rb
new file mode 100644
index 0000000..8b76d68
--- /dev/null
+++ b/test/integration/deliverables_delete_test.rb
@@ -0,0 +1,22 @@
+require 'test_helper'
+
+class DeliverablesDeleteTest < ActionController::IntegrationTest
+ include Redmine::I18n
+
+ def setup
+ @project = Project.generate!(:identifier => 'main')
+ @contract = Contract.generate!(:project => @project, :name => 'A Contract', :payment_terms => 'net_15')
+ @manager = User.generate!
+ @deliverable = FixedDeliverable.generate!(:contract => @contract, :manager => @manager)
+ end
+
+ should "allow anyone to delete the deliverable" do
+ visit_contract_page(@contract)
+
+ click_link_within "#fixed_deliverable_#{@deliverable.id}", 'Delete'
+ assert_response :success
+ assert_template 'contracts/show'
+
+ assert_nil Deliverable.find_by_id(@deliverable.id), "Deliverable not deleted"
+ end
+end