Merge lp:~jjacobs/twisted-website/visual-design-update into lp:~exarkun/twisted-website/trunk
- visual-design-update
- Merge into trunk
Status: | Superseded |
---|---|
Proposed branch: | lp:~jjacobs/twisted-website/visual-design-update |
Merge into: | lp:~exarkun/twisted-website/trunk |
Diff against target: |
3839 lines (+978/-2379) 25 files modified
trac-files/common/css/browser.css.save (+0/-127) trac-files/common/css/diff.css.save (+0/-156) trac-files/common/css/report.css (+5/-11) trac-files/common/css/roadmap.css (+0/-5) trac-files/common/css/search.css (+0/-1) trac-files/common/css/ticket.css (+124/-39) trac-files/common/css/ticket.css.save (+0/-262) trac-files/common/css/timeline.css (+5/-8) trac-files/common/css/trac.css (+632/-305) trac-files/common/js/news.js (+92/-0) trac-files/templates/README (+0/-8) trac-files/templates/about.html (+0/-89) trac-files/templates/attachment.html (+0/-118) trac-files/templates/diff_div.html (+0/-227) trac-files/templates/diff_view.html (+0/-71) trac-files/templates/error.html (+0/-200) trac-files/templates/history_view.html (+0/-57) trac-files/templates/index.html (+0/-23) trac-files/templates/layout.html (+0/-57) trac-files/templates/macros.cs (+0/-197) trac-files/templates/macros.html (+0/-260) trac-files/templates/macros.rss (+0/-29) trac-files/templates/page_index.html (+0/-27) trac-files/templates/site.html (+120/-0) trac-files/templates/theme.html (+0/-102) |
To merge this branch: | bzr merge lp:~jjacobs/twisted-website/visual-design-update |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Itamar Turner-Trauring (community) | Approve | ||
Jean-Paul Calderone | Pending | ||
Review via email: mp+80468@code.launchpad.net |
This proposal has been superseded by a proposal from 2011-11-29.
Commit message
Description of the change
Update visual design for twistedmatrix.com.
An example of the main page view can be found at <https:/
An example of the ticket view can be found at <https:/
- 7. By Jonathan Jacobs
-
Remove editor backups.
- 8. By Jonathan Jacobs
-
Clean up some duplicated styles, tweak styling.
- 9. By Jonathan Jacobs
-
Some tweaks based on a conversation with Itamar.
- 10. By Jonathan Jacobs
-
Fix ticket status alignment issues.
- 11. By Jonathan Jacobs
-
Button and font tweaks.
- 12. By Jonathan Jacobs
-
Improve table/listing styles.
- 13. By Jonathan Jacobs
-
Timeline style changes.
- 14. By Jonathan Jacobs
-
Ticket form contrast improvements.
- 15. By Jonathan Jacobs
-
Match attachment page visual style with other ticket pages.
- 16. By Jonathan Jacobs
-
Improve hyperlink visibility.
- 17. By Jonathan Jacobs
-
Minor report tweak.
- 18. By Jonathan Jacobs
-
Small report, roadmap and search visual tweaks.
- 19. By Jonathan Jacobs
-
Report header tweak.
- 20. By Jonathan Jacobs
-
Tweak margin on the download element.
- 21. By Jonathan Jacobs
-
Update graphics resources with correct colour profiles.
- 22. By Jonathan Jacobs
-
Background changes, refinements etc.
- 23. By Jonathan Jacobs
-
Minor background texture changes.
- 24. By Jonathan Jacobs
-
Input button focus style.
- 25. By Jonathan Jacobs
-
Book image adjustments.
- 26. By Jonathan Jacobs
-
Rather put book image styling in the wiki markup.
- 27. By Jonathan Jacobs
-
Minor tweaks to hyperlinks and paragraph anchors.
- 28. By Jonathan Jacobs
-
Style name tweaks.
- 29. By Jonathan Jacobs
-
Fetch and insert news feed items asynchronously on the client side.
Jonathan Jacobs (jjacobs) wrote : | # |
> We're only ever going to know if this works by merging it, so, approved.
I managed to do the asynchronous news thing without too much effort, so it might as well slip in here.
- 30. By Jonathan Jacobs
-
Bail out of fetching news feeds earlier.
Itamar Turner-Trauring (itamarst) wrote : | # |
+ <script type="text/
I assume this is the feed javascript? It seems to have a license key of some sort, is that limited in number of times we can use it, or? Actually a little investigation suggests "probably not".
So, approved, in so far as I am capable of reviewing this (only barely), but like I said, the only real way to test is to go live.
Itamar Turner-Trauring (itamarst) wrote : | # |
Do you need me to do the merge? And is "bzr merge lp:~jjacobs/twisted-website/visual-design-update" without a local checkout actually sufficient?
Jonathan Jacobs (jjacobs) wrote : | # |
> Do you need me to do the merge? And is "bzr merge lp:~jjacobs/twisted-website
> /visual-
You'll need to commit the merge too.
If you created your local checkout of lp:twisted-website with "bzr branch" (as opposed to "bzr checkout") then you will need to "bzr push lp:twisted-website" too.
Although I see that lp:twisted-website is an alias for something in exarkun's user directory, I doubt you'll be able to push to that. So either exarkun needs to do this himself or change the location of trunk to something that he can give people access to write to.
- 31. By Jonathan Jacobs
-
Perform the correct incantation for linking the news script.
Unmerged revisions
- 31. By Jonathan Jacobs
-
Perform the correct incantation for linking the news script.
- 30. By Jonathan Jacobs
-
Bail out of fetching news feeds earlier.
- 29. By Jonathan Jacobs
-
Fetch and insert news feed items asynchronously on the client side.
- 28. By Jonathan Jacobs
-
Style name tweaks.
- 27. By Jonathan Jacobs
-
Minor tweaks to hyperlinks and paragraph anchors.
- 26. By Jonathan Jacobs
-
Rather put book image styling in the wiki markup.
- 25. By Jonathan Jacobs
-
Book image adjustments.
- 24. By Jonathan Jacobs
-
Input button focus style.
- 23. By Jonathan Jacobs
-
Minor background texture changes.
- 22. By Jonathan Jacobs
-
Background changes, refinements etc.
Preview Diff
1 | === removed file 'trac-files/common/banner_back.png' |
2 | Binary files trac-files/common/banner_back.png 2011-10-17 17:00:12 +0000 and trac-files/common/banner_back.png 1970-01-01 00:00:00 +0000 differ |
3 | === removed file 'trac-files/common/banner_border_back.png' |
4 | Binary files trac-files/common/banner_border_back.png 2011-10-17 17:00:12 +0000 and trac-files/common/banner_border_back.png 1970-01-01 00:00:00 +0000 differ |
5 | === removed file 'trac-files/common/banner_link_download.png' |
6 | Binary files trac-files/common/banner_link_download.png 2011-10-17 17:00:12 +0000 and trac-files/common/banner_link_download.png 1970-01-01 00:00:00 +0000 differ |
7 | === removed file 'trac-files/common/banner_link_faq.png' |
8 | Binary files trac-files/common/banner_link_faq.png 2011-10-17 17:00:12 +0000 and trac-files/common/banner_link_faq.png 1970-01-01 00:00:00 +0000 differ |
9 | === removed file 'trac-files/common/banner_link_home.png' |
10 | Binary files trac-files/common/banner_link_home.png 2011-10-17 17:00:12 +0000 and trac-files/common/banner_link_home.png 1970-01-01 00:00:00 +0000 differ |
11 | === added file 'trac-files/common/bg.png' |
12 | Binary files trac-files/common/bg.png 1970-01-01 00:00:00 +0000 and trac-files/common/bg.png 2011-11-24 10:57:32 +0000 differ |
13 | === removed file 'trac-files/common/css/browser.css.save' |
14 | --- trac-files/common/css/browser.css.save 2011-10-17 17:00:12 +0000 |
15 | +++ trac-files/common/css/browser.css.save 1970-01-01 00:00:00 +0000 |
16 | @@ -1,127 +0,0 @@ |
17 | -#prefs { margin-top: -1.6em } |
18 | -* html #prefs { width: 34em } /* Set width only for IE */ |
19 | -#prefs fieldset label { display: block } |
20 | -#prefs .buttons { margin-top: -1.6em } |
21 | -#prefs .choice { margin-top: -0.6em } |
22 | - |
23 | -#legend { clear: right; } |
24 | - |
25 | -/* Browser */ |
26 | -h1 { margin: 0; padding: 0 0 .5em } |
27 | -h1 :link, h1 :visited, h1 .filename { border: none; padding: 0 .2em } |
28 | -h1 :link, h1 :visited { color: #b00 } |
29 | -h1 .first:link, h1 .first:visited { color: #998 } |
30 | -h1 .sep { color: #666; padding: 0 .1em } |
31 | - |
32 | -#jumprev { float: right; font-size: 10px; margin: 0 0 0 } |
33 | -#jumprev form { margin: 0 } |
34 | -#jumprev input { font-size: 10px; margin-right: 0 } |
35 | - |
36 | -/* Styles for the directory entries table |
37 | - (extends the styles for "table.listing") */ |
38 | -#dirlist { margin-top: 0 } |
39 | -#dirlist td.rev, #dirlist td.age, #dirlist td.change { |
40 | - color: #888; |
41 | - white-space: nowrap; |
42 | - vertical-align: baseline; |
43 | -} |
44 | -#dirlist td.rev { |
45 | - font-family: monospace; |
46 | - letter-spacing: -0.08em; |
47 | - font-size: 90%; |
48 | - text-align: right; |
49 | -} |
50 | -#dirlist td.size { |
51 | - color: #888; |
52 | - white-space: nowrap; |
53 | - text-align: right; |
54 | - vertical-align: middle; |
55 | - font-size: 70%; |
56 | -} |
57 | -#dirlist td.name { width: 100% } |
58 | -#dirlist td.name a, #dirlist td.name span { |
59 | - background-position: 0% 50%; |
60 | - background-repeat: no-repeat; |
61 | - padding-left: 20px; |
62 | -} |
63 | -#dirlist td.name a.parent { background-image: url(../parent.png) } |
64 | -#dirlist td.name a.dir { background-image: url(../folder.png) } |
65 | -#dirlist td.name a.file { background-image: url(../file.png) } |
66 | -#dirlist td.name a, #dirlist td.rev a { border-bottom: none; display: block } |
67 | -#dirlist td.rev { text-align: right } |
68 | -#dirlist td.change { font-size: 85%; vertical-align: middle; white-space: nowrap } |
69 | - |
70 | -/* Style for the ''View Changes'' button */ |
71 | -#anydiff { margin: 0 0 1em; float: left } |
72 | -#anydiff form, #anydiff div, #anydiff h2 { display: inline } |
73 | -#anydiff input { vertical-align: baseline; margin: 0 -0.5em 0 1em } |
74 | -@media print { |
75 | - #anydiff form { display: none } |
76 | -} |
77 | - |
78 | -/* Log */ |
79 | -tr.diff input { padding: 0 1em; margin: 0 } |
80 | - |
81 | -div.buttons { clear: left } |
82 | -@media print { |
83 | - th.diff, td.diff { display: none } |
84 | -} |
85 | - |
86 | -/* Styles for the revision log table (extends the styles for "table.listing") */ |
87 | -#chglist { margin-top: 0 } |
88 | -#chglist td.change span { |
89 | - border: 1px solid #999; |
90 | - display: block; |
91 | - margin: .2em .5em 0 0; |
92 | - width: .8em; height: .8em; |
93 | -} |
94 | -#chglist td.diff { white-space: nowrap } |
95 | -#chglist td.change .comment { display: none } |
96 | -#chglist td.old_path { font-style: italic } |
97 | -#chglist td.date { |
98 | - font-size: 85%; |
99 | - vertical-align: top; |
100 | - padding-top: 0.55em; |
101 | - white-space: nowrap; |
102 | -} |
103 | -#chglist td.author { font-size: 85%; vertical-align: top; padding-top: 0.55em } |
104 | -#chglist td.rev, #chglist td.chgset { |
105 | - font-family: monospace; |
106 | - letter-spacing: -0.08em; |
107 | - font-size: 90%; |
108 | - text-align: right; |
109 | -} |
110 | -#chglist td.rev a, #chglist td.chgset a { border-bottom: none } |
111 | -#chglist td.summary { |
112 | - width: 100%; |
113 | - font-size: 85%; |
114 | - vertical-align: middle; |
115 | - white-space: nowrap |
116 | -} |
117 | -#chglist .verbose td.summary { |
118 | - border: none; |
119 | - color: #333; |
120 | - padding: .5em 1em 1em 2em; |
121 | - font-size: 90%; |
122 | - white-space: normal |
123 | -} |
124 | - |
125 | -#chglist td.summary * { margin-top: 0; margin-bottom: 0 } |
126 | - |
127 | -#paging { margin: 1em 0 } |
128 | - |
129 | -/* Styles for the revision info in the file view (see also trac.css) */ |
130 | -#info { margin: 0; } |
131 | -#info .props { |
132 | - color: #666; |
133 | - list-style: square; |
134 | - margin: 0 0 .4em 1.6em; |
135 | - padding: 0; |
136 | -} |
137 | -#info .props li { padding: 0 } |
138 | - |
139 | -/* Styles for the HTML preview */ |
140 | -#preview { background: #fff; clear: both; margin: 0 } |
141 | -#preview .code-block { border-top: 1px solid #999; margin: 0 } |
142 | -#preview .image-file { overflow: hidden } |
143 | -#preview .image-file img { max-width: 100% } |
144 | |
145 | === removed file 'trac-files/common/css/diff.css.save' |
146 | --- trac-files/common/css/diff.css.save 2011-10-17 17:00:12 +0000 |
147 | +++ trac-files/common/css/diff.css.save 1970-01-01 00:00:00 +0000 |
148 | @@ -1,156 +0,0 @@ |
149 | -/* Diff preferences */ |
150 | -#prefs fieldset { margin: 1em .5em .5em; padding: .5em 1em 0 } |
151 | - |
152 | -/* Diff/change overview */ |
153 | -#overview { line-height: 130%; margin-top: 1em; padding: .5em } |
154 | -#overview dt.property { |
155 | - font-weight: bold; |
156 | - padding-right: .25em; |
157 | - position: absolute; |
158 | - left: 0; |
159 | - text-align: right; |
160 | - width: 7.75em; |
161 | -} |
162 | -#overview dd { margin-left: 8em } |
163 | - |
164 | -#overview .message { padding: 1em 0 1px } |
165 | -#overview dd.message p, #overview dd.message ul, #overview dd.message ol, |
166 | -#overview dd.message pre { margin-bottom: 1em; margin-top: 0; } |
167 | - |
168 | -/* Colors for change types */ |
169 | -#chglist .edit, #overview .mod, .diff #legend .mod { background: #fd8 } |
170 | -#chglist .delete, #overview .rem, .diff #legend .rem { background: #f88 } |
171 | -#chglist .add, #overview .add, .diff #legend .add { background: #bfb } |
172 | -#chglist .copy, #overview .cp, .diff #legend .cp { background: #88f } |
173 | -#chglist .move, #overview .mv, .diff #legend .mv { background: #ccc } |
174 | -#chglist .unknown { background: #fff } |
175 | - |
176 | -/* Legend for diff colors */ |
177 | -.diff #legend { |
178 | - float: left; |
179 | - font-size: 9px; |
180 | - line-height: 1em; |
181 | - margin: 1em 0; |
182 | - padding: .5em; |
183 | -} |
184 | -.diff #legend h3 { display: none; } |
185 | -.diff #legend dt { |
186 | - background: #fff; |
187 | - border: 1px solid #999; |
188 | - float: left; |
189 | - margin: .1em .5em .1em 2em; |
190 | - overflow: hidden; |
191 | - width: .8em; height: .8em; |
192 | -} |
193 | -.diff #legend dl, .diff #legend dd { |
194 | - display: inline; |
195 | - float: left; |
196 | - padding: 0; |
197 | - margin: 0; |
198 | - margin-right: .5em; |
199 | -} |
200 | - |
201 | -/* Styles for the list of diffs */ |
202 | -.diff ul.entries { clear: both; margin: 0; padding: 0 } |
203 | -.diff li.entry { |
204 | - background: #f7f7f7; |
205 | - border: 1px solid #d7d7d7; |
206 | - list-style-type: none; |
207 | - margin: 0 0 2em; |
208 | - padding: 2px; |
209 | - position: relative; |
210 | - width: 100%; |
211 | -} |
212 | -.diff h2 { |
213 | - color: #333; |
214 | - font-size: 14px; |
215 | - letter-spacing: normal; |
216 | - margin: 0 auto; |
217 | - padding: .1em 0 .25em .5em; |
218 | -} |
219 | - |
220 | -/* Styles for the actual diff tables (side-by-side and inline) */ |
221 | -.diff table { |
222 | - border: 1px solid #ddd; |
223 | - border-spacing: 0; |
224 | - border-top: 0; |
225 | - empty-cells: show; |
226 | - font-size: 12px; |
227 | - line-height: 130%; |
228 | - padding: 0; |
229 | - margin: 0 auto; |
230 | - table-layout: fixed; |
231 | - width: 100%; |
232 | -} |
233 | -.diff table col.lineno { width: 4em } |
234 | -.diff table th { |
235 | - border-right: 1px solid #d7d7d7; |
236 | - border-bottom: 1px solid #998; |
237 | - font-size: 11px; |
238 | -} |
239 | -.diff table thead th { |
240 | - background: #eee; |
241 | - border-top: 1px solid #d7d7d7; |
242 | - color: #999; |
243 | - padding: 0 .25em; |
244 | - text-align: center; |
245 | - white-space: nowrap; |
246 | -} |
247 | -.diff table tbody th { |
248 | - background: #eed; |
249 | - color: #886; |
250 | - font-weight: normal; |
251 | - padding: 0 .5em; |
252 | - text-align: right; |
253 | - vertical-align: top; |
254 | -} |
255 | -.diff table tbody td { |
256 | - background: #fff; |
257 | - font: normal 11px monospace; |
258 | - overflow: hidden; |
259 | - padding: 1px 2px; |
260 | - vertical-align: top; |
261 | -} |
262 | -.diff table tbody.skipped td { |
263 | - background: #f7f7f7; |
264 | - border: 1px solid #d7d7d7; |
265 | -} |
266 | -.diff table td del, .diff table td ins { text-decoration: none } |
267 | -.diff table td del { color: #600 } |
268 | -.diff table td ins { color: #060 } |
269 | - |
270 | -/* Styles for the inline diff */ |
271 | -.diff table.inline tbody.mod td.l, .diff table.inline tbody.rem td.l { |
272 | - background: #fdd; |
273 | - border-color: #c00; |
274 | - border-style: solid; |
275 | - border-width: 0 1px 0 1px; |
276 | -} |
277 | -.diff table.inline tbody.mod td.r, .diff table.inline tbody.add td.r { |
278 | - background: #dfd; |
279 | - border-color: #0a0; |
280 | - border-style: solid; |
281 | - border-width: 0 1px 0 1px; |
282 | -} |
283 | -.diff table.inline tbody.mod tr.first td.l, |
284 | -.diff table.inline tbody.rem tr.first td.l { border-top-width: 1px } |
285 | -.diff table.inline tbody.mod tr.last td.l, |
286 | -.diff table.inline tbody.rem tr.last td.l { border-bottom-width: 1px } |
287 | -.diff table.inline tbody.mod tr.first td.r, |
288 | -.diff table.inline tbody.add tr.first td.r { border-top-width: 1px } |
289 | -.diff table.inline tbody.mod tr.last td.r, |
290 | -.diff table.inline tbody.add tr.last td.r { border-bottom-width: 1px } |
291 | -.diff table.inline tbody.mod td del { background: #e99; color: #000 } |
292 | -.diff table.inline tbody.mod td ins { background: #9e9; color: #000 } |
293 | - |
294 | -/* Styles for the side-by-side diff */ |
295 | -.diff table.sidebyside colgroup.content { width: 50% } |
296 | -.diff table.sidebyside tbody.mod td.l { background: #fe9 } |
297 | -.diff table.sidebyside tbody.mod td.r { background: #fd8 } |
298 | -.diff table.sidebyside tbody.add td.l { background: #dfd } |
299 | -.diff table.sidebyside tbody.add td.r { background: #cfc } |
300 | -.diff table.sidebyside tbody.rem td.l { background: #f88 } |
301 | -.diff table.sidebyside tbody.rem td.r { background: #faa } |
302 | -.diff table.sidebyside tbody.mod del, .diff table.sidebyside tbody.mod ins { |
303 | - background: #fc0; |
304 | -} |
305 | |
306 | === modified file 'trac-files/common/css/report.css' |
307 | --- trac-files/common/css/report.css 2011-10-17 17:00:12 +0000 |
308 | +++ trac-files/common/css/report.css 2011-11-24 10:57:32 +0000 |
309 | @@ -165,16 +165,11 @@ |
310 | /* @import url(code.css); */ |
311 | |
312 | h1 .numrows, h2 .numrows { |
313 | - margin-left: 1em; |
314 | - color: #999; |
315 | - font-size: 65%; |
316 | - font-weight: normal; |
317 | -} |
318 | -h2 { |
319 | - background: #f7f7f7; |
320 | - border-bottom: 1px solid #d7d7d7; |
321 | - margin: 2em 0 0; |
322 | - padding: 0 .33em; |
323 | + margin-left: 1em; |
324 | + color: #777; |
325 | + font-size: 65%; |
326 | + vertical-align: middle; |
327 | + text-transform: uppercase; |
328 | } |
329 | #report-descr { margin: 0 2em; font-size: 90% } |
330 | #report-notfound { margin: 2em; font-size: 110% } |
331 | @@ -205,7 +200,6 @@ |
332 | .tickets tbody td :link, .tickets tbody td :visited { display: block } |
333 | .tickets { border-bottom: none } |
334 | .tickets thead th { text-transform: capitalize; white-space: nowrap; } |
335 | -.tickets tbody td, .reports tbody td { padding: .1em .5em !important } |
336 | .tickets tbody td a, .reports tbody td a { border-bottom: none } |
337 | .tickets tbody td.id :link, .tickets tbody td.id :visited { |
338 | font-weight: bold; |
339 | |
340 | === modified file 'trac-files/common/css/roadmap.css' |
341 | --- trac-files/common/css/roadmap.css 2011-10-17 17:00:12 +0000 |
342 | +++ trac-files/common/css/roadmap.css 2011-11-24 10:57:32 +0000 |
343 | @@ -27,11 +27,6 @@ |
344 | ul.milestones { margin: 2em 0 0; padding: 0 } |
345 | li.milestone { list-style: none; margin-bottom: 4em } |
346 | .milestone .info { white-space: nowrap } |
347 | -.milestone .info h2 { |
348 | - background: #f7f7f7; |
349 | - border-bottom: 1px solid #d7d7d7; |
350 | - margin: 0; |
351 | -} |
352 | .milestone .info h2 :link, .milestone .info h2 :visited { |
353 | color: #000; |
354 | display: block; |
355 | |
356 | === modified file 'trac-files/common/css/search.css' |
357 | --- trac-files/common/css/search.css 2011-10-17 17:00:12 +0000 |
358 | +++ trac-files/common/css/search.css 2011-11-24 10:57:32 +0000 |
359 | @@ -5,7 +5,6 @@ |
360 | |
361 | #results { margin-right: 3em } |
362 | #results dt { margin: 1.5em 0 0 } |
363 | -#results dt a { color: #33c } |
364 | #results dd { font-size: 80%; margin: 0; padding: 0 } |
365 | #results .author, #results .date, #results .keywords { color: #090 } |
366 | |
367 | |
368 | === modified file 'trac-files/common/css/ticket.css' |
369 | --- trac-files/common/css/ticket.css 2011-10-17 17:00:12 +0000 |
370 | +++ trac-files/common/css/ticket.css 2011-11-24 10:57:32 +0000 |
371 | @@ -1,16 +1,30 @@ |
372 | @import url(code.css); |
373 | |
374 | -#content.ticket { width: 700px; max-width: 100% } |
375 | +#content.ticket { |
376 | + width: 60em; |
377 | + max-width: 100%; |
378 | +} |
379 | |
380 | #newticket #field-description { width: 100% } |
381 | #newticket #properties { width: 100% } |
382 | |
383 | +#propertyform, |
384 | +#attachments, |
385 | +#changelog, |
386 | #ticket { |
387 | - background: #fff; |
388 | - border: 1px outset #996; |
389 | - margin-top: 1em; |
390 | - padding: .5em 1em; |
391 | - position: relative; |
392 | + background: #fff; |
393 | + border-radius: 0.35em; |
394 | + padding: .5em 1em; |
395 | + border: 1px solid #d0d0d0; |
396 | + border-bottom: 2px solid #83a501; |
397 | + margin-bottom: 1.5em; |
398 | + -moz-box-shadow: 0 0.15em 0.25em rgba(0, 0, 0, 0.15); |
399 | + -webkit-box-shadow: 0 0.15em 0.25em rgba(0, 0, 0, 0.15); |
400 | + box-shadow: 0 0.15em 0.25em rgba(0, 0, 0, 0.15); |
401 | +} |
402 | + |
403 | +#propertyform { |
404 | + margin-top: 3em; |
405 | } |
406 | |
407 | div#ticket.ticketdraft { |
408 | @@ -32,61 +46,81 @@ |
409 | } |
410 | |
411 | h1 .status { color: #444; } |
412 | -#ticket h2.summary { margin: 0 0 .8em 0 } |
413 | -#ticket .date { color: #996; float: right; font-size: 85%; position: relative } |
414 | +#ticket .date { |
415 | + color: #996; |
416 | + float: right; |
417 | + font-size: 85%; |
418 | + margin: 1em 0; |
419 | + text-align: right; |
420 | +} |
421 | #ticket .date p { margin: .3em } |
422 | |
423 | #ticket table.properties { |
424 | - clear: both; |
425 | - border-top: 1px solid #dd9; |
426 | - border-collapse: collapse; |
427 | - table-layout: fixed; |
428 | - width: 100%; |
429 | + clear: both; |
430 | + border: 1px solid #bbb; |
431 | + border-radius: 0.35em; |
432 | + table-layout: fixed; |
433 | + width: 100%; |
434 | + background: #eee; |
435 | } |
436 | -#ticket table.properties tr { border-bottom: 1px dotted #eed } |
437 | #ticket table.properties td, #ticket table.properties th { |
438 | - font-size: 80%; |
439 | + font-size: 0.875em; |
440 | padding: .5em 1em; |
441 | vertical-align: top; |
442 | + font-size: 1em; |
443 | + padding: .35em .5em; |
444 | } |
445 | #ticket table.properties th { |
446 | - color: #663; |
447 | - font-weight: normal; |
448 | - text-align: left; |
449 | - width: 20%; |
450 | + color: #83a501; |
451 | + text-align: left; |
452 | + text-align: right; |
453 | + width: 20%; |
454 | } |
455 | #ticket table.properties td { width: 30% } |
456 | #ticket table.properties td p:first-child { margin-top: 0 } |
457 | #ticket table.properties td p:last-child { margin-bottom: 0 } |
458 | #ticket table.properties .description { border-top: 1px solid #dd9 } |
459 | |
460 | -#ticket .description h3 { |
461 | - border-bottom: 1px solid #dd9; |
462 | - color: #663; |
463 | - font-size: 100%; |
464 | - font-weight: normal; |
465 | -} |
466 | #ticket .description h3 .lastmod { |
467 | font-size: 90%; |
468 | } |
469 | +#changelog .inlinebuttons, |
470 | #ticket .inlinebuttons { |
471 | - float: right; |
472 | - position: relative; |
473 | - bottom: 0.3em; |
474 | -} |
475 | - |
476 | -#changelog { border: 1px outset #996; padding: 1em } |
477 | + float: right; |
478 | + position: relative; |
479 | + top: 0.75em; |
480 | +} |
481 | + |
482 | + |
483 | +#changelog { |
484 | + background: transparent; |
485 | + -moz-box-shadow: none; |
486 | + -webkit-box-shadow: none; |
487 | + box-shadow: none; |
488 | + padding: 0.35em 0 0; |
489 | + border: none; |
490 | +} |
491 | +#changelog .printableform { |
492 | + padding: 2em 1em; |
493 | + border: 1px solid; |
494 | + border-color: #ddd #aaa #aaa #ddd; |
495 | + border-radius: 0.35em; |
496 | + margin-top: 1em; |
497 | + position: relative; |
498 | + background: #fff; |
499 | +} |
500 | +#changelog .printableform:nth-child(2n) { |
501 | + background: #e7e7e7; |
502 | +} |
503 | + |
504 | #preview { border: 1px solid #d7d7d7; padding: 1em } |
505 | #preview h3, #changelog h3 { |
506 | - border-bottom: 1px solid #d7d7d7; |
507 | - color: #999; |
508 | - font-size: 100%; |
509 | - font-weight: normal; |
510 | + font-size: 100%; |
511 | + padding: 0; |
512 | } |
513 | -.threading, #changelog .inlinebuttons { float: right; } |
514 | -.threading { font-size: 90%; } |
515 | +.threading { float: right; font-size: 90%; } |
516 | |
517 | -#preview .changes, #changelog .changes { list-style: square; margin-left: 2em; padding: 0 } |
518 | +#preview .changes, #changelog .changes { margin-left: 2em; padding: 0 } |
519 | #preview .comment, #changelog .comment { margin-left: 2em } |
520 | |
521 | form .field { margin-top: .75em; width: 100% } |
522 | @@ -102,10 +136,13 @@ |
523 | width: 20%; |
524 | vertical-align: top; |
525 | } |
526 | -#properties table th.col2 { border-left: 1px dotted #d7d7d7 } |
527 | #properties table td { vertical-align: middle; width: 30% } |
528 | #properties table td.fullrow { vertical-align: middle; width: 80% } |
529 | |
530 | +#properties table tr:nth-child(2n) { |
531 | + background-color: #e6e6e6; |
532 | +} |
533 | + |
534 | #action { line-height: 2em } |
535 | |
536 | fieldset.radio { border: none; margin: 0; padding: 0 } |
537 | @@ -117,3 +154,51 @@ |
538 | padding: 0 1em 0 0; |
539 | } |
540 | fieldset.radio label { padding-right: 1em } |
541 | + |
542 | +.ticket h1 .title { |
543 | + vertical-align: middle; |
544 | +} |
545 | + |
546 | +.ticket h1 .statuses { |
547 | + float: right; |
548 | +} |
549 | + |
550 | +.ticket h1 .status, |
551 | +.ticket h1 .type, |
552 | +.ticket h1 .resolution { |
553 | + text-transform: uppercase; |
554 | + color: #fff; |
555 | + padding: 0.35em 0.5em; |
556 | + font-size: 0.6875em; |
557 | + vertical-align: middle; |
558 | + border-bottom: 2px solid #444; |
559 | + border-radius: 0.35em; |
560 | + margin: 0 0.25em 0 0; |
561 | +} |
562 | + |
563 | +.ticket h1 .status { |
564 | + background: #c27e7e; |
565 | +} |
566 | + |
567 | +.ticket h1 .type { |
568 | + background: #a2b16c; |
569 | +} |
570 | + |
571 | +.ticket h1 .resolution { |
572 | + background: #7e9ac2; |
573 | +} |
574 | + |
575 | +.comment-number { |
576 | + position: absolute; |
577 | + top: 0; |
578 | + left: 100%; |
579 | + padding: 0 0 0 0.25em; |
580 | + font-size: 4.25em; |
581 | + color: #ced7ae; |
582 | + color: #ddd; |
583 | +} |
584 | + |
585 | +#changelog .printableform:hover .comment-number { |
586 | + color: #ced7ae; |
587 | + display: block; |
588 | +} |
589 | |
590 | === removed file 'trac-files/common/css/ticket.css.save' |
591 | --- trac-files/common/css/ticket.css.save 2011-10-17 17:00:12 +0000 |
592 | +++ trac-files/common/css/ticket.css.save 1970-01-01 00:00:00 +0000 |
593 | @@ -1,262 +0,0 @@ |
594 | -/* BEGIN inline of code.css */ |
595 | -/* |
596 | -div.code { |
597 | - background: #f7f7f7; |
598 | - border: 1px solid #d7d7d7; |
599 | - margin: 1em 1.75em; |
600 | - padding: .25em; |
601 | - overflow: auto |
602 | -} |
603 | -*/ |
604 | -div.code pre { margin: 0; } |
605 | - |
606 | -table.code { |
607 | - border: 1px solid #ddd; |
608 | - border-spacing: 0; |
609 | - border-top: 0; |
610 | - empty-cells: show; |
611 | - font-size: 12px; |
612 | - line-height: 130%; |
613 | - padding: 0; |
614 | - margin: 0 auto; |
615 | - table-layout: fixed; |
616 | - width: 100%; |
617 | -} |
618 | -table.code th { |
619 | - border-right: 1px solid #d7d7d7; |
620 | - border-bottom: 1px solid #998; |
621 | - font-size: 11px; |
622 | -} |
623 | -table.code th.lineno { width: 4em } |
624 | -table.code thead th { |
625 | - background: #eee; |
626 | - border-top: 1px solid #d7d7d7; |
627 | - color: #999; |
628 | - padding: 0 .25em; |
629 | - text-align: center; |
630 | - white-space: nowrap; |
631 | -} |
632 | -table.code tbody th { |
633 | - background: #eed; |
634 | - color: #886; |
635 | - font-weight: normal; |
636 | - padding: 0 .5em; |
637 | - text-align: right; |
638 | - vertical-align: top; |
639 | -} |
640 | -table.code tbody th :link, table.code tbody th :visited { |
641 | - border: none; |
642 | - color: #886; |
643 | - text-decoration: none; |
644 | -} |
645 | -table.code tbody th :link:hover, table.code tbody th :visited:hover { |
646 | - color: #000; |
647 | -} |
648 | -table.code tbody td { |
649 | - background: #fff; |
650 | - font: normal 11px monospace; |
651 | - overflow: hidden; |
652 | - padding: 1px 2px; |
653 | - vertical-align: top; |
654 | -} |
655 | - |
656 | -.image-file { background: #eee; padding: .3em } |
657 | -.image-file img { background: url(../imggrid.png) } |
658 | - |
659 | -/* Default */ |
660 | -.code-block span { |
661 | - font-family: monospace; |
662 | -} |
663 | - |
664 | -/* Comments */ |
665 | -.code-comment, .css_comment, .c_comment, .c_commentdoc, .c_commentline, |
666 | -.c_commentlinedoc, .h_comment,.pl_commentline, .p_commentblock, |
667 | -.p_commentline, .hphp_comment, .hphp_commentblock, .hphp_commentline, |
668 | -.yaml_comment { |
669 | - color: #998; |
670 | - font-style: italic; |
671 | -} |
672 | - |
673 | -/* Language keyword */ |
674 | -.code-keyword, .pl_word { color: #789; font-weight: bold } |
675 | - |
676 | -/* Type */ |
677 | -.code-type, .c_word, .c_word2, .p_classname, .hphp_classname{ |
678 | - color: #468; |
679 | - font-weight: bold; |
680 | -} |
681 | - |
682 | -/* Function */ |
683 | -.code-func, .p_defname { |
684 | - color: #900; |
685 | - font-weight: bold; |
686 | - border-bottom: none; |
687 | -} |
688 | - |
689 | -/* Pre-processor */ |
690 | -.code-prep, .c_preprocessor, .pl_preprocessor, .yaml_identifier { |
691 | - color: #999; |
692 | - font-weight: bold; |
693 | -} |
694 | - |
695 | -/* Language construct */ |
696 | -.code-lang, .p_word { color: #000; font-weight: bold } |
697 | - |
698 | -/* String */ |
699 | -.code-string, .c_string, .c_stringeol, .css_doublestring, .css_singlestring, |
700 | -.h_singlestring, .h_doublestring, .pl_string, .pl_string_q, .pl_string_qq, |
701 | -.pl_string_qr, .pl_string_qw, .pl_string_qx, .pl_backticks, .pl_character, |
702 | -.p_string, .p_stringeol, .hphp_string, .hphp_stringeol, .hphp_triple, |
703 | -.hphp_tripledouble, .p_character, .p_triple, .p_tripledouble { |
704 | - color: #b84; |
705 | - font-weight: normal; |
706 | -} |
707 | - |
708 | -/* Variable name */ |
709 | -.code-var { color: #f9f } |
710 | - |
711 | -/* SilverCity-specific styles */ |
712 | -.css_id, .css_class, .css_pseudoclass, .css_tag { color: #900000 } |
713 | -.css_directive { color: #009000; font-weight: bold } |
714 | -.css_important { color: blue } |
715 | -.css_operator { color: #000090; font-weight: bold } |
716 | -.css_tag { font-weight: bold } |
717 | -.css_unknown_identifier, .css_unknown_pseudoclass { color: red } |
718 | -.css_value { color: navy } |
719 | -.c_commentdockeyword { color: navy; font-weight: bold } |
720 | -.c_commentdockeyworderror { color: red; font-weight: bold } |
721 | -.c_character, .c_regex, .c_uuid, .c_verbatim { color: olive } |
722 | -.c_number { color: #099 } |
723 | -.h_asp { color: #ff0 } |
724 | -.h_aspat { color: #ffdf00 } |
725 | -.h_attribute { color: teal } |
726 | -.h_attributeunknown { color: red } |
727 | -.h_cdata { color: #373 } |
728 | -.h_entity { color: purple } |
729 | -.h_number { color: #099 } |
730 | -.h_other { color: purple } |
731 | -.h_script, .h_tag, .h_tagend { color: navy } |
732 | -.h_tagunknown { color: red } |
733 | -.h_xmlend, .h_xmlstart { color: blue } |
734 | -.pl_datasection { color: olive } |
735 | -.pl_error { color: red; font-weight: bold } |
736 | -.pl_hash { color: #000 } |
737 | -.pl_here_delim, .pl_here_q, .pl_here_qq, .pl_here_qx, .pl_longquote { color: olive } |
738 | -.pl_number { color: #099 } |
739 | -.pl_pod { font-style: italic } |
740 | -.pl_regex, .pl_regsubst { color: olive } |
741 | -.p_number { color: #099 } |
742 | -.hphp_character { color: olive } |
743 | -.hphp_defname { color: #099; font-weight: bold } |
744 | -.hphp_number { color: #099 } |
745 | -.hphp_word { color: navy; font-weight: bold } |
746 | -.yaml_document { color: gray; font-style: italic } |
747 | -.yaml_keyword { color: #808 } |
748 | -.yaml_number { color: #800 } |
749 | -.yaml_reference { color: #088 } |
750 | -.v_comment { color: gray; font-style: italic } |
751 | -.v_commentline, .v_commentlinebang { color: red; font-style: italic } |
752 | -.v_number, .v_preprocessor { color: #099 } |
753 | -.v_string, .v_stringeol { color: olive } |
754 | -.v_user{ color: blue; font-weight: bold } |
755 | -.v_word, .v_word3 { color: navy; font-weight: bold } |
756 | -.v_word2 { color: green; font-weight: bold } |
757 | -/* END OF code.css */ |
758 | -/* @import url(code.css); */ |
759 | - |
760 | -#content { width: 700px; max-width: 100% } |
761 | - |
762 | -#newticket #description { width: 100% } |
763 | -#newticket #properties { width: 100% } |
764 | - |
765 | -#ticket { |
766 | - background: #fff; |
767 | - border: 2px solid #9ac300; |
768 | - margin-top: 1em; |
769 | - padding: .5em 1em; |
770 | - position: relative; |
771 | -} |
772 | -h1 .status { color: #444; text-transform: lowercase; } |
773 | -#ticket h2.summary { margin: 0 0 .8em 0 } |
774 | -#ticket .date { color: #996; float: right; font-size: 85%; position: relative } |
775 | -#ticket .date p { margin: 0 } |
776 | - |
777 | -#ticket table.properties { |
778 | - border-top: 1px solid #dd9; |
779 | - border-collapse: collapse; |
780 | - table-layout: fixed; |
781 | - width: 100%; |
782 | -} |
783 | -#ticket table.properties tr { border-bottom: 1px dotted #eed } |
784 | -#ticket table.properties td, #ticket table.properties th { |
785 | - font-size: 80%; |
786 | - padding: .5em 1em; |
787 | - vertical-align: top; |
788 | -} |
789 | -#ticket table.properties th { |
790 | - color: #663; |
791 | - font-weight: normal; |
792 | - text-align: left; |
793 | - width: 20%; |
794 | -} |
795 | -#ticket table.properties td { width: 30% } |
796 | -#ticket table.properties .description { border-top: 1px solid #dd9 } |
797 | - |
798 | - |
799 | -#ticket .description h3 { |
800 | - border-bottom: 1px solid #dd9; |
801 | - color: #663; |
802 | - font-size: 100%; |
803 | - font-weight: normal; |
804 | -} |
805 | -#ticket .description h3 .lastmod { |
806 | - font-size: 90%; |
807 | -} |
808 | -#ticket .inlinebuttons { |
809 | - float: right; |
810 | - position: relative; |
811 | - bottom: 0.3em; |
812 | -} |
813 | - |
814 | -#changelog { border: 1px outset #996; padding: 1em } |
815 | -#changelog h3 { |
816 | - border-bottom: 1px solid #d7d7d7; |
817 | - color: #999; |
818 | - font-size: 100%; |
819 | - font-weight: normal; |
820 | -} |
821 | -#changelog .threading, #changelog .inlinebuttons { |
822 | - float: right; |
823 | - position: relative; |
824 | - bottom: 0.3em; |
825 | -} |
826 | - |
827 | -#changelog .changes { list-style: square; margin-left: 2em; padding: 0 } |
828 | -#changelog .comment { margin-left: 2em } |
829 | - |
830 | -form .field { margin-top: .75em; width: 100% } |
831 | -form #comment { width: 100% } |
832 | - |
833 | -#properties { white-space: nowrap; line-height: 160%; padding: .5em } |
834 | -#properties table { border-spacing: 0; width: 100%; } |
835 | -#properties table th { |
836 | - padding: .4em; |
837 | - text-align: right; |
838 | - width: 20%; |
839 | - vertical-align: top; |
840 | -} |
841 | -#properties table th.col2 { border-left: 1px dotted #d7d7d7 } |
842 | -#properties table td { vertical-align: middle; width: 30% } |
843 | -#properties table td.fullrow { vertical-align: middle; width: 80% } |
844 | - |
845 | -#action { line-height: 2em } |
846 | - |
847 | -fieldset.radio { border: none; margin: 0; padding: 0 } |
848 | -fieldset.radio legend { |
849 | - color: #000; |
850 | - float: left; |
851 | - font-size: 100%; |
852 | - font-weight: normal; |
853 | - padding: 0 1em 0 0; |
854 | -} |
855 | -fieldset.radio label { padding-right: 1em } |
856 | |
857 | === modified file 'trac-files/common/css/timeline.css' |
858 | --- trac-files/common/css/timeline.css 2011-10-17 17:00:12 +0000 |
859 | +++ trac-files/common/css/timeline.css 2011-11-24 10:57:32 +0000 |
860 | @@ -4,12 +4,6 @@ |
861 | #prefs fieldset label { display: block } |
862 | #prefs .buttons { margin-top: -1.6em } |
863 | |
864 | -h2 { |
865 | - background: #f7f7f7; |
866 | - border-bottom: 1px solid #d7d7d7; |
867 | - font-size: 105%; |
868 | - margin: 2em 0 .5em; |
869 | -} |
870 | dl { line-height: 1.3em; margin-left: 1em } |
871 | dt { background: 3px 4px no-repeat; padding: 0 } |
872 | dt :link, dt :visited { |
873 | @@ -23,10 +17,13 @@ |
874 | background-position: 3px 4px; |
875 | display: block; |
876 | } |
877 | -dt :link:hover, dt :visited:hover { background-color: #eed; color: #000 } |
878 | +dt :link:hover, dt :visited:hover { |
879 | + background-color: #dfe9f6; |
880 | + color: #000; |
881 | +} |
882 | dt em { |
883 | border-bottom: 1px dotted #bbb; |
884 | - color: #517489; |
885 | + color: #1d61be; |
886 | font-style: normal; |
887 | text-decoration: none; |
888 | } |
889 | |
890 | === modified file 'trac-files/common/css/trac.css' |
891 | --- trac-files/common/css/trac.css 2011-10-17 17:00:12 +0000 |
892 | +++ trac-files/common/css/trac.css 2011-11-24 10:57:32 +0000 |
893 | @@ -2,28 +2,25 @@ |
894 | body { |
895 | background: #fff; |
896 | color: #000; |
897 | - margin: 0px; /* Modified */ |
898 | + margin: 0; /* Modified */ |
899 | padding: 0; |
900 | } |
901 | body, th, td { |
902 | - font: normal 13px trebuchet ms,verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif; /* Modified */ |
903 | -} |
904 | -h1, h2, h3, h4 { |
905 | - font-family: trebuchet ms,arial,verdana,'Bitstream Vera Sans',helvetica,sans-serif; /* Modified */ |
906 | - font-weight: normal; /* Modified */ |
907 | - letter-spacing: -0.018em; |
908 | - color: #83A501; /* Modified */ |
909 | - border-width: 0 0 1px 0; /* Modified */ |
910 | - border-style: dotted; /* Modified */ |
911 | - border-color: #dddddd; /* Modified */ |
912 | -} |
913 | -h1 { font-size: 19px; margin: .15em 1em 0 0 } |
914 | -h2 { font-size: 16px } |
915 | -h3 { font-size: 14px } |
916 | + font-family: "Helvetica Neue", "Bitstream Vera Sans", "Helvetica", "Arial", sans-serif; |
917 | +} |
918 | hr { border: none; border-top: 1px solid #ccb; margin: 2em 0 } |
919 | address { font-style: normal } |
920 | img { border: none; } |
921 | |
922 | +body { font-size:81.25%; line-height:1.25; } |
923 | +h1, h2, h3 { margin-top:0; margin-bottom:0; } |
924 | +h1 { font-size:1.5em; padding:1.45833em 0; } |
925 | +h2 { font-size:1.33333em; padding:1.25em 0; } |
926 | +h3 { font-size:1.16667em; padding:1.51785em 0; } |
927 | + |
928 | +h1, h2, h3, h4 { |
929 | + color: #83A501; |
930 | +} |
931 | .underline { text-decoration: underline } |
932 | ol.loweralpha { list-style-type: lower-alpha } |
933 | ol.upperalpha { list-style-type: upper-alpha } |
934 | @@ -31,135 +28,269 @@ |
935 | ol.upperroman { list-style-type: upper-roman } |
936 | ol.arabic { list-style-type: decimal } |
937 | |
938 | +tt, |
939 | +pre { |
940 | + /* Workaround too-small monospace text in everything but IE(!). */ |
941 | + font-family: monospace, monospace; |
942 | +} |
943 | + |
944 | /* Link styles */ |
945 | -:link, :visited { |
946 | - text-decoration: none; |
947 | - color: #517489; /* Modified */ |
948 | - border-bottom: 0px dotted #bbb; |
949 | +:link { |
950 | + color: #1d61be; |
951 | +} |
952 | +:visited { |
953 | + color: #4a1dbe; |
954 | +} |
955 | +:link:active, :visited:active { |
956 | + color: #14417E; |
957 | } |
958 | :link:hover, :visited:hover { |
959 | - background-color: transparent; |
960 | - color: #555; |
961 | + background-color: transparent; |
962 | + text-decoration: none; |
963 | } |
964 | h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited, |
965 | h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited { |
966 | - color: inherit; |
967 | + color: inherit; |
968 | } |
969 | |
970 | /* Heading anchors */ |
971 | .anchor:link, .anchor:visited { |
972 | - border: none; |
973 | - color: #d7d7d7; |
974 | - font-size: .8em; |
975 | - vertical-align: text-top; |
976 | + border: none; |
977 | + color: #d7d7d7; |
978 | + font-size: 0.8725em; |
979 | + vertical-align: text-top; |
980 | + text-decoration: none; |
981 | } |
982 | * > .anchor:link, * > .anchor:visited { |
983 | - visibility: hidden; |
984 | + visibility: hidden; |
985 | } |
986 | h1:hover .anchor, h2:hover .anchor, h3:hover .anchor, |
987 | h4:hover .anchor, h5:hover .anchor, h6:hover .anchor { |
988 | - visibility: visible; |
989 | + visibility: visible; |
990 | } |
991 | |
992 | @media screen { |
993 | - a.ext-link .icon { |
994 | - background: url(../extlink.gif) left center no-repeat; |
995 | - padding-left: 16px; |
996 | - } |
997 | - * html a.ext-link .icon { display: inline-block; } |
998 | + a.ext-link .icon { |
999 | + background: url(../extlink.gif) left center no-repeat; |
1000 | + padding-left: 16px; |
1001 | + display: inline-block; |
1002 | + width: 0; |
1003 | + } |
1004 | + * html a.ext-link .icon { display: inline-block; } |
1005 | } |
1006 | |
1007 | /* Forms */ |
1008 | input, textarea, select { margin: 0px } |
1009 | input, select { vertical-align: middle } |
1010 | -input[type=button], input[type=submit], input[type=reset] { |
1011 | - background-color: #517489; /* Modified */ |
1012 | - color: #ffffff; /* Modified */ |
1013 | - border: 1px solid #334a57; /* Modified */ |
1014 | - padding: .1em .5em; |
1015 | -} |
1016 | -input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover { |
1017 | - background: #303030; /* Modified */ |
1018 | - border-color: #292929; /* Modified */ |
1019 | - color: #ffffff; /* Modified */ |
1020 | -} |
1021 | -input[type=button][disabled], input[type=submit][disabled], |
1022 | + |
1023 | +input[type=button], |
1024 | +input[type=submit], |
1025 | +input[type=reset] { |
1026 | + background: #e0e0e0; |
1027 | + color: #666; |
1028 | + border: 1px solid #ccc; |
1029 | + border-radius: 0.25em; |
1030 | + padding: 0.3em 0.85em; |
1031 | + font-size: 0.85em; |
1032 | + font-weight: bold; |
1033 | + text-transform: uppercase; |
1034 | +} |
1035 | +input[type=button]::-moz-focus-inner, |
1036 | +input[type=submit]::-moz-focus-inner, |
1037 | +input[type=reset]::-moz-focus-inner { |
1038 | + border: none; |
1039 | + padding: none; |
1040 | +} |
1041 | +input[type=button]:hover, |
1042 | +input[type=submit]:hover, |
1043 | +input[type=reset]:hover { |
1044 | + cursor: pointer; |
1045 | + color: #444; |
1046 | + border-color: #999; |
1047 | + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); |
1048 | + background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); |
1049 | + background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); |
1050 | + background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); |
1051 | + -moz-box-shadow: 0 2px 1px rgba(0, 0, 0, 0.15); |
1052 | + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, 0.15); |
1053 | + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.15); |
1054 | +} |
1055 | +input[type=button]:focus, |
1056 | +input[type=submit]:focus, |
1057 | +input[type=reset]:focus { |
1058 | + outline: 0 none transparent; |
1059 | + border: 1px solid transparent; |
1060 | + -moz-box-shadow: 0 0 0 1px #fff inset; |
1061 | + -webkit-box-shadow: 0 0 0 1px #fff inset; |
1062 | + box-shadow: 0 0 0 1px #fff inset; |
1063 | +} |
1064 | +input[type=button]:active, |
1065 | +input[type=submit]:active, |
1066 | +input[type=reset]:active { |
1067 | + background: #e5e5e5; |
1068 | +} |
1069 | + |
1070 | +input[type=text], |
1071 | +input.textwidget, |
1072 | +textarea, |
1073 | +select { |
1074 | + padding: 0.25em; |
1075 | +} |
1076 | + |
1077 | +input[type=text], |
1078 | +input.textwidget, |
1079 | +textarea { |
1080 | + border: 1px solid; |
1081 | + border-color: #bbb #ddd #ddd #bbb; |
1082 | + color: #000; |
1083 | +} |
1084 | +input[type=text]:focus, |
1085 | +input.textwidget:focus, |
1086 | +textarea:focus { |
1087 | + border-color: #8bbe1d; |
1088 | + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
1089 | + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
1090 | + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
1091 | +} |
1092 | +input[disabled], |
1093 | +input[type=button][disabled], |
1094 | +input[type=submit][disabled], |
1095 | input[type=reset][disabled] { |
1096 | - background: #f6f6f6; |
1097 | - border-style: solid; |
1098 | - color: #999; |
1099 | -} |
1100 | -input[type=text], input.textwidget, textarea { border: 1px solid #8caabb; background-color: #d5e1e7; color: #000000; } /* Modified */ |
1101 | -input[type=text], input.textwidget { padding: .2em .5em } |
1102 | -input[type=text]:focus, input.textwidget:focus, textarea:focus { |
1103 | - border-color: #517489; /* Modified */ |
1104 | -} |
1105 | -option { border-bottom: 1px dotted #d7d7d7 } |
1106 | -fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 0 } |
1107 | + background: #f6f6f6; |
1108 | + border: 1px solid #e0e0e0; |
1109 | + color: #999; |
1110 | + -moz-box-shadow: none; |
1111 | + -webkit-box-shadow: none; |
1112 | + box-shadow: none; |
1113 | +} |
1114 | +fieldset { |
1115 | + background: #f6f6f6; |
1116 | + border: 1px solid; |
1117 | + border-color: #ddd #aaa #aaa #ddd; |
1118 | + padding: 0 1em 1em; |
1119 | + margin: 1em 0; |
1120 | +} |
1121 | fieldset.iefix { background: transparent; border: none; padding: 0; margin: 0 } |
1122 | * html fieldset.iefix { width: 98% } |
1123 | fieldset.iefix p { margin: 0 } |
1124 | -legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold } |
1125 | +legend { |
1126 | + color: #444; |
1127 | + padding: 0 .25em; |
1128 | + font-weight: bold; |
1129 | + text-transform: uppercase; |
1130 | +} |
1131 | label.disabled { color: #d7d7d7 } |
1132 | .buttons { margin: .5em .5em .5em 0 } |
1133 | .buttons form, .buttons form div { display: inline } |
1134 | .buttons input { margin: 1em .5em .1em 0 } |
1135 | .inlinebuttons input { |
1136 | - font-size: 70%; |
1137 | - border-width: 1px; |
1138 | - border-style: dotted; |
1139 | - margin: 0; |
1140 | - padding: 0.1em; |
1141 | - background: none; |
1142 | -} |
1143 | - |
1144 | -input[type=submit] { |
1145 | - background-color: #517489; |
1146 | + font-size: 0.6875em; |
1147 | + margin: 0; |
1148 | + padding: 0.25em; |
1149 | + background: none; |
1150 | +} |
1151 | + |
1152 | +input[value="Save report" ], |
1153 | +input[value="Add attachment"], |
1154 | +input[name="remove"], |
1155 | +input[name="submit"], |
1156 | +input[name="save"] { |
1157 | + color: #455508; |
1158 | + padding: 0.6em 0.85em; |
1159 | + background-color: #bce715; |
1160 | + border-color: #a1c612; |
1161 | +} |
1162 | + |
1163 | +input[value="Save report" ]:active, |
1164 | +input[value="Add attachment"]:active, |
1165 | +input[name="remove"]:active, |
1166 | +input[name="submit"]:active, |
1167 | +input[name="save"]:active { |
1168 | + background: #c7f516; |
1169 | +} |
1170 | + |
1171 | +input[value="Save report" ]:hover, |
1172 | +input[value="Add attachment"]:hover, |
1173 | +input[name="remove"]:hover, |
1174 | +input[name="submit"]:hover, |
1175 | +input[name="save"]:hover { |
1176 | + color: #222; |
1177 | + border-color: #6f890c; |
1178 | } |
1179 | |
1180 | /* Header */ |
1181 | #header hr { display: none } |
1182 | #header h1 { margin: 1.5em 0 -1.5em; } |
1183 | -#header img { border: none; margin: 0 0 -3em } |
1184 | +#header img { border: none; } |
1185 | #header :link, #header :visited, #header :link:hover, #header :visited:hover { |
1186 | background: transparent; |
1187 | color: #555; |
1188 | - margin-bottom: 2px; |
1189 | border: none; |
1190 | } |
1191 | #header h1 :link:hover, #header h1 :visited:hover { color: #000 } |
1192 | |
1193 | /* Quick search */ |
1194 | -#search, #topsearch { |
1195 | - clear: both; |
1196 | - font-size: 10px; |
1197 | - height: 2.2em; |
1198 | - margin: 0 71px 1em 0; /* Modified */ |
1199 | - text-align: right; |
1200 | -} |
1201 | - |
1202 | -#topsearch input, #topsearch input[type=button], #topsearch input[type=submit], #topsearch input[type=reset], #topsearch input[type=text], #topsearch input.textwidget { |
1203 | - font-size: 10px; |
1204 | - background-color: #333; /* Modified */ |
1205 | - color: #ffffff; /* Modified */ |
1206 | - border: 1px solid #222; /* Modified */ |
1207 | -} |
1208 | - |
1209 | -#topsearch input[type=text] { |
1210 | - background-color: #222; /* Modified */ |
1211 | -} |
1212 | - |
1213 | -#search input, #search input[type=button], #search input[type=submit], #search input[type=reset], #search input[type=text], #search input.textwidget { |
1214 | - font-size: 10px; |
1215 | - background-color: #383838; /* Modified */ |
1216 | - color: #ffffff; /* Modified */ |
1217 | - border: 1px solid #333333; /* Modified */ |
1218 | -} |
1219 | -#search, #topsearch label { display: none } |
1220 | +#search { |
1221 | + float: right; |
1222 | + padding: 0.75em 0.75em 1.35em; |
1223 | + margin-right: 1.5em; |
1224 | +} |
1225 | + |
1226 | +#search input[type=button], |
1227 | +#search input[type=submit], |
1228 | +#search input[type=reset], |
1229 | +#search input[type=text], |
1230 | +#search input.textwidget { |
1231 | + background-color: #222; |
1232 | + color: #ddd; |
1233 | + border-color: #666; |
1234 | +} |
1235 | + |
1236 | +#search input[type=button]:hover, |
1237 | +#search input[type=submit]:hover, |
1238 | +#search input[type=reset]:hover { |
1239 | + color: #fff; |
1240 | + border-color: #888; |
1241 | + background-color: #2a2a2a; |
1242 | + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.06)); |
1243 | + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.1)); |
1244 | + background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.06)); |
1245 | + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.06)); |
1246 | + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); |
1247 | + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); |
1248 | + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); |
1249 | +} |
1250 | + |
1251 | +#search input[type=button]:active, |
1252 | +#search input[type=submit]:active, |
1253 | +#search input[type=reset]:active { |
1254 | + background: #222; |
1255 | +} |
1256 | + |
1257 | +#search input[type=text], |
1258 | +#search input.textwidget { |
1259 | + border-color: #444 #666 #666 #444; |
1260 | +} |
1261 | + |
1262 | +#search input[type=text]:focus, |
1263 | +#search input.textwidget:focus { |
1264 | + border-color: #bce715; |
1265 | + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
1266 | + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
1267 | + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); |
1268 | +} |
1269 | + |
1270 | +#search label { display: none } |
1271 | |
1272 | /* Navigation */ |
1273 | .nav h2, .nav hr { display: none } |
1274 | -.nav ul { font-size: 10px; list-style: none; margin: 0; text-align: right } |
1275 | +.nav ul { |
1276 | + font-size: 0.85em; |
1277 | + list-style: none; |
1278 | + margin: 0; |
1279 | + padding: 0; |
1280 | + text-align: right; |
1281 | +} |
1282 | .nav li { |
1283 | border-right: 0px solid #d7d7d7; /* Modified */ |
1284 | display: inline; |
1285 | @@ -170,41 +301,69 @@ |
1286 | |
1287 | /* Main navigation bar */ |
1288 | #mainnav { |
1289 | - background: #f7f7f7 url(../menu_grad.png) 0 0; /* Modified */ |
1290 | - border: 0px solid #000; /* Modified */ |
1291 | - font: normal 10px trebuchet ms,verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif; /* Modified */ |
1292 | + background: #555; |
1293 | + border: none; |
1294 | margin: 0; /* Modified */ |
1295 | - padding: .3em 50px .3em 0; /* Modified */ |
1296 | -} |
1297 | -#mainnav li { border-right: none; padding: .25em 0 } |
1298 | + clear: both; |
1299 | + position: relative; |
1300 | + z-index: 1; |
1301 | +} |
1302 | +#mainnav ul { |
1303 | + border-top: 1px solid #222; |
1304 | + padding: 0.3em 0; |
1305 | +} |
1306 | +#mainnav li { |
1307 | + padding: 0.3em 0; |
1308 | +} |
1309 | #mainnav :link, #mainnav :visited { |
1310 | - background: url(../dots.gif) 0 0 no-repeat; |
1311 | - border-right: 0px solid #fff; /* Modified */ |
1312 | - border-bottom: none; |
1313 | - border-left: 0px solid #555; /* Modified */ |
1314 | - color: #ffffff; /* Modified */ |
1315 | - padding: .3em 20px; /* Modified */ |
1316 | + background: url(../dots.gif) 0 0 no-repeat; |
1317 | + border: none; |
1318 | + color: #eee; |
1319 | + padding: 0.3em 1.6em; |
1320 | } |
1321 | -* html #mainnav :link, * html #mainnav :visited { background-position: 1px 0 } |
1322 | #mainnav :link:hover, #mainnav :visited:hover { |
1323 | - background-color: #444444; /* Modified */ |
1324 | - border-right: 0px solid #ddd; /* Modified */ |
1325 | + color: #eee; |
1326 | + background-color: #444; |
1327 | + z-index: -1; |
1328 | +} |
1329 | +#mainnav .active { |
1330 | + position: relative; |
1331 | + top: -1px; |
1332 | + border: 1px solid #333; |
1333 | + border-top: none; |
1334 | + border-bottom: 4px solid #bce715; |
1335 | } |
1336 | #mainnav .active :link, #mainnav .active :visited { |
1337 | - background: #444444 0 0 repeat-x; /* Modified */ |
1338 | - border-top: none; |
1339 | - border-right: 0px solid #000; /* Modified */ |
1340 | - color: #eee; |
1341 | - font-weight: bold; |
1342 | -} |
1343 | -#mainnav .active :link:hover, #mainnav .active :visited:hover { |
1344 | - /* |
1345 | - border-right: 1px solid #000; |
1346 | - */ |
1347 | + background: #444; |
1348 | + border-bottom: 1px solid transparent; |
1349 | + color: #eee; |
1350 | + font-weight: bold; |
1351 | +} |
1352 | + |
1353 | +#main { |
1354 | + background: #fff url(../bg.png); |
1355 | + clear: both; |
1356 | +} |
1357 | + |
1358 | +/* |
1359 | +#content.ticket a:link, #content.ticket a:visited, |
1360 | +.attachment a:link, .attachment a:link, |
1361 | +.wiki a:link, .wiki a:visited { |
1362 | + text-decoration: underline; |
1363 | +} |
1364 | +*/ |
1365 | + |
1366 | +#banner a:link, #banner a:visited, |
1367 | +#mainnav a:link, #mainnav a:visited, |
1368 | +#ctxtnav a:link, #ctxtnav a:visited, |
1369 | +.timeline a:link, .timeline a:visited { |
1370 | + text-decoration: none; |
1371 | } |
1372 | |
1373 | /* Context-dependent navigation links */ |
1374 | -#ctxtnav { background-image: url(../ctxt_grad.png); height: 30px; padding: 5px 61px 0 0; } /* Modified */ |
1375 | +#ctxtnav { |
1376 | + padding: .5em 0; |
1377 | +} |
1378 | #ctxtnav li ul { |
1379 | background: #f7f7f7; |
1380 | color: #ccc; |
1381 | @@ -252,45 +411,43 @@ |
1382 | /* Footer */ |
1383 | #footer { |
1384 | clear: both; |
1385 | - color: #bbb; |
1386 | - font-size: 10px; |
1387 | - border-top: 0px solid; /* Modified */ |
1388 | - height: 150px; /* Modified */ |
1389 | - background-image: url(../footer_grad.png); /* Modified */ |
1390 | - padding: 50px 50px 0 50px; /* Modified */ |
1391 | + color: #fff; |
1392 | + font-size: 0.85em; |
1393 | + background: #333; |
1394 | + border-top: 0.5em solid #555; |
1395 | + padding: 1.5em 3em; |
1396 | } |
1397 | #footer :link, #footer :visited { color: #bbb; } |
1398 | #footer hr { display: none } |
1399 | #footer #tracpowered { border: 0; float: left } |
1400 | #footer #tracpowered:hover { background: transparent } |
1401 | -#footer p { margin: 0 } |
1402 | -#footer p.left, p.left2 { |
1403 | - float: left; |
1404 | - margin-left: 1em; |
1405 | - padding: 0 1em; |
1406 | -} |
1407 | - |
1408 | -#footer p.left { |
1409 | - border-left: 1px solid #d7d7d7; |
1410 | - border-right: 1px solid #d7d7d7; |
1411 | -} |
1412 | - |
1413 | -#footer p.left2 { |
1414 | - color: #666; |
1415 | -} |
1416 | - |
1417 | -#footer p.right { |
1418 | - float: right; |
1419 | - text-align: right; |
1420 | -} |
1421 | - |
1422 | -#content { padding:0 50px 0 50px; position: relative } |
1423 | +#footer .credits p { |
1424 | + margin: 0; |
1425 | +} |
1426 | + |
1427 | +#footer .sitemeter { |
1428 | + float: right; |
1429 | +} |
1430 | + |
1431 | +#footer .credits { |
1432 | + line-height: 2; |
1433 | + float: left; |
1434 | +} |
1435 | + |
1436 | +#footer .right { |
1437 | + clear: both; |
1438 | +} |
1439 | + |
1440 | +#content { |
1441 | + padding: 0 4em 4em; |
1442 | + position: relative; |
1443 | +} |
1444 | |
1445 | #help { |
1446 | clear: both; |
1447 | color: #999; |
1448 | font-size: 90%; |
1449 | - margin: 1em; |
1450 | + margin: 1em 0; |
1451 | text-align: right; |
1452 | } |
1453 | #help :link, #help :visited { cursor: help } |
1454 | @@ -298,11 +455,11 @@ |
1455 | |
1456 | /* Page preferences form */ |
1457 | #prefs { |
1458 | - background: #edf9c0; |
1459 | - border: 1px solid #bce715; |
1460 | + background: #dfe9f6; |
1461 | + border: 1px solid #1d61be; |
1462 | float: right; |
1463 | - font-size: 9px; |
1464 | - padding: .8em; |
1465 | + font-size: 87.25%; |
1466 | + padding: 1em; |
1467 | position: relative; |
1468 | margin: 0 1em 1em; |
1469 | } |
1470 | @@ -322,17 +479,25 @@ |
1471 | margin: 0 0 0 -1.5em; |
1472 | padding: 0; |
1473 | } |
1474 | -#prefs .buttons { text-align: right } |
1475 | +#prefs .buttons { |
1476 | + margin: 0; |
1477 | + text-align: right |
1478 | +} |
1479 | |
1480 | /* Version information (browser, wiki, attachments) */ |
1481 | #info { |
1482 | - margin: 1em 0 0 0; |
1483 | - background: #f7f7f0; |
1484 | - border: 1px solid #d7d7d7; |
1485 | - border-collapse: collapse; |
1486 | - border-spacing: 0; |
1487 | - clear: both; |
1488 | - width: 100%; |
1489 | + margin: 1em 0 0 0; |
1490 | + background: #f7f7f0; |
1491 | + border: 1px solid #83a501; |
1492 | + border-collapse: collapse; |
1493 | + border-spacing: 0; |
1494 | + clear: both; |
1495 | + position: absolute; |
1496 | + top: -4em; |
1497 | + -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.5); |
1498 | + -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.5); |
1499 | + box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.5); |
1500 | + z-index: 100; |
1501 | } |
1502 | #info th, #info td { font-size: 85%; padding: 2px .5em; vertical-align: top } |
1503 | #info th { font-weight: bold; text-align: left; white-space: nowrap } |
1504 | @@ -341,8 +506,9 @@ |
1505 | #info .message p { margin: 0; padding: 0 } |
1506 | |
1507 | /* Wiki */ |
1508 | -.wikipage { padding-left: 18px; margin: 0; } /* Modified */ |
1509 | -.wikipage h1, .wikipage h2, .wikipage h3 { margin-left: -18px } |
1510 | +.wikipage { |
1511 | + margin: 0; |
1512 | +} |
1513 | |
1514 | a.missing:link, a.missing:visited, span.missing { color: #998 } |
1515 | a.missing:link, a.missing:visited { background: #fafaf0 } |
1516 | @@ -358,17 +524,15 @@ |
1517 | border-width: 1px 0 1px 0; |
1518 | border-style: solid; |
1519 | border-color: #bce715; |
1520 | - margin: 30px; |
1521 | - padding: 10px; |
1522 | + margin: 2em; |
1523 | + padding: 1em; |
1524 | overflow: auto; |
1525 | } |
1526 | |
1527 | blockquote.citation { |
1528 | - margin: -0.6em 0; |
1529 | - border-style: solid; |
1530 | - border-width: 0 0 0 2px; |
1531 | - padding-left: .5em; |
1532 | - border-color: #b44; |
1533 | + margin: -0.6em 0; |
1534 | + border-left: 2px solid #1d61be; |
1535 | + padding-left: 1.4em; |
1536 | } |
1537 | .citation blockquote.citation { border-color: #4b4; } |
1538 | .citation .citation blockquote.citation { border-color: #44b; } |
1539 | @@ -382,41 +546,50 @@ |
1540 | table.wiki td { border: 1px solid #ccc; padding: .1em .25em; } |
1541 | |
1542 | .wikitoolbar { |
1543 | - border: solid #d7d7d7; |
1544 | - border-width: 1px 1px 1px 0; |
1545 | - height: 18px; |
1546 | - width: 208px; |
1547 | -} |
1548 | -.wikitoolbar :link, .wikitoolbar :visited { |
1549 | - background: transparent url(../edit_toolbar.png) no-repeat; |
1550 | - border: 1px solid #fff; |
1551 | - border-left-color: #d7d7d7; |
1552 | - cursor: default; |
1553 | - display: block; |
1554 | - float: left; |
1555 | - width: 24px; |
1556 | - height: 16px; |
1557 | -} |
1558 | -.wikitoolbar :link:hover, .wikitoolbar :visited:hover { |
1559 | - background-color: transparent; |
1560 | - border: 1px solid #fb2; |
1561 | -} |
1562 | -.wikitoolbar a#em { background-position: 0 0 } |
1563 | -.wikitoolbar a#strong { background-position: 0 -16px } |
1564 | -.wikitoolbar a#heading { background-position: 0 -32px } |
1565 | -.wikitoolbar a#link { background-position: 0 -48px } |
1566 | -.wikitoolbar a#code { background-position: 0 -64px } |
1567 | -.wikitoolbar a#hr { background-position: 0 -80px } |
1568 | -.wikitoolbar a#np { background-position: 0 -96px } |
1569 | -.wikitoolbar a#br { background-position: 0 -112px } |
1570 | + height: 18px; |
1571 | + padding: 0.5em 0; |
1572 | +} |
1573 | +#main .wikitoolbar :link, #main .wikitoolbar :visited { |
1574 | + background: transparent url(../edit_toolbar.png) no-repeat; |
1575 | + border: 1px solid #bbb; |
1576 | + border-radius: 0.15em; |
1577 | + display: block; |
1578 | + float: left; |
1579 | + width: 24px; |
1580 | + height: 16px; |
1581 | + margin: 0 0.25em 0 0; |
1582 | +} |
1583 | +#main .wikitoolbar :link:hover, #main .wikitoolbar :visited:hover { |
1584 | + background-color: transparent; |
1585 | + border-color: #1d61be; |
1586 | +} |
1587 | +#main .wikitoolbar a#em { background-position: 0 0 } |
1588 | +#main .wikitoolbar a#strong { background-position: 0 -16px } |
1589 | +#main .wikitoolbar a#heading { background-position: 0 -32px } |
1590 | +#main .wikitoolbar a#link { background-position: 0 -48px } |
1591 | +#main .wikitoolbar a#code { background-position: 0 -64px } |
1592 | +#main .wikitoolbar a#hr { background-position: 0 -80px } |
1593 | +#main .wikitoolbar a#np { background-position: 0 -96px } |
1594 | +#main .wikitoolbar a#br { background-position: 0 -112px } |
1595 | |
1596 | /* Styles for the form for adding attachments. */ |
1597 | +#attachment { |
1598 | + background: #fff; |
1599 | + border-radius: 0.35em; |
1600 | + padding: .5em 1em; |
1601 | + border: 1px solid #d0d0d0; |
1602 | + border-bottom: 2px solid #83a501; |
1603 | + margin-bottom: 1.5em; |
1604 | + -moz-box-shadow: 0 0.15em 0.25em rgba(0, 0, 0, 0.15); |
1605 | + -webkit-box-shadow: 0 0.15em 0.25em rgba(0, 0, 0, 0.15); |
1606 | + box-shadow: 0 0.15em 0.25em rgba(0, 0, 0, 0.15); |
1607 | +} |
1608 | #attachment .field { margin-top: 1.3em } |
1609 | #attachment label { padding-left: .2em } |
1610 | #attachment fieldset { margin-top: 2em } |
1611 | #attachment fieldset .field { float: left; margin: 0 1em .5em 0 } |
1612 | #attachment .options { float: left; padding: 0 0 1em 1em } |
1613 | -#attachment br { clear: left } |
1614 | +#attachment br { display: block; clear: left } |
1615 | .attachment #preview { margin-top: 1em } |
1616 | |
1617 | /* Styles for the list of attachments. */ |
1618 | @@ -429,27 +602,35 @@ |
1619 | /* Styles for tabular listings such as those used for displaying directory |
1620 | contents and report results. */ |
1621 | table.listing { |
1622 | - clear: both; |
1623 | - border-bottom: 1px solid #d7d7d7; |
1624 | - border-collapse: collapse; |
1625 | - border-spacing: 0; |
1626 | - margin-top: 1em; |
1627 | - width: 100%; |
1628 | -} |
1629 | -table.listing th { text-align: left; padding: 0 1em .1em 0; font-size: 12px } |
1630 | -table.listing thead { background: #f7f7f0 } |
1631 | + clear: both; |
1632 | + border-spacing: 0; |
1633 | + border: 1px solid #ddd; |
1634 | + margin-top: 1em; |
1635 | + padding: 0.5em; |
1636 | + width: 100%; |
1637 | + background: #fff; |
1638 | + -moz-box-shadow: 0 0.25em 0.15em rgba(0, 0, 0, 0.15); |
1639 | + -webkit-box-shadow: 0 0.25em 0.15em rgba(0, 0, 0, 0.15); |
1640 | + box-shadow: 0 0.25em 0.15em rgba(0, 0, 0, 0.15); |
1641 | +} |
1642 | +table.listing th { |
1643 | + text-align: left; |
1644 | + padding: 0; |
1645 | +} |
1646 | table.listing thead th { |
1647 | - border: 1px solid #d7d7d7; |
1648 | - border-bottom-color: #999; |
1649 | - font-size: 11px; |
1650 | - font-weight: bold; |
1651 | - padding: 2px .5em; |
1652 | - vertical-align: bottom; |
1653 | -} |
1654 | -table.listing thead th :link:hover, table.listing thead th :visited:hover { |
1655 | - background-color: transparent; |
1656 | -} |
1657 | -table.listing thead th a { border: none; padding-right: 12px } |
1658 | + border: none; |
1659 | + border-bottom: 2px solid #164b93; |
1660 | + padding: 0.8em 1em; |
1661 | +} |
1662 | +table.listing thead th :link:hover, |
1663 | +table.listing thead th :visited:hover { |
1664 | + background-color: transparent; |
1665 | +} |
1666 | +table.listing thead th a { |
1667 | + display: block; |
1668 | + margin: -0.8em -1em; |
1669 | + padding: 0.8em 1em; |
1670 | +} |
1671 | table.listing th.asc a, table.listing th.desc a { font-weight: bold } |
1672 | table.listing th.asc a, table.listing th.desc a { |
1673 | background-position: 100% 50%; |
1674 | @@ -458,30 +639,45 @@ |
1675 | table.listing th.asc a { background-image: url(../asc.png) } |
1676 | table.listing th.desc a { background-image: url(../desc.png) } |
1677 | table.listing tbody td, table.listing tbody th { |
1678 | - border: 1px dotted #ddd; |
1679 | - padding: .33em .5em; |
1680 | - vertical-align: top; |
1681 | -} |
1682 | + padding: 0; |
1683 | + vertical-align: middle; |
1684 | + padding: 0.6em 1em; |
1685 | +} |
1686 | +table.listing tbody td a { |
1687 | + margin: -0.6em -1em; |
1688 | + padding: 0.6em 1em; |
1689 | + display: block; |
1690 | +} |
1691 | + |
1692 | +table.listing tbody td { |
1693 | + border-bottom: 1px solid #ccc; |
1694 | +} |
1695 | + |
1696 | table.listing tbody td a:hover, table.listing tbody th a:hover { |
1697 | background-color: transparent; |
1698 | } |
1699 | -table.listing tbody tr { border-top: 1px solid #ddd } |
1700 | table.listing tbody tr.even { background-color: #fcfcfc } |
1701 | table.listing tbody tr.odd { background-color: #f7f7f7 } |
1702 | -table.listing tbody tr:hover { background: #eed !important } |
1703 | +table.listing tbody tr:hover { background: #dfe9f6 !important } |
1704 | |
1705 | /* Styles for the error page (and rst errors) */ |
1706 | #content.error .message, div.system-message { |
1707 | - background: #fdc; |
1708 | - border: 2px solid #d00; |
1709 | - color: #500; |
1710 | - padding: .5em; |
1711 | - margin: 1em 0; |
1712 | + background: #fdc; |
1713 | + border: 2px solid #d00; |
1714 | + color: #500; |
1715 | + padding: .5em; |
1716 | } |
1717 | #content.error pre, div.system-message pre { margin-left: 1em; overflow: auto } |
1718 | div.system-message p { margin: 0; } |
1719 | div.system-message p.system-message-title { font-weight: bold; } |
1720 | |
1721 | +#warning.system-message { |
1722 | + position: absolute; |
1723 | + top: 0; |
1724 | + left: 0; |
1725 | + z-index: 100; |
1726 | +} |
1727 | + |
1728 | /* Styles for search word highlighting */ |
1729 | @media screen { |
1730 | .searchword0 { background: #ff9 } |
1731 | @@ -500,114 +696,245 @@ |
1732 | |
1733 | /* Custom */ |
1734 | #top_grad { |
1735 | - background-image: url(../top_grad.png); |
1736 | - height: 26px; |
1737 | + background: #bce715; |
1738 | + height: 0.35em; |
1739 | } |
1740 | #tab { |
1741 | - height: 32px; |
1742 | - width: 282px; |
1743 | - color: #ffffff; |
1744 | - text-align: center; |
1745 | - margin: -2px 49px 0 0; |
1746 | - background-image: url(../tab.png); |
1747 | - background-repeat: no-repeat; |
1748 | - float: right; |
1749 | + color: #ffffff; |
1750 | + text-align: center; |
1751 | + background: #bce715; |
1752 | + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1753 | + background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1754 | + background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1755 | + background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1756 | + background-image: linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1757 | + float: right; |
1758 | + border: 0 solid #d1fd26; |
1759 | + border-width: 0 0 1px 1px; |
1760 | + border-radius: 0 0 0 0.35em; |
1761 | + padding: 1em; |
1762 | + font-weight: bold; |
1763 | } |
1764 | |
1765 | #tab :link, #tab :visited { |
1766 | - background: transparent; |
1767 | - color: #ffffff; |
1768 | - font-size: 12px; |
1769 | - border: none; |
1770 | - padding: 4px; |
1771 | - |
1772 | + color: #444; |
1773 | + padding: 1em; |
1774 | + text-shadow: 0 1px #d1fd26; |
1775 | } |
1776 | #tab :link:hover, #tab :visited:hover { |
1777 | - border-width: 0 0 1px 0; |
1778 | - border-style: solid; |
1779 | - border-color: #a4cd0d; |
1780 | + text-shadow: none; |
1781 | + border-bottom: 0.5em solid #fff; |
1782 | + border-radius: 0 0.35em 0 0.35em; |
1783 | + background: white; |
1784 | + -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.5); |
1785 | + -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.5); |
1786 | + box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.5); |
1787 | } |
1788 | |
1789 | #banner { |
1790 | - background-image: url(../main_grad.png); |
1791 | - height: 135px; |
1792 | + background: #444; |
1793 | + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1794 | + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1795 | + background-image: -ms-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1796 | + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1797 | + float: left; |
1798 | + width: 100%; |
1799 | } |
1800 | |
1801 | #header { |
1802 | - margin: 20px 0 0 49px; |
1803 | + float: left; |
1804 | + padding: 1em; |
1805 | } |
1806 | |
1807 | #metanav { |
1808 | - margin-right: 61px; |
1809 | + padding: 0.75em; |
1810 | + margin-top: 0.35em; |
1811 | + float: right; |
1812 | } |
1813 | |
1814 | #metanav :link, #metanav :visited { |
1815 | - color: #ffffff; |
1816 | - |
1817 | + color: #fff; |
1818 | } |
1819 | |
1820 | #metanav :link:hover, #metanav :visited:hover { |
1821 | - color: #bbbbbb; |
1822 | + color: #bbb; |
1823 | + border-bottom: 1px dotted #bbb; |
1824 | } |
1825 | |
1826 | #metanav ul li.first { |
1827 | - color: #ccc; |
1828 | + color: #ccc; |
1829 | } |
1830 | |
1831 | #side_bar { |
1832 | float: right; |
1833 | -// width: 350px; |
1834 | background-color: #ffffff; |
1835 | padding: 0 0 0 15px; |
1836 | } |
1837 | |
1838 | -#download_top { |
1839 | - height: 145px; |
1840 | - width: 273px; |
1841 | - background-image: url(../dld_top.png); |
1842 | -} |
1843 | - |
1844 | -#download_bottom { |
1845 | - height: 91px; |
1846 | - width: 273px; |
1847 | - background-image: url(../dld_bottom.png); |
1848 | +#download_icon { |
1849 | + position: absolute; |
1850 | + right: -20px; |
1851 | + top: -35px; |
1852 | + z-index: 99; |
1853 | } |
1854 | |
1855 | #download { |
1856 | -// height: 145px; |
1857 | - width: 243px; |
1858 | - background-image: url(../dld_back.png); |
1859 | - background-repeat: repeat-y; |
1860 | - padding: 0 10px 0 20px; |
1861 | -} |
1862 | - |
1863 | - |
1864 | -#download_old { |
1865 | - height: 284px; |
1866 | - width: 269px; |
1867 | -// float: right; |
1868 | - margin: 0; |
1869 | - padding: 0 0 0 19px; |
1870 | - background-image: url(../download.png); |
1871 | - background-repeat: no-repeat; |
1872 | -} |
1873 | - |
1874 | -#donate { |
1875 | - height: 284px; |
1876 | - width: 269px; |
1877 | -// float: right; |
1878 | - margin: 0; |
1879 | - padding: 0 0 0 19px; |
1880 | -} |
1881 | - |
1882 | -#download :link, #download :visited, #download :link:hover, #download :visited:hover { |
1883 | - background: transparent; |
1884 | - color: #9ac300; |
1885 | - font-size: 12px; |
1886 | - border: none; |
1887 | -} |
1888 | - |
1889 | -.download-left { |
1890 | - position: relative; |
1891 | - left: -30px; |
1892 | + background: #555; |
1893 | + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1894 | + background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1895 | + background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1896 | + background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, .3)); |
1897 | + border-bottom: 2px solid #bce715; |
1898 | + border-radius: 0.35em; |
1899 | + padding: 2em; |
1900 | + position: relative; |
1901 | + -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, .65); |
1902 | + -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, .65); |
1903 | + box-shadow: 0 0 0.5em rgba(0, 0, 0, .65); |
1904 | + margin-bottom: 3em; |
1905 | + margin-right: -3em; |
1906 | +} |
1907 | + |
1908 | +#download > p { |
1909 | + margin: 0; |
1910 | +} |
1911 | + |
1912 | +#download h1, #download h2 { |
1913 | + color: #eee; |
1914 | + text-shadow: 0 1px #222; |
1915 | +} |
1916 | + |
1917 | +#download h1 { |
1918 | + padding-top: 0; |
1919 | +} |
1920 | + |
1921 | +#download h2 { |
1922 | + color: #bbb; |
1923 | + padding: 0; |
1924 | +} |
1925 | + |
1926 | +#download ul { |
1927 | + list-style: none; |
1928 | + margin: 0.5em 0; |
1929 | + padding: 0; |
1930 | +} |
1931 | + |
1932 | +#download a:link, #download a:visited { |
1933 | + display: block; |
1934 | + padding: 0.25em 1em; |
1935 | + margin: 0 -.5em; |
1936 | + background: transparent; |
1937 | + color: #bce715; |
1938 | + border: none; |
1939 | + text-decoration: none; |
1940 | +} |
1941 | + |
1942 | +#download a:hover { |
1943 | + background: #bce715; |
1944 | + color: #444; |
1945 | +} |
1946 | + |
1947 | +#download a.anchor { |
1948 | + display: none; |
1949 | +} |
1950 | + |
1951 | +pre.prettyprint { |
1952 | + border: none !important; |
1953 | + padding: 0 !important; |
1954 | +} |
1955 | + |
1956 | +.column-layout { |
1957 | + width: 100%; |
1958 | + margin: 0 -4em; |
1959 | +} |
1960 | + |
1961 | +.leftcol { |
1962 | + width: 15%; |
1963 | +} |
1964 | + |
1965 | +/* IE7 hacks. */ |
1966 | +.leftcol { |
1967 | + *display: block; |
1968 | + *float: left; |
1969 | +} |
1970 | + |
1971 | +.leftcolcol { |
1972 | + padding: 1.5em; |
1973 | + border-width: 0 1px 1px 0; |
1974 | + margin-top: -1.25em; |
1975 | + margin-right: 2em; |
1976 | + border-radius: 0 0 0.35em 0; |
1977 | +} |
1978 | + |
1979 | +.centercol { |
1980 | + padding: 0 2em; |
1981 | +} |
1982 | + |
1983 | +/* IE7 hacks. */ |
1984 | +.centercol { |
1985 | + *display: block; |
1986 | + *float: left; |
1987 | +} |
1988 | + |
1989 | +#main .twisted-sponsors a:link { |
1990 | + display: block; |
1991 | + border: none; |
1992 | + text-align: center; |
1993 | + padding: 0.5em 0; |
1994 | +} |
1995 | + |
1996 | +#main .twisted-sponsors a.anchor:link { |
1997 | + display: inline; |
1998 | +} |
1999 | + |
2000 | +.side-panel { |
2001 | + background: #eee; |
2002 | + border: 1px solid #d0d0d0; |
2003 | + border-radius: 0.35em; |
2004 | + -moz-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.075); |
2005 | + -webkit-box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.075); |
2006 | + box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.075); |
2007 | + padding: 2em; |
2008 | + position: relative; |
2009 | + margin-right: -3em; |
2010 | +} |
2011 | +.side-panel h2 { |
2012 | + padding-top: 0; |
2013 | + color: #1d61be; |
2014 | + text-shadow: 0 1px #fff; |
2015 | +} |
2016 | + |
2017 | +.twisted-news { |
2018 | + margin-bottom: 3em; |
2019 | +} |
2020 | +.twisted-news > p { |
2021 | + margin: 0; |
2022 | +} |
2023 | +.twisted-news .feed-updated { |
2024 | + font-size: 0.75em; |
2025 | + text-align: right; |
2026 | +} |
2027 | +.twisted-news .feed-entry { |
2028 | + padding: 0.5em; |
2029 | + margin: 0 -0.5em; |
2030 | +} |
2031 | +.twisted-news .feed-entry:nth-child(2n) { |
2032 | + background: rgba(0, 0, 0, 0.05); |
2033 | +} |
2034 | + |
2035 | +.donations p { |
2036 | + margin-top: 0; |
2037 | +} |
2038 | +.donation-buttons { |
2039 | + width: 210px; |
2040 | + text-align: center; |
2041 | +} |
2042 | + |
2043 | +.wikipage div.code pre { |
2044 | + background: transparent; |
2045 | +} |
2046 | + |
2047 | +.throbber { |
2048 | + display: block; |
2049 | + margin: auto; |
2050 | } |
2051 | |
2052 | === removed file 'trac-files/common/ctxt_grad.png' |
2053 | Binary files trac-files/common/ctxt_grad.png 2011-10-17 17:00:12 +0000 and trac-files/common/ctxt_grad.png 1970-01-01 00:00:00 +0000 differ |
2054 | === removed file 'trac-files/common/dld_back.png' |
2055 | Binary files trac-files/common/dld_back.png 2011-10-17 17:00:12 +0000 and trac-files/common/dld_back.png 1970-01-01 00:00:00 +0000 differ |
2056 | === removed file 'trac-files/common/dld_bottom.png' |
2057 | Binary files trac-files/common/dld_bottom.png 2011-10-17 17:00:12 +0000 and trac-files/common/dld_bottom.png 1970-01-01 00:00:00 +0000 differ |
2058 | === removed file 'trac-files/common/dld_top.png' |
2059 | Binary files trac-files/common/dld_top.png 2011-10-17 17:00:12 +0000 and trac-files/common/dld_top.png 1970-01-01 00:00:00 +0000 differ |
2060 | === added file 'trac-files/common/download_icon.png' |
2061 | Binary files trac-files/common/download_icon.png 1970-01-01 00:00:00 +0000 and trac-files/common/download_icon.png 2011-11-24 10:57:32 +0000 differ |
2062 | === removed file 'trac-files/common/footer_back.png' |
2063 | Binary files trac-files/common/footer_back.png 2011-10-17 17:00:12 +0000 and trac-files/common/footer_back.png 1970-01-01 00:00:00 +0000 differ |
2064 | === removed file 'trac-files/common/footer_grad.png' |
2065 | Binary files trac-files/common/footer_grad.png 2011-10-17 17:00:12 +0000 and trac-files/common/footer_grad.png 1970-01-01 00:00:00 +0000 differ |
2066 | === added file 'trac-files/common/js/news.js' |
2067 | --- trac-files/common/js/news.js 1970-01-01 00:00:00 +0000 |
2068 | +++ trac-files/common/js/news.js 2011-11-24 10:57:32 +0000 |
2069 | @@ -0,0 +1,92 @@ |
2070 | +/** |
2071 | + * Create a DOM node factory for the given document object. |
2072 | + * |
2073 | + * @rtype: C{function} that takes C{String}, C{object} mapping C{String} |
2074 | + * to C{String}, C{Array} of C{String} or DOM nodes |
2075 | + * @return: A factory taking 3 arguments: C{tagName}, C{attrs} and |
2076 | + * C{children} |
2077 | + */ |
2078 | +function DOMBuilder(doc) { |
2079 | + return function _nodeFactory(tagName, attrs, children) { |
2080 | + var node = doc.createElement(tagName); |
2081 | + if (attrs !== undefined) { |
2082 | + for (var key in attrs) { |
2083 | + node.setAttribute(key, attrs[key]); |
2084 | + } |
2085 | + } |
2086 | + |
2087 | + if (children !== undefined) { |
2088 | + for (var i = 0; i < children.length; ++i) { |
2089 | + var child = children[i]; |
2090 | + if (typeof child === 'string') { |
2091 | + child = doc.createTextNode(child); |
2092 | + } |
2093 | + node.appendChild(child); |
2094 | + } |
2095 | + } |
2096 | + |
2097 | + return node; |
2098 | + }; |
2099 | +} |
2100 | + |
2101 | + |
2102 | +/** |
2103 | + * Format a C{Date} instance as I{YYYY-mm-dd}. |
2104 | + */ |
2105 | +function formatDate(d) { |
2106 | + var year = d.getFullYear(); |
2107 | + var month = d.getMonth() + 1; |
2108 | + var day = d.getDate(); |
2109 | + return [ |
2110 | + year, '-', |
2111 | + (month < 10 ? '0' : '') + month, '-', |
2112 | + (day < 10 ? '0' : '') + day].join(''); |
2113 | +} |
2114 | + |
2115 | + |
2116 | +/** |
2117 | + * Remove all the children of a node. |
2118 | + */ |
2119 | +function removeNodeContent(node) { |
2120 | + while (node.lastChild) { |
2121 | + node.removeChild(node.lastChild); |
2122 | + } |
2123 | +} |
2124 | + |
2125 | + |
2126 | +/** |
2127 | + * Load news feed items, from the Twisted Matrix Labs blog, and insert them |
2128 | + * into the "twisted-news" element, if it exists. |
2129 | + */ |
2130 | +function loadNewsFeeds() { |
2131 | + var container = document.getElementById('twisted-news'); |
2132 | + // Bail out if there is no news element. |
2133 | + if (!container) { |
2134 | + return; |
2135 | + } |
2136 | + |
2137 | + var feed = new google.feeds.Feed( |
2138 | + 'http://feeds.feedburner.com/TwistedMatrixLaboratories'); |
2139 | + feed.setNumEntries(5); |
2140 | + feed.load(function(result) { |
2141 | + if (!result.error) { |
2142 | + removeNodeContent(container); |
2143 | + var D = DOMBuilder(container.ownerDocument); |
2144 | + for (var i = 0; i < result.feed.entries.length; i++) { |
2145 | + var entry = result.feed.entries[i]; |
2146 | + var prettyDate = formatDate(new Date(entry.publishedDate)); |
2147 | + var entryNode = D('div', {'class': 'feed-entry'}, [ |
2148 | + D('a', {'href': entry.link}, [entry.title]), |
2149 | + D('div', {'class': 'feed-updated'}, [ |
2150 | + 'by ', |
2151 | + D('strong', {}, [entry.author]), |
2152 | + ' on ', |
2153 | + D('strong', {}, [prettyDate])]) |
2154 | + ]); |
2155 | + container.appendChild(entryNode); |
2156 | + } |
2157 | + } |
2158 | + }); |
2159 | +} |
2160 | +google.load('feeds', '1'); |
2161 | +google.setOnLoadCallback(loadNewsFeeds); |
2162 | |
2163 | === removed file 'trac-files/common/main_grad.png' |
2164 | Binary files trac-files/common/main_grad.png 2011-10-17 17:00:12 +0000 and trac-files/common/main_grad.png 1970-01-01 00:00:00 +0000 differ |
2165 | === removed file 'trac-files/common/menu_grad.png' |
2166 | Binary files trac-files/common/menu_grad.png 2011-10-17 17:00:12 +0000 and trac-files/common/menu_grad.png 1970-01-01 00:00:00 +0000 differ |
2167 | === added file 'trac-files/common/source_download_icon.psd' |
2168 | Binary files trac-files/common/source_download_icon.psd 1970-01-01 00:00:00 +0000 and trac-files/common/source_download_icon.psd 2011-11-24 10:57:32 +0000 differ |
2169 | === added file 'trac-files/common/source_trac_banner.psd' |
2170 | Binary files trac-files/common/source_trac_banner.psd 1970-01-01 00:00:00 +0000 and trac-files/common/source_trac_banner.psd 2011-11-24 10:57:32 +0000 differ |
2171 | === removed file 'trac-files/common/tab.png' |
2172 | Binary files trac-files/common/tab.png 2011-10-17 17:00:12 +0000 and trac-files/common/tab.png 1970-01-01 00:00:00 +0000 differ |
2173 | === added file 'trac-files/common/throbber.gif' |
2174 | Binary files trac-files/common/throbber.gif 1970-01-01 00:00:00 +0000 and trac-files/common/throbber.gif 2011-11-24 10:57:32 +0000 differ |
2175 | === removed file 'trac-files/common/top_grad.png' |
2176 | Binary files trac-files/common/top_grad.png 2011-10-17 17:00:12 +0000 and trac-files/common/top_grad.png 1970-01-01 00:00:00 +0000 differ |
2177 | === removed file 'trac-files/common/trac_banner-old.png' |
2178 | Binary files trac-files/common/trac_banner-old.png 2011-10-17 17:00:12 +0000 and trac-files/common/trac_banner-old.png 1970-01-01 00:00:00 +0000 differ |
2179 | === modified file 'trac-files/common/trac_banner.png' |
2180 | Binary files trac-files/common/trac_banner.png 2011-10-17 17:00:12 +0000 and trac-files/common/trac_banner.png 2011-11-24 10:57:32 +0000 differ |
2181 | === removed file 'trac-files/templates/README' |
2182 | --- trac-files/templates/README 2011-10-17 17:00:12 +0000 |
2183 | +++ trac-files/templates/README 1970-01-01 00:00:00 +0000 |
2184 | @@ -1,8 +0,0 @@ |
2185 | -This directory contains Trac's default Genshi templates. |
2186 | - |
2187 | -It also still contains the base Clearsilver templates for |
2188 | -compatibility with pre-0.11 plugins. |
2189 | - |
2190 | -Local modifications to these files might be lost during the installation of |
2191 | -a new Trac version. This can be avoided by making a copy of this entire |
2192 | -directory before beginning modifications. |
2193 | |
2194 | === removed file 'trac-files/templates/about.html' |
2195 | --- trac-files/templates/about.html 2011-10-17 17:00:12 +0000 |
2196 | +++ trac-files/templates/about.html 1970-01-01 00:00:00 +0000 |
2197 | @@ -1,89 +0,0 @@ |
2198 | -<!DOCTYPE html |
2199 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2200 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2201 | -<html xmlns="http://www.w3.org/1999/xhtml" |
2202 | - xmlns:py="http://genshi.edgewall.org/" |
2203 | - xmlns:xi="http://www.w3.org/2001/XInclude"> |
2204 | - <xi:include href="layout.html" /> |
2205 | - <head> |
2206 | - <title>About Trac</title> |
2207 | - <link rel="stylesheet" type="text/css" href="${chrome.htdocs_location}css/about.css" /> |
2208 | - <script type="text/javascript"> |
2209 | - //<![CDATA[ |
2210 | - jQuery(document).ready(function ($) { |
2211 | - $("#systeminfo table").append("<tr><th>jQuery:</th><td>"+$().jquery+"</td></tr>"); |
2212 | - }); |
2213 | - //]]> |
2214 | - </script> |
2215 | - </head> |
2216 | - |
2217 | - <body> |
2218 | - <div id="content" class="about"> |
2219 | - |
2220 | - <a href="http://trac.edgewall.org/" |
2221 | - style="border: none; float: right; margin-left: 2em"> |
2222 | - <img style="display: block" src="${chrome.htdocs_location}trac_banner.png" |
2223 | - alt="Trac: Integrated SCM & Project Management"/> |
2224 | - </a> |
2225 | - <h1>About Trac</h1> |
2226 | - <p>Trac is a web-based software project management and bug/issue |
2227 | - tracking system emphasizing ease of use and low ceremony. |
2228 | - It provides an integrated Wiki, an interface to version control |
2229 | - systems, and a number of convenient ways to stay on top of events |
2230 | - and changes within a project. |
2231 | - </p> |
2232 | - <p>Trac is distributed under the modified BSD License.<br /> |
2233 | - The complete text of the license can be found |
2234 | - <a href="http://trac.edgewall.org/wiki/TracLicense">online</a> |
2235 | - as well as in the <tt>COPYING</tt> file included in the distribution.</p> |
2236 | - <a href="http://www.python.org/" style="border: none; float: right"> |
2237 | - <img style="display: block" src="${chrome.htdocs_location}python.png" |
2238 | - alt="python powered" width="140" height="56" /> |
2239 | - </a> |
2240 | - <p>Please visit the Trac open source project: |
2241 | - <a href="http://trac.edgewall.org/">http://trac.edgewall.org/</a></p> |
2242 | - <p class="copyright" xml:lang="en">Copyright © 2003-2009 |
2243 | - <a href="http://www.edgewall.org/">Edgewall Software</a> |
2244 | - </p> |
2245 | - |
2246 | - <py:if test="systeminfo or config"> |
2247 | - <hr /> |
2248 | - |
2249 | - <div py:if="systeminfo" id="systeminfo"> |
2250 | - <h2>System Information</h2> |
2251 | - <table class="listing"> |
2252 | - <tr py:for="name, value in systeminfo"> |
2253 | - <th>$name:</th> |
2254 | - <td>$value</td> |
2255 | - </tr> |
2256 | - </table> |
2257 | - </div> |
2258 | - |
2259 | - <div py:if="config" id="config"> |
2260 | - <h2>Configuration</h2> |
2261 | - <table class="listing"> |
2262 | - <thead> |
2263 | - <tr> |
2264 | - <th class="section">Section</th> |
2265 | - <th class="name">Name</th> |
2266 | - <th class="value">Value</th> |
2267 | - </tr> |
2268 | - </thead> |
2269 | - <tbody> |
2270 | - <div py:for="section in config" py:strip=""> |
2271 | - <tr py:for="idx,option in enumerate(section.options)" |
2272 | - class="${option.modified and 'modified' or None}"> |
2273 | - <th py:if="idx == 0" class="section" |
2274 | - rowspan="${len(section.options)}">${section.name}</th> |
2275 | - <td class="name">${option.name}</td> |
2276 | - <td class="value">${option.value}</td> |
2277 | - </tr> |
2278 | - </div> |
2279 | - </tbody> |
2280 | - </table> |
2281 | - </div> |
2282 | - </py:if> |
2283 | - |
2284 | - </div> |
2285 | - </body> |
2286 | -</html> |
2287 | |
2288 | === removed file 'trac-files/templates/attachment.html' |
2289 | --- trac-files/templates/attachment.html 2011-10-17 17:00:12 +0000 |
2290 | +++ trac-files/templates/attachment.html 1970-01-01 00:00:00 +0000 |
2291 | @@ -1,118 +0,0 @@ |
2292 | -<!DOCTYPE html |
2293 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2294 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2295 | -<html xmlns="http://www.w3.org/1999/xhtml" |
2296 | - xmlns:py="http://genshi.edgewall.org/" |
2297 | - xmlns:xi="http://www.w3.org/2001/XInclude"> |
2298 | - <xi:include href="layout.html" /> |
2299 | - <xi:include href="macros.html" /> |
2300 | - <head> |
2301 | - <title>Attachment</title> |
2302 | - </head> |
2303 | - |
2304 | - <body py:with="parent = attachments and attachments.parent or |
2305 | - attachment.resource.parent"> |
2306 | - <div py:choose="mode" id="content" class="attachment"> |
2307 | - <py:when test="'new'"> |
2308 | - <h1>Add Attachment to <a href="${url_of(parent)}">${name_of(parent)}</a></h1> |
2309 | - <p>Adding a patch that changes code? Make sure it includes unit tests! |
2310 | - <a href="/trac/wiki/ReviewProcess">See the |
2311 | - complete acceptance criteria</a>. Thanks! |
2312 | - </p> |
2313 | - <form id="attachment" method="post" enctype="multipart/form-data" action=""> |
2314 | - <div class="field"> |
2315 | - <label>File<py:if test="max_size >= 0"> (size limit |
2316 | - ${pretty_size(max_size, format='%d')})</py:if>:<br /> |
2317 | - <input type="file" name="attachment" /></label> |
2318 | - </div> |
2319 | - <fieldset> |
2320 | - <legend>Attachment Info</legend> |
2321 | - <py:if test="authname == 'anonymous'"> |
2322 | - <div class="field"> |
2323 | - <label>Your email or username:<br /> |
2324 | - <input type="text" name="author" size="30" value="$author" /> |
2325 | - </label> |
2326 | - </div> |
2327 | - </py:if> |
2328 | - <div class="field"> |
2329 | - <label>Description of the file (optional):<br /> |
2330 | - <input type="text" name="description" size="60" /></label> |
2331 | - </div> |
2332 | - <br /> |
2333 | - <py:if test="0 and authname and authname != 'anonymous'"> |
2334 | - <div class="options"> |
2335 | - <label><input type="checkbox" name="replace" /> |
2336 | - Replace existing attachment of the same name</label> |
2337 | - </div> |
2338 | - <br /> |
2339 | - </py:if> |
2340 | - </fieldset> |
2341 | - <div class="buttons"> |
2342 | - <input type="hidden" name="action" value="new" /> |
2343 | - <input type="hidden" name="realm" value="$parent.realm" /> |
2344 | - <input type="hidden" name="id" value="$parent.id" /> |
2345 | - <input type="submit" value="Add attachment" /> |
2346 | - <input type="submit" name="cancel" value="Cancel" /> |
2347 | - </div> |
2348 | - </form> |
2349 | - </py:when> |
2350 | - |
2351 | - <py:when test="'delete'"> |
2352 | - <h1><a href="${url_of(parent)}">${name_of(parent)}</a>: $attachment.filename</h1> |
2353 | - <p><strong>Are you sure you want to delete this attachment?</strong><br /> |
2354 | - This is an irreversible operation.</p> |
2355 | - <div class="buttons"> |
2356 | - <form method="post" action=""> |
2357 | - <div id="delete"> |
2358 | - <input type="hidden" name="action" value="delete" /> |
2359 | - <input type="submit" name="cancel" value="Cancel" /> |
2360 | - <input type="submit" value="Delete attachment" /> |
2361 | - </div> |
2362 | - </form> |
2363 | - </div> |
2364 | - </py:when> |
2365 | - |
2366 | - <py:when test="'list'"> |
2367 | - <h1><a href="${url_of(parent)}">${name_of(parent)}</a></h1> |
2368 | - <py:with vars="context = context(parent)"> |
2369 | - ${list_of_attachments(attachments, add_button_title=_("Attach another file"))} |
2370 | - </py:with> |
2371 | - </py:when> |
2372 | - |
2373 | - <py:otherwise> <!--! 'render' mode --> |
2374 | - <h1><a href="${url_of(parent)}">${name_of(parent)}</a>: $attachment.filename</h1> |
2375 | - <table id="info" summary="Description"> |
2376 | - <tbody> |
2377 | - <tr> |
2378 | - <th scope="col"> |
2379 | - File $attachment.filename, ${sizeinfo(attachment.size)} |
2380 | - (added by ${authorinfo(attachment.author)}, ${dateinfo(attachment.date)} ago) |
2381 | - </th> |
2382 | - </tr> |
2383 | - <tr> |
2384 | - <td class="message searchable" xml:space="preserve"> |
2385 | - ${wiki_to_html(context(parent), attachment.description)} |
2386 | - </td> |
2387 | - </tr> |
2388 | - </tbody> |
2389 | - </table> |
2390 | - |
2391 | - <div py:if="preview" id="preview" class="searchable"> |
2392 | - ${preview_file(preview)} |
2393 | - </div> |
2394 | - |
2395 | - <py:if test="attachment and 'ATTACHMENT_DELETE' in perm(attachment.resource)"> |
2396 | - <div class="buttons"> |
2397 | - <form method="get" action=""> |
2398 | - <div id="delete"> |
2399 | - <input type="hidden" name="action" value="delete" /> |
2400 | - <input type="submit" value="${_('Delete attachment')}" /> |
2401 | - </div> |
2402 | - </form> |
2403 | - </div> |
2404 | - </py:if> |
2405 | - </py:otherwise> |
2406 | - |
2407 | - </div> |
2408 | - </body> |
2409 | -</html> |
2410 | |
2411 | === removed file 'trac-files/templates/diff_div.html' |
2412 | --- trac-files/templates/diff_div.html 2011-10-17 17:00:12 +0000 |
2413 | +++ trac-files/templates/diff_div.html 1970-01-01 00:00:00 +0000 |
2414 | @@ -1,227 +0,0 @@ |
2415 | -<!--! |
2416 | - changes - a list of diff items, each being a dict containing informations about |
2417 | - changes for one file: |
2418 | - .href - link for the title (optional) |
2419 | - .title - tooltip for the title link (optional) |
2420 | - .comments - annotation for the change (optional) |
2421 | - .new and .old - information about the files being diffed |
2422 | - .path - path of the file |
2423 | - .rev - rev of the file (for 'sidebyside') |
2424 | - .shortrev - abbreviated form of rev of the file (for 'inline') |
2425 | - .href - link to the full file (optional) |
2426 | - .props - a list of property changes |
2427 | - .name - name of the property |
2428 | - .diff - rendered difference |
2429 | - .old - old value of the property |
2430 | - .new - new value for the property |
2431 | - (both .old and .new have .name, .value and .rendered properties) |
2432 | - .diffs - a sequence of diff blocks, each block being a dict: |
2433 | - .type - one of 'unmod', 'add', 'rem' or 'mod' |
2434 | - .base and .changed - informations about lines from old and new content |
2435 | - .lines - the lines |
2436 | - .offset - position within the file |
2437 | - |
2438 | - diff - dict specifying diff style and options |
2439 | - .style - can be 'sidebyside' (4 columns) or 'inline' (3 columns) |
2440 | - .options - contexlines, various ignore... |
2441 | - |
2442 | - longcol - "long" column header; e.g. 'Revision' or 'File' or '' (for 'sidebyside') |
2443 | - shortcol - "short" column header: e.g. 'r' or '' (for 'inline') |
2444 | - no_id - skip generation of id attributes in h2 headings |
2445 | - |
2446 | ---> |
2447 | -<div xmlns="http://www.w3.org/1999/xhtml" |
2448 | - xmlns:py="http://genshi.edgewall.org/" |
2449 | - xmlns:xi="http://www.w3.org/2001/XInclude" |
2450 | - class="diff"> |
2451 | - |
2452 | - <ul py:if="any([item.diffs or item.props for item in changes])" class="entries"> |
2453 | - <py:for each="idx, item in enumerate(changes)"> |
2454 | - <li py:if="item.diffs or item.props" class="entry" py:with="comments = item.get('comments')"> |
2455 | - <h2 id="${not no_id and 'file%s' % idx or None}" py:choose=""> |
2456 | - <a py:when="item.new.path" title="${item.get('title', item.new.get('title'))}" |
2457 | - href="${item.get('href', item.new.get('href'))}">$item.new.path</a> |
2458 | - <py:otherwise> </py:otherwise> |
2459 | - </h2> |
2460 | - <pre py:if="comments">$comments</pre> |
2461 | - <ul py:if="item.props" class="props"> |
2462 | - <py:for each="prop in item.props" py:choose=""> |
2463 | - <py:when test="prop.diff">$prop.diff</py:when> |
2464 | - <py:with vars="one = prop.old or prop.new; |
2465 | - both = prop.old and prop.new; |
2466 | - action = both and 'changed from ' or not prop.old and 'set' or 'deleted'"> |
2467 | - <li py:when="one"> |
2468 | - Property <strong py:attrs="one.rendered and one.rendered.name_attributes"> |
2469 | - ${one.rendered and one.rendered.name or prop.name}</strong> $action |
2470 | - <py:def function="render_property(prop)"> |
2471 | - <py:choose> |
2472 | - <py:when test="prop.rendered">$prop.rendered.content</py:when> |
2473 | - <em py:when="istext(prop.value)"><tt>$prop.value</tt></em> |
2474 | - <py:otherwise>$prop.value</py:otherwise> |
2475 | - </py:choose> |
2476 | - </py:def> |
2477 | - <py:if test="prop.old and prop.new">${render_property(prop.old)}</py:if> |
2478 | - <py:if test="prop.new"> to ${render_property(prop.new)}</py:if> |
2479 | - </li> |
2480 | - </py:with> |
2481 | - </py:for> |
2482 | - </ul> |
2483 | - <table py:if="item.diffs" class="$diff.style" summary="Differences" cellspacing="0" |
2484 | - py:with="fromline = item.diffs[0][0].base.offset+1; |
2485 | - toline = item.diffs[0][0].changed.offset+1"> |
2486 | - <py:choose test="diff.style"> |
2487 | - <py:when test="'sidebyside'"> |
2488 | - <colgroup class="l"><col class="lineno" /><col class="content" /></colgroup> |
2489 | - <colgroup class="r"><col class="lineno" /><col class="content" /></colgroup> |
2490 | - <thead> |
2491 | - <tr> |
2492 | - <th colspan="2"> |
2493 | - <a title="${item.old.get('title')}" href="${item.old.get('href')}#L$fromline" |
2494 | - py:strip="'href' not in item.old">$longcol $item.old.rev</a> |
2495 | - </th> |
2496 | - <th colspan="2"> |
2497 | - <a title="${item.new.get('title')}" href="${item.new.get('href')}#L$toline" |
2498 | - py:strip="'href' not in item.new">$longcol $item.new.rev</a> |
2499 | - </th> |
2500 | - </tr> |
2501 | - </thead> |
2502 | - </py:when> |
2503 | - <py:when test="'inline'"> |
2504 | - <colgroup><col class="lineno" /><col class="lineno" /><col class="content" /></colgroup> |
2505 | - <thead> |
2506 | - <tr> |
2507 | - <th title="$longcol $item.old.rev"> |
2508 | - <a title="${item.old.get('title')}" href="${item.old.get('href')}#L$fromline" |
2509 | - py:strip="'href' not in item.old"> |
2510 | - $shortcol$item.old.shortrev</a> |
2511 | - </th> |
2512 | - <th title="$longcol $item.new.rev"> |
2513 | - <a title="${item.new.get('title')}" href="${item.new.get('href')}#L$toline" |
2514 | - py:strip="'href' not in item.new"> |
2515 | - $shortcol$item.new.shortrev</a> |
2516 | - </th> |
2517 | - <th> </th> |
2518 | - </tr> |
2519 | - </thead> |
2520 | - </py:when> |
2521 | - </py:choose> |
2522 | - <py:for each="idx, blocks in enumerate(item.diffs)"> |
2523 | - <tbody py:for="block in blocks" class="$block.type"> |
2524 | - <py:choose test="block.type"> |
2525 | - |
2526 | - <py:when test="'unmod'"> <!--! Show identical lines on both "sides" --> |
2527 | - <tr py:for="idx, line in enumerate(block.base.lines)"> |
2528 | - <py:with vars="from_n = block.base.offset+idx+1; to_n = block.changed.offset+idx+1; |
2529 | - clines = block.changed.lines"> |
2530 | - <py:choose test="diff.style"> |
2531 | - <py:when test="'sidebyside'"> |
2532 | - <th>$from_n</th><td class="l"><span>$line</span> </td> |
2533 | - <th>$to_n</th><td class="r"><span>${idx < len(clines) and clines[idx] or ''}</span> </td> |
2534 | - </py:when> |
2535 | - <py:when test="'inline'"> |
2536 | - <th>$from_n</th><th>$to_n</th><td class="l"><span>$line</span> </td> |
2537 | - </py:when> |
2538 | - </py:choose> |
2539 | - </py:with> |
2540 | - </tr> |
2541 | - </py:when> |
2542 | - |
2543 | - <py:when test="'add'"> <!--! Show only added lines, on the "right side" --> |
2544 | - <tr py:for="idx, line in enumerate(block.changed.lines)" |
2545 | - class="${diff.style == 'inline' and first_last(idx, block.changed.lines) or None}"> |
2546 | - <py:with vars="to_n = block.changed.offset+idx+1"> |
2547 | - <py:choose test="diff.style"> |
2548 | - <py:when test="'sidebyside'"> |
2549 | - <th> </th><td class="l"> </td> |
2550 | - <th>$to_n</th><td class="r"><ins>$line</ins> </td> |
2551 | - </py:when> |
2552 | - <py:when test="'inline'"> |
2553 | - <th> </th><th>$to_n</th><td class="r"><ins>$line</ins> </td> |
2554 | - </py:when> |
2555 | - </py:choose> |
2556 | - </py:with> |
2557 | - </tr> |
2558 | - </py:when> |
2559 | - |
2560 | - <py:when test="'rem'"> <!--! Show only deleted lines, on the "left side" --> |
2561 | - <tr py:for="idx, line in enumerate(block.base.lines)" |
2562 | - class="${diff.style == 'inline' and first_last(idx, block.base.lines) or None}"> |
2563 | - <py:with vars="from_n = block.base.offset+idx+1"> |
2564 | - <py:choose test="diff.style"> |
2565 | - <py:when test="'sidebyside'"> |
2566 | - <th>$from_n</th><td class="l"><del>$line</del> </td> |
2567 | - <th> </th><td class="r"> </td> |
2568 | - </py:when> |
2569 | - <py:when test="'inline'"> |
2570 | - <th>$from_n</th><th> </th><td class="l"><del>$line</del> </td> |
2571 | - </py:when> |
2572 | - </py:choose> |
2573 | - </py:with> |
2574 | - </tr> |
2575 | - </py:when> |
2576 | - |
2577 | - <py:when test="'mod'"> <!--! Show edited lines, on both "sides" --> |
2578 | - <py:choose test="diff.style"> |
2579 | - <py:when test="'sidebyside'"> |
2580 | - <py:choose> |
2581 | - <py:when test="len(block.base.lines) >= len(block.changed.lines)"> |
2582 | - <tr py:for="idx, line in enumerate(block.base.lines)"> |
2583 | - <th>${block.base.offset+idx+1}</th> |
2584 | - <td class="l"><span>$line</span> </td> |
2585 | - <py:with vars="within_change = idx < len(block.changed.lines)"> |
2586 | - <th>${within_change and block.changed.offset+idx+1 or ' '}</th> |
2587 | - <td class="r"><span py:if="within_change">${block.changed.lines[idx]}</span> </td> |
2588 | - </py:with> |
2589 | - </tr> |
2590 | - </py:when> |
2591 | - <py:otherwise> <!--! there are more changed lines than original lines --> |
2592 | - <tr py:for="idx, line in enumerate(block.changed.lines)"> |
2593 | - <py:with vars="within_change = idx < len(block.base.lines)"> |
2594 | - <th>${within_change and block.base.offset+idx+1 or ' '}</th> |
2595 | - <td class="l"><span py:if="within_change">${block.base.lines[idx]}</span> </td> |
2596 | - </py:with> |
2597 | - <th>${block.changed.offset+idx+1}</th> |
2598 | - <td class="r"><span>$line</span> </td> |
2599 | - </tr> |
2600 | - </py:otherwise> |
2601 | - </py:choose> |
2602 | - </py:when> |
2603 | - <py:when test="'inline'"> |
2604 | - <!--! First show the "old" lines --> |
2605 | - <tr py:for="idx, line in enumerate(block.base.lines)" |
2606 | - class="${idx == 0 and 'first' or None}"> |
2607 | - <th>${block.base.offset+idx+1}</th><th> </th><td class="l"><span>$line</span> </td> |
2608 | - </tr> |
2609 | - <!--! Then show the "new" lines --> |
2610 | - <tr py:for="idx, line in enumerate(block.changed.lines)" |
2611 | - class="${idx + 1 == len(block.changed.lines) and 'last' or None}"> |
2612 | - <th> </th><th>${block.changed.offset+idx+1}</th><td class="r"><span>$line</span> </td> |
2613 | - </tr> |
2614 | - </py:when> |
2615 | - </py:choose> |
2616 | - </py:when> |
2617 | - |
2618 | - </py:choose> |
2619 | - </tbody> |
2620 | - <py:if test="idx < len(item.diffs) - 1"> |
2621 | - <tbody class="skipped" py:choose="diff.style" |
2622 | - py:with="fromline = item.diffs[idx+1][0].base.offset+1; |
2623 | - toline = item.diffs[idx+1][0].changed.offset+1"> |
2624 | - <tr py:when="'sidebyside'"> |
2625 | - <th><a href="$item.old.href#L$fromline">…</a></th><td> </td> |
2626 | - <th><a href="$item.new.href#L$toline">…</a></th><td> </td> |
2627 | - </tr> |
2628 | - <tr py:when="'inline'"> |
2629 | - <th><a href="$item.old.href#L$fromline">…</a></th> |
2630 | - <th><a href="$item.new.href#L$toline">…</a></th> |
2631 | - <td> </td> |
2632 | - </tr> |
2633 | - </tbody> |
2634 | - </py:if> |
2635 | - </py:for> |
2636 | - </table> |
2637 | - </li> |
2638 | - </py:for> |
2639 | - </ul> |
2640 | - |
2641 | -</div> |
2642 | |
2643 | === removed file 'trac-files/templates/diff_view.html' |
2644 | --- trac-files/templates/diff_view.html 2011-10-17 17:00:12 +0000 |
2645 | +++ trac-files/templates/diff_view.html 1970-01-01 00:00:00 +0000 |
2646 | @@ -1,71 +0,0 @@ |
2647 | -<!DOCTYPE html |
2648 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2649 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2650 | -<html xmlns="http://www.w3.org/1999/xhtml" |
2651 | - xmlns:py="http://genshi.edgewall.org/" |
2652 | - xmlns:xi="http://www.w3.org/2001/XInclude"> |
2653 | - <xi:include href="layout.html" /> |
2654 | - <xi:include href="macros.html" /> |
2655 | - <head> |
2656 | - <title>$title</title> |
2657 | - <link rel="stylesheet" type="text/css" href="${chrome.htdocs_location}css/diff.css" /> |
2658 | - <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" /> |
2659 | - </head> |
2660 | - |
2661 | - <body> |
2662 | - <div id="content" class="${resource.realm}"> |
2663 | - <h1 py:choose="">Changes |
2664 | - <py:when test="old_version">between |
2665 | - <a href="${url_of(resource, version=old_version)}">Version $old_version</a> and |
2666 | - </py:when> |
2667 | - <py:when test="old_version == 0">between |
2668 | - <a href="${url_of(resource, version=0)}">Initial Version</a> and |
2669 | - </py:when> |
2670 | - <py:otherwise>from</py:otherwise> |
2671 | - <a href="${url_of(resource, version=new_version)}">Version $new_version</a> of |
2672 | - <a href="${url_of(resource)}">${name_of(resource)}</a> |
2673 | - </h1> |
2674 | - <form method="post" id="prefs" action="${url_of(resource)}"> |
2675 | - <div> |
2676 | - <input type="hidden" name="action" value="diff" /> |
2677 | - <input type="hidden" name="version" value="$new_version" /> |
2678 | - <input type="hidden" name="old_version" value="$old_version" /> |
2679 | - ${diff_options_fields(diff)} |
2680 | - </div> |
2681 | - </form> |
2682 | - <dl id="overview" py:with="multi = num_changes > 1"> |
2683 | - <dt class="property time">Timestamp:</dt> |
2684 | - <dd class="time" py:choose=""> |
2685 | - <em py:when="multi" class="multi">(multiple changes)</em> |
2686 | - <py:when test="change.date">${format_datetime(change.date)} (${dateinfo(change.date)} ago)</py:when> |
2687 | - <py:otherwise>--</py:otherwise> |
2688 | - </dd> |
2689 | - <dt class="property author">Author:</dt> |
2690 | - <dd class="author" py:choose=""> |
2691 | - <em py:when="multi" class="multi">(multiple changes)</em> |
2692 | - <py:otherwise>${authorinfo(change.author)} |
2693 | - <span py:if="show_ip_addresses and 'ipnr' in change" class="ipnr">(IP: $change.ipnr)</span></py:otherwise> |
2694 | - </dd> |
2695 | - <dt class="property message">Comment:</dt> |
2696 | - <dd class="message" py:choose="" xml:space="preserve"> |
2697 | - <em py:when="multi" class="multi">(multiple changes)</em> |
2698 | - <py:otherwise>${wiki_to_html(context(resource), change.comment)}</py:otherwise> |
2699 | - </dd> |
2700 | - </dl> |
2701 | - <div class="diff"> |
2702 | - <div class="legend" id="diff-legend"> |
2703 | - <h3>Legend:</h3> |
2704 | - <dl> |
2705 | - <dt class="unmod"></dt><dd>Unmodified</dd> |
2706 | - <dt class="add"></dt><dd>Added</dd> |
2707 | - <dt class="rem"></dt><dd>Removed</dd> |
2708 | - <dt class="mod"></dt><dd>Modified</dd> |
2709 | - </dl> |
2710 | - </div> |
2711 | - |
2712 | - <xi:include href="diff_div.html" py:with="no_id=False"/> |
2713 | - |
2714 | - </div> |
2715 | - </div> |
2716 | - </body> |
2717 | -</html> |
2718 | |
2719 | === removed file 'trac-files/templates/error.html' |
2720 | --- trac-files/templates/error.html 2011-10-17 17:00:12 +0000 |
2721 | +++ trac-files/templates/error.html 1970-01-01 00:00:00 +0000 |
2722 | @@ -1,200 +0,0 @@ |
2723 | -<!DOCTYPE html |
2724 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2725 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2726 | -<html xmlns="http://www.w3.org/1999/xhtml" |
2727 | - xmlns:py="http://genshi.edgewall.org/" |
2728 | - xmlns:xi="http://www.w3.org/2001/XInclude"> |
2729 | - <xi:include href="layout.html" /> |
2730 | - <head> |
2731 | - <title>${title or 'Error'}</title> |
2732 | - <script py:if="frames" type="text/javascript">/*<![CDATA[*/ |
2733 | - jQuery(document).ready(function($) { |
2734 | - $("#traceback a").click(function() { |
2735 | - $("div", this.parentNode).slideToggle("fast"); |
2736 | - return false; |
2737 | - }); |
2738 | - $("#tbtoggle").click(function() { |
2739 | - if (this.value.indexOf("interactive") < 0) { |
2740 | - this.value = "Switch to interactive view"; |
2741 | - $("#traceback ul").fadeOut("fast", function() { |
2742 | - $("#traceback pre").fadeIn("fast"); |
2743 | - }); |
2744 | - } else { |
2745 | - this.value = "Switch to plain text view"; |
2746 | - $("#traceback pre").fadeOut("fast", function() { |
2747 | - $("#traceback ul").fadeIn("fast"); |
2748 | - }); |
2749 | - } |
2750 | - return false; |
2751 | - }); |
2752 | - /* Only activate interactive view if Javascript is enabled */ |
2753 | - $("#traceback ul").show(); |
2754 | - $("#traceback pre").hide(); |
2755 | - $("#tbtoggle").parent().show(); |
2756 | - |
2757 | - $("#systeminfo").append("<tr><th>jQuery:</th><td>"+$().jquery+"</td></tr>"); |
2758 | - $("#systeminfo").before("<p>User Agent: <tt>"+navigator.userAgent+"</tt></p>"); |
2759 | - }); |
2760 | - /*]]>*/</script> |
2761 | - <script type="text/javascript">/*<![CDATA[*/ |
2762 | - jQuery(document).ready(function($) { |
2763 | - var descr = $("#description").text(); |
2764 | - descr = descr.replace(/==== System Information ====\s+/m, |
2765 | - "User Agent was: `" + navigator.userAgent + "`\n\n$&" |
2766 | - ); |
2767 | - descr = descr.replace(/\|\|\s+==== Python Traceback ====/m, |
2768 | - "||\n|| '''jQuery:''' || `" + $().jquery + "` $&" |
2769 | - ); |
2770 | - $("#description").text(descr); |
2771 | - }); |
2772 | - /*]]>*/</script> |
2773 | - </head> |
2774 | - |
2775 | - <py:def function="create_ticket(teo=False)"> |
2776 | - <input type="hidden" name="reporter" value="${get_reporter_id(req)}" /> |
2777 | - <input py:if="teo" type="hidden" name="version" |
2778 | - value="${'dev' in trac.version and 'devel' or trac.version}" /> |
2779 | - <input type="hidden" name="summary" value="$message" /> |
2780 | - <textarea id="description" name="description" rows="3" cols="10"> |
2781 | - |
2782 | -==== How to Reproduce ==== |
2783 | - |
2784 | -While doing a $req.method operation on `$req.path_info`, Trac issued an internal error. |
2785 | - |
2786 | -''(please provide additional details here)'' |
2787 | - |
2788 | -<py:if test="req.args"> |
2789 | -Request parameters: |
2790 | -{{{ |
2791 | -${pprint(req.args)} |
2792 | -}}} |
2793 | -</py:if> |
2794 | - |
2795 | -==== System Information ==== |
2796 | -<py:for each="k, v in trac.systeminfo"> |
2797 | -|| '''$k''' || ${'`%s`' % (v and v.replace('\n', '` [[br]] `'))} ||</py:for> |
2798 | - |
2799 | -==== Python Traceback ==== |
2800 | -{{{ |
2801 | -${traceback} |
2802 | -}}} |
2803 | - </textarea> |
2804 | - <span class="inlinebuttons"> |
2805 | - <input type="submit" name="create" value="Create" /> |
2806 | - </span> |
2807 | - </py:def> |
2808 | - |
2809 | - <body> |
2810 | - <div id="content" class="error"> |
2811 | - <py:choose test="type"> |
2812 | - <py:when test="'TracError'"> |
2813 | - <h1>$title</h1> |
2814 | - <py:choose test=""> |
2815 | - <p py:when="istext(message)" class="message">$message</p> |
2816 | - <py:otherwise>$message</py:otherwise> |
2817 | - </py:choose> |
2818 | - </py:when> |
2819 | - <py:when test="'internal'"> |
2820 | - <h1>Oops…</h1> |
2821 | - <div class="message"> |
2822 | - <strong>Trac detected an internal error:</strong> |
2823 | - <pre>$message</pre> |
2824 | - </div> |
2825 | - <py:choose> |
2826 | - <py:when test="'TRAC_ADMIN' not in perm"> |
2827 | - <p>There was an internal error in Trac. It is recommended |
2828 | - that you inform your local |
2829 | - <a py:strip="not project.admin" href="mailto:${project.admin}">Trac |
2830 | - administrator</a> and give him all the information he needs to |
2831 | - reproduce the issue. |
2832 | - </p> |
2833 | - <form py:if="project.admin_href" |
2834 | - class="newticket" method="get" action="${project.admin_href.newticket()}#"> |
2835 | - <p>To that end, you could ${create_ticket()} a ticket.</p> |
2836 | - </form> |
2837 | - <p>The action that triggered the error was:</p> |
2838 | - <pre>${req.method}: ${req.path_info}</pre> |
2839 | - </py:when> |
2840 | - <py:otherwise> |
2841 | - <form class="newticket" method="get" action="${project.admin_href.newticket()}#"> |
2842 | - <p>This is probably a local installation issue. |
2843 | - <py:if test="project.admin_href and project.admin_trac_url != '.'"> |
2844 | - You should ${create_ticket()} a ticket at the admin Trac to report |
2845 | - the issue. |
2846 | - </py:if> |
2847 | - </p> |
2848 | - </form> |
2849 | - <h2>Found a bug in Trac?</h2> |
2850 | - <p>If you think this should work and you can reproduce the problem, |
2851 | - you should consider reporting this to the Trac team.</p> |
2852 | - <p>Before you do that, though, <strong>please first try |
2853 | - <a py:with="q = quote_plus(message[:80])" |
2854 | - href="${trac.homepage}search?ticket=yes&noquickjump=1&q=$q">searching</a> |
2855 | - for similar issues</strong>, as it is quite likely that this problem |
2856 | - has been reported before. For questions about installation |
2857 | - and configuration of Trac, please try the |
2858 | - <a href="${trac.homepage}wiki/MailingList">mailing list</a> |
2859 | - instead of filing a ticket. |
2860 | - </p> |
2861 | - <form class="newticket" method="get" action="${trac.homepage}newticket"> |
2862 | - <p>Otherwise, please ${create_ticket(True)} a new ticket at |
2863 | - the Trac project site, where you can describe the problem and |
2864 | - explain how to reproduce it.</p> |
2865 | - </form> |
2866 | - <py:if test="traceback"> |
2867 | - <h2>Python Traceback</h2> |
2868 | - <div id="traceback"> |
2869 | - Most recent call last: |
2870 | - <ul py:if="frames" style="display: none"> |
2871 | - <li class="frame" py:for="idx, frame in enumerate(frames)"> |
2872 | - <a href="#frame${idx}" id="frame${idx}"> |
2873 | - <span class="file">File "${frame.filename}", |
2874 | - line <b>${frame.lineno + 1}</b>, in</span> |
2875 | - <var>${frame.function}</var> |
2876 | - </a> |
2877 | - <div py:if="frame.line" class="source" style="display: none"> |
2878 | - <h3>Code fragment:</h3> |
2879 | - <ol start="${frame.lineno + 1 - len(frame.lines_before)}"> |
2880 | - <li py:for="line in frame.lines_before"><code>${line or u'\xa0'}</code></li> |
2881 | - <li class="current"><code>${frame.line or u'\xa0'}</code></li> |
2882 | - <li py:for="line in frame.lines_after"><code>${line or u'\xa0'}</code></li> |
2883 | - </ol> |
2884 | - </div> |
2885 | - <div py:if="frame.vars" class="vars" style="display: none"> |
2886 | - <h3>Local variables:</h3> |
2887 | - <table class="listing"> |
2888 | - <thead><tr><th>Name</th><th>Value</th></tr></thead> |
2889 | - <tbody> |
2890 | - <tr py:for="idx, (name, value) in enumerate(sorted(frame.vars.items()))" |
2891 | - class="${idx % 2 and 'odd' or None}"> |
2892 | - <th scope="row"><var>$name</var></th> |
2893 | - <td><code>${shorten_line(repr(value))}</code></td> |
2894 | - </tr> |
2895 | - </tbody> |
2896 | - </table> |
2897 | - </div> |
2898 | - </li> |
2899 | - </ul> |
2900 | - <pre><py:for each="frame in frames">File "${frame.filename}", line ${frame.lineno + 1}, in ${frame.function}<py:if test="frame.line"> |
2901 | - ${frame.line.lstrip()} |
2902 | -</py:if></py:for><py:if test="not frames">${traceback}</py:if></pre> |
2903 | - <p style="display: none"><input type="button" id="tbtoggle" value="Switch to plain text view" /></p> |
2904 | - </div> |
2905 | - </py:if> |
2906 | - <h2>System Information:</h2> |
2907 | - <table class="listing" id="systeminfo"> |
2908 | - <tr py:for="name, value in trac.systeminfo"> |
2909 | - <th>$name:</th> |
2910 | - <td>$value</td> |
2911 | - </tr> |
2912 | - </table> |
2913 | - </py:otherwise> |
2914 | - </py:choose> |
2915 | - </py:when> |
2916 | - </py:choose> |
2917 | - <p> |
2918 | - <a href="${href.wiki('TracGuide')}">TracGuide</a> — The Trac User and Administration Guide |
2919 | - </p> |
2920 | - </div> |
2921 | - </body> |
2922 | -</html> |
2923 | |
2924 | === removed file 'trac-files/templates/history_view.html' |
2925 | --- trac-files/templates/history_view.html 2011-10-17 17:00:12 +0000 |
2926 | +++ trac-files/templates/history_view.html 1970-01-01 00:00:00 +0000 |
2927 | @@ -1,57 +0,0 @@ |
2928 | -<!DOCTYPE html |
2929 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2930 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2931 | -<html xmlns="http://www.w3.org/1999/xhtml" |
2932 | - xmlns:py="http://genshi.edgewall.org/" |
2933 | - xmlns:xi="http://www.w3.org/2001/XInclude"> |
2934 | - <xi:include href="layout.html" /> |
2935 | - <xi:include href="macros.html" /> |
2936 | - <head> |
2937 | - <title>$title</title> |
2938 | - </head> |
2939 | - |
2940 | - <body> |
2941 | - <div id="content" class="ticket"> |
2942 | - <h1>Change History for <a href="${url_of(resource)}">${name_of(resource)}</a></h1> |
2943 | - |
2944 | - <form py:if="history" class="printableform" method="get" action=""> |
2945 | - <div class="buttons"> |
2946 | - <input type="hidden" name="action" value="diff" /> |
2947 | - <input type="submit" value="View changes" /> |
2948 | - </div> |
2949 | - <table id="fieldhist" class="listing" summary="Change history"> |
2950 | - <thead> |
2951 | - <tr> |
2952 | - <th class="diff"></th> |
2953 | - <th class="version">Version</th> |
2954 | - <th class="date">Date</th> |
2955 | - <th class="author">Author</th> |
2956 | - <th class="comment">Comment</th> |
2957 | - </tr> |
2958 | - </thead> |
2959 | - <tbody> |
2960 | - <tr py:for="idx, item in enumerate(history)" class="${idx % 2 and 'odd' or 'even'}"> |
2961 | - <td class="diff"> |
2962 | - <input type="radio" name="old_version" value="$item.version" |
2963 | - checked="${idx == 1 or None}" /> |
2964 | - <input type="radio" name="version" value="$item.version" |
2965 | - checked="${idx == 0 or None}" /> |
2966 | - </td> |
2967 | - <td class="version"> |
2968 | - <a href="${url_of(resource, version=item.version)}" title="View this version">$item.version</a> |
2969 | - </td> |
2970 | - <td class="date">${dateinfo(item.date)}</td> |
2971 | - <td class="author" title="${show_ip_addresses and item.ipnr and 'IP-Address: ' + item.ipnr or None}">${authorinfo(item.author)}</td> |
2972 | - <td class="comment">${wiki_to_oneliner(context(resource), item.comment, shorten=True)}</td> |
2973 | - </tr> |
2974 | - </tbody> |
2975 | - </table> |
2976 | - <py:if test="len(history) > 10"> |
2977 | - <div class="buttons"> |
2978 | - <input type="submit" value="View changes" /> |
2979 | - </div> |
2980 | - </py:if> |
2981 | - </form> |
2982 | - </div> |
2983 | - </body> |
2984 | -</html> |
2985 | |
2986 | === removed file 'trac-files/templates/index.html' |
2987 | --- trac-files/templates/index.html 2011-10-17 17:00:12 +0000 |
2988 | +++ trac-files/templates/index.html 1970-01-01 00:00:00 +0000 |
2989 | @@ -1,23 +0,0 @@ |
2990 | -<!DOCTYPE html |
2991 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
2992 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
2993 | -<html xmlns="http://www.w3.org/1999/xhtml" |
2994 | - xmlns:py="http://genshi.edgewall.org/" |
2995 | - xmlns:xi="http://www.w3.org/2001/XInclude"> |
2996 | - <head> |
2997 | - <title>Available Projects</title> |
2998 | - </head> |
2999 | - |
3000 | - <body> |
3001 | - <h1>Available Projects</h1> |
3002 | - <ul> |
3003 | - <li py:for="project in projects" py:choose=""> |
3004 | - <a py:when="'href' in project" href="$project.href" |
3005 | - title="$project.description">$project.name</a> |
3006 | - <py:otherwise> |
3007 | - <small>$project.name: <em>Error</em> <br /> ($project.description)</small> |
3008 | - </py:otherwise> |
3009 | - </li> |
3010 | - </ul> |
3011 | - </body> |
3012 | -</html> |
3013 | |
3014 | === removed file 'trac-files/templates/layout.html' |
3015 | --- trac-files/templates/layout.html 2011-10-17 17:00:12 +0000 |
3016 | +++ trac-files/templates/layout.html 1970-01-01 00:00:00 +0000 |
3017 | @@ -1,57 +0,0 @@ |
3018 | -<!DOCTYPE html |
3019 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
3020 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
3021 | -<html xmlns="http://www.w3.org/1999/xhtml" |
3022 | - xmlns:xi="http://www.w3.org/2001/XInclude" |
3023 | - xmlns:py="http://genshi.edgewall.org/" |
3024 | - py:strip=""> |
3025 | - |
3026 | - <py:match path="head" once="true"><head> |
3027 | - <title py:with="title = list(select('title/text()'))"> |
3028 | - <py:if test="title">${title} – </py:if>${project.name or 'Trac'} |
3029 | - </title> |
3030 | - <meta name="ROBOTS" content="NOODP" /> |
3031 | - <meta name="Description" content="An event-driven networking engine written in Python and MIT licensed." /> |
3032 | - <py:if test="chrome.links"> |
3033 | - <py:for each="rel, links in chrome.links.items()"> |
3034 | - <link rel="${rel}" py:for="link in links" py:attrs="link" /> |
3035 | - </py:for> |
3036 | - </py:if> |
3037 | - <py:if test="'SEARCH_VIEW' in perm" id="search"> |
3038 | - <link type="application/opensearchdescription+xml" rel="search" |
3039 | - href="${href.search('opensearch')}" title="Search $project.name"/> |
3040 | - </py:if> |
3041 | - <script py:for="script in chrome.scripts" |
3042 | - type="${script.type}" src="${script.href}"></script> |
3043 | - ${Markup('<!--[if lt IE 7]>')} |
3044 | - <script type="text/javascript" src="${chrome.htdocs_location}js/ie_pre7_hacks.js"></script> |
3045 | - ${Markup('<![endif]-->')} |
3046 | - ${select("*[local-name() != 'title']")} |
3047 | - </head></py:match> |
3048 | - |
3049 | - <py:match path="body" once="true" buffer="false"><body> |
3050 | - ${select('*|text()')} |
3051 | - |
3052 | - <script type="text/javascript" py:if="chrome.late_links"> |
3053 | - <py:for each="link in chrome.late_links.get('stylesheet')"> |
3054 | - jQuery.loadStyleSheet("${link.href}", "${link.type}"); |
3055 | - </py:for> |
3056 | - </script> |
3057 | - <script py:for="script in chrome.late_scripts" |
3058 | - type="${script.type}" src="${script.href}"></script> |
3059 | - |
3060 | - <div id="altlinks" py:if="'alternate' in chrome.links"> |
3061 | - <h3>Download in other formats:</h3> |
3062 | - <ul> |
3063 | - <li py:for="idx, link in enumerate(chrome.links.alternate)" |
3064 | - class="${first_last(idx, chrome.links.alternate)}"> |
3065 | - <a rel="nofollow" href="${link.href}" class="${link['class']}" |
3066 | - py:content="link.title" /> |
3067 | - </li> |
3068 | - </ul> |
3069 | - </div> |
3070 | - </body></py:match> |
3071 | - |
3072 | - <xi:include href="$chrome.theme"><xi:fallback /></xi:include> |
3073 | - <xi:include href="site.html"><xi:fallback /></xi:include> |
3074 | -</html> |
3075 | |
3076 | === removed file 'trac-files/templates/macros.cs' |
3077 | --- trac-files/templates/macros.cs 2011-10-17 17:00:12 +0000 |
3078 | +++ trac-files/templates/macros.cs 1970-01-01 00:00:00 +0000 |
3079 | @@ -1,197 +0,0 @@ |
3080 | -<?cs def:hdf_select(options, name, selected, optional) ?> |
3081 | - <select size="1" id="<?cs var:name ?>" name="<?cs var:name ?>"><?cs |
3082 | - if:optional ?><option></option><?cs /if ?><?cs |
3083 | - each:option = options ?> |
3084 | - <option<?cs if:option == selected ?> selected="selected"<?cs /if ?>><?cs |
3085 | - var:option ?></option><?cs |
3086 | - /each ?> |
3087 | - </select><?cs |
3088 | -/def?><?cs |
3089 | - |
3090 | -def:labelled_hdf_select(label, options, name, selected, optional) ?><?cs |
3091 | - if:len(options) > #0 ?> |
3092 | - <label for="<?cs var:name ?>"><?cs var:label ?></label><?cs |
3093 | - call:hdf_select(options, name, selected, optional) ?> |
3094 | - </label> |
3095 | - <br /><?cs |
3096 | - /if ?><?cs |
3097 | -/def ?><?cs |
3098 | - |
3099 | -def:browser_path_links(path, file) ?><?cs |
3100 | - set:first = #1 ?><?cs |
3101 | - each:part = path ?><?cs |
3102 | - set:last = name(part) == len(path) - #1 ?><a<?cs |
3103 | - if:first ?> class="first" title="Go to root directory"<?cs |
3104 | - set:first = #0 ?><?cs |
3105 | - else ?> title="View <?cs var:part.name ?>"<?cs |
3106 | - /if ?> href="<?cs var:part.href ?>"><?cs var:part.name ?></a><?cs |
3107 | - if:!last ?><span class="sep">/</span><?cs /if ?><?cs |
3108 | - /each ?><?cs |
3109 | -/def ?><?cs |
3110 | - |
3111 | -def:diff_line_class(block, line) ?><?cs |
3112 | - set:first = name(line) == 0 ?><?cs |
3113 | - set:last = name(line) + 1 == len(block.lines) ?><?cs |
3114 | - if:first || last ?> class="<?cs |
3115 | - if:first ?>first<?cs /if ?><?cs |
3116 | - if:first && last ?> <?cs /if ?><?cs |
3117 | - if:last ?>last<?cs /if ?>"<?cs |
3118 | - /if ?><?cs |
3119 | -/def ?><?cs |
3120 | - |
3121 | -def:diff_display(diff, style) ?><?cs |
3122 | - if:style == 'sidebyside' ?><?cs |
3123 | - each:block = diff ?><?cs |
3124 | - if:block.type == 'unmod' ?><tbody><?cs |
3125 | - each:line = block.base.lines ?><tr><th><?cs |
3126 | - var:#block.base.offset + name(line) + 1 ?></th><td class="l"><span><?cs |
3127 | - var:line ?></span> </td><th><?cs |
3128 | - var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><span><?cs |
3129 | - var:block.changed.lines[name(line)] ?></span> </td></tr><?cs |
3130 | - /each ?></tbody><?cs |
3131 | - elif:block.type == 'mod' ?><tbody class="mod"><?cs |
3132 | - if:len(block.base.lines) >= len(block.changed.lines) ?><?cs |
3133 | - each:line = block.base.lines ?><tr><th><?cs |
3134 | - var:#block.base.offset + name(line) + 1 ?></th><td class="l"><?cs |
3135 | - var:line ?> </td><?cs |
3136 | - if:len(block.changed.lines) >= name(line) + 1 ?><?cs |
3137 | - each:changedline = block.changed.lines ?><?cs |
3138 | - if:name(changedline) == name(line) ?><th><?cs |
3139 | - var:#block.changed.offset + name(changedline) + 1 ?></th><td class="r"><?cs |
3140 | - var:changedline ?> </td><?cs |
3141 | - /if ?><?cs |
3142 | - /each ?><?cs |
3143 | - else ?><th> </th><td class="r"> </td><?cs |
3144 | - /if ?></tr><?cs |
3145 | - /each ?><?cs |
3146 | - else ?><?cs |
3147 | - each:line = block.changed.lines ?><tr><?cs |
3148 | - if:len(block.base.lines) >= name(line) + 1 ?><?cs |
3149 | - each:baseline = block.base.lines ?><?cs |
3150 | - if:name(baseline) == name(line) ?><th><?cs |
3151 | - var:#block.base.offset + name(baseline) + 1 ?></th><td class="l"><?cs |
3152 | - var:baseline ?> </td><?cs |
3153 | - /if ?><?cs |
3154 | - /each ?><?cs |
3155 | - else ?><th> </th><td class="l"> </td><?cs |
3156 | - /if ?> |
3157 | - <th><?cs var:#block.changed.offset + name(line) + 1 ?></th> |
3158 | - <td class="r"><?cs var:line ?> </td></tr><?cs |
3159 | - /each ?><?cs |
3160 | - /if ?></tbody><?cs |
3161 | - elif:block.type == 'add' ?><tbody class="add"><?cs |
3162 | - each:line = block.changed.lines ?><tr><th> </th><td class="l"> </td><th><?cs |
3163 | - var:#block.changed.offset + name(line) + 1 ?></th><td class="r"><ins><?cs |
3164 | - var:line ?></ins> </td></tr><?cs |
3165 | - /each ?><?cs |
3166 | - elif:block.type == 'rem' ?><tbody class="rem"><?cs |
3167 | - each:line = block.base.lines ?><tr><th><?cs |
3168 | - var:#block.base.offset + name(line) + 1 ?></th><td class="l"><del><?cs |
3169 | - var:line ?></del> </td><th> </th><td class="r"> </td></tr><?cs |
3170 | - /each ?><?cs |
3171 | - /if ?></tbody><?cs |
3172 | - /each ?><?cs |
3173 | - else ?><?cs |
3174 | - each:block = diff ?><?cs |
3175 | - if:block.type == 'unmod' ?><tbody><?cs |
3176 | - each:line = block.base.lines ?><tr><th><?cs |
3177 | - var:#block.base.offset + name(line) + #1 ?></th><th><?cs |
3178 | - var:#block.changed.offset + name(line) + #1 ?></th><td class="l"><span><?cs |
3179 | - var:line ?></span> </td></tr><?cs |
3180 | - /each ?></tbody><?cs |
3181 | - elif:block.type == 'mod' ?><tbody class="mod"><?cs |
3182 | - each:line = block.base.lines ?><tr<?cs |
3183 | - if:name(line) == 0 ?> class="first"<?cs /if ?>><th><?cs |
3184 | - var:#block.base.offset + name(line) + #1 ?></th><th> </th><td class="l"><?cs |
3185 | - var:line ?> </td></tr><?cs |
3186 | - /each ?><?cs |
3187 | - each:line = block.changed.lines ?><tr<?cs |
3188 | - if:name(line) + 1 == len(block.changed.lines) ?> class="last"<?cs /if ?>><th> </th><th><?cs |
3189 | - var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><?cs |
3190 | - var:line ?> </td></tr><?cs |
3191 | - /each ?></tbody><?cs |
3192 | - elif:block.type == 'add' ?><tbody class="add"><?cs |
3193 | - each:line = block.changed.lines ?><tr<?cs |
3194 | - call:diff_line_class(block.changed, line) ?>><th> </th><th><?cs |
3195 | - var:#block.changed.offset + name(line) + #1 ?></th><td class="r"><ins><?cs |
3196 | - var:line ?></ins> </td></tr><?cs |
3197 | - /each ?></tbody><?cs |
3198 | - elif:block.type == 'rem' ?><tbody class="rem"><?cs |
3199 | - each:line = block.base.lines ?><tr<?cs |
3200 | - call:diff_line_class(block.base, line) ?>><th><?cs |
3201 | - var:#block.base.offset + name(line) + 1 ?></th><th> </th><td class="l"><del><?cs |
3202 | - var:line ?></del> </td></tr><?cs |
3203 | - /each ?></tbody><?cs |
3204 | - /if ?><?cs |
3205 | - /each ?><?cs |
3206 | - /if ?><?cs |
3207 | -/def ?><?cs |
3208 | - |
3209 | -def:ticket_custom_props(ticket) ?><?cs |
3210 | - each c=ticket.custom ?> |
3211 | - <div class="field custom_<?cs var c.name ?>"><?cs |
3212 | - if c.type == 'text' ?> |
3213 | - <label> |
3214 | - <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: |
3215 | - <input type="text" name="custom_<?cs var c.name ?>" value="<?cs var c.value ?>" /> |
3216 | - </label><?cs |
3217 | - elif c.type == 'textarea' ?> |
3218 | - <label> |
3219 | - <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:<br /> |
3220 | - <textarea cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs |
3221 | - alt c.height ?>12<?cs /alt ?>" name="custom_<?cs var c.name ?>"><?cs |
3222 | - var c.value ?></textarea> |
3223 | - </label><?cs |
3224 | - elif c.type == 'checkbox' ?> |
3225 | - <input type="hidden" name="checkbox_<?cs var c.name ?>" /> |
3226 | - <label> |
3227 | - <input type="checkbox" name="custom_<?cs var c.name ?>" value="1"<?cs |
3228 | - if c.selected ?> checked="checked"<?cs /if ?> /> |
3229 | - <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?> |
3230 | - </label><?cs |
3231 | - elif c.type == 'select' ?> |
3232 | - <label> |
3233 | - <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>: |
3234 | - <select name="custom_<?cs var c.name ?>"><?cs each v = c.option ?> |
3235 | - <option<?cs if v.selected ?> selected="selected"<?cs /if ?>><?cs |
3236 | - var v ?></option><?cs /each ?> |
3237 | - </select> |
3238 | - </label><?cs |
3239 | - elif c.type == 'radio' ?> |
3240 | - <fieldset class="radio"> |
3241 | - <legend><?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</legend><?cs |
3242 | - each v = c.option ?> |
3243 | - <label><input type="radio" name="custom_<?cs var c.name ?>" value="<?cs |
3244 | - var v ?>"<?cs if v.selected ?> checked="checked"<?cs /if ?> /> <?cs |
3245 | - var v ?></label><?cs |
3246 | - /each ?> |
3247 | - </fieldset><?cs |
3248 | - /if ?> |
3249 | - </div><?cs |
3250 | - /each ?><?cs |
3251 | -/def ?><?cs |
3252 | - |
3253 | -def:list_of_attachments(attachments, attach_href) ?> |
3254 | -<h2>Attachments</h2><?cs |
3255 | - if:len(attachments) ?><div id="attachments"> |
3256 | - <dl class="attachments"><?cs each:attachment = attachments ?> |
3257 | - <dt><a href="<?cs var:attachment.href ?>" title="View attachment"><?cs |
3258 | - var:attachment.filename ?></a> (<?cs var:attachment.size ?>) - added by <em><?cs |
3259 | - var:attachment.author ?></em> on <?cs |
3260 | - var:attachment.time ?>.</dt><?cs |
3261 | - if:attachment.description ?> |
3262 | - <dd><?cs var:attachment.description ?></dd><?cs |
3263 | - /if ?><?cs |
3264 | - /each ?></dl><?cs |
3265 | - /if ?><?cs |
3266 | - if:attach_href ?> |
3267 | - <form method="get" action="<?cs var:attach_href ?>"><div> |
3268 | - <input type="hidden" name="action" value="new" /> |
3269 | - <input type="submit" value="Attach File" /> |
3270 | - </div></form><?cs |
3271 | - /if ?><?cs if:len(attachments) ?></div><?cs /if ?><?cs |
3272 | -/def ?><?cs |
3273 | - |
3274 | -def:plural(base, count) ?><?cs |
3275 | - var:base ?><?cs if:count != 1 ?>s<?cs /if ?><?cs |
3276 | -/def ?> |
3277 | |
3278 | === removed file 'trac-files/templates/macros.html' |
3279 | --- trac-files/templates/macros.html 2011-10-17 17:00:12 +0000 |
3280 | +++ trac-files/templates/macros.html 1970-01-01 00:00:00 +0000 |
3281 | @@ -1,260 +0,0 @@ |
3282 | -<div xmlns="http://www.w3.org/1999/xhtml" |
3283 | - xmlns:py="http://genshi.edgewall.org/" py:strip=""> |
3284 | - |
3285 | - <!--! |
3286 | - |
3287 | - WARNING: this file and the corresponding <py:def>s are going to be phased |
3288 | - out soon. Please DON'T include macros.html in your own templates. |
3289 | - |
3290 | - See http://trac.edgewall.org/ticket/6374 |
3291 | - --> |
3292 | - |
3293 | - <!--! Display the plural or singular form of a noun depending on a given |
3294 | - - number. |
3295 | - - |
3296 | - - 'cnt' corresponding quantity |
3297 | - - 'noun' |
3298 | - - 'keepzero' If True, 0 gets pluralized, otherwise nothing gets generated. |
3299 | - - |
3300 | - - We take care to not insert any extra space. |
3301 | - --> |
3302 | - <py:def function="plural(cnt,noun,keepzero=False)"><py:if |
3303 | - test="cnt != 0 or keepzero" |
3304 | - >${cnt == 1 and ('1 '+noun) or '%d %ss' % (cnt, noun)}</py:if></py:def> |
3305 | - |
3306 | - <!--! Display size of a content in human friendly format (think -H) |
3307 | - - |
3308 | - - We take care to not insert any extra space. |
3309 | - --> |
3310 | - <py:def function="sizeinfo(size)"><span title="$size bytes">${ |
3311 | - pretty_size(size) |
3312 | - }</span></py:def> |
3313 | - |
3314 | - <!--! Display author information, eventually obfuscating the e-mail address |
3315 | - - |
3316 | - - We take care to not insert any extra space. |
3317 | - --> |
3318 | - <py:def function="authorinfo(author, email_map=None)"><py:choose><py:when test="author"><py:with |
3319 | - vars="author = show_email_addresses and email_map and '@' not in author and email_map[author] or author">${ |
3320 | - author and format_author(author) or 'anonymous' |
3321 | - }</py:with></py:when><py:otherwise>anonymous</py:otherwise></py:choose></py:def> |
3322 | - |
3323 | - <!--! Display a sequence of path components. |
3324 | - - |
3325 | - - Each component is a link to the corresponding location in the browser. |
3326 | - --> |
3327 | - <py:def function="browser_path_links(path_links,rev=None)"> |
3328 | - <py:for each="idx, part in enumerate(path_links)"><py:with |
3329 | - vars="first = idx == 0; last = idx == len(path_links) - 1"><a |
3330 | - class="${classes('pathentry', first=first)}" |
3331 | - title="${first and 'Go to root directory' or 'View ' + part.name}" |
3332 | - href="$part.href">$part.name</a><py:if |
3333 | - test="not last"><span class="pathentry sep">/</span></py:if></py:with></py:for> |
3334 | - <py:if test="rev"><span class="pathentry sep">@</span> |
3335 | - <a class="pathentry" href="${href.changeset(rev)}" title="View changeset $rev">$rev</a> |
3336 | - </py:if> |
3337 | - <br style="clear: both" /> |
3338 | - </py:def> |
3339 | - |
3340 | - <!--! Add Previous/Up/Next navigation links |
3341 | - - |
3342 | - - `label` the label to use after the Previous/Next words |
3343 | - - `uplabel` the label to use for the Up link |
3344 | - - |
3345 | - - Assume the 'chrome' datastructure to be available from the context. |
3346 | - --> |
3347 | - <ul py:def="prevnext_nav(label, uplabel=None)" py:with="links = chrome.links" |
3348 | - py:if="'up' in chrome.links or |
3349 | - 'prev' in chrome.links or |
3350 | - 'next' in chrome.links"> |
3351 | - <li class="first" py:choose=""> |
3352 | - ← <a py:when="'prev' in links" py:with="link = links.prev[0]" |
3353 | - class="prev" href="${link.href}" |
3354 | - title="${link.title}">Previous $label</a> |
3355 | - <span py:otherwise="" class="missing">Previous $label</span> |
3356 | - </li> |
3357 | - <li py:if="uplabel and 'up' in links"> |
3358 | - <a py:with="link = links.up[0]" href="${link.href}" |
3359 | - title="${link.title}">$uplabel</a> |
3360 | - </li> |
3361 | - <li class="last" py:choose=""> |
3362 | - <a py:when="'next' in links" py:with="link = links.next[0]" |
3363 | - class="next" href="${link.href}" |
3364 | - title="${link.title}">Next $label</a> |
3365 | - <span py:otherwise="" class="missing">Next $label</span> → |
3366 | - </li> |
3367 | - </ul> |
3368 | - |
3369 | - <!--! Add diff option fields (to be used inside a form) |
3370 | - - |
3371 | - - `diff` the datastructure which contains diff options |
3372 | - - |
3373 | - --> |
3374 | - <py:def function="diff_options_fields(diff)"> |
3375 | - <label for="style">View differences</label> |
3376 | - <select id="style" name="style"> |
3377 | - <option selected="${diff.style == 'inline' or None}" |
3378 | - value="inline">inline</option> |
3379 | - <option selected="${diff.style == 'sidebyside' or None}" |
3380 | - value="sidebyside">side by side</option> |
3381 | - </select> |
3382 | - <div class="field"> |
3383 | - Show <input type="text" name="contextlines" id="contextlines" size="2" |
3384 | - maxlength="3" value="${diff.options.contextlines < 0 and 'all' or diff.options.contextlines}" /> |
3385 | - <label for="contextlines">lines around each change</label> |
3386 | - </div> |
3387 | - <fieldset id="ignore" py:with="options = diff.options"> |
3388 | - <legend>Ignore:</legend> |
3389 | - <div class="field"> |
3390 | - <input type="checkbox" id="ignoreblanklines" name="ignoreblanklines" |
3391 | - checked="${options.ignoreblanklines or None}" /> |
3392 | - <label for="ignoreblanklines">Blank lines</label> |
3393 | - </div> |
3394 | - <div class="field"> |
3395 | - <input type="checkbox" id="ignorecase" name="ignorecase" |
3396 | - checked="${options.ignorecase or None}" /> |
3397 | - <label for="ignorecase">Case changes</label> |
3398 | - </div> |
3399 | - <div class="field"> |
3400 | - <input type="checkbox" id="ignorewhitespace" name="ignorewhitespace" |
3401 | - checked="${options.ignorewhitespace or None}" /> |
3402 | - <label for="ignorewhitespace">White space changes</label> |
3403 | - </div> |
3404 | - </fieldset> |
3405 | - <div class="buttons"> |
3406 | - <input type="submit" name="update" value="Update" /> |
3407 | - </div> |
3408 | - </py:def> |
3409 | - |
3410 | - <!--! Display a div for visualizing a preview of a file content |
3411 | - - |
3412 | - - 'preview' is usually obtained from calling Mimeview.preview_data() |
3413 | - - |
3414 | - --> |
3415 | - <py:def function="preview_file(preview)"> |
3416 | - ${preview.rendered} |
3417 | - <py:choose> |
3418 | - <p py:when="preview.size == 0"> |
3419 | - <strong>(The file is empty)</strong> |
3420 | - </p> |
3421 | - <p py:when="not preview.rendered"> |
3422 | - <strong>HTML preview not available</strong>, |
3423 | - <py:choose> |
3424 | - <py:when test="preview.max_file_size_reached"> |
3425 | - since the file size exceeds $preview.max_file_size bytes. |
3426 | - </py:when> |
3427 | - <py:otherwise> |
3428 | - since no preview renderer could handle it. |
3429 | - </py:otherwise> |
3430 | - </py:choose> |
3431 | - Try <a href="$preview.raw_href">downloading</a> the file instead. |
3432 | - </p> |
3433 | - <py:when test="'errors' in preview"> |
3434 | - <p> |
3435 | - <strong>HTML preview not available</strong>. |
3436 | - To view, <a href="$preview.raw_href">download</a> the file. |
3437 | - </p> |
3438 | - <p>${plural(len(preview.errors), 'issue')} found:</p> |
3439 | - <div py:for="renderer, err in preview.errors" class="system-message"> |
3440 | - <strong>${renderer.__class__.__name__}</strong> |
3441 | - <pre>$err</pre> |
3442 | - </div> |
3443 | - </py:when> |
3444 | - </py:choose> |
3445 | - </py:def> |
3446 | - |
3447 | - <!--! Display a list of attachments |
3448 | - - |
3449 | - - 'alist' is an AttachmentList object (see attachment.py) |
3450 | - - 'compact' is used to switch between a compact list of attachments (e.g. as used for |
3451 | - - the wiki view) and an expanded list (e.g. as used for the ticket view) |
3452 | - --> |
3453 | - <py:def function="list_of_attachments(alist, compact=False, add_button_title=None)"> |
3454 | - <py:def function="show_one_attachment(attachment)"> |
3455 | - <a href="${url_of(attachment.resource)}" title="View attachment">$attachment.filename</a> |
3456 | - <a href="${url_of(attachment.resource, format='raw')}" |
3457 | - title="Download" class="trac-rawlink"><img src="${chrome.htdocs_location}download.png" alt="Download"/></a> |
3458 | - (${sizeinfo(attachment.size)}) - added by <em>${authorinfo(attachment.author)}</em> |
3459 | - ${dateinfo(attachment.date)} ago. |
3460 | - </py:def> |
3461 | - <py:if test="alist.attachments or alist.can_create"> |
3462 | - <py:choose test=""> |
3463 | - <py:when test="compact and alist.attachments"> |
3464 | - <h3>Attachments</h3> |
3465 | - <ul> |
3466 | - <py:for each="attachment in alist.attachments"> |
3467 | - <li> |
3468 | - ${show_one_attachment(attachment)} |
3469 | - <q py:if="compact and attachment.description">${wiki_to_oneliner(context, attachment.description)}</q> |
3470 | - </li> |
3471 | - </py:for> |
3472 | - </ul> |
3473 | - </py:when> |
3474 | - <py:when test="not compact"> |
3475 | - <h2>Attachments</h2> |
3476 | - <div py:if="alist.attachments or alist.can_create" id="attachments"> |
3477 | - <dl py:if="alist.attachments" class="attachments"> |
3478 | - <py:for each="attachment in alist.attachments"> |
3479 | - <dt>${show_one_attachment(attachment)}</dt> |
3480 | - <dd py:if="attachment.description"> |
3481 | - ${wiki_to_oneliner(context, attachment.description)} |
3482 | - </dd> |
3483 | - </py:for> |
3484 | - </dl> |
3485 | - ${attach_file_form(alist, add_button_title)} |
3486 | - </div> |
3487 | - </py:when> |
3488 | - </py:choose> |
3489 | - </py:if> |
3490 | - </py:def> |
3491 | - |
3492 | - <!--! Conditionally render an ''Attach File'' button |
3493 | - - |
3494 | - - 'alist' is an AttachmentList object (see attachment.py) |
3495 | - --> |
3496 | - <py:def function="attach_file_form(alist, add_button_title=None)"> |
3497 | - <form py:if="alist.can_create" method="get" action="${alist.attach_href}" id="attachfile"> |
3498 | - <div> |
3499 | - <input type="hidden" name="action" value="new" /> |
3500 | - <input type="submit" name="attachfilebutton" value="${add_button_title or _('Attach file')}" /> |
3501 | - </div> |
3502 | - </form> |
3503 | - </py:def> |
3504 | - |
3505 | - <!--! Display a generic "progress bar", for use in roadmap and milestone. |
3506 | - - |
3507 | - - `stats` argument is a TicketGroupStats instance |
3508 | - - `interval_hrefs` are links to a query for each of the stats.intervals |
3509 | - --> |
3510 | - <py:def function="progress_bar(stats, interval_hrefs, percent=None, legend=True, style=None, stats_href=None)"> |
3511 | - <table class="progress" style="$style"> |
3512 | - <tr> |
3513 | - <td py:for="idx, interval in enumerate(stats.intervals)" py:choose="" |
3514 | - class="$interval.css_class" style="${interval.percent and 'width: %d%%' % interval.percent or 'display: none'}"> |
3515 | - <a py:when="interval_hrefs" href="${interval_hrefs[idx]}" |
3516 | - title="${interval.count} of ${stats.count} ${stats.unit}${ |
3517 | - stats.count != 1 and 's' or ''} ${interval.title}"></a> |
3518 | - <a py:otherwise="" |
3519 | - title="${interval.count} of ${stats.count} ${stats.unit}${ |
3520 | - stats.count != 1 and 's' or ''} ${interval.title}"></a> |
3521 | - </td> |
3522 | - </tr> |
3523 | - </table> |
3524 | - <p class="percent">${percent is None and '%d%%' % stats.done_percent or percent}</p> |
3525 | - <dl py:if="legend"> |
3526 | - <py:for each="idx, interval in enumerate(stats.intervals)"> |
3527 | - <dt py:choose=""> |
3528 | - <a py:when="interval_hrefs" href="${interval_hrefs[idx]}">${interval.title.capitalize()} ${stats.unit}s:</a> |
3529 | - <a py:otherwise="">${interval.title.capitalize()} ${stats.unit}s:</a> |
3530 | - </dt> |
3531 | - <dd py:choose=""> |
3532 | - <a py:when="interval_hrefs" href="${interval_hrefs[idx]}">${interval.count}</a> |
3533 | - <a py:otherwise="">${interval.count}</a> |
3534 | - </dd> |
3535 | - </py:for> |
3536 | - <dt>/ <a href="${stats_href}">Total ${stats.unit}s:</a></dt> |
3537 | - <dd><a href="${stats_href}">${sum([x.count for x in stats.intervals], 0)}</a></dd> |
3538 | - </dl> |
3539 | -</py:def> |
3540 | - |
3541 | -</div> |
3542 | |
3543 | === removed file 'trac-files/templates/macros.rss' |
3544 | --- trac-files/templates/macros.rss 2011-10-17 17:00:12 +0000 |
3545 | +++ trac-files/templates/macros.rss 1970-01-01 00:00:00 +0000 |
3546 | @@ -1,29 +0,0 @@ |
3547 | -<?xml version="1.0"?> |
3548 | -<rss version="2.0" xmlns:py="http://genshi.edgewall.org/" |
3549 | - xmlns:dc="http://purl.org/dc/elements/1.1/" py:strip=""> |
3550 | - |
3551 | - <!--! |
3552 | - |
3553 | - WARNING: this file and the corresponding <py:def>s are going to be phased |
3554 | - out soon. Please DON'T include macros.rss in your own templates. |
3555 | - |
3556 | - See http://trac.edgewall.org/ticket/6374 |
3557 | - --> |
3558 | - |
3559 | - <!--! Generate an <author> or a <dc:creator> tag, based on the presence |
3560 | - - of an email or not in the author's information. |
3561 | - - |
3562 | - - Assume 'show_email_addresses' to be available in the global data. |
3563 | - --> |
3564 | - <py:def function="author_or_creator(author, email_map=None)"> |
3565 | - <py:if test="author"> |
3566 | - <!--! Try our best to retrieve an email address if wanted and possible --> |
3567 | - <py:with vars="author = show_email_addresses and email_map and '@' not in author and email_map[author] or author"> |
3568 | - <py:choose> |
3569 | - <author py:when="show_email_addresses and '@' in author">${format_author(author)}</author> |
3570 | - <dc:creator py:otherwise="">${format_author(author)}</dc:creator> |
3571 | - </py:choose> |
3572 | - </py:with> |
3573 | - </py:if> |
3574 | - </py:def> |
3575 | -</rss> |
3576 | |
3577 | === removed file 'trac-files/templates/page_index.html' |
3578 | --- trac-files/templates/page_index.html 2011-10-17 17:00:12 +0000 |
3579 | +++ trac-files/templates/page_index.html 1970-01-01 00:00:00 +0000 |
3580 | @@ -1,27 +0,0 @@ |
3581 | -<!--! Display a page index. |
3582 | - |
3583 | - `paginator` must be a trac.util.presentation.Paginator instance |
3584 | - |
3585 | - --> |
3586 | -<div xmlns="http://www.w3.org/1999/xhtml" |
3587 | - xmlns:py="http://genshi.edgewall.org/" class="paging" py:if="paginator.has_more_pages"> |
3588 | - |
3589 | - <span py:if="paginator.has_previous_page" |
3590 | - py:with="prevlink = chrome.links.prev[0]" class="previous"> |
3591 | - <a href="${prevlink.href}" title="${prevlink.title}">←</a> |
3592 | - </span> |
3593 | - <py:for each="page in paginator.shown_pages"> |
3594 | - <span py:if="page.string == paginator.current_page.string"> |
3595 | - <span py:if="page.string == paginator.current_page.string" class="${paginator.current_page['class']}">${paginator.current_page.string}</span> |
3596 | - </span> |
3597 | - <span py:if="page.string != paginator.current_page.string"> |
3598 | - <a href="${page.href}" title="${page.title}">${page.string}</a> |
3599 | - </span> |
3600 | - </py:for> |
3601 | - <span py:if="paginator.has_next_page" |
3602 | - py:with="nextlink = chrome.links.next[0]" class="next"> |
3603 | - <a href="${nextlink.href}" title="${nextlink.title}">→</a> |
3604 | - </span> |
3605 | - |
3606 | -</div> |
3607 | - |
3608 | |
3609 | === added file 'trac-files/templates/site.html' |
3610 | --- trac-files/templates/site.html 1970-01-01 00:00:00 +0000 |
3611 | +++ trac-files/templates/site.html 2011-11-24 10:57:32 +0000 |
3612 | @@ -0,0 +1,120 @@ |
3613 | +<html xmlns="http://www.w3.org/1999/xhtml" |
3614 | + xmlns:py="http://genshi.edgewall.org/" |
3615 | + py:strip=""> |
3616 | + |
3617 | + <!--! Add some tasty meta tags. --> |
3618 | + <head py:match="head"> |
3619 | + <meta name="ROBOTS" content="NOODP" /> |
3620 | + <meta name="Description" content="An event-driven networking engine written in Python and MIT licensed." /> |
3621 | + ${select('*|comment()|text()')} |
3622 | + <script type="text/javascript" src="https://www.google.com/jsapi?key=ABQIAAAAJE-f7vmwI1-jxkmwRe4lUxTAs18ELyhzmLGaHoc1qJwmpJy3zhR3LMRRdwqg5PSY4tnVO684msUklQ"></script> |
3623 | + <script type="text/javascript" src="${href.chrome('site/js/news.js')}" /> |
3624 | + </head> |
3625 | + |
3626 | + <!--! Add our own top-level navigation links. --> |
3627 | + <div py:match="div[@id='banner']" py:attrs="select('@*')"> |
3628 | + <div id="top_grad"></div> |
3629 | + <div id="tab"> |
3630 | + <a href="${href.wiki()}">HOME</a> |
3631 | + <a href="${href.wiki('FrequentlyAskedQuestions')}">FAQ</a> |
3632 | + <a href="${href.wiki('Documentation')}">DOCS</a> |
3633 | + <a href="${href.wiki('Downloads')}">DOWNLOAD</a> |
3634 | + </div> |
3635 | + ${select('*|comment()|text()')} |
3636 | + </div> |
3637 | + |
3638 | + <!--! Our own custom footer --> |
3639 | + <div py:match="div[@id='footer']" py:attrs="select('@*')"> |
3640 | + <div class="sitemeter"> |
3641 | + <!--WEBBOT bot="HTMLMarkup" startspan ALT="Site Meter" --> |
3642 | + <!-- |
3643 | + <script type="text/javascript" language="JavaScript">var site="sm7twistedmatrix"</script> |
3644 | + <script type="text/javascript" language="JavaScript1.2" src="http://sm7.sitemeter.com/js/counter.js?site=sm7twistedmatrix"></script> |
3645 | + <noscript> |
3646 | + --> |
3647 | + <a href="http://sm7.sitemeter.com/stats.asp?site=sm7twistedmatrix" target="_top"> |
3648 | + <img src="http://sm7.sitemeter.com/meter.asp?site=sm7twistedmatrix" alt="Site Meter" border="0" /> |
3649 | + </a> |
3650 | + <!-- </noscript> --> |
3651 | + <!-- Copyright (c)2002 Site Meter --> |
3652 | + <!--WEBBOT bot="HTMLMarkup" Endspan --> |
3653 | + |
3654 | + <!-- Google analytics, obviously. --> |
3655 | + <script src="http://www.google-analytics.com/urchin.js" type="text/javascript" /> |
3656 | + <script type="text/javascript"> |
3657 | + _uacct = "UA-99018-6"; |
3658 | + urchinTracker(); |
3659 | + </script> |
3660 | + </div> |
3661 | + <div class="credits"> |
3662 | + <p><a href="${href.wiki('SiteCredits')}">Site design credits</a></p> |
3663 | + </div> |
3664 | + <div class="right"> |
3665 | + <p>${chrome.footer}</p> |
3666 | + </div> |
3667 | + </div> |
3668 | + |
3669 | + <!--! A more structured form of the ticket resolution, status and type attributes --> |
3670 | + <div py:match="div[@id='content' and @class='ticket']" py:attrs="select('@*')"> |
3671 | + <span class="statuses" py:match="span[@class='status']"> |
3672 | + <py:if test="ticket.type"><span class="type">${ticket.type}</span></py:if> |
3673 | + <py:if test="ticket.status"><span class="status">${ticket.status}</span></py:if> |
3674 | + <py:if test="ticket.resolution"><span class="resolution">${ticket.resolution}</span></py:if> |
3675 | + </span> |
3676 | + <h1 py:match="h1"> |
3677 | + <span class="title">${select('text()')}</span> |
3678 | + ${select('*|comment()')} |
3679 | + </h1> |
3680 | + ${select('*|comment()|text()')} |
3681 | + </div> |
3682 | + |
3683 | + <!--! Genshi, like all write-your-logic-in-your-template languages, is |
3684 | + completely and utterly terrible. The context in which the variable |
3685 | + "change" occurs is completely lost and so our only option appears to |
3686 | + be to reproduce the entire loop. Goodie. --> |
3687 | + <div py:match="div[@id='changelog']" py:attrs="select('@*')"> |
3688 | + <form py:for="change in changes" method="get" action="#comment" class="printableform"> |
3689 | + <a href="#${'cnum' in change and 'comment:%d' % change.cnum or None}"> |
3690 | + <h2 class="comment-number">${'cnum' in change and change.cnum or None}</h2> |
3691 | + </a> |
3692 | + <div class="change"> |
3693 | + <h3 class="change" id="${'cnum' in change and 'comment:%d' % change.cnum or None}"> |
3694 | + <span class="threading" py:if="replies and 'cnum' in change" |
3695 | + py:with="change_replies = replies.get(str(change.cnum), [])"> |
3696 | + <py:if test="change_replies or 'replyto' in change"> |
3697 | + <py:if test="'replyto' in change"> |
3698 | + in reply to: ${commentref('↑ ', change.replyto)} |
3699 | + <py:if test="change_replies">; </py:if> |
3700 | + </py:if> |
3701 | + <py:if test="change_replies">follow-up${len(change_replies) > 1 and 's' or ''}: |
3702 | + <py:for each="reply in change_replies"> |
3703 | + ${commentref('↓ ', reply)} |
3704 | + </py:for></py:if> |
3705 | + </py:if> |
3706 | + |
3707 | + </span> |
3708 | + Changed ${dateinfo(change.date)} ago by ${authorinfo(change.author)} |
3709 | + </h3> |
3710 | + <div py:if="'cnum' in change and can_append" class="inlinebuttons"> |
3711 | + <input type="hidden" name="replyto" value="${change.cnum}" /> |
3712 | + <input type="submit" value="Reply" title="Reply to comment ${change.cnum}" /> |
3713 | + </div> |
3714 | + ${display_change(change)} |
3715 | + </div> |
3716 | + </form> |
3717 | + </div> |
3718 | + |
3719 | + <!--! Don't allow replacing existing attachments, ever. --> |
3720 | + <py:match path="form[@id='attachment']//div[@class='options']" /> |
3721 | + |
3722 | + <!--! Show a reminder on the attachment page about including tests. --> |
3723 | + <py:match path="form[@id='attachment']/div[@class='buttons']"> |
3724 | + <p> |
3725 | + Adding a patch that changes code? Make sure it includes unit tests! |
3726 | + <a href="/trac/wiki/ReviewProcess">See the complete acceptance criteria</a>. Thanks! |
3727 | + </p> |
3728 | + <div py:attrs="select('@*')"> |
3729 | + ${select('*|comment()|text()')} |
3730 | + </div> |
3731 | + </py:match> |
3732 | +</html> |
3733 | |
3734 | === removed file 'trac-files/templates/theme.html' |
3735 | --- trac-files/templates/theme.html 2011-10-17 17:00:12 +0000 |
3736 | +++ trac-files/templates/theme.html 1970-01-01 00:00:00 +0000 |
3737 | @@ -1,102 +0,0 @@ |
3738 | -<!DOCTYPE html |
3739 | - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
3740 | - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
3741 | -<html xmlns="http://www.w3.org/1999/xhtml" |
3742 | - xmlns:xi="http://www.w3.org/2001/XInclude" |
3743 | - xmlns:py="http://genshi.edgewall.org/" |
3744 | - py:strip=""> |
3745 | - |
3746 | - <div py:def="navigation(category)" id="${category}" class="nav"> |
3747 | - <ul py:if="chrome.nav[category]"> |
3748 | - <li py:for="idx, item in enumerate(chrome.nav[category])" |
3749 | - class="${classes(first_last(idx, chrome.nav[category]), active=item.active)}">${item.label}</li> |
3750 | - </ul> |
3751 | - </div> |
3752 | - <py:match path="body" once="true" buffer="false"><body> |
3753 | - <div id="banner"> |
3754 | - <div id="top_grad"> |
3755 | - |
3756 | - </div> |
3757 | - <div id="tab"> |
3758 | - <a href="/trac/wiki">HOME</a> |
3759 | - <a href="/trac/wiki/FrequentlyAskedQuestions">FAQ</a> |
3760 | - <a href="/trac/wiki/Documentation">DOCS</a> |
3761 | - <a href="/trac/wiki/Downloads">DOWNLOAD</a> |
3762 | - </div> |
3763 | - <div id="header" py:choose=""> |
3764 | - <a py:when="chrome.logo.src" id="logo" href="${chrome.logo.link or href.wiki('TracIni')+'#header_logo-section'}"><img |
3765 | - src="${chrome.logo.src}" alt="${chrome.logo.alt}" |
3766 | - height="${chrome.logo.height or None}" width="${chrome.logo.width or None}" /></a> |
3767 | - <h1 py:otherwise=""><a href="${chrome.logo.link}">${project.name}</a></h1> |
3768 | - |
3769 | - |
3770 | - </div> |
3771 | - <form id="topsearch" action="${href.search()}" method="get"> |
3772 | - <div> |
3773 | - <label for="proj-search">Search:</label> |
3774 | - <input type="text" id="proj-search" name="q" size="18" accesskey="f" value="" /> |
3775 | - <input type="submit" value="Search" /> |
3776 | - </div> |
3777 | - </form> |
3778 | - ${navigation('metanav')} |
3779 | - </div> |
3780 | - ${navigation('mainnav')} |
3781 | - |
3782 | - <div id="main"> |
3783 | - <div id="ctxtnav" class="nav"> |
3784 | - <h2>Context Navigation</h2> |
3785 | - <ul py:if="chrome.ctxtnav"> |
3786 | - <li py:for="i, elm in enumerate(chrome.ctxtnav)" |
3787 | - class="${classes(first_last(i, chrome.ctxtnav))}">$elm</li> |
3788 | - </ul> |
3789 | - <hr /> |
3790 | - </div> |
3791 | - <div id="warning" py:if="chrome.warnings" class="system-message"> |
3792 | - <py:choose test="len(chrome.warnings)"> |
3793 | - <strong>Warning:</strong> |
3794 | - <py:when test="1">${chrome.warnings[0]}</py:when> |
3795 | - <py:otherwise><ul><li py:for="warning in chrome.warnings">$warning</li></ul></py:otherwise> |
3796 | - </py:choose> |
3797 | - </div> |
3798 | - <div id="notice" py:if="chrome.notices" class="system-message"> |
3799 | - <py:choose test="len(chrome.notices)"> |
3800 | - <py:when test="1">${chrome.notices[0]}</py:when> |
3801 | - <py:otherwise><ul><li py:for="notice in chrome.notices">$notice</li></ul></py:otherwise> |
3802 | - </py:choose> |
3803 | - </div> |
3804 | - |
3805 | - ${select('*|text()')} |
3806 | - </div> |
3807 | - |
3808 | - <div id="footer" xml:lang="en"><hr/> |
3809 | -<div> |
3810 | -<!--WEBBOT bot="HTMLMarkup" startspan ALT="Site Meter" --> |
3811 | -<!-- |
3812 | -<script type="text/javascript" language="JavaScript">var site="sm7twistedmatrix"</script> |
3813 | -<script type="text/javascript" language="JavaScript1.2" src="http://sm7.sitemeter.com/js/counter.js?site=sm7twistedmatrix"> |
3814 | -</script> |
3815 | -<noscript> |
3816 | ---> |
3817 | -<a href="http://sm7.sitemeter.com/stats.asp?site=sm7twistedmatrix" target="_top"> |
3818 | -<img src="http://sm7.sitemeter.com/meter.asp?site=sm7twistedmatrix" alt="Site Meter" border="0" /></a> |
3819 | -<!-- </noscript> --> |
3820 | -<!-- Copyright (c)2002 Site Meter --> |
3821 | -<!--WEBBOT bot="HTMLMarkup" Endspan --> |
3822 | - |
3823 | -<!-- Google analytics, obviously. --> |
3824 | -<script src="http://www.google-analytics.com/urchin.js" type="text/javascript" /> |
3825 | -<script type="text/javascript"> |
3826 | -_uacct = "UA-99018-6"; |
3827 | -urchinTracker(); |
3828 | -</script> |
3829 | -<!-- End of that stuff --> |
3830 | -</div> |
3831 | - |
3832 | - <p class="left2"> |
3833 | - Site design<br/> |
3834 | - By <a href="http://huw.ugbox.net/">huw.wilkins.</a> |
3835 | - </p> |
3836 | - <p class="right">${chrome.footer}</p> |
3837 | - </div> |
3838 | - </body></py:match> |
3839 | -</html> |
We're only ever going to know if this works by merging it, so, approved.