##// END OF EJS Templates
Makes tickets and timelogs filters collapsible (UI)....
Jean-Philippe Lang -
r2777:3477ded32af3
parent child
Show More
1 NO CONTENT: new file 100644, binary diff hidden
1 NO CONTENT: new file 100644, binary diff hidden
@@ -1,55 +1,56
1 1 <% form_tag({}, :id => 'query_form') do %>
2 2 <% if @query.new_record? %>
3 3 <h2><%= l(:label_calendar) %></h2>
4 <fieldset id="filters"><legend><%= l(:label_filter_plural) %></legend>
4 <fieldset id="filters" class="collapsible">
5 <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
6 <div>
5 7 <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
8 </div>
6 9 </fieldset>
7 10 <% else %>
8 11 <h2><%=h @query.name %></h2>
9 12 <% html_title @query.name %>
10 13 <% end %>
11 14
12 <fieldset id="date-range"><legend><%= l(:label_date_range) %></legend>
13 <%= select_month(@month, :prefix => "month", :discard_type => true) %>
14 <%= select_year(@year, :prefix => "year", :discard_type => true) %>
15 </fieldset>
16
17 <p style="float:right; margin:0px;">
15 <p style="float:right;">
18 16 <%= link_to_remote ('&#171; ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")),
19 17 {:update => "content", :url => { :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) }},
20 18 {:href => url_for(:action => 'calendar', :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1))}
21 19 %> |
22 20 <%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' &#187;'),
23 21 {:update => "content", :url => { :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) }},
24 22 {:href => url_for(:action => 'calendar', :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1))}
25 23 %>
26 24 </p>
27 25
28 26 <p class="buttons">
27 <%= select_month(@month, :prefix => "month", :discard_type => true) %>
28 <%= select_year(@year, :prefix => "year", :discard_type => true) %>
29
29 30 <%= link_to_remote l(:button_apply),
30 31 { :url => { :set_filter => (@query.new_record? ? 1 : nil) },
31 32 :update => "content",
32 33 :with => "Form.serialize('query_form')"
33 34 }, :class => 'icon icon-checked' %>
34 35
35 36 <%= link_to_remote l(:button_clear),
36 37 { :url => { :set_filter => (@query.new_record? ? 1 : nil) },
37 38 :update => "content",
38 39 }, :class => 'icon icon-reload' if @query.new_record? %>
39 40 </p>
40 41 <% end %>
41 42
42 43 <%= error_messages_for 'query' %>
43 44 <% if @query.valid? %>
44 45 <%= render :partial => 'common/calendar', :locals => {:calendar => @calendar} %>
45 46
46 47 <%= image_tag 'arrow_from.png' %>&nbsp;&nbsp;<%= l(:text_tip_task_begin_day) %><br />
47 48 <%= image_tag 'arrow_to.png' %>&nbsp;&nbsp;<%= l(:text_tip_task_end_day) %><br />
48 49 <%= image_tag 'arrow_bw.png' %>&nbsp;&nbsp;<%= l(:text_tip_task_begin_end_day) %><br />
49 50 <% end %>
50 51
51 52 <% content_for :sidebar do %>
52 53 <%= render :partial => 'issues/sidebar' %>
53 54 <% end %>
54 55
55 56 <% html_title(l(:label_calendar)) -%>
@@ -1,254 +1,255
1 1 <% form_tag(params.merge(:month => nil, :year => nil, :months => nil), :id => 'query_form') do %>
2 2 <% if @query.new_record? %>
3 3 <h2><%=l(:label_gantt)%></h2>
4 <fieldset id="filters"><legend><%= l(:label_filter_plural) %></legend>
4 <fieldset id="filters" class="collapsible">
5 <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
6 <div>
5 7 <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
8 </div>
6 9 </fieldset>
7 10 <% else %>
8 11 <h2><%=h @query.name %></h2>
9 12 <% html_title @query.name %>
10 13 <% end %>
11 14
12 <fieldset id="date-range"><legend><%= l(:label_date_range) %></legend>
13 <%= text_field_tag 'months', @gantt.months, :size => 2 %>
14 <%= l(:label_months_from) %>
15 <%= select_month(@gantt.month_from, :prefix => "month", :discard_type => true) %>
16 <%= select_year(@gantt.year_from, :prefix => "year", :discard_type => true) %>
17 <%= hidden_field_tag 'zoom', @gantt.zoom %>
18 </fieldset>
19
20 <p style="float:right; margin:0px;">
15 <p style="float:right;">
21 16 <%= if @gantt.zoom < 4
22 17 link_to_remote image_tag('zoom_in.png'), {:url => @gantt.params.merge(:zoom => (@gantt.zoom+1)), :update => 'content'}, {:href => url_for(@gantt.params.merge(:zoom => (@gantt.zoom+1)))}
23 18 else
24 19 image_tag 'zoom_in_g.png'
25 20 end %>
26 21 <%= if @gantt.zoom > 1
27 22 link_to_remote image_tag('zoom_out.png'), {:url => @gantt.params.merge(:zoom => (@gantt.zoom-1)), :update => 'content'}, {:href => url_for(@gantt.params.merge(:zoom => (@gantt.zoom-1)))}
28 23 else
29 24 image_tag 'zoom_out_g.png'
30 25 end %>
31 26 </p>
32 27
33 28 <p class="buttons">
29 <%= text_field_tag 'months', @gantt.months, :size => 2 %>
30 <%= l(:label_months_from) %>
31 <%= select_month(@gantt.month_from, :prefix => "month", :discard_type => true) %>
32 <%= select_year(@gantt.year_from, :prefix => "year", :discard_type => true) %>
33 <%= hidden_field_tag 'zoom', @gantt.zoom %>
34
34 35 <%= link_to_remote l(:button_apply),
35 36 { :url => { :set_filter => (@query.new_record? ? 1 : nil) },
36 37 :update => "content",
37 38 :with => "Form.serialize('query_form')"
38 39 }, :class => 'icon icon-checked' %>
39 40
40 41 <%= link_to_remote l(:button_clear),
41 42 { :url => { :set_filter => (@query.new_record? ? 1 : nil) },
42 43 :update => "content",
43 44 }, :class => 'icon icon-reload' if @query.new_record? %>
44 45 </p>
45 46 <% end %>
46 47
47 48 <%= error_messages_for 'query' %>
48 49 <% if @query.valid? %>
49 50 <% zoom = 1
50 51 @gantt.zoom.times { zoom = zoom * 2 }
51 52
52 53 subject_width = 330
53 54 header_heigth = 18
54 55
55 56 headers_height = header_heigth
56 57 show_weeks = false
57 58 show_days = false
58 59
59 60 if @gantt.zoom >1
60 61 show_weeks = true
61 62 headers_height = 2*header_heigth
62 63 if @gantt.zoom > 2
63 64 show_days = true
64 65 headers_height = 3*header_heigth
65 66 end
66 67 end
67 68
68 69 g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
69 70 g_height = [(20 * @gantt.events.length + 6)+150, 206].max
70 71 t_height = g_height + headers_height
71 72 %>
72 73
73 74 <table width="100%" style="border:0; border-collapse: collapse;">
74 75 <tr>
75 76 <td style="width:<%= subject_width %>px; padding:0px;">
76 77
77 78 <div style="position:relative;height:<%= t_height + 24 %>px;width:<%= subject_width + 1 %>px;">
78 79 <div style="right:-2px;width:<%= subject_width %>px;height:<%= headers_height %>px;background: #eee;" class="gantt_hdr"></div>
79 80 <div style="right:-2px;width:<%= subject_width %>px;height:<%= t_height %>px;border-left: 1px solid #c0c0c0;overflow:hidden;" class="gantt_hdr"></div>
80 81 <%
81 82 #
82 83 # Tasks subjects
83 84 #
84 85 top = headers_height + 8
85 86 @gantt.events.each do |i| %>
86 87 <div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:4px;overflow:hidden;"><small>
87 88 <% if i.is_a? Issue %>
88 89 <%= h("#{i.project} -") unless @project && @project == i.project %>
89 90 <%= link_to_issue i %>: <%=h i.subject %>
90 91 <% else %>
91 92 <span class="icon icon-package">
92 93 <%= h("#{i.project} -") unless @project && @project == i.project %>
93 94 <%= link_to_version i %>
94 95 </span>
95 96 <% end %>
96 97 </small></div>
97 98 <% top = top + 20
98 99 end %>
99 100 </div>
100 101 </td>
101 102 <td>
102 103
103 104 <div style="position:relative;height:<%= t_height + 24 %>px;overflow:auto;">
104 105 <div style="width:<%= g_width-1 %>px;height:<%= headers_height %>px;background: #eee;" class="gantt_hdr">&nbsp;</div>
105 106 <%
106 107 #
107 108 # Months headers
108 109 #
109 110 month_f = @gantt.date_from
110 111 left = 0
111 112 height = (show_weeks ? header_heigth : header_heigth + g_height)
112 113 @gantt.months.times do
113 114 width = ((month_f >> 1) - month_f) * zoom - 1
114 115 %>
115 116 <div style="left:<%= left %>px;width:<%= width %>px;height:<%= height %>px;" class="gantt_hdr">
116 117 <%= link_to "#{month_f.year}-#{month_f.month}", @gantt.params.merge(:year => month_f.year, :month => month_f.month), :title => "#{month_name(month_f.month)} #{month_f.year}"%>
117 118 </div>
118 119 <%
119 120 left = left + width + 1
120 121 month_f = month_f >> 1
121 122 end %>
122 123
123 124 <%
124 125 #
125 126 # Weeks headers
126 127 #
127 128 if show_weeks
128 129 left = 0
129 130 height = (show_days ? header_heigth-1 : header_heigth-1 + g_height)
130 131 if @gantt.date_from.cwday == 1
131 132 # @date_from is monday
132 133 week_f = @gantt.date_from
133 134 else
134 135 # find next monday after @date_from
135 136 week_f = @gantt.date_from + (7 - @gantt.date_from.cwday + 1)
136 137 width = (7 - @gantt.date_from.cwday + 1) * zoom-1
137 138 %>
138 139 <div style="left:<%= left %>px;top:19px;width:<%= width %>px;height:<%= height %>px;" class="gantt_hdr">&nbsp;</div>
139 140 <%
140 141 left = left + width+1
141 142 end %>
142 143 <%
143 144 while week_f <= @gantt.date_to
144 145 width = (week_f + 6 <= @gantt.date_to) ? 7 * zoom -1 : (@gantt.date_to - week_f + 1) * zoom-1
145 146 %>
146 147 <div style="left:<%= left %>px;top:19px;width:<%= width %>px;height:<%= height %>px;" class="gantt_hdr">
147 148 <small><%= week_f.cweek if width >= 16 %></small>
148 149 </div>
149 150 <%
150 151 left = left + width+1
151 152 week_f = week_f+7
152 153 end
153 154 end %>
154 155
155 156 <%
156 157 #
157 158 # Days headers
158 159 #
159 160 if show_days
160 161 left = 0
161 162 height = g_height + header_heigth - 1
162 163 wday = @gantt.date_from.cwday
163 164 (@gantt.date_to - @gantt.date_from + 1).to_i.times do
164 165 width = zoom - 1
165 166 %>
166 167 <div style="left:<%= left %>px;top:37px;width:<%= width %>px;height:<%= height %>px;font-size:0.7em;<%= "background:#f1f1f1;" if wday > 5 %>" class="gantt_hdr">
167 168 <%= day_name(wday).first %>
168 169 </div>
169 170 <%
170 171 left = left + width+1
171 172 wday = wday + 1
172 173 wday = 1 if wday > 7
173 174 end
174 175 end %>
175 176
176 177 <%
177 178 #
178 179 # Tasks
179 180 #
180 181 top = headers_height + 10
181 182 @gantt.events.each do |i|
182 183 if i.is_a? Issue
183 184 i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from )
184 185 i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to )
185 186
186 187 i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
187 188 i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date )
188 189 i_done_date = (i_done_date >= @gantt.date_to ? @gantt.date_to : i_done_date )
189 190
190 191 i_late_date = [i_end_date, Date.today].min if i_start_date < Date.today
191 192
192 193 i_left = ((i_start_date - @gantt.date_from)*zoom).floor
193 194 i_width = ((i_end_date - i_start_date + 1)*zoom).floor - 2 # total width of the issue (- 2 for left and right borders)
194 195 d_width = ((i_done_date - i_start_date)*zoom).floor - 2 # done width
195 196 l_width = i_late_date ? ((i_late_date - i_start_date+1)*zoom).floor - 2 : 0 # delay width
196 197 %>
197 198 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;" class="task task_todo">&nbsp;</div>
198 199 <% if l_width > 0 %>
199 200 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= l_width %>px;" class="task task_late">&nbsp;</div>
200 201 <% end %>
201 202 <% if d_width > 0 %>
202 203 <div style="top:<%= top %>px;left:<%= i_left %>px;width:<%= d_width %>px;" class="task task_done">&nbsp;</div>
203 204 <% end %>
204 205 <div style="top:<%= top %>px;left:<%= i_left + i_width + 5 %>px;background:#fff;" class="task">
205 206 <%= i.status.name %>
206 207 <%= (i.done_ratio).to_i %>%
207 208 </div>
208 209 <div class="tooltip" style="position: absolute;top:<%= top %>px;left:<%= i_left %>px;width:<%= i_width %>px;height:12px;">
209 210 <span class="tip">
210 211 <%= render_issue_tooltip i %>
211 212 </span></div>
212 213 <% else
213 214 i_left = ((i.start_date - @gantt.date_from)*zoom).floor
214 215 %>
215 216 <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone">&nbsp;</div>
216 217 <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
217 218 <%= h("#{i.project} -") unless @project && @project == i.project %>
218 219 <strong><%=h i %></strong>
219 220 </div>
220 221 <% end %>
221 222 <% top = top + 20
222 223 end %>
223 224
224 225 <%
225 226 #
226 227 # Today red line (excluded from cache)
227 228 #
228 229 if Date.today >= @gantt.date_from and Date.today <= @gantt.date_to %>
229 230 <div style="position: absolute;height:<%= g_height %>px;top:<%= headers_height + 1 %>px;left:<%= ((Date.today-@gantt.date_from+1)*zoom).floor()-1 %>px;width:10px;border-left: 1px dashed red;">&nbsp;</div>
230 231 <% end %>
231 232
232 233 </div>
233 234 </td>
234 235 </tr>
235 236 </table>
236 237
237 238 <table width="100%">
238 239 <tr>
239 240 <td align="left"><%= link_to_remote ('&#171; ' + l(:label_previous)), {:url => @gantt.params_previous, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_previous)} %></td>
240 241 <td align="right"><%= link_to_remote (l(:label_next) + ' &#187;'), {:url => @gantt.params_next, :update => 'content', :complete => 'window.scrollTo(0,0)'}, {:href => url_for(@gantt.params_next)} %></td>
241 242 </tr>
242 243 </table>
243 244
244 245 <% other_formats_links do |f| %>
245 246 <%= f.link_to 'PDF', :url => @gantt.params %>
246 247 <%= f.link_to('PNG', :url => @gantt.params) if @gantt.respond_to?('to_image') %>
247 248 <% end %>
248 249 <% end # query.valid? %>
249 250
250 251 <% content_for :sidebar do %>
251 252 <%= render :partial => 'issues/sidebar' %>
252 253 <% end %>
253 254
254 255 <% html_title(l(:label_gantt)) -%>
@@ -1,74 +1,82
1 1 <% if @query.new_record? %>
2 2 <h2><%=l(:label_issue_plural)%></h2>
3 3 <% html_title(l(:label_issue_plural)) %>
4 4
5 5 <% form_tag({ :controller => 'queries', :action => 'new' }, :id => 'query_form') do %>
6 6 <%= hidden_field_tag('project_id', @project.to_param) if @project %>
7 7 <div id="query_form_content">
8 <fieldset id="filters"><legend><%= l(:label_filter_plural) %></legend>
8 <fieldset id="filters" class="collapsible">
9 <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend>
10 <div>
9 11 <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
12 </div>
10 13 </fieldset>
11 <p><%= l(:field_group_by) %>
14 <fieldset class="collapsible collapsed">
15 <legend onclick="toggleFieldset(this);">Options</legend>
16 <div style="display: none;">
17 <%= l(:field_group_by) %>
12 18 <%= select_tag('group_by', options_for_select([[]] + @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, @query.group_by)) %></p>
13 19 </div>
20 </fieldset>
21 </div>
14 22 <p class="buttons">
15 23
16 24 <%= link_to_remote l(:button_apply),
17 25 { :url => { :set_filter => 1 },
18 26 :update => "content",
19 27 :with => "Form.serialize('query_form')"
20 28 }, :class => 'icon icon-checked' %>
21 29
22 30 <%= link_to_remote l(:button_clear),
23 31 { :url => { :set_filter => 1, :project_id => @project },
24 32 :method => :get,
25 33 :update => "content",
26 34 }, :class => 'icon icon-reload' %>
27 35
28 36 <% if User.current.allowed_to?(:save_queries, @project, :global => true) %>
29 37 <%= link_to l(:button_save), {}, :onclick => "$('query_form').submit(); return false;", :class => 'icon icon-save' %>
30 38 <% end %>
31 39 </p>
32 40 <% end %>
33 41 <% else %>
34 42 <div class="contextual">
35 43 <% if @query.editable_by?(User.current) %>
36 44 <%= link_to l(:button_edit), {:controller => 'queries', :action => 'edit', :id => @query}, :class => 'icon icon-edit' %>
37 45 <%= link_to l(:button_delete), {:controller => 'queries', :action => 'destroy', :id => @query}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
38 46 <% end %>
39 47 </div>
40 48 <h2><%=h @query.name %></h2>
41 49 <div id="query_form"></div>
42 50 <% html_title @query.name %>
43 51 <% end %>
44 52
45 53 <%= error_messages_for 'query' %>
46 54 <% if @query.valid? %>
47 55 <% if @issues.empty? %>
48 56 <p class="nodata"><%= l(:label_no_data) %></p>
49 57 <% else %>
50 58 <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %>
51 59 <p class="pagination"><%= pagination_links_full @issue_pages, @issue_count %></p>
52 60 <% end %>
53 61
54 62 <% other_formats_links do |f| %>
55 63 <%= f.link_to 'Atom', :url => { :project_id => @project, :query_id => (@query.new_record? ? nil : @query), :key => User.current.rss_key } %>
56 64 <%= f.link_to 'CSV', :url => { :project_id => @project } %>
57 65 <%= f.link_to 'PDF', :url => { :project_id => @project } %>
58 66 <% end %>
59 67
60 68 <% end %>
61 69
62 70 <% content_for :sidebar do %>
63 71 <%= render :partial => 'issues/sidebar' %>
64 72 <% end %>
65 73
66 74 <% content_for :header_tags do %>
67 75 <%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural)) %>
68 76 <%= auto_discovery_link_tag(:atom, {:action => 'changes', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %>
69 77 <%= javascript_include_tag 'context_menu' %>
70 78 <%= stylesheet_link_tag 'context_menu' %>
71 79 <% end %>
72 80
73 81 <div id="context-menu" style="display: none;"></div>
74 82 <%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %>
@@ -1,26 +1,35
1 <fieldset id="filters"><legend><%= l(:label_date_range) %></legend>
1 <fieldset id="date-range" class="collapsible">
2 <legend onclick="toggleFieldset(this);"><%= l(:label_date_range) %></legend>
3 <div>
2 4 <p>
3 5 <%= radio_button_tag 'period_type', '1', !@free_period %>
4 6 <%= select_tag 'period', options_for_period_select(params[:period]),
5 7 :onchange => 'this.form.onsubmit();',
6 8 :onfocus => '$("period_type_1").checked = true;' %>
7 9 </p>
8 10 <p>
9 11 <%= radio_button_tag 'period_type', '2', @free_period %>
10 12 <span onclick="$('period_type_2').checked = true;">
11 13 <%= l(:label_date_from_to, :start => (text_field_tag('from', @from, :size => 10) + calendar_for('from')),
12 14 :end => (text_field_tag('to', @to, :size => 10) + calendar_for('to'))) %>
13 15 </span>
14 <%= submit_tag l(:button_apply), :name => nil %>
15 16 </p>
17 </div>
16 18 </fieldset>
19 <p class="buttons">
20 <%= link_to_remote l(:button_apply),
21 { :url => { },
22 :update => "content",
23 :with => "Form.serialize('query_form')"
24 }, :class => 'icon icon-checked' %>
25 </p>
17 26
18 27 <div class="tabs">
19 28 <% url_params = @free_period ? { :from => @from, :to => @to } : { :period => params[:period] } %>
20 29 <ul>
21 30 <li><%= link_to(l(:label_details), url_params.merge({:controller => 'timelog', :action => 'details', :project_id => @project }),
22 31 :class => (@controller.action_name == 'details' ? 'selected' : nil)) %></li>
23 32 <li><%= link_to(l(:label_report), url_params.merge({:controller => 'timelog', :action => 'report', :project_id => @project}),
24 33 :class => (@controller.action_name == 'report' ? 'selected' : nil)) %></li>
25 34 </ul>
26 35 </div>
@@ -1,35 +1,35
1 1 <div class="contextual">
2 2 <%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time-add' %>
3 3 </div>
4 4
5 5 <%= render_timelog_breadcrumb %>
6 6
7 7 <h2><%= l(:label_spent_time) %></h2>
8 8
9 <% form_remote_tag( :url => {}, :html => {:method => :get}, :method => :get, :update => 'content' ) do %>
9 <% form_remote_tag( :url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content' ) do %>
10 10 <%# TOOD: remove the project_id and issue_id hidden fields, that information is
11 11 already in the URI %>
12 12 <%= hidden_field_tag('project_id', params[:project_id]) if @project %>
13 13 <%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
14 14 <%= render :partial => 'date_range' %>
15 15 <% end %>
16 16
17 17 <div class="total-hours">
18 18 <p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>
19 19 </div>
20 20
21 21 <% unless @entries.empty? %>
22 22 <%= render :partial => 'list', :locals => { :entries => @entries }%>
23 23 <p class="pagination"><%= pagination_links_full @entry_pages, @entry_count %></p>
24 24
25 25 <% other_formats_links do |f| %>
26 26 <%= f.link_to 'Atom', :url => params.merge({:issue_id => @issue, :key => User.current.rss_key}) %>
27 27 <%= f.link_to 'CSV', :url => params %>
28 28 <% end %>
29 29 <% end %>
30 30
31 31 <% html_title l(:label_spent_time), l(:label_details) %>
32 32
33 33 <% content_for :header_tags do %>
34 34 <%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :title => l(:label_spent_time)) %>
35 35 <% end %>
@@ -1,75 +1,75
1 1 <div class="contextual">
2 2 <%= link_to_if_authorized l(:button_log_time), {:controller => 'timelog', :action => 'edit', :project_id => @project, :issue_id => @issue}, :class => 'icon icon-time-add' %>
3 3 </div>
4 4
5 5 <%= render_timelog_breadcrumb %>
6 6
7 7 <h2><%= l(:label_spent_time) %></h2>
8 8
9 <% form_remote_tag(:url => {}, :html => {:method => :get}, :method => :get, :update => 'content') do %>
9 <% form_remote_tag(:url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content') do %>
10 10 <% @criterias.each do |criteria| %>
11 11 <%= hidden_field_tag 'criterias[]', criteria, :id => nil %>
12 12 <% end %>
13 13 <%# TODO: get rid of the project_id field, that should already be in the URL %>
14 14 <%= hidden_field_tag('project_id', params[:project_id]) if @project %>
15 15 <%= render :partial => 'date_range' %>
16 16
17 17 <p><%= l(:label_details) %>: <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'],
18 18 [l(:label_month), 'month'],
19 19 [l(:label_week), 'week'],
20 20 [l(:label_day_plural).titleize, 'day']], @columns),
21 21 :onchange => "this.form.onsubmit();" %>
22 22
23 23 <%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l_or_humanize(@available_criterias[k][:label]), k]}),
24 24 :onchange => "this.form.onsubmit();",
25 25 :style => 'width: 200px',
26 26 :id => nil,
27 27 :disabled => (@criterias.length >= 3)) %>
28 28 <%= link_to_remote l(:button_clear), {:url => {:project_id => @project, :period_type => params[:period_type], :period => params[:period], :from => @from, :to => @to, :columns => @columns},
29 29 :method => :get,
30 30 :update => 'content'
31 31 }, :class => 'icon icon-reload' %></p>
32 32 <% end %>
33 33
34 34 <% unless @criterias.empty? %>
35 35 <div class="total-hours">
36 36 <p><%= l(:label_total) %>: <%= html_hours(l_hours(@total_hours)) %></p>
37 37 </div>
38 38
39 39 <% unless @hours.empty? %>
40 40 <table class="list" id="time-report">
41 41 <thead>
42 42 <tr>
43 43 <% @criterias.each do |criteria| %>
44 44 <th><%= l_or_humanize(@available_criterias[criteria][:label]) %></th>
45 45 <% end %>
46 46 <% columns_width = (40 / (@periods.length+1)).to_i %>
47 47 <% @periods.each do |period| %>
48 48 <th class="period" width="<%= columns_width %>%"><%= period %></th>
49 49 <% end %>
50 50 <th class="total" width="<%= columns_width %>%"><%= l(:label_total) %></th>
51 51 </tr>
52 52 </thead>
53 53 <tbody>
54 54 <%= render :partial => 'report_criteria', :locals => {:criterias => @criterias, :hours => @hours, :level => 0} %>
55 55 <tr class="total">
56 56 <td><%= l(:label_total) %></td>
57 57 <%= '<td></td>' * (@criterias.size - 1) %>
58 58 <% total = 0 -%>
59 59 <% @periods.each do |period| -%>
60 60 <% sum = sum_hours(select_hours(@hours, @columns, period.to_s)); total += sum -%>
61 61 <td class="hours"><%= html_hours("%.2f" % sum) if sum > 0 %></td>
62 62 <% end -%>
63 63 <td class="hours"><%= html_hours("%.2f" % total) if total > 0 %></td>
64 64 </tr>
65 65 </tbody>
66 66 </table>
67 67
68 68 <% other_formats_links do |f| %>
69 69 <%= f.link_to 'CSV', :url => params %>
70 70 <% end %>
71 71 <% end %>
72 72 <% end %>
73 73
74 74 <% html_title l(:label_spent_time), l(:label_report) %>
75 75
@@ -1,154 +1,160
1 1 /* redMine - project management software
2 2 Copyright (C) 2006-2008 Jean-Philippe Lang */
3 3
4 4 function checkAll (id, checked) {
5 5 var els = Element.descendants(id);
6 6 for (var i = 0; i < els.length; i++) {
7 7 if (els[i].disabled==false) {
8 8 els[i].checked = checked;
9 9 }
10 10 }
11 11 }
12 12
13 13 function toggleCheckboxesBySelector(selector) {
14 14 boxes = $$(selector);
15 15 var all_checked = true;
16 16 for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
17 17 for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; }
18 18 }
19 19
20 20 function showAndScrollTo(id, focus) {
21 21 Element.show(id);
22 22 if (focus!=null) { Form.Element.focus(focus); }
23 23 Element.scrollTo(id);
24 24 }
25 25
26 26 function toggleRowGroup(el) {
27 27 var tr = Element.up(el, 'tr');
28 28 var n = Element.next(tr);
29 29 tr.toggleClassName('open');
30 30 while (n != undefined && !n.hasClassName('group')) {
31 31 Element.toggle(n);
32 32 n = Element.next(n);
33 33 }
34 34 }
35 35
36 function toggleFieldset(el) {
37 var fieldset = Element.up(el, 'fieldset');
38 fieldset.toggleClassName('collapsed');
39 Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
40 }
41
36 42 var fileFieldCount = 1;
37 43
38 44 function addFileField() {
39 45 if (fileFieldCount >= 10) return false
40 46 fileFieldCount++;
41 47 var f = document.createElement("input");
42 48 f.type = "file";
43 49 f.name = "attachments[" + fileFieldCount + "][file]";
44 50 f.size = 30;
45 51 var d = document.createElement("input");
46 52 d.type = "text";
47 53 d.name = "attachments[" + fileFieldCount + "][description]";
48 54 d.size = 60;
49 55
50 56 p = document.getElementById("attachments_fields");
51 57 p.appendChild(document.createElement("br"));
52 58 p.appendChild(f);
53 59 p.appendChild(d);
54 60 }
55 61
56 62 function showTab(name) {
57 63 var f = $$('div#content .tab-content');
58 64 for(var i=0; i<f.length; i++){
59 65 Element.hide(f[i]);
60 66 }
61 67 var f = $$('div.tabs a');
62 68 for(var i=0; i<f.length; i++){
63 69 Element.removeClassName(f[i], "selected");
64 70 }
65 71 Element.show('tab-content-' + name);
66 72 Element.addClassName('tab-' + name, "selected");
67 73 return false;
68 74 }
69 75
70 76 function setPredecessorFieldsVisibility() {
71 77 relationType = $('relation_relation_type');
72 78 if (relationType && relationType.value == "precedes") {
73 79 Element.show('predecessor_fields');
74 80 } else {
75 81 Element.hide('predecessor_fields');
76 82 }
77 83 }
78 84
79 85 function promptToRemote(text, param, url) {
80 86 value = prompt(text + ':');
81 87 if (value) {
82 88 new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
83 89 return false;
84 90 }
85 91 }
86 92
87 93 function collapseScmEntry(id) {
88 94 var els = document.getElementsByClassName(id, 'browser');
89 95 for (var i = 0; i < els.length; i++) {
90 96 if (els[i].hasClassName('open')) {
91 97 collapseScmEntry(els[i].id);
92 98 }
93 99 Element.hide(els[i]);
94 100 }
95 101 $(id).removeClassName('open');
96 102 }
97 103
98 104 function expandScmEntry(id) {
99 105 var els = document.getElementsByClassName(id, 'browser');
100 106 for (var i = 0; i < els.length; i++) {
101 107 Element.show(els[i]);
102 108 if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
103 109 expandScmEntry(els[i].id);
104 110 }
105 111 }
106 112 $(id).addClassName('open');
107 113 }
108 114
109 115 function scmEntryClick(id) {
110 116 el = $(id);
111 117 if (el.hasClassName('open')) {
112 118 collapseScmEntry(id);
113 119 el.addClassName('collapsed');
114 120 return false;
115 121 } else if (el.hasClassName('loaded')) {
116 122 expandScmEntry(id);
117 123 el.removeClassName('collapsed');
118 124 return false;
119 125 }
120 126 if (el.hasClassName('loading')) {
121 127 return false;
122 128 }
123 129 el.addClassName('loading');
124 130 return true;
125 131 }
126 132
127 133 function scmEntryLoaded(id) {
128 134 Element.addClassName(id, 'open');
129 135 Element.addClassName(id, 'loaded');
130 136 Element.removeClassName(id, 'loading');
131 137 }
132 138
133 139 function randomKey(size) {
134 140 var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
135 141 var key = '';
136 142 for (i = 0; i < size; i++) {
137 143 key += chars[Math.floor(Math.random() * chars.length)];
138 144 }
139 145 return key;
140 146 }
141 147
142 148 /* shows and hides ajax indicator */
143 149 Ajax.Responders.register({
144 150 onCreate: function(){
145 151 if ($('ajax-indicator') && Ajax.activeRequestCount > 0) {
146 152 Element.show('ajax-indicator');
147 153 }
148 154 },
149 155 onComplete: function(){
150 156 if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
151 157 Element.hide('ajax-indicator');
152 158 }
153 159 }
154 160 });
@@ -1,798 +1,797
1 1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2 2
3 3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 4 h1 {margin:0; padding:0; font-size: 24px;}
5 5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8 8
9 9 /***** Layout *****/
10 10 #wrapper {background: white;}
11 11
12 12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
13 13 #top-menu ul {margin: 0; padding: 0;}
14 14 #top-menu li {
15 15 float:left;
16 16 list-style-type:none;
17 17 margin: 0px 0px 0px 0px;
18 18 padding: 0px 0px 0px 0px;
19 19 white-space:nowrap;
20 20 }
21 21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
22 22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
23 23
24 24 #account {float:right;}
25 25
26 26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
27 27 #header a {color:#f8f8f8;}
28 28 #header h1 a.ancestor { font-size: 80%; }
29 29 #quick-search {float:right;}
30 30
31 31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
32 32 #main-menu ul {margin: 0; padding: 0;}
33 33 #main-menu li {
34 34 float:left;
35 35 list-style-type:none;
36 36 margin: 0px 2px 0px 0px;
37 37 padding: 0px 0px 0px 0px;
38 38 white-space:nowrap;
39 39 }
40 40 #main-menu li a {
41 41 display: block;
42 42 color: #fff;
43 43 text-decoration: none;
44 44 font-weight: bold;
45 45 margin: 0;
46 46 padding: 4px 10px 4px 10px;
47 47 }
48 48 #main-menu li a:hover {background:#759FCF; color:#fff;}
49 49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
50 50
51 51 #main {background-color:#EEEEEE;}
52 52
53 53 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; min-height: 600px; padding: 0; margin: 0;}
54 54 * html #sidebar{ width: 17%; }
55 55 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
56 56 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
57 57 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
58 58
59 59 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
60 60 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
61 61 html>body #content { min-height: 600px; }
62 62 * html body #content { height: 600px; } /* IE */
63 63
64 64 #main.nosidebar #sidebar{ display: none; }
65 65 #main.nosidebar #content{ width: auto; border-right: 0; }
66 66
67 67 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
68 68
69 69 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
70 70 #login-form table td {padding: 6px;}
71 71 #login-form label {font-weight: bold;}
72 72 #login-form input#username, #login-form input#password { width: 300px; }
73 73
74 74 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
75 75
76 76 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
77 77
78 78 /***** Links *****/
79 79 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
80 80 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
81 81 a img{ border: 0; }
82 82
83 83 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
84 84
85 85 /***** Tables *****/
86 86 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
87 87 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
88 88 table.list td { vertical-align: top; }
89 89 table.list td.id { width: 2%; text-align: center;}
90 90 table.list td.checkbox { width: 15px; padding: 0px;}
91 91 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
92 92 table.list td.buttons a { padding-right: 0.6em; }
93 93
94 94 tr.project td.name a { padding-left: 16px; white-space:nowrap; }
95 95 tr.project.parent td.name a { background: url('../images/bullet_toggle_minus.png') no-repeat; }
96 96
97 97 tr.issue { text-align: center; white-space: nowrap; }
98 98 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
99 99 tr.issue td.subject { text-align: left; }
100 100 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
101 101
102 102 tr.entry { border: 1px solid #f8f8f8; }
103 103 tr.entry td { white-space: nowrap; }
104 104 tr.entry td.filename { width: 30%; }
105 105 tr.entry td.size { text-align: right; font-size: 90%; }
106 106 tr.entry td.revision, tr.entry td.author { text-align: center; }
107 107 tr.entry td.age { text-align: right; }
108 108 tr.entry.file td.filename a { margin-left: 16px; }
109 109
110 110 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
111 111 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
112 112
113 113 tr.changeset td.author { text-align: center; width: 15%; }
114 114 tr.changeset td.committed_on { text-align: center; width: 15%; }
115 115
116 116 table.files tr.file td { text-align: center; }
117 117 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
118 118 table.files tr.file td.digest { font-size: 80%; }
119 119
120 120 table.members td.roles, table.memberships td.roles { width: 45%; }
121 121
122 122 tr.message { height: 2.6em; }
123 123 tr.message td.last_message { font-size: 80%; }
124 124 tr.message.locked td.subject a { background-image: url(../images/locked.png); }
125 125 tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; }
126 126
127 127 tr.user td { width:13%; }
128 128 tr.user td.email { width:18%; }
129 129 tr.user td { white-space: nowrap; }
130 130 tr.user.locked, tr.user.registered { color: #aaa; }
131 131 tr.user.locked a, tr.user.registered a { color: #aaa; }
132 132
133 133 tr.time-entry { text-align: center; white-space: nowrap; }
134 134 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
135 135 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
136 136 td.hours .hours-dec { font-size: 0.9em; }
137 137
138 138 table.plugins td { vertical-align: middle; }
139 139 table.plugins td.configure { text-align: right; padding-right: 1em; }
140 140 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
141 141 table.plugins span.description { display: block; font-size: 0.9em; }
142 142 table.plugins span.url { display: block; font-size: 0.9em; }
143 143
144 144 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
145 145 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
146 146
147 147 table.list tbody tr:hover { background-color:#ffffdd; }
148 148 table.list tbody tr.group:hover { background-color:inherit; }
149 149 table td {padding:2px;}
150 150 table p {margin:0;}
151 151 .odd {background-color:#f6f7f8;}
152 152 .even {background-color: #fff;}
153 153
154 154 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
155 155 a.sort.asc { background-image: url(../images/sort_asc.png); }
156 156 a.sort.desc { background-image: url(../images/sort_desc.png); }
157 157
158 158 table.attributes { width: 100% }
159 159 table.attributes th { vertical-align: top; text-align: left; }
160 160 table.attributes td { vertical-align: top; }
161 161
162 162 .highlight { background-color: #FCFD8D;}
163 163 .highlight.token-1 { background-color: #faa;}
164 164 .highlight.token-2 { background-color: #afa;}
165 165 .highlight.token-3 { background-color: #aaf;}
166 166
167 167 .box{
168 168 padding:6px;
169 169 margin-bottom: 10px;
170 170 background-color:#f6f6f6;
171 171 color:#505050;
172 172 line-height:1.5em;
173 173 border: 1px solid #e4e4e4;
174 174 }
175 175
176 176 div.square {
177 177 border: 1px solid #999;
178 178 float: left;
179 179 margin: .3em .4em 0 .4em;
180 180 overflow: hidden;
181 181 width: .6em; height: .6em;
182 182 }
183 183 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
184 184 .contextual input, .contextual select {font-size:0.9em;}
185 185 .message .contextual { margin-top: 0; }
186 186
187 187 .splitcontentleft{float:left; width:49%;}
188 188 .splitcontentright{float:right; width:49%;}
189 189 form {display: inline;}
190 190 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
191 191 fieldset {border: 1px solid #e4e4e4; margin:0;}
192 192 legend {color: #484848;}
193 193 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
194 194 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
195 195 blockquote blockquote { margin-left: 0;}
196 196 textarea.wiki-edit { width: 99%; }
197 197 li p {margin-top: 0;}
198 198 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
199 199 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
200 200 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
201 201 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
202 202
203 #query_form_content { font-size: 0.9em; padding: 4px; background: #f6f6f6; border: 1px solid #e4e4e4; }
204 #query_form_content fieldset#filters { border-left: 0; border-right: 0; }
205 #query_form_content p { margin-top: 0.5em; margin-bottom: 0.5em; }
203 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
204 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
205 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
206 206
207 fieldset#filters, fieldset#date-range { padding: 0.7em; margin-bottom: 8px; }
208 fieldset#filters p { margin: 1.2em 0 0.8em 2px; }
207 fieldset#date-range p { margin: 2px 0 2px 0; }
209 208 fieldset#filters table { border-collapse: collapse; }
210 209 fieldset#filters table td { padding: 0; vertical-align: middle; }
211 210 fieldset#filters tr.filter { height: 2em; }
212 211 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
213 .buttons { font-size: 0.9em; margin-bottom: 1.4em; }
212 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
214 213
215 214 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
216 215 div#issue-changesets .changeset { padding: 4px;}
217 216 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
218 217 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
219 218
220 219 div#activity dl, #search-results { margin-left: 2em; }
221 220 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
222 221 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
223 222 div#activity dt.me .time { border-bottom: 1px solid #999; }
224 223 div#activity dt .time { color: #777; font-size: 80%; }
225 224 div#activity dd .description, #search-results dd .description { font-style: italic; }
226 225 div#activity span.project:after, #search-results span.project:after { content: " -"; }
227 226 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
228 227
229 228 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
230 229
231 230 div#search-results-counts {float:right;}
232 231 div#search-results-counts ul { margin-top: 0.5em; }
233 232 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
234 233
235 234 dt.issue { background-image: url(../images/ticket.png); }
236 235 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
237 236 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
238 237 dt.issue-note { background-image: url(../images/ticket_note.png); }
239 238 dt.changeset { background-image: url(../images/changeset.png); }
240 239 dt.news { background-image: url(../images/news.png); }
241 240 dt.message { background-image: url(../images/message.png); }
242 241 dt.reply { background-image: url(../images/comments.png); }
243 242 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
244 243 dt.attachment { background-image: url(../images/attachment.png); }
245 244 dt.document { background-image: url(../images/document.png); }
246 245 dt.project { background-image: url(../images/projects.png); }
247 246 dt.time-entry { background-image: url(../images/time.png); }
248 247
249 248 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
250 249
251 250 div#roadmap fieldset.related-issues { margin-bottom: 1em; }
252 251 div#roadmap fieldset.related-issues ul { margin-top: 0.3em; margin-bottom: 0.3em; }
253 252 div#roadmap .wiki h1:first-child { display: none; }
254 253 div#roadmap .wiki h1 { font-size: 120%; }
255 254 div#roadmap .wiki h2 { font-size: 110%; }
256 255
257 256 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
258 257 div#version-summary fieldset { margin-bottom: 1em; }
259 258 div#version-summary .total-hours { text-align: right; }
260 259
261 260 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
262 261 table#time-report tbody tr { font-style: italic; color: #777; }
263 262 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
264 263 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
265 264 table#time-report .hours-dec { font-size: 0.9em; }
266 265
267 266 form#issue-form .attributes { margin-bottom: 8px; }
268 267 form#issue-form .attributes p { padding-top: 1px; padding-bottom: 2px; }
269 268 form#issue-form .attributes select { min-width: 30%; }
270 269
271 270 ul.projects { margin: 0; padding-left: 1em; }
272 271 ul.projects.root { margin: 0; padding: 0; }
273 272 ul.projects ul { border-left: 3px solid #e0e0e0; }
274 273 ul.projects li { list-style-type:none; }
275 274 ul.projects li.root { margin-bottom: 1em; }
276 275 ul.projects li.child { margin-top: 1em;}
277 276 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
278 277 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
279 278
280 279 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
281 280 #tracker_project_ids li { list-style-type:none; }
282 281
283 282 ul.properties {padding:0; font-size: 0.9em; color: #777;}
284 283 ul.properties li {list-style-type:none;}
285 284 ul.properties li span {font-style:italic;}
286 285
287 286 .total-hours { font-size: 110%; font-weight: bold; }
288 287 .total-hours span.hours-int { font-size: 120%; }
289 288
290 289 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
291 290 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
292 291
293 292 .pagination {font-size: 90%}
294 293 p.pagination {margin-top:8px;}
295 294
296 295 /***** Tabular forms ******/
297 296 .tabular p{
298 297 margin: 0;
299 298 padding: 5px 0 8px 0;
300 299 padding-left: 180px; /*width of left column containing the label elements*/
301 300 height: 1%;
302 301 clear:left;
303 302 }
304 303
305 304 html>body .tabular p {overflow:hidden;}
306 305
307 306 .tabular label{
308 307 font-weight: bold;
309 308 float: left;
310 309 text-align: right;
311 310 margin-left: -180px; /*width of left column*/
312 311 width: 175px; /*width of labels. Should be smaller than left column to create some right
313 312 margin*/
314 313 }
315 314
316 315 .tabular label.floating{
317 316 font-weight: normal;
318 317 margin-left: 0px;
319 318 text-align: left;
320 319 width: 270px;
321 320 }
322 321
323 322 input#time_entry_comments { width: 90%;}
324 323
325 324 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
326 325
327 326 .tabular.settings p{ padding-left: 300px; }
328 327 .tabular.settings label{ margin-left: -300px; width: 295px; }
329 328
330 329 .required {color: #bb0000;}
331 330 .summary {font-style: italic;}
332 331
333 332 #attachments_fields input[type=text] {margin-left: 8px; }
334 333
335 334 div.attachments { margin-top: 12px; }
336 335 div.attachments p { margin:4px 0 2px 0; }
337 336 div.attachments img { vertical-align: middle; }
338 337 div.attachments span.author { font-size: 0.9em; color: #888; }
339 338
340 339 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
341 340 .other-formats span + span:before { content: "| "; }
342 341
343 342 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
344 343
345 344 /* Project members tab */
346 345 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
347 346 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
348 347 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
349 348 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
350 349 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
351 350 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
352 351
353 352 table.members td.group { padding-left: 20px; background: url(../images/users.png) no-repeat 0% 0%; }
354 353
355 354 * html div#tab-content-members fieldset div { height: 450px; }
356 355
357 356 /***** Flash & error messages ****/
358 357 #errorExplanation, div.flash, .nodata, .warning {
359 358 padding: 4px 4px 4px 30px;
360 359 margin-bottom: 12px;
361 360 font-size: 1.1em;
362 361 border: 2px solid;
363 362 }
364 363
365 364 div.flash {margin-top: 8px;}
366 365
367 366 div.flash.error, #errorExplanation {
368 367 background: url(../images/false.png) 8px 5px no-repeat;
369 368 background-color: #ffe3e3;
370 369 border-color: #dd0000;
371 370 color: #550000;
372 371 }
373 372
374 373 div.flash.notice {
375 374 background: url(../images/true.png) 8px 5px no-repeat;
376 375 background-color: #dfffdf;
377 376 border-color: #9fcf9f;
378 377 color: #005f00;
379 378 }
380 379
381 380 div.flash.warning {
382 381 background: url(../images/warning.png) 8px 5px no-repeat;
383 382 background-color: #FFEBC1;
384 383 border-color: #FDBF3B;
385 384 color: #A6750C;
386 385 text-align: left;
387 386 }
388 387
389 388 .nodata, .warning {
390 389 text-align: center;
391 390 background-color: #FFEBC1;
392 391 border-color: #FDBF3B;
393 392 color: #A6750C;
394 393 }
395 394
396 395 #errorExplanation ul { font-size: 0.9em;}
397 396 #errorExplanation h2, #errorExplanation p { display: none; }
398 397
399 398 /***** Ajax indicator ******/
400 399 #ajax-indicator {
401 400 position: absolute; /* fixed not supported by IE */
402 401 background-color:#eee;
403 402 border: 1px solid #bbb;
404 403 top:35%;
405 404 left:40%;
406 405 width:20%;
407 406 font-weight:bold;
408 407 text-align:center;
409 408 padding:0.6em;
410 409 z-index:100;
411 410 filter:alpha(opacity=50);
412 411 opacity: 0.5;
413 412 }
414 413
415 414 html>body #ajax-indicator { position: fixed; }
416 415
417 416 #ajax-indicator span {
418 417 background-position: 0% 40%;
419 418 background-repeat: no-repeat;
420 419 background-image: url(../images/loading.gif);
421 420 padding-left: 26px;
422 421 vertical-align: bottom;
423 422 }
424 423
425 424 /***** Calendar *****/
426 425 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
427 426 table.cal thead th {width: 14%;}
428 427 table.cal tbody tr {height: 100px;}
429 428 table.cal th { background-color:#EEEEEE; padding: 4px; }
430 429 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
431 430 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
432 431 table.cal td.odd p.day-num {color: #bbb;}
433 432 table.cal td.today {background:#ffffdd;}
434 433 table.cal td.today p.day-num {font-weight: bold;}
435 434
436 435 /***** Tooltips ******/
437 436 .tooltip{position:relative;z-index:24;}
438 437 .tooltip:hover{z-index:25;color:#000;}
439 438 .tooltip span.tip{display: none; text-align:left;}
440 439
441 440 div.tooltip:hover span.tip{
442 441 display:block;
443 442 position:absolute;
444 443 top:12px; left:24px; width:270px;
445 444 border:1px solid #555;
446 445 background-color:#fff;
447 446 padding: 4px;
448 447 font-size: 0.8em;
449 448 color:#505050;
450 449 }
451 450
452 451 /***** Progress bar *****/
453 452 table.progress {
454 453 border: 1px solid #D7D7D7;
455 454 border-collapse: collapse;
456 455 border-spacing: 0pt;
457 456 empty-cells: show;
458 457 text-align: center;
459 458 float:left;
460 459 margin: 1px 6px 1px 0px;
461 460 }
462 461
463 462 table.progress td { height: 0.9em; }
464 463 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
465 464 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
466 465 table.progress td.open { background: #FFF none repeat scroll 0%; }
467 466 p.pourcent {font-size: 80%;}
468 467 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
469 468
470 469 /***** Tabs *****/
471 470 #content .tabs {height: 2.6em; border-bottom: 1px solid #bbbbbb; margin-bottom:1.2em; position:relative;}
472 471 #content .tabs ul {margin:0; position:absolute; bottom:-2px; padding-left:1em;}
473 472 #content .tabs>ul { bottom:-1px; } /* others */
474 473 #content .tabs ul li {
475 474 float:left;
476 475 list-style-type:none;
477 476 white-space:nowrap;
478 477 margin-right:8px;
479 478 background:#fff;
480 479 }
481 480 #content .tabs ul li a{
482 481 display:block;
483 482 font-size: 0.9em;
484 483 text-decoration:none;
485 484 line-height:1.3em;
486 485 padding:4px 6px 4px 6px;
487 486 border: 1px solid #ccc;
488 487 border-bottom: 1px solid #bbbbbb;
489 488 background-color: #eeeeee;
490 489 color:#777;
491 490 font-weight:bold;
492 491 }
493 492
494 493 #content .tabs ul li a:hover {
495 494 background-color: #ffffdd;
496 495 text-decoration:none;
497 496 }
498 497
499 498 #content .tabs ul li a.selected {
500 499 background-color: #fff;
501 500 border: 1px solid #bbbbbb;
502 501 border-bottom: 1px solid #fff;
503 502 }
504 503
505 504 #content .tabs ul li a.selected:hover {
506 505 background-color: #fff;
507 506 }
508 507
509 508 /***** Auto-complete *****/
510 509 div.autocomplete {
511 510 position:absolute;
512 511 width:250px;
513 512 background-color:white;
514 513 margin:0;
515 514 padding:0;
516 515 }
517 516 div.autocomplete ul {
518 517 list-style-type:none;
519 518 margin:0;
520 519 padding:0;
521 520 }
522 521 div.autocomplete ul li.selected { background-color: #ffb;}
523 522 div.autocomplete ul li {
524 523 list-style-type:none;
525 524 display:block;
526 525 margin:0;
527 526 padding:2px;
528 527 cursor:pointer;
529 528 font-size: 90%;
530 529 border-bottom: 1px solid #ccc;
531 530 border-left: 1px solid #ccc;
532 531 border-right: 1px solid #ccc;
533 532 }
534 533 div.autocomplete ul li span.informal {
535 534 font-size: 80%;
536 535 color: #aaa;
537 536 }
538 537
539 538 /***** Diff *****/
540 539 .diff_out { background: #fcc; }
541 540 .diff_in { background: #cfc; }
542 541
543 542 /***** Wiki *****/
544 543 div.wiki table {
545 544 border: 1px solid #505050;
546 545 border-collapse: collapse;
547 546 margin-bottom: 1em;
548 547 }
549 548
550 549 div.wiki table, div.wiki td, div.wiki th {
551 550 border: 1px solid #bbb;
552 551 padding: 4px;
553 552 }
554 553
555 554 div.wiki .external {
556 555 background-position: 0% 60%;
557 556 background-repeat: no-repeat;
558 557 padding-left: 12px;
559 558 background-image: url(../images/external.png);
560 559 }
561 560
562 561 div.wiki a.new {
563 562 color: #b73535;
564 563 }
565 564
566 565 div.wiki pre {
567 566 margin: 1em 1em 1em 1.6em;
568 567 padding: 2px;
569 568 background-color: #fafafa;
570 569 border: 1px solid #dadada;
571 570 width:95%;
572 571 overflow-x: auto;
573 572 }
574 573
575 574 div.wiki ul.toc {
576 575 background-color: #ffffdd;
577 576 border: 1px solid #e4e4e4;
578 577 padding: 4px;
579 578 line-height: 1.2em;
580 579 margin-bottom: 12px;
581 580 margin-right: 12px;
582 581 margin-left: 0;
583 582 display: table
584 583 }
585 584 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
586 585
587 586 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
588 587 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
589 588 div.wiki ul.toc li { list-style-type:none;}
590 589 div.wiki ul.toc li.heading2 { margin-left: 6px; }
591 590 div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; }
592 591
593 592 div.wiki ul.toc a {
594 593 font-size: 0.9em;
595 594 font-weight: normal;
596 595 text-decoration: none;
597 596 color: #606060;
598 597 }
599 598 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
600 599
601 600 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
602 601 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
603 602 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
604 603
605 604 /***** My page layout *****/
606 605 .block-receiver {
607 606 border:1px dashed #c0c0c0;
608 607 margin-bottom: 20px;
609 608 padding: 15px 0 15px 0;
610 609 }
611 610
612 611 .mypage-box {
613 612 margin:0 0 20px 0;
614 613 color:#505050;
615 614 line-height:1.5em;
616 615 }
617 616
618 617 .handle {
619 618 cursor: move;
620 619 }
621 620
622 621 a.close-icon {
623 622 display:block;
624 623 margin-top:3px;
625 624 overflow:hidden;
626 625 width:12px;
627 626 height:12px;
628 627 background-repeat: no-repeat;
629 628 cursor:pointer;
630 629 background-image:url('../images/close.png');
631 630 }
632 631
633 632 a.close-icon:hover {
634 633 background-image:url('../images/close_hl.png');
635 634 }
636 635
637 636 /***** Gantt chart *****/
638 637 .gantt_hdr {
639 638 position:absolute;
640 639 top:0;
641 640 height:16px;
642 641 border-top: 1px solid #c0c0c0;
643 642 border-bottom: 1px solid #c0c0c0;
644 643 border-right: 1px solid #c0c0c0;
645 644 text-align: center;
646 645 overflow: hidden;
647 646 }
648 647
649 648 .task {
650 649 position: absolute;
651 650 height:8px;
652 651 font-size:0.8em;
653 652 color:#888;
654 653 padding:0;
655 654 margin:0;
656 655 line-height:0.8em;
657 656 }
658 657
659 658 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
660 659 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
661 660 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
662 661 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
663 662
664 663 /***** Icons *****/
665 664 .icon {
666 665 background-position: 0% 40%;
667 666 background-repeat: no-repeat;
668 667 padding-left: 20px;
669 668 padding-top: 2px;
670 669 padding-bottom: 3px;
671 670 }
672 671
673 672 .icon22 {
674 673 background-position: 0% 40%;
675 674 background-repeat: no-repeat;
676 675 padding-left: 26px;
677 676 line-height: 22px;
678 677 vertical-align: middle;
679 678 }
680 679
681 680 .icon-add { background-image: url(../images/add.png); }
682 681 .icon-edit { background-image: url(../images/edit.png); }
683 682 .icon-copy { background-image: url(../images/copy.png); }
684 683 .icon-del { background-image: url(../images/delete.png); }
685 684 .icon-move { background-image: url(../images/move.png); }
686 685 .icon-save { background-image: url(../images/save.png); }
687 686 .icon-cancel { background-image: url(../images/cancel.png); }
688 687 .icon-folder { background-image: url(../images/folder.png); }
689 688 .open .icon-folder { background-image: url(../images/folder_open.png); }
690 689 .icon-package { background-image: url(../images/package.png); }
691 690 .icon-home { background-image: url(../images/home.png); }
692 691 .icon-user { background-image: url(../images/user.png); }
693 692 .icon-mypage { background-image: url(../images/user_page.png); }
694 693 .icon-admin { background-image: url(../images/admin.png); }
695 694 .icon-projects { background-image: url(../images/projects.png); }
696 695 .icon-help { background-image: url(../images/help.png); }
697 696 .icon-attachment { background-image: url(../images/attachment.png); }
698 697 .icon-index { background-image: url(../images/index.png); }
699 698 .icon-history { background-image: url(../images/history.png); }
700 699 .icon-time { background-image: url(../images/time.png); }
701 700 .icon-time-add { background-image: url(../images/time_add.png); }
702 701 .icon-stats { background-image: url(../images/stats.png); }
703 702 .icon-warning { background-image: url(../images/warning.png); }
704 703 .icon-fav { background-image: url(../images/fav.png); }
705 704 .icon-fav-off { background-image: url(../images/fav_off.png); }
706 705 .icon-reload { background-image: url(../images/reload.png); }
707 706 .icon-lock { background-image: url(../images/locked.png); }
708 707 .icon-unlock { background-image: url(../images/unlock.png); }
709 708 .icon-checked { background-image: url(../images/true.png); }
710 709 .icon-details { background-image: url(../images/zoom_in.png); }
711 710 .icon-report { background-image: url(../images/report.png); }
712 711 .icon-comment { background-image: url(../images/comment.png); }
713 712
714 713 .icon-file { background-image: url(../images/files/default.png); }
715 714 .icon-file.text-plain { background-image: url(../images/files/text.png); }
716 715 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
717 716 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
718 717 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
719 718 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
720 719 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
721 720 .icon-file.image-gif { background-image: url(../images/files/image.png); }
722 721 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
723 722 .icon-file.image-png { background-image: url(../images/files/image.png); }
724 723 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
725 724 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
726 725 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
727 726 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
728 727
729 728 .icon22-projects { background-image: url(../images/22x22/projects.png); }
730 729 .icon22-users { background-image: url(../images/22x22/users.png); }
731 730 .icon22-groups { background-image: url(../images/22x22/groups.png); }
732 731 .icon22-tracker { background-image: url(../images/22x22/tracker.png); }
733 732 .icon22-role { background-image: url(../images/22x22/role.png); }
734 733 .icon22-workflow { background-image: url(../images/22x22/workflow.png); }
735 734 .icon22-options { background-image: url(../images/22x22/options.png); }
736 735 .icon22-notifications { background-image: url(../images/22x22/notifications.png); }
737 736 .icon22-authent { background-image: url(../images/22x22/authent.png); }
738 737 .icon22-info { background-image: url(../images/22x22/info.png); }
739 738 .icon22-comment { background-image: url(../images/22x22/comment.png); }
740 739 .icon22-package { background-image: url(../images/22x22/package.png); }
741 740 .icon22-settings { background-image: url(../images/22x22/settings.png); }
742 741 .icon22-plugin { background-image: url(../images/22x22/plugin.png); }
743 742
744 743 img.gravatar {
745 744 padding: 2px;
746 745 border: solid 1px #d5d5d5;
747 746 background: #fff;
748 747 }
749 748
750 749 div.issue img.gravatar {
751 750 float: right;
752 751 margin: 0 0 0 1em;
753 752 padding: 5px;
754 753 }
755 754
756 755 div.issue table img.gravatar {
757 756 height: 14px;
758 757 width: 14px;
759 758 padding: 2px;
760 759 float: left;
761 760 margin: 0 0.5em 0 0;
762 761 }
763 762
764 763 #history img.gravatar {
765 764 padding: 3px;
766 765 margin: 0 1.5em 1em 0;
767 766 float: left;
768 767 }
769 768
770 769 td.username img.gravatar {
771 770 float: left;
772 771 margin: 0 1em 0 0;
773 772 }
774 773
775 774 #activity dt img.gravatar {
776 775 float: left;
777 776 margin: 0 1em 1em 0;
778 777 }
779 778
780 779 #activity dt,
781 780 .journal {
782 781 clear: left;
783 782 }
784 783
785 784 .gravatar-margin {
786 785 margin-left: 40px;
787 786 }
788 787
789 788 h2 img { vertical-align:middle; }
790 789
791 790
792 791 /***** Media print specific styles *****/
793 792 @media print {
794 793 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
795 794 #main { background: #fff; }
796 795 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
797 796 #wiki_add_attachment { display:none; }
798 797 }
General Comments 0
You need to be logged in to leave comments. Login now