Added bulk issue assignment by version. #1157

This commit is contained in:
Eric Davis
2008-06-03 15:17:11 -07:00
parent 322013f4a0
commit e1cea90cd0
5 changed files with 36 additions and 7 deletions

View File

@@ -94,6 +94,18 @@ class DeliverablesController < ApplicationController
redirect_to :controller => 'issues', :action => 'index', :project_id => @project.id
end
def bulk_assign_issues
@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)
number_updated = @deliverable.assign_issues_by_version(params[:version][:id])
flash[:notice] = l(:message_updated_issues, number_updated)
redirect_to :action => 'index', :id => @project.id
end
private
def find_project
@project = Project.find(params[:id])

View File

@@ -5,6 +5,17 @@ class Deliverable < ActiveRecord::Base
belongs_to :project
has_many :issues
def assign_issues_by_version(version_id)
version = Version.find_by_id(version_id)
return 0 if version.nil? || version.fixed_issues.blank?
version.fixed_issues.each do |issue|
issue.update_attribute(:deliverable_id, self.id)
end
return version.fixed_issues.size
end
def score
return self.progress - self.budget_ratio
end

View File

@@ -25,10 +25,15 @@
"</dl>",
:colspan => 4) %>
<%= content_tag(
: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}, :confirm => l(:text_are_you_sure))),
:colspan => 4) %>
<td colspan="4">
<%= 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}, :confirm => l(:text_are_you_sure))) -%>
<p>
<%= form_tag(:action => 'bulk_assign_issues', :id => @project.id, :deliverable_id => deliverable.id) %>
<%= select("version", "id", @project.versions.sort.collect {|v| [v.name, v.id ] }, { :include_blank => true }) %>
<%= submit_tag(l(:button_change)) %></form>
<% %>
</p>
</td>
</tr>

View File

@@ -24,7 +24,7 @@ Redmine::Plugin.register :budget_plugin do
project_module :budget_module do
permission :view_budget, { :deliverables => [:index, :issues]}
permission :manage_budget, { :deliverables => [:new, :edit, :create, :update, :destroy, :preview]}
permission :manage_budget, { :deliverables => [:new, :edit, :create, :update, :destroy, :preview, :bulk_assign_issues]}
end
menu :project_menu, :budget, :controller => "deliverables", :action => 'index'

View File

@@ -10,3 +10,4 @@ field_client_signoff: Client Signoff
field_deliverable: Deliverable
field_deliverable_subject: Deliverable
label_member_rate: Rate ($)
message_updated_issues: Updated %d issues