##// END OF EJS Templates
Autocomplete issue relations on subject (#3170)....
Jean-Philippe Lang -
r4388:a8b12bcb5202
parent child
Show More
@@ -1,25 +1,26
1 class AutoCompletesController < ApplicationController
1 class AutoCompletesController < ApplicationController
2 before_filter :find_project
2 before_filter :find_project
3
3
4 def issues
4 def issues
5 @issues = []
5 @issues = []
6 q = params[:q].to_s
6 q = params[:q].to_s
7 query = (params[:scope] == "all" && Setting.cross_project_issue_relations?) ? Issue : @project.issues
7 if q.match(/^\d+$/)
8 if q.match(/^\d+$/)
8 @issues << @project.issues.visible.find_by_id(q.to_i)
9 @issues << query.visible.find_by_id(q.to_i)
9 end
10 end
10 unless q.blank?
11 unless q.blank?
11 @issues += @project.issues.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
12 @issues += query.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10)
12 end
13 end
13 render :layout => false
14 render :layout => false
14 end
15 end
15
16
16 private
17 private
17
18
18 def find_project
19 def find_project
19 project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
20 project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id]
20 @project = Project.find(project_id)
21 @project = Project.find(project_id)
21 rescue ActiveRecord::RecordNotFound
22 rescue ActiveRecord::RecordNotFound
22 render_404
23 render_404
23 end
24 end
24
25
25 end
26 end
@@ -1,12 +1,14
1 <%= error_messages_for 'relation' %>
1 <%= error_messages_for 'relation' %>
2
2
3 <p><%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %>
3 <p><%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %>
4 <%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 6 %>
4 <%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :size => 10 %>
5 <div id="related_issue_candidates" class="autocomplete"></div>
6 <%= javascript_tag "observeRelatedIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %>
5 <span id="predecessor_fields" style="display:none;">
7 <span id="predecessor_fields" style="display:none;">
6 <%= l(:field_delay) %>: <%= f.text_field :delay, :size => 3 %> <%= l(:label_day_plural) %>
8 <%= l(:field_delay) %>: <%= f.text_field :delay, :size => 3 %> <%= l(:label_day_plural) %>
7 </span>
9 </span>
8 <%= submit_tag l(:button_add) %>
10 <%= submit_tag l(:button_add) %>
9 <%= toggle_link l(:button_cancel), 'new-relation-form'%>
11 <%= toggle_link l(:button_cancel), 'new-relation-form'%>
10 </p>
12 </p>
11
13
12 <%= javascript_tag "setPredecessorFieldsVisibility();" %>
14 <%= javascript_tag "setPredecessorFieldsVisibility();" %>
@@ -1,241 +1,255
1 /* redMine - project management software
1 /* redMine - project management software
2 Copyright (C) 2006-2008 Jean-Philippe Lang */
2 Copyright (C) 2006-2008 Jean-Philippe Lang */
3
3
4 function checkAll (id, checked) {
4 function checkAll (id, checked) {
5 var els = Element.descendants(id);
5 var els = Element.descendants(id);
6 for (var i = 0; i < els.length; i++) {
6 for (var i = 0; i < els.length; i++) {
7 if (els[i].disabled==false) {
7 if (els[i].disabled==false) {
8 els[i].checked = checked;
8 els[i].checked = checked;
9 }
9 }
10 }
10 }
11 }
11 }
12
12
13 function toggleCheckboxesBySelector(selector) {
13 function toggleCheckboxesBySelector(selector) {
14 boxes = $$(selector);
14 boxes = $$(selector);
15 var all_checked = true;
15 var all_checked = true;
16 for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
16 for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
17 for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; }
17 for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; }
18 }
18 }
19
19
20 function setCheckboxesBySelector(checked, selector) {
20 function setCheckboxesBySelector(checked, selector) {
21 var boxes = $$(selector);
21 var boxes = $$(selector);
22 boxes.each(function(ele) {
22 boxes.each(function(ele) {
23 ele.checked = checked;
23 ele.checked = checked;
24 });
24 });
25 }
25 }
26
26
27 function showAndScrollTo(id, focus) {
27 function showAndScrollTo(id, focus) {
28 Element.show(id);
28 Element.show(id);
29 if (focus!=null) { Form.Element.focus(focus); }
29 if (focus!=null) { Form.Element.focus(focus); }
30 Element.scrollTo(id);
30 Element.scrollTo(id);
31 }
31 }
32
32
33 function toggleRowGroup(el) {
33 function toggleRowGroup(el) {
34 var tr = Element.up(el, 'tr');
34 var tr = Element.up(el, 'tr');
35 var n = Element.next(tr);
35 var n = Element.next(tr);
36 tr.toggleClassName('open');
36 tr.toggleClassName('open');
37 while (n != undefined && !n.hasClassName('group')) {
37 while (n != undefined && !n.hasClassName('group')) {
38 Element.toggle(n);
38 Element.toggle(n);
39 n = Element.next(n);
39 n = Element.next(n);
40 }
40 }
41 }
41 }
42
42
43 function toggleFieldset(el) {
43 function toggleFieldset(el) {
44 var fieldset = Element.up(el, 'fieldset');
44 var fieldset = Element.up(el, 'fieldset');
45 fieldset.toggleClassName('collapsed');
45 fieldset.toggleClassName('collapsed');
46 Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
46 Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
47 }
47 }
48
48
49 var fileFieldCount = 1;
49 var fileFieldCount = 1;
50
50
51 function addFileField() {
51 function addFileField() {
52 if (fileFieldCount >= 10) return false
52 if (fileFieldCount >= 10) return false
53 fileFieldCount++;
53 fileFieldCount++;
54 var f = document.createElement("input");
54 var f = document.createElement("input");
55 f.type = "file";
55 f.type = "file";
56 f.name = "attachments[" + fileFieldCount + "][file]";
56 f.name = "attachments[" + fileFieldCount + "][file]";
57 f.size = 30;
57 f.size = 30;
58 var d = document.createElement("input");
58 var d = document.createElement("input");
59 d.type = "text";
59 d.type = "text";
60 d.name = "attachments[" + fileFieldCount + "][description]";
60 d.name = "attachments[" + fileFieldCount + "][description]";
61 d.size = 60;
61 d.size = 60;
62 var dLabel = new Element('label');
62 var dLabel = new Element('label');
63 dLabel.addClassName('inline');
63 dLabel.addClassName('inline');
64 // Pulls the languge value used for Optional Description
64 // Pulls the languge value used for Optional Description
65 dLabel.update($('attachment_description_label_content').innerHTML)
65 dLabel.update($('attachment_description_label_content').innerHTML)
66 p = document.getElementById("attachments_fields");
66 p = document.getElementById("attachments_fields");
67 p.appendChild(document.createElement("br"));
67 p.appendChild(document.createElement("br"));
68 p.appendChild(f);
68 p.appendChild(f);
69 p.appendChild(dLabel);
69 p.appendChild(dLabel);
70 dLabel.appendChild(d);
70 dLabel.appendChild(d);
71
71
72 }
72 }
73
73
74 function showTab(name) {
74 function showTab(name) {
75 var f = $$('div#content .tab-content');
75 var f = $$('div#content .tab-content');
76 for(var i=0; i<f.length; i++){
76 for(var i=0; i<f.length; i++){
77 Element.hide(f[i]);
77 Element.hide(f[i]);
78 }
78 }
79 var f = $$('div.tabs a');
79 var f = $$('div.tabs a');
80 for(var i=0; i<f.length; i++){
80 for(var i=0; i<f.length; i++){
81 Element.removeClassName(f[i], "selected");
81 Element.removeClassName(f[i], "selected");
82 }
82 }
83 Element.show('tab-content-' + name);
83 Element.show('tab-content-' + name);
84 Element.addClassName('tab-' + name, "selected");
84 Element.addClassName('tab-' + name, "selected");
85 return false;
85 return false;
86 }
86 }
87
87
88 function moveTabRight(el) {
88 function moveTabRight(el) {
89 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
89 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
90 var tabsWidth = 0;
90 var tabsWidth = 0;
91 var i;
91 var i;
92 for (i=0; i<lis.length; i++) {
92 for (i=0; i<lis.length; i++) {
93 if (lis[i].visible()) {
93 if (lis[i].visible()) {
94 tabsWidth += lis[i].getWidth() + 6;
94 tabsWidth += lis[i].getWidth() + 6;
95 }
95 }
96 }
96 }
97 if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) {
97 if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) {
98 return;
98 return;
99 }
99 }
100 i=0;
100 i=0;
101 while (i<lis.length && !lis[i].visible()) {
101 while (i<lis.length && !lis[i].visible()) {
102 i++;
102 i++;
103 }
103 }
104 lis[i].hide();
104 lis[i].hide();
105 }
105 }
106
106
107 function moveTabLeft(el) {
107 function moveTabLeft(el) {
108 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
108 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
109 var i = 0;
109 var i = 0;
110 while (i<lis.length && !lis[i].visible()) {
110 while (i<lis.length && !lis[i].visible()) {
111 i++;
111 i++;
112 }
112 }
113 if (i>0) {
113 if (i>0) {
114 lis[i-1].show();
114 lis[i-1].show();
115 }
115 }
116 }
116 }
117
117
118 function displayTabsButtons() {
118 function displayTabsButtons() {
119 var lis;
119 var lis;
120 var tabsWidth = 0;
120 var tabsWidth = 0;
121 var i;
121 var i;
122 $$('div.tabs').each(function(el) {
122 $$('div.tabs').each(function(el) {
123 lis = el.down('ul').childElements();
123 lis = el.down('ul').childElements();
124 for (i=0; i<lis.length; i++) {
124 for (i=0; i<lis.length; i++) {
125 if (lis[i].visible()) {
125 if (lis[i].visible()) {
126 tabsWidth += lis[i].getWidth() + 6;
126 tabsWidth += lis[i].getWidth() + 6;
127 }
127 }
128 }
128 }
129 if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) {
129 if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) {
130 el.down('div.tabs-buttons').hide();
130 el.down('div.tabs-buttons').hide();
131 } else {
131 } else {
132 el.down('div.tabs-buttons').show();
132 el.down('div.tabs-buttons').show();
133 }
133 }
134 });
134 });
135 }
135 }
136
136
137 function setPredecessorFieldsVisibility() {
137 function setPredecessorFieldsVisibility() {
138 relationType = $('relation_relation_type');
138 relationType = $('relation_relation_type');
139 if (relationType && (relationType.value == "precedes" || relationType.value == "follows")) {
139 if (relationType && (relationType.value == "precedes" || relationType.value == "follows")) {
140 Element.show('predecessor_fields');
140 Element.show('predecessor_fields');
141 } else {
141 } else {
142 Element.hide('predecessor_fields');
142 Element.hide('predecessor_fields');
143 }
143 }
144 }
144 }
145
145
146 function promptToRemote(text, param, url) {
146 function promptToRemote(text, param, url) {
147 value = prompt(text + ':');
147 value = prompt(text + ':');
148 if (value) {
148 if (value) {
149 new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
149 new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
150 return false;
150 return false;
151 }
151 }
152 }
152 }
153
153
154 function collapseScmEntry(id) {
154 function collapseScmEntry(id) {
155 var els = document.getElementsByClassName(id, 'browser');
155 var els = document.getElementsByClassName(id, 'browser');
156 for (var i = 0; i < els.length; i++) {
156 for (var i = 0; i < els.length; i++) {
157 if (els[i].hasClassName('open')) {
157 if (els[i].hasClassName('open')) {
158 collapseScmEntry(els[i].id);
158 collapseScmEntry(els[i].id);
159 }
159 }
160 Element.hide(els[i]);
160 Element.hide(els[i]);
161 }
161 }
162 $(id).removeClassName('open');
162 $(id).removeClassName('open');
163 }
163 }
164
164
165 function expandScmEntry(id) {
165 function expandScmEntry(id) {
166 var els = document.getElementsByClassName(id, 'browser');
166 var els = document.getElementsByClassName(id, 'browser');
167 for (var i = 0; i < els.length; i++) {
167 for (var i = 0; i < els.length; i++) {
168 Element.show(els[i]);
168 Element.show(els[i]);
169 if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
169 if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
170 expandScmEntry(els[i].id);
170 expandScmEntry(els[i].id);
171 }
171 }
172 }
172 }
173 $(id).addClassName('open');
173 $(id).addClassName('open');
174 }
174 }
175
175
176 function scmEntryClick(id) {
176 function scmEntryClick(id) {
177 el = $(id);
177 el = $(id);
178 if (el.hasClassName('open')) {
178 if (el.hasClassName('open')) {
179 collapseScmEntry(id);
179 collapseScmEntry(id);
180 el.addClassName('collapsed');
180 el.addClassName('collapsed');
181 return false;
181 return false;
182 } else if (el.hasClassName('loaded')) {
182 } else if (el.hasClassName('loaded')) {
183 expandScmEntry(id);
183 expandScmEntry(id);
184 el.removeClassName('collapsed');
184 el.removeClassName('collapsed');
185 return false;
185 return false;
186 }
186 }
187 if (el.hasClassName('loading')) {
187 if (el.hasClassName('loading')) {
188 return false;
188 return false;
189 }
189 }
190 el.addClassName('loading');
190 el.addClassName('loading');
191 return true;
191 return true;
192 }
192 }
193
193
194 function scmEntryLoaded(id) {
194 function scmEntryLoaded(id) {
195 Element.addClassName(id, 'open');
195 Element.addClassName(id, 'open');
196 Element.addClassName(id, 'loaded');
196 Element.addClassName(id, 'loaded');
197 Element.removeClassName(id, 'loading');
197 Element.removeClassName(id, 'loading');
198 }
198 }
199
199
200 function randomKey(size) {
200 function randomKey(size) {
201 var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
201 var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
202 var key = '';
202 var key = '';
203 for (i = 0; i < size; i++) {
203 for (i = 0; i < size; i++) {
204 key += chars[Math.floor(Math.random() * chars.length)];
204 key += chars[Math.floor(Math.random() * chars.length)];
205 }
205 }
206 return key;
206 return key;
207 }
207 }
208
208
209 function observeParentIssueField(url) {
209 function observeParentIssueField(url) {
210 new Ajax.Autocompleter('issue_parent_issue_id',
210 new Ajax.Autocompleter('issue_parent_issue_id',
211 'parent_issue_candidates',
211 'parent_issue_candidates',
212 url,
212 url,
213 { minChars: 3,
213 { minChars: 3,
214 frequency: 0.5,
214 frequency: 0.5,
215 paramName: 'q',
215 paramName: 'q',
216 updateElement: function(value) {
216 updateElement: function(value) {
217 document.getElementById('issue_parent_issue_id').value = value.id;
217 document.getElementById('issue_parent_issue_id').value = value.id;
218 }});
218 }});
219 }
219 }
220
220
221 function observeRelatedIssueField(url) {
222 new Ajax.Autocompleter('relation_issue_to_id',
223 'related_issue_candidates',
224 url,
225 { minChars: 3,
226 frequency: 0.5,
227 paramName: 'q',
228 updateElement: function(value) {
229 document.getElementById('relation_issue_to_id').value = value.id;
230 },
231 parameters: 'scope=all'
232 });
233 }
234
221 /* shows and hides ajax indicator */
235 /* shows and hides ajax indicator */
222 Ajax.Responders.register({
236 Ajax.Responders.register({
223 onCreate: function(){
237 onCreate: function(){
224 if ($('ajax-indicator') && Ajax.activeRequestCount > 0) {
238 if ($('ajax-indicator') && Ajax.activeRequestCount > 0) {
225 Element.show('ajax-indicator');
239 Element.show('ajax-indicator');
226 }
240 }
227 },
241 },
228 onComplete: function(){
242 onComplete: function(){
229 if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
243 if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
230 Element.hide('ajax-indicator');
244 Element.hide('ajax-indicator');
231 }
245 }
232 }
246 }
233 });
247 });
234
248
235 function hideOnLoad() {
249 function hideOnLoad() {
236 $$('.hol').each(function(el) {
250 $$('.hol').each(function(el) {
237 el.hide();
251 el.hide();
238 });
252 });
239 }
253 }
240
254
241 Event.observe(window, 'load', hideOnLoad);
255 Event.observe(window, 'load', hideOnLoad);
@@ -1,944 +1,945
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2
2
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 h1 {margin:0; padding:0; font-size: 24px;}
4 h1 {margin:0; padding:0; font-size: 24px;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8
8
9 /***** Layout *****/
9 /***** Layout *****/
10 #wrapper {background: white;}
10 #wrapper {background: white;}
11
11
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
13 #top-menu ul {margin: 0; padding: 0;}
13 #top-menu ul {margin: 0; padding: 0;}
14 #top-menu li {
14 #top-menu li {
15 float:left;
15 float:left;
16 list-style-type:none;
16 list-style-type:none;
17 margin: 0px 0px 0px 0px;
17 margin: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
19 white-space:nowrap;
19 white-space:nowrap;
20 }
20 }
21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
23
23
24 #account {float:right;}
24 #account {float:right;}
25
25
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
27 #header a {color:#f8f8f8;}
27 #header a {color:#f8f8f8;}
28 #header h1 a.ancestor { font-size: 80%; }
28 #header h1 a.ancestor { font-size: 80%; }
29 #quick-search {float:right;}
29 #quick-search {float:right;}
30
30
31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
32 #main-menu ul {margin: 0; padding: 0;}
32 #main-menu ul {margin: 0; padding: 0;}
33 #main-menu li {
33 #main-menu li {
34 float:left;
34 float:left;
35 list-style-type:none;
35 list-style-type:none;
36 margin: 0px 2px 0px 0px;
36 margin: 0px 2px 0px 0px;
37 padding: 0px 0px 0px 0px;
37 padding: 0px 0px 0px 0px;
38 white-space:nowrap;
38 white-space:nowrap;
39 }
39 }
40 #main-menu li a {
40 #main-menu li a {
41 display: block;
41 display: block;
42 color: #fff;
42 color: #fff;
43 text-decoration: none;
43 text-decoration: none;
44 font-weight: bold;
44 font-weight: bold;
45 margin: 0;
45 margin: 0;
46 padding: 4px 10px 4px 10px;
46 padding: 4px 10px 4px 10px;
47 }
47 }
48 #main-menu li a:hover {background:#759FCF; color:#fff;}
48 #main-menu li a:hover {background:#759FCF; color:#fff;}
49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
50
50
51 #admin-menu ul {margin: 0; padding: 0;}
51 #admin-menu ul {margin: 0; padding: 0;}
52 #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;}
52 #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;}
53
53
54 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
54 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
55 #admin-menu a.projects { background-image: url(../images/projects.png); }
55 #admin-menu a.projects { background-image: url(../images/projects.png); }
56 #admin-menu a.users { background-image: url(../images/user.png); }
56 #admin-menu a.users { background-image: url(../images/user.png); }
57 #admin-menu a.groups { background-image: url(../images/group.png); }
57 #admin-menu a.groups { background-image: url(../images/group.png); }
58 #admin-menu a.roles { background-image: url(../images/database_key.png); }
58 #admin-menu a.roles { background-image: url(../images/database_key.png); }
59 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
59 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
60 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
60 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
61 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
61 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
62 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
62 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
63 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
63 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
64 #admin-menu a.settings { background-image: url(../images/changeset.png); }
64 #admin-menu a.settings { background-image: url(../images/changeset.png); }
65 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
65 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
66 #admin-menu a.info { background-image: url(../images/help.png); }
66 #admin-menu a.info { background-image: url(../images/help.png); }
67 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
67 #admin-menu a.server_authentication { background-image: url(../images/server_key.png); }
68
68
69 #main {background-color:#EEEEEE;}
69 #main {background-color:#EEEEEE;}
70
70
71 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
71 #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;}
72 * html #sidebar{ width: 22%; }
72 * html #sidebar{ width: 22%; }
73 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
73 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
74 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
74 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
75 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
75 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
76 #sidebar .contextual { margin-right: 1em; }
76 #sidebar .contextual { margin-right: 1em; }
77
77
78 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
78 #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
79 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
79 * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
80 html>body #content { min-height: 600px; }
80 html>body #content { min-height: 600px; }
81 * html body #content { height: 600px; } /* IE */
81 * html body #content { height: 600px; } /* IE */
82
82
83 #main.nosidebar #sidebar{ display: none; }
83 #main.nosidebar #sidebar{ display: none; }
84 #main.nosidebar #content{ width: auto; border-right: 0; }
84 #main.nosidebar #content{ width: auto; border-right: 0; }
85
85
86 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
86 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
87
87
88 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
88 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
89 #login-form table td {padding: 6px;}
89 #login-form table td {padding: 6px;}
90 #login-form label {font-weight: bold;}
90 #login-form label {font-weight: bold;}
91 #login-form input#username, #login-form input#password { width: 300px; }
91 #login-form input#username, #login-form input#password { width: 300px; }
92
92
93 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
93 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
94
94
95 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
95 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
96
96
97 /***** Links *****/
97 /***** Links *****/
98 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
98 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
99 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
99 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
100 a img{ border: 0; }
100 a img{ border: 0; }
101
101
102 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
102 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
103
103
104 /***** Tables *****/
104 /***** Tables *****/
105 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
105 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
106 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
106 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
107 table.list td { vertical-align: top; }
107 table.list td { vertical-align: top; }
108 table.list td.id { width: 2%; text-align: center;}
108 table.list td.id { width: 2%; text-align: center;}
109 table.list td.checkbox { width: 15px; padding: 0px;}
109 table.list td.checkbox { width: 15px; padding: 0px;}
110 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
110 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
111 table.list td.buttons a { padding-right: 0.6em; }
111 table.list td.buttons a { padding-right: 0.6em; }
112 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
112 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
113
113
114 tr.project td.name a { white-space:nowrap; }
114 tr.project td.name a { white-space:nowrap; }
115
115
116 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
116 tr.project.idnt td.name span {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
117 tr.project.idnt-1 td.name {padding-left: 0.5em;}
117 tr.project.idnt-1 td.name {padding-left: 0.5em;}
118 tr.project.idnt-2 td.name {padding-left: 2em;}
118 tr.project.idnt-2 td.name {padding-left: 2em;}
119 tr.project.idnt-3 td.name {padding-left: 3.5em;}
119 tr.project.idnt-3 td.name {padding-left: 3.5em;}
120 tr.project.idnt-4 td.name {padding-left: 5em;}
120 tr.project.idnt-4 td.name {padding-left: 5em;}
121 tr.project.idnt-5 td.name {padding-left: 6.5em;}
121 tr.project.idnt-5 td.name {padding-left: 6.5em;}
122 tr.project.idnt-6 td.name {padding-left: 8em;}
122 tr.project.idnt-6 td.name {padding-left: 8em;}
123 tr.project.idnt-7 td.name {padding-left: 9.5em;}
123 tr.project.idnt-7 td.name {padding-left: 9.5em;}
124 tr.project.idnt-8 td.name {padding-left: 11em;}
124 tr.project.idnt-8 td.name {padding-left: 11em;}
125 tr.project.idnt-9 td.name {padding-left: 12.5em;}
125 tr.project.idnt-9 td.name {padding-left: 12.5em;}
126
126
127 tr.issue { text-align: center; white-space: nowrap; }
127 tr.issue { text-align: center; white-space: nowrap; }
128 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
128 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
129 tr.issue td.subject { text-align: left; }
129 tr.issue td.subject { text-align: left; }
130 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
130 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
131
131
132 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
132 tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;}
133 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
133 tr.issue.idnt-1 td.subject {padding-left: 0.5em;}
134 tr.issue.idnt-2 td.subject {padding-left: 2em;}
134 tr.issue.idnt-2 td.subject {padding-left: 2em;}
135 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
135 tr.issue.idnt-3 td.subject {padding-left: 3.5em;}
136 tr.issue.idnt-4 td.subject {padding-left: 5em;}
136 tr.issue.idnt-4 td.subject {padding-left: 5em;}
137 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
137 tr.issue.idnt-5 td.subject {padding-left: 6.5em;}
138 tr.issue.idnt-6 td.subject {padding-left: 8em;}
138 tr.issue.idnt-6 td.subject {padding-left: 8em;}
139 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
139 tr.issue.idnt-7 td.subject {padding-left: 9.5em;}
140 tr.issue.idnt-8 td.subject {padding-left: 11em;}
140 tr.issue.idnt-8 td.subject {padding-left: 11em;}
141 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
141 tr.issue.idnt-9 td.subject {padding-left: 12.5em;}
142
142
143 tr.entry { border: 1px solid #f8f8f8; }
143 tr.entry { border: 1px solid #f8f8f8; }
144 tr.entry td { white-space: nowrap; }
144 tr.entry td { white-space: nowrap; }
145 tr.entry td.filename { width: 30%; }
145 tr.entry td.filename { width: 30%; }
146 tr.entry td.size { text-align: right; font-size: 90%; }
146 tr.entry td.size { text-align: right; font-size: 90%; }
147 tr.entry td.revision, tr.entry td.author { text-align: center; }
147 tr.entry td.revision, tr.entry td.author { text-align: center; }
148 tr.entry td.age { text-align: right; }
148 tr.entry td.age { text-align: right; }
149 tr.entry.file td.filename a { margin-left: 16px; }
149 tr.entry.file td.filename a { margin-left: 16px; }
150
150
151 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
151 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
152 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
152 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
153
153
154 tr.changeset td.author { text-align: center; width: 15%; }
154 tr.changeset td.author { text-align: center; width: 15%; }
155 tr.changeset td.committed_on { text-align: center; width: 15%; }
155 tr.changeset td.committed_on { text-align: center; width: 15%; }
156
156
157 table.files tr.file td { text-align: center; }
157 table.files tr.file td { text-align: center; }
158 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
158 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
159 table.files tr.file td.digest { font-size: 80%; }
159 table.files tr.file td.digest { font-size: 80%; }
160
160
161 table.members td.roles, table.memberships td.roles { width: 45%; }
161 table.members td.roles, table.memberships td.roles { width: 45%; }
162
162
163 tr.message { height: 2.6em; }
163 tr.message { height: 2.6em; }
164 tr.message td.subject { padding-left: 20px; }
164 tr.message td.subject { padding-left: 20px; }
165 tr.message td.created_on { white-space: nowrap; }
165 tr.message td.created_on { white-space: nowrap; }
166 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
166 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
167 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
167 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
168 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
168 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
169
169
170 tr.version.closed, tr.version.closed a { color: #999; }
170 tr.version.closed, tr.version.closed a { color: #999; }
171 tr.version td.name { padding-left: 20px; }
171 tr.version td.name { padding-left: 20px; }
172 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
172 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
173 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; }
173 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; }
174
174
175 tr.user td { width:13%; }
175 tr.user td { width:13%; }
176 tr.user td.email { width:18%; }
176 tr.user td.email { width:18%; }
177 tr.user td { white-space: nowrap; }
177 tr.user td { white-space: nowrap; }
178 tr.user.locked, tr.user.registered { color: #aaa; }
178 tr.user.locked, tr.user.registered { color: #aaa; }
179 tr.user.locked a, tr.user.registered a { color: #aaa; }
179 tr.user.locked a, tr.user.registered a { color: #aaa; }
180
180
181 tr.time-entry { text-align: center; white-space: nowrap; }
181 tr.time-entry { text-align: center; white-space: nowrap; }
182 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
182 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
183 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
183 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
184 td.hours .hours-dec { font-size: 0.9em; }
184 td.hours .hours-dec { font-size: 0.9em; }
185
185
186 table.plugins td { vertical-align: middle; }
186 table.plugins td { vertical-align: middle; }
187 table.plugins td.configure { text-align: right; padding-right: 1em; }
187 table.plugins td.configure { text-align: right; padding-right: 1em; }
188 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
188 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
189 table.plugins span.description { display: block; font-size: 0.9em; }
189 table.plugins span.description { display: block; font-size: 0.9em; }
190 table.plugins span.url { display: block; font-size: 0.9em; }
190 table.plugins span.url { display: block; font-size: 0.9em; }
191
191
192 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
192 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
193 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
193 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
194
194
195 table.list tbody tr:hover { background-color:#ffffdd; }
195 table.list tbody tr:hover { background-color:#ffffdd; }
196 table.list tbody tr.group:hover { background-color:inherit; }
196 table.list tbody tr.group:hover { background-color:inherit; }
197 table td {padding:2px;}
197 table td {padding:2px;}
198 table p {margin:0;}
198 table p {margin:0;}
199 .odd {background-color:#f6f7f8;}
199 .odd {background-color:#f6f7f8;}
200 .even {background-color: #fff;}
200 .even {background-color: #fff;}
201
201
202 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
202 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
203 a.sort.asc { background-image: url(../images/sort_asc.png); }
203 a.sort.asc { background-image: url(../images/sort_asc.png); }
204 a.sort.desc { background-image: url(../images/sort_desc.png); }
204 a.sort.desc { background-image: url(../images/sort_desc.png); }
205
205
206 table.attributes { width: 100% }
206 table.attributes { width: 100% }
207 table.attributes th { vertical-align: top; text-align: left; }
207 table.attributes th { vertical-align: top; text-align: left; }
208 table.attributes td { vertical-align: top; }
208 table.attributes td { vertical-align: top; }
209
209
210 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
210 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
211
211
212 td.center {text-align:center;}
212 td.center {text-align:center;}
213
213
214 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
214 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
215
215
216 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
216 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
217 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
217 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
218 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
218 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
219 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
219 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
220
220
221 #watchers ul {margin: 0; padding: 0;}
221 #watchers ul {margin: 0; padding: 0;}
222 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
222 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
223 #watchers select {width: 95%; display: block;}
223 #watchers select {width: 95%; display: block;}
224 #watchers a.delete {opacity: 0.4;}
224 #watchers a.delete {opacity: 0.4;}
225 #watchers a.delete:hover {opacity: 1;}
225 #watchers a.delete:hover {opacity: 1;}
226 #watchers img.gravatar {vertical-align: middle;margin: 0 4px 2px 0;}
226 #watchers img.gravatar {vertical-align: middle;margin: 0 4px 2px 0;}
227
227
228 .highlight { background-color: #FCFD8D;}
228 .highlight { background-color: #FCFD8D;}
229 .highlight.token-1 { background-color: #faa;}
229 .highlight.token-1 { background-color: #faa;}
230 .highlight.token-2 { background-color: #afa;}
230 .highlight.token-2 { background-color: #afa;}
231 .highlight.token-3 { background-color: #aaf;}
231 .highlight.token-3 { background-color: #aaf;}
232
232
233 .box{
233 .box{
234 padding:6px;
234 padding:6px;
235 margin-bottom: 10px;
235 margin-bottom: 10px;
236 background-color:#f6f6f6;
236 background-color:#f6f6f6;
237 color:#505050;
237 color:#505050;
238 line-height:1.5em;
238 line-height:1.5em;
239 border: 1px solid #e4e4e4;
239 border: 1px solid #e4e4e4;
240 }
240 }
241
241
242 div.square {
242 div.square {
243 border: 1px solid #999;
243 border: 1px solid #999;
244 float: left;
244 float: left;
245 margin: .3em .4em 0 .4em;
245 margin: .3em .4em 0 .4em;
246 overflow: hidden;
246 overflow: hidden;
247 width: .6em; height: .6em;
247 width: .6em; height: .6em;
248 }
248 }
249 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
249 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
250 .contextual input, .contextual select {font-size:0.9em;}
250 .contextual input, .contextual select {font-size:0.9em;}
251 .message .contextual { margin-top: 0; }
251 .message .contextual { margin-top: 0; }
252
252
253 .splitcontentleft{float:left; width:49%;}
253 .splitcontentleft{float:left; width:49%;}
254 .splitcontentright{float:right; width:49%;}
254 .splitcontentright{float:right; width:49%;}
255 form {display: inline;}
255 form {display: inline;}
256 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
256 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
257 fieldset {border: 1px solid #e4e4e4; margin:0;}
257 fieldset {border: 1px solid #e4e4e4; margin:0;}
258 legend {color: #484848;}
258 legend {color: #484848;}
259 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
259 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
260 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
260 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
261 blockquote blockquote { margin-left: 0;}
261 blockquote blockquote { margin-left: 0;}
262 acronym { border-bottom: 1px dotted; cursor: help; }
262 acronym { border-bottom: 1px dotted; cursor: help; }
263 textarea.wiki-edit { width: 99%; }
263 textarea.wiki-edit { width: 99%; }
264 li p {margin-top: 0;}
264 li p {margin-top: 0;}
265 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
265 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
266 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
266 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
267 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
267 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
268 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
268 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
269
269
270 div.issue div.subject div div { padding-left: 16px; }
270 div.issue div.subject div div { padding-left: 16px; }
271 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
271 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
272 div.issue div.subject>div>p { margin-top: 0.5em; }
272 div.issue div.subject>div>p { margin-top: 0.5em; }
273 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
273 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
274
274
275 #issue_tree table.issues { border: 0; }
275 #issue_tree table.issues { border: 0; }
276 #issue_tree td.checkbox {display:none;}
276 #issue_tree td.checkbox {display:none;}
277
277
278 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
278 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
279 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
279 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
280 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
280 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
281
281
282 fieldset#date-range p { margin: 2px 0 2px 0; }
282 fieldset#date-range p { margin: 2px 0 2px 0; }
283 fieldset#filters table { border-collapse: collapse; }
283 fieldset#filters table { border-collapse: collapse; }
284 fieldset#filters table td { padding: 0; vertical-align: middle; }
284 fieldset#filters table td { padding: 0; vertical-align: middle; }
285 fieldset#filters tr.filter { height: 2em; }
285 fieldset#filters tr.filter { height: 2em; }
286 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
286 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
287 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
287 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
288
288
289 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
289 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
290 div#issue-changesets div.changeset { padding: 4px;}
290 div#issue-changesets div.changeset { padding: 4px;}
291 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
291 div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; }
292 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
292 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
293
293
294 div#activity dl, #search-results { margin-left: 2em; }
294 div#activity dl, #search-results { margin-left: 2em; }
295 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
295 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
296 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
296 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
297 div#activity dt.me .time { border-bottom: 1px solid #999; }
297 div#activity dt.me .time { border-bottom: 1px solid #999; }
298 div#activity dt .time { color: #777; font-size: 80%; }
298 div#activity dt .time { color: #777; font-size: 80%; }
299 div#activity dd .description, #search-results dd .description { font-style: italic; }
299 div#activity dd .description, #search-results dd .description { font-style: italic; }
300 div#activity span.project:after, #search-results span.project:after { content: " -"; }
300 div#activity span.project:after, #search-results span.project:after { content: " -"; }
301 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
301 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
302
302
303 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
303 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
304
304
305 div#search-results-counts {float:right;}
305 div#search-results-counts {float:right;}
306 div#search-results-counts ul { margin-top: 0.5em; }
306 div#search-results-counts ul { margin-top: 0.5em; }
307 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
307 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
308
308
309 dt.issue { background-image: url(../images/ticket.png); }
309 dt.issue { background-image: url(../images/ticket.png); }
310 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
310 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
311 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
311 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
312 dt.issue-note { background-image: url(../images/ticket_note.png); }
312 dt.issue-note { background-image: url(../images/ticket_note.png); }
313 dt.changeset { background-image: url(../images/changeset.png); }
313 dt.changeset { background-image: url(../images/changeset.png); }
314 dt.news { background-image: url(../images/news.png); }
314 dt.news { background-image: url(../images/news.png); }
315 dt.message { background-image: url(../images/message.png); }
315 dt.message { background-image: url(../images/message.png); }
316 dt.reply { background-image: url(../images/comments.png); }
316 dt.reply { background-image: url(../images/comments.png); }
317 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
317 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
318 dt.attachment { background-image: url(../images/attachment.png); }
318 dt.attachment { background-image: url(../images/attachment.png); }
319 dt.document { background-image: url(../images/document.png); }
319 dt.document { background-image: url(../images/document.png); }
320 dt.project { background-image: url(../images/projects.png); }
320 dt.project { background-image: url(../images/projects.png); }
321 dt.time-entry { background-image: url(../images/time.png); }
321 dt.time-entry { background-image: url(../images/time.png); }
322
322
323 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
323 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
324
324
325 div#roadmap .related-issues { margin-bottom: 1em; }
325 div#roadmap .related-issues { margin-bottom: 1em; }
326 div#roadmap .related-issues td.checkbox { display: none; }
326 div#roadmap .related-issues td.checkbox { display: none; }
327 div#roadmap .wiki h1:first-child { display: none; }
327 div#roadmap .wiki h1:first-child { display: none; }
328 div#roadmap .wiki h1 { font-size: 120%; }
328 div#roadmap .wiki h1 { font-size: 120%; }
329 div#roadmap .wiki h2 { font-size: 110%; }
329 div#roadmap .wiki h2 { font-size: 110%; }
330
330
331 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
331 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
332 div#version-summary fieldset { margin-bottom: 1em; }
332 div#version-summary fieldset { margin-bottom: 1em; }
333 div#version-summary .total-hours { text-align: right; }
333 div#version-summary .total-hours { text-align: right; }
334
334
335 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
335 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
336 table#time-report tbody tr { font-style: italic; color: #777; }
336 table#time-report tbody tr { font-style: italic; color: #777; }
337 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
337 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
338 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
338 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
339 table#time-report .hours-dec { font-size: 0.9em; }
339 table#time-report .hours-dec { font-size: 0.9em; }
340
340
341 form .attributes { margin-bottom: 8px; }
341 form .attributes { margin-bottom: 8px; }
342 form .attributes p { padding-top: 1px; padding-bottom: 2px; }
342 form .attributes p { padding-top: 1px; padding-bottom: 2px; }
343 form .attributes select { min-width: 50%; }
343 form .attributes select { min-width: 50%; }
344
344
345 ul.projects { margin: 0; padding-left: 1em; }
345 ul.projects { margin: 0; padding-left: 1em; }
346 ul.projects.root { margin: 0; padding: 0; }
346 ul.projects.root { margin: 0; padding: 0; }
347 ul.projects ul.projects { border-left: 3px solid #e0e0e0; }
347 ul.projects ul.projects { border-left: 3px solid #e0e0e0; }
348 ul.projects li.root { list-style-type:none; margin-bottom: 1em; }
348 ul.projects li.root { list-style-type:none; margin-bottom: 1em; }
349 ul.projects li.child { list-style-type:none; margin-top: 1em;}
349 ul.projects li.child { list-style-type:none; margin-top: 1em;}
350 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
350 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
351 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
351 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
352
352
353 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
353 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
354 #tracker_project_ids li { list-style-type:none; }
354 #tracker_project_ids li { list-style-type:none; }
355
355
356 ul.properties {padding:0; font-size: 0.9em; color: #777;}
356 ul.properties {padding:0; font-size: 0.9em; color: #777;}
357 ul.properties li {list-style-type:none;}
357 ul.properties li {list-style-type:none;}
358 ul.properties li span {font-style:italic;}
358 ul.properties li span {font-style:italic;}
359
359
360 .total-hours { font-size: 110%; font-weight: bold; }
360 .total-hours { font-size: 110%; font-weight: bold; }
361 .total-hours span.hours-int { font-size: 120%; }
361 .total-hours span.hours-int { font-size: 120%; }
362
362
363 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
363 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
364 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
364 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
365
365
366 #workflow_copy_form select { width: 200px; }
366 #workflow_copy_form select { width: 200px; }
367
367
368 .pagination {font-size: 90%}
368 .pagination {font-size: 90%}
369 p.pagination {margin-top:8px;}
369 p.pagination {margin-top:8px;}
370
370
371 /***** Tabular forms ******/
371 /***** Tabular forms ******/
372 .tabular p{
372 .tabular p{
373 margin: 0;
373 margin: 0;
374 padding: 5px 0 8px 0;
374 padding: 5px 0 8px 0;
375 padding-left: 180px; /*width of left column containing the label elements*/
375 padding-left: 180px; /*width of left column containing the label elements*/
376 height: 1%;
376 height: 1%;
377 clear:left;
377 clear:left;
378 }
378 }
379
379
380 html>body .tabular p {overflow:hidden;}
380 html>body .tabular p {overflow:hidden;}
381
381
382 .tabular label{
382 .tabular label{
383 font-weight: bold;
383 font-weight: bold;
384 float: left;
384 float: left;
385 text-align: right;
385 text-align: right;
386 margin-left: -180px; /*width of left column*/
386 margin-left: -180px; /*width of left column*/
387 width: 175px; /*width of labels. Should be smaller than left column to create some right
387 width: 175px; /*width of labels. Should be smaller than left column to create some right
388 margin*/
388 margin*/
389 }
389 }
390
390
391 .tabular label.floating{
391 .tabular label.floating{
392 font-weight: normal;
392 font-weight: normal;
393 margin-left: 0px;
393 margin-left: 0px;
394 text-align: left;
394 text-align: left;
395 width: 270px;
395 width: 270px;
396 }
396 }
397
397
398 .tabular label.block{
398 .tabular label.block{
399 font-weight: normal;
399 font-weight: normal;
400 margin-left: 0px !important;
400 margin-left: 0px !important;
401 text-align: left;
401 text-align: left;
402 float: none;
402 float: none;
403 display: block;
403 display: block;
404 width: auto;
404 width: auto;
405 }
405 }
406
406
407 .tabular label.inline{
407 .tabular label.inline{
408 float:none;
408 float:none;
409 margin-left: 5px !important;
409 margin-left: 5px !important;
410 width: auto;
410 width: auto;
411 }
411 }
412
412
413 input#time_entry_comments { width: 90%;}
413 input#time_entry_comments { width: 90%;}
414
414
415 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
415 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
416
416
417 .tabular.settings p{ padding-left: 300px; }
417 .tabular.settings p{ padding-left: 300px; }
418 .tabular.settings label{ margin-left: -300px; width: 295px; }
418 .tabular.settings label{ margin-left: -300px; width: 295px; }
419 .tabular.settings textarea { width: 99%; }
419 .tabular.settings textarea { width: 99%; }
420
420
421 fieldset.settings label { display: block; }
421 fieldset.settings label { display: block; }
422 .parent { padding-left: 20px; }
422 .parent { padding-left: 20px; }
423
423
424 .required {color: #bb0000;}
424 .required {color: #bb0000;}
425 .summary {font-style: italic;}
425 .summary {font-style: italic;}
426
426
427 #attachments_fields input[type=text] {margin-left: 8px; }
427 #attachments_fields input[type=text] {margin-left: 8px; }
428
428
429 div.attachments { margin-top: 12px; }
429 div.attachments { margin-top: 12px; }
430 div.attachments p { margin:4px 0 2px 0; }
430 div.attachments p { margin:4px 0 2px 0; }
431 div.attachments img { vertical-align: middle; }
431 div.attachments img { vertical-align: middle; }
432 div.attachments span.author { font-size: 0.9em; color: #888; }
432 div.attachments span.author { font-size: 0.9em; color: #888; }
433
433
434 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
434 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
435 .other-formats span + span:before { content: "| "; }
435 .other-formats span + span:before { content: "| "; }
436
436
437 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
437 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
438
438
439 /* Project members tab */
439 /* Project members tab */
440 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
440 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
441 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
441 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
442 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
442 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
443 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
443 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
444 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
444 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
445 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
445 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
446
446
447 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
447 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
448
448
449 input#principal_search, input#user_search {width:100%}
449 input#principal_search, input#user_search {width:100%}
450
450
451 * html div#tab-content-members fieldset div { height: 450px; }
451 * html div#tab-content-members fieldset div { height: 450px; }
452
452
453 /***** Flash & error messages ****/
453 /***** Flash & error messages ****/
454 #errorExplanation, div.flash, .nodata, .warning {
454 #errorExplanation, div.flash, .nodata, .warning {
455 padding: 4px 4px 4px 30px;
455 padding: 4px 4px 4px 30px;
456 margin-bottom: 12px;
456 margin-bottom: 12px;
457 font-size: 1.1em;
457 font-size: 1.1em;
458 border: 2px solid;
458 border: 2px solid;
459 }
459 }
460
460
461 div.flash {margin-top: 8px;}
461 div.flash {margin-top: 8px;}
462
462
463 div.flash.error, #errorExplanation {
463 div.flash.error, #errorExplanation {
464 background: url(../images/exclamation.png) 8px 50% no-repeat;
464 background: url(../images/exclamation.png) 8px 50% no-repeat;
465 background-color: #ffe3e3;
465 background-color: #ffe3e3;
466 border-color: #dd0000;
466 border-color: #dd0000;
467 color: #880000;
467 color: #880000;
468 }
468 }
469
469
470 div.flash.notice {
470 div.flash.notice {
471 background: url(../images/true.png) 8px 5px no-repeat;
471 background: url(../images/true.png) 8px 5px no-repeat;
472 background-color: #dfffdf;
472 background-color: #dfffdf;
473 border-color: #9fcf9f;
473 border-color: #9fcf9f;
474 color: #005f00;
474 color: #005f00;
475 }
475 }
476
476
477 div.flash.warning {
477 div.flash.warning {
478 background: url(../images/warning.png) 8px 5px no-repeat;
478 background: url(../images/warning.png) 8px 5px no-repeat;
479 background-color: #FFEBC1;
479 background-color: #FFEBC1;
480 border-color: #FDBF3B;
480 border-color: #FDBF3B;
481 color: #A6750C;
481 color: #A6750C;
482 text-align: left;
482 text-align: left;
483 }
483 }
484
484
485 .nodata, .warning {
485 .nodata, .warning {
486 text-align: center;
486 text-align: center;
487 background-color: #FFEBC1;
487 background-color: #FFEBC1;
488 border-color: #FDBF3B;
488 border-color: #FDBF3B;
489 color: #A6750C;
489 color: #A6750C;
490 }
490 }
491
491
492 #errorExplanation ul { font-size: 0.9em;}
492 #errorExplanation ul { font-size: 0.9em;}
493 #errorExplanation h2, #errorExplanation p { display: none; }
493 #errorExplanation h2, #errorExplanation p { display: none; }
494
494
495 /***** Ajax indicator ******/
495 /***** Ajax indicator ******/
496 #ajax-indicator {
496 #ajax-indicator {
497 position: absolute; /* fixed not supported by IE */
497 position: absolute; /* fixed not supported by IE */
498 background-color:#eee;
498 background-color:#eee;
499 border: 1px solid #bbb;
499 border: 1px solid #bbb;
500 top:35%;
500 top:35%;
501 left:40%;
501 left:40%;
502 width:20%;
502 width:20%;
503 font-weight:bold;
503 font-weight:bold;
504 text-align:center;
504 text-align:center;
505 padding:0.6em;
505 padding:0.6em;
506 z-index:100;
506 z-index:100;
507 filter:alpha(opacity=50);
507 filter:alpha(opacity=50);
508 opacity: 0.5;
508 opacity: 0.5;
509 }
509 }
510
510
511 html>body #ajax-indicator { position: fixed; }
511 html>body #ajax-indicator { position: fixed; }
512
512
513 #ajax-indicator span {
513 #ajax-indicator span {
514 background-position: 0% 40%;
514 background-position: 0% 40%;
515 background-repeat: no-repeat;
515 background-repeat: no-repeat;
516 background-image: url(../images/loading.gif);
516 background-image: url(../images/loading.gif);
517 padding-left: 26px;
517 padding-left: 26px;
518 vertical-align: bottom;
518 vertical-align: bottom;
519 }
519 }
520
520
521 /***** Calendar *****/
521 /***** Calendar *****/
522 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
522 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
523 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
523 table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; }
524 table.cal thead th.week-number {width: auto;}
524 table.cal thead th.week-number {width: auto;}
525 table.cal tbody tr {height: 100px;}
525 table.cal tbody tr {height: 100px;}
526 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
526 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
527 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
527 table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;}
528 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
528 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
529 table.cal td.odd p.day-num {color: #bbb;}
529 table.cal td.odd p.day-num {color: #bbb;}
530 table.cal td.today {background:#ffffdd;}
530 table.cal td.today {background:#ffffdd;}
531 table.cal td.today p.day-num {font-weight: bold;}
531 table.cal td.today p.day-num {font-weight: bold;}
532 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
532 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
533 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
533 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
534 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
534 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
535 p.cal.legend span {display:block;}
535 p.cal.legend span {display:block;}
536
536
537 /***** Tooltips ******/
537 /***** Tooltips ******/
538 .tooltip{position:relative;z-index:24;}
538 .tooltip{position:relative;z-index:24;}
539 .tooltip:hover{z-index:25;color:#000;}
539 .tooltip:hover{z-index:25;color:#000;}
540 .tooltip span.tip{display: none; text-align:left;}
540 .tooltip span.tip{display: none; text-align:left;}
541
541
542 div.tooltip:hover span.tip{
542 div.tooltip:hover span.tip{
543 display:block;
543 display:block;
544 position:absolute;
544 position:absolute;
545 top:12px; left:24px; width:270px;
545 top:12px; left:24px; width:270px;
546 border:1px solid #555;
546 border:1px solid #555;
547 background-color:#fff;
547 background-color:#fff;
548 padding: 4px;
548 padding: 4px;
549 font-size: 0.8em;
549 font-size: 0.8em;
550 color:#505050;
550 color:#505050;
551 }
551 }
552
552
553 /***** Progress bar *****/
553 /***** Progress bar *****/
554 table.progress {
554 table.progress {
555 border: 1px solid #D7D7D7;
555 border: 1px solid #D7D7D7;
556 border-collapse: collapse;
556 border-collapse: collapse;
557 border-spacing: 0pt;
557 border-spacing: 0pt;
558 empty-cells: show;
558 empty-cells: show;
559 text-align: center;
559 text-align: center;
560 float:left;
560 float:left;
561 margin: 1px 6px 1px 0px;
561 margin: 1px 6px 1px 0px;
562 }
562 }
563
563
564 table.progress td { height: 0.9em; }
564 table.progress td { height: 0.9em; }
565 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
565 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
566 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
566 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
567 table.progress td.open { background: #FFF none repeat scroll 0%; }
567 table.progress td.open { background: #FFF none repeat scroll 0%; }
568 p.pourcent {font-size: 80%;}
568 p.pourcent {font-size: 80%;}
569 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
569 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
570
570
571 /***** Tabs *****/
571 /***** Tabs *****/
572 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
572 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
573 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
573 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
574 #content .tabs ul li {
574 #content .tabs ul li {
575 float:left;
575 float:left;
576 list-style-type:none;
576 list-style-type:none;
577 white-space:nowrap;
577 white-space:nowrap;
578 margin-right:8px;
578 margin-right:8px;
579 background:#fff;
579 background:#fff;
580 position:relative;
580 position:relative;
581 margin-bottom:-1px;
581 margin-bottom:-1px;
582 }
582 }
583 #content .tabs ul li a{
583 #content .tabs ul li a{
584 display:block;
584 display:block;
585 font-size: 0.9em;
585 font-size: 0.9em;
586 text-decoration:none;
586 text-decoration:none;
587 line-height:1.3em;
587 line-height:1.3em;
588 padding:4px 6px 4px 6px;
588 padding:4px 6px 4px 6px;
589 border: 1px solid #ccc;
589 border: 1px solid #ccc;
590 border-bottom: 1px solid #bbbbbb;
590 border-bottom: 1px solid #bbbbbb;
591 background-color: #eeeeee;
591 background-color: #eeeeee;
592 color:#777;
592 color:#777;
593 font-weight:bold;
593 font-weight:bold;
594 }
594 }
595
595
596 #content .tabs ul li a:hover {
596 #content .tabs ul li a:hover {
597 background-color: #ffffdd;
597 background-color: #ffffdd;
598 text-decoration:none;
598 text-decoration:none;
599 }
599 }
600
600
601 #content .tabs ul li a.selected {
601 #content .tabs ul li a.selected {
602 background-color: #fff;
602 background-color: #fff;
603 border: 1px solid #bbbbbb;
603 border: 1px solid #bbbbbb;
604 border-bottom: 1px solid #fff;
604 border-bottom: 1px solid #fff;
605 }
605 }
606
606
607 #content .tabs ul li a.selected:hover {
607 #content .tabs ul li a.selected:hover {
608 background-color: #fff;
608 background-color: #fff;
609 }
609 }
610
610
611 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
611 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
612
612
613 button.tab-left, button.tab-right {
613 button.tab-left, button.tab-right {
614 font-size: 0.9em;
614 font-size: 0.9em;
615 cursor: pointer;
615 cursor: pointer;
616 height:24px;
616 height:24px;
617 border: 1px solid #ccc;
617 border: 1px solid #ccc;
618 border-bottom: 1px solid #bbbbbb;
618 border-bottom: 1px solid #bbbbbb;
619 position:absolute;
619 position:absolute;
620 padding:4px;
620 padding:4px;
621 width: 20px;
621 width: 20px;
622 bottom: -1px;
622 bottom: -1px;
623 }
623 }
624
624
625 button.tab-left {
625 button.tab-left {
626 right: 20px;
626 right: 20px;
627 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
627 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
628 }
628 }
629
629
630 button.tab-right {
630 button.tab-right {
631 right: 0;
631 right: 0;
632 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
632 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
633 }
633 }
634
634
635 /***** Auto-complete *****/
635 /***** Auto-complete *****/
636 div.autocomplete {
636 div.autocomplete {
637 position:absolute;
637 position:absolute;
638 width:400px;
638 width:400px;
639 margin:0;
639 margin:0;
640 padding:0;
640 padding:0;
641 }
641 }
642 div.autocomplete ul {
642 div.autocomplete ul {
643 list-style-type:none;
643 list-style-type:none;
644 margin:0;
644 margin:0;
645 padding:0;
645 padding:0;
646 }
646 }
647 div.autocomplete ul li {
647 div.autocomplete ul li {
648 list-style-type:none;
648 list-style-type:none;
649 display:block;
649 display:block;
650 margin:-1px 0 0 0;
650 margin:-1px 0 0 0;
651 padding:2px;
651 padding:2px;
652 cursor:pointer;
652 cursor:pointer;
653 font-size: 90%;
653 font-size: 90%;
654 border: 1px solid #ccc;
654 border: 1px solid #ccc;
655 border-left: 1px solid #ccc;
655 border-left: 1px solid #ccc;
656 border-right: 1px solid #ccc;
656 border-right: 1px solid #ccc;
657 background-color:white;
657 background-color:white;
658 }
658 }
659 div.autocomplete ul li.selected { background-color: #ffb;}
659 div.autocomplete ul li.selected { background-color: #ffb;}
660 div.autocomplete ul li span.informal {
660 div.autocomplete ul li span.informal {
661 font-size: 80%;
661 font-size: 80%;
662 color: #aaa;
662 color: #aaa;
663 }
663 }
664
664
665 #parent_issue_candidates ul li {width: 500px;}
665 #parent_issue_candidates ul li {width: 500px;}
666 #related_issue_candidates ul li {width: 500px;}
666
667
667 /***** Diff *****/
668 /***** Diff *****/
668 .diff_out { background: #fcc; }
669 .diff_out { background: #fcc; }
669 .diff_in { background: #cfc; }
670 .diff_in { background: #cfc; }
670
671
671 /***** Wiki *****/
672 /***** Wiki *****/
672 div.wiki table {
673 div.wiki table {
673 border: 1px solid #505050;
674 border: 1px solid #505050;
674 border-collapse: collapse;
675 border-collapse: collapse;
675 margin-bottom: 1em;
676 margin-bottom: 1em;
676 }
677 }
677
678
678 div.wiki table, div.wiki td, div.wiki th {
679 div.wiki table, div.wiki td, div.wiki th {
679 border: 1px solid #bbb;
680 border: 1px solid #bbb;
680 padding: 4px;
681 padding: 4px;
681 }
682 }
682
683
683 div.wiki .external {
684 div.wiki .external {
684 background-position: 0% 60%;
685 background-position: 0% 60%;
685 background-repeat: no-repeat;
686 background-repeat: no-repeat;
686 padding-left: 12px;
687 padding-left: 12px;
687 background-image: url(../images/external.png);
688 background-image: url(../images/external.png);
688 }
689 }
689
690
690 div.wiki a.new {
691 div.wiki a.new {
691 color: #b73535;
692 color: #b73535;
692 }
693 }
693
694
694 div.wiki pre {
695 div.wiki pre {
695 margin: 1em 1em 1em 1.6em;
696 margin: 1em 1em 1em 1.6em;
696 padding: 2px 2px 2px 0;
697 padding: 2px 2px 2px 0;
697 background-color: #fafafa;
698 background-color: #fafafa;
698 border: 1px solid #dadada;
699 border: 1px solid #dadada;
699 width:auto;
700 width:auto;
700 overflow-x: auto;
701 overflow-x: auto;
701 overflow-y: hidden;
702 overflow-y: hidden;
702 }
703 }
703
704
704 div.wiki ul.toc {
705 div.wiki ul.toc {
705 background-color: #ffffdd;
706 background-color: #ffffdd;
706 border: 1px solid #e4e4e4;
707 border: 1px solid #e4e4e4;
707 padding: 4px;
708 padding: 4px;
708 line-height: 1.2em;
709 line-height: 1.2em;
709 margin-bottom: 12px;
710 margin-bottom: 12px;
710 margin-right: 12px;
711 margin-right: 12px;
711 margin-left: 0;
712 margin-left: 0;
712 display: table
713 display: table
713 }
714 }
714 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
715 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
715
716
716 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
717 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
717 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
718 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
718 div.wiki ul.toc ul { margin: 0; padding: 0; }
719 div.wiki ul.toc ul { margin: 0; padding: 0; }
719 div.wiki ul.toc li { list-style-type:none; margin: 0;}
720 div.wiki ul.toc li { list-style-type:none; margin: 0;}
720 div.wiki ul.toc li li { margin-left: 1.5em; }
721 div.wiki ul.toc li li { margin-left: 1.5em; }
721 div.wiki ul.toc li li li { font-size: 0.8em; }
722 div.wiki ul.toc li li li { font-size: 0.8em; }
722
723
723 div.wiki ul.toc a {
724 div.wiki ul.toc a {
724 font-size: 0.9em;
725 font-size: 0.9em;
725 font-weight: normal;
726 font-weight: normal;
726 text-decoration: none;
727 text-decoration: none;
727 color: #606060;
728 color: #606060;
728 }
729 }
729 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
730 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
730
731
731 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
732 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
732 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
733 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
733 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
734 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
734
735
735 div.wiki img { vertical-align: middle; }
736 div.wiki img { vertical-align: middle; }
736
737
737 /***** My page layout *****/
738 /***** My page layout *****/
738 .block-receiver {
739 .block-receiver {
739 border:1px dashed #c0c0c0;
740 border:1px dashed #c0c0c0;
740 margin-bottom: 20px;
741 margin-bottom: 20px;
741 padding: 15px 0 15px 0;
742 padding: 15px 0 15px 0;
742 }
743 }
743
744
744 .mypage-box {
745 .mypage-box {
745 margin:0 0 20px 0;
746 margin:0 0 20px 0;
746 color:#505050;
747 color:#505050;
747 line-height:1.5em;
748 line-height:1.5em;
748 }
749 }
749
750
750 .handle {
751 .handle {
751 cursor: move;
752 cursor: move;
752 }
753 }
753
754
754 a.close-icon {
755 a.close-icon {
755 display:block;
756 display:block;
756 margin-top:3px;
757 margin-top:3px;
757 overflow:hidden;
758 overflow:hidden;
758 width:12px;
759 width:12px;
759 height:12px;
760 height:12px;
760 background-repeat: no-repeat;
761 background-repeat: no-repeat;
761 cursor:pointer;
762 cursor:pointer;
762 background-image:url('../images/close.png');
763 background-image:url('../images/close.png');
763 }
764 }
764
765
765 a.close-icon:hover {
766 a.close-icon:hover {
766 background-image:url('../images/close_hl.png');
767 background-image:url('../images/close_hl.png');
767 }
768 }
768
769
769 /***** Gantt chart *****/
770 /***** Gantt chart *****/
770 .gantt_hdr {
771 .gantt_hdr {
771 position:absolute;
772 position:absolute;
772 top:0;
773 top:0;
773 height:16px;
774 height:16px;
774 border-top: 1px solid #c0c0c0;
775 border-top: 1px solid #c0c0c0;
775 border-bottom: 1px solid #c0c0c0;
776 border-bottom: 1px solid #c0c0c0;
776 border-right: 1px solid #c0c0c0;
777 border-right: 1px solid #c0c0c0;
777 text-align: center;
778 text-align: center;
778 overflow: hidden;
779 overflow: hidden;
779 }
780 }
780
781
781 .task {
782 .task {
782 position: absolute;
783 position: absolute;
783 height:8px;
784 height:8px;
784 font-size:0.8em;
785 font-size:0.8em;
785 color:#888;
786 color:#888;
786 padding:0;
787 padding:0;
787 margin:0;
788 margin:0;
788 line-height:0.8em;
789 line-height:0.8em;
789 white-space:nowrap;
790 white-space:nowrap;
790 }
791 }
791
792
792 .task.label {width:100%;}
793 .task.label {width:100%;}
793
794
794 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
795 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
795 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
796 .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; }
796 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
797 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
797
798
798 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
799 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
799 .task_late.parent, .task_done.parent { height: 3px;}
800 .task_late.parent, .task_done.parent { height: 3px;}
800 .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;}
801 .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;}
801 .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;}
802 .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;}
802
803
803 .milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; }
804 .milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; }
804 .milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
805 .milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
805 .milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
806 .milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
806 .milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
807 .milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
807 .project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; }
808 .project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; }
808 .project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
809 .project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;}
809 .project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
810 .project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;}
810 .project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
811 .project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;}
811
812
812 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
813 .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;}
813 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
814 .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;}
814
815
815 /***** Icons *****/
816 /***** Icons *****/
816 .icon {
817 .icon {
817 background-position: 0% 50%;
818 background-position: 0% 50%;
818 background-repeat: no-repeat;
819 background-repeat: no-repeat;
819 padding-left: 20px;
820 padding-left: 20px;
820 padding-top: 2px;
821 padding-top: 2px;
821 padding-bottom: 3px;
822 padding-bottom: 3px;
822 }
823 }
823
824
824 .icon-add { background-image: url(../images/add.png); }
825 .icon-add { background-image: url(../images/add.png); }
825 .icon-edit { background-image: url(../images/edit.png); }
826 .icon-edit { background-image: url(../images/edit.png); }
826 .icon-copy { background-image: url(../images/copy.png); }
827 .icon-copy { background-image: url(../images/copy.png); }
827 .icon-duplicate { background-image: url(../images/duplicate.png); }
828 .icon-duplicate { background-image: url(../images/duplicate.png); }
828 .icon-del { background-image: url(../images/delete.png); }
829 .icon-del { background-image: url(../images/delete.png); }
829 .icon-move { background-image: url(../images/move.png); }
830 .icon-move { background-image: url(../images/move.png); }
830 .icon-save { background-image: url(../images/save.png); }
831 .icon-save { background-image: url(../images/save.png); }
831 .icon-cancel { background-image: url(../images/cancel.png); }
832 .icon-cancel { background-image: url(../images/cancel.png); }
832 .icon-multiple { background-image: url(../images/table_multiple.png); }
833 .icon-multiple { background-image: url(../images/table_multiple.png); }
833 .icon-folder { background-image: url(../images/folder.png); }
834 .icon-folder { background-image: url(../images/folder.png); }
834 .open .icon-folder { background-image: url(../images/folder_open.png); }
835 .open .icon-folder { background-image: url(../images/folder_open.png); }
835 .icon-package { background-image: url(../images/package.png); }
836 .icon-package { background-image: url(../images/package.png); }
836 .icon-home { background-image: url(../images/home.png); }
837 .icon-home { background-image: url(../images/home.png); }
837 .icon-user { background-image: url(../images/user.png); }
838 .icon-user { background-image: url(../images/user.png); }
838 .icon-projects { background-image: url(../images/projects.png); }
839 .icon-projects { background-image: url(../images/projects.png); }
839 .icon-help { background-image: url(../images/help.png); }
840 .icon-help { background-image: url(../images/help.png); }
840 .icon-attachment { background-image: url(../images/attachment.png); }
841 .icon-attachment { background-image: url(../images/attachment.png); }
841 .icon-history { background-image: url(../images/history.png); }
842 .icon-history { background-image: url(../images/history.png); }
842 .icon-time { background-image: url(../images/time.png); }
843 .icon-time { background-image: url(../images/time.png); }
843 .icon-time-add { background-image: url(../images/time_add.png); }
844 .icon-time-add { background-image: url(../images/time_add.png); }
844 .icon-stats { background-image: url(../images/stats.png); }
845 .icon-stats { background-image: url(../images/stats.png); }
845 .icon-warning { background-image: url(../images/warning.png); }
846 .icon-warning { background-image: url(../images/warning.png); }
846 .icon-fav { background-image: url(../images/fav.png); }
847 .icon-fav { background-image: url(../images/fav.png); }
847 .icon-fav-off { background-image: url(../images/fav_off.png); }
848 .icon-fav-off { background-image: url(../images/fav_off.png); }
848 .icon-reload { background-image: url(../images/reload.png); }
849 .icon-reload { background-image: url(../images/reload.png); }
849 .icon-lock { background-image: url(../images/locked.png); }
850 .icon-lock { background-image: url(../images/locked.png); }
850 .icon-unlock { background-image: url(../images/unlock.png); }
851 .icon-unlock { background-image: url(../images/unlock.png); }
851 .icon-checked { background-image: url(../images/true.png); }
852 .icon-checked { background-image: url(../images/true.png); }
852 .icon-details { background-image: url(../images/zoom_in.png); }
853 .icon-details { background-image: url(../images/zoom_in.png); }
853 .icon-report { background-image: url(../images/report.png); }
854 .icon-report { background-image: url(../images/report.png); }
854 .icon-comment { background-image: url(../images/comment.png); }
855 .icon-comment { background-image: url(../images/comment.png); }
855 .icon-summary { background-image: url(../images/lightning.png); }
856 .icon-summary { background-image: url(../images/lightning.png); }
856 .icon-server-authentication { background-image: url(../images/server_key.png); }
857 .icon-server-authentication { background-image: url(../images/server_key.png); }
857 .icon-issue { background-image: url(../images/ticket.png); }
858 .icon-issue { background-image: url(../images/ticket.png); }
858 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
859 .icon-zoom-in { background-image: url(../images/zoom_in.png); }
859 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
860 .icon-zoom-out { background-image: url(../images/zoom_out.png); }
860
861
861 .icon-file { background-image: url(../images/files/default.png); }
862 .icon-file { background-image: url(../images/files/default.png); }
862 .icon-file.text-plain { background-image: url(../images/files/text.png); }
863 .icon-file.text-plain { background-image: url(../images/files/text.png); }
863 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
864 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
864 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
865 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
865 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
866 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
866 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
867 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
867 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
868 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
868 .icon-file.image-gif { background-image: url(../images/files/image.png); }
869 .icon-file.image-gif { background-image: url(../images/files/image.png); }
869 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
870 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
870 .icon-file.image-png { background-image: url(../images/files/image.png); }
871 .icon-file.image-png { background-image: url(../images/files/image.png); }
871 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
872 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
872 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
873 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
873 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
874 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
874 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
875 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
875
876
876 img.gravatar {
877 img.gravatar {
877 padding: 2px;
878 padding: 2px;
878 border: solid 1px #d5d5d5;
879 border: solid 1px #d5d5d5;
879 background: #fff;
880 background: #fff;
880 }
881 }
881
882
882 div.issue img.gravatar {
883 div.issue img.gravatar {
883 float: right;
884 float: right;
884 margin: 0 0 0 1em;
885 margin: 0 0 0 1em;
885 padding: 5px;
886 padding: 5px;
886 }
887 }
887
888
888 div.issue table img.gravatar {
889 div.issue table img.gravatar {
889 height: 14px;
890 height: 14px;
890 width: 14px;
891 width: 14px;
891 padding: 2px;
892 padding: 2px;
892 float: left;
893 float: left;
893 margin: 0 0.5em 0 0;
894 margin: 0 0.5em 0 0;
894 }
895 }
895
896
896 h2 img.gravatar {
897 h2 img.gravatar {
897 padding: 3px;
898 padding: 3px;
898 margin: -2px 4px -4px 0;
899 margin: -2px 4px -4px 0;
899 vertical-align: top;
900 vertical-align: top;
900 }
901 }
901
902
902 h4 img.gravatar {
903 h4 img.gravatar {
903 padding: 3px;
904 padding: 3px;
904 margin: -6px 0 -4px 0;
905 margin: -6px 0 -4px 0;
905 vertical-align: top;
906 vertical-align: top;
906 }
907 }
907
908
908 td.username img.gravatar {
909 td.username img.gravatar {
909 float: left;
910 float: left;
910 margin: 0 1em 0 0;
911 margin: 0 1em 0 0;
911 }
912 }
912
913
913 #activity dt img.gravatar {
914 #activity dt img.gravatar {
914 float: left;
915 float: left;
915 margin: 0 1em 1em 0;
916 margin: 0 1em 1em 0;
916 }
917 }
917
918
918 /* Used on 12px Gravatar img tags without the icon background */
919 /* Used on 12px Gravatar img tags without the icon background */
919 .icon-gravatar {
920 .icon-gravatar {
920 float: left;
921 float: left;
921 margin-right: 4px;
922 margin-right: 4px;
922 }
923 }
923
924
924 #activity dt,
925 #activity dt,
925 .journal {
926 .journal {
926 clear: left;
927 clear: left;
927 }
928 }
928
929
929 .journal-link {
930 .journal-link {
930 float: right;
931 float: right;
931 }
932 }
932
933
933 h2 img { vertical-align:middle; }
934 h2 img { vertical-align:middle; }
934
935
935 .hascontextmenu { cursor: context-menu; }
936 .hascontextmenu { cursor: context-menu; }
936
937
937 /***** Media print specific styles *****/
938 /***** Media print specific styles *****/
938 @media print {
939 @media print {
939 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
940 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
940 #main { background: #fff; }
941 #main { background: #fff; }
941 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
942 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
942 #wiki_add_attachment { display:none; }
943 #wiki_add_attachment { display:none; }
943 .hide-when-print { display: none; }
944 .hide-when-print { display: none; }
944 }
945 }
@@ -1,20 +1,34
1 require File.dirname(__FILE__) + '/../test_helper'
1 require File.dirname(__FILE__) + '/../test_helper'
2
2
3 class AutoCompletesControllerTest < ActionController::TestCase
3 class AutoCompletesControllerTest < ActionController::TestCase
4 fixtures :all
4 fixtures :all
5
5
6 def test_issues_should_not_be_case_sensitive
6 def test_issues_should_not_be_case_sensitive
7 get :issues, :project_id => 'ecookbook', :q => 'ReCiPe'
7 get :issues, :project_id => 'ecookbook', :q => 'ReCiPe'
8 assert_response :success
8 assert_response :success
9 assert_not_nil assigns(:issues)
9 assert_not_nil assigns(:issues)
10 assert assigns(:issues).detect {|issue| issue.subject.match /recipe/}
10 assert assigns(:issues).detect {|issue| issue.subject.match /recipe/}
11 end
11 end
12
12
13 def test_issues_should_return_issue_with_given_id
13 def test_issues_should_return_issue_with_given_id
14 get :issues, :project_id => 'subproject1', :q => '13'
14 get :issues, :project_id => 'subproject1', :q => '13'
15 assert_response :success
15 assert_response :success
16 assert_not_nil assigns(:issues)
16 assert_not_nil assigns(:issues)
17 assert assigns(:issues).include?(Issue.find(13))
17 assert assigns(:issues).include?(Issue.find(13))
18 end
18 end
19
19
20 def test_auto_complete_with_scope_all_and_cross_project_relations
21 Setting.cross_project_issue_relations = '1'
22 get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all'
23 assert_response :success
24 assert_not_nil assigns(:issues)
25 assert assigns(:issues).include?(Issue.find(13))
26 end
27
28 def test_auto_complete_with_scope_all_without_cross_project_relations
29 Setting.cross_project_issue_relations = '0'
30 get :issues, :project_id => 'ecookbook', :q => '13', :scope => 'all'
31 assert_response :success
32 assert_equal [nil], assigns(:issues)
33 end
20 end
34 end
General Comments 0
You need to be logged in to leave comments. Login now