##// END OF EJS Templates
Move issue watchers to the sidebar....
Jean-Philippe Lang -
r3465:e605973ec4f5
parent child
Show More
@@ -1,67 +1,69
1 # redMine - project management software
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 module WatchersHelper
18 module WatchersHelper
19
19
20 # Valid options
20 # Valid options
21 # * :id - the element id
21 # * :id - the element id
22 # * :replace - a string or array of element ids that will be
22 # * :replace - a string or array of element ids that will be
23 # replaced
23 # replaced
24 def watcher_tag(object, user, options={:replace => 'watcher'})
24 def watcher_tag(object, user, options={:replace => 'watcher'})
25 id = options[:id]
25 id = options[:id]
26 id ||= options[:replace] if options[:replace].is_a? String
26 id ||= options[:replace] if options[:replace].is_a? String
27 content_tag("span", watcher_link(object, user, options), :id => id)
27 content_tag("span", watcher_link(object, user, options), :id => id)
28 end
28 end
29
29
30 # Valid options
30 # Valid options
31 # * :replace - a string or array of element ids that will be
31 # * :replace - a string or array of element ids that will be
32 # replaced
32 # replaced
33 def watcher_link(object, user, options={:replace => 'watcher'})
33 def watcher_link(object, user, options={:replace => 'watcher'})
34 return '' unless user && user.logged? && object.respond_to?('watched_by?')
34 return '' unless user && user.logged? && object.respond_to?('watched_by?')
35 watched = object.watched_by?(user)
35 watched = object.watched_by?(user)
36 url = {:controller => 'watchers',
36 url = {:controller => 'watchers',
37 :action => (watched ? 'unwatch' : 'watch'),
37 :action => (watched ? 'unwatch' : 'watch'),
38 :object_type => object.class.to_s.underscore,
38 :object_type => object.class.to_s.underscore,
39 :object_id => object.id,
39 :object_id => object.id,
40 :replace => options[:replace]}
40 :replace => options[:replace]}
41 link_to_remote((watched ? l(:button_unwatch) : l(:button_watch)),
41 link_to_remote((watched ? l(:button_unwatch) : l(:button_watch)),
42 {:url => url},
42 {:url => url},
43 :href => url_for(url),
43 :href => url_for(url),
44 :class => (watched ? 'icon icon-fav' : 'icon icon-fav-off'))
44 :class => (watched ? 'icon icon-fav' : 'icon icon-fav-off'))
45
45
46 end
46 end
47
47
48 # Returns a comma separated list of users watching the given object
48 # Returns a comma separated list of users watching the given object
49 def watchers_list(object)
49 def watchers_list(object)
50 remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project)
50 remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project)
51 object.watcher_users.collect do |user|
51 lis = object.watcher_users.collect do |user|
52 s = content_tag('span', link_to_user(user), :class => 'user')
52 s = avatar(user, :size => "16").to_s + link_to_user(user, :class => 'user').to_s
53 if remove_allowed
53 if remove_allowed
54 url = {:controller => 'watchers',
54 url = {:controller => 'watchers',
55 :action => 'destroy',
55 :action => 'destroy',
56 :object_type => object.class.to_s.underscore,
56 :object_type => object.class.to_s.underscore,
57 :object_id => object.id,
57 :object_id => object.id,
58 :user_id => user}
58 :user_id => user}
59 s += ' ' + link_to_remote(image_tag('delete.png'),
59 s += ' ' + link_to_remote(image_tag('delete.png'),
60 {:url => url},
60 {:url => url},
61 :href => url_for(url),
61 :href => url_for(url),
62 :style => "vertical-align: middle")
62 :style => "vertical-align: middle",
63 :class => "delete")
63 end
64 end
64 s
65 "<li>#{ s }</li>"
65 end.join(",\n")
66 end
67 lis.empty? ? "" : "<ul>#{ lis.join("\n") }</ul>"
66 end
68 end
67 end
69 end
@@ -1,134 +1,133
1 <%= render :partial => 'action_menu' %>
1 <%= render :partial => 'action_menu' %>
2
2
3 <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
3 <h2><%= @issue.tracker.name %> #<%= @issue.id %></h2>
4
4
5 <div class="<%= @issue.css_classes %> details">
5 <div class="<%= @issue.css_classes %> details">
6 <%= avatar(@issue.author, :size => "50") %>
6 <%= avatar(@issue.author, :size => "50") %>
7
7
8 <div class="subject">
8 <div class="subject">
9 <%= render_issue_subject_with_tree(@issue) %>
9 <%= render_issue_subject_with_tree(@issue) %>
10 </div>
10 </div>
11 <p class="author">
11 <p class="author">
12 <%= authoring @issue.created_on, @issue.author %>.
12 <%= authoring @issue.created_on, @issue.author %>.
13 <% if @issue.created_on != @issue.updated_on %>
13 <% if @issue.created_on != @issue.updated_on %>
14 <%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
14 <%= l(:label_updated_time, time_tag(@issue.updated_on)) %>.
15 <% end %>
15 <% end %>
16 </p>
16 </p>
17
17
18 <table class="attributes">
18 <table class="attributes">
19 <tr>
19 <tr>
20 <th class="status"><%=l(:field_status)%>:</th><td class="status"><%= @issue.status.name %></td>
20 <th class="status"><%=l(:field_status)%>:</th><td class="status"><%= @issue.status.name %></td>
21 <th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
21 <th class="start-date"><%=l(:field_start_date)%>:</th><td class="start-date"><%= format_date(@issue.start_date) %></td>
22 </tr>
22 </tr>
23 <tr>
23 <tr>
24 <th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= @issue.priority.name %></td>
24 <th class="priority"><%=l(:field_priority)%>:</th><td class="priority"><%= @issue.priority.name %></td>
25 <th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
25 <th class="due-date"><%=l(:field_due_date)%>:</th><td class="due-date"><%= format_date(@issue.due_date) %></td>
26 </tr>
26 </tr>
27 <tr>
27 <tr>
28 <th class="assigned-to"><%=l(:field_assigned_to)%>:</th><td class="assigned-to"><%= avatar(@issue.assigned_to, :size => "14") %><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
28 <th class="assigned-to"><%=l(:field_assigned_to)%>:</th><td class="assigned-to"><%= avatar(@issue.assigned_to, :size => "14") %><%= @issue.assigned_to ? link_to_user(@issue.assigned_to) : "-" %></td>
29 <th class="progress"><%=l(:field_done_ratio)%>:</th><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
29 <th class="progress"><%=l(:field_done_ratio)%>:</th><td class="progress"><%= progress_bar @issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%" %></td>
30 </tr>
30 </tr>
31 <tr>
31 <tr>
32 <th class="category"><%=l(:field_category)%>:</th><td class="category"><%=h @issue.category ? @issue.category.name : "-" %></td>
32 <th class="category"><%=l(:field_category)%>:</th><td class="category"><%=h @issue.category ? @issue.category.name : "-" %></td>
33 <% if User.current.allowed_to?(:view_time_entries, @project) %>
33 <% if User.current.allowed_to?(:view_time_entries, @project) %>
34 <th class="spent-time"><%=l(:label_spent_time)%>:</th>
34 <th class="spent-time"><%=l(:label_spent_time)%>:</th>
35 <td class="spent-time"><%= @issue.spent_hours > 0 ? (link_to l_hours(@issue.spent_hours), {:controller => 'timelog', :action => 'details', :project_id => @project, :issue_id => @issue}) : "-" %></td>
35 <td class="spent-time"><%= @issue.spent_hours > 0 ? (link_to l_hours(@issue.spent_hours), {:controller => 'timelog', :action => 'details', :project_id => @project, :issue_id => @issue}) : "-" %></td>
36 <% end %>
36 <% end %>
37 </tr>
37 </tr>
38 <tr>
38 <tr>
39 <th class="fixed-version"><%=l(:field_fixed_version)%>:</th><td class="fixed-version"><%= @issue.fixed_version ? link_to_version(@issue.fixed_version) : "-" %></td>
39 <th class="fixed-version"><%=l(:field_fixed_version)%>:</th><td class="fixed-version"><%= @issue.fixed_version ? link_to_version(@issue.fixed_version) : "-" %></td>
40 <% if @issue.estimated_hours %>
40 <% if @issue.estimated_hours %>
41 <th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
41 <th class="estimated-hours"><%=l(:field_estimated_hours)%>:</th><td class="estimated-hours"><%= l_hours(@issue.estimated_hours) %></td>
42 <% end %>
42 <% end %>
43 </tr>
43 </tr>
44 <%= render_custom_fields_rows(@issue) %>
44 <%= render_custom_fields_rows(@issue) %>
45 <%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
45 <%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
46 </table>
46 </table>
47 <hr />
47 <hr />
48
48
49 <div class="contextual">
49 <div class="contextual">
50 <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') unless @issue.description.blank? %>
50 <%= link_to_remote_if_authorized(l(:button_quote), { :url => {:action => 'reply', :id => @issue} }, :class => 'icon icon-comment') unless @issue.description.blank? %>
51 </div>
51 </div>
52
52
53 <p><strong><%=l(:field_description)%></strong></p>
53 <p><strong><%=l(:field_description)%></strong></p>
54 <div class="wiki">
54 <div class="wiki">
55 <%= textilizable @issue, :description, :attachments => @issue.attachments %>
55 <%= textilizable @issue, :description, :attachments => @issue.attachments %>
56 </div>
56 </div>
57
57
58 <%= link_to_attachments @issue %>
58 <%= link_to_attachments @issue %>
59
59
60 <%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
60 <%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
61
61
62 <% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
62 <% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
63 <hr />
63 <hr />
64 <div id="issue_tree">
64 <div id="issue_tree">
65 <div class="contextual">
65 <div class="contextual">
66 <%= link_to(l(:button_add), {:controller => 'issues', :action => 'new', :project_id => @project, :issue => {:parent_issue_id => @issue}}) if User.current.allowed_to?(:manage_subtasks, @project) %>
66 <%= link_to(l(:button_add), {:controller => 'issues', :action => 'new', :project_id => @project, :issue => {:parent_issue_id => @issue}}) if User.current.allowed_to?(:manage_subtasks, @project) %>
67 </div>
67 </div>
68 <p><strong><%=l(:label_subtask_plural)%></strong></p>
68 <p><strong><%=l(:label_subtask_plural)%></strong></p>
69 <%= render_descendants_tree(@issue) unless @issue.leaf? %>
69 <%= render_descendants_tree(@issue) unless @issue.leaf? %>
70 </div>
70 </div>
71 <% end %>
71 <% end %>
72
72
73 <% if authorize_for('issue_relations', 'new') || @issue.relations.any? %>
73 <% if authorize_for('issue_relations', 'new') || @issue.relations.any? %>
74 <hr />
74 <hr />
75 <div id="relations">
75 <div id="relations">
76 <%= render :partial => 'relations' %>
76 <%= render :partial => 'relations' %>
77 </div>
77 </div>
78 <% end %>
78 <% end %>
79
79
80 <% if User.current.allowed_to?(:add_issue_watchers, @project) ||
81 (@issue.watchers.any? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
82 <hr />
83 <div id="watchers">
84 <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
85 </div>
86 <% end %>
87
88 </div>
80 </div>
89
81
90 <% if @changesets.any? %>
82 <% if @changesets.any? %>
91 <div id="issue-changesets">
83 <div id="issue-changesets">
92 <h3><%=l(:label_associated_revisions)%></h3>
84 <h3><%=l(:label_associated_revisions)%></h3>
93 <%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
85 <%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
94 </div>
86 </div>
95 <% end %>
87 <% end %>
96
88
97 <% if @journals.any? %>
89 <% if @journals.any? %>
98 <div id="history">
90 <div id="history">
99 <h3><%=l(:label_history)%></h3>
91 <h3><%=l(:label_history)%></h3>
100 <%= render :partial => 'history', :locals => { :journals => @journals } %>
92 <%= render :partial => 'history', :locals => { :journals => @journals } %>
101 </div>
93 </div>
102 <% end %>
94 <% end %>
103
95
104
96
105 <div style="clear: both;"></div>
97 <div style="clear: both;"></div>
106 <%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %>
98 <%= render :partial => 'action_menu', :locals => {:replace_watcher => 'watcher2' } %>
107
99
108 <div style="clear: both;"></div>
100 <div style="clear: both;"></div>
109 <% if authorize_for('issues', 'edit') %>
101 <% if authorize_for('issues', 'edit') %>
110 <div id="update" style="display:none;">
102 <div id="update" style="display:none;">
111 <h3><%= l(:button_update) %></h3>
103 <h3><%= l(:button_update) %></h3>
112 <%= render :partial => 'edit' %>
104 <%= render :partial => 'edit' %>
113 </div>
105 </div>
114 <% end %>
106 <% end %>
115
107
116 <% other_formats_links do |f| %>
108 <% other_formats_links do |f| %>
117 <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
109 <%= f.link_to 'Atom', :url => {:key => User.current.rss_key} %>
118 <%= f.link_to 'PDF' %>
110 <%= f.link_to 'PDF' %>
119 <% end %>
111 <% end %>
120
112
121 <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
113 <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
122
114
123 <% content_for :sidebar do %>
115 <% content_for :sidebar do %>
124 <%= render :partial => 'issues/sidebar' %>
116 <%= render :partial => 'issues/sidebar' %>
117
118 <% if User.current.allowed_to?(:add_issue_watchers, @project) ||
119 (@issue.watchers.any? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
120 <div id="watchers">
121 <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
122 </div>
123 <% end %>
125 <% end %>
124 <% end %>
126
125
127 <% content_for :header_tags do %>
126 <% content_for :header_tags do %>
128 <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
127 <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %>
129 <%= stylesheet_link_tag 'scm' %>
128 <%= stylesheet_link_tag 'scm' %>
130 <%= javascript_include_tag 'context_menu' %>
129 <%= javascript_include_tag 'context_menu' %>
131 <%= stylesheet_link_tag 'context_menu' %>
130 <%= stylesheet_link_tag 'context_menu' %>
132 <% end %>
131 <% end %>
133 <div id="context-menu" style="display: none;"></div>
132 <div id="context-menu" style="display: none;"></div>
134 <%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %> No newline at end of file
133 <%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %>
@@ -1,25 +1,26
1 <div class="contextual">
1 <div class="contextual">
2 <%= link_to_remote l(:button_add),
2 <%= link_to_remote l(:button_add),
3 :url => {:controller => 'watchers',
3 :url => {:controller => 'watchers',
4 :action => 'new',
4 :action => 'new',
5 :object_type => watched.class.name.underscore,
5 :object_type => watched.class.name.underscore,
6 :object_id => watched} if User.current.allowed_to?(:add_issue_watchers, @project) %>
6 :object_id => watched} if User.current.allowed_to?(:add_issue_watchers, @project) %>
7 </div>
7 </div>
8
8
9 <p><strong><%= l(:label_issue_watchers) %></strong></p>
9 <h3><%= l(:label_issue_watchers) %> (<%= watched.watcher_users.size %>)</h3>
10 <%= watchers_list(watched) %>
11
10
12 <% unless @watcher.nil? %>
11 <% unless @watcher.nil? %>
13 <% remote_form_for(:watcher, @watcher,
12 <% remote_form_for(:watcher, @watcher,
14 :url => {:controller => 'watchers',
13 :url => {:controller => 'watchers',
15 :action => 'new',
14 :action => 'new',
16 :object_type => watched.class.name.underscore,
15 :object_type => watched.class.name.underscore,
17 :object_id => watched},
16 :object_id => watched},
18 :method => :post,
17 :method => :post,
19 :html => {:id => 'new-watcher-form'}) do |f| %>
18 :html => {:id => 'new-watcher-form'}) do |f| %>
20 <p><%= f.select :user_id, (watched.addable_watcher_users.collect {|m| [m.name, m.id]}), :prompt => "--- #{l(:actionview_instancetag_blank_option)} ---" %>
19 <p><%= f.select :user_id, (watched.addable_watcher_users.collect {|m| [m.name, m.id]}), :prompt => "--- #{l(:actionview_instancetag_blank_option)} ---" %>
21
20
22 <%= submit_tag l(:button_add) %>
21 <%= submit_tag l(:button_add) %>
23 <%= toggle_link l(:button_cancel), 'new-watcher-form'%></p>
22 <%= toggle_link l(:button_cancel), 'new-watcher-form'%></p>
24 <% end %>
23 <% end %>
25 <% end %>
24 <% end %>
25
26 <%= watchers_list(watched) %>
@@ -1,876 +1,883
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
1 body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; }
2
2
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
3 h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;}
4 h1 {margin:0; padding:0; font-size: 24px;}
4 h1 {margin:0; padding:0; font-size: 24px;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
5 h2, .wiki h1 {font-size: 20px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
6 h3, .wiki h2 {font-size: 16px;padding: 2px 10px 1px 0px;margin: 0 0 10px 0; border-bottom: 1px solid #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
7 h4, .wiki h3 {font-size: 13px;padding: 2px 10px 1px 0px;margin-bottom: 5px; border-bottom: 1px dotted #bbbbbb; color: #444;}
8
8
9 /***** Layout *****/
9 /***** Layout *****/
10 #wrapper {background: white;}
10 #wrapper {background: white;}
11
11
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
12 #top-menu {background: #2C4056; color: #fff; height:1.8em; font-size: 0.8em; padding: 2px 2px 0px 6px;}
13 #top-menu ul {margin: 0; padding: 0;}
13 #top-menu ul {margin: 0; padding: 0;}
14 #top-menu li {
14 #top-menu li {
15 float:left;
15 float:left;
16 list-style-type:none;
16 list-style-type:none;
17 margin: 0px 0px 0px 0px;
17 margin: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
18 padding: 0px 0px 0px 0px;
19 white-space:nowrap;
19 white-space:nowrap;
20 }
20 }
21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
21 #top-menu a {color: #fff; margin-right: 8px; font-weight: bold;}
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
22 #top-menu #loggedas { float: right; margin-right: 0.5em; color: #fff; }
23
23
24 #account {float:right;}
24 #account {float:right;}
25
25
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
26 #header {height:5.3em;margin:0;background-color:#507AAA;color:#f8f8f8; padding: 4px 8px 0px 6px; position:relative;}
27 #header a {color:#f8f8f8;}
27 #header a {color:#f8f8f8;}
28 #header h1 a.ancestor { font-size: 80%; }
28 #header h1 a.ancestor { font-size: 80%; }
29 #quick-search {float:right;}
29 #quick-search {float:right;}
30
30
31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
31 #main-menu {position: absolute; bottom: 0px; left:6px; margin-right: -500px;}
32 #main-menu ul {margin: 0; padding: 0;}
32 #main-menu ul {margin: 0; padding: 0;}
33 #main-menu li {
33 #main-menu li {
34 float:left;
34 float:left;
35 list-style-type:none;
35 list-style-type:none;
36 margin: 0px 2px 0px 0px;
36 margin: 0px 2px 0px 0px;
37 padding: 0px 0px 0px 0px;
37 padding: 0px 0px 0px 0px;
38 white-space:nowrap;
38 white-space:nowrap;
39 }
39 }
40 #main-menu li a {
40 #main-menu li a {
41 display: block;
41 display: block;
42 color: #fff;
42 color: #fff;
43 text-decoration: none;
43 text-decoration: none;
44 font-weight: bold;
44 font-weight: bold;
45 margin: 0;
45 margin: 0;
46 padding: 4px 10px 4px 10px;
46 padding: 4px 10px 4px 10px;
47 }
47 }
48 #main-menu li a:hover {background:#759FCF; color:#fff;}
48 #main-menu li a:hover {background:#759FCF; color:#fff;}
49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
49 #main-menu li a.selected, #main-menu li a.selected:hover {background:#fff; color:#555;}
50
50
51 #admin-menu ul {margin: 0; padding: 0;}
51 #admin-menu ul {margin: 0; padding: 0;}
52 #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;}
52 #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;}
53
53
54 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
54 #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;}
55 #admin-menu a.projects { background-image: url(../images/projects.png); }
55 #admin-menu a.projects { background-image: url(../images/projects.png); }
56 #admin-menu a.users { background-image: url(../images/user.png); }
56 #admin-menu a.users { background-image: url(../images/user.png); }
57 #admin-menu a.groups { background-image: url(../images/group.png); }
57 #admin-menu a.groups { background-image: url(../images/group.png); }
58 #admin-menu a.roles { background-image: url(../images/database_key.png); }
58 #admin-menu a.roles { background-image: url(../images/database_key.png); }
59 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
59 #admin-menu a.trackers { background-image: url(../images/ticket.png); }
60 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
60 #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); }
61 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
61 #admin-menu a.workflows { background-image: url(../images/ticket_go.png); }
62 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
62 #admin-menu a.custom_fields { background-image: url(../images/textfield.png); }
63 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
63 #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); }
64 #admin-menu a.settings { background-image: url(../images/changeset.png); }
64 #admin-menu a.settings { background-image: url(../images/changeset.png); }
65 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
65 #admin-menu a.plugins { background-image: url(../images/plugin.png); }
66 #admin-menu a.info { background-image: url(../images/help.png); }
66 #admin-menu a.info { background-image: url(../images/help.png); }
67
67
68 #main {background-color:#EEEEEE;}
68 #main {background-color:#EEEEEE;}
69
69
70 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; padding: 0; margin: 0;}
70 #sidebar{ float: right; width: 17%; position: relative; z-index: 9; padding: 0; margin: 0;}
71 * html #sidebar{ width: 17%; }
71 * html #sidebar{ width: 17%; }
72 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
72 #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; }
73 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
73 #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; }
74 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
74 * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; }
75
75
76 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
76 #content { width: 80%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; }
77 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
77 * html #content{ width: 80%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;}
78 html>body #content { min-height: 600px; }
78 html>body #content { min-height: 600px; }
79 * html body #content { height: 600px; } /* IE */
79 * html body #content { height: 600px; } /* IE */
80
80
81 #main.nosidebar #sidebar{ display: none; }
81 #main.nosidebar #sidebar{ display: none; }
82 #main.nosidebar #content{ width: auto; border-right: 0; }
82 #main.nosidebar #content{ width: auto; border-right: 0; }
83
83
84 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
84 #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;}
85
85
86 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
86 #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; }
87 #login-form table td {padding: 6px;}
87 #login-form table td {padding: 6px;}
88 #login-form label {font-weight: bold;}
88 #login-form label {font-weight: bold;}
89 #login-form input#username, #login-form input#password { width: 300px; }
89 #login-form input#username, #login-form input#password { width: 300px; }
90
90
91 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
91 input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; }
92
92
93 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
93 .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; }
94
94
95 /***** Links *****/
95 /***** Links *****/
96 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
96 a, a:link, a:visited{ color: #2A5685; text-decoration: none; }
97 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
97 a:hover, a:active{ color: #c61a1a; text-decoration: underline;}
98 a img{ border: 0; }
98 a img{ border: 0; }
99
99
100 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
100 a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; }
101
101
102 /***** Tables *****/
102 /***** Tables *****/
103 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
103 table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; }
104 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
104 table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; }
105 table.list td { vertical-align: top; }
105 table.list td { vertical-align: top; }
106 table.list td.id { width: 2%; text-align: center;}
106 table.list td.id { width: 2%; text-align: center;}
107 table.list td.checkbox { width: 15px; padding: 0px;}
107 table.list td.checkbox { width: 15px; padding: 0px;}
108 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
108 table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; }
109 table.list td.buttons a { padding-right: 0.6em; }
109 table.list td.buttons a { padding-right: 0.6em; }
110 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
110 table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; }
111
111
112 tr.project td.name a { padding-left: 16px; white-space:nowrap; }
112 tr.project td.name a { padding-left: 16px; white-space:nowrap; }
113 tr.project.parent td.name a { background: url('../images/bullet_toggle_minus.png') no-repeat; }
113 tr.project.parent td.name a { background: url('../images/bullet_toggle_minus.png') no-repeat; }
114
114
115 tr.issue { text-align: center; white-space: nowrap; }
115 tr.issue { text-align: center; white-space: nowrap; }
116 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
116 tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; }
117 tr.issue td.subject { text-align: left; }
117 tr.issue td.subject { text-align: left; }
118 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
118 tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;}
119
119
120 tr.entry { border: 1px solid #f8f8f8; }
120 tr.entry { border: 1px solid #f8f8f8; }
121 tr.entry td { white-space: nowrap; }
121 tr.entry td { white-space: nowrap; }
122 tr.entry td.filename { width: 30%; }
122 tr.entry td.filename { width: 30%; }
123 tr.entry td.size { text-align: right; font-size: 90%; }
123 tr.entry td.size { text-align: right; font-size: 90%; }
124 tr.entry td.revision, tr.entry td.author { text-align: center; }
124 tr.entry td.revision, tr.entry td.author { text-align: center; }
125 tr.entry td.age { text-align: right; }
125 tr.entry td.age { text-align: right; }
126 tr.entry.file td.filename a { margin-left: 16px; }
126 tr.entry.file td.filename a { margin-left: 16px; }
127
127
128 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
128 tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;}
129 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
129 tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);}
130
130
131 tr.changeset td.author { text-align: center; width: 15%; }
131 tr.changeset td.author { text-align: center; width: 15%; }
132 tr.changeset td.committed_on { text-align: center; width: 15%; }
132 tr.changeset td.committed_on { text-align: center; width: 15%; }
133
133
134 table.files tr.file td { text-align: center; }
134 table.files tr.file td { text-align: center; }
135 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
135 table.files tr.file td.filename { text-align: left; padding-left: 24px; }
136 table.files tr.file td.digest { font-size: 80%; }
136 table.files tr.file td.digest { font-size: 80%; }
137
137
138 table.members td.roles, table.memberships td.roles { width: 45%; }
138 table.members td.roles, table.memberships td.roles { width: 45%; }
139
139
140 tr.message { height: 2.6em; }
140 tr.message { height: 2.6em; }
141 tr.message td.subject { padding-left: 20px; }
141 tr.message td.subject { padding-left: 20px; }
142 tr.message td.created_on { white-space: nowrap; }
142 tr.message td.created_on { white-space: nowrap; }
143 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
143 tr.message td.last_message { font-size: 80%; white-space: nowrap; }
144 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
144 tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; }
145 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
145 tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; }
146
146
147 tr.version.closed, tr.version.closed a { color: #999; }
147 tr.version.closed, tr.version.closed a { color: #999; }
148 tr.version td.name { padding-left: 20px; }
148 tr.version td.name { padding-left: 20px; }
149 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
149 tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; }
150 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; }
150 tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; }
151
151
152 tr.user td { width:13%; }
152 tr.user td { width:13%; }
153 tr.user td.email { width:18%; }
153 tr.user td.email { width:18%; }
154 tr.user td { white-space: nowrap; }
154 tr.user td { white-space: nowrap; }
155 tr.user.locked, tr.user.registered { color: #aaa; }
155 tr.user.locked, tr.user.registered { color: #aaa; }
156 tr.user.locked a, tr.user.registered a { color: #aaa; }
156 tr.user.locked a, tr.user.registered a { color: #aaa; }
157
157
158 tr.time-entry { text-align: center; white-space: nowrap; }
158 tr.time-entry { text-align: center; white-space: nowrap; }
159 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
159 tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; }
160 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
160 td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; }
161 td.hours .hours-dec { font-size: 0.9em; }
161 td.hours .hours-dec { font-size: 0.9em; }
162
162
163 table.plugins td { vertical-align: middle; }
163 table.plugins td { vertical-align: middle; }
164 table.plugins td.configure { text-align: right; padding-right: 1em; }
164 table.plugins td.configure { text-align: right; padding-right: 1em; }
165 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
165 table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; }
166 table.plugins span.description { display: block; font-size: 0.9em; }
166 table.plugins span.description { display: block; font-size: 0.9em; }
167 table.plugins span.url { display: block; font-size: 0.9em; }
167 table.plugins span.url { display: block; font-size: 0.9em; }
168
168
169 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
169 table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; }
170 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
170 table.list tbody tr.group span.count { color: #aaa; font-size: 80%; }
171
171
172 table.list tbody tr:hover { background-color:#ffffdd; }
172 table.list tbody tr:hover { background-color:#ffffdd; }
173 table.list tbody tr.group:hover { background-color:inherit; }
173 table.list tbody tr.group:hover { background-color:inherit; }
174 table td {padding:2px;}
174 table td {padding:2px;}
175 table p {margin:0;}
175 table p {margin:0;}
176 .odd {background-color:#f6f7f8;}
176 .odd {background-color:#f6f7f8;}
177 .even {background-color: #fff;}
177 .even {background-color: #fff;}
178
178
179 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
179 a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
180 a.sort.asc { background-image: url(../images/sort_asc.png); }
180 a.sort.asc { background-image: url(../images/sort_asc.png); }
181 a.sort.desc { background-image: url(../images/sort_desc.png); }
181 a.sort.desc { background-image: url(../images/sort_desc.png); }
182
182
183 table.attributes { width: 100% }
183 table.attributes { width: 100% }
184 table.attributes th { vertical-align: top; text-align: left; }
184 table.attributes th { vertical-align: top; text-align: left; }
185 table.attributes td { vertical-align: top; }
185 table.attributes td { vertical-align: top; }
186
186
187 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
187 table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; }
188
188
189 td.center {text-align:center;}
189 td.center {text-align:center;}
190
190
191 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
191 h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; }
192
192
193 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
193 div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; }
194 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
194 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; }
195 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
195 div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; }
196 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
196 div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; }
197
197
198 #watchers ul {margin: 0; padding: 0;}
199 #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;}
200 #watchers select {width: 95%; display: block;}
201 #watchers a.delete {opacity: 0.4;}
202 #watchers a.delete:hover {opacity: 1;}
203 #watchers img.gravatar {vertical-align: middle;margin-right: 4px;}
204
198 .highlight { background-color: #FCFD8D;}
205 .highlight { background-color: #FCFD8D;}
199 .highlight.token-1 { background-color: #faa;}
206 .highlight.token-1 { background-color: #faa;}
200 .highlight.token-2 { background-color: #afa;}
207 .highlight.token-2 { background-color: #afa;}
201 .highlight.token-3 { background-color: #aaf;}
208 .highlight.token-3 { background-color: #aaf;}
202
209
203 .box{
210 .box{
204 padding:6px;
211 padding:6px;
205 margin-bottom: 10px;
212 margin-bottom: 10px;
206 background-color:#f6f6f6;
213 background-color:#f6f6f6;
207 color:#505050;
214 color:#505050;
208 line-height:1.5em;
215 line-height:1.5em;
209 border: 1px solid #e4e4e4;
216 border: 1px solid #e4e4e4;
210 }
217 }
211
218
212 div.square {
219 div.square {
213 border: 1px solid #999;
220 border: 1px solid #999;
214 float: left;
221 float: left;
215 margin: .3em .4em 0 .4em;
222 margin: .3em .4em 0 .4em;
216 overflow: hidden;
223 overflow: hidden;
217 width: .6em; height: .6em;
224 width: .6em; height: .6em;
218 }
225 }
219 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
226 .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;}
220 .contextual input, .contextual select {font-size:0.9em;}
227 .contextual input, .contextual select {font-size:0.9em;}
221 .message .contextual { margin-top: 0; }
228 .message .contextual { margin-top: 0; }
222
229
223 .splitcontentleft{float:left; width:49%;}
230 .splitcontentleft{float:left; width:49%;}
224 .splitcontentright{float:right; width:49%;}
231 .splitcontentright{float:right; width:49%;}
225 form {display: inline;}
232 form {display: inline;}
226 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
233 input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;}
227 fieldset {border: 1px solid #e4e4e4; margin:0;}
234 fieldset {border: 1px solid #e4e4e4; margin:0;}
228 legend {color: #484848;}
235 legend {color: #484848;}
229 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
236 hr { width: 100%; height: 1px; background: #ccc; border: 0;}
230 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
237 blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;}
231 blockquote blockquote { margin-left: 0;}
238 blockquote blockquote { margin-left: 0;}
232 acronym { border-bottom: 1px dotted; cursor: help; }
239 acronym { border-bottom: 1px dotted; cursor: help; }
233 textarea.wiki-edit { width: 99%; }
240 textarea.wiki-edit { width: 99%; }
234 li p {margin-top: 0;}
241 li p {margin-top: 0;}
235 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
242 div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;}
236 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
243 p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;}
237 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
244 p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; }
238 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
245 p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; }
239
246
240 div.issue div.subject div div { padding-left: 16px; }
247 div.issue div.subject div div { padding-left: 16px; }
241 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
248 div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;}
242 div.issue div.subject>div>p { margin-top: 0.5em; }
249 div.issue div.subject>div>p { margin-top: 0.5em; }
243 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
250 div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;}
244
251
245 #issue_tree table.issues { border: 0; }
252 #issue_tree table.issues { border: 0; }
246 #issue_tree td.checkbox {display:none;}
253 #issue_tree td.checkbox {display:none;}
247
254
248 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
255 fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; }
249 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
256 fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; }
250 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
257 fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); }
251
258
252 fieldset#date-range p { margin: 2px 0 2px 0; }
259 fieldset#date-range p { margin: 2px 0 2px 0; }
253 fieldset#filters table { border-collapse: collapse; }
260 fieldset#filters table { border-collapse: collapse; }
254 fieldset#filters table td { padding: 0; vertical-align: middle; }
261 fieldset#filters table td { padding: 0; vertical-align: middle; }
255 fieldset#filters tr.filter { height: 2em; }
262 fieldset#filters tr.filter { height: 2em; }
256 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
263 fieldset#filters td.add-filter { text-align: right; vertical-align: top; }
257 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
264 .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; }
258
265
259 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
266 div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;}
260 div#issue-changesets .changeset { padding: 4px;}
267 div#issue-changesets .changeset { padding: 4px;}
261 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
268 div#issue-changesets .changeset { border-bottom: 1px solid #ddd; }
262 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
269 div#issue-changesets p { margin-top: 0; margin-bottom: 1em;}
263
270
264 div#activity dl, #search-results { margin-left: 2em; }
271 div#activity dl, #search-results { margin-left: 2em; }
265 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
272 div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; }
266 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
273 div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; }
267 div#activity dt.me .time { border-bottom: 1px solid #999; }
274 div#activity dt.me .time { border-bottom: 1px solid #999; }
268 div#activity dt .time { color: #777; font-size: 80%; }
275 div#activity dt .time { color: #777; font-size: 80%; }
269 div#activity dd .description, #search-results dd .description { font-style: italic; }
276 div#activity dd .description, #search-results dd .description { font-style: italic; }
270 div#activity span.project:after, #search-results span.project:after { content: " -"; }
277 div#activity span.project:after, #search-results span.project:after { content: " -"; }
271 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
278 div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; }
272
279
273 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
280 #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; }
274
281
275 div#search-results-counts {float:right;}
282 div#search-results-counts {float:right;}
276 div#search-results-counts ul { margin-top: 0.5em; }
283 div#search-results-counts ul { margin-top: 0.5em; }
277 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
284 div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; }
278
285
279 dt.issue { background-image: url(../images/ticket.png); }
286 dt.issue { background-image: url(../images/ticket.png); }
280 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
287 dt.issue-edit { background-image: url(../images/ticket_edit.png); }
281 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
288 dt.issue-closed { background-image: url(../images/ticket_checked.png); }
282 dt.issue-note { background-image: url(../images/ticket_note.png); }
289 dt.issue-note { background-image: url(../images/ticket_note.png); }
283 dt.changeset { background-image: url(../images/changeset.png); }
290 dt.changeset { background-image: url(../images/changeset.png); }
284 dt.news { background-image: url(../images/news.png); }
291 dt.news { background-image: url(../images/news.png); }
285 dt.message { background-image: url(../images/message.png); }
292 dt.message { background-image: url(../images/message.png); }
286 dt.reply { background-image: url(../images/comments.png); }
293 dt.reply { background-image: url(../images/comments.png); }
287 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
294 dt.wiki-page { background-image: url(../images/wiki_edit.png); }
288 dt.attachment { background-image: url(../images/attachment.png); }
295 dt.attachment { background-image: url(../images/attachment.png); }
289 dt.document { background-image: url(../images/document.png); }
296 dt.document { background-image: url(../images/document.png); }
290 dt.project { background-image: url(../images/projects.png); }
297 dt.project { background-image: url(../images/projects.png); }
291 dt.time-entry { background-image: url(../images/time.png); }
298 dt.time-entry { background-image: url(../images/time.png); }
292
299
293 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
300 #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); }
294
301
295 div#roadmap .related-issues { margin-bottom: 1em; }
302 div#roadmap .related-issues { margin-bottom: 1em; }
296 div#roadmap .related-issues td.checkbox { display: none; }
303 div#roadmap .related-issues td.checkbox { display: none; }
297 div#roadmap .wiki h1:first-child { display: none; }
304 div#roadmap .wiki h1:first-child { display: none; }
298 div#roadmap .wiki h1 { font-size: 120%; }
305 div#roadmap .wiki h1 { font-size: 120%; }
299 div#roadmap .wiki h2 { font-size: 110%; }
306 div#roadmap .wiki h2 { font-size: 110%; }
300
307
301 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
308 div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; }
302 div#version-summary fieldset { margin-bottom: 1em; }
309 div#version-summary fieldset { margin-bottom: 1em; }
303 div#version-summary .total-hours { text-align: right; }
310 div#version-summary .total-hours { text-align: right; }
304
311
305 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
312 table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; }
306 table#time-report tbody tr { font-style: italic; color: #777; }
313 table#time-report tbody tr { font-style: italic; color: #777; }
307 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
314 table#time-report tbody tr.last-level { font-style: normal; color: #555; }
308 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
315 table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; }
309 table#time-report .hours-dec { font-size: 0.9em; }
316 table#time-report .hours-dec { font-size: 0.9em; }
310
317
311 form .attributes { margin-bottom: 8px; }
318 form .attributes { margin-bottom: 8px; }
312 form .attributes p { padding-top: 1px; padding-bottom: 2px; }
319 form .attributes p { padding-top: 1px; padding-bottom: 2px; }
313 form .attributes select { min-width: 50%; }
320 form .attributes select { min-width: 50%; }
314
321
315 ul.projects { margin: 0; padding-left: 1em; }
322 ul.projects { margin: 0; padding-left: 1em; }
316 ul.projects.root { margin: 0; padding: 0; }
323 ul.projects.root { margin: 0; padding: 0; }
317 ul.projects ul { border-left: 3px solid #e0e0e0; }
324 ul.projects ul { border-left: 3px solid #e0e0e0; }
318 ul.projects li { list-style-type:none; }
325 ul.projects li { list-style-type:none; }
319 ul.projects li.root { margin-bottom: 1em; }
326 ul.projects li.root { margin-bottom: 1em; }
320 ul.projects li.child { margin-top: 1em;}
327 ul.projects li.child { margin-top: 1em;}
321 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
328 ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; }
322 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
329 .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; }
323
330
324 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
331 #tracker_project_ids ul { margin: 0; padding-left: 1em; }
325 #tracker_project_ids li { list-style-type:none; }
332 #tracker_project_ids li { list-style-type:none; }
326
333
327 ul.properties {padding:0; font-size: 0.9em; color: #777;}
334 ul.properties {padding:0; font-size: 0.9em; color: #777;}
328 ul.properties li {list-style-type:none;}
335 ul.properties li {list-style-type:none;}
329 ul.properties li span {font-style:italic;}
336 ul.properties li span {font-style:italic;}
330
337
331 .total-hours { font-size: 110%; font-weight: bold; }
338 .total-hours { font-size: 110%; font-weight: bold; }
332 .total-hours span.hours-int { font-size: 120%; }
339 .total-hours span.hours-int { font-size: 120%; }
333
340
334 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
341 .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;}
335 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
342 #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; }
336
343
337 #workflow_copy_form select { width: 200px; }
344 #workflow_copy_form select { width: 200px; }
338
345
339 .pagination {font-size: 90%}
346 .pagination {font-size: 90%}
340 p.pagination {margin-top:8px;}
347 p.pagination {margin-top:8px;}
341
348
342 /***** Tabular forms ******/
349 /***** Tabular forms ******/
343 .tabular p{
350 .tabular p{
344 margin: 0;
351 margin: 0;
345 padding: 5px 0 8px 0;
352 padding: 5px 0 8px 0;
346 padding-left: 180px; /*width of left column containing the label elements*/
353 padding-left: 180px; /*width of left column containing the label elements*/
347 height: 1%;
354 height: 1%;
348 clear:left;
355 clear:left;
349 }
356 }
350
357
351 html>body .tabular p {overflow:hidden;}
358 html>body .tabular p {overflow:hidden;}
352
359
353 .tabular label{
360 .tabular label{
354 font-weight: bold;
361 font-weight: bold;
355 float: left;
362 float: left;
356 text-align: right;
363 text-align: right;
357 margin-left: -180px; /*width of left column*/
364 margin-left: -180px; /*width of left column*/
358 width: 175px; /*width of labels. Should be smaller than left column to create some right
365 width: 175px; /*width of labels. Should be smaller than left column to create some right
359 margin*/
366 margin*/
360 }
367 }
361
368
362 .tabular label.floating{
369 .tabular label.floating{
363 font-weight: normal;
370 font-weight: normal;
364 margin-left: 0px;
371 margin-left: 0px;
365 text-align: left;
372 text-align: left;
366 width: 270px;
373 width: 270px;
367 }
374 }
368
375
369 .tabular label.block{
376 .tabular label.block{
370 font-weight: normal;
377 font-weight: normal;
371 margin-left: 0px !important;
378 margin-left: 0px !important;
372 text-align: left;
379 text-align: left;
373 float: none;
380 float: none;
374 display: block;
381 display: block;
375 width: auto;
382 width: auto;
376 }
383 }
377
384
378 input#time_entry_comments { width: 90%;}
385 input#time_entry_comments { width: 90%;}
379
386
380 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
387 #preview fieldset {margin-top: 1em; background: url(../images/draft.png)}
381
388
382 .tabular.settings p{ padding-left: 300px; }
389 .tabular.settings p{ padding-left: 300px; }
383 .tabular.settings label{ margin-left: -300px; width: 295px; }
390 .tabular.settings label{ margin-left: -300px; width: 295px; }
384 .tabular.settings textarea { width: 99%; }
391 .tabular.settings textarea { width: 99%; }
385
392
386 fieldset.settings label { display: block; }
393 fieldset.settings label { display: block; }
387
394
388 .required {color: #bb0000;}
395 .required {color: #bb0000;}
389 .summary {font-style: italic;}
396 .summary {font-style: italic;}
390
397
391 #attachments_fields input[type=text] {margin-left: 8px; }
398 #attachments_fields input[type=text] {margin-left: 8px; }
392
399
393 div.attachments { margin-top: 12px; }
400 div.attachments { margin-top: 12px; }
394 div.attachments p { margin:4px 0 2px 0; }
401 div.attachments p { margin:4px 0 2px 0; }
395 div.attachments img { vertical-align: middle; }
402 div.attachments img { vertical-align: middle; }
396 div.attachments span.author { font-size: 0.9em; color: #888; }
403 div.attachments span.author { font-size: 0.9em; color: #888; }
397
404
398 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
405 p.other-formats { text-align: right; font-size:0.9em; color: #666; }
399 .other-formats span + span:before { content: "| "; }
406 .other-formats span + span:before { content: "| "; }
400
407
401 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
408 a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
402
409
403 /* Project members tab */
410 /* Project members tab */
404 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
411 div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% }
405 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
412 div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% }
406 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
413 div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; }
407 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
414 div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; }
408 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
415 div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; }
409 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
416 div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; }
410
417
411 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
418 table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; }
412
419
413 * html div#tab-content-members fieldset div { height: 450px; }
420 * html div#tab-content-members fieldset div { height: 450px; }
414
421
415 /***** Flash & error messages ****/
422 /***** Flash & error messages ****/
416 #errorExplanation, div.flash, .nodata, .warning {
423 #errorExplanation, div.flash, .nodata, .warning {
417 padding: 4px 4px 4px 30px;
424 padding: 4px 4px 4px 30px;
418 margin-bottom: 12px;
425 margin-bottom: 12px;
419 font-size: 1.1em;
426 font-size: 1.1em;
420 border: 2px solid;
427 border: 2px solid;
421 }
428 }
422
429
423 div.flash {margin-top: 8px;}
430 div.flash {margin-top: 8px;}
424
431
425 div.flash.error, #errorExplanation {
432 div.flash.error, #errorExplanation {
426 background: url(../images/exclamation.png) 8px 50% no-repeat;
433 background: url(../images/exclamation.png) 8px 50% no-repeat;
427 background-color: #ffe3e3;
434 background-color: #ffe3e3;
428 border-color: #dd0000;
435 border-color: #dd0000;
429 color: #880000;
436 color: #880000;
430 }
437 }
431
438
432 div.flash.notice {
439 div.flash.notice {
433 background: url(../images/true.png) 8px 5px no-repeat;
440 background: url(../images/true.png) 8px 5px no-repeat;
434 background-color: #dfffdf;
441 background-color: #dfffdf;
435 border-color: #9fcf9f;
442 border-color: #9fcf9f;
436 color: #005f00;
443 color: #005f00;
437 }
444 }
438
445
439 div.flash.warning {
446 div.flash.warning {
440 background: url(../images/warning.png) 8px 5px no-repeat;
447 background: url(../images/warning.png) 8px 5px no-repeat;
441 background-color: #FFEBC1;
448 background-color: #FFEBC1;
442 border-color: #FDBF3B;
449 border-color: #FDBF3B;
443 color: #A6750C;
450 color: #A6750C;
444 text-align: left;
451 text-align: left;
445 }
452 }
446
453
447 .nodata, .warning {
454 .nodata, .warning {
448 text-align: center;
455 text-align: center;
449 background-color: #FFEBC1;
456 background-color: #FFEBC1;
450 border-color: #FDBF3B;
457 border-color: #FDBF3B;
451 color: #A6750C;
458 color: #A6750C;
452 }
459 }
453
460
454 #errorExplanation ul { font-size: 0.9em;}
461 #errorExplanation ul { font-size: 0.9em;}
455 #errorExplanation h2, #errorExplanation p { display: none; }
462 #errorExplanation h2, #errorExplanation p { display: none; }
456
463
457 /***** Ajax indicator ******/
464 /***** Ajax indicator ******/
458 #ajax-indicator {
465 #ajax-indicator {
459 position: absolute; /* fixed not supported by IE */
466 position: absolute; /* fixed not supported by IE */
460 background-color:#eee;
467 background-color:#eee;
461 border: 1px solid #bbb;
468 border: 1px solid #bbb;
462 top:35%;
469 top:35%;
463 left:40%;
470 left:40%;
464 width:20%;
471 width:20%;
465 font-weight:bold;
472 font-weight:bold;
466 text-align:center;
473 text-align:center;
467 padding:0.6em;
474 padding:0.6em;
468 z-index:100;
475 z-index:100;
469 filter:alpha(opacity=50);
476 filter:alpha(opacity=50);
470 opacity: 0.5;
477 opacity: 0.5;
471 }
478 }
472
479
473 html>body #ajax-indicator { position: fixed; }
480 html>body #ajax-indicator { position: fixed; }
474
481
475 #ajax-indicator span {
482 #ajax-indicator span {
476 background-position: 0% 40%;
483 background-position: 0% 40%;
477 background-repeat: no-repeat;
484 background-repeat: no-repeat;
478 background-image: url(../images/loading.gif);
485 background-image: url(../images/loading.gif);
479 padding-left: 26px;
486 padding-left: 26px;
480 vertical-align: bottom;
487 vertical-align: bottom;
481 }
488 }
482
489
483 /***** Calendar *****/
490 /***** Calendar *****/
484 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
491 table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;}
485 table.cal thead th {width: 14%;}
492 table.cal thead th {width: 14%;}
486 table.cal tbody tr {height: 100px;}
493 table.cal tbody tr {height: 100px;}
487 table.cal th { background-color:#EEEEEE; padding: 4px; }
494 table.cal th { background-color:#EEEEEE; padding: 4px; }
488 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
495 table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;}
489 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
496 table.cal td p.day-num {font-size: 1.1em; text-align:right;}
490 table.cal td.odd p.day-num {color: #bbb;}
497 table.cal td.odd p.day-num {color: #bbb;}
491 table.cal td.today {background:#ffffdd;}
498 table.cal td.today {background:#ffffdd;}
492 table.cal td.today p.day-num {font-weight: bold;}
499 table.cal td.today p.day-num {font-weight: bold;}
493 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
500 table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
494 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
501 table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
495 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
502 table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
496 p.cal.legend span {display:block;}
503 p.cal.legend span {display:block;}
497
504
498 /***** Tooltips ******/
505 /***** Tooltips ******/
499 .tooltip{position:relative;z-index:24;}
506 .tooltip{position:relative;z-index:24;}
500 .tooltip:hover{z-index:25;color:#000;}
507 .tooltip:hover{z-index:25;color:#000;}
501 .tooltip span.tip{display: none; text-align:left;}
508 .tooltip span.tip{display: none; text-align:left;}
502
509
503 div.tooltip:hover span.tip{
510 div.tooltip:hover span.tip{
504 display:block;
511 display:block;
505 position:absolute;
512 position:absolute;
506 top:12px; left:24px; width:270px;
513 top:12px; left:24px; width:270px;
507 border:1px solid #555;
514 border:1px solid #555;
508 background-color:#fff;
515 background-color:#fff;
509 padding: 4px;
516 padding: 4px;
510 font-size: 0.8em;
517 font-size: 0.8em;
511 color:#505050;
518 color:#505050;
512 }
519 }
513
520
514 /***** Progress bar *****/
521 /***** Progress bar *****/
515 table.progress {
522 table.progress {
516 border: 1px solid #D7D7D7;
523 border: 1px solid #D7D7D7;
517 border-collapse: collapse;
524 border-collapse: collapse;
518 border-spacing: 0pt;
525 border-spacing: 0pt;
519 empty-cells: show;
526 empty-cells: show;
520 text-align: center;
527 text-align: center;
521 float:left;
528 float:left;
522 margin: 1px 6px 1px 0px;
529 margin: 1px 6px 1px 0px;
523 }
530 }
524
531
525 table.progress td { height: 0.9em; }
532 table.progress td { height: 0.9em; }
526 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
533 table.progress td.closed { background: #BAE0BA none repeat scroll 0%; }
527 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
534 table.progress td.done { background: #DEF0DE none repeat scroll 0%; }
528 table.progress td.open { background: #FFF none repeat scroll 0%; }
535 table.progress td.open { background: #FFF none repeat scroll 0%; }
529 p.pourcent {font-size: 80%;}
536 p.pourcent {font-size: 80%;}
530 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
537 p.progress-info {clear: left; font-style: italic; font-size: 80%;}
531
538
532 /***** Tabs *****/
539 /***** Tabs *****/
533 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
540 #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;}
534 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
541 #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;}
535 #content .tabs ul li {
542 #content .tabs ul li {
536 float:left;
543 float:left;
537 list-style-type:none;
544 list-style-type:none;
538 white-space:nowrap;
545 white-space:nowrap;
539 margin-right:8px;
546 margin-right:8px;
540 background:#fff;
547 background:#fff;
541 position:relative;
548 position:relative;
542 margin-bottom:-1px;
549 margin-bottom:-1px;
543 }
550 }
544 #content .tabs ul li a{
551 #content .tabs ul li a{
545 display:block;
552 display:block;
546 font-size: 0.9em;
553 font-size: 0.9em;
547 text-decoration:none;
554 text-decoration:none;
548 line-height:1.3em;
555 line-height:1.3em;
549 padding:4px 6px 4px 6px;
556 padding:4px 6px 4px 6px;
550 border: 1px solid #ccc;
557 border: 1px solid #ccc;
551 border-bottom: 1px solid #bbbbbb;
558 border-bottom: 1px solid #bbbbbb;
552 background-color: #eeeeee;
559 background-color: #eeeeee;
553 color:#777;
560 color:#777;
554 font-weight:bold;
561 font-weight:bold;
555 }
562 }
556
563
557 #content .tabs ul li a:hover {
564 #content .tabs ul li a:hover {
558 background-color: #ffffdd;
565 background-color: #ffffdd;
559 text-decoration:none;
566 text-decoration:none;
560 }
567 }
561
568
562 #content .tabs ul li a.selected {
569 #content .tabs ul li a.selected {
563 background-color: #fff;
570 background-color: #fff;
564 border: 1px solid #bbbbbb;
571 border: 1px solid #bbbbbb;
565 border-bottom: 1px solid #fff;
572 border-bottom: 1px solid #fff;
566 }
573 }
567
574
568 #content .tabs ul li a.selected:hover {
575 #content .tabs ul li a.selected:hover {
569 background-color: #fff;
576 background-color: #fff;
570 }
577 }
571
578
572 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
579 div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; }
573
580
574 button.tab-left, button.tab-right {
581 button.tab-left, button.tab-right {
575 font-size: 0.9em;
582 font-size: 0.9em;
576 cursor: pointer;
583 cursor: pointer;
577 height:24px;
584 height:24px;
578 border: 1px solid #ccc;
585 border: 1px solid #ccc;
579 border-bottom: 1px solid #bbbbbb;
586 border-bottom: 1px solid #bbbbbb;
580 position:absolute;
587 position:absolute;
581 padding:4px;
588 padding:4px;
582 width: 20px;
589 width: 20px;
583 bottom: -1px;
590 bottom: -1px;
584 }
591 }
585
592
586 button.tab-left {
593 button.tab-left {
587 right: 20px;
594 right: 20px;
588 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
595 background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%;
589 }
596 }
590
597
591 button.tab-right {
598 button.tab-right {
592 right: 0;
599 right: 0;
593 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
600 background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%;
594 }
601 }
595
602
596 /***** Auto-complete *****/
603 /***** Auto-complete *****/
597 div.autocomplete {
604 div.autocomplete {
598 position:absolute;
605 position:absolute;
599 width:400px;
606 width:400px;
600 margin:0;
607 margin:0;
601 padding:0;
608 padding:0;
602 }
609 }
603 div.autocomplete ul {
610 div.autocomplete ul {
604 list-style-type:none;
611 list-style-type:none;
605 margin:0;
612 margin:0;
606 padding:0;
613 padding:0;
607 }
614 }
608 div.autocomplete ul li {
615 div.autocomplete ul li {
609 list-style-type:none;
616 list-style-type:none;
610 display:block;
617 display:block;
611 margin:-1px 0 0 0;
618 margin:-1px 0 0 0;
612 padding:2px;
619 padding:2px;
613 cursor:pointer;
620 cursor:pointer;
614 font-size: 90%;
621 font-size: 90%;
615 border: 1px solid #ccc;
622 border: 1px solid #ccc;
616 border-left: 1px solid #ccc;
623 border-left: 1px solid #ccc;
617 border-right: 1px solid #ccc;
624 border-right: 1px solid #ccc;
618 background-color:white;
625 background-color:white;
619 }
626 }
620 div.autocomplete ul li.selected { background-color: #ffb;}
627 div.autocomplete ul li.selected { background-color: #ffb;}
621 div.autocomplete ul li span.informal {
628 div.autocomplete ul li span.informal {
622 font-size: 80%;
629 font-size: 80%;
623 color: #aaa;
630 color: #aaa;
624 }
631 }
625
632
626 #parent_issue_candidates ul li {width: 500px;}
633 #parent_issue_candidates ul li {width: 500px;}
627
634
628 /***** Diff *****/
635 /***** Diff *****/
629 .diff_out { background: #fcc; }
636 .diff_out { background: #fcc; }
630 .diff_in { background: #cfc; }
637 .diff_in { background: #cfc; }
631
638
632 /***** Wiki *****/
639 /***** Wiki *****/
633 div.wiki table {
640 div.wiki table {
634 border: 1px solid #505050;
641 border: 1px solid #505050;
635 border-collapse: collapse;
642 border-collapse: collapse;
636 margin-bottom: 1em;
643 margin-bottom: 1em;
637 }
644 }
638
645
639 div.wiki table, div.wiki td, div.wiki th {
646 div.wiki table, div.wiki td, div.wiki th {
640 border: 1px solid #bbb;
647 border: 1px solid #bbb;
641 padding: 4px;
648 padding: 4px;
642 }
649 }
643
650
644 div.wiki .external {
651 div.wiki .external {
645 background-position: 0% 60%;
652 background-position: 0% 60%;
646 background-repeat: no-repeat;
653 background-repeat: no-repeat;
647 padding-left: 12px;
654 padding-left: 12px;
648 background-image: url(../images/external.png);
655 background-image: url(../images/external.png);
649 }
656 }
650
657
651 div.wiki a.new {
658 div.wiki a.new {
652 color: #b73535;
659 color: #b73535;
653 }
660 }
654
661
655 div.wiki pre {
662 div.wiki pre {
656 margin: 1em 1em 1em 1.6em;
663 margin: 1em 1em 1em 1.6em;
657 padding: 2px;
664 padding: 2px;
658 background-color: #fafafa;
665 background-color: #fafafa;
659 border: 1px solid #dadada;
666 border: 1px solid #dadada;
660 width:95%;
667 width:95%;
661 overflow-x: auto;
668 overflow-x: auto;
662 }
669 }
663
670
664 div.wiki ul.toc {
671 div.wiki ul.toc {
665 background-color: #ffffdd;
672 background-color: #ffffdd;
666 border: 1px solid #e4e4e4;
673 border: 1px solid #e4e4e4;
667 padding: 4px;
674 padding: 4px;
668 line-height: 1.2em;
675 line-height: 1.2em;
669 margin-bottom: 12px;
676 margin-bottom: 12px;
670 margin-right: 12px;
677 margin-right: 12px;
671 margin-left: 0;
678 margin-left: 0;
672 display: table
679 display: table
673 }
680 }
674 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
681 * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */
675
682
676 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
683 div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; }
677 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
684 div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; }
678 div.wiki ul.toc li { list-style-type:none;}
685 div.wiki ul.toc li { list-style-type:none;}
679 div.wiki ul.toc li.heading2 { margin-left: 6px; }
686 div.wiki ul.toc li.heading2 { margin-left: 6px; }
680 div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; }
687 div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; }
681
688
682 div.wiki ul.toc a {
689 div.wiki ul.toc a {
683 font-size: 0.9em;
690 font-size: 0.9em;
684 font-weight: normal;
691 font-weight: normal;
685 text-decoration: none;
692 text-decoration: none;
686 color: #606060;
693 color: #606060;
687 }
694 }
688 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
695 div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;}
689
696
690 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
697 a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; }
691 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
698 a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; }
692 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
699 h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; }
693
700
694 div.wiki img { vertical-align: middle; }
701 div.wiki img { vertical-align: middle; }
695
702
696 /***** My page layout *****/
703 /***** My page layout *****/
697 .block-receiver {
704 .block-receiver {
698 border:1px dashed #c0c0c0;
705 border:1px dashed #c0c0c0;
699 margin-bottom: 20px;
706 margin-bottom: 20px;
700 padding: 15px 0 15px 0;
707 padding: 15px 0 15px 0;
701 }
708 }
702
709
703 .mypage-box {
710 .mypage-box {
704 margin:0 0 20px 0;
711 margin:0 0 20px 0;
705 color:#505050;
712 color:#505050;
706 line-height:1.5em;
713 line-height:1.5em;
707 }
714 }
708
715
709 .handle {
716 .handle {
710 cursor: move;
717 cursor: move;
711 }
718 }
712
719
713 a.close-icon {
720 a.close-icon {
714 display:block;
721 display:block;
715 margin-top:3px;
722 margin-top:3px;
716 overflow:hidden;
723 overflow:hidden;
717 width:12px;
724 width:12px;
718 height:12px;
725 height:12px;
719 background-repeat: no-repeat;
726 background-repeat: no-repeat;
720 cursor:pointer;
727 cursor:pointer;
721 background-image:url('../images/close.png');
728 background-image:url('../images/close.png');
722 }
729 }
723
730
724 a.close-icon:hover {
731 a.close-icon:hover {
725 background-image:url('../images/close_hl.png');
732 background-image:url('../images/close_hl.png');
726 }
733 }
727
734
728 /***** Gantt chart *****/
735 /***** Gantt chart *****/
729 .gantt_hdr {
736 .gantt_hdr {
730 position:absolute;
737 position:absolute;
731 top:0;
738 top:0;
732 height:16px;
739 height:16px;
733 border-top: 1px solid #c0c0c0;
740 border-top: 1px solid #c0c0c0;
734 border-bottom: 1px solid #c0c0c0;
741 border-bottom: 1px solid #c0c0c0;
735 border-right: 1px solid #c0c0c0;
742 border-right: 1px solid #c0c0c0;
736 text-align: center;
743 text-align: center;
737 overflow: hidden;
744 overflow: hidden;
738 }
745 }
739
746
740 .task {
747 .task {
741 position: absolute;
748 position: absolute;
742 height:8px;
749 height:8px;
743 font-size:0.8em;
750 font-size:0.8em;
744 color:#888;
751 color:#888;
745 padding:0;
752 padding:0;
746 margin:0;
753 margin:0;
747 line-height:0.8em;
754 line-height:0.8em;
748 white-space:nowrap;
755 white-space:nowrap;
749 }
756 }
750
757
751 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
758 .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; }
752 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
759 .task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; }
753 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
760 .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; }
754
761
755 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
762 .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;}
756 .task_late.parent, .task_done.parent { height: 3px;}
763 .task_late.parent, .task_done.parent { height: 3px;}
757 .task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
764 .task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;}
758 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
765 .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;}
759
766
760 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
767 .milestone { background-image:url(../images/milestone.png); background-repeat: no-repeat; border: 0; }
761
768
762 /***** Icons *****/
769 /***** Icons *****/
763 .icon {
770 .icon {
764 background-position: 0% 50%;
771 background-position: 0% 50%;
765 background-repeat: no-repeat;
772 background-repeat: no-repeat;
766 padding-left: 20px;
773 padding-left: 20px;
767 padding-top: 2px;
774 padding-top: 2px;
768 padding-bottom: 3px;
775 padding-bottom: 3px;
769 }
776 }
770
777
771 .icon-add { background-image: url(../images/add.png); }
778 .icon-add { background-image: url(../images/add.png); }
772 .icon-edit { background-image: url(../images/edit.png); }
779 .icon-edit { background-image: url(../images/edit.png); }
773 .icon-copy { background-image: url(../images/copy.png); }
780 .icon-copy { background-image: url(../images/copy.png); }
774 .icon-duplicate { background-image: url(../images/duplicate.png); }
781 .icon-duplicate { background-image: url(../images/duplicate.png); }
775 .icon-del { background-image: url(../images/delete.png); }
782 .icon-del { background-image: url(../images/delete.png); }
776 .icon-move { background-image: url(../images/move.png); }
783 .icon-move { background-image: url(../images/move.png); }
777 .icon-save { background-image: url(../images/save.png); }
784 .icon-save { background-image: url(../images/save.png); }
778 .icon-cancel { background-image: url(../images/cancel.png); }
785 .icon-cancel { background-image: url(../images/cancel.png); }
779 .icon-multiple { background-image: url(../images/table_multiple.png); }
786 .icon-multiple { background-image: url(../images/table_multiple.png); }
780 .icon-folder { background-image: url(../images/folder.png); }
787 .icon-folder { background-image: url(../images/folder.png); }
781 .open .icon-folder { background-image: url(../images/folder_open.png); }
788 .open .icon-folder { background-image: url(../images/folder_open.png); }
782 .icon-package { background-image: url(../images/package.png); }
789 .icon-package { background-image: url(../images/package.png); }
783 .icon-home { background-image: url(../images/home.png); }
790 .icon-home { background-image: url(../images/home.png); }
784 .icon-user { background-image: url(../images/user.png); }
791 .icon-user { background-image: url(../images/user.png); }
785 .icon-projects { background-image: url(../images/projects.png); }
792 .icon-projects { background-image: url(../images/projects.png); }
786 .icon-help { background-image: url(../images/help.png); }
793 .icon-help { background-image: url(../images/help.png); }
787 .icon-attachment { background-image: url(../images/attachment.png); }
794 .icon-attachment { background-image: url(../images/attachment.png); }
788 .icon-history { background-image: url(../images/history.png); }
795 .icon-history { background-image: url(../images/history.png); }
789 .icon-time { background-image: url(../images/time.png); }
796 .icon-time { background-image: url(../images/time.png); }
790 .icon-time-add { background-image: url(../images/time_add.png); }
797 .icon-time-add { background-image: url(../images/time_add.png); }
791 .icon-stats { background-image: url(../images/stats.png); }
798 .icon-stats { background-image: url(../images/stats.png); }
792 .icon-warning { background-image: url(../images/warning.png); }
799 .icon-warning { background-image: url(../images/warning.png); }
793 .icon-fav { background-image: url(../images/fav.png); }
800 .icon-fav { background-image: url(../images/fav.png); }
794 .icon-fav-off { background-image: url(../images/fav_off.png); }
801 .icon-fav-off { background-image: url(../images/fav_off.png); }
795 .icon-reload { background-image: url(../images/reload.png); }
802 .icon-reload { background-image: url(../images/reload.png); }
796 .icon-lock { background-image: url(../images/locked.png); }
803 .icon-lock { background-image: url(../images/locked.png); }
797 .icon-unlock { background-image: url(../images/unlock.png); }
804 .icon-unlock { background-image: url(../images/unlock.png); }
798 .icon-checked { background-image: url(../images/true.png); }
805 .icon-checked { background-image: url(../images/true.png); }
799 .icon-details { background-image: url(../images/zoom_in.png); }
806 .icon-details { background-image: url(../images/zoom_in.png); }
800 .icon-report { background-image: url(../images/report.png); }
807 .icon-report { background-image: url(../images/report.png); }
801 .icon-comment { background-image: url(../images/comment.png); }
808 .icon-comment { background-image: url(../images/comment.png); }
802 .icon-summary { background-image: url(../images/lightning.png); }
809 .icon-summary { background-image: url(../images/lightning.png); }
803
810
804 .icon-file { background-image: url(../images/files/default.png); }
811 .icon-file { background-image: url(../images/files/default.png); }
805 .icon-file.text-plain { background-image: url(../images/files/text.png); }
812 .icon-file.text-plain { background-image: url(../images/files/text.png); }
806 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
813 .icon-file.text-x-c { background-image: url(../images/files/c.png); }
807 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
814 .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); }
808 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
815 .icon-file.text-x-php { background-image: url(../images/files/php.png); }
809 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
816 .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); }
810 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
817 .icon-file.text-xml { background-image: url(../images/files/xml.png); }
811 .icon-file.image-gif { background-image: url(../images/files/image.png); }
818 .icon-file.image-gif { background-image: url(../images/files/image.png); }
812 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
819 .icon-file.image-jpeg { background-image: url(../images/files/image.png); }
813 .icon-file.image-png { background-image: url(../images/files/image.png); }
820 .icon-file.image-png { background-image: url(../images/files/image.png); }
814 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
821 .icon-file.image-tiff { background-image: url(../images/files/image.png); }
815 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
822 .icon-file.application-pdf { background-image: url(../images/files/pdf.png); }
816 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
823 .icon-file.application-zip { background-image: url(../images/files/zip.png); }
817 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
824 .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); }
818
825
819 img.gravatar {
826 img.gravatar {
820 padding: 2px;
827 padding: 2px;
821 border: solid 1px #d5d5d5;
828 border: solid 1px #d5d5d5;
822 background: #fff;
829 background: #fff;
823 }
830 }
824
831
825 div.issue img.gravatar {
832 div.issue img.gravatar {
826 float: right;
833 float: right;
827 margin: 0 0 0 1em;
834 margin: 0 0 0 1em;
828 padding: 5px;
835 padding: 5px;
829 }
836 }
830
837
831 div.issue table img.gravatar {
838 div.issue table img.gravatar {
832 height: 14px;
839 height: 14px;
833 width: 14px;
840 width: 14px;
834 padding: 2px;
841 padding: 2px;
835 float: left;
842 float: left;
836 margin: 0 0.5em 0 0;
843 margin: 0 0.5em 0 0;
837 }
844 }
838
845
839 h2 img.gravatar {
846 h2 img.gravatar {
840 padding: 3px;
847 padding: 3px;
841 margin: -2px 4px -4px 0;
848 margin: -2px 4px -4px 0;
842 vertical-align: top;
849 vertical-align: top;
843 }
850 }
844
851
845 h4 img.gravatar {
852 h4 img.gravatar {
846 padding: 3px;
853 padding: 3px;
847 margin: -6px 0 -4px 0;
854 margin: -6px 0 -4px 0;
848 vertical-align: top;
855 vertical-align: top;
849 }
856 }
850
857
851 td.username img.gravatar {
858 td.username img.gravatar {
852 float: left;
859 float: left;
853 margin: 0 1em 0 0;
860 margin: 0 1em 0 0;
854 }
861 }
855
862
856 #activity dt img.gravatar {
863 #activity dt img.gravatar {
857 float: left;
864 float: left;
858 margin: 0 1em 1em 0;
865 margin: 0 1em 1em 0;
859 }
866 }
860
867
861 #activity dt,
868 #activity dt,
862 .journal {
869 .journal {
863 clear: left;
870 clear: left;
864 }
871 }
865
872
866 h2 img { vertical-align:middle; }
873 h2 img { vertical-align:middle; }
867
874
868 .hascontextmenu { cursor: context-menu; }
875 .hascontextmenu { cursor: context-menu; }
869
876
870 /***** Media print specific styles *****/
877 /***** Media print specific styles *****/
871 @media print {
878 @media print {
872 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
879 #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; }
873 #main { background: #fff; }
880 #main { background: #fff; }
874 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
881 #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;}
875 #wiki_add_attachment { display:none; }
882 #wiki_add_attachment { display:none; }
876 }
883 }
General Comments 0
You need to be logged in to leave comments. Login now