summaryrefslogtreecommitdiffstats
path: root/public
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2010-03-13 14:56:49 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2010-03-13 14:56:49 +0000
commit8e3d1b694ab47317638b474082cb70e08a8d02e7 (patch)
tree9997cc24910a029fea3e98ed0765566d9c4bb97e /public
parente109c9b6b6f314dea19bf92dffa217d962eaa200 (diff)
downloadredmine-8e3d1b694ab47317638b474082cb70e08a8d02e7.tar.gz
redmine-8e3d1b694ab47317638b474082cb70e08a8d02e7.zip
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
Diffstat (limited to 'public')
-rw-r--r--public/images/task_parent_end.pngbin0 -> 165 bytes
-rw-r--r--public/javascripts/application.js12
-rw-r--r--public/stylesheets/application.css25
3 files changed, 32 insertions, 5 deletions
diff --git a/public/images/task_parent_end.png b/public/images/task_parent_end.png
new file mode 100644
index 000000000..fc9205643
--- /dev/null
+++ b/public/images/task_parent_end.png
Binary files differ
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index 787b9904c..4cd34c2f2 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -194,6 +194,18 @@ function randomKey(size) {
return key;
}
+function observeParentIssueField(url) {
+ new Ajax.Autocompleter('issue_parent_issue_id',
+ 'parent_issue_candidates',
+ url,
+ { minChars: 3,
+ frequency: 0.5,
+ paramName: 'q',
+ updateElement: function(value) {
+ document.getElementById('issue_parent_issue_id').value = value.id;
+ }});
+}
+
/* shows and hides ajax indicator */
Ajax.Responders.register({
onCreate: function(){
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index ec31c95c3..cd8e98699 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -237,6 +237,13 @@ p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
+div.issue div.subject div div { padding-left: 16px; }
+div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
+div.issue div.subject>div>p { margin-top: 0.5em; }
+div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
+
+#issue_tree table.issues { border: 0; }
+
fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
@@ -588,8 +595,7 @@ button.tab-right {
/***** Auto-complete *****/
div.autocomplete {
position:absolute;
- width:250px;
- background-color:white;
+ width:400px;
margin:0;
padding:0;
}
@@ -598,23 +604,26 @@ div.autocomplete ul {
margin:0;
padding:0;
}
-div.autocomplete ul li.selected { background-color: #ffb;}
div.autocomplete ul li {
list-style-type:none;
display:block;
- margin:0;
+ margin:-1px 0 0 0;
padding:2px;
cursor:pointer;
font-size: 90%;
- border-bottom: 1px solid #ccc;
+ border: 1px solid #ccc;
border-left: 1px solid #ccc;
border-right: 1px solid #ccc;
+ background-color:white;
}
+div.autocomplete ul li.selected { background-color: #ffb;}
div.autocomplete ul li span.informal {
font-size: 80%;
color: #aaa;
}
+#parent_issue_candidates ul li {width: 500px;}
+
/***** Diff *****/
.diff_out { background: #fcc; }
.diff_in { background: #cfc; }
@@ -741,6 +750,12 @@ background-image:url('../images/close_hl.png');
.task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
+
+.task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
+.task_late.parent, .task_done.parent { height: 3px;}
+.task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
+.task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
+
.milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
/***** Icons *****/