@@ -1,74 +1,84 | |||
|
1 | 1 | # Redmine - project management software |
|
2 | 2 | # Copyright (C) 2006-2009 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | module SettingsHelper |
|
19 | 19 | def administration_settings_tabs |
|
20 | 20 | tabs = [{:name => 'general', :partial => 'settings/general', :label => :label_general}, |
|
21 | 21 | {:name => 'display', :partial => 'settings/display', :label => :label_display}, |
|
22 | 22 | {:name => 'authentication', :partial => 'settings/authentication', :label => :label_authentication}, |
|
23 | 23 | {:name => 'projects', :partial => 'settings/projects', :label => :label_project_plural}, |
|
24 | 24 | {:name => 'issues', :partial => 'settings/issues', :label => :label_issue_tracking}, |
|
25 | 25 | {:name => 'notifications', :partial => 'settings/notifications', :label => :field_mail_notification}, |
|
26 | 26 | {:name => 'mail_handler', :partial => 'settings/mail_handler', :label => :label_incoming_emails}, |
|
27 | 27 | {:name => 'repositories', :partial => 'settings/repositories', :label => :label_repository_plural} |
|
28 | 28 | ] |
|
29 | 29 | end |
|
30 | 30 | |
|
31 | 31 | def setting_select(setting, choices, options={}) |
|
32 | 32 | if blank_text = options.delete(:blank) |
|
33 | 33 | choices = [[blank_text.is_a?(Symbol) ? l(blank_text) : blank_text, '']] + choices |
|
34 | 34 | end |
|
35 | 35 | setting_label(setting, options) + |
|
36 | 36 | select_tag("settings[#{setting}]", options_for_select(choices, Setting.send(setting).to_s), options) |
|
37 | 37 | end |
|
38 | 38 | |
|
39 | 39 | def setting_multiselect(setting, choices, options={}) |
|
40 | 40 | setting_values = Setting.send(setting) |
|
41 | 41 | setting_values = [] unless setting_values.is_a?(Array) |
|
42 | 42 | |
|
43 | 43 | setting_label(setting, options) + |
|
44 | 44 | hidden_field_tag("settings[#{setting}][]", '') + |
|
45 | 45 | choices.collect do |choice| |
|
46 | 46 | text, value = (choice.is_a?(Array) ? choice : [choice, choice]) |
|
47 | 47 | content_tag('label', |
|
48 | 48 | check_box_tag("settings[#{setting}][]", value, Setting.send(setting).include?(value)) + text.to_s, |
|
49 | 49 | :class => 'block' |
|
50 | 50 | ) |
|
51 | 51 | end.join |
|
52 | 52 | end |
|
53 | 53 | |
|
54 | 54 | def setting_text_field(setting, options={}) |
|
55 | 55 | setting_label(setting, options) + |
|
56 | 56 | text_field_tag("settings[#{setting}]", Setting.send(setting), options) |
|
57 | 57 | end |
|
58 | 58 | |
|
59 | 59 | def setting_text_area(setting, options={}) |
|
60 | 60 | setting_label(setting, options) + |
|
61 | 61 | text_area_tag("settings[#{setting}]", Setting.send(setting), options) |
|
62 | 62 | end |
|
63 | 63 | |
|
64 | 64 | def setting_check_box(setting, options={}) |
|
65 | 65 | setting_label(setting, options) + |
|
66 | 66 | hidden_field_tag("settings[#{setting}]", 0) + |
|
67 | 67 | check_box_tag("settings[#{setting}]", 1, Setting.send("#{setting}?"), options) |
|
68 | 68 | end |
|
69 | 69 | |
|
70 | 70 | def setting_label(setting, options={}) |
|
71 | 71 | label = options.delete(:label) |
|
72 | 72 | label != false ? content_tag("label", l(label || "setting_#{setting}")) : '' |
|
73 | 73 | end |
|
74 | ||
|
75 | # Renders a notification field for a Redmine::Notifiable option | |
|
76 | def notification_field(notifiable) | |
|
77 | return content_tag(:label, | |
|
78 | check_box_tag('settings[notified_events][]', | |
|
79 | notifiable.name, | |
|
80 | Setting.notified_events.include?(notifiable.name)) + | |
|
81 | l_or_humanize(notifiable.name, :prefix => 'label_'), | |
|
82 | :class => notifiable.parent.present? ? "parent" : '') | |
|
83 | end | |
|
74 | 84 | end |
@@ -1,36 +1,38 | |||
|
1 | 1 | <% if @deliveries %> |
|
2 | 2 | <% form_tag({:action => 'edit', :tab => 'notifications'}) do %> |
|
3 | 3 | |
|
4 | 4 | <div class="box tabular settings"> |
|
5 | 5 | <p><%= setting_text_field :mail_from, :size => 60 %></p> |
|
6 | 6 | |
|
7 | 7 | <p><%= setting_check_box :bcc_recipients %></p> |
|
8 | 8 | |
|
9 | 9 | <p><%= setting_check_box :plain_text_mail %></p> |
|
10 | 10 | |
|
11 | 11 | <p><%= setting_select(:default_notification_option, User::MAIL_NOTIFICATION_OPTIONS.collect {|o| [l(o.last), o.first.to_s]}) %></p> |
|
12 | 12 | |
|
13 | 13 | </div> |
|
14 | 14 | |
|
15 |
<fieldset class="box |
|
|
16 | <%= setting_multiselect(:notified_events, | |
|
17 | @notifiables.collect {|notifiable| [l_or_humanize(notifiable, :prefix => 'label_'), notifiable]}, :label => false) %> | |
|
18 | ||
|
19 | <p><%= check_all_links('notified_events') %></p> | |
|
15 | <fieldset class="box" id="notified_events"><legend><%=l(:text_select_mail_notifications)%></legend> | |
|
16 | <%= hidden_field_tag 'settings[notified_events][]', '' %> | |
|
17 | <% @notifiables.each do |notifiable| %> | |
|
18 | <%= notification_field notifiable %> | |
|
19 | <br /> | |
|
20 | <% end %> | |
|
21 | <p><%= check_all_links('notified_events') %></p> | |
|
20 | 22 | </fieldset> |
|
21 | 23 | |
|
22 | 24 | <fieldset class="box"><legend><%= l(:setting_emails_footer) %></legend> |
|
23 | 25 | <%= setting_text_area :emails_footer, :label => false, :class => 'wiki-edit', :rows => 5 %> |
|
24 | 26 | </fieldset> |
|
25 | 27 | |
|
26 | 28 | <div style="float:right;"> |
|
27 | 29 | <%= link_to l(:label_send_test_email), :controller => 'admin', :action => 'test_email' %> |
|
28 | 30 | </div> |
|
29 | 31 | |
|
30 | 32 | <%= submit_tag l(:button_save) %> |
|
31 | 33 | <% end %> |
|
32 | 34 | <% else %> |
|
33 | 35 | <div class="nodata"> |
|
34 | 36 | <%= simple_format(l(:text_email_delivery_not_configured)) %> |
|
35 | 37 | </div> |
|
36 | 38 | <% end %> |
@@ -1,22 +1,25 | |||
|
1 | 1 | module Redmine |
|
2 | class Notifiable | |
|
3 | CoreNotifications = [ | |
|
4 | 'issue_added', | |
|
5 | 'issue_updated', | |
|
6 | 'issue_note_added', | |
|
7 | 'issue_status_updated', | |
|
8 | 'issue_priority_updated', | |
|
9 | 'news_added', | |
|
10 | 'document_added', | |
|
11 | 'file_added', | |
|
12 | 'message_posted', | |
|
13 | 'wiki_content_added', | |
|
14 | 'wiki_content_updated' | |
|
15 | ] | |
|
2 | class Notifiable < Struct.new(:name, :parent) | |
|
16 | 3 | |
|
4 | def to_s | |
|
5 | name | |
|
6 | end | |
|
7 | ||
|
17 | 8 | # TODO: Plugin API for adding a new notification? |
|
18 | 9 | def self.all |
|
19 |
|
|
|
10 | notifications = [] | |
|
11 | notifications << Notifiable.new('issue_added') | |
|
12 | notifications << Notifiable.new('issue_updated') | |
|
13 | notifications << Notifiable.new('issue_note_added', 'issue_updated') | |
|
14 | notifications << Notifiable.new('issue_status_updated', 'issue_updated') | |
|
15 | notifications << Notifiable.new('issue_priority_updated', 'issue_updated') | |
|
16 | notifications << Notifiable.new('news_added') | |
|
17 | notifications << Notifiable.new('document_added') | |
|
18 | notifications << Notifiable.new('file_added') | |
|
19 | notifications << Notifiable.new('message_posted') | |
|
20 | notifications << Notifiable.new('wiki_content_added') | |
|
21 | notifications << Notifiable.new('wiki_content_updated') | |
|
22 | notifications | |
|
20 | 23 | end |
|
21 | 24 | end |
|
22 | 25 | end |
@@ -1,235 +1,241 | |||
|
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 | function setCheckboxesBySelector(checked, selector) { | |
|
21 | var boxes = $$(selector); | |
|
22 | boxes.each(function(ele) { | |
|
23 | ele.checked = checked; | |
|
24 | }); | |
|
25 | } | |
|
26 | ||
|
20 | 27 | function showAndScrollTo(id, focus) { |
|
21 | 28 | Element.show(id); |
|
22 | 29 | if (focus!=null) { Form.Element.focus(focus); } |
|
23 | 30 | Element.scrollTo(id); |
|
24 | 31 | } |
|
25 | 32 | |
|
26 | 33 | function toggleRowGroup(el) { |
|
27 | 34 | var tr = Element.up(el, 'tr'); |
|
28 | 35 | var n = Element.next(tr); |
|
29 | 36 | tr.toggleClassName('open'); |
|
30 | 37 | while (n != undefined && !n.hasClassName('group')) { |
|
31 | 38 | Element.toggle(n); |
|
32 | 39 | n = Element.next(n); |
|
33 | 40 | } |
|
34 | 41 | } |
|
35 | 42 | |
|
36 | 43 | function toggleFieldset(el) { |
|
37 | 44 | var fieldset = Element.up(el, 'fieldset'); |
|
38 | 45 | fieldset.toggleClassName('collapsed'); |
|
39 | 46 | Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2}); |
|
40 | 47 | } |
|
41 | 48 | |
|
42 | 49 | var fileFieldCount = 1; |
|
43 | 50 | |
|
44 | 51 | function addFileField() { |
|
45 | 52 | if (fileFieldCount >= 10) return false |
|
46 | 53 | fileFieldCount++; |
|
47 | 54 | var f = document.createElement("input"); |
|
48 | 55 | f.type = "file"; |
|
49 | 56 | f.name = "attachments[" + fileFieldCount + "][file]"; |
|
50 | 57 | f.size = 30; |
|
51 | 58 | var d = document.createElement("input"); |
|
52 | 59 | d.type = "text"; |
|
53 | 60 | d.name = "attachments[" + fileFieldCount + "][description]"; |
|
54 | 61 | d.size = 60; |
|
55 | 62 | var dLabel = new Element('label'); |
|
56 | 63 | dLabel.addClassName('inline'); |
|
57 | 64 | // Pulls the languge value used for Optional Description |
|
58 | 65 | dLabel.update($('attachment_description_label_content').innerHTML) |
|
59 | ||
|
60 | 66 | p = document.getElementById("attachments_fields"); |
|
61 | 67 | p.appendChild(document.createElement("br")); |
|
62 | 68 | p.appendChild(f); |
|
63 | 69 | p.appendChild(dLabel); |
|
64 | 70 | dLabel.appendChild(d); |
|
65 | 71 | |
|
66 | 72 | } |
|
67 | 73 | |
|
68 | 74 | function showTab(name) { |
|
69 | 75 | var f = $$('div#content .tab-content'); |
|
70 | 76 | for(var i=0; i<f.length; i++){ |
|
71 | 77 | Element.hide(f[i]); |
|
72 | 78 | } |
|
73 | 79 | var f = $$('div.tabs a'); |
|
74 | 80 | for(var i=0; i<f.length; i++){ |
|
75 | 81 | Element.removeClassName(f[i], "selected"); |
|
76 | 82 | } |
|
77 | 83 | Element.show('tab-content-' + name); |
|
78 | 84 | Element.addClassName('tab-' + name, "selected"); |
|
79 | 85 | return false; |
|
80 | 86 | } |
|
81 | 87 | |
|
82 | 88 | function moveTabRight(el) { |
|
83 | 89 | var lis = Element.up(el, 'div.tabs').down('ul').childElements(); |
|
84 | 90 | var tabsWidth = 0; |
|
85 | 91 | var i; |
|
86 | 92 | for (i=0; i<lis.length; i++) { |
|
87 | 93 | if (lis[i].visible()) { |
|
88 | 94 | tabsWidth += lis[i].getWidth() + 6; |
|
89 | 95 | } |
|
90 | 96 | } |
|
91 | 97 | if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) { |
|
92 | 98 | return; |
|
93 | 99 | } |
|
94 | 100 | i=0; |
|
95 | 101 | while (i<lis.length && !lis[i].visible()) { |
|
96 | 102 | i++; |
|
97 | 103 | } |
|
98 | 104 | lis[i].hide(); |
|
99 | 105 | } |
|
100 | 106 | |
|
101 | 107 | function moveTabLeft(el) { |
|
102 | 108 | var lis = Element.up(el, 'div.tabs').down('ul').childElements(); |
|
103 | 109 | var i = 0; |
|
104 | 110 | while (i<lis.length && !lis[i].visible()) { |
|
105 | 111 | i++; |
|
106 | 112 | } |
|
107 | 113 | if (i>0) { |
|
108 | 114 | lis[i-1].show(); |
|
109 | 115 | } |
|
110 | 116 | } |
|
111 | 117 | |
|
112 | 118 | function displayTabsButtons() { |
|
113 | 119 | var lis; |
|
114 | 120 | var tabsWidth = 0; |
|
115 | 121 | var i; |
|
116 | 122 | $$('div.tabs').each(function(el) { |
|
117 | 123 | lis = el.down('ul').childElements(); |
|
118 | 124 | for (i=0; i<lis.length; i++) { |
|
119 | 125 | if (lis[i].visible()) { |
|
120 | 126 | tabsWidth += lis[i].getWidth() + 6; |
|
121 | 127 | } |
|
122 | 128 | } |
|
123 | 129 | if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) { |
|
124 | 130 | el.down('div.tabs-buttons').hide(); |
|
125 | 131 | } else { |
|
126 | 132 | el.down('div.tabs-buttons').show(); |
|
127 | 133 | } |
|
128 | 134 | }); |
|
129 | 135 | } |
|
130 | 136 | |
|
131 | 137 | function setPredecessorFieldsVisibility() { |
|
132 | 138 | relationType = $('relation_relation_type'); |
|
133 | 139 | if (relationType && (relationType.value == "precedes" || relationType.value == "follows")) { |
|
134 | 140 | Element.show('predecessor_fields'); |
|
135 | 141 | } else { |
|
136 | 142 | Element.hide('predecessor_fields'); |
|
137 | 143 | } |
|
138 | 144 | } |
|
139 | 145 | |
|
140 | 146 | function promptToRemote(text, param, url) { |
|
141 | 147 | value = prompt(text + ':'); |
|
142 | 148 | if (value) { |
|
143 | 149 | new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true}); |
|
144 | 150 | return false; |
|
145 | 151 | } |
|
146 | 152 | } |
|
147 | 153 | |
|
148 | 154 | function collapseScmEntry(id) { |
|
149 | 155 | var els = document.getElementsByClassName(id, 'browser'); |
|
150 | 156 | for (var i = 0; i < els.length; i++) { |
|
151 | 157 | if (els[i].hasClassName('open')) { |
|
152 | 158 | collapseScmEntry(els[i].id); |
|
153 | 159 | } |
|
154 | 160 | Element.hide(els[i]); |
|
155 | 161 | } |
|
156 | 162 | $(id).removeClassName('open'); |
|
157 | 163 | } |
|
158 | 164 | |
|
159 | 165 | function expandScmEntry(id) { |
|
160 | 166 | var els = document.getElementsByClassName(id, 'browser'); |
|
161 | 167 | for (var i = 0; i < els.length; i++) { |
|
162 | 168 | Element.show(els[i]); |
|
163 | 169 | if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) { |
|
164 | 170 | expandScmEntry(els[i].id); |
|
165 | 171 | } |
|
166 | 172 | } |
|
167 | 173 | $(id).addClassName('open'); |
|
168 | 174 | } |
|
169 | 175 | |
|
170 | 176 | function scmEntryClick(id) { |
|
171 | 177 | el = $(id); |
|
172 | 178 | if (el.hasClassName('open')) { |
|
173 | 179 | collapseScmEntry(id); |
|
174 | 180 | el.addClassName('collapsed'); |
|
175 | 181 | return false; |
|
176 | 182 | } else if (el.hasClassName('loaded')) { |
|
177 | 183 | expandScmEntry(id); |
|
178 | 184 | el.removeClassName('collapsed'); |
|
179 | 185 | return false; |
|
180 | 186 | } |
|
181 | 187 | if (el.hasClassName('loading')) { |
|
182 | 188 | return false; |
|
183 | 189 | } |
|
184 | 190 | el.addClassName('loading'); |
|
185 | 191 | return true; |
|
186 | 192 | } |
|
187 | 193 | |
|
188 | 194 | function scmEntryLoaded(id) { |
|
189 | 195 | Element.addClassName(id, 'open'); |
|
190 | 196 | Element.addClassName(id, 'loaded'); |
|
191 | 197 | Element.removeClassName(id, 'loading'); |
|
192 | 198 | } |
|
193 | 199 | |
|
194 | 200 | function randomKey(size) { |
|
195 | 201 | 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'); |
|
196 | 202 | var key = ''; |
|
197 | 203 | for (i = 0; i < size; i++) { |
|
198 | 204 | key += chars[Math.floor(Math.random() * chars.length)]; |
|
199 | 205 | } |
|
200 | 206 | return key; |
|
201 | 207 | } |
|
202 | 208 | |
|
203 | 209 | function observeParentIssueField(url) { |
|
204 | 210 | new Ajax.Autocompleter('issue_parent_issue_id', |
|
205 | 211 | 'parent_issue_candidates', |
|
206 | 212 | url, |
|
207 | 213 | { minChars: 3, |
|
208 | 214 | frequency: 0.5, |
|
209 | 215 | paramName: 'q', |
|
210 | 216 | updateElement: function(value) { |
|
211 | 217 | document.getElementById('issue_parent_issue_id').value = value.id; |
|
212 | 218 | }}); |
|
213 | 219 | } |
|
214 | 220 | |
|
215 | 221 | /* shows and hides ajax indicator */ |
|
216 | 222 | Ajax.Responders.register({ |
|
217 | 223 | onCreate: function(){ |
|
218 | 224 | if ($('ajax-indicator') && Ajax.activeRequestCount > 0) { |
|
219 | 225 | Element.show('ajax-indicator'); |
|
220 | 226 | } |
|
221 | 227 | }, |
|
222 | 228 | onComplete: function(){ |
|
223 | 229 | if ($('ajax-indicator') && Ajax.activeRequestCount == 0) { |
|
224 | 230 | Element.hide('ajax-indicator'); |
|
225 | 231 | } |
|
226 | 232 | } |
|
227 | 233 | }); |
|
228 | 234 | |
|
229 | 235 | function hideOnLoad() { |
|
230 | 236 | $$('.hol').each(function(el) { |
|
231 | 237 | el.hide(); |
|
232 | 238 | }); |
|
233 | 239 | } |
|
234 | 240 | |
|
235 | 241 | Event.observe(window, 'load', hideOnLoad); |
@@ -1,940 +1,941 | |||
|
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 | #admin-menu ul {margin: 0; padding: 0;} |
|
52 | 52 | #admin-menu li {margin: 0; padding: 0 0 12px 0; list-style-type:none;} |
|
53 | 53 | |
|
54 | 54 | #admin-menu a { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px;} |
|
55 | 55 | #admin-menu a.projects { background-image: url(../images/projects.png); } |
|
56 | 56 | #admin-menu a.users { background-image: url(../images/user.png); } |
|
57 | 57 | #admin-menu a.groups { background-image: url(../images/group.png); } |
|
58 | 58 | #admin-menu a.roles { background-image: url(../images/database_key.png); } |
|
59 | 59 | #admin-menu a.trackers { background-image: url(../images/ticket.png); } |
|
60 | 60 | #admin-menu a.issue_statuses { background-image: url(../images/ticket_edit.png); } |
|
61 | 61 | #admin-menu a.workflows { background-image: url(../images/ticket_go.png); } |
|
62 | 62 | #admin-menu a.custom_fields { background-image: url(../images/textfield.png); } |
|
63 | 63 | #admin-menu a.enumerations { background-image: url(../images/text_list_bullets.png); } |
|
64 | 64 | #admin-menu a.settings { background-image: url(../images/changeset.png); } |
|
65 | 65 | #admin-menu a.plugins { background-image: url(../images/plugin.png); } |
|
66 | 66 | #admin-menu a.info { background-image: url(../images/help.png); } |
|
67 | 67 | #admin-menu a.server_authentication { background-image: url(../images/server_key.png); } |
|
68 | 68 | |
|
69 | 69 | #main {background-color:#EEEEEE;} |
|
70 | 70 | |
|
71 | 71 | #sidebar{ float: right; width: 22%; position: relative; z-index: 9; padding: 0; margin: 0;} |
|
72 | 72 | * html #sidebar{ width: 22%; } |
|
73 | 73 | #sidebar h3{ font-size: 14px; margin-top:14px; color: #666; } |
|
74 | 74 | #sidebar hr{ width: 100%; margin: 0 auto; height: 1px; background: #ccc; border: 0; } |
|
75 | 75 | * html #sidebar hr{ width: 95%; position: relative; left: -6px; color: #ccc; } |
|
76 | 76 | #sidebar .contextual { margin-right: 1em; } |
|
77 | 77 | |
|
78 | 78 | #content { width: 75%; background-color: #fff; margin: 0px; border-right: 1px solid #ddd; padding: 6px 10px 10px 10px; z-index: 10; } |
|
79 | 79 | * html #content{ width: 75%; padding-left: 0; margin-top: 0px; padding: 6px 10px 10px 10px;} |
|
80 | 80 | html>body #content { min-height: 600px; } |
|
81 | 81 | * html body #content { height: 600px; } /* IE */ |
|
82 | 82 | |
|
83 | 83 | #main.nosidebar #sidebar{ display: none; } |
|
84 | 84 | #main.nosidebar #content{ width: auto; border-right: 0; } |
|
85 | 85 | |
|
86 | 86 | #footer {clear: both; border-top: 1px solid #bbb; font-size: 0.9em; color: #aaa; padding: 5px; text-align:center; background:#fff;} |
|
87 | 87 | |
|
88 | 88 | #login-form table {margin-top:5em; padding:1em; margin-left: auto; margin-right: auto; border: 2px solid #FDBF3B; background-color:#FFEBC1; } |
|
89 | 89 | #login-form table td {padding: 6px;} |
|
90 | 90 | #login-form label {font-weight: bold;} |
|
91 | 91 | #login-form input#username, #login-form input#password { width: 300px; } |
|
92 | 92 | |
|
93 | 93 | input#openid_url { background: url(../images/openid-bg.gif) no-repeat; background-color: #fff; background-position: 0 50%; padding-left: 18px; } |
|
94 | 94 | |
|
95 | 95 | .clear:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; } |
|
96 | 96 | |
|
97 | 97 | /***** Links *****/ |
|
98 | 98 | a, a:link, a:visited{ color: #2A5685; text-decoration: none; } |
|
99 | 99 | a:hover, a:active{ color: #c61a1a; text-decoration: underline;} |
|
100 | 100 | a img{ border: 0; } |
|
101 | 101 | |
|
102 | 102 | a.issue.closed, a.issue.closed:link, a.issue.closed:visited { color: #999; text-decoration: line-through; } |
|
103 | 103 | |
|
104 | 104 | /***** Tables *****/ |
|
105 | 105 | table.list { border: 1px solid #e4e4e4; border-collapse: collapse; width: 100%; margin-bottom: 4px; } |
|
106 | 106 | table.list th { background-color:#EEEEEE; padding: 4px; white-space:nowrap; } |
|
107 | 107 | table.list td { vertical-align: top; } |
|
108 | 108 | table.list td.id { width: 2%; text-align: center;} |
|
109 | 109 | table.list td.checkbox { width: 15px; padding: 0px;} |
|
110 | 110 | table.list td.buttons { width: 15%; white-space:nowrap; text-align: right; } |
|
111 | 111 | table.list td.buttons a { padding-right: 0.6em; } |
|
112 | 112 | table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; } |
|
113 | 113 | |
|
114 | 114 | tr.project td.name a { white-space:nowrap; } |
|
115 | 115 | |
|
116 | 116 | tr.project.idnt td.name a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} |
|
117 | 117 | tr.project.idnt-1 td.name {padding-left: 0.5em;} |
|
118 | 118 | tr.project.idnt-2 td.name {padding-left: 2em;} |
|
119 | 119 | tr.project.idnt-3 td.name {padding-left: 3.5em;} |
|
120 | 120 | tr.project.idnt-4 td.name {padding-left: 5em;} |
|
121 | 121 | tr.project.idnt-5 td.name {padding-left: 6.5em;} |
|
122 | 122 | tr.project.idnt-6 td.name {padding-left: 8em;} |
|
123 | 123 | tr.project.idnt-7 td.name {padding-left: 9.5em;} |
|
124 | 124 | tr.project.idnt-8 td.name {padding-left: 11em;} |
|
125 | 125 | tr.project.idnt-9 td.name {padding-left: 12.5em;} |
|
126 | 126 | |
|
127 | 127 | tr.issue { text-align: center; white-space: nowrap; } |
|
128 | 128 | tr.issue td.subject, tr.issue td.category, td.assigned_to { white-space: normal; } |
|
129 | 129 | tr.issue td.subject { text-align: left; } |
|
130 | 130 | tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;} |
|
131 | 131 | |
|
132 | 132 | tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} |
|
133 | 133 | tr.issue.idnt-1 td.subject {padding-left: 0.5em;} |
|
134 | 134 | tr.issue.idnt-2 td.subject {padding-left: 2em;} |
|
135 | 135 | tr.issue.idnt-3 td.subject {padding-left: 3.5em;} |
|
136 | 136 | tr.issue.idnt-4 td.subject {padding-left: 5em;} |
|
137 | 137 | tr.issue.idnt-5 td.subject {padding-left: 6.5em;} |
|
138 | 138 | tr.issue.idnt-6 td.subject {padding-left: 8em;} |
|
139 | 139 | tr.issue.idnt-7 td.subject {padding-left: 9.5em;} |
|
140 | 140 | tr.issue.idnt-8 td.subject {padding-left: 11em;} |
|
141 | 141 | tr.issue.idnt-9 td.subject {padding-left: 12.5em;} |
|
142 | 142 | |
|
143 | 143 | tr.entry { border: 1px solid #f8f8f8; } |
|
144 | 144 | tr.entry td { white-space: nowrap; } |
|
145 | 145 | tr.entry td.filename { width: 30%; } |
|
146 | 146 | tr.entry td.size { text-align: right; font-size: 90%; } |
|
147 | 147 | tr.entry td.revision, tr.entry td.author { text-align: center; } |
|
148 | 148 | tr.entry td.age { text-align: right; } |
|
149 | 149 | tr.entry.file td.filename a { margin-left: 16px; } |
|
150 | 150 | |
|
151 | 151 | tr span.expander {background-image: url(../images/bullet_toggle_plus.png); padding-left: 8px; margin-left: 0; cursor: pointer;} |
|
152 | 152 | tr.open span.expander {background-image: url(../images/bullet_toggle_minus.png);} |
|
153 | 153 | |
|
154 | 154 | tr.changeset td.author { text-align: center; width: 15%; } |
|
155 | 155 | tr.changeset td.committed_on { text-align: center; width: 15%; } |
|
156 | 156 | |
|
157 | 157 | table.files tr.file td { text-align: center; } |
|
158 | 158 | table.files tr.file td.filename { text-align: left; padding-left: 24px; } |
|
159 | 159 | table.files tr.file td.digest { font-size: 80%; } |
|
160 | 160 | |
|
161 | 161 | table.members td.roles, table.memberships td.roles { width: 45%; } |
|
162 | 162 | |
|
163 | 163 | tr.message { height: 2.6em; } |
|
164 | 164 | tr.message td.subject { padding-left: 20px; } |
|
165 | 165 | tr.message td.created_on { white-space: nowrap; } |
|
166 | 166 | tr.message td.last_message { font-size: 80%; white-space: nowrap; } |
|
167 | 167 | tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; } |
|
168 | 168 | tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; } |
|
169 | 169 | |
|
170 | 170 | tr.version.closed, tr.version.closed a { color: #999; } |
|
171 | 171 | tr.version td.name { padding-left: 20px; } |
|
172 | 172 | tr.version.shared td.name { background: url(../images/link.png) no-repeat 0% 70%; } |
|
173 | 173 | tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; } |
|
174 | 174 | |
|
175 | 175 | tr.user td { width:13%; } |
|
176 | 176 | tr.user td.email { width:18%; } |
|
177 | 177 | tr.user td { white-space: nowrap; } |
|
178 | 178 | tr.user.locked, tr.user.registered { color: #aaa; } |
|
179 | 179 | tr.user.locked a, tr.user.registered a { color: #aaa; } |
|
180 | 180 | |
|
181 | 181 | tr.time-entry { text-align: center; white-space: nowrap; } |
|
182 | 182 | tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } |
|
183 | 183 | td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } |
|
184 | 184 | td.hours .hours-dec { font-size: 0.9em; } |
|
185 | 185 | |
|
186 | 186 | table.plugins td { vertical-align: middle; } |
|
187 | 187 | table.plugins td.configure { text-align: right; padding-right: 1em; } |
|
188 | 188 | table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; } |
|
189 | 189 | table.plugins span.description { display: block; font-size: 0.9em; } |
|
190 | 190 | table.plugins span.url { display: block; font-size: 0.9em; } |
|
191 | 191 | |
|
192 | 192 | table.list tbody tr.group td { padding: 0.8em 0 0.5em 0.3em; font-weight: bold; border-bottom: 1px solid #ccc; } |
|
193 | 193 | table.list tbody tr.group span.count { color: #aaa; font-size: 80%; } |
|
194 | 194 | |
|
195 | 195 | table.list tbody tr:hover { background-color:#ffffdd; } |
|
196 | 196 | table.list tbody tr.group:hover { background-color:inherit; } |
|
197 | 197 | table td {padding:2px;} |
|
198 | 198 | table p {margin:0;} |
|
199 | 199 | .odd {background-color:#f6f7f8;} |
|
200 | 200 | .even {background-color: #fff;} |
|
201 | 201 | |
|
202 | 202 | a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; } |
|
203 | 203 | a.sort.asc { background-image: url(../images/sort_asc.png); } |
|
204 | 204 | a.sort.desc { background-image: url(../images/sort_desc.png); } |
|
205 | 205 | |
|
206 | 206 | table.attributes { width: 100% } |
|
207 | 207 | table.attributes th { vertical-align: top; text-align: left; } |
|
208 | 208 | table.attributes td { vertical-align: top; } |
|
209 | 209 | |
|
210 | 210 | table.boards a.board, h3.comments { background: url(../images/comment.png) no-repeat 0% 50%; padding-left: 20px; } |
|
211 | 211 | |
|
212 | 212 | td.center {text-align:center;} |
|
213 | 213 | |
|
214 | 214 | h3.version { background: url(../images/package.png) no-repeat 0% 50%; padding-left: 20px; } |
|
215 | 215 | |
|
216 | 216 | div.issues h3 { background: url(../images/ticket.png) no-repeat 0% 50%; padding-left: 20px; } |
|
217 | 217 | div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding-left: 20px; } |
|
218 | 218 | div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; } |
|
219 | 219 | div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; } |
|
220 | 220 | |
|
221 | 221 | #watchers ul {margin: 0; padding: 0;} |
|
222 | 222 | #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;} |
|
223 | 223 | #watchers select {width: 95%; display: block;} |
|
224 | 224 | #watchers a.delete {opacity: 0.4;} |
|
225 | 225 | #watchers a.delete:hover {opacity: 1;} |
|
226 | 226 | #watchers img.gravatar {vertical-align: middle;margin: 0 4px 2px 0;} |
|
227 | 227 | |
|
228 | 228 | .highlight { background-color: #FCFD8D;} |
|
229 | 229 | .highlight.token-1 { background-color: #faa;} |
|
230 | 230 | .highlight.token-2 { background-color: #afa;} |
|
231 | 231 | .highlight.token-3 { background-color: #aaf;} |
|
232 | 232 | |
|
233 | 233 | .box{ |
|
234 | 234 | padding:6px; |
|
235 | 235 | margin-bottom: 10px; |
|
236 | 236 | background-color:#f6f6f6; |
|
237 | 237 | color:#505050; |
|
238 | 238 | line-height:1.5em; |
|
239 | 239 | border: 1px solid #e4e4e4; |
|
240 | 240 | } |
|
241 | 241 | |
|
242 | 242 | div.square { |
|
243 | 243 | border: 1px solid #999; |
|
244 | 244 | float: left; |
|
245 | 245 | margin: .3em .4em 0 .4em; |
|
246 | 246 | overflow: hidden; |
|
247 | 247 | width: .6em; height: .6em; |
|
248 | 248 | } |
|
249 | 249 | .contextual {float:right; white-space: nowrap; line-height:1.4em;margin-top:5px; padding-left: 10px; font-size:0.9em;} |
|
250 | 250 | .contextual input, .contextual select {font-size:0.9em;} |
|
251 | 251 | .message .contextual { margin-top: 0; } |
|
252 | 252 | |
|
253 | 253 | .splitcontentleft{float:left; width:49%;} |
|
254 | 254 | .splitcontentright{float:right; width:49%;} |
|
255 | 255 | form {display: inline;} |
|
256 | 256 | input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;} |
|
257 | 257 | fieldset {border: 1px solid #e4e4e4; margin:0;} |
|
258 | 258 | legend {color: #484848;} |
|
259 | 259 | hr { width: 100%; height: 1px; background: #ccc; border: 0;} |
|
260 | 260 | blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 2.4em;} |
|
261 | 261 | blockquote blockquote { margin-left: 0;} |
|
262 | 262 | acronym { border-bottom: 1px dotted; cursor: help; } |
|
263 | 263 | textarea.wiki-edit { width: 99%; } |
|
264 | 264 | li p {margin-top: 0;} |
|
265 | 265 | div.issue {background:#ffffdd; padding:6px; margin-bottom:6px;border: 1px solid #d7d7d7;} |
|
266 | 266 | p.breadcrumb { font-size: 0.9em; margin: 4px 0 4px 0;} |
|
267 | 267 | p.subtitle { font-size: 0.9em; margin: -6px 0 12px 0; font-style: italic; } |
|
268 | 268 | p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; } |
|
269 | 269 | |
|
270 | 270 | div.issue div.subject div div { padding-left: 16px; } |
|
271 | 271 | div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;} |
|
272 | 272 | div.issue div.subject>div>p { margin-top: 0.5em; } |
|
273 | 273 | div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;} |
|
274 | 274 | |
|
275 | 275 | #issue_tree table.issues { border: 0; } |
|
276 | 276 | #issue_tree td.checkbox {display:none;} |
|
277 | 277 | |
|
278 | 278 | fieldset.collapsible { border-width: 1px 0 0 0; font-size: 0.9em; } |
|
279 | 279 | fieldset.collapsible legend { padding-left: 16px; background: url(../images/arrow_expanded.png) no-repeat 0% 40%; cursor:pointer; } |
|
280 | 280 | fieldset.collapsible.collapsed legend { background-image: url(../images/arrow_collapsed.png); } |
|
281 | 281 | |
|
282 | 282 | fieldset#date-range p { margin: 2px 0 2px 0; } |
|
283 | 283 | fieldset#filters table { border-collapse: collapse; } |
|
284 | 284 | fieldset#filters table td { padding: 0; vertical-align: middle; } |
|
285 | 285 | fieldset#filters tr.filter { height: 2em; } |
|
286 | 286 | fieldset#filters td.add-filter { text-align: right; vertical-align: top; } |
|
287 | 287 | .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; } |
|
288 | 288 | |
|
289 | 289 | div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;} |
|
290 | 290 | div#issue-changesets div.changeset { padding: 4px;} |
|
291 | 291 | div#issue-changesets div.changeset { border-bottom: 1px solid #ddd; } |
|
292 | 292 | div#issue-changesets p { margin-top: 0; margin-bottom: 1em;} |
|
293 | 293 | |
|
294 | 294 | div#activity dl, #search-results { margin-left: 2em; } |
|
295 | 295 | div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 18px; font-size: 0.9em; } |
|
296 | 296 | div#activity dt, #search-results dt { margin-bottom: 0px; padding-left: 20px; line-height: 18px; background-position: 0 50%; background-repeat: no-repeat; } |
|
297 | 297 | div#activity dt.me .time { border-bottom: 1px solid #999; } |
|
298 | 298 | div#activity dt .time { color: #777; font-size: 80%; } |
|
299 | 299 | div#activity dd .description, #search-results dd .description { font-style: italic; } |
|
300 | 300 | div#activity span.project:after, #search-results span.project:after { content: " -"; } |
|
301 | 301 | div#activity dd span.description, #search-results dd span.description { display:block; color: #808080; } |
|
302 | 302 | |
|
303 | 303 | #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; } |
|
304 | 304 | |
|
305 | 305 | div#search-results-counts {float:right;} |
|
306 | 306 | div#search-results-counts ul { margin-top: 0.5em; } |
|
307 | 307 | div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; } |
|
308 | 308 | |
|
309 | 309 | dt.issue { background-image: url(../images/ticket.png); } |
|
310 | 310 | dt.issue-edit { background-image: url(../images/ticket_edit.png); } |
|
311 | 311 | dt.issue-closed { background-image: url(../images/ticket_checked.png); } |
|
312 | 312 | dt.issue-note { background-image: url(../images/ticket_note.png); } |
|
313 | 313 | dt.changeset { background-image: url(../images/changeset.png); } |
|
314 | 314 | dt.news { background-image: url(../images/news.png); } |
|
315 | 315 | dt.message { background-image: url(../images/message.png); } |
|
316 | 316 | dt.reply { background-image: url(../images/comments.png); } |
|
317 | 317 | dt.wiki-page { background-image: url(../images/wiki_edit.png); } |
|
318 | 318 | dt.attachment { background-image: url(../images/attachment.png); } |
|
319 | 319 | dt.document { background-image: url(../images/document.png); } |
|
320 | 320 | dt.project { background-image: url(../images/projects.png); } |
|
321 | 321 | dt.time-entry { background-image: url(../images/time.png); } |
|
322 | 322 | |
|
323 | 323 | #search-results dt.issue.closed { background-image: url(../images/ticket_checked.png); } |
|
324 | 324 | |
|
325 | 325 | div#roadmap .related-issues { margin-bottom: 1em; } |
|
326 | 326 | div#roadmap .related-issues td.checkbox { display: none; } |
|
327 | 327 | div#roadmap .wiki h1:first-child { display: none; } |
|
328 | 328 | div#roadmap .wiki h1 { font-size: 120%; } |
|
329 | 329 | div#roadmap .wiki h2 { font-size: 110%; } |
|
330 | 330 | |
|
331 | 331 | div#version-summary { float:right; width:380px; margin-left: 16px; margin-bottom: 16px; background-color: #fff; } |
|
332 | 332 | div#version-summary fieldset { margin-bottom: 1em; } |
|
333 | 333 | div#version-summary .total-hours { text-align: right; } |
|
334 | 334 | |
|
335 | 335 | table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; } |
|
336 | 336 | table#time-report tbody tr { font-style: italic; color: #777; } |
|
337 | 337 | table#time-report tbody tr.last-level { font-style: normal; color: #555; } |
|
338 | 338 | table#time-report tbody tr.total { font-style: normal; font-weight: bold; color: #555; background-color:#EEEEEE; } |
|
339 | 339 | table#time-report .hours-dec { font-size: 0.9em; } |
|
340 | 340 | |
|
341 | 341 | form .attributes { margin-bottom: 8px; } |
|
342 | 342 | form .attributes p { padding-top: 1px; padding-bottom: 2px; } |
|
343 | 343 | form .attributes select { min-width: 50%; } |
|
344 | 344 | |
|
345 | 345 | ul.projects { margin: 0; padding-left: 1em; } |
|
346 | 346 | ul.projects.root { margin: 0; padding: 0; } |
|
347 | 347 | ul.projects ul.projects { border-left: 3px solid #e0e0e0; } |
|
348 | 348 | ul.projects li.root { list-style-type:none; margin-bottom: 1em; } |
|
349 | 349 | ul.projects li.child { list-style-type:none; margin-top: 1em;} |
|
350 | 350 | ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; } |
|
351 | 351 | .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; } |
|
352 | 352 | |
|
353 | 353 | #tracker_project_ids ul { margin: 0; padding-left: 1em; } |
|
354 | 354 | #tracker_project_ids li { list-style-type:none; } |
|
355 | 355 | |
|
356 | 356 | ul.properties {padding:0; font-size: 0.9em; color: #777;} |
|
357 | 357 | ul.properties li {list-style-type:none;} |
|
358 | 358 | ul.properties li span {font-style:italic;} |
|
359 | 359 | |
|
360 | 360 | .total-hours { font-size: 110%; font-weight: bold; } |
|
361 | 361 | .total-hours span.hours-int { font-size: 120%; } |
|
362 | 362 | |
|
363 | 363 | .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em;} |
|
364 | 364 | #user_firstname, #user_lastname, #user_mail, #my_account_form select { width: 90%; } |
|
365 | 365 | |
|
366 | 366 | #workflow_copy_form select { width: 200px; } |
|
367 | 367 | |
|
368 | 368 | .pagination {font-size: 90%} |
|
369 | 369 | p.pagination {margin-top:8px;} |
|
370 | 370 | |
|
371 | 371 | /***** Tabular forms ******/ |
|
372 | 372 | .tabular p{ |
|
373 | 373 | margin: 0; |
|
374 | 374 | padding: 5px 0 8px 0; |
|
375 | 375 | padding-left: 180px; /*width of left column containing the label elements*/ |
|
376 | 376 | height: 1%; |
|
377 | 377 | clear:left; |
|
378 | 378 | } |
|
379 | 379 | |
|
380 | 380 | html>body .tabular p {overflow:hidden;} |
|
381 | 381 | |
|
382 | 382 | .tabular label{ |
|
383 | 383 | font-weight: bold; |
|
384 | 384 | float: left; |
|
385 | 385 | text-align: right; |
|
386 | 386 | margin-left: -180px; /*width of left column*/ |
|
387 | 387 | width: 175px; /*width of labels. Should be smaller than left column to create some right |
|
388 | 388 | margin*/ |
|
389 | 389 | } |
|
390 | 390 | |
|
391 | 391 | .tabular label.floating{ |
|
392 | 392 | font-weight: normal; |
|
393 | 393 | margin-left: 0px; |
|
394 | 394 | text-align: left; |
|
395 | 395 | width: 270px; |
|
396 | 396 | } |
|
397 | 397 | |
|
398 | 398 | .tabular label.block{ |
|
399 | 399 | font-weight: normal; |
|
400 | 400 | margin-left: 0px !important; |
|
401 | 401 | text-align: left; |
|
402 | 402 | float: none; |
|
403 | 403 | display: block; |
|
404 | 404 | width: auto; |
|
405 | 405 | } |
|
406 | 406 | |
|
407 | 407 | .tabular label.inline{ |
|
408 | 408 | float:none; |
|
409 | 409 | margin-left: 5px !important; |
|
410 | 410 | width: auto; |
|
411 | 411 | } |
|
412 | 412 | |
|
413 | 413 | input#time_entry_comments { width: 90%;} |
|
414 | 414 | |
|
415 | 415 | #preview fieldset {margin-top: 1em; background: url(../images/draft.png)} |
|
416 | 416 | |
|
417 | 417 | .tabular.settings p{ padding-left: 300px; } |
|
418 | 418 | .tabular.settings label{ margin-left: -300px; width: 295px; } |
|
419 | 419 | .tabular.settings textarea { width: 99%; } |
|
420 | 420 | |
|
421 | 421 | fieldset.settings label { display: block; } |
|
422 | .parent { padding-left: 20px; } | |
|
422 | 423 | |
|
423 | 424 | .required {color: #bb0000;} |
|
424 | 425 | .summary {font-style: italic;} |
|
425 | 426 | |
|
426 | 427 | #attachments_fields input[type=text] {margin-left: 8px; } |
|
427 | 428 | |
|
428 | 429 | div.attachments { margin-top: 12px; } |
|
429 | 430 | div.attachments p { margin:4px 0 2px 0; } |
|
430 | 431 | div.attachments img { vertical-align: middle; } |
|
431 | 432 | div.attachments span.author { font-size: 0.9em; color: #888; } |
|
432 | 433 | |
|
433 | 434 | p.other-formats { text-align: right; font-size:0.9em; color: #666; } |
|
434 | 435 | .other-formats span + span:before { content: "| "; } |
|
435 | 436 | |
|
436 | 437 | a.atom { background: url(../images/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; } |
|
437 | 438 | |
|
438 | 439 | /* Project members tab */ |
|
439 | 440 | div#tab-content-members .splitcontentleft, div#tab-content-memberships .splitcontentleft, div#tab-content-users .splitcontentleft { width: 64% } |
|
440 | 441 | div#tab-content-members .splitcontentright, div#tab-content-memberships .splitcontentright, div#tab-content-users .splitcontentright { width: 34% } |
|
441 | 442 | div#tab-content-members fieldset, div#tab-content-memberships fieldset, div#tab-content-users fieldset { padding:1em; margin-bottom: 1em; } |
|
442 | 443 | div#tab-content-members fieldset legend, div#tab-content-memberships fieldset legend, div#tab-content-users fieldset legend { font-weight: bold; } |
|
443 | 444 | div#tab-content-members fieldset label, div#tab-content-memberships fieldset label, div#tab-content-users fieldset label { display: block; } |
|
444 | 445 | div#tab-content-members fieldset div, div#tab-content-users fieldset div { max-height: 400px; overflow:auto; } |
|
445 | 446 | |
|
446 | 447 | table.members td.group { padding-left: 20px; background: url(../images/group.png) no-repeat 0% 50%; } |
|
447 | 448 | |
|
448 | 449 | input#principal_search, input#user_search {width:100%} |
|
449 | 450 | |
|
450 | 451 | * html div#tab-content-members fieldset div { height: 450px; } |
|
451 | 452 | |
|
452 | 453 | /***** Flash & error messages ****/ |
|
453 | 454 | #errorExplanation, div.flash, .nodata, .warning { |
|
454 | 455 | padding: 4px 4px 4px 30px; |
|
455 | 456 | margin-bottom: 12px; |
|
456 | 457 | font-size: 1.1em; |
|
457 | 458 | border: 2px solid; |
|
458 | 459 | } |
|
459 | 460 | |
|
460 | 461 | div.flash {margin-top: 8px;} |
|
461 | 462 | |
|
462 | 463 | div.flash.error, #errorExplanation { |
|
463 | 464 | background: url(../images/exclamation.png) 8px 50% no-repeat; |
|
464 | 465 | background-color: #ffe3e3; |
|
465 | 466 | border-color: #dd0000; |
|
466 | 467 | color: #880000; |
|
467 | 468 | } |
|
468 | 469 | |
|
469 | 470 | div.flash.notice { |
|
470 | 471 | background: url(../images/true.png) 8px 5px no-repeat; |
|
471 | 472 | background-color: #dfffdf; |
|
472 | 473 | border-color: #9fcf9f; |
|
473 | 474 | color: #005f00; |
|
474 | 475 | } |
|
475 | 476 | |
|
476 | 477 | div.flash.warning { |
|
477 | 478 | background: url(../images/warning.png) 8px 5px no-repeat; |
|
478 | 479 | background-color: #FFEBC1; |
|
479 | 480 | border-color: #FDBF3B; |
|
480 | 481 | color: #A6750C; |
|
481 | 482 | text-align: left; |
|
482 | 483 | } |
|
483 | 484 | |
|
484 | 485 | .nodata, .warning { |
|
485 | 486 | text-align: center; |
|
486 | 487 | background-color: #FFEBC1; |
|
487 | 488 | border-color: #FDBF3B; |
|
488 | 489 | color: #A6750C; |
|
489 | 490 | } |
|
490 | 491 | |
|
491 | 492 | #errorExplanation ul { font-size: 0.9em;} |
|
492 | 493 | #errorExplanation h2, #errorExplanation p { display: none; } |
|
493 | 494 | |
|
494 | 495 | /***** Ajax indicator ******/ |
|
495 | 496 | #ajax-indicator { |
|
496 | 497 | position: absolute; /* fixed not supported by IE */ |
|
497 | 498 | background-color:#eee; |
|
498 | 499 | border: 1px solid #bbb; |
|
499 | 500 | top:35%; |
|
500 | 501 | left:40%; |
|
501 | 502 | width:20%; |
|
502 | 503 | font-weight:bold; |
|
503 | 504 | text-align:center; |
|
504 | 505 | padding:0.6em; |
|
505 | 506 | z-index:100; |
|
506 | 507 | filter:alpha(opacity=50); |
|
507 | 508 | opacity: 0.5; |
|
508 | 509 | } |
|
509 | 510 | |
|
510 | 511 | html>body #ajax-indicator { position: fixed; } |
|
511 | 512 | |
|
512 | 513 | #ajax-indicator span { |
|
513 | 514 | background-position: 0% 40%; |
|
514 | 515 | background-repeat: no-repeat; |
|
515 | 516 | background-image: url(../images/loading.gif); |
|
516 | 517 | padding-left: 26px; |
|
517 | 518 | vertical-align: bottom; |
|
518 | 519 | } |
|
519 | 520 | |
|
520 | 521 | /***** Calendar *****/ |
|
521 | 522 | table.cal {border-collapse: collapse; width: 100%; margin: 0px 0 6px 0;border: 1px solid #d7d7d7;} |
|
522 | 523 | table.cal thead th {width: 14%; background-color:#EEEEEE; padding: 4px; } |
|
523 | 524 | table.cal thead th.week-number {width: auto;} |
|
524 | 525 | table.cal tbody tr {height: 100px;} |
|
525 | 526 | table.cal td {border: 1px solid #d7d7d7; vertical-align: top; font-size: 0.9em;} |
|
526 | 527 | table.cal td.week-number { background-color:#EEEEEE; padding: 4px; border:none; font-size: 1em;} |
|
527 | 528 | table.cal td p.day-num {font-size: 1.1em; text-align:right;} |
|
528 | 529 | table.cal td.odd p.day-num {color: #bbb;} |
|
529 | 530 | table.cal td.today {background:#ffffdd;} |
|
530 | 531 | table.cal td.today p.day-num {font-weight: bold;} |
|
531 | 532 | table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;} |
|
532 | 533 | table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;} |
|
533 | 534 | table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;} |
|
534 | 535 | p.cal.legend span {display:block;} |
|
535 | 536 | |
|
536 | 537 | /***** Tooltips ******/ |
|
537 | 538 | .tooltip{position:relative;z-index:24;} |
|
538 | 539 | .tooltip:hover{z-index:25;color:#000;} |
|
539 | 540 | .tooltip span.tip{display: none; text-align:left;} |
|
540 | 541 | |
|
541 | 542 | div.tooltip:hover span.tip{ |
|
542 | 543 | display:block; |
|
543 | 544 | position:absolute; |
|
544 | 545 | top:12px; left:24px; width:270px; |
|
545 | 546 | border:1px solid #555; |
|
546 | 547 | background-color:#fff; |
|
547 | 548 | padding: 4px; |
|
548 | 549 | font-size: 0.8em; |
|
549 | 550 | color:#505050; |
|
550 | 551 | } |
|
551 | 552 | |
|
552 | 553 | /***** Progress bar *****/ |
|
553 | 554 | table.progress { |
|
554 | 555 | border: 1px solid #D7D7D7; |
|
555 | 556 | border-collapse: collapse; |
|
556 | 557 | border-spacing: 0pt; |
|
557 | 558 | empty-cells: show; |
|
558 | 559 | text-align: center; |
|
559 | 560 | float:left; |
|
560 | 561 | margin: 1px 6px 1px 0px; |
|
561 | 562 | } |
|
562 | 563 | |
|
563 | 564 | table.progress td { height: 0.9em; } |
|
564 | 565 | table.progress td.closed { background: #BAE0BA none repeat scroll 0%; } |
|
565 | 566 | table.progress td.done { background: #DEF0DE none repeat scroll 0%; } |
|
566 | 567 | table.progress td.open { background: #FFF none repeat scroll 0%; } |
|
567 | 568 | p.pourcent {font-size: 80%;} |
|
568 | 569 | p.progress-info {clear: left; font-style: italic; font-size: 80%;} |
|
569 | 570 | |
|
570 | 571 | /***** Tabs *****/ |
|
571 | 572 | #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;} |
|
572 | 573 | #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:1em; width: 2000px; border-bottom: 1px solid #bbbbbb;} |
|
573 | 574 | #content .tabs ul li { |
|
574 | 575 | float:left; |
|
575 | 576 | list-style-type:none; |
|
576 | 577 | white-space:nowrap; |
|
577 | 578 | margin-right:8px; |
|
578 | 579 | background:#fff; |
|
579 | 580 | position:relative; |
|
580 | 581 | margin-bottom:-1px; |
|
581 | 582 | } |
|
582 | 583 | #content .tabs ul li a{ |
|
583 | 584 | display:block; |
|
584 | 585 | font-size: 0.9em; |
|
585 | 586 | text-decoration:none; |
|
586 | 587 | line-height:1.3em; |
|
587 | 588 | padding:4px 6px 4px 6px; |
|
588 | 589 | border: 1px solid #ccc; |
|
589 | 590 | border-bottom: 1px solid #bbbbbb; |
|
590 | 591 | background-color: #eeeeee; |
|
591 | 592 | color:#777; |
|
592 | 593 | font-weight:bold; |
|
593 | 594 | } |
|
594 | 595 | |
|
595 | 596 | #content .tabs ul li a:hover { |
|
596 | 597 | background-color: #ffffdd; |
|
597 | 598 | text-decoration:none; |
|
598 | 599 | } |
|
599 | 600 | |
|
600 | 601 | #content .tabs ul li a.selected { |
|
601 | 602 | background-color: #fff; |
|
602 | 603 | border: 1px solid #bbbbbb; |
|
603 | 604 | border-bottom: 1px solid #fff; |
|
604 | 605 | } |
|
605 | 606 | |
|
606 | 607 | #content .tabs ul li a.selected:hover { |
|
607 | 608 | background-color: #fff; |
|
608 | 609 | } |
|
609 | 610 | |
|
610 | 611 | div.tabs-buttons { position:absolute; right: 0; width: 48px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; } |
|
611 | 612 | |
|
612 | 613 | button.tab-left, button.tab-right { |
|
613 | 614 | font-size: 0.9em; |
|
614 | 615 | cursor: pointer; |
|
615 | 616 | height:24px; |
|
616 | 617 | border: 1px solid #ccc; |
|
617 | 618 | border-bottom: 1px solid #bbbbbb; |
|
618 | 619 | position:absolute; |
|
619 | 620 | padding:4px; |
|
620 | 621 | width: 20px; |
|
621 | 622 | bottom: -1px; |
|
622 | 623 | } |
|
623 | 624 | |
|
624 | 625 | button.tab-left { |
|
625 | 626 | right: 20px; |
|
626 | 627 | background: #eeeeee url(../images/bullet_arrow_left.png) no-repeat 50% 50%; |
|
627 | 628 | } |
|
628 | 629 | |
|
629 | 630 | button.tab-right { |
|
630 | 631 | right: 0; |
|
631 | 632 | background: #eeeeee url(../images/bullet_arrow_right.png) no-repeat 50% 50%; |
|
632 | 633 | } |
|
633 | 634 | |
|
634 | 635 | /***** Auto-complete *****/ |
|
635 | 636 | div.autocomplete { |
|
636 | 637 | position:absolute; |
|
637 | 638 | width:400px; |
|
638 | 639 | margin:0; |
|
639 | 640 | padding:0; |
|
640 | 641 | } |
|
641 | 642 | div.autocomplete ul { |
|
642 | 643 | list-style-type:none; |
|
643 | 644 | margin:0; |
|
644 | 645 | padding:0; |
|
645 | 646 | } |
|
646 | 647 | div.autocomplete ul li { |
|
647 | 648 | list-style-type:none; |
|
648 | 649 | display:block; |
|
649 | 650 | margin:-1px 0 0 0; |
|
650 | 651 | padding:2px; |
|
651 | 652 | cursor:pointer; |
|
652 | 653 | font-size: 90%; |
|
653 | 654 | border: 1px solid #ccc; |
|
654 | 655 | border-left: 1px solid #ccc; |
|
655 | 656 | border-right: 1px solid #ccc; |
|
656 | 657 | background-color:white; |
|
657 | 658 | } |
|
658 | 659 | div.autocomplete ul li.selected { background-color: #ffb;} |
|
659 | 660 | div.autocomplete ul li span.informal { |
|
660 | 661 | font-size: 80%; |
|
661 | 662 | color: #aaa; |
|
662 | 663 | } |
|
663 | 664 | |
|
664 | 665 | #parent_issue_candidates ul li {width: 500px;} |
|
665 | 666 | |
|
666 | 667 | /***** Diff *****/ |
|
667 | 668 | .diff_out { background: #fcc; } |
|
668 | 669 | .diff_in { background: #cfc; } |
|
669 | 670 | |
|
670 | 671 | /***** Wiki *****/ |
|
671 | 672 | div.wiki table { |
|
672 | 673 | border: 1px solid #505050; |
|
673 | 674 | border-collapse: collapse; |
|
674 | 675 | margin-bottom: 1em; |
|
675 | 676 | } |
|
676 | 677 | |
|
677 | 678 | div.wiki table, div.wiki td, div.wiki th { |
|
678 | 679 | border: 1px solid #bbb; |
|
679 | 680 | padding: 4px; |
|
680 | 681 | } |
|
681 | 682 | |
|
682 | 683 | div.wiki .external { |
|
683 | 684 | background-position: 0% 60%; |
|
684 | 685 | background-repeat: no-repeat; |
|
685 | 686 | padding-left: 12px; |
|
686 | 687 | background-image: url(../images/external.png); |
|
687 | 688 | } |
|
688 | 689 | |
|
689 | 690 | div.wiki a.new { |
|
690 | 691 | color: #b73535; |
|
691 | 692 | } |
|
692 | 693 | |
|
693 | 694 | div.wiki pre { |
|
694 | 695 | margin: 1em 1em 1em 1.6em; |
|
695 | 696 | padding: 2px 2px 2px 0; |
|
696 | 697 | background-color: #fafafa; |
|
697 | 698 | border: 1px solid #dadada; |
|
698 | 699 | width:auto; |
|
699 | 700 | overflow-x: auto; |
|
700 | 701 | overflow-y: hidden; |
|
701 | 702 | } |
|
702 | 703 | |
|
703 | 704 | div.wiki ul.toc { |
|
704 | 705 | background-color: #ffffdd; |
|
705 | 706 | border: 1px solid #e4e4e4; |
|
706 | 707 | padding: 4px; |
|
707 | 708 | line-height: 1.2em; |
|
708 | 709 | margin-bottom: 12px; |
|
709 | 710 | margin-right: 12px; |
|
710 | 711 | margin-left: 0; |
|
711 | 712 | display: table |
|
712 | 713 | } |
|
713 | 714 | * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */ |
|
714 | 715 | |
|
715 | 716 | div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; } |
|
716 | 717 | div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; } |
|
717 | 718 | div.wiki ul.toc li { list-style-type:none;} |
|
718 | 719 | div.wiki ul.toc li.heading2 { margin-left: 6px; } |
|
719 | 720 | div.wiki ul.toc li.heading3 { margin-left: 12px; font-size: 0.8em; } |
|
720 | 721 | |
|
721 | 722 | div.wiki ul.toc a { |
|
722 | 723 | font-size: 0.9em; |
|
723 | 724 | font-weight: normal; |
|
724 | 725 | text-decoration: none; |
|
725 | 726 | color: #606060; |
|
726 | 727 | } |
|
727 | 728 | div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;} |
|
728 | 729 | |
|
729 | 730 | a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; } |
|
730 | 731 | a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; } |
|
731 | 732 | h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display: inline; color: #ddd; } |
|
732 | 733 | |
|
733 | 734 | div.wiki img { vertical-align: middle; } |
|
734 | 735 | |
|
735 | 736 | /***** My page layout *****/ |
|
736 | 737 | .block-receiver { |
|
737 | 738 | border:1px dashed #c0c0c0; |
|
738 | 739 | margin-bottom: 20px; |
|
739 | 740 | padding: 15px 0 15px 0; |
|
740 | 741 | } |
|
741 | 742 | |
|
742 | 743 | .mypage-box { |
|
743 | 744 | margin:0 0 20px 0; |
|
744 | 745 | color:#505050; |
|
745 | 746 | line-height:1.5em; |
|
746 | 747 | } |
|
747 | 748 | |
|
748 | 749 | .handle { |
|
749 | 750 | cursor: move; |
|
750 | 751 | } |
|
751 | 752 | |
|
752 | 753 | a.close-icon { |
|
753 | 754 | display:block; |
|
754 | 755 | margin-top:3px; |
|
755 | 756 | overflow:hidden; |
|
756 | 757 | width:12px; |
|
757 | 758 | height:12px; |
|
758 | 759 | background-repeat: no-repeat; |
|
759 | 760 | cursor:pointer; |
|
760 | 761 | background-image:url('../images/close.png'); |
|
761 | 762 | } |
|
762 | 763 | |
|
763 | 764 | a.close-icon:hover { |
|
764 | 765 | background-image:url('../images/close_hl.png'); |
|
765 | 766 | } |
|
766 | 767 | |
|
767 | 768 | /***** Gantt chart *****/ |
|
768 | 769 | .gantt_hdr { |
|
769 | 770 | position:absolute; |
|
770 | 771 | top:0; |
|
771 | 772 | height:16px; |
|
772 | 773 | border-top: 1px solid #c0c0c0; |
|
773 | 774 | border-bottom: 1px solid #c0c0c0; |
|
774 | 775 | border-right: 1px solid #c0c0c0; |
|
775 | 776 | text-align: center; |
|
776 | 777 | overflow: hidden; |
|
777 | 778 | } |
|
778 | 779 | |
|
779 | 780 | .task { |
|
780 | 781 | position: absolute; |
|
781 | 782 | height:8px; |
|
782 | 783 | font-size:0.8em; |
|
783 | 784 | color:#888; |
|
784 | 785 | padding:0; |
|
785 | 786 | margin:0; |
|
786 | 787 | line-height:0.8em; |
|
787 | 788 | white-space:nowrap; |
|
788 | 789 | } |
|
789 | 790 | |
|
790 | 791 | .task.label {width:100%;} |
|
791 | 792 | |
|
792 | 793 | .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } |
|
793 | 794 | .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; } |
|
794 | 795 | .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } |
|
795 | 796 | |
|
796 | 797 | .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} |
|
797 | 798 | .task_late.parent, .task_done.parent { height: 3px;} |
|
798 | 799 | .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;} |
|
799 | 800 | .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;} |
|
800 | 801 | |
|
801 | 802 | .milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; } |
|
802 | 803 | .milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} |
|
803 | 804 | .milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} |
|
804 | 805 | .milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} |
|
805 | 806 | .project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; } |
|
806 | 807 | .project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} |
|
807 | 808 | .project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} |
|
808 | 809 | .project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} |
|
809 | 810 | |
|
810 | 811 | .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} |
|
811 | 812 | .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} |
|
812 | 813 | |
|
813 | 814 | /***** Icons *****/ |
|
814 | 815 | .icon { |
|
815 | 816 | background-position: 0% 50%; |
|
816 | 817 | background-repeat: no-repeat; |
|
817 | 818 | padding-left: 20px; |
|
818 | 819 | padding-top: 2px; |
|
819 | 820 | padding-bottom: 3px; |
|
820 | 821 | } |
|
821 | 822 | |
|
822 | 823 | .icon-add { background-image: url(../images/add.png); } |
|
823 | 824 | .icon-edit { background-image: url(../images/edit.png); } |
|
824 | 825 | .icon-copy { background-image: url(../images/copy.png); } |
|
825 | 826 | .icon-duplicate { background-image: url(../images/duplicate.png); } |
|
826 | 827 | .icon-del { background-image: url(../images/delete.png); } |
|
827 | 828 | .icon-move { background-image: url(../images/move.png); } |
|
828 | 829 | .icon-save { background-image: url(../images/save.png); } |
|
829 | 830 | .icon-cancel { background-image: url(../images/cancel.png); } |
|
830 | 831 | .icon-multiple { background-image: url(../images/table_multiple.png); } |
|
831 | 832 | .icon-folder { background-image: url(../images/folder.png); } |
|
832 | 833 | .open .icon-folder { background-image: url(../images/folder_open.png); } |
|
833 | 834 | .icon-package { background-image: url(../images/package.png); } |
|
834 | 835 | .icon-home { background-image: url(../images/home.png); } |
|
835 | 836 | .icon-user { background-image: url(../images/user.png); } |
|
836 | 837 | .icon-projects { background-image: url(../images/projects.png); } |
|
837 | 838 | .icon-help { background-image: url(../images/help.png); } |
|
838 | 839 | .icon-attachment { background-image: url(../images/attachment.png); } |
|
839 | 840 | .icon-history { background-image: url(../images/history.png); } |
|
840 | 841 | .icon-time { background-image: url(../images/time.png); } |
|
841 | 842 | .icon-time-add { background-image: url(../images/time_add.png); } |
|
842 | 843 | .icon-stats { background-image: url(../images/stats.png); } |
|
843 | 844 | .icon-warning { background-image: url(../images/warning.png); } |
|
844 | 845 | .icon-fav { background-image: url(../images/fav.png); } |
|
845 | 846 | .icon-fav-off { background-image: url(../images/fav_off.png); } |
|
846 | 847 | .icon-reload { background-image: url(../images/reload.png); } |
|
847 | 848 | .icon-lock { background-image: url(../images/locked.png); } |
|
848 | 849 | .icon-unlock { background-image: url(../images/unlock.png); } |
|
849 | 850 | .icon-checked { background-image: url(../images/true.png); } |
|
850 | 851 | .icon-details { background-image: url(../images/zoom_in.png); } |
|
851 | 852 | .icon-report { background-image: url(../images/report.png); } |
|
852 | 853 | .icon-comment { background-image: url(../images/comment.png); } |
|
853 | 854 | .icon-summary { background-image: url(../images/lightning.png); } |
|
854 | 855 | .icon-server-authentication { background-image: url(../images/server_key.png); } |
|
855 | 856 | .icon-issue { background-image: url(../images/ticket.png); } |
|
856 | 857 | |
|
857 | 858 | .icon-file { background-image: url(../images/files/default.png); } |
|
858 | 859 | .icon-file.text-plain { background-image: url(../images/files/text.png); } |
|
859 | 860 | .icon-file.text-x-c { background-image: url(../images/files/c.png); } |
|
860 | 861 | .icon-file.text-x-csharp { background-image: url(../images/files/csharp.png); } |
|
861 | 862 | .icon-file.text-x-php { background-image: url(../images/files/php.png); } |
|
862 | 863 | .icon-file.text-x-ruby { background-image: url(../images/files/ruby.png); } |
|
863 | 864 | .icon-file.text-xml { background-image: url(../images/files/xml.png); } |
|
864 | 865 | .icon-file.image-gif { background-image: url(../images/files/image.png); } |
|
865 | 866 | .icon-file.image-jpeg { background-image: url(../images/files/image.png); } |
|
866 | 867 | .icon-file.image-png { background-image: url(../images/files/image.png); } |
|
867 | 868 | .icon-file.image-tiff { background-image: url(../images/files/image.png); } |
|
868 | 869 | .icon-file.application-pdf { background-image: url(../images/files/pdf.png); } |
|
869 | 870 | .icon-file.application-zip { background-image: url(../images/files/zip.png); } |
|
870 | 871 | .icon-file.application-x-gzip { background-image: url(../images/files/zip.png); } |
|
871 | 872 | |
|
872 | 873 | img.gravatar { |
|
873 | 874 | padding: 2px; |
|
874 | 875 | border: solid 1px #d5d5d5; |
|
875 | 876 | background: #fff; |
|
876 | 877 | } |
|
877 | 878 | |
|
878 | 879 | div.issue img.gravatar { |
|
879 | 880 | float: right; |
|
880 | 881 | margin: 0 0 0 1em; |
|
881 | 882 | padding: 5px; |
|
882 | 883 | } |
|
883 | 884 | |
|
884 | 885 | div.issue table img.gravatar { |
|
885 | 886 | height: 14px; |
|
886 | 887 | width: 14px; |
|
887 | 888 | padding: 2px; |
|
888 | 889 | float: left; |
|
889 | 890 | margin: 0 0.5em 0 0; |
|
890 | 891 | } |
|
891 | 892 | |
|
892 | 893 | h2 img.gravatar { |
|
893 | 894 | padding: 3px; |
|
894 | 895 | margin: -2px 4px -4px 0; |
|
895 | 896 | vertical-align: top; |
|
896 | 897 | } |
|
897 | 898 | |
|
898 | 899 | h4 img.gravatar { |
|
899 | 900 | padding: 3px; |
|
900 | 901 | margin: -6px 0 -4px 0; |
|
901 | 902 | vertical-align: top; |
|
902 | 903 | } |
|
903 | 904 | |
|
904 | 905 | td.username img.gravatar { |
|
905 | 906 | float: left; |
|
906 | 907 | margin: 0 1em 0 0; |
|
907 | 908 | } |
|
908 | 909 | |
|
909 | 910 | #activity dt img.gravatar { |
|
910 | 911 | float: left; |
|
911 | 912 | margin: 0 1em 1em 0; |
|
912 | 913 | } |
|
913 | 914 | |
|
914 | 915 | /* Used on 12px Gravatar img tags without the icon background */ |
|
915 | 916 | .icon-gravatar { |
|
916 | 917 | float: left; |
|
917 | 918 | margin-right: 4px; |
|
918 | 919 | } |
|
919 | 920 | |
|
920 | 921 | #activity dt, |
|
921 | 922 | .journal { |
|
922 | 923 | clear: left; |
|
923 | 924 | } |
|
924 | 925 | |
|
925 | 926 | .journal-link { |
|
926 | 927 | float: right; |
|
927 | 928 | } |
|
928 | 929 | |
|
929 | 930 | h2 img { vertical-align:middle; } |
|
930 | 931 | |
|
931 | 932 | .hascontextmenu { cursor: context-menu; } |
|
932 | 933 | |
|
933 | 934 | /***** Media print specific styles *****/ |
|
934 | 935 | @media print { |
|
935 | 936 | #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; } |
|
936 | 937 | #main { background: #fff; } |
|
937 | 938 | #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;} |
|
938 | 939 | #wiki_add_attachment { display:none; } |
|
939 | 940 | .hide-when-print { display: none; } |
|
940 | 941 | } |
@@ -1,38 +1,31 | |||
|
1 | 1 | # redMine - project management software |
|
2 | 2 | # Copyright (C) 2006-2008 Jean-Philippe Lang |
|
3 | 3 | # |
|
4 | 4 | # This program is free software; you can redistribute it and/or |
|
5 | 5 | # modify it under the terms of the GNU General Public License |
|
6 | 6 | # as published by the Free Software Foundation; either version 2 |
|
7 | 7 | # of the License, or (at your option) any later version. |
|
8 | 8 | # |
|
9 | 9 | # This program is distributed in the hope that it will be useful, |
|
10 | 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 | 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 | 12 | # GNU General Public License for more details. |
|
13 | 13 | # |
|
14 | 14 | # You should have received a copy of the GNU General Public License |
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | 18 | require File.dirname(__FILE__) + '/../../../test_helper' |
|
19 | 19 | |
|
20 | 20 | class Redmine::NotifiableTest < ActiveSupport::TestCase |
|
21 | 21 | def setup |
|
22 | 22 | end |
|
23 | 23 | |
|
24 | def test_included_core_notifications | |
|
25 |
assert_equal 11, Redmine::Notifiable |
|
|
26 | Redmine::Notifiable::CoreNotifications.length | |
|
24 | def test_all | |
|
25 | assert_equal 11, Redmine::Notifiable.all.length | |
|
27 | 26 | |
|
28 | 27 | %w(issue_added issue_updated issue_note_added issue_status_updated issue_priority_updated news_added document_added file_added message_posted wiki_content_added wiki_content_updated).each do |notifiable| |
|
29 |
assert Redmine::Notifiable |
|
|
30 | end | |
|
31 | end | |
|
32 | ||
|
33 | def test_all_should_include_all_of_the_core_notifications | |
|
34 | Redmine::Notifiable::CoreNotifications.each do |notifiable| | |
|
35 | assert Redmine::Notifiable.all.include?(notifiable), "missing #{notifiable} in #all" | |
|
28 | assert Redmine::Notifiable.all.collect(&:name).include?(notifiable), "missing #{notifiable}" | |
|
36 | 29 | end |
|
37 | 30 | end |
|
38 | 31 | end |
General Comments 0
You need to be logged in to leave comments.
Login now