##// END OF EJS Templates
Added automatic table of content support on wiki pages, based on h1., h2. and h3. headings....
Jean-Philippe Lang -
r707:f3364b9dce6f
parent child
Show More
@@ -1,95 +1,122
1 1 require 'redcloth'
2 2 require 'coderay'
3 3
4 4 module Redmine
5 5 module WikiFormatting
6 6
7 7 private
8 8
9 9 class TextileFormatter < RedCloth
10 RULES = [:inline_auto_link, :inline_auto_mailto, :textile ]
11
10 RULES = [:inline_auto_link, :inline_auto_mailto, :textile, :inline_toc]
11
12 12 def initialize(*args)
13 13 super
14 14 self.hard_breaks=true
15 15 end
16 16
17 17 def to_html
18 @toc = []
18 19 super(*RULES).to_s
19 20 end
20 21
21 22 private
22 23
23 24 # Patch for RedCloth. Fixed in RedCloth r128 but _why hasn't released it yet.
24 25 # <a href="http://code.whytheluckystiff.net/redcloth/changeset/128">http://code.whytheluckystiff.net/redcloth/changeset/128</a>
25 26 def hard_break( text )
26 27 text.gsub!( /(.)\n(?!\n|\Z| *([#*=]+(\s|$)|[{|]))/, "\\1<br />" ) if hard_breaks
27 28 end
28 29
29 30 # Patch to add code highlighting support to RedCloth
30 31 def smooth_offtags( text )
31 32 unless @pre_list.empty?
32 33 ## replace <pre> content
33 34 text.gsub!(/<redpre#(\d+)>/) do
34 35 content = @pre_list[$1.to_i]
35 36 if content.match(/<code\s+class="(\w+)">\s?(.+)/m)
36 37 content = "<code class=\"#{$1} CodeRay\">" +
37 38 CodeRay.scan($2, $1).html(:escape => false, :line_numbers => :inline)
38 39 end
39 40 content
40 41 end
41 42 end
42 43 end
43 44
45 # Patch to add 'table of content' support to RedCloth
46 def textile_p_withtoc(tag, atts, cite, content)
47 if tag =~ /^h(\d)$/
48 @toc << [$1.to_i, content]
49 end
50 content = "<a name=\"#{@toc.length}-#{content}\" class=\"wiki-page\"></a>" + content
51 textile_p(tag, atts, cite, content)
52 end
53
54 alias :textile_h1 :textile_p_withtoc
55 alias :textile_h2 :textile_p_withtoc
56 alias :textile_h3 :textile_p_withtoc
57
58 def inline_toc(text)
59 text.gsub!(/<p>\{\{(<>?)toc\}\}<\/p>/i) do
60 div_class = 'toc'
61 div_class << ' right' if $1 == '>'
62 out = "<div class=\"#{div_class}\">"
63 @toc.each_with_index do |heading, index|
64 out << "<a href=\"##{index+1}-#{heading.last}\" class=\"heading#{heading.first}\">#{heading.last}</a>"
65 end
66 out << '</div>'
67 out
68 end
69 end
70
44 71 AUTO_LINK_RE = %r{
45 72 ( # leading text
46 73 <\w+.*?>| # leading HTML tag, or
47 74 [^=<>!:'"/]| # leading punctuation, or
48 75 ^ # beginning of line
49 76 )
50 77 (
51 78 (?:https?://)| # protocol spec, or
52 79 (?:www\.) # www.*
53 80 )
54 81 (
55 82 [-\w]+ # subdomain or domain
56 83 (?:\.[-\w]+)* # remaining subdomains or domain
57 84 (?::\d+)? # port
58 85 (?:/(?:(?:[~\w\+%-]|(?:[,.;:][^\s$]))+)?)* # path
59 86 (?:\?[\w\+%&=.;-]+)? # query string
60 87 (?:\#[\w\-]*)? # trailing anchor
61 88 )
62 89 ([[:punct:]]|\s|<|$) # trailing text
63 90 }x unless const_defined?(:AUTO_LINK_RE)
64 91
65 92 # Turns all urls into clickable links (code from Rails).
66 93 def inline_auto_link(text)
67 94 text.gsub!(AUTO_LINK_RE) do
68 95 all, a, b, c, d = $&, $1, $2, $3, $4
69 96 if a =~ /<a\s/i || a =~ /![<>=]?/
70 97 # don't replace URL's that are already linked
71 98 # and URL's prefixed with ! !> !< != (textile images)
72 99 all
73 100 else
74 101 text = b + c
75 102 %(#{a}<a href="#{b=="www."?"http://www.":b}#{c}">#{text}</a>#{d})
76 103 end
77 104 end
78 105 end
79 106
80 107 # Turns all email addresses into clickable links (code from Rails).
81 108 def inline_auto_mailto(text)
82 109 text.gsub!(/([\w\.!#\$%\-+.]+@[A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)+)/) do
83 110 text = $1
84 111 %{<a href="mailto:#{$1}" class="email">#{text}</a>}
85 112 end
86 113 end
87 114 end
88 115
89 116 public
90 117
91 118 def self.to_html(text, options = {})
92 119 TextileFormatter.new(text).to_html
93 120 end
94 121 end
95 122 end
@@ -1,706 +1,734
1 1 /* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */
2 2 /* Edited by Jean-Philippe Lang *>
3 3 /**************** Body and tag styles ****************/
4 4
5 5 #header * {margin:0; padding:0;}
6 6 p, ul, ol, li {margin:0; padding:0;}
7 7
8 8 body{
9 9 font:76% Verdana,Tahoma,Arial,sans-serif;
10 10 line-height:1.4em;
11 11 text-align:center;
12 12 color:#303030;
13 13 background:#e8eaec;
14 14 margin:0;
15 15 }
16 16
17 17 a{color:#467aa7;font-weight:bold;text-decoration:none;background-color:inherit;}
18 18 a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;}
19 19 a img{border:none;}
20 20
21 21 p{margin:0 0 1em 0;}
22 22 p form{margin-top:0; margin-bottom:20px;}
23 23
24 24 img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;}
25 25 img.left{float:left; margin:0 12px 5px 0;}
26 26 img.center{display:block; margin:0 auto 5px auto;}
27 27 img.right{float:right; margin:0 0 5px 12px;}
28 28
29 29 /**************** Header and navigation styles ****************/
30 30
31 31 #container{
32 32 width:100%;
33 33 min-width: 800px;
34 34 margin:0;
35 35 padding:0;
36 36 text-align:left;
37 37 background:#ffffff;
38 38 color:#303030;
39 39 }
40 40
41 41 #header{
42 42 height:4.5em;
43 43 margin:0;
44 44 background:#467aa7;
45 45 color:#ffffff;
46 46 margin-bottom:1px;
47 47 }
48 48
49 49 #header h1{
50 50 padding:10px 0 0 20px;
51 51 font-size:2em;
52 52 background-color:inherit;
53 53 color:#fff;
54 54 letter-spacing:-1px;
55 55 font-weight:bold;
56 56 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
57 57 }
58 58
59 59 #header h2{
60 60 margin:3px 0 0 40px;
61 61 font-size:1.5em;
62 62 background-color:inherit;
63 63 color:#f0f2f4;
64 64 letter-spacing:-1px;
65 65 font-weight:normal;
66 66 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
67 67 }
68 68
69 69 #header a {color:#fff;}
70 70
71 71 #navigation{
72 72 height:2.2em;
73 73 line-height:2.2em;
74 74 margin:0;
75 75 background:#578bb8;
76 76 color:#ffffff;
77 77 }
78 78
79 79 #navigation li{
80 80 float:left;
81 81 list-style-type:none;
82 82 border-right:1px solid #ffffff;
83 83 white-space:nowrap;
84 84 }
85 85
86 86 #navigation li.right {
87 87 float:right;
88 88 list-style-type:none;
89 89 border-right:0;
90 90 border-left:1px solid #ffffff;
91 91 white-space:nowrap;
92 92 }
93 93
94 94 #navigation li a{
95 95 display:block;
96 96 padding:0px 10px 0px 22px;
97 97 font-size:0.8em;
98 98 font-weight:normal;
99 99 text-decoration:none;
100 100 background-color:inherit;
101 101 color: #ffffff;
102 102 }
103 103
104 104 #navigation li.submenu {background:url(../images/arrow_down.png) 96% 80% no-repeat;}
105 105 #navigation li.submenu a {padding:0px 16px 0px 22px;}
106 106 * html #navigation a {width:1%;}
107 107
108 108 #navigation .selected,#navigation a:hover{
109 109 color:#ffffff;
110 110 text-decoration:none;
111 111 background-color: #80b0da;
112 112 }
113 113
114 114 /**************** Icons *******************/
115 115 .icon {
116 116 background-position: 0% 40%;
117 117 background-repeat: no-repeat;
118 118 padding-left: 20px;
119 119 padding-top: 2px;
120 120 padding-bottom: 3px;
121 121 vertical-align: middle;
122 122 }
123 123
124 124 #navigation .icon {
125 125 background-position: 4px 50%;
126 126 }
127 127
128 128 .icon22 {
129 129 background-position: 0% 40%;
130 130 background-repeat: no-repeat;
131 131 padding-left: 26px;
132 132 line-height: 22px;
133 133 vertical-align: middle;
134 134 }
135 135
136 136 .icon-add { background-image: url(../images/add.png); }
137 137 .icon-edit { background-image: url(../images/edit.png); }
138 138 .icon-del { background-image: url(../images/delete.png); }
139 139 .icon-move { background-image: url(../images/move.png); }
140 140 .icon-save { background-image: url(../images/save.png); }
141 141 .icon-cancel { background-image: url(../images/cancel.png); }
142 142 .icon-pdf { background-image: url(../images/pdf.png); }
143 143 .icon-csv { background-image: url(../images/csv.png); }
144 144 .icon-html { background-image: url(../images/html.png); }
145 145 .icon-image { background-image: url(../images/image.png); }
146 146 .icon-txt { background-image: url(../images/txt.png); }
147 147 .icon-file { background-image: url(../images/file.png); }
148 148 .icon-folder { background-image: url(../images/folder.png); }
149 149 .icon-package { background-image: url(../images/package.png); }
150 150 .icon-home { background-image: url(../images/home.png); }
151 151 .icon-user { background-image: url(../images/user.png); }
152 152 .icon-mypage { background-image: url(../images/user_page.png); }
153 153 .icon-admin { background-image: url(../images/admin.png); }
154 154 .icon-projects { background-image: url(../images/projects.png); }
155 155 .icon-logout { background-image: url(../images/logout.png); }
156 156 .icon-help { background-image: url(../images/help.png); }
157 157 .icon-attachment { background-image: url(../images/attachment.png); }
158 158 .icon-index { background-image: url(../images/index.png); }
159 159 .icon-history { background-image: url(../images/history.png); }
160 160 .icon-feed { background-image: url(../images/feed.png); }
161 161 .icon-time { background-image: url(../images/time.png); }
162 162 .icon-stats { background-image: url(../images/stats.png); }
163 163 .icon-warning { background-image: url(../images/warning.png); }
164 164 .icon-fav { background-image: url(../images/fav.png); }
165 165 .icon-fav-off { background-image: url(../images/fav_off.png); }
166 166 .icon-reload { background-image: url(../images/reload.png); }
167 167 .icon-lock { background-image: url(../images/locked.png); }
168 168 .icon-unlock { background-image: url(../images/unlock.png); }
169 169
170 170 .icon22-projects { background-image: url(../images/22x22/projects.png); }
171 171 .icon22-users { background-image: url(../images/22x22/users.png); }
172 172 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
173 173 .icon22-role { background-image: url(../images/22x22/role.png); }
174 174 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
175 175 .icon22-options { background-image: url(../images/22x22/options.png); }
176 176 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
177 177 .icon22-authent { background-image: url(../images/22x22/authent.png); }
178 178 .icon22-info { background-image: url(../images/22x22/info.png); }
179 179 .icon22-comment { background-image: url(../images/22x22/comment.png); }
180 180 .icon22-package { background-image: url(../images/22x22/package.png); }
181 181 .icon22-settings { background-image: url(../images/22x22/settings.png); }
182 182
183 183 /**************** Content styles ****************/
184 184
185 185 html>body #content {
186 186 height: auto;
187 187 min-height: 500px;
188 188 }
189 189
190 190 #content{
191 191 width: auto;
192 192 height:500px;
193 193 font-size:0.9em;
194 194 padding:20px 10px 10px 20px;
195 195 margin-left: 120px;
196 196 border-left: 1px dashed #c0c0c0;
197 197
198 198 }
199 199
200 200 #content h2, #content div.wiki h1 {
201 201 display:block;
202 202 margin:0 0 16px 0;
203 203 font-size:1.7em;
204 204 font-weight:normal;
205 205 letter-spacing:-1px;
206 206 color:#606060;
207 207 background-color:inherit;
208 208 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
209 209 }
210 210
211 211 #content h2 a{font-weight:normal;}
212 212 #content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;}
213 213 #content h4{font-size: 1em; margin-bottom: 12px; margin-top: 20px; font-weight: normal; border-bottom: dotted 1px #c0c0c0;}
214 214 #content a:hover,#subcontent a:hover{text-decoration:underline;}
215 215 #content ul,#content ol{margin:0 5px 16px 35px;}
216 216 #content dl{margin:0 5px 10px 25px;}
217 217 #content dt{font-weight:bold; margin-bottom:5px;}
218 218 #content dd{margin:0 0 10px 15px;}
219 219
220 220 #content .tabs{height: 2.6em;}
221 221 #content .tabs ul{margin:0;}
222 222 #content .tabs ul li{
223 223 float:left;
224 224 list-style-type:none;
225 225 white-space:nowrap;
226 226 margin-right:8px;
227 227 background:#fff;
228 228 }
229 229 #content .tabs ul li a{
230 230 display:block;
231 231 font-size: 0.9em;
232 232 text-decoration:none;
233 233 line-height:1em;
234 234 padding:4px;
235 235 border: 1px solid #c0c0c0;
236 236 }
237 237
238 238 #content .tabs ul li a.selected, #content .tabs ul li a:hover{
239 239 background-color: #80b0da;
240 240 border: 1px solid #80b0da;
241 241 color: #fff;
242 242 text-decoration:none;
243 243 }
244 244
245 245 /***********************************************/
246 246
247 247 form {display: inline;}
248 248 blockquote {padding-left: 6px; border-left: 2px solid #ccc;}
249 249 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
250 250
251 251 input.button-small {font-size: 0.8em;}
252 252 textarea.wiki-edit { width: 99.5%; }
253 253 .select-small {font-size: 0.8em;}
254 254 label {font-weight: bold; font-size: 1em; color: #505050;}
255 255 fieldset {border:1px solid #c0c0c0; padding: 6px;}
256 256 legend {color: #505050;}
257 257 .required {color: #bb0000;}
258 258 .odd {background-color:#f6f7f8;}
259 259 .even {background-color: #fff;}
260 260 hr { border:0; border-top: dotted 1px #fff; border-bottom: dotted 1px #c0c0c0; }
261 261 table p {margin:0; padding:0;}
262 262
263 263 .highlight { background-color: #FCFD8D;}
264 264
265 265 div.square {
266 266 border: 1px solid #999;
267 267 float: left;
268 268 margin: .4em .5em 0 0;
269 269 overflow: hidden;
270 270 width: .6em; height: .6em;
271 271 }
272 272
273 273 ul.documents {
274 274 list-style-type: none;
275 275 padding: 0;
276 276 margin: 0;
277 277 }
278 278
279 279 ul.documents li {
280 280 background-image: url(../images/32x32/file.png);
281 281 background-repeat: no-repeat;
282 282 background-position: 0 1px;
283 283 padding-left: 36px;
284 284 margin-bottom: 10px;
285 285 margin-left: -37px;
286 286 }
287 287
288 288 /********** Table used to display lists of things ***********/
289 289
290 290 table.list {
291 291 width:100%;
292 292 border-collapse: collapse;
293 293 border: 1px dotted #d0d0d0;
294 294 margin-bottom: 6px;
295 295 }
296 296
297 297 table.with-cells td {
298 298 border: 1px solid #d7d7d7;
299 299 }
300 300
301 301 table.list td {
302 302 padding:2px;
303 303 }
304 304
305 305 table.list thead th {
306 306 text-align: center;
307 307 background: #eee;
308 308 border: 1px solid #d7d7d7;
309 309 color: #777;
310 310 }
311 311
312 312 table.list tbody th {
313 313 font-weight: bold;
314 314 background: #eed;
315 315 border: 1px solid #d7d7d7;
316 316 color: #777;
317 317 }
318 318
319 319 /*========== Drop down menu ==============*/
320 320 div.menu {
321 321 background-color: #FFFFFF;
322 322 border-style: solid;
323 323 border-width: 1px;
324 324 border-color: #7F9DB9;
325 325 position: absolute;
326 326 top: 0px;
327 327 left: 0px;
328 328 padding: 0;
329 329 visibility: hidden;
330 330 z-index: 101;
331 331 }
332 332
333 333 div.menu a.menuItem {
334 334 font-size: 10px;
335 335 font-weight: normal;
336 336 line-height: 2em;
337 337 color: #000000;
338 338 background-color: #FFFFFF;
339 339 cursor: default;
340 340 display: block;
341 341 padding: 0 1em;
342 342 margin: 0;
343 343 border: 0;
344 344 text-decoration: none;
345 345 white-space: nowrap;
346 346 }
347 347
348 348 div.menu a.menuItem:hover, div.menu a.menuItemHighlight {
349 349 background-color: #80b0da;
350 350 color: #ffffff;
351 351 }
352 352
353 353 div.menu a.menuItem span.menuItemText {}
354 354
355 355 div.menu a.menuItem span.menuItemArrow {
356 356 margin-right: -.75em;
357 357 }
358 358
359 359 /**************** Sidebar styles ****************/
360 360
361 361 #subcontent{
362 362 position: absolute;
363 363 left: 0px;
364 364 width:95px;
365 365 padding:20px 20px 10px 5px;
366 366 overflow: hidden;
367 367 }
368 368
369 369 #subcontent h2{
370 370 display:block;
371 371 margin:0 0 5px 0;
372 372 font-size:1.0em;
373 373 font-weight:bold;
374 374 text-align:left;
375 375 color:#606060;
376 376 background-color:inherit;
377 377 font-family: Trebuchet MS,Georgia,"Times New Roman",serif;
378 378 }
379 379
380 380 #subcontent p{margin:0 0 16px 0; font-size:0.9em;}
381 381
382 382 /**************** Menublock styles ****************/
383 383
384 384 .menublock{margin:0 0 20px 8px; font-size:0.8em;}
385 385 .menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;}
386 386 .menublock li a{font-weight:bold; text-decoration:none;}
387 387 .menublock li a:hover{text-decoration:none;}
388 388 .menublock li ul{margin:0; font-size:1em; font-weight:normal;}
389 389 .menublock li ul li{margin-bottom:0;}
390 390 .menublock li ul a{font-weight:normal;}
391 391
392 392 /**************** Footer styles ****************/
393 393
394 394 #footer{
395 395 clear:both;
396 396 padding:5px 0;
397 397 margin:0;
398 398 font-size:0.9em;
399 399 color:#f0f0f0;
400 400 background:#467aa7;
401 401 }
402 402
403 403 #footer p{padding:0; margin:0; text-align:center;}
404 404 #footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;}
405 405 #footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;}
406 406
407 407 /**************** Misc classes and styles ****************/
408 408
409 409 .splitcontentleft{float:left; width:49%;}
410 410 .splitcontentright{float:right; width:49%;}
411 411 .clear{clear:both;}
412 412 .small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;}
413 413 .hide{display:none;}
414 414 .textcenter{text-align:center;}
415 415 .textright{text-align:right;}
416 416 .important{color:#f02025; background-color:inherit; font-weight:bold;}
417 417
418 418 .box{
419 419 margin:0 0 20px 0;
420 420 padding:10px;
421 421 border:1px solid #c0c0c0;
422 422 background-color:#fafbfc;
423 423 color:#505050;
424 424 line-height:1.5em;
425 425 }
426 426
427 427 a.close-icon {
428 428 display:block;
429 429 margin-top:3px;
430 430 overflow:hidden;
431 431 width:12px;
432 432 height:12px;
433 433 background-repeat: no-repeat;
434 434 cursor:pointer;
435 435 background-image:url('../images/close.png');
436 436 }
437 437
438 438 a.close-icon:hover {
439 439 background-image:url('../images/close_hl.png');
440 440 }
441 441
442 442 .rightbox{
443 443 background: #fafbfc;
444 444 border: 1px solid #c0c0c0;
445 445 float: right;
446 446 padding: 8px;
447 447 position: relative;
448 448 margin: 0 5px 5px;
449 449 }
450 450
451 451 div.attachments {padding-left: 6px; border-left: 2px solid #ccc; margin-bottom: 8px;}
452 452 div.attachments p {margin-bottom:2px;}
453 453
454 454 .overlay{
455 455 position: absolute;
456 456 margin-left:0;
457 457 z-index: 50;
458 458 }
459 459
460 460 .layout-active {
461 461 background: #ECF3E1;
462 462 }
463 463
464 464 .block-receiver {
465 465 border:1px dashed #c0c0c0;
466 466 margin-bottom: 20px;
467 467 padding: 15px 0 15px 0;
468 468 }
469 469
470 470 .mypage-box {
471 471 margin:0 0 20px 0;
472 472 color:#505050;
473 473 line-height:1.5em;
474 474 }
475 475
476 476 .handle {
477 477 cursor: move;
478 478 }
479 479
480 480 .login {
481 481 width: 50%;
482 482 text-align: left;
483 483 }
484 484
485 485 img.calendar-trigger {
486 486 cursor: pointer;
487 487 vertical-align: middle;
488 488 margin-left: 4px;
489 489 }
490 490
491 491 #history p {
492 492 margin-left: 34px;
493 493 }
494 494
495 495 .progress {
496 496 border: 1px solid #D7D7D7;
497 497 border-collapse: collapse;
498 498 border-spacing: 0pt;
499 499 empty-cells: show;
500 500 padding: 3px;
501 501 width: 40em;
502 502 text-align: center;
503 503 }
504 504
505 505 .progress td { height: 1em; }
506 506 .progress .closed { background: #BAE0BA none repeat scroll 0%; }
507 507 .progress .open { background: #FFF none repeat scroll 0%; }
508 508
509 509 /***** Contextual links div *****/
510 510 .contextual {
511 511 float: right;
512 512 font-size: 0.8em;
513 513 line-height: 16px;
514 514 padding: 2px;
515 515 }
516 516
517 517 .contextual select, .contextual input {
518 518 font-size: 1em;
519 519 }
520 520
521 521 /***** Gantt chart *****/
522 522 .gantt_hdr {
523 523 position:absolute;
524 524 top:0;
525 525 height:16px;
526 526 border-top: 1px solid #c0c0c0;
527 527 border-bottom: 1px solid #c0c0c0;
528 528 border-right: 1px solid #c0c0c0;
529 529 text-align: center;
530 530 overflow: hidden;
531 531 }
532 532
533 533 .task {
534 534 position: absolute;
535 535 height:8px;
536 536 font-size:0.8em;
537 537 color:#888;
538 538 padding:0;
539 539 margin:0;
540 540 line-height:0.8em;
541 541 }
542 542
543 543 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
544 544 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
545 545 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
546 546 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
547 547
548 548 /***** Tooltips ******/
549 549 .tooltip{position:relative;z-index:24;}
550 550 .tooltip:hover{z-index:25;color:#000;}
551 551 .tooltip span.tip{display: none; text-align:left;}
552 552
553 553 div.tooltip:hover span.tip{
554 554 display:block;
555 555 position:absolute;
556 556 top:12px; left:24px; width:270px;
557 557 border:1px solid #555;
558 558 background-color:#fff;
559 559 padding: 4px;
560 560 font-size: 0.8em;
561 561 color:#505050;
562 562 }
563 563
564 564 /***** CSS FORM ******/
565 565 .tabular p{
566 566 margin: 0;
567 567 padding: 5px 0 8px 0;
568 568 padding-left: 180px; /*width of left column containing the label elements*/
569 569 height: 1%;
570 570 clear:both;
571 571 }
572 572
573 573 .tabular label{
574 574 font-weight: bold;
575 575 float: left;
576 576 margin-left: -180px; /*width of left column*/
577 577 margin-bottom: 10px;
578 578 width: 175px; /*width of labels. Should be smaller than left column to create some right
579 579 margin*/
580 580 }
581 581
582 582 .error {
583 583 color: #cc0000;
584 584 }
585 585
586 586 #settings .tabular p{ padding-left: 300px; }
587 587 #settings .tabular label{ margin-left: -300px; width: 295px; }
588 588
589 589 /*.threepxfix class below:
590 590 Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents.
591 591 to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html
592 592 */
593 593
594 594 * html .threepxfix{
595 595 margin-left: 3px;
596 596 }
597 597
598 598 /***** Wiki sections ****/
599 599 #content div.wiki { font-size: 110%}
600 600
601 601 #content div.wiki h2, div.wiki h3 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; color:#606060; }
602 602 #content div.wiki h2 { font-size: 1.4em;}
603 603 #content div.wiki h3 { font-size: 1.2em;}
604 604
605 605 div.wiki table {
606 606 border: 1px solid #505050;
607 607 border-collapse: collapse;
608 608 }
609 609
610 610 div.wiki table, div.wiki td, div.wiki th {
611 611 border: 1px solid #bbb;
612 612 padding: 4px;
613 613 }
614 614
615 615 div.wiki a {
616 616 background-position: 0% 60%;
617 617 background-repeat: no-repeat;
618 618 padding-left: 12px;
619 619 background-image: url(../images/external.png);
620 620 }
621 621
622 div.wiki a.wiki-page, div.wiki a.issue, div.wiki a.changeset, div.wiki a.email {
622 div.wiki a.wiki-page, div.wiki a.issue, div.wiki a.changeset, div.wiki a.email, div.wiki div.toc a {
623 623 padding-left: 0;
624 624 background-image: none;
625 625 }
626 626
627 627 div.wiki a.new {
628 628 color: #b73535;
629 629 }
630 630
631 631 div.wiki code {
632 632 font-size: 1.2em;
633 633 }
634 634
635 635 div.wiki img {
636 636 margin: 6px;
637 637 }
638 638
639 639 div.wiki pre {
640 640 margin: 1em 1em 1em 1.6em;
641 641 padding: 2px;
642 642 background-color: #fafafa;
643 643 border: 1px solid #dadada;
644 644 }
645 645
646 div.wiki div.toc {
647 background-color: #fdfed0;
648 border: 1px solid #dadada;
649 padding: 4px;
650 line-height: 1.1em;
651 margin-bottom: 12px;
652 float: left;
653 margin-right: 12px;
654 }
655
656 div.wiki div.toc.right {
657 float: right;
658 margin-left: 12px;
659 margin-right: 0;
660 }
661
662 div.wiki div.toc a {
663 display: block;
664 font-size: 0.9em;
665 font-weight: normal;
666 color: #606060;
667 }
668
669 div.wiki div.toc a.heading2 { margin-left: 6px; }
670 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
671
672 div.wiki
673
646 674 .diff_out{
647 675 background: #fcc;
648 676 }
649 677
650 678 .diff_in{
651 679 background: #cfc;
652 680 }
653 681
654 682 #preview .preview { background: #fafbfc url(../images/draft.png); }
655 683
656 684 #ajax-indicator {
657 685 position: absolute; /* fixed not supported by IE */
658 686 background-color:#eee;
659 687 border: 1px solid #bbb;
660 688 top:35%;
661 689 left:40%;
662 690 width:20%;
663 691 font-weight:bold;
664 692 text-align:center;
665 693 padding:0.6em;
666 694 z-index:100;
667 695 filter:alpha(opacity=50);
668 696 -moz-opacity:0.5;
669 697 opacity: 0.5;
670 698 -khtml-opacity: 0.5;
671 699 }
672 700
673 701 html>body #ajax-indicator { position: fixed; }
674 702
675 703 #ajax-indicator span {
676 704 background-position: 0% 40%;
677 705 background-repeat: no-repeat;
678 706 background-image: url(../images/loading.gif);
679 707 padding-left: 26px;
680 708 vertical-align: bottom;
681 709 }
682 710
683 711 /***** Flash & error messages ****/
684 712 #flash div, #errorExplanation {
685 713 padding: 4px 4px 4px 30px;
686 714 margin-bottom: 16px;
687 715 font-size: 1.1em;
688 716 border: 2px solid;
689 717 }
690 718
691 719 #flash div.error, #errorExplanation {
692 720 background: url(../images/false.png) 8px 5px no-repeat;
693 721 background-color: #ffe3e3;
694 722 border-color: #dd0000;
695 723 color: #550000;
696 724 }
697 725
698 726 #flash div.notice {
699 727 background: url(../images/true.png) 8px 5px no-repeat;
700 728 background-color: #dfffdf;
701 729 border-color: #9fcf9f;
702 730 color: #005f00;
703 731 }
704 732
705 733 #errorExplanation ul { margin-bottom: 0px; }
706 734 #errorExplanation ul li { list-style: none; margin-left: -16px;}
General Comments 0
You need to be logged in to leave comments. Login now