From cfa4a372db10f305c114b222e256ddbaa56816fe Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 28 May 2008 17:05:58 -0700 Subject: [PATCH] Added delete link. #1190 --- app/controllers/deliverables_controller.rb | 10 ++++++++++ app/models/deliverable.rb | 6 ++++++ app/views/deliverables/_deliverable.html.erb | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/controllers/deliverables_controller.rb b/app/controllers/deliverables_controller.rb index 930a9d1..27ae40f 100644 --- a/app/controllers/deliverables_controller.rb +++ b/app/controllers/deliverables_controller.rb @@ -74,6 +74,16 @@ class DeliverablesController < ApplicationController end + def destroy + @deliverable = Deliverable.find_by_id_and_project_id(params[:deliverable_id], @project.id) + + render_404 and return unless @deliverable + render_403 and return unless @deliverable.editable_by?(User.current) + @deliverable.destroy + flash[:notice] = l(:notice_successful_delete) + redirect_to :action => 'index', :id => @project.id + end + # Create a query in the session and redirects to the issue list with that query def issues @query = Query.new(:name => "_") diff --git a/app/models/deliverable.rb b/app/models/deliverable.rb index a01fa9a..e3e0fd2 100644 --- a/app/models/deliverable.rb +++ b/app/models/deliverable.rb @@ -96,4 +96,10 @@ class Deliverable < ActiveRecord::Base end end + + # Returns true if the deliverable can be edited by user, otherwise false + def editable_by?(user) + (user == user && user.allowed_to?(:manage_budget, project)) + end + end diff --git a/app/views/deliverables/_deliverable.html.erb b/app/views/deliverables/_deliverable.html.erb index b9eb1c5..73893ba 100644 --- a/app/views/deliverables/_deliverable.html.erb +++ b/app/views/deliverables/_deliverable.html.erb @@ -32,6 +32,6 @@ :td, content_tag(:p,link_to("Assigned Issues", :action => 'issues', :id => @project.id, :deliverable_id => deliverable.id)) + content_tag(:p,link_to("Edit", :action => 'edit', :id => @project.id, :deliverable_id => deliverable.id)) + - content_tag(:p,link_to("Delete", :action => 'destroy', :id => @project.id, :deliverable_id => deliverable.id)), + content_tag(:p,link_to("Delete", { :action => 'destroy', :id => @project.id, :deliverable_id => deliverable.id}, :confirm => l(:text_are_you_sure))), :colspan => 4) %>