##// END OF EJS Templates
TOC rendered as an unordered list....
Jean-Philippe Lang -
r1676:5564dfbbd5a3
parent child
Show More
@@ -1,14 +1,18
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3 <head>
3 <head>
4 <title><%=h @page.pretty_title %></title>
4 <title><%=h @page.pretty_title %></title>
5 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6 <style>
6 <style>
7 body { font:80% Verdana,Tahoma,Arial,sans-serif; }
7 body { font:80% Verdana,Tahoma,Arial,sans-serif; }
8 h1, h2, h3, h4 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; }
8 h1, h2, h3, h4 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; }
9 ul.toc { padding: 4px; margin-left: 0; }
10 ul.toc li { list-style-type:none; }
11 ul.toc li.heading2 { margin-left: 1em; }
12 ul.toc li.heading3 { margin-left: 2em; }
9 </style>
13 </style>
10 </head>
14 </head>
11 <body>
15 <body>
12 <%= textilizable @content, :text, :wiki_links => :local %>
16 <%= textilizable @content, :text, :wiki_links => :local %>
13 </body>
17 </body>
14 </html>
18 </html>
@@ -1,176 +1,176
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require 'redcloth'
18 require 'redcloth'
19 require 'coderay'
19 require 'coderay'
20
20
21 module Redmine
21 module Redmine
22 module WikiFormatting
22 module WikiFormatting
23
23
24 private
24 private
25
25
26 class TextileFormatter < RedCloth
26 class TextileFormatter < RedCloth
27
27
28 # auto_link rule after textile rules so that it doesn't break !image_url! tags
28 # auto_link rule after textile rules so that it doesn't break !image_url! tags
29 RULES = [:textile, :block_markdown_rule, :inline_auto_link, :inline_auto_mailto, :inline_toc, :inline_macros]
29 RULES = [:textile, :block_markdown_rule, :inline_auto_link, :inline_auto_mailto, :inline_toc, :inline_macros]
30
30
31 def initialize(*args)
31 def initialize(*args)
32 super
32 super
33 self.hard_breaks=true
33 self.hard_breaks=true
34 self.no_span_caps=true
34 self.no_span_caps=true
35 end
35 end
36
36
37 def to_html(*rules, &block)
37 def to_html(*rules, &block)
38 @toc = []
38 @toc = []
39 @macros_runner = block
39 @macros_runner = block
40 super(*RULES).to_s
40 super(*RULES).to_s
41 end
41 end
42
42
43 private
43 private
44
44
45 # Patch for RedCloth. Fixed in RedCloth r128 but _why hasn't released it yet.
45 # Patch for RedCloth. Fixed in RedCloth r128 but _why hasn't released it yet.
46 # <a href="http://code.whytheluckystiff.net/redcloth/changeset/128">http://code.whytheluckystiff.net/redcloth/changeset/128</a>
46 # <a href="http://code.whytheluckystiff.net/redcloth/changeset/128">http://code.whytheluckystiff.net/redcloth/changeset/128</a>
47 def hard_break( text )
47 def hard_break( text )
48 text.gsub!( /(.)\n(?!\n|\Z|>| *(>? *[#*=]+(\s|$)|[{|]))/, "\\1<br />\n" ) if hard_breaks
48 text.gsub!( /(.)\n(?!\n|\Z|>| *(>? *[#*=]+(\s|$)|[{|]))/, "\\1<br />\n" ) if hard_breaks
49 end
49 end
50
50
51 # Patch to add code highlighting support to RedCloth
51 # Patch to add code highlighting support to RedCloth
52 def smooth_offtags( text )
52 def smooth_offtags( text )
53 unless @pre_list.empty?
53 unless @pre_list.empty?
54 ## replace <pre> content
54 ## replace <pre> content
55 text.gsub!(/<redpre#(\d+)>/) do
55 text.gsub!(/<redpre#(\d+)>/) do
56 content = @pre_list[$1.to_i]
56 content = @pre_list[$1.to_i]
57 if content.match(/<code\s+class="(\w+)">\s?(.+)/m)
57 if content.match(/<code\s+class="(\w+)">\s?(.+)/m)
58 content = "<code class=\"#{$1} CodeRay\">" +
58 content = "<code class=\"#{$1} CodeRay\">" +
59 CodeRay.scan($2, $1.downcase).html(:escape => false, :line_numbers => :inline)
59 CodeRay.scan($2, $1.downcase).html(:escape => false, :line_numbers => :inline)
60 end
60 end
61 content
61 content
62 end
62 end
63 end
63 end
64 end
64 end
65
65
66 # Patch to add 'table of content' support to RedCloth
66 # Patch to add 'table of content' support to RedCloth
67 def textile_p_withtoc(tag, atts, cite, content)
67 def textile_p_withtoc(tag, atts, cite, content)
68 if tag =~ /^h(\d)$/
68 if tag =~ /^h(\d)$/
69 @toc << [$1.to_i, content]
69 @toc << [$1.to_i, content]
70 end
70 end
71 content = "<a name=\"#{@toc.length}\" class=\"wiki-page\"></a>" + content
71 content = "<a name=\"#{@toc.length}\" class=\"wiki-page\"></a>" + content
72 textile_p(tag, atts, cite, content)
72 textile_p(tag, atts, cite, content)
73 end
73 end
74
74
75 alias :textile_h1 :textile_p_withtoc
75 alias :textile_h1 :textile_p_withtoc
76 alias :textile_h2 :textile_p_withtoc
76 alias :textile_h2 :textile_p_withtoc
77 alias :textile_h3 :textile_p_withtoc
77 alias :textile_h3 :textile_p_withtoc
78
78
79 def inline_toc(text)
79 def inline_toc(text)
80 text.gsub!(/<p>\{\{([<>]?)toc\}\}<\/p>/i) do
80 text.gsub!(/<p>\{\{([<>]?)toc\}\}<\/p>/i) do
81 div_class = 'toc'
81 div_class = 'toc'
82 div_class << ' right' if $1 == '>'
82 div_class << ' right' if $1 == '>'
83 div_class << ' left' if $1 == '<'
83 div_class << ' left' if $1 == '<'
84 out = "<div class=\"#{div_class}\">"
84 out = "<ul class=\"#{div_class}\">"
85 @toc.each_with_index do |heading, index|
85 @toc.each_with_index do |heading, index|
86 # remove wiki links from the item
86 # remove wiki links from the item
87 toc_item = heading.last.gsub(/(\[\[|\]\])/, '')
87 toc_item = heading.last.gsub(/(\[\[|\]\])/, '')
88 # remove styles
88 # remove styles
89 # eg. %{color:red}Triggers% => Triggers
89 # eg. %{color:red}Triggers% => Triggers
90 toc_item.gsub! %r[%\{[^\}]*\}([^%]+)%], '\\1'
90 toc_item.gsub! %r[%\{[^\}]*\}([^%]+)%], '\\1'
91 out << "<a href=\"##{index+1}\" class=\"heading#{heading.first}\">#{toc_item}</a>"
91 out << "<li class=\"heading#{heading.first}\"><a href=\"##{index+1}\">#{toc_item}</a></li>\n"
92 end
92 end
93 out << '</div>'
93 out << '</ul>'
94 out
94 out
95 end
95 end
96 end
96 end
97
97
98 MACROS_RE = /
98 MACROS_RE = /
99 (!)? # escaping
99 (!)? # escaping
100 (
100 (
101 \{\{ # opening tag
101 \{\{ # opening tag
102 ([\w]+) # macro name
102 ([\w]+) # macro name
103 (\(([^\}]*)\))? # optional arguments
103 (\(([^\}]*)\))? # optional arguments
104 \}\} # closing tag
104 \}\} # closing tag
105 )
105 )
106 /x unless const_defined?(:MACROS_RE)
106 /x unless const_defined?(:MACROS_RE)
107
107
108 def inline_macros(text)
108 def inline_macros(text)
109 text.gsub!(MACROS_RE) do
109 text.gsub!(MACROS_RE) do
110 esc, all, macro = $1, $2, $3.downcase
110 esc, all, macro = $1, $2, $3.downcase
111 args = ($5 || '').split(',').each(&:strip)
111 args = ($5 || '').split(',').each(&:strip)
112 if esc.nil?
112 if esc.nil?
113 begin
113 begin
114 @macros_runner.call(macro, args)
114 @macros_runner.call(macro, args)
115 rescue => e
115 rescue => e
116 "<div class=\"flash error\">Error executing the <strong>#{macro}</strong> macro (#{e})</div>"
116 "<div class=\"flash error\">Error executing the <strong>#{macro}</strong> macro (#{e})</div>"
117 end || all
117 end || all
118 else
118 else
119 all
119 all
120 end
120 end
121 end
121 end
122 end
122 end
123
123
124 AUTO_LINK_RE = %r{
124 AUTO_LINK_RE = %r{
125 ( # leading text
125 ( # leading text
126 <\w+.*?>| # leading HTML tag, or
126 <\w+.*?>| # leading HTML tag, or
127 [^=<>!:'"/]| # leading punctuation, or
127 [^=<>!:'"/]| # leading punctuation, or
128 ^ # beginning of line
128 ^ # beginning of line
129 )
129 )
130 (
130 (
131 (?:https?://)| # protocol spec, or
131 (?:https?://)| # protocol spec, or
132 (?:ftp://)|
132 (?:ftp://)|
133 (?:www\.) # www.*
133 (?:www\.) # www.*
134 )
134 )
135 (
135 (
136 (\S+?) # url
136 (\S+?) # url
137 (\/)? # slash
137 (\/)? # slash
138 )
138 )
139 ([^\w\=\/;]*?) # post
139 ([^\w\=\/;]*?) # post
140 (?=<|\s|$)
140 (?=<|\s|$)
141 }x unless const_defined?(:AUTO_LINK_RE)
141 }x unless const_defined?(:AUTO_LINK_RE)
142
142
143 # Turns all urls into clickable links (code from Rails).
143 # Turns all urls into clickable links (code from Rails).
144 def inline_auto_link(text)
144 def inline_auto_link(text)
145 text.gsub!(AUTO_LINK_RE) do
145 text.gsub!(AUTO_LINK_RE) do
146 all, leading, proto, url, post = $&, $1, $2, $3, $6
146 all, leading, proto, url, post = $&, $1, $2, $3, $6
147 if leading =~ /<a\s/i || leading =~ /![<>=]?/
147 if leading =~ /<a\s/i || leading =~ /![<>=]?/
148 # don't replace URL's that are already linked
148 # don't replace URL's that are already linked
149 # and URL's prefixed with ! !> !< != (textile images)
149 # and URL's prefixed with ! !> !< != (textile images)
150 all
150 all
151 else
151 else
152 %(#{leading}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{post})
152 %(#{leading}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{post})
153 end
153 end
154 end
154 end
155 end
155 end
156
156
157 # Turns all email addresses into clickable links (code from Rails).
157 # Turns all email addresses into clickable links (code from Rails).
158 def inline_auto_mailto(text)
158 def inline_auto_mailto(text)
159 text.gsub!(/([\w\.!#\$%\-+.]+@[A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)+)/) do
159 text.gsub!(/([\w\.!#\$%\-+.]+@[A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)+)/) do
160 mail = $1
160 mail = $1
161 if text.match(/<a\b[^>]*>(.*)(#{Regexp.escape(mail)})(.*)<\/a>/)
161 if text.match(/<a\b[^>]*>(.*)(#{Regexp.escape(mail)})(.*)<\/a>/)
162 mail
162 mail
163 else
163 else
164 %{<a href="mailto:#{mail}" class="email">#{mail}</a>}
164 %{<a href="mailto:#{mail}" class="email">#{mail}</a>}
165 end
165 end
166 end
166 end
167 end
167 end
168 end
168 end
169
169
170 public
170 public
171
171
172 def self.to_html(text, options = {}, &block)
172 def self.to_html(text, options = {}, &block)
173 TextileFormatter.new(text).to_html(&block)
173 TextileFormatter.new(text).to_html(&block)
174 end
174 end
175 end
175 end
176 end
176 end
@@ -1,618 +1,618
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2
2
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 h1 {margin:0; padding:0; font-size: 24px;}
4 h1 {margin:0; padding:0; font-size: 24px;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8
8
9 /***** Layout *****/
9 /***** Layout *****/
10 #wrapper {background: white;}
10 #wrapper {background: white;}
11
11
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
13 #top-menu ul {margin: 0; padding: 0;}
13 #top-menu ul {margin: 0; padding: 0;}
14 #top-menu li {
14 #top-menu li {
15 float:left;
15 float:left;
16 list-style-type:none;
16 list-style-type:none;
17 margin: 0px 0px 0px 0px;
17 margin: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
19 white-space:nowrap;
19 white-space:nowrap;
20 }
20 }
21 #top-menu a {color: #fff; padding-right: 8px; font-weight: bold;}
21 #top-menu a {color: #fff; padding-right: 8px; font-weight: bold;}
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
23
23
24 #account {float:right;}
24 #account {float:right;}
25
25
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
27 #header a {color:#f8f8f8;}
27 #header a {color:#f8f8f8;}
28 #quick-search {float:right;}
28 #quick-search {float:right;}
29
29
30 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
30 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
31 #main-menu ul {margin: 0; padding: 0;}
31 #main-menu ul {margin: 0; padding: 0;}
32 #main-menu li {
32 #main-menu li {
33 float:left;
33 float:left;
34 list-style-type:none;
34 list-style-type:none;
35 margin: 0px 2px 0px 0px;
35 margin: 0px 2px 0px 0px;
36 padding: 0px 0px 0px 0px;
36 padding: 0px 0px 0px 0px;
37 white-space:nowrap;
37 white-space:nowrap;
38 }
38 }
39 #main-menu li a {
39 #main-menu li a {
40 display: block;
40 display: block;
41 color: #fff;
41 color: #fff;
42 text-decoration: none;
42 text-decoration: none;
43 font-weight: bold;
43 font-weight: bold;
44 margin: 0;
44 margin: 0;
45 padding: 4px 10px 4px 10px;
45 padding: 4px 10px 4px 10px;
46 }
46 }
47 #main-menu li a:hover {background:#759FCF; color:#fff;}
47 #main-menu li a:hover {background:#759FCF; color:#fff;}
48 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
48 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
49
49
50 #main {background-color:#EEEEEE;}
50 #main {background-color:#EEEEEE;}
51
51
52 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
52 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
53 * html #sidebar{ width: 17%; }
53 * html #sidebar{ width: 17%; }
54 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
54 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
55 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
55 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
56 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
56 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
57
57
58 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; height:600px; min-height: 600px;}
58 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; height:600px; min-height: 600px;}
59 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
59 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
60 html>body #content { height: auto; min-height: 600px; overflow: auto; }
60 html>body #content { height: auto; min-height: 600px; overflow: auto; }
61
61
62 #main.nosidebar #sidebar{ display: none; }
62 #main.nosidebar #sidebar{ display: none; }
63 #main.nosidebar #content{ width: auto; border-right: 0; }
63 #main.nosidebar #content{ width: auto; border-right: 0; }
64
64
65 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
65 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
66
66
67 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
67 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
68 #login-form table td {padding: 6px;}
68 #login-form table td {padding: 6px;}
69 #login-form label {font-weight: bold;}
69 #login-form label {font-weight: bold;}
70
70
71 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
71 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
72
72
73 /***** Links *****/
73 /***** Links *****/
74 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
74 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
75 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
75 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
76 a img{ border: 0; }
76 a img{ border: 0; }
77
77
78 a.issue.closed { text-decoration: line-through; }
78 a.issue.closed { text-decoration: line-through; }
79
79
80 /***** Tables *****/
80 /***** Tables *****/
81 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
81 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
82 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
82 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
83 table.list td { vertical-align: top; }
83 table.list td { vertical-align: top; }
84 table.list td.id { width: 2%; text-align: center;}
84 table.list td.id { width: 2%; text-align: center;}
85 table.list td.checkbox { width: 15px; padding: 0px;}
85 table.list td.checkbox { width: 15px; padding: 0px;}
86
86
87 table.list.issues { margin-top: 10px; }
87 table.list.issues { margin-top: 10px; }
88 tr.issue { text-align: center; white-space: nowrap; }
88 tr.issue { text-align: center; white-space: nowrap; }
89 tr.issue td.subject, tr.issue td.category { white-space: normal; }
89 tr.issue td.subject, tr.issue td.category { white-space: normal; }
90 tr.issue td.subject { text-align: left; }
90 tr.issue td.subject { text-align: left; }
91 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
91 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
92
92
93 tr.entry { border: 1px solid #f8f8f8; }
93 tr.entry { border: 1px solid #f8f8f8; }
94 tr.entry td { white-space: nowrap; }
94 tr.entry td { white-space: nowrap; }
95 tr.entry td.filename { width: 30%; }
95 tr.entry td.filename { width: 30%; }
96 tr.entry td.size { text-align: right; font-size: 90%; }
96 tr.entry td.size { text-align: right; font-size: 90%; }
97 tr.entry td.revision, tr.entry td.author { text-align: center; }
97 tr.entry td.revision, tr.entry td.author { text-align: center; }
98 tr.entry td.age { text-align: right; }
98 tr.entry td.age { text-align: right; }
99
99
100 tr.entry span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
100 tr.entry span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
101 tr.entry.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
101 tr.entry.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
102 tr.entry.file td.filename a { margin-left: 16px; }
102 tr.entry.file td.filename a { margin-left: 16px; }
103
103
104 tr.changeset td.author { text-align: center; width: 15%; }
104 tr.changeset td.author { text-align: center; width: 15%; }
105 tr.changeset td.committed_on { text-align: center; width: 15%; }
105 tr.changeset td.committed_on { text-align: center; width: 15%; }
106
106
107 tr.message { height: 2.6em; }
107 tr.message { height: 2.6em; }
108 tr.message td.last_message { font-size: 80%; }
108 tr.message td.last_message { font-size: 80%; }
109 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
109 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
110 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
110 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
111
111
112 tr.user td { width:13%; }
112 tr.user td { width:13%; }
113 tr.user td.email { width:18%; }
113 tr.user td.email { width:18%; }
114 tr.user td { white-space: nowrap; }
114 tr.user td { white-space: nowrap; }
115 tr.user.locked, tr.user.registered { color: #aaa; }
115 tr.user.locked, tr.user.registered { color: #aaa; }
116 tr.user.locked a, tr.user.registered a { color: #aaa; }
116 tr.user.locked a, tr.user.registered a { color: #aaa; }
117
117
118 tr.time-entry { text-align: center; white-space: nowrap; }
118 tr.time-entry { text-align: center; white-space: nowrap; }
119 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
119 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
120 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
120 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
121 td.hours .hours-dec { font-size: 0.9em; }
121 td.hours .hours-dec { font-size: 0.9em; }
122
122
123 table.list tbody tr:hover { background-color:#ffffdd; }
123 table.list tbody tr:hover { background-color:#ffffdd; }
124 table td {padding:2px;}
124 table td {padding:2px;}
125 table p {margin:0;}
125 table p {margin:0;}
126 .odd {background-color:#f6f7f8;}
126 .odd {background-color:#f6f7f8;}
127 .even {background-color: #fff;}
127 .even {background-color: #fff;}
128
128
129 .highlight { background-color: #FCFD8D;}
129 .highlight { background-color: #FCFD8D;}
130 .highlight.token-1 { background-color: #faa;}
130 .highlight.token-1 { background-color: #faa;}
131 .highlight.token-2 { background-color: #afa;}
131 .highlight.token-2 { background-color: #afa;}
132 .highlight.token-3 { background-color: #aaf;}
132 .highlight.token-3 { background-color: #aaf;}
133
133
134 .box{
134 .box{
135 padding:6px;
135 padding:6px;
136 margin-bottom: 10px;
136 margin-bottom: 10px;
137 background-color:#f6f6f6;
137 background-color:#f6f6f6;
138 color:#505050;
138 color:#505050;
139 line-height:1.5em;
139 line-height:1.5em;
140 border: 1px solid #e4e4e4;
140 border: 1px solid #e4e4e4;
141 }
141 }
142
142
143 div.square {
143 div.square {
144 border: 1px solid #999;
144 border: 1px solid #999;
145 float: left;
145 float: left;
146 margin: .3em .4em 0 .4em;
146 margin: .3em .4em 0 .4em;
147 overflow: hidden;
147 overflow: hidden;
148 width: .6em; height: .6em;
148 width: .6em; height: .6em;
149 }
149 }
150 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
150 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
151 .contextual input {font-size:0.9em;}
151 .contextual input {font-size:0.9em;}
152
152
153 .splitcontentleft{float:left; width:49%;}
153 .splitcontentleft{float:left; width:49%;}
154 .splitcontentright{float:right; width:49%;}
154 .splitcontentright{float:right; width:49%;}
155 form {display: inline;}
155 form {display: inline;}
156 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
156 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
157 fieldset {border: 1px solid #e4e4e4; margin:0;}
157 fieldset {border: 1px solid #e4e4e4; margin:0;}
158 legend {color: #484848;}
158 legend {color: #484848;}
159 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
159 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
160 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
160 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
161 blockquote blockquote { margin-left: 0;}
161 blockquote blockquote { margin-left: 0;}
162 textarea.wiki-edit { width: 99%; }
162 textarea.wiki-edit { width: 99%; }
163 li p {margin-top: 0;}
163 li p {margin-top: 0;}
164 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
164 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
165 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
165 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
166 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
166 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
167
167
168 fieldset#filters { padding: 0.7em; }
168 fieldset#filters { padding: 0.7em; }
169 fieldset#filters p { margin: 1.2em 0 0.8em 2px; }
169 fieldset#filters p { margin: 1.2em 0 0.8em 2px; }
170 fieldset#filters .buttons { font-size: 0.9em; }
170 fieldset#filters .buttons { font-size: 0.9em; }
171 fieldset#filters table { border-collapse: collapse; }
171 fieldset#filters table { border-collapse: collapse; }
172 fieldset#filters table td { padding: 0; vertical-align: middle; }
172 fieldset#filters table td { padding: 0; vertical-align: middle; }
173 fieldset#filters tr.filter { height: 2em; }
173 fieldset#filters tr.filter { height: 2em; }
174 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
174 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
175
175
176 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
176 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
177 div#issue-changesets .changeset { padding: 4px;}
177 div#issue-changesets .changeset { padding: 4px;}
178 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
178 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
179 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
179 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
180
180
181 div#activity dl, #search-results { margin-left: 2em; }
181 div#activity dl, #search-results { margin-left: 2em; }
182 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
182 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
183 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
183 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
184 div#activity dt.me .time { border-bottom: 1px solid #999; }
184 div#activity dt.me .time { border-bottom: 1px solid #999; }
185 div#activity dt .time { color: #777; font-size: 80%; }
185 div#activity dt .time { color: #777; font-size: 80%; }
186 div#activity dd .description, #search-results dd .description { font-style: italic; }
186 div#activity dd .description, #search-results dd .description { font-style: italic; }
187 div#activity span.project:after, #search-results span.project:after { content: " -"; }
187 div#activity span.project:after, #search-results span.project:after { content: " -"; }
188 div#activity dd span.description, #search-results dd span.description { display:block; }
188 div#activity dd span.description, #search-results dd span.description { display:block; }
189
189
190 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
190 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
191 div#search-results-counts {float:right;}
191 div#search-results-counts {float:right;}
192 div#search-results-counts ul { margin-top: 0.5em; }
192 div#search-results-counts ul { margin-top: 0.5em; }
193 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
193 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
194
194
195 dt.issue { background-image: url(../images/ticket.png); }
195 dt.issue { background-image: url(../images/ticket.png); }
196 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
196 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
197 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
197 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
198 dt.issue-note { background-image: url(../images/ticket_note.png); }
198 dt.issue-note { background-image: url(../images/ticket_note.png); }
199 dt.changeset { background-image: url(../images/changeset.png); }
199 dt.changeset { background-image: url(../images/changeset.png); }
200 dt.news { background-image: url(../images/news.png); }
200 dt.news { background-image: url(../images/news.png); }
201 dt.message { background-image: url(../images/message.png); }
201 dt.message { background-image: url(../images/message.png); }
202 dt.reply { background-image: url(../images/comments.png); }
202 dt.reply { background-image: url(../images/comments.png); }
203 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
203 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
204 dt.attachment { background-image: url(../images/attachment.png); }
204 dt.attachment { background-image: url(../images/attachment.png); }
205 dt.document { background-image: url(../images/document.png); }
205 dt.document { background-image: url(../images/document.png); }
206 dt.project { background-image: url(../images/projects.png); }
206 dt.project { background-image: url(../images/projects.png); }
207
207
208 div#roadmap fieldset.related-issues { margin-bottom: 1em; }
208 div#roadmap fieldset.related-issues { margin-bottom: 1em; }
209 div#roadmap fieldset.related-issues ul { margin-top: 0.3em; margin-bottom: 0.3em; }
209 div#roadmap fieldset.related-issues ul { margin-top: 0.3em; margin-bottom: 0.3em; }
210 div#roadmap .wiki h1:first-child { display: none; }
210 div#roadmap .wiki h1:first-child { display: none; }
211 div#roadmap .wiki h1 { font-size: 120%; }
211 div#roadmap .wiki h1 { font-size: 120%; }
212 div#roadmap .wiki h2 { font-size: 110%; }
212 div#roadmap .wiki h2 { font-size: 110%; }
213
213
214 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
214 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
215 div#version-summary fieldset { margin-bottom: 1em; }
215 div#version-summary fieldset { margin-bottom: 1em; }
216 div#version-summary .total-hours { text-align: right; }
216 div#version-summary .total-hours { text-align: right; }
217
217
218 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
218 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
219 table#time-report tbody tr { font-style: italic; color: #777; }
219 table#time-report tbody tr { font-style: italic; color: #777; }
220 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
220 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
221 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
221 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
222 table#time-report .hours-dec { font-size: 0.9em; }
222 table#time-report .hours-dec { font-size: 0.9em; }
223
223
224 ul.properties {padding:0; font-size: 0.9em; color: #777;}
224 ul.properties {padding:0; font-size: 0.9em; color: #777;}
225 ul.properties li {list-style-type:none;}
225 ul.properties li {list-style-type:none;}
226 ul.properties li span {font-style:italic;}
226 ul.properties li span {font-style:italic;}
227
227
228 .total-hours { font-size: 110%; font-weight: bold; }
228 .total-hours { font-size: 110%; font-weight: bold; }
229 .total-hours span.hours-int { font-size: 120%; }
229 .total-hours span.hours-int { font-size: 120%; }
230
230
231 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
231 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
232 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
232 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
233
233
234 .pagination {font-size: 90%}
234 .pagination {font-size: 90%}
235 p.pagination {margin-top:8px;}
235 p.pagination {margin-top:8px;}
236
236
237 /***** Tabular forms ******/
237 /***** Tabular forms ******/
238 .tabular p{
238 .tabular p{
239 margin: 0;
239 margin: 0;
240 padding: 5px 0 8px 0;
240 padding: 5px 0 8px 0;
241 padding-left: 180px; /*width of left column containing the label elements*/
241 padding-left: 180px; /*width of left column containing the label elements*/
242 height: 1%;
242 height: 1%;
243 clear:left;
243 clear:left;
244 }
244 }
245
245
246 html>body .tabular p {overflow:hidden;}
246 html>body .tabular p {overflow:hidden;}
247
247
248 .tabular label{
248 .tabular label{
249 font-weight: bold;
249 font-weight: bold;
250 float: left;
250 float: left;
251 text-align: right;
251 text-align: right;
252 margin-left: -180px; /*width of left column*/
252 margin-left: -180px; /*width of left column*/
253 width: 175px; /*width of labels. Should be smaller than left column to create some right
253 width: 175px; /*width of labels. Should be smaller than left column to create some right
254 margin*/
254 margin*/
255 }
255 }
256
256
257 .tabular label.floating{
257 .tabular label.floating{
258 font-weight: normal;
258 font-weight: normal;
259 margin-left: 0px;
259 margin-left: 0px;
260 text-align: left;
260 text-align: left;
261 width: 200px;
261 width: 200px;
262 }
262 }
263
263
264 input#time_entry_comments { width: 90%;}
264 input#time_entry_comments { width: 90%;}
265
265
266 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
266 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
267
267
268 .tabular.settings p{ padding-left: 300px; }
268 .tabular.settings p{ padding-left: 300px; }
269 .tabular.settings label{ margin-left: -300px; width: 295px; }
269 .tabular.settings label{ margin-left: -300px; width: 295px; }
270
270
271 .required {color: #bb0000;}
271 .required {color: #bb0000;}
272 .summary {font-style: italic;}
272 .summary {font-style: italic;}
273
273
274 #attachments_fields input[type=text] {margin-left: 8px; }
274 #attachments_fields input[type=text] {margin-left: 8px; }
275
275
276 div.attachments p { margin:4px 0 2px 0; }
276 div.attachments p { margin:4px 0 2px 0; }
277 div.attachments img { vertical-align: middle; }
277 div.attachments img { vertical-align: middle; }
278 div.attachments span.author { font-size: 0.9em; color: #888; }
278 div.attachments span.author { font-size: 0.9em; color: #888; }
279
279
280 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
280 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
281 .other-formats span + span:before { content: "| "; }
281 .other-formats span + span:before { content: "| "; }
282
282
283 a.feed { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
283 a.feed { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
284
284
285 /***** Flash & error messages ****/
285 /***** Flash & error messages ****/
286 #errorExplanation, div.flash, .nodata, .warning {
286 #errorExplanation, div.flash, .nodata, .warning {
287 padding: 4px 4px 4px 30px;
287 padding: 4px 4px 4px 30px;
288 margin-bottom: 12px;
288 margin-bottom: 12px;
289 font-size: 1.1em;
289 font-size: 1.1em;
290 border: 2px solid;
290 border: 2px solid;
291 }
291 }
292
292
293 div.flash {margin-top: 8px;}
293 div.flash {margin-top: 8px;}
294
294
295 div.flash.error, #errorExplanation {
295 div.flash.error, #errorExplanation {
296 background: url(../images/false.png) 8px 5px no-repeat;
296 background: url(../images/false.png) 8px 5px no-repeat;
297 background-color: #ffe3e3;
297 background-color: #ffe3e3;
298 border-color: #dd0000;
298 border-color: #dd0000;
299 color: #550000;
299 color: #550000;
300 }
300 }
301
301
302 div.flash.notice {
302 div.flash.notice {
303 background: url(../images/true.png) 8px 5px no-repeat;
303 background: url(../images/true.png) 8px 5px no-repeat;
304 background-color: #dfffdf;
304 background-color: #dfffdf;
305 border-color: #9fcf9f;
305 border-color: #9fcf9f;
306 color: #005f00;
306 color: #005f00;
307 }
307 }
308
308
309 .nodata, .warning {
309 .nodata, .warning {
310 text-align: center;
310 text-align: center;
311 background-color: #FFEBC1;
311 background-color: #FFEBC1;
312 border-color: #FDBF3B;
312 border-color: #FDBF3B;
313 color: #A6750C;
313 color: #A6750C;
314 }
314 }
315
315
316 #errorExplanation ul { font-size: 0.9em;}
316 #errorExplanation ul { font-size: 0.9em;}
317
317
318 /***** Ajax indicator ******/
318 /***** Ajax indicator ******/
319 #ajax-indicator {
319 #ajax-indicator {
320 position: absolute; /* fixed not supported by IE */
320 position: absolute; /* fixed not supported by IE */
321 background-color:#eee;
321 background-color:#eee;
322 border: 1px solid #bbb;
322 border: 1px solid #bbb;
323 top:35%;
323 top:35%;
324 left:40%;
324 left:40%;
325 width:20%;
325 width:20%;
326 font-weight:bold;
326 font-weight:bold;
327 text-align:center;
327 text-align:center;
328 padding:0.6em;
328 padding:0.6em;
329 z-index:100;
329 z-index:100;
330 filter:alpha(opacity=50);
330 filter:alpha(opacity=50);
331 opacity: 0.5;
331 opacity: 0.5;
332 }
332 }
333
333
334 html>body #ajax-indicator { position: fixed; }
334 html>body #ajax-indicator { position: fixed; }
335
335
336 #ajax-indicator span {
336 #ajax-indicator span {
337 background-position: 0% 40%;
337 background-position: 0% 40%;
338 background-repeat: no-repeat;
338 background-repeat: no-repeat;
339 background-image: url(../images/loading.gif);
339 background-image: url(../images/loading.gif);
340 padding-left: 26px;
340 padding-left: 26px;
341 vertical-align: bottom;
341 vertical-align: bottom;
342 }
342 }
343
343
344 /***** Calendar *****/
344 /***** Calendar *****/
345 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
345 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
346 table.cal thead th {width: 14%;}
346 table.cal thead th {width: 14%;}
347 table.cal tbody tr {height: 100px;}
347 table.cal tbody tr {height: 100px;}
348 table.cal th { background-color:#EEEEEE; padding: 4px; }
348 table.cal th { background-color:#EEEEEE; padding: 4px; }
349 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
349 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
350 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
350 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
351 table.cal td.odd p.day-num {color: #bbb;}
351 table.cal td.odd p.day-num {color: #bbb;}
352 table.cal td.today {background:#ffffdd;}
352 table.cal td.today {background:#ffffdd;}
353 table.cal td.today p.day-num {font-weight: bold;}
353 table.cal td.today p.day-num {font-weight: bold;}
354
354
355 /***** Tooltips ******/
355 /***** Tooltips ******/
356 .tooltip{position:relative;z-index:24;}
356 .tooltip{position:relative;z-index:24;}
357 .tooltip:hover{z-index:25;color:#000;}
357 .tooltip:hover{z-index:25;color:#000;}
358 .tooltip span.tip{display: none; text-align:left;}
358 .tooltip span.tip{display: none; text-align:left;}
359
359
360 div.tooltip:hover span.tip{
360 div.tooltip:hover span.tip{
361 display:block;
361 display:block;
362 position:absolute;
362 position:absolute;
363 top:12px; left:24px; width:270px;
363 top:12px; left:24px; width:270px;
364 border:1px solid #555;
364 border:1px solid #555;
365 background-color:#fff;
365 background-color:#fff;
366 padding: 4px;
366 padding: 4px;
367 font-size: 0.8em;
367 font-size: 0.8em;
368 color:#505050;
368 color:#505050;
369 }
369 }
370
370
371 /***** Progress bar *****/
371 /***** Progress bar *****/
372 table.progress {
372 table.progress {
373 border: 1px solid #D7D7D7;
373 border: 1px solid #D7D7D7;
374 border-collapse: collapse;
374 border-collapse: collapse;
375 border-spacing: 0pt;
375 border-spacing: 0pt;
376 empty-cells: show;
376 empty-cells: show;
377 text-align: center;
377 text-align: center;
378 float:left;
378 float:left;
379 margin: 1px 6px 1px 0px;
379 margin: 1px 6px 1px 0px;
380 }
380 }
381
381
382 table.progress td { height: 0.9em; }
382 table.progress td { height: 0.9em; }
383 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
383 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
384 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
384 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
385 table.progress td.open { background: #FFF none repeat scroll 0%; }
385 table.progress td.open { background: #FFF none repeat scroll 0%; }
386 p.pourcent {font-size: 80%;}
386 p.pourcent {font-size: 80%;}
387 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
387 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
388
388
389 /***** Tabs *****/
389 /***** Tabs *****/
390 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
390 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
391 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
391 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
392 #content .tabs>ul { bottom:-1px; } /* others */
392 #content .tabs>ul { bottom:-1px; } /* others */
393 #content .tabs ul li {
393 #content .tabs ul li {
394 float:left;
394 float:left;
395 list-style-type:none;
395 list-style-type:none;
396 white-space:nowrap;
396 white-space:nowrap;
397 margin-right:8px;
397 margin-right:8px;
398 background:#fff;
398 background:#fff;
399 }
399 }
400 #content .tabs ul li a{
400 #content .tabs ul li a{
401 display:block;
401 display:block;
402 font-size: 0.9em;
402 font-size: 0.9em;
403 text-decoration:none;
403 text-decoration:none;
404 line-height:1.3em;
404 line-height:1.3em;
405 padding:4px 6px 4px 6px;
405 padding:4px 6px 4px 6px;
406 border: 1px solid #ccc;
406 border: 1px solid #ccc;
407 border-bottom: 1px solid #bbbbbb;
407 border-bottom: 1px solid #bbbbbb;
408 background-color: #eeeeee;
408 background-color: #eeeeee;
409 color:#777;
409 color:#777;
410 font-weight:bold;
410 font-weight:bold;
411 }
411 }
412
412
413 #content .tabs ul li a:hover {
413 #content .tabs ul li a:hover {
414 background-color: #ffffdd;
414 background-color: #ffffdd;
415 text-decoration:none;
415 text-decoration:none;
416 }
416 }
417
417
418 #content .tabs ul li a.selected {
418 #content .tabs ul li a.selected {
419 background-color: #fff;
419 background-color: #fff;
420 border: 1px solid #bbbbbb;
420 border: 1px solid #bbbbbb;
421 border-bottom: 1px solid #fff;
421 border-bottom: 1px solid #fff;
422 }
422 }
423
423
424 #content .tabs ul li a.selected:hover {
424 #content .tabs ul li a.selected:hover {
425 background-color: #fff;
425 background-color: #fff;
426 }
426 }
427
427
428 /***** Diff *****/
428 /***** Diff *****/
429 .diff_out { background: #fcc; }
429 .diff_out { background: #fcc; }
430 .diff_in { background: #cfc; }
430 .diff_in { background: #cfc; }
431
431
432 /***** Wiki *****/
432 /***** Wiki *****/
433 div.wiki table {
433 div.wiki table {
434 border: 1px solid #505050;
434 border: 1px solid #505050;
435 border-collapse: collapse;
435 border-collapse: collapse;
436 margin-bottom: 1em;
436 margin-bottom: 1em;
437 }
437 }
438
438
439 div.wiki table, div.wiki td, div.wiki th {
439 div.wiki table, div.wiki td, div.wiki th {
440 border: 1px solid #bbb;
440 border: 1px solid #bbb;
441 padding: 4px;
441 padding: 4px;
442 }
442 }
443
443
444 div.wiki .external {
444 div.wiki .external {
445 background-position: 0% 60%;
445 background-position: 0% 60%;
446 background-repeat: no-repeat;
446 background-repeat: no-repeat;
447 padding-left: 12px;
447 padding-left: 12px;
448 background-image: url(../images/external.png);
448 background-image: url(../images/external.png);
449 }
449 }
450
450
451 div.wiki a.new {
451 div.wiki a.new {
452 color: #b73535;
452 color: #b73535;
453 }
453 }
454
454
455 div.wiki pre {
455 div.wiki pre {
456 margin: 1em 1em 1em 1.6em;
456 margin: 1em 1em 1em 1.6em;
457 padding: 2px;
457 padding: 2px;
458 background-color: #fafafa;
458 background-color: #fafafa;
459 border: 1px solid #dadada;
459 border: 1px solid #dadada;
460 width:95%;
460 width:95%;
461 overflow-x: auto;
461 overflow-x: auto;
462 }
462 }
463
463
464 div.wiki div.toc {
464 div.wiki ul.toc {
465 background-color: #ffffdd;
465 background-color: #ffffdd;
466 border: 1px solid #e4e4e4;
466 border: 1px solid #e4e4e4;
467 padding: 4px;
467 padding: 4px;
468 line-height: 1.2em;
468 line-height: 1.2em;
469 margin-bottom: 12px;
469 margin-bottom: 12px;
470 margin-right: 12px;
470 margin-right: 12px;
471 margin-left: 0;
471 display: table
472 display: table
472 }
473 }
473 * html div.wiki div.toc { width: 50%; } /* IE6 doesn't autosize div */
474 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
474
475
475 div.wiki div.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
476 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
476 div.wiki div.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
477 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
478 div.wiki ul.toc li { list-style-type:none;}
479 div.wiki ul.toc li.heading2 { margin-left: 6px; }
480 div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; }
477
481
478 div.wiki div.toc a {
482 div.wiki ul.toc a {
479 display: block;
480 font-size: 0.9em;
483 font-size: 0.9em;
481 font-weight: normal;
484 font-weight: normal;
482 text-decoration: none;
485 text-decoration: none;
483 color: #606060;
486 color: #606060;
484 }
487 }
485 div.wiki div.toc a:hover { color: #c61a1a; text-decoration: underline;}
488 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
486
487 div.wiki div.toc a.heading2 { margin-left: 6px; }
488 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
489
489
490 /***** My page layout *****/
490 /***** My page layout *****/
491 .block-receiver {
491 .block-receiver {
492 border:1px dashed #c0c0c0;
492 border:1px dashed #c0c0c0;
493 margin-bottom: 20px;
493 margin-bottom: 20px;
494 padding: 15px 0 15px 0;
494 padding: 15px 0 15px 0;
495 }
495 }
496
496
497 .mypage-box {
497 .mypage-box {
498 margin:0 0 20px 0;
498 margin:0 0 20px 0;
499 color:#505050;
499 color:#505050;
500 line-height:1.5em;
500 line-height:1.5em;
501 }
501 }
502
502
503 .handle {
503 .handle {
504 cursor: move;
504 cursor: move;
505 }
505 }
506
506
507 a.close-icon {
507 a.close-icon {
508 display:block;
508 display:block;
509 margin-top:3px;
509 margin-top:3px;
510 overflow:hidden;
510 overflow:hidden;
511 width:12px;
511 width:12px;
512 height:12px;
512 height:12px;
513 background-repeat: no-repeat;
513 background-repeat: no-repeat;
514 cursor:pointer;
514 cursor:pointer;
515 background-image:url('../images/close.png');
515 background-image:url('../images/close.png');
516 }
516 }
517
517
518 a.close-icon:hover {
518 a.close-icon:hover {
519 background-image:url('../images/close_hl.png');
519 background-image:url('../images/close_hl.png');
520 }
520 }
521
521
522 /***** Gantt chart *****/
522 /***** Gantt chart *****/
523 .gantt_hdr {
523 .gantt_hdr {
524 position:absolute;
524 position:absolute;
525 top:0;
525 top:0;
526 height:16px;
526 height:16px;
527 border-top: 1px solid #c0c0c0;
527 border-top: 1px solid #c0c0c0;
528 border-bottom: 1px solid #c0c0c0;
528 border-bottom: 1px solid #c0c0c0;
529 border-right: 1px solid #c0c0c0;
529 border-right: 1px solid #c0c0c0;
530 text-align: center;
530 text-align: center;
531 overflow: hidden;
531 overflow: hidden;
532 }
532 }
533
533
534 .task {
534 .task {
535 position: absolute;
535 position: absolute;
536 height:8px;
536 height:8px;
537 font-size:0.8em;
537 font-size:0.8em;
538 color:#888;
538 color:#888;
539 padding:0;
539 padding:0;
540 margin:0;
540 margin:0;
541 line-height:0.8em;
541 line-height:0.8em;
542 }
542 }
543
543
544 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
544 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
545 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
545 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
546 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
546 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
547 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
547 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
548
548
549 /***** Icons *****/
549 /***** Icons *****/
550 .icon {
550 .icon {
551 background-position: 0% 40%;
551 background-position: 0% 40%;
552 background-repeat: no-repeat;
552 background-repeat: no-repeat;
553 padding-left: 20px;
553 padding-left: 20px;
554 padding-top: 2px;
554 padding-top: 2px;
555 padding-bottom: 3px;
555 padding-bottom: 3px;
556 }
556 }
557
557
558 .icon22 {
558 .icon22 {
559 background-position: 0% 40%;
559 background-position: 0% 40%;
560 background-repeat: no-repeat;
560 background-repeat: no-repeat;
561 padding-left: 26px;
561 padding-left: 26px;
562 line-height: 22px;
562 line-height: 22px;
563 vertical-align: middle;
563 vertical-align: middle;
564 }
564 }
565
565
566 .icon-add { background-image: url(../images/add.png); }
566 .icon-add { background-image: url(../images/add.png); }
567 .icon-edit { background-image: url(../images/edit.png); }
567 .icon-edit { background-image: url(../images/edit.png); }
568 .icon-copy { background-image: url(../images/copy.png); }
568 .icon-copy { background-image: url(../images/copy.png); }
569 .icon-del { background-image: url(../images/delete.png); }
569 .icon-del { background-image: url(../images/delete.png); }
570 .icon-move { background-image: url(../images/move.png); }
570 .icon-move { background-image: url(../images/move.png); }
571 .icon-save { background-image: url(../images/save.png); }
571 .icon-save { background-image: url(../images/save.png); }
572 .icon-cancel { background-image: url(../images/cancel.png); }
572 .icon-cancel { background-image: url(../images/cancel.png); }
573 .icon-file { background-image: url(../images/file.png); }
573 .icon-file { background-image: url(../images/file.png); }
574 .icon-folder { background-image: url(../images/folder.png); }
574 .icon-folder { background-image: url(../images/folder.png); }
575 .open .icon-folder { background-image: url(../images/folder_open.png); }
575 .open .icon-folder { background-image: url(../images/folder_open.png); }
576 .icon-package { background-image: url(../images/package.png); }
576 .icon-package { background-image: url(../images/package.png); }
577 .icon-home { background-image: url(../images/home.png); }
577 .icon-home { background-image: url(../images/home.png); }
578 .icon-user { background-image: url(../images/user.png); }
578 .icon-user { background-image: url(../images/user.png); }
579 .icon-mypage { background-image: url(../images/user_page.png); }
579 .icon-mypage { background-image: url(../images/user_page.png); }
580 .icon-admin { background-image: url(../images/admin.png); }
580 .icon-admin { background-image: url(../images/admin.png); }
581 .icon-projects { background-image: url(../images/projects.png); }
581 .icon-projects { background-image: url(../images/projects.png); }
582 .icon-logout { background-image: url(../images/logout.png); }
582 .icon-logout { background-image: url(../images/logout.png); }
583 .icon-help { background-image: url(../images/help.png); }
583 .icon-help { background-image: url(../images/help.png); }
584 .icon-attachment { background-image: url(../images/attachment.png); }
584 .icon-attachment { background-image: url(../images/attachment.png); }
585 .icon-index { background-image: url(../images/index.png); }
585 .icon-index { background-image: url(../images/index.png); }
586 .icon-history { background-image: url(../images/history.png); }
586 .icon-history { background-image: url(../images/history.png); }
587 .icon-time { background-image: url(../images/time.png); }
587 .icon-time { background-image: url(../images/time.png); }
588 .icon-stats { background-image: url(../images/stats.png); }
588 .icon-stats { background-image: url(../images/stats.png); }
589 .icon-warning { background-image: url(../images/warning.png); }
589 .icon-warning { background-image: url(../images/warning.png); }
590 .icon-fav { background-image: url(../images/fav.png); }
590 .icon-fav { background-image: url(../images/fav.png); }
591 .icon-fav-off { background-image: url(../images/fav_off.png); }
591 .icon-fav-off { background-image: url(../images/fav_off.png); }
592 .icon-reload { background-image: url(../images/reload.png); }
592 .icon-reload { background-image: url(../images/reload.png); }
593 .icon-lock { background-image: url(../images/locked.png); }
593 .icon-lock { background-image: url(../images/locked.png); }
594 .icon-unlock { background-image: url(../images/unlock.png); }
594 .icon-unlock { background-image: url(../images/unlock.png); }
595 .icon-checked { background-image: url(../images/true.png); }
595 .icon-checked { background-image: url(../images/true.png); }
596 .icon-details { background-image: url(../images/zoom_in.png); }
596 .icon-details { background-image: url(../images/zoom_in.png); }
597 .icon-report { background-image: url(../images/report.png); }
597 .icon-report { background-image: url(../images/report.png); }
598
598
599 .icon22-projects { background-image: url(../images/22x22/projects.png); }
599 .icon22-projects { background-image: url(../images/22x22/projects.png); }
600 .icon22-users { background-image: url(../images/22x22/users.png); }
600 .icon22-users { background-image: url(../images/22x22/users.png); }
601 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
601 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
602 .icon22-role { background-image: url(../images/22x22/role.png); }
602 .icon22-role { background-image: url(../images/22x22/role.png); }
603 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
603 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
604 .icon22-options { background-image: url(../images/22x22/options.png); }
604 .icon22-options { background-image: url(../images/22x22/options.png); }
605 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
605 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
606 .icon22-authent { background-image: url(../images/22x22/authent.png); }
606 .icon22-authent { background-image: url(../images/22x22/authent.png); }
607 .icon22-info { background-image: url(../images/22x22/info.png); }
607 .icon22-info { background-image: url(../images/22x22/info.png); }
608 .icon22-comment { background-image: url(../images/22x22/comment.png); }
608 .icon22-comment { background-image: url(../images/22x22/comment.png); }
609 .icon22-package { background-image: url(../images/22x22/package.png); }
609 .icon22-package { background-image: url(../images/22x22/package.png); }
610 .icon22-settings { background-image: url(../images/22x22/settings.png); }
610 .icon22-settings { background-image: url(../images/22x22/settings.png); }
611 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
611 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
612
612
613 /***** Media print specific styles *****/
613 /***** Media print specific styles *****/
614 @media print {
614 @media print {
615 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
615 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
616 #main { background: #fff; }
616 #main { background: #fff; }
617 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
617 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
618 }
618 }
General Comments 0
You need to be logged in to leave comments. Login now