##// END OF EJS Templates
Slight changes to the activity view....
Jean-Philippe Lang -
r1106:80a60247f527
parent child
Show More
@@ -1,191 +1,195
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006 Jean-Philippe Lang
2 # Copyright (C) 2006 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 module ProjectsHelper
18 module ProjectsHelper
19 def link_to_version(version, options = {})
19 def link_to_version(version, options = {})
20 return '' unless version && version.is_a?(Version)
20 return '' unless version && version.is_a?(Version)
21 link_to version.name, {:controller => 'projects',
21 link_to version.name, {:controller => 'projects',
22 :action => 'roadmap',
22 :action => 'roadmap',
23 :id => version.project_id,
23 :id => version.project_id,
24 :completed => (version.completed? ? 1 : nil),
24 :completed => (version.completed? ? 1 : nil),
25 :anchor => version.name
25 :anchor => version.name
26 }, options
26 }, options
27 end
27 end
28
28
29 def format_activity_description(text)
30 h(truncate(text, 250))
31 end
32
29 def project_settings_tabs
33 def project_settings_tabs
30 tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural},
34 tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural},
31 {:name => 'modules', :action => :select_project_modules, :partial => 'projects/settings/modules', :label => :label_module_plural},
35 {:name => 'modules', :action => :select_project_modules, :partial => 'projects/settings/modules', :label => :label_module_plural},
32 {:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural},
36 {:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural},
33 {:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural},
37 {:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural},
34 {:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural},
38 {:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural},
35 {:name => 'wiki', :action => :manage_wiki, :partial => 'projects/settings/wiki', :label => :label_wiki},
39 {:name => 'wiki', :action => :manage_wiki, :partial => 'projects/settings/wiki', :label => :label_wiki},
36 {:name => 'repository', :action => :manage_repository, :partial => 'projects/settings/repository', :label => :label_repository},
40 {:name => 'repository', :action => :manage_repository, :partial => 'projects/settings/repository', :label => :label_repository},
37 {:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural}
41 {:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural}
38 ]
42 ]
39 tabs.select {|tab| User.current.allowed_to?(tab[:action], @project)}
43 tabs.select {|tab| User.current.allowed_to?(tab[:action], @project)}
40 end
44 end
41
45
42 # Generates a gantt image
46 # Generates a gantt image
43 # Only defined if RMagick is avalaible
47 # Only defined if RMagick is avalaible
44 def gantt_image(events, date_from, months, zoom)
48 def gantt_image(events, date_from, months, zoom)
45 date_to = (date_from >> months)-1
49 date_to = (date_from >> months)-1
46 show_weeks = zoom > 1
50 show_weeks = zoom > 1
47 show_days = zoom > 2
51 show_days = zoom > 2
48
52
49 subject_width = 320
53 subject_width = 320
50 header_heigth = 18
54 header_heigth = 18
51 # width of one day in pixels
55 # width of one day in pixels
52 zoom = zoom*2
56 zoom = zoom*2
53 g_width = (date_to - date_from + 1)*zoom
57 g_width = (date_to - date_from + 1)*zoom
54 g_height = 20 * events.length + 20
58 g_height = 20 * events.length + 20
55 headers_heigth = (show_weeks ? 2*header_heigth : header_heigth)
59 headers_heigth = (show_weeks ? 2*header_heigth : header_heigth)
56 height = g_height + headers_heigth
60 height = g_height + headers_heigth
57
61
58 imgl = Magick::ImageList.new
62 imgl = Magick::ImageList.new
59 imgl.new_image(subject_width+g_width+1, height)
63 imgl.new_image(subject_width+g_width+1, height)
60 gc = Magick::Draw.new
64 gc = Magick::Draw.new
61
65
62 # Subjects
66 # Subjects
63 top = headers_heigth + 20
67 top = headers_heigth + 20
64 gc.fill('black')
68 gc.fill('black')
65 gc.stroke('transparent')
69 gc.stroke('transparent')
66 gc.stroke_width(1)
70 gc.stroke_width(1)
67 events.each do |i|
71 events.each do |i|
68 gc.text(4, top + 2, (i.is_a?(Issue) ? i.subject : i.name))
72 gc.text(4, top + 2, (i.is_a?(Issue) ? i.subject : i.name))
69 top = top + 20
73 top = top + 20
70 end
74 end
71
75
72 # Months headers
76 # Months headers
73 month_f = date_from
77 month_f = date_from
74 left = subject_width
78 left = subject_width
75 months.times do
79 months.times do
76 width = ((month_f >> 1) - month_f) * zoom
80 width = ((month_f >> 1) - month_f) * zoom
77 gc.fill('white')
81 gc.fill('white')
78 gc.stroke('grey')
82 gc.stroke('grey')
79 gc.stroke_width(1)
83 gc.stroke_width(1)
80 gc.rectangle(left, 0, left + width, height)
84 gc.rectangle(left, 0, left + width, height)
81 gc.fill('black')
85 gc.fill('black')
82 gc.stroke('transparent')
86 gc.stroke('transparent')
83 gc.stroke_width(1)
87 gc.stroke_width(1)
84 gc.text(left.round + 8, 14, "#{month_f.year}-#{month_f.month}")
88 gc.text(left.round + 8, 14, "#{month_f.year}-#{month_f.month}")
85 left = left + width
89 left = left + width
86 month_f = month_f >> 1
90 month_f = month_f >> 1
87 end
91 end
88
92
89 # Weeks headers
93 # Weeks headers
90 if show_weeks
94 if show_weeks
91 left = subject_width
95 left = subject_width
92 height = header_heigth
96 height = header_heigth
93 if date_from.cwday == 1
97 if date_from.cwday == 1
94 # date_from is monday
98 # date_from is monday
95 week_f = date_from
99 week_f = date_from
96 else
100 else
97 # find next monday after date_from
101 # find next monday after date_from
98 week_f = date_from + (7 - date_from.cwday + 1)
102 week_f = date_from + (7 - date_from.cwday + 1)
99 width = (7 - date_from.cwday + 1) * zoom
103 width = (7 - date_from.cwday + 1) * zoom
100 gc.fill('white')
104 gc.fill('white')
101 gc.stroke('grey')
105 gc.stroke('grey')
102 gc.stroke_width(1)
106 gc.stroke_width(1)
103 gc.rectangle(left, header_heigth, left + width, 2*header_heigth + g_height-1)
107 gc.rectangle(left, header_heigth, left + width, 2*header_heigth + g_height-1)
104 left = left + width
108 left = left + width
105 end
109 end
106 while week_f <= date_to
110 while week_f <= date_to
107 width = (week_f + 6 <= date_to) ? 7 * zoom : (date_to - week_f + 1) * zoom
111 width = (week_f + 6 <= date_to) ? 7 * zoom : (date_to - week_f + 1) * zoom
108 gc.fill('white')
112 gc.fill('white')
109 gc.stroke('grey')
113 gc.stroke('grey')
110 gc.stroke_width(1)
114 gc.stroke_width(1)
111 gc.rectangle(left.round, header_heigth, left.round + width, 2*header_heigth + g_height-1)
115 gc.rectangle(left.round, header_heigth, left.round + width, 2*header_heigth + g_height-1)
112 gc.fill('black')
116 gc.fill('black')
113 gc.stroke('transparent')
117 gc.stroke('transparent')
114 gc.stroke_width(1)
118 gc.stroke_width(1)
115 gc.text(left.round + 2, header_heigth + 14, week_f.cweek.to_s)
119 gc.text(left.round + 2, header_heigth + 14, week_f.cweek.to_s)
116 left = left + width
120 left = left + width
117 week_f = week_f+7
121 week_f = week_f+7
118 end
122 end
119 end
123 end
120
124
121 # Days details (week-end in grey)
125 # Days details (week-end in grey)
122 if show_days
126 if show_days
123 left = subject_width
127 left = subject_width
124 height = g_height + header_heigth - 1
128 height = g_height + header_heigth - 1
125 wday = date_from.cwday
129 wday = date_from.cwday
126 (date_to - date_from + 1).to_i.times do
130 (date_to - date_from + 1).to_i.times do
127 width = zoom
131 width = zoom
128 gc.fill(wday == 6 || wday == 7 ? '#eee' : 'white')
132 gc.fill(wday == 6 || wday == 7 ? '#eee' : 'white')
129 gc.stroke('grey')
133 gc.stroke('grey')
130 gc.stroke_width(1)
134 gc.stroke_width(1)
131 gc.rectangle(left, 2*header_heigth, left + width, 2*header_heigth + g_height-1)
135 gc.rectangle(left, 2*header_heigth, left + width, 2*header_heigth + g_height-1)
132 left = left + width
136 left = left + width
133 wday = wday + 1
137 wday = wday + 1
134 wday = 1 if wday > 7
138 wday = 1 if wday > 7
135 end
139 end
136 end
140 end
137
141
138 # border
142 # border
139 gc.fill('transparent')
143 gc.fill('transparent')
140 gc.stroke('grey')
144 gc.stroke('grey')
141 gc.stroke_width(1)
145 gc.stroke_width(1)
142 gc.rectangle(0, 0, subject_width+g_width, headers_heigth)
146 gc.rectangle(0, 0, subject_width+g_width, headers_heigth)
143 gc.stroke('black')
147 gc.stroke('black')
144 gc.rectangle(0, 0, subject_width+g_width, g_height+ headers_heigth-1)
148 gc.rectangle(0, 0, subject_width+g_width, g_height+ headers_heigth-1)
145
149
146 # content
150 # content
147 top = headers_heigth + 20
151 top = headers_heigth + 20
148 gc.stroke('transparent')
152 gc.stroke('transparent')
149 events.each do |i|
153 events.each do |i|
150 if i.is_a?(Issue)
154 if i.is_a?(Issue)
151 i_start_date = (i.start_date >= date_from ? i.start_date : date_from )
155 i_start_date = (i.start_date >= date_from ? i.start_date : date_from )
152 i_end_date = (i.due_date <= date_to ? i.due_date : date_to )
156 i_end_date = (i.due_date <= date_to ? i.due_date : date_to )
153 i_done_date = i.start_date + ((i.due_date - i.start_date+1)*i.done_ratio/100).floor
157 i_done_date = i.start_date + ((i.due_date - i.start_date+1)*i.done_ratio/100).floor
154 i_done_date = (i_done_date <= date_from ? date_from : i_done_date )
158 i_done_date = (i_done_date <= date_from ? date_from : i_done_date )
155 i_done_date = (i_done_date >= date_to ? date_to : i_done_date )
159 i_done_date = (i_done_date >= date_to ? date_to : i_done_date )
156 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
160 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
157
161
158 i_left = subject_width + ((i_start_date - date_from)*zoom).floor
162 i_left = subject_width + ((i_start_date - date_from)*zoom).floor
159 i_width = ((i_end_date - i_start_date + 1)*zoom).floor # total width of the issue
163 i_width = ((i_end_date - i_start_date + 1)*zoom).floor # total width of the issue
160 d_width = ((i_done_date - i_start_date)*zoom).floor # done width
164 d_width = ((i_done_date - i_start_date)*zoom).floor # done width
161 l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor : 0 # delay width
165 l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor : 0 # delay width
162
166
163 gc.fill('grey')
167 gc.fill('grey')
164 gc.rectangle(i_left, top, i_left + i_width, top - 6)
168 gc.rectangle(i_left, top, i_left + i_width, top - 6)
165 gc.fill('red')
169 gc.fill('red')
166 gc.rectangle(i_left, top, i_left + l_width, top - 6) if l_width > 0
170 gc.rectangle(i_left, top, i_left + l_width, top - 6) if l_width > 0
167 gc.fill('blue')
171 gc.fill('blue')
168 gc.rectangle(i_left, top, i_left + d_width, top - 6) if d_width > 0
172 gc.rectangle(i_left, top, i_left + d_width, top - 6) if d_width > 0
169 gc.fill('black')
173 gc.fill('black')
170 gc.text(i_left + i_width + 5,top + 1, "#{i.status.name} #{i.done_ratio}%")
174 gc.text(i_left + i_width + 5,top + 1, "#{i.status.name} #{i.done_ratio}%")
171 else
175 else
172 i_left = subject_width + ((i.start_date - date_from)*zoom).floor
176 i_left = subject_width + ((i.start_date - date_from)*zoom).floor
173 gc.fill('green')
177 gc.fill('green')
174 gc.rectangle(i_left, top, i_left + 6, top - 6)
178 gc.rectangle(i_left, top, i_left + 6, top - 6)
175 gc.fill('black')
179 gc.fill('black')
176 gc.text(i_left + 11, top + 1, i.name)
180 gc.text(i_left + 11, top + 1, i.name)
177 end
181 end
178 top = top + 20
182 top = top + 20
179 end
183 end
180
184
181 # today red line
185 # today red line
182 if Date.today >= date_from and Date.today <= date_to
186 if Date.today >= date_from and Date.today <= date_to
183 gc.stroke('red')
187 gc.stroke('red')
184 x = (Date.today-date_from+1)*zoom + subject_width
188 x = (Date.today-date_from+1)*zoom + subject_width
185 gc.line(x, headers_heigth, x, headers_heigth + g_height-1)
189 gc.line(x, headers_heigth, x, headers_heigth + g_height-1)
186 end
190 end
187
191
188 gc.draw(imgl)
192 gc.draw(imgl)
189 imgl
193 imgl
190 end if Object.const_defined?(:Magick)
194 end if Object.const_defined?(:Magick)
191 end
195 end
@@ -1,43 +1,48
1 <h2><%=l(:label_activity)%>: <%= "#{month_name(@month).downcase} #{@year}" %></h2>
1 <h2><%=l(:label_activity)%>: <%= "#{month_name(@month).downcase} #{@year}" %></h2>
2
2
3 <div id="activity">
3 <% @events_by_day.keys.sort {|x,y| y <=> x }.each do |day| %>
4 <% @events_by_day.keys.sort {|x,y| y <=> x }.each do |day| %>
4 <h3><%= day_name(day.cwday) %> <%= day.day %></h3>
5 <h3><%= day_name(day.cwday) %> <%= day.day %></h3>
5 <ul>
6 <dl>
6 <% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| %>
7 <% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
7 <li><p><%= format_time(e.event_datetime, false) %> <%= link_to truncate(e.event_title, 100), e.event_url %><br />
8 <dt class="<%= e.class.name.downcase %>"><span class="time"><%= format_time(e.event_datetime, false) %></span>
8 <% unless e.event_description.blank? %><em><%= truncate(e.event_description, 500) %></em><br /><% end %>
9 <%= link_to truncate(e.event_title, 100), e.event_url %></dt>
9 <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></p></li>
10 <dd><% unless e.event_description.blank? -%>
10 <% end %>
11 <span class="description"><%= format_activity_description(e.event_description) %></span><br />
11 </ul>
12 <% end %>
12 <% end %>
13 <span class="author"><%= e.event_author if e.respond_to?(:event_author) %></span></dd>
14 <% end -%>
15 </dl>
16 <% end -%>
17 </div>
13
18
14 <% if @events_by_day.empty? %><p class="nodata"><%= l(:label_no_data) %></p><% end %>
19 <%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
15
20
16 <div style="float:left;">
21 <div style="float:left;">
17 <% prev_params = params.clone.update :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) %>
22 <% prev_params = params.clone.update :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) %>
18 <%= link_to_remote ('&#171; ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")),
23 <%= link_to_remote ('&#171; ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")),
19 {:update => "content", :url => prev_params}, {:href => url_for(prev_params)} %>
24 {:update => "content", :url => prev_params}, {:href => url_for(prev_params)} %>
20 </div>
25 </div>
21 <div style="float:right;">
26 <div style="float:right;">
22 <% next_params = params.clone.update :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) %>
27 <% next_params = params.clone.update :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) %>
23 <%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' &#187;'),
28 <%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' &#187;'),
24 {:update => "content", :url => next_params}, {:href => url_for(next_params)} %>
29 {:update => "content", :url => next_params}, {:href => url_for(next_params)} %>
25 &nbsp;
30 &nbsp;
26 </div>
31 </div>
27 <br />
32 <br />
28
33
29 <% content_for :header_tags do %>
34 <% content_for :header_tags do %>
30 <%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :year => nil, :month => nil, :key => User.current.rss_key})) %>
35 <%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :year => nil, :month => nil, :key => User.current.rss_key})) %>
31 <% end %>
36 <% end %>
32
37
33 <% content_for :sidebar do %>
38 <% content_for :sidebar do %>
34 <% form_tag do %>
39 <% form_tag do %>
35 <h3><%= l(:label_activity) %></h3>
40 <h3><%= l(:label_activity) %></h3>
36 <p><% @event_types.each do |t| %>
41 <p><% @event_types.each do |t| %>
37 <label><%= check_box_tag "show_#{t}", 1, @scope.include?(t) %> <%= l("label_#{t.singularize}_plural")%></label><br />
42 <label><%= check_box_tag "show_#{t}", 1, @scope.include?(t) %> <%= l("label_#{t.singularize}_plural")%></label><br />
38 <% end %></p>
43 <% end %></p>
39 <p><%= submit_tag l(:button_apply), :class => 'button-small' %></p>
44 <p><%= submit_tag l(:button_apply), :class => 'button-small' %></p>
40 <% end %>
45 <% end %>
41 <% end %>
46 <% end %>
42
47
43 <% html_title(l(:label_activity)) -%>
48 <% html_title(l(:label_activity)) -%>
@@ -1,531 +1,537
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: 12px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
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 /***** Layout *****/
9 /***** Layout *****/
10 #wrapper {background: white;}
10 #wrapper {background: white;}
11
11
12 #top-menu {background: #2C4056;color: #fff;height:1.5em; padding: 2px 6px 0px 6px;}
12 #top-menu {background: #2C4056;color: #fff;height:1.5em; padding: 2px 6px 0px 6px;}
13 #top-menu a {color: #fff; padding-right: 4px;}
13 #top-menu a {color: #fff; padding-right: 4px;}
14 #account {float:right;}
14 #account {float:right;}
15
15
16 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
16 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
17 #header a {color:#f8f8f8;}
17 #header a {color:#f8f8f8;}
18 #quick-search {float:right;}
18 #quick-search {float:right;}
19
19
20 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
20 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
21 #main-menu ul {margin: 0; padding: 0;}
21 #main-menu ul {margin: 0; padding: 0;}
22 #main-menu li {
22 #main-menu li {
23 float:left;
23 float:left;
24 list-style-type:none;
24 list-style-type:none;
25 margin: 0px 10px 0px 0px;
25 margin: 0px 10px 0px 0px;
26 padding: 0px 0px 0px 0px;
26 padding: 0px 0px 0px 0px;
27 white-space:nowrap;
27 white-space:nowrap;
28 }
28 }
29 #main-menu li a {
29 #main-menu li a {
30 display: block;
30 display: block;
31 color: #fff;
31 color: #fff;
32 text-decoration: none;
32 text-decoration: none;
33 margin: 0;
33 margin: 0;
34 padding: 4px 4px 4px 4px;
34 padding: 4px 4px 4px 4px;
35 background: #2C4056;
35 background: #2C4056;
36 }
36 }
37 #main-menu li a:hover, #main-menu li a.selected {background:#759FCF;}
37 #main-menu li a:hover, #main-menu li a.selected {background:#759FCF;}
38
38
39 #main {background: url(../images/mainbg.png) repeat-x; background-color:#EEEEEE;}
39 #main {background: url(../images/mainbg.png) repeat-x; background-color:#EEEEEE;}
40
40
41 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
41 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
42 * html #sidebar{ width: 17%; }
42 * html #sidebar{ width: 17%; }
43 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
43 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
44 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
44 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
45 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
45 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
46
46
47 #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; z-index: 10; height:600px; min-height: 600px;}
47 #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; z-index: 10; height:600px; min-height: 600px;}
48 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
48 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
49 html>body #content {
49 html>body #content {
50 height: auto;
50 height: auto;
51 min-height: 600px;
51 min-height: 600px;
52 }
52 }
53
53
54 #main.nosidebar #sidebar{ display: none; }
54 #main.nosidebar #sidebar{ display: none; }
55 #main.nosidebar #content{ width: auto; border-right: 0; }
55 #main.nosidebar #content{ width: auto; border-right: 0; }
56
56
57 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
57 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
58
58
59 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
59 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
60 #login-form table td {padding: 6px;}
60 #login-form table td {padding: 6px;}
61 #login-form label {font-weight: bold;}
61 #login-form label {font-weight: bold;}
62
62
63 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
63 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
64
64
65 /***** Links *****/
65 /***** Links *****/
66 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
66 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
67 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
67 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
68 a img{ border: 0; }
68 a img{ border: 0; }
69
69
70 /***** Tables *****/
70 /***** Tables *****/
71 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
71 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
72 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
72 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
73 table.list td { overflow: hidden; text-overflow: ellipsis; vertical-align: top;}
73 table.list td { overflow: hidden; text-overflow: ellipsis; vertical-align: top;}
74 table.list td.id { width: 2%; text-align: center;}
74 table.list td.id { width: 2%; text-align: center;}
75 table.list td.checkbox { width: 15px; padding: 0px;}
75 table.list td.checkbox { width: 15px; padding: 0px;}
76
76
77 tr.issue { text-align: center; white-space: nowrap; }
77 tr.issue { text-align: center; white-space: nowrap; }
78 tr.issue td.subject, tr.issue td.category { white-space: normal; }
78 tr.issue td.subject, tr.issue td.category { white-space: normal; }
79 tr.issue td.subject { text-align: left; }
79 tr.issue td.subject { text-align: left; }
80 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
80 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
81
81
82 tr.entry { border: 1px solid #f8f8f8; }
82 tr.entry { border: 1px solid #f8f8f8; }
83 tr.entry td { white-space: nowrap; }
83 tr.entry td { white-space: nowrap; }
84 tr.entry td.filename { width: 30%; }
84 tr.entry td.filename { width: 30%; }
85 tr.entry td.size { text-align: right; font-size: 90%; }
85 tr.entry td.size { text-align: right; font-size: 90%; }
86 tr.entry td.revision, tr.entry td.author { text-align: center; }
86 tr.entry td.revision, tr.entry td.author { text-align: center; }
87 tr.entry td.age { text-align: right; }
87 tr.entry td.age { text-align: right; }
88
88
89 tr.changeset td.author { text-align: center; width: 15%; }
89 tr.changeset td.author { text-align: center; width: 15%; }
90 tr.changeset td.committed_on { text-align: center; width: 15%; }
90 tr.changeset td.committed_on { text-align: center; width: 15%; }
91
91
92 tr.message { height: 2.6em; }
92 tr.message { height: 2.6em; }
93 tr.message td.last_message { font-size: 80%; }
93 tr.message td.last_message { font-size: 80%; }
94 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
94 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
95 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
95 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
96
96
97 tr.user td { width:13%; }
97 tr.user td { width:13%; }
98 tr.user td.email { width:18%; }
98 tr.user td.email { width:18%; }
99 tr.user td { white-space: nowrap; }
99 tr.user td { white-space: nowrap; }
100 tr.user.locked, tr.user.registered { color: #aaa; }
100 tr.user.locked, tr.user.registered { color: #aaa; }
101 tr.user.locked a, tr.user.registered a { color: #aaa; }
101 tr.user.locked a, tr.user.registered a { color: #aaa; }
102
102
103 table.list tbody tr:hover { background-color:#ffffdd; }
103 table.list tbody tr:hover { background-color:#ffffdd; }
104 table td {padding:2px;}
104 table td {padding:2px;}
105 table p {margin:0;}
105 table p {margin:0;}
106 .odd {background-color:#f6f7f8;}
106 .odd {background-color:#f6f7f8;}
107 .even {background-color: #fff;}
107 .even {background-color: #fff;}
108
108
109 .highlight { background-color: #FCFD8D;}
109 .highlight { background-color: #FCFD8D;}
110 .highlight.token-1 { background-color: #faa;}
110 .highlight.token-1 { background-color: #faa;}
111 .highlight.token-2 { background-color: #afa;}
111 .highlight.token-2 { background-color: #afa;}
112 .highlight.token-3 { background-color: #aaf;}
112 .highlight.token-3 { background-color: #aaf;}
113
113
114 .box{
114 .box{
115 padding:6px;
115 padding:6px;
116 margin-bottom: 10px;
116 margin-bottom: 10px;
117 background-color:#f6f6f6;
117 background-color:#f6f6f6;
118 color:#505050;
118 color:#505050;
119 line-height:1.5em;
119 line-height:1.5em;
120 border: 1px solid #e4e4e4;
120 border: 1px solid #e4e4e4;
121 }
121 }
122
122
123 div.square {
123 div.square {
124 border: 1px solid #999;
124 border: 1px solid #999;
125 float: left;
125 float: left;
126 margin: .3em .4em 0 .4em;
126 margin: .3em .4em 0 .4em;
127 overflow: hidden;
127 overflow: hidden;
128 width: .6em; height: .6em;
128 width: .6em; height: .6em;
129 }
129 }
130
130
131 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
131 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
132 .contextual input {font-size:0.9em;}
132 .contextual input {font-size:0.9em;}
133
133
134 .splitcontentleft{float:left; width:49%;}
134 .splitcontentleft{float:left; width:49%;}
135 .splitcontentright{float:right; width:49%;}
135 .splitcontentright{float:right; width:49%;}
136 form {display: inline;}
136 form {display: inline;}
137 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
137 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
138 fieldset {border: 1px solid #e4e4e4; margin:0;}
138 fieldset {border: 1px solid #e4e4e4; margin:0;}
139 legend {color: #484848;}
139 legend {color: #484848;}
140 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
140 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
141 textarea.wiki-edit { width: 99%; }
141 textarea.wiki-edit { width: 99%; }
142 li p {margin-top: 0;}
142 li p {margin-top: 0;}
143 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
143 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
144
144
145 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
145 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
146 div#issue-changesets .changeset { padding: 4px;}
146 div#issue-changesets .changeset { padding: 4px;}
147 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
147 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
148 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
148 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
149
149
150 div#activity dl { margin-left: 2em; }
151 div#activity dd { margin-bottom: 1em; }
152 div#activity dt { margin-bottom: 1px; }
153 div#activity dt .time { color: #777; font-size: 80%; }
154 div#activity dd .description { font-style: italic; }
155
150 .autoscroll {overflow-x: auto; padding:1px; width:100%; margin-bottom: 1.2em;}
156 .autoscroll {overflow-x: auto; padding:1px; width:100%; margin-bottom: 1.2em;}
151 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
157 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
152
158
153 .pagination {font-size: 90%}
159 .pagination {font-size: 90%}
154 p.pagination {margin-top:8px;}
160 p.pagination {margin-top:8px;}
155
161
156 /***** Tabular forms ******/
162 /***** Tabular forms ******/
157 .tabular p{
163 .tabular p{
158 margin: 0;
164 margin: 0;
159 padding: 5px 0 8px 0;
165 padding: 5px 0 8px 0;
160 padding-left: 180px; /*width of left column containing the label elements*/
166 padding-left: 180px; /*width of left column containing the label elements*/
161 height: 1%;
167 height: 1%;
162 clear:left;
168 clear:left;
163 }
169 }
164
170
165 .tabular label{
171 .tabular label{
166 font-weight: bold;
172 font-weight: bold;
167 float: left;
173 float: left;
168 text-align: right;
174 text-align: right;
169 margin-left: -180px; /*width of left column*/
175 margin-left: -180px; /*width of left column*/
170 width: 175px; /*width of labels. Should be smaller than left column to create some right
176 width: 175px; /*width of labels. Should be smaller than left column to create some right
171 margin*/
177 margin*/
172 }
178 }
173
179
174 .tabular label.floating{
180 .tabular label.floating{
175 font-weight: normal;
181 font-weight: normal;
176 margin-left: 0px;
182 margin-left: 0px;
177 text-align: left;
183 text-align: left;
178 width: 200px;
184 width: 200px;
179 }
185 }
180
186
181 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
187 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
182
188
183 .tabular.settings p{ padding-left: 300px; }
189 .tabular.settings p{ padding-left: 300px; }
184 .tabular.settings label{ margin-left: -300px; width: 295px; }
190 .tabular.settings label{ margin-left: -300px; width: 295px; }
185
191
186 .required {color: #bb0000;}
192 .required {color: #bb0000;}
187 .summary {font-style: italic;}
193 .summary {font-style: italic;}
188
194
189 div.attachments p { margin:4px 0 2px 0; }
195 div.attachments p { margin:4px 0 2px 0; }
190
196
191 /***** Flash & error messages ****/
197 /***** Flash & error messages ****/
192 #errorExplanation, div.flash, .nodata {
198 #errorExplanation, div.flash, .nodata {
193 padding: 4px 4px 4px 30px;
199 padding: 4px 4px 4px 30px;
194 margin-bottom: 12px;
200 margin-bottom: 12px;
195 font-size: 1.1em;
201 font-size: 1.1em;
196 border: 2px solid;
202 border: 2px solid;
197 }
203 }
198
204
199 div.flash {margin-top: 8px;}
205 div.flash {margin-top: 8px;}
200
206
201 div.flash.error, #errorExplanation {
207 div.flash.error, #errorExplanation {
202 background: url(../images/false.png) 8px 5px no-repeat;
208 background: url(../images/false.png) 8px 5px no-repeat;
203 background-color: #ffe3e3;
209 background-color: #ffe3e3;
204 border-color: #dd0000;
210 border-color: #dd0000;
205 color: #550000;
211 color: #550000;
206 }
212 }
207
213
208 div.flash.notice {
214 div.flash.notice {
209 background: url(../images/true.png) 8px 5px no-repeat;
215 background: url(../images/true.png) 8px 5px no-repeat;
210 background-color: #dfffdf;
216 background-color: #dfffdf;
211 border-color: #9fcf9f;
217 border-color: #9fcf9f;
212 color: #005f00;
218 color: #005f00;
213 }
219 }
214
220
215 .nodata {
221 .nodata {
216 text-align: center;
222 text-align: center;
217 background-color: #FFEBC1;
223 background-color: #FFEBC1;
218 border-color: #FDBF3B;
224 border-color: #FDBF3B;
219 color: #A6750C;
225 color: #A6750C;
220 }
226 }
221
227
222 #errorExplanation ul { font-size: 0.9em;}
228 #errorExplanation ul { font-size: 0.9em;}
223
229
224 /***** Ajax indicator ******/
230 /***** Ajax indicator ******/
225 #ajax-indicator {
231 #ajax-indicator {
226 position: absolute; /* fixed not supported by IE */
232 position: absolute; /* fixed not supported by IE */
227 background-color:#eee;
233 background-color:#eee;
228 border: 1px solid #bbb;
234 border: 1px solid #bbb;
229 top:35%;
235 top:35%;
230 left:40%;
236 left:40%;
231 width:20%;
237 width:20%;
232 font-weight:bold;
238 font-weight:bold;
233 text-align:center;
239 text-align:center;
234 padding:0.6em;
240 padding:0.6em;
235 z-index:100;
241 z-index:100;
236 filter:alpha(opacity=50);
242 filter:alpha(opacity=50);
237 opacity: 0.5;
243 opacity: 0.5;
238 -khtml-opacity: 0.5;
244 -khtml-opacity: 0.5;
239 }
245 }
240
246
241 html>body #ajax-indicator { position: fixed; }
247 html>body #ajax-indicator { position: fixed; }
242
248
243 #ajax-indicator span {
249 #ajax-indicator span {
244 background-position: 0% 40%;
250 background-position: 0% 40%;
245 background-repeat: no-repeat;
251 background-repeat: no-repeat;
246 background-image: url(../images/loading.gif);
252 background-image: url(../images/loading.gif);
247 padding-left: 26px;
253 padding-left: 26px;
248 vertical-align: bottom;
254 vertical-align: bottom;
249 }
255 }
250
256
251 /***** Calendar *****/
257 /***** Calendar *****/
252 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
258 table.cal {border-collapse: collapse; width: 100%; margin: 8px 0 6px 0;border: 1px solid #d7d7d7;}
253 table.cal thead th {width: 14%;}
259 table.cal thead th {width: 14%;}
254 table.cal tbody tr {height: 100px;}
260 table.cal tbody tr {height: 100px;}
255 table.cal th { background-color:#EEEEEE; padding: 4px; }
261 table.cal th { background-color:#EEEEEE; padding: 4px; }
256 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
262 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
257 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
263 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
258 table.cal td.odd p.day-num {color: #bbb;}
264 table.cal td.odd p.day-num {color: #bbb;}
259 table.cal td.today {background:#ffffdd;}
265 table.cal td.today {background:#ffffdd;}
260 table.cal td.today p.day-num {font-weight: bold;}
266 table.cal td.today p.day-num {font-weight: bold;}
261
267
262 /***** Tooltips ******/
268 /***** Tooltips ******/
263 .tooltip{position:relative;z-index:24;}
269 .tooltip{position:relative;z-index:24;}
264 .tooltip:hover{z-index:25;color:#000;}
270 .tooltip:hover{z-index:25;color:#000;}
265 .tooltip span.tip{display: none; text-align:left;}
271 .tooltip span.tip{display: none; text-align:left;}
266
272
267 div.tooltip:hover span.tip{
273 div.tooltip:hover span.tip{
268 display:block;
274 display:block;
269 position:absolute;
275 position:absolute;
270 top:12px; left:24px; width:270px;
276 top:12px; left:24px; width:270px;
271 border:1px solid #555;
277 border:1px solid #555;
272 background-color:#fff;
278 background-color:#fff;
273 padding: 4px;
279 padding: 4px;
274 font-size: 0.8em;
280 font-size: 0.8em;
275 color:#505050;
281 color:#505050;
276 }
282 }
277
283
278 /***** Progress bar *****/
284 /***** Progress bar *****/
279 table.progress {
285 table.progress {
280 border: 1px solid #D7D7D7;
286 border: 1px solid #D7D7D7;
281 border-collapse: collapse;
287 border-collapse: collapse;
282 border-spacing: 0pt;
288 border-spacing: 0pt;
283 empty-cells: show;
289 empty-cells: show;
284 text-align: center;
290 text-align: center;
285 float:left;
291 float:left;
286 margin: 1px 6px 1px 0px;
292 margin: 1px 6px 1px 0px;
287 }
293 }
288
294
289 table.progress td { height: 0.9em; }
295 table.progress td { height: 0.9em; }
290 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
296 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
291 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
297 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
292 table.progress td.open { background: #FFF none repeat scroll 0%; }
298 table.progress td.open { background: #FFF none repeat scroll 0%; }
293 p.pourcent {font-size: 80%;}
299 p.pourcent {font-size: 80%;}
294 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
300 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
295
301
296 div#status_by { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; }
302 div#status_by { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; }
297
303
298 /***** Tabs *****/
304 /***** Tabs *****/
299 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
305 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
300 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
306 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
301 #content .tabs>ul { bottom:-1px; } /* others */
307 #content .tabs>ul { bottom:-1px; } /* others */
302 #content .tabs ul li {
308 #content .tabs ul li {
303 float:left;
309 float:left;
304 list-style-type:none;
310 list-style-type:none;
305 white-space:nowrap;
311 white-space:nowrap;
306 margin-right:8px;
312 margin-right:8px;
307 background:#fff;
313 background:#fff;
308 }
314 }
309 #content .tabs ul li a{
315 #content .tabs ul li a{
310 display:block;
316 display:block;
311 font-size: 0.9em;
317 font-size: 0.9em;
312 text-decoration:none;
318 text-decoration:none;
313 line-height:1.3em;
319 line-height:1.3em;
314 padding:4px 6px 4px 6px;
320 padding:4px 6px 4px 6px;
315 border: 1px solid #ccc;
321 border: 1px solid #ccc;
316 border-bottom: 1px solid #bbbbbb;
322 border-bottom: 1px solid #bbbbbb;
317 background-color: #eeeeee;
323 background-color: #eeeeee;
318 color:#777;
324 color:#777;
319 font-weight:bold;
325 font-weight:bold;
320 }
326 }
321
327
322 #content .tabs ul li a:hover {
328 #content .tabs ul li a:hover {
323 background-color: #ffffdd;
329 background-color: #ffffdd;
324 text-decoration:none;
330 text-decoration:none;
325 }
331 }
326
332
327 #content .tabs ul li a.selected {
333 #content .tabs ul li a.selected {
328 background-color: #fff;
334 background-color: #fff;
329 border: 1px solid #bbbbbb;
335 border: 1px solid #bbbbbb;
330 border-bottom: 1px solid #fff;
336 border-bottom: 1px solid #fff;
331 }
337 }
332
338
333 #content .tabs ul li a.selected:hover {
339 #content .tabs ul li a.selected:hover {
334 background-color: #fff;
340 background-color: #fff;
335 }
341 }
336
342
337 /***** Diff *****/
343 /***** Diff *****/
338 .diff_out { background: #fcc; }
344 .diff_out { background: #fcc; }
339 .diff_in { background: #cfc; }
345 .diff_in { background: #cfc; }
340
346
341 /***** Wiki *****/
347 /***** Wiki *****/
342 div.wiki table {
348 div.wiki table {
343 border: 1px solid #505050;
349 border: 1px solid #505050;
344 border-collapse: collapse;
350 border-collapse: collapse;
345 }
351 }
346
352
347 div.wiki table, div.wiki td, div.wiki th {
353 div.wiki table, div.wiki td, div.wiki th {
348 border: 1px solid #bbb;
354 border: 1px solid #bbb;
349 padding: 4px;
355 padding: 4px;
350 }
356 }
351
357
352 div.wiki .external {
358 div.wiki .external {
353 background-position: 0% 60%;
359 background-position: 0% 60%;
354 background-repeat: no-repeat;
360 background-repeat: no-repeat;
355 padding-left: 12px;
361 padding-left: 12px;
356 background-image: url(../images/external.png);
362 background-image: url(../images/external.png);
357 }
363 }
358
364
359 div.wiki a.new {
365 div.wiki a.new {
360 color: #b73535;
366 color: #b73535;
361 }
367 }
362
368
363 div.wiki pre {
369 div.wiki pre {
364 margin: 1em 1em 1em 1.6em;
370 margin: 1em 1em 1em 1.6em;
365 padding: 2px;
371 padding: 2px;
366 background-color: #fafafa;
372 background-color: #fafafa;
367 border: 1px solid #dadada;
373 border: 1px solid #dadada;
368 width:95%;
374 width:95%;
369 overflow-x: auto;
375 overflow-x: auto;
370 }
376 }
371
377
372 div.wiki div.toc {
378 div.wiki div.toc {
373 background-color: #ffffdd;
379 background-color: #ffffdd;
374 border: 1px solid #e4e4e4;
380 border: 1px solid #e4e4e4;
375 padding: 4px;
381 padding: 4px;
376 line-height: 1.2em;
382 line-height: 1.2em;
377 margin-bottom: 12px;
383 margin-bottom: 12px;
378 margin-right: 12px;
384 margin-right: 12px;
379 display: table
385 display: table
380 }
386 }
381 * html div.wiki div.toc { width: 50%; } /* IE6 doesn't autosize div */
387 * html div.wiki div.toc { width: 50%; } /* IE6 doesn't autosize div */
382
388
383 div.wiki div.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
389 div.wiki div.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
384 div.wiki div.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
390 div.wiki div.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
385
391
386 div.wiki div.toc a {
392 div.wiki div.toc a {
387 display: block;
393 display: block;
388 font-size: 0.9em;
394 font-size: 0.9em;
389 font-weight: normal;
395 font-weight: normal;
390 text-decoration: none;
396 text-decoration: none;
391 color: #606060;
397 color: #606060;
392 }
398 }
393 div.wiki div.toc a:hover { color: #c61a1a; text-decoration: underline;}
399 div.wiki div.toc a:hover { color: #c61a1a; text-decoration: underline;}
394
400
395 div.wiki div.toc a.heading2 { margin-left: 6px; }
401 div.wiki div.toc a.heading2 { margin-left: 6px; }
396 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
402 div.wiki div.toc a.heading3 { margin-left: 12px; font-size: 0.8em; }
397
403
398 /***** My page layout *****/
404 /***** My page layout *****/
399 .block-receiver {
405 .block-receiver {
400 border:1px dashed #c0c0c0;
406 border:1px dashed #c0c0c0;
401 margin-bottom: 20px;
407 margin-bottom: 20px;
402 padding: 15px 0 15px 0;
408 padding: 15px 0 15px 0;
403 }
409 }
404
410
405 .mypage-box {
411 .mypage-box {
406 margin:0 0 20px 0;
412 margin:0 0 20px 0;
407 color:#505050;
413 color:#505050;
408 line-height:1.5em;
414 line-height:1.5em;
409 }
415 }
410
416
411 .handle {
417 .handle {
412 cursor: move;
418 cursor: move;
413 }
419 }
414
420
415 a.close-icon {
421 a.close-icon {
416 display:block;
422 display:block;
417 margin-top:3px;
423 margin-top:3px;
418 overflow:hidden;
424 overflow:hidden;
419 width:12px;
425 width:12px;
420 height:12px;
426 height:12px;
421 background-repeat: no-repeat;
427 background-repeat: no-repeat;
422 cursor:pointer;
428 cursor:pointer;
423 background-image:url('../images/close.png');
429 background-image:url('../images/close.png');
424 }
430 }
425
431
426 a.close-icon:hover {
432 a.close-icon:hover {
427 background-image:url('../images/close_hl.png');
433 background-image:url('../images/close_hl.png');
428 }
434 }
429
435
430 /***** Gantt chart *****/
436 /***** Gantt chart *****/
431 .gantt_hdr {
437 .gantt_hdr {
432 position:absolute;
438 position:absolute;
433 top:0;
439 top:0;
434 height:16px;
440 height:16px;
435 border-top: 1px solid #c0c0c0;
441 border-top: 1px solid #c0c0c0;
436 border-bottom: 1px solid #c0c0c0;
442 border-bottom: 1px solid #c0c0c0;
437 border-right: 1px solid #c0c0c0;
443 border-right: 1px solid #c0c0c0;
438 text-align: center;
444 text-align: center;
439 overflow: hidden;
445 overflow: hidden;
440 }
446 }
441
447
442 .task {
448 .task {
443 position: absolute;
449 position: absolute;
444 height:8px;
450 height:8px;
445 font-size:0.8em;
451 font-size:0.8em;
446 color:#888;
452 color:#888;
447 padding:0;
453 padding:0;
448 margin:0;
454 margin:0;
449 line-height:0.8em;
455 line-height:0.8em;
450 }
456 }
451
457
452 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
458 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
453 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
459 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
454 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
460 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
455 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
461 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
456
462
457 /***** Icons *****/
463 /***** Icons *****/
458 .icon {
464 .icon {
459 background-position: 0% 40%;
465 background-position: 0% 40%;
460 background-repeat: no-repeat;
466 background-repeat: no-repeat;
461 padding-left: 20px;
467 padding-left: 20px;
462 padding-top: 2px;
468 padding-top: 2px;
463 padding-bottom: 3px;
469 padding-bottom: 3px;
464 }
470 }
465
471
466 .icon22 {
472 .icon22 {
467 background-position: 0% 40%;
473 background-position: 0% 40%;
468 background-repeat: no-repeat;
474 background-repeat: no-repeat;
469 padding-left: 26px;
475 padding-left: 26px;
470 line-height: 22px;
476 line-height: 22px;
471 vertical-align: middle;
477 vertical-align: middle;
472 }
478 }
473
479
474 .icon-add { background-image: url(../images/add.png); }
480 .icon-add { background-image: url(../images/add.png); }
475 .icon-edit { background-image: url(../images/edit.png); }
481 .icon-edit { background-image: url(../images/edit.png); }
476 .icon-copy { background-image: url(../images/copy.png); }
482 .icon-copy { background-image: url(../images/copy.png); }
477 .icon-del { background-image: url(../images/delete.png); }
483 .icon-del { background-image: url(../images/delete.png); }
478 .icon-move { background-image: url(../images/move.png); }
484 .icon-move { background-image: url(../images/move.png); }
479 .icon-save { background-image: url(../images/save.png); }
485 .icon-save { background-image: url(../images/save.png); }
480 .icon-cancel { background-image: url(../images/cancel.png); }
486 .icon-cancel { background-image: url(../images/cancel.png); }
481 .icon-pdf { background-image: url(../images/pdf.png); }
487 .icon-pdf { background-image: url(../images/pdf.png); }
482 .icon-csv { background-image: url(../images/csv.png); }
488 .icon-csv { background-image: url(../images/csv.png); }
483 .icon-html { background-image: url(../images/html.png); }
489 .icon-html { background-image: url(../images/html.png); }
484 .icon-image { background-image: url(../images/image.png); }
490 .icon-image { background-image: url(../images/image.png); }
485 .icon-txt { background-image: url(../images/txt.png); }
491 .icon-txt { background-image: url(../images/txt.png); }
486 .icon-file { background-image: url(../images/file.png); }
492 .icon-file { background-image: url(../images/file.png); }
487 .icon-folder { background-image: url(../images/folder.png); }
493 .icon-folder { background-image: url(../images/folder.png); }
488 .open .icon-folder { background-image: url(../images/folder_open.png); }
494 .open .icon-folder { background-image: url(../images/folder_open.png); }
489 .icon-package { background-image: url(../images/package.png); }
495 .icon-package { background-image: url(../images/package.png); }
490 .icon-home { background-image: url(../images/home.png); }
496 .icon-home { background-image: url(../images/home.png); }
491 .icon-user { background-image: url(../images/user.png); }
497 .icon-user { background-image: url(../images/user.png); }
492 .icon-mypage { background-image: url(../images/user_page.png); }
498 .icon-mypage { background-image: url(../images/user_page.png); }
493 .icon-admin { background-image: url(../images/admin.png); }
499 .icon-admin { background-image: url(../images/admin.png); }
494 .icon-projects { background-image: url(../images/projects.png); }
500 .icon-projects { background-image: url(../images/projects.png); }
495 .icon-logout { background-image: url(../images/logout.png); }
501 .icon-logout { background-image: url(../images/logout.png); }
496 .icon-help { background-image: url(../images/help.png); }
502 .icon-help { background-image: url(../images/help.png); }
497 .icon-attachment { background-image: url(../images/attachment.png); }
503 .icon-attachment { background-image: url(../images/attachment.png); }
498 .icon-index { background-image: url(../images/index.png); }
504 .icon-index { background-image: url(../images/index.png); }
499 .icon-history { background-image: url(../images/history.png); }
505 .icon-history { background-image: url(../images/history.png); }
500 .icon-feed { background-image: url(../images/feed.png); }
506 .icon-feed { background-image: url(../images/feed.png); }
501 .icon-time { background-image: url(../images/time.png); }
507 .icon-time { background-image: url(../images/time.png); }
502 .icon-stats { background-image: url(../images/stats.png); }
508 .icon-stats { background-image: url(../images/stats.png); }
503 .icon-warning { background-image: url(../images/warning.png); }
509 .icon-warning { background-image: url(../images/warning.png); }
504 .icon-fav { background-image: url(../images/fav.png); }
510 .icon-fav { background-image: url(../images/fav.png); }
505 .icon-fav-off { background-image: url(../images/fav_off.png); }
511 .icon-fav-off { background-image: url(../images/fav_off.png); }
506 .icon-reload { background-image: url(../images/reload.png); }
512 .icon-reload { background-image: url(../images/reload.png); }
507 .icon-lock { background-image: url(../images/locked.png); }
513 .icon-lock { background-image: url(../images/locked.png); }
508 .icon-unlock { background-image: url(../images/unlock.png); }
514 .icon-unlock { background-image: url(../images/unlock.png); }
509 .icon-note { background-image: url(../images/note.png); }
515 .icon-note { background-image: url(../images/note.png); }
510 .icon-checked { background-image: url(../images/true.png); }
516 .icon-checked { background-image: url(../images/true.png); }
511
517
512 .icon22-projects { background-image: url(../images/22x22/projects.png); }
518 .icon22-projects { background-image: url(../images/22x22/projects.png); }
513 .icon22-users { background-image: url(../images/22x22/users.png); }
519 .icon22-users { background-image: url(../images/22x22/users.png); }
514 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
520 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
515 .icon22-role { background-image: url(../images/22x22/role.png); }
521 .icon22-role { background-image: url(../images/22x22/role.png); }
516 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
522 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
517 .icon22-options { background-image: url(../images/22x22/options.png); }
523 .icon22-options { background-image: url(../images/22x22/options.png); }
518 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
524 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
519 .icon22-authent { background-image: url(../images/22x22/authent.png); }
525 .icon22-authent { background-image: url(../images/22x22/authent.png); }
520 .icon22-info { background-image: url(../images/22x22/info.png); }
526 .icon22-info { background-image: url(../images/22x22/info.png); }
521 .icon22-comment { background-image: url(../images/22x22/comment.png); }
527 .icon22-comment { background-image: url(../images/22x22/comment.png); }
522 .icon22-package { background-image: url(../images/22x22/package.png); }
528 .icon22-package { background-image: url(../images/22x22/package.png); }
523 .icon22-settings { background-image: url(../images/22x22/settings.png); }
529 .icon22-settings { background-image: url(../images/22x22/settings.png); }
524 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
530 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
525
531
526 /***** Media print specific styles *****/
532 /***** Media print specific styles *****/
527 @media print {
533 @media print {
528 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual { display:none; }
534 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual { display:none; }
529 #main { background: #fff; }
535 #main { background: #fff; }
530 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
536 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; }
531 }
537 }
General Comments 0
You need to be logged in to leave comments. Login now