Adds subtasking (#443) including:

* priority, start/due dates, progress, estimate, spent time roll-up to parent issues
* descendant issues tree displayed on the issue view with context menu support
* issue tree display on the gantt chart
* issue tree copy on project copy
* unlimited nesting

Defining subtasks requires the new permission 'Manage subtasks'.
Subtasks can not belong to a different project than the parent task.

Implementation is based on scoped nested sets for fast reads and updates.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3573 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2010-03-13 14:56:49 +00:00
parent e109c9b6b6
commit 8e3d1b694a
28 changed files with 855 additions and 93 deletions
+5
View File
@@ -19,27 +19,32 @@ enumerations_004:
id: 4
type: IssuePriority
active: true
position: 1
enumerations_005:
name: Normal
id: 5
type: IssuePriority
is_default: true
active: true
position: 2
enumerations_006:
name: High
id: 6
type: IssuePriority
active: true
position: 3
enumerations_007:
name: Urgent
id: 7
type: IssuePriority
active: true
position: 4
enumerations_008:
name: Immediate
id: 8
type: IssuePriority
active: true
position: 5
enumerations_009:
name: Design
id: 9
+39
View File
@@ -15,6 +15,9 @@ issues_001:
status_id: 1
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
due_date: <%= 10.day.from_now.to_date.to_s(:db) %>
root_id: 1
lft: 1
rgt: 2
issues_002:
created_on: 2006-07-19 21:04:21 +02:00
project_id: 1
@@ -31,6 +34,9 @@ issues_002:
status_id: 2
start_date: <%= 2.day.ago.to_date.to_s(:db) %>
due_date:
root_id: 2
lft: 1
rgt: 2
issues_003:
created_on: 2006-07-19 21:07:27 +02:00
project_id: 1
@@ -47,6 +53,9 @@ issues_003:
status_id: 1
start_date: <%= 1.day.from_now.to_date.to_s(:db) %>
due_date: <%= 40.day.ago.to_date.to_s(:db) %>
root_id: 3
lft: 1
rgt: 2
issues_004:
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
project_id: 2
@@ -61,6 +70,9 @@ issues_004:
assigned_to_id: 2
author_id: 2
status_id: 1
root_id: 4
lft: 1
rgt: 2
issues_005:
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
project_id: 3
@@ -75,6 +87,9 @@ issues_005:
assigned_to_id:
author_id: 2
status_id: 1
root_id: 5
lft: 1
rgt: 2
issues_006:
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
project_id: 5
@@ -91,6 +106,9 @@ issues_006:
status_id: 1
start_date: <%= Date.today.to_s(:db) %>
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
root_id: 6
lft: 1
rgt: 2
issues_007:
created_on: <%= 10.days.ago.to_date.to_s(:db) %>
project_id: 1
@@ -108,6 +126,9 @@ issues_007:
start_date: <%= 10.days.ago.to_s(:db) %>
due_date: <%= Date.today.to_s(:db) %>
lock_version: 0
root_id: 7
lft: 1
rgt: 2
issues_008:
created_on: <%= 10.days.ago.to_date.to_s(:db) %>
project_id: 1
@@ -125,6 +146,9 @@ issues_008:
start_date:
due_date:
lock_version: 0
root_id: 8
lft: 1
rgt: 2
issues_009:
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
project_id: 5
@@ -141,6 +165,9 @@ issues_009:
status_id: 1
start_date: <%= Date.today.to_s(:db) %>
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
root_id: 9
lft: 1
rgt: 2
issues_010:
created_on: <%= 1.minute.ago.to_date.to_s(:db) %>
project_id: 5
@@ -157,6 +184,9 @@ issues_010:
status_id: 1
start_date: <%= Date.today.to_s(:db) %>
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
root_id: 10
lft: 1
rgt: 2
issues_011:
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
project_id: 1
@@ -173,6 +203,9 @@ issues_011:
status_id: 5
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
due_date:
root_id: 11
lft: 1
rgt: 2
issues_012:
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
project_id: 1
@@ -189,6 +222,9 @@ issues_012:
status_id: 5
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
due_date:
root_id: 12
lft: 1
rgt: 2
issues_013:
created_on: <%= 5.days.ago.to_date.to_s(:db) %>
project_id: 3
@@ -203,3 +239,6 @@ issues_013:
assigned_to_id:
author_id: 2
status_id: 1
root_id: 13
lft: 1
rgt: 2
+2
View File
@@ -14,6 +14,7 @@ roles_001:
- :add_issues
- :edit_issues
- :manage_issue_relations
- :manage_subtasks
- :add_issue_notes
- :move_issues
- :delete_issues
@@ -66,6 +67,7 @@ roles_002:
- :add_issues
- :edit_issues
- :manage_issue_relations
- :manage_subtasks
- :add_issue_notes
- :move_issues
- :delete_issues