From 2c9b04fdfd0c5c5488b1a82285b820604c6f0e9d Mon Sep 17 00:00:00 2001
From: Jean-Philippe Lang
Date: Sat, 12 Jan 2008 12:05:31 +0000
Subject: [PATCH] Subprojects inherit versions from their parent project (can
be disabled in Admin -> Settings -> Projects).
git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1055 e93f8b46-1217-0410-a6f0-8f06a7374b81
---
project_inheritance/app/controllers/reports_controller.rb | 4 ++--
project_inheritance/app/models/project.rb | 6 ++++++
project_inheritance/app/models/query.rb | 2 +-
project_inheritance/app/views/issues/_form.rhtml | 2 +-
project_inheritance/app/views/settings/_projects.rhtml | 4 ++++
project_inheritance/config/settings.yml | 2 ++
6 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/project_inheritance/app/controllers/reports_controller.rb b/project_inheritance/app/controllers/reports_controller.rb
index e18e117a6..cca0b37ab 100644
--- a/project_inheritance/app/controllers/reports_controller.rb
+++ b/project_inheritance/app/controllers/reports_controller.rb
@@ -31,7 +31,7 @@ class ReportsController < ApplicationController
render :template => "reports/issue_report_details"
when "version"
@field = "fixed_version_id"
- @rows = @project.versions.sort
+ @rows = @project.assignable_versions
@data = issues_by_version
@report_title = l(:field_version)
render :template => "reports/issue_report_details"
@@ -61,7 +61,7 @@ class ReportsController < ApplicationController
render :template => "reports/issue_report_details"
else
@trackers = @project.trackers
- @versions = @project.versions.sort
+ @versions = @project.assignable_versions
@priorities = Enumeration::get_values('IPRI')
@categories = @project.issue_categories
@authors = @project.members.collect { |m| m.user }
diff --git a/project_inheritance/app/models/project.rb b/project_inheritance/app/models/project.rb
index 2829af5f7..16f81a08b 100644
--- a/project_inheritance/app/models/project.rb
+++ b/project_inheritance/app/models/project.rb
@@ -158,6 +158,12 @@ class Project < ActiveRecord::Base
m.select {|m| m.role.assignable?}.collect {|m| m.user}.uniq.sort
end
+ def assignable_versions
+ v = versions
+ v += parent.versions if Setting.subprojects_inherit_versions? && parent
+ v.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 61a559d16..afdae5946 100644
--- a/project_inheritance/app/models/query.rb
+++ b/project_inheritance/app/models/query.rb
@@ -156,7 +156,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["fixed_version_id"] = { :type => :list_optional, :order => 7, :values => @project.versions.sort.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] } }
end
diff --git a/project_inheritance/app/views/issues/_form.rhtml b/project_inheritance/app/views/issues/_form.rhtml
index 203d1cca3..fbf0a98f0 100644
--- a/project_inheritance/app/views/issues/_form.rhtml
+++ b/project_inheritance/app/views/issues/_form.rhtml
@@ -30,7 +30,7 @@
:rows => (@issue.description.blank? ? 10 : [[10, @issue.description.length / 50].max, 100].min),
:accesskey => accesskey(:edit),
:class => 'wiki-edit' %>
-<%= f.select :fixed_version_id, (@project.versions.sort.collect {|v| [v.name, v.id]}), { :include_blank => true } %>
+<%= f.select :fixed_version_id, (@project.assignable_versions.collect {|v| [v.name, v.id]}), { :include_blank => true } %>
<% for @custom_value in @custom_values %>
<%= custom_field_tag_with_label @custom_value %>
<% end %>
diff --git a/project_inheritance/app/views/settings/_projects.rhtml b/project_inheritance/app/views/settings/_projects.rhtml
index f58f37959..5dabba13c 100644
--- a/project_inheritance/app/views/settings/_projects.rhtml
+++ b/project_inheritance/app/views/settings/_projects.rhtml
@@ -4,6 +4,10 @@
<%= check_box_tag 'settings[subprojects_inherit_members]', 1, Setting.subprojects_inherit_members? %>
<%= hidden_field_tag 'settings[subprojects_inherit_members]', 0 %>
+
+
+<%= check_box_tag 'settings[subprojects_inherit_versions]', 1, Setting.subprojects_inherit_versions? %>
+<%= hidden_field_tag 'settings[subprojects_inherit_versions]', 0 %>
<%= submit_tag l(:button_save) %>
diff --git a/project_inheritance/config/settings.yml b/project_inheritance/config/settings.yml
index 64a7de752..d93c08c76 100644
--- a/project_inheritance/config/settings.yml
+++ b/project_inheritance/config/settings.yml
@@ -107,3 +107,5 @@ emails_footer:
To change your notification preferences, please click here: http://hostname/my/account
subprojects_inherit_members:
default: 1
+subprojects_inherit_versions:
+ default: 1