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