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