##// END OF EJS Templates
Search engine:...
Jean-Philippe Lang -
r828:74ecb37be657
parent child
Show More
@@ -1,33 +1,38
1 1 # redMine - project management software
2 2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 module SearchHelper
19 19 def highlight_tokens(text, tokens)
20 20 return text unless text && tokens && !tokens.empty?
21 21 regexp = Regexp.new "(#{tokens.join('|')})", Regexp::IGNORECASE
22 22 result = ''
23 23 text.split(regexp).each_with_index do |words, i|
24 24 if result.length > 1200
25 25 # maximum length of the preview reached
26 26 result << '...'
27 27 break
28 28 end
29 result << (i.even? ? h(words.length > 100 ? "#{words[0..44]} ... #{words[-45..-1]}" : words) : content_tag('span', h(words), :class => 'highlight'))
29 if i.even?
30 result << h(words.length > 100 ? "#{words[0..44]} ... #{words[-45..-1]}" : words)
31 else
32 t = (tokens.index(words.downcase) || 0) % 4
33 result << content_tag('span', h(words), :class => "highlight token-#{t}")
34 end
30 35 end
31 36 result
32 37 end
33 38 end
@@ -1,41 +1,41
1 1 <h2><%= l(:label_search) %></h2>
2 2
3 3 <div class="box">
4 4 <% form_tag({}, :method => :get) do %>
5 5 <p><%= text_field_tag 'q', @question, :size => 30, :id => 'search-input' %>
6 6 <%= javascript_tag "Field.focus('search-input')" %>
7 7
8 8 <% @object_types.each do |t| %>
9 9 <label><%= check_box_tag t, 1, @scope.include?(t) %> <%= l("label_#{t.singularize}_plural")%></label>
10 10 <% end %>
11 11 <br />
12 <%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></p>
12 <label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label></p>
13 13 <%= submit_tag l(:button_submit), :name => 'submit' %>
14 14 <% end %>
15 15 </div>
16 16
17 17 <% if @results %>
18 18 <h3><%= l(:label_result_plural) %></h3>
19 19 <ul>
20 20 <% @results.each do |e| %>
21 21 <li><p><%= link_to highlight_tokens(truncate(e.event_title, 255), @tokens), e.event_url %><br />
22 22 <%= highlight_tokens(e.event_description, @tokens) %><br />
23 23 <span class="author"><%= format_time(e.event_datetime) %></span></p></li>
24 24 <% end %>
25 25 </ul>
26 26 <% end %>
27 27
28 28 <p><center>
29 29 <% if @pagination_previous_date %>
30 30 <%= link_to_remote ('&#171; ' + l(:label_previous)),
31 31 {:update => :content,
32 32 :url => params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))
33 33 }, :href => url_for(params.merge(:previous => 1, :offset => @pagination_previous_date.strftime("%Y%m%d%H%M%S"))) %>&nbsp;
34 34 <% end %>
35 35 <% if @pagination_next_date %>
36 36 <%= link_to_remote (l(:label_next) + ' &#187;'),
37 37 {:update => :content,
38 38 :url => params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))
39 39 }, :href => url_for(params.merge(:previous => nil, :offset => @pagination_next_date.strftime("%Y%m%d%H%M%S"))) %>
40 40 <% end %>
41 41 </center></p>
@@ -1,472 +1,475
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: 12px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8 8
9 9 /***** Layout *****/
10 10 #top-menu {background: #2C4056;color: #fff;height:1.5em; padding: 2px 6px 0px 6px;}
11 11 #top-menu a {color: #fff; padding-right: 4px;}
12 12 #account {float:right;}
13 13
14 14 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px;}
15 15 #header a {color:#f8f8f8;}
16 16 #quick-search {float:right;}
17 17
18 18 #main-menu {position: absolute; top: 5.5em; left:6px;}
19 19 #main-menu ul {margin: 0; padding: 0;}
20 20 #main-menu li {
21 21 float:left;
22 22 list-style-type:none;
23 23 margin: 0px 10px 0px 0px;
24 24 padding: 0px 0px 0px 0px;
25 25 white-space:nowrap;
26 26 }
27 27 #main-menu li a {
28 28 display: block;
29 29 color: #fff;
30 30 text-decoration: none;
31 31 margin: 0;
32 32 padding: 4px 4px 4px 4px;
33 33 background: #2C4056;
34 34 }
35 35 #main-menu li a:hover {background:#759FCF;}
36 36
37 37 #main {background: url(../images/mainbg.png) repeat-x; background-color:#EEEEEE;}
38 38
39 39 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
40 40 * html #sidebar{ width: 17%; }
41 41 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
42 42 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
43 43 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
44 44
45 45 #content { width: 80%; background: url(../images/contentbg.png) repeat-x; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; position: relative; z-index: 10; height:600px; min-height: 600px;}
46 46 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
47 47 html>body #content {
48 48 height: auto;
49 49 min-height: 600px;
50 50 }
51 51
52 52 #main.nosidebar #sidebar{ display: none; }
53 53 #main.nosidebar #content{ width: auto; border-right: 0; }
54 54
55 55 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
56 56
57 57 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
58 58 #login-form table td {padding: 6px;}
59 59 #login-form label {font-weight: bold;}
60 60
61 61 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
62 62
63 63 /***** Links *****/
64 64 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
65 65 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
66 66 a img{ border: 0; }
67 67
68 68 /***** Tables *****/
69 69 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
70 70 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
71 71 table.list td { overflow: hidden; text-overflow: ellipsis; vertical-align: top;}
72 72 table.list td.id { width: 2%; text-align: center;}
73 73 table.list td.checkbox { width: 15px; padding: 0px;}
74 74
75 75 tr.issue { text-align: center; white-space: nowrap; }
76 76 tr.issue td.subject, tr.issue td.category { white-space: normal; }
77 77 tr.issue td.subject { text-align: left; }
78 78
79 79 table.list tbody tr:hover { background-color:#ffffdd; }
80 80 table td {padding:2px;}
81 81 table p {margin:0;}
82 82 .odd {background-color:#f6f7f8;}
83 83 .even {background-color: #fff;}
84 84
85 85 .highlight { background-color: #FCFD8D;}
86 .highlight.token-1 { background-color: #faa;}
87 .highlight.token-2 { background-color: #afa;}
88 .highlight.token-3 { background-color: #aaf;}
86 89
87 90 .box{
88 91 padding:6px;
89 92 margin-bottom: 10px;
90 93 background-color:#f6f6f6;
91 94 color:#505050;
92 95 line-height:1.5em;
93 96 border: 1px solid #e4e4e4;
94 97 }
95 98
96 99 div.square {
97 100 border: 1px solid #999;
98 101 float: left;
99 102 margin: .3em .4em 0 .4em;
100 103 overflow: hidden;
101 104 width: .6em; height: .6em;
102 105 }
103 106
104 107 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px;font-size:0.9em;}
105 108 .splitcontentleft{float:left; width:49%;}
106 109 .splitcontentright{float:right; width:49%;}
107 110 form {display: inline;}
108 111 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
109 112 fieldset {border: 1px solid #e4e4e4; margin:0;}
110 113 legend {color: #484848;}
111 114 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
112 115 textarea.wiki-edit { width: 99%; }
113 116 li p {margin-top: 0;}
114 117 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
115 118 .autoscroll {overflow-x: auto; padding:1px; width:100%;}
116 119
117 120 /***** Tabular forms ******/
118 121 .tabular p{
119 122 margin: 0;
120 123 padding: 5px 0 8px 0;
121 124 padding-left: 180px; /*width of left column containing the label elements*/
122 125 height: 1%;
123 126 clear:left;
124 127 }
125 128
126 129 .tabular label{
127 130 font-weight: bold;
128 131 float: left;
129 132 text-align: right;
130 133 margin-left: -180px; /*width of left column*/
131 134 width: 175px; /*width of labels. Should be smaller than left column to create some right
132 135 margin*/
133 136 }
134 137
135 138 .tabular label.floating{
136 139 font-weight: normal;
137 140 margin-left: 0px;
138 141 text-align: left;
139 142 width: 200px;
140 143 }
141 144
142 145 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
143 146
144 147 #settings .tabular p{ padding-left: 300px; }
145 148 #settings .tabular label{ margin-left: -300px; width: 295px; }
146 149
147 150 .required {color: #bb0000;}
148 151 .summary {font-style: italic;}
149 152
150 153 div.attachments p { margin:4px 0 2px 0; }
151 154
152 155 /***** Flash & error messages ****/
153 156 #flash div, #errorExplanation, .nodata {
154 157 padding: 4px 4px 4px 30px;
155 158 margin-bottom: 12px;
156 159 font-size: 1.1em;
157 160 border: 2px solid;
158 161 }
159 162
160 163 #flash div {margin-top: 6px;}
161 164
162 165 #flash div.error, #errorExplanation {
163 166 background: url(../images/false.png) 8px 5px no-repeat;
164 167 background-color: #ffe3e3;
165 168 border-color: #dd0000;
166 169 color: #550000;
167 170 }
168 171
169 172 #flash div.notice {
170 173 background: url(../images/true.png) 8px 5px no-repeat;
171 174 background-color: #dfffdf;
172 175 border-color: #9fcf9f;
173 176 color: #005f00;
174 177 }
175 178
176 179 .nodata {
177 180 text-align: center;
178 181 background-color: #FFEBC1;
179 182 border-color: #FDBF3B;
180 183 color: #A6750C;
181 184 }
182 185
183 186 #errorExplanation ul { font-size: 0.9em;}
184 187
185 188 /***** Ajax indicator ******/
186 189 #ajax-indicator {
187 190 position: absolute; /* fixed not supported by IE */
188 191 background-color:#eee;
189 192 border: 1px solid #bbb;
190 193 top:35%;
191 194 left:40%;
192 195 width:20%;
193 196 font-weight:bold;
194 197 text-align:center;
195 198 padding:0.6em;
196 199 z-index:100;
197 200 filter:alpha(opacity=50);
198 201 -moz-opacity:0.5;
199 202 opacity: 0.5;
200 203 -khtml-opacity: 0.5;
201 204 }
202 205
203 206 html>body #ajax-indicator { position: fixed; }
204 207
205 208 #ajax-indicator span {
206 209 background-position: 0% 40%;
207 210 background-repeat: no-repeat;
208 211 background-image: url(../images/loading.gif);
209 212 padding-left: 26px;
210 213 vertical-align: bottom;
211 214 }
212 215
213 216 /***** Calendar *****/
214 217 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
215 218 table.cal thead th {width: 14%;}
216 219 table.cal tbody tr {height: 100px;}
217 220 table.cal th { background-color:#EEEEEE; padding: 4px; }
218 221 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
219 222 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
220 223 table.cal td.odd p.day-num {color: #bbb;}
221 224 table.cal td.today {background:#ffffdd;}
222 225 table.cal td.today p.day-num {font-weight: bold;}
223 226
224 227 /***** Tooltips ******/
225 228 .tooltip{position:relative;z-index:24;}
226 229 .tooltip:hover{z-index:25;color:#000;}
227 230 .tooltip span.tip{display: none; text-align:left;}
228 231
229 232 div.tooltip:hover span.tip{
230 233 display:block;
231 234 position:absolute;
232 235 top:12px; left:24px; width:270px;
233 236 border:1px solid #555;
234 237 background-color:#fff;
235 238 padding: 4px;
236 239 font-size: 0.8em;
237 240 color:#505050;
238 241 }
239 242
240 243 /***** Progress bar *****/
241 244 .progress {
242 245 border: 1px solid #D7D7D7;
243 246 border-collapse: collapse;
244 247 border-spacing: 0pt;
245 248 empty-cells: show;
246 249 padding: 3px;
247 250 width: 40em;
248 251 text-align: center;
249 252 }
250 253
251 254 .progress td { height: 1em; }
252 255 .progress .closed { background: #BAE0BA none repeat scroll 0%; }
253 256 .progress .open { background: #FFF none repeat scroll 0%; }
254 257
255 258 /***** Tabs *****/
256 259 #content .tabs{height: 2.6em;}
257 260 #content .tabs ul{margin:0;}
258 261 #content .tabs ul li{
259 262 float:left;
260 263 list-style-type:none;
261 264 white-space:nowrap;
262 265 margin-right:8px;
263 266 background:#fff;
264 267 }
265 268 #content .tabs ul li a{
266 269 display:block;
267 270 font-size: 0.9em;
268 271 text-decoration:none;
269 272 line-height:1em;
270 273 padding:4px;
271 274 border: 1px solid #c0c0c0;
272 275 }
273 276
274 277 #content .tabs ul li a.selected, #content .tabs ul li a:hover{
275 278 background-color: #507AAA;
276 279 border: 1px solid #507AAA;
277 280 color: #fff;
278 281 text-decoration:none;
279 282 }
280 283
281 284 /***** Diff *****/
282 285 .diff_out { background: #fcc; }
283 286 .diff_in { background: #cfc; }
284 287
285 288 /***** Wiki *****/
286 289 div.wiki table {
287 290 border: 1px solid #505050;
288 291 border-collapse: collapse;
289 292 }
290 293
291 294 div.wiki table, div.wiki td, div.wiki th {
292 295 border: 1px solid #bbb;
293 296 padding: 4px;
294 297 }
295 298
296 299 div.wiki .external {
297 300 background-position: 0% 60%;
298 301 background-repeat: no-repeat;
299 302 padding-left: 12px;
300 303 background-image: url(../images/external.png);
301 304 }
302 305
303 306 div.wiki a.new {
304 307 color: #b73535;
305 308 }
306 309
307 310 div.wiki pre {
308 311 margin: 1em 1em 1em 1.6em;
309 312 padding: 2px;
310 313 background-color: #fafafa;
311 314 border: 1px solid #dadada;
312 315 width:95%;
313 316 overflow-x: auto;
314 317 }
315 318
316 319 div.wiki div.toc {
317 320 background-color: #ffffdd;
318 321 border: 1px solid #e4e4e4;
319 322 padding: 4px;
320 323 line-height: 1.2em;
321 324 margin-bottom: 12px;
322 325 margin-right: 12px;
323 326 display: table
324 327 }
325 328 * html div.wiki div.toc { width: 50%; } /* IE6 doesn't autosize div */
326 329
327 330 div.wiki div.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
328 331 div.wiki div.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
329 332
330 333 div.wiki div.toc a {
331 334 display: block;
332 335 font-size: 0.9em;
333 336 font-weight: normal;
334 337 text-decoration: none;
335 338 color: #606060;
336 339 }
337 340 div.wiki div.toc a:hover { color: #c61a1a; text-decoration: underline;}
338 341
339 342 div.wiki div.toc a.heading2 { margin-left: 6px; }
340 343 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
341 344
342 345 /***** My page layout *****/
343 346 .block-receiver {
344 347 border:1px dashed #c0c0c0;
345 348 margin-bottom: 20px;
346 349 padding: 15px 0 15px 0;
347 350 }
348 351
349 352 .mypage-box {
350 353 margin:0 0 20px 0;
351 354 color:#505050;
352 355 line-height:1.5em;
353 356 }
354 357
355 358 .handle {
356 359 cursor: move;
357 360 }
358 361
359 362 a.close-icon {
360 363 display:block;
361 364 margin-top:3px;
362 365 overflow:hidden;
363 366 width:12px;
364 367 height:12px;
365 368 background-repeat: no-repeat;
366 369 cursor:pointer;
367 370 background-image:url('../images/close.png');
368 371 }
369 372
370 373 a.close-icon:hover {
371 374 background-image:url('../images/close_hl.png');
372 375 }
373 376
374 377 /***** Gantt chart *****/
375 378 .gantt_hdr {
376 379 position:absolute;
377 380 top:0;
378 381 height:16px;
379 382 border-top: 1px solid #c0c0c0;
380 383 border-bottom: 1px solid #c0c0c0;
381 384 border-right: 1px solid #c0c0c0;
382 385 text-align: center;
383 386 overflow: hidden;
384 387 }
385 388
386 389 .task {
387 390 position: absolute;
388 391 height:8px;
389 392 font-size:0.8em;
390 393 color:#888;
391 394 padding:0;
392 395 margin:0;
393 396 line-height:0.8em;
394 397 }
395 398
396 399 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
397 400 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
398 401 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
399 402 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
400 403
401 404 /***** Icons *****/
402 405 .icon {
403 406 background-position: 0% 40%;
404 407 background-repeat: no-repeat;
405 408 padding-left: 20px;
406 409 padding-top: 2px;
407 410 padding-bottom: 3px;
408 411 }
409 412
410 413 .icon22 {
411 414 background-position: 0% 40%;
412 415 background-repeat: no-repeat;
413 416 padding-left: 26px;
414 417 line-height: 22px;
415 418 vertical-align: middle;
416 419 }
417 420
418 421 .icon-add { background-image: url(../images/add.png); }
419 422 .icon-edit { background-image: url(../images/edit.png); }
420 423 .icon-del { background-image: url(../images/delete.png); }
421 424 .icon-move { background-image: url(../images/move.png); }
422 425 .icon-save { background-image: url(../images/save.png); }
423 426 .icon-cancel { background-image: url(../images/cancel.png); }
424 427 .icon-pdf { background-image: url(../images/pdf.png); }
425 428 .icon-csv { background-image: url(../images/csv.png); }
426 429 .icon-html { background-image: url(../images/html.png); }
427 430 .icon-image { background-image: url(../images/image.png); }
428 431 .icon-txt { background-image: url(../images/txt.png); }
429 432 .icon-file { background-image: url(../images/file.png); }
430 433 .icon-folder { background-image: url(../images/folder.png); }
431 434 .icon-package { background-image: url(../images/package.png); }
432 435 .icon-home { background-image: url(../images/home.png); }
433 436 .icon-user { background-image: url(../images/user.png); }
434 437 .icon-mypage { background-image: url(../images/user_page.png); }
435 438 .icon-admin { background-image: url(../images/admin.png); }
436 439 .icon-projects { background-image: url(../images/projects.png); }
437 440 .icon-logout { background-image: url(../images/logout.png); }
438 441 .icon-help { background-image: url(../images/help.png); }
439 442 .icon-attachment { background-image: url(../images/attachment.png); }
440 443 .icon-index { background-image: url(../images/index.png); }
441 444 .icon-history { background-image: url(../images/history.png); }
442 445 .icon-feed { background-image: url(../images/feed.png); }
443 446 .icon-time { background-image: url(../images/time.png); }
444 447 .icon-stats { background-image: url(../images/stats.png); }
445 448 .icon-warning { background-image: url(../images/warning.png); }
446 449 .icon-fav { background-image: url(../images/fav.png); }
447 450 .icon-fav-off { background-image: url(../images/fav_off.png); }
448 451 .icon-reload { background-image: url(../images/reload.png); }
449 452 .icon-lock { background-image: url(../images/locked.png); }
450 453 .icon-unlock { background-image: url(../images/unlock.png); }
451 454 .icon-note { background-image: url(../images/note.png); }
452 455
453 456 .icon22-projects { background-image: url(../images/22x22/projects.png); }
454 457 .icon22-users { background-image: url(../images/22x22/users.png); }
455 458 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
456 459 .icon22-role { background-image: url(../images/22x22/role.png); }
457 460 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
458 461 .icon22-options { background-image: url(../images/22x22/options.png); }
459 462 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
460 463 .icon22-authent { background-image: url(../images/22x22/authent.png); }
461 464 .icon22-info { background-image: url(../images/22x22/info.png); }
462 465 .icon22-comment { background-image: url(../images/22x22/comment.png); }
463 466 .icon22-package { background-image: url(../images/22x22/package.png); }
464 467 .icon22-settings { background-image: url(../images/22x22/settings.png); }
465 468 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
466 469
467 470 /***** Media print specific styles *****/
468 471 @media print {
469 472 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual { display:none; }
470 473 #main { background: #fff; }
471 474 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
472 475 }
General Comments 0
You need to be logged in to leave comments. Login now