From 13c17c2ad5f7471a4dc638cba4dabd8514ab432a Mon Sep 17 00:00:00 2001
From: Jean-Philippe Lang
Date: Sun, 13 Jan 2008 10:53:12 +0000
Subject: [PATCH] Make issue categories inheritable on subprojects (can be
disabled in Admin -> Settings -> Projects).
git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1060 e93f8b46-1217-0410-a6f0-8f06a7374b81
---
project_inheritance/app/controllers/reports_controller.rb | 4 ++--
project_inheritance/app/models/project.rb | 8 +++++++-
project_inheritance/app/models/query.rb | 2 +-
.../app/views/issues/_bulk_edit_form.rhtml | 4 ++--
project_inheritance/app/views/issues/_form.rhtml | 2 +-
project_inheritance/app/views/settings/_projects.rhtml | 4 ++++
project_inheritance/config/settings.yml | 2 ++
7 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/project_inheritance/app/controllers/reports_controller.rb b/project_inheritance/app/controllers/reports_controller.rb
index cca0b37ab..3f150522c 100644
--- a/project_inheritance/app/controllers/reports_controller.rb
+++ b/project_inheritance/app/controllers/reports_controller.rb
@@ -43,7 +43,7 @@ class ReportsController < ApplicationController
render :template => "reports/issue_report_details"
when "category"
@field = "category_id"
- @rows = @project.issue_categories
+ @rows = @project.assignable_categories
@data = issues_by_category
@report_title = l(:field_category)
render :template => "reports/issue_report_details"
@@ -63,7 +63,7 @@ class ReportsController < ApplicationController
@trackers = @project.trackers
@versions = @project.assignable_versions
@priorities = Enumeration::get_values('IPRI')
- @categories = @project.issue_categories
+ @categories = @project.assignable_categories
@authors = @project.members.collect { |m| m.user }
@subprojects = @project.active_children
issues_by_tracker
diff --git a/project_inheritance/app/models/project.rb b/project_inheritance/app/models/project.rb
index ea369c0bf..35442cb73 100644
--- a/project_inheritance/app/models/project.rb
+++ b/project_inheritance/app/models/project.rb
@@ -164,10 +164,16 @@ class Project < ActiveRecord::Base
def assignable_versions
v = versions
- v += parent.versions if Setting.subprojects_inherit_versions? && parent
+ v += parent.versions if Setting.subprojects_inherit_versions? && parent
v.sort
end
+ def assignable_categories
+ c = issue_categories
+ c += parent.issue_categories if Setting.subprojects_inherit_categories? && parent
+ c.sort
+ end
+
# Returns the mail adresses of users that should be always notified on project events
def recipients
members.select {|m| m.mail_notification? || m.user.mail_notification?}.collect {|m| m.user.mail}
diff --git a/project_inheritance/app/models/query.rb b/project_inheritance/app/models/query.rb
index afdae5946..368ce83c4 100644
--- a/project_inheritance/app/models/query.rb
+++ b/project_inheritance/app/models/query.rb
@@ -155,7 +155,7 @@ class Query < ActiveRecord::Base
if project
# project specific filters
- @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.issue_categories.collect{|s| [s.name, s.id.to_s] } }
+ @available_filters["category_id"] = { :type => :list_optional, :order => 6, :values => @project.assignable_categories.collect{|s| [s.name, s.id.to_s] } }
@available_filters["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.assignable_versions.collect{|s| [s.name, s.id.to_s] } }
unless @project.active_children.empty?
@available_filters["subproject_id"] = { :type => :list_one_or_more, :order => 13, :values => @project.active_children.collect{|s| [s.name, s.id.to_s] } }
diff --git a/project_inheritance/app/views/issues/_bulk_edit_form.rhtml b/project_inheritance/app/views/issues/_bulk_edit_form.rhtml
index e9e1cef86..de5814dc2 100644
--- a/project_inheritance/app/views/issues/_bulk_edit_form.rhtml
+++ b/project_inheritance/app/views/issues/_bulk_edit_form.rhtml
@@ -9,7 +9,7 @@
+<%= select_tag('category_id', "" + options_from_collection_for_select(@project.assignable_categories, :id, :name)) %>
+<%= select_tag('fixed_version_id', "" + options_from_collection_for_select(@project.assignable_versions, :id, :name)) %>
diff --git a/project_inheritance/app/views/issues/_form.rhtml b/project_inheritance/app/views/issues/_form.rhtml
index fbf0a98f0..52e4b8041 100644
--- a/project_inheritance/app/views/issues/_form.rhtml
+++ b/project_inheritance/app/views/issues/_form.rhtml
@@ -10,7 +10,7 @@
<%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), :required => true %>
<%= f.select :assigned_to_id, (@issue.assignable_users.collect {|m| [m.name, m.id]}), :include_blank => true %>
-<%= f.select :category_id, (@project.issue_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
+
<%= f.select :category_id, (@project.assignable_categories.collect {|c| [c.name, c.id]}), :include_blank => true %>
<%= prompt_to_remote(l(:label_issue_category_new),
l(:label_issue_category_new), 'category[name]',
{:controller => 'projects', :action => 'add_issue_category', :id => @project},
diff --git a/project_inheritance/app/views/settings/_projects.rhtml b/project_inheritance/app/views/settings/_projects.rhtml
index 5dabba13c..886d7e4d1 100644
--- a/project_inheritance/app/views/settings/_projects.rhtml
+++ b/project_inheritance/app/views/settings/_projects.rhtml
@@ -8,6 +8,10 @@
<%= check_box_tag 'settings[subprojects_inherit_versions]', 1, Setting.subprojects_inherit_versions? %>
<%= hidden_field_tag 'settings[subprojects_inherit_versions]', 0 %>
+
+
+<%= check_box_tag 'settings[subprojects_inherit_categories]', 1, Setting.subprojects_inherit_categories? %>
+<%= hidden_field_tag 'settings[subprojects_inherit_categories]', 0 %>
<%= submit_tag l(:button_save) %>
diff --git a/project_inheritance/config/settings.yml b/project_inheritance/config/settings.yml
index d93c08c76..109a2ce23 100644
--- a/project_inheritance/config/settings.yml
+++ b/project_inheritance/config/settings.yml
@@ -109,3 +109,5 @@ subprojects_inherit_members:
default: 1
subprojects_inherit_versions:
default: 1
+subprojects_inherit_categories:
+ default: 1