##// END OF EJS Templates
templates: use CSS classes for diff styling...
Gregory Szorc -
r23744:d1933c2e default
parent child Browse files
Show More
@@ -1,324 +1,324 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {topic|escape}
17 {topic|escape}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td class="link">
32 <td class="link">
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td class="link">
44 <td class="link">
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td style="font-family:monospace">drwxr-xr-x</td>
65 <td style="font-family:monospace">drwxr-xr-x</td>
66 <td style="font-family:monospace"></td>
66 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
67 <td style="font-family:monospace"></td>
68 <td>
68 <td>
69 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
69 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
70 <a href="{url|urlescape}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
70 <a href="{url|urlescape}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
71 </td>
71 </td>
72 <td class="link">
72 <td class="link">
73 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
73 <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
74 </td>
74 </td>
75 </tr>'
75 </tr>'
76 fileentry = '
76 fileentry = '
77 <tr class="parity{parity}">
77 <tr class="parity{parity}">
78 <td style="font-family:monospace">{permissions|permissions}</td>
78 <td style="font-family:monospace">{permissions|permissions}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
79 <td style="font-family:monospace" align=right>{date|isodate}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
80 <td style="font-family:monospace" align=right>{size}</td>
81 <td class="list">
81 <td class="list">
82 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
82 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
83 </td>
83 </td>
84 <td class="link">
84 <td class="link">
85 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
85 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
86 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
86 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
87 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
87 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
88 </td>
88 </td>
89 </tr>'
89 </tr>'
90 filerevision = filerevision.tmpl
90 filerevision = filerevision.tmpl
91 fileannotate = fileannotate.tmpl
91 fileannotate = fileannotate.tmpl
92 filediff = filediff.tmpl
92 filediff = filediff.tmpl
93 filecomparison = filecomparison.tmpl
93 filecomparison = filecomparison.tmpl
94 filelog = filelog.tmpl
94 filelog = filelog.tmpl
95 fileline = '
95 fileline = '
96 <div style="font-family:monospace" class="parity{parity}">
96 <div style="font-family:monospace" class="parity{parity}">
97 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
97 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
98 </div>'
98 </div>'
99 annotateline = '
99 annotateline = '
100 <tr style="font-family:monospace" class="parity{parity}">
100 <tr style="font-family:monospace" class="parity{parity}">
101 <td class="linenr" style="text-align: right;">
101 <td class="linenr" style="text-align: right;">
102 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
102 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
103 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
103 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
104 </td>
104 </td>
105 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
105 <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
106 <td><pre>{line|escape}</pre></td>
106 <td><pre>{line|escape}</pre></td>
107 </tr>'
107 </tr>'
108 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
108 difflineplus = '<span class="difflineplus"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
109 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
109 difflineminus = '<span class="difflineminus"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
110 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
110 difflineat = '<span class="difflineat"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
111 diffline = '<a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
111 diffline = '<a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
112
112
113 comparisonblock ='
113 comparisonblock ='
114 <tbody class="block">
114 <tbody class="block">
115 {lines}
115 {lines}
116 </tbody>'
116 </tbody>'
117 comparisonline = '
117 comparisonline = '
118 <tr style="font-family:monospace">
118 <tr style="font-family:monospace">
119 <td class="{type}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
119 <td class="{type}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</pre></td>
120 <td class="{type}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
120 <td class="{type}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</pre></td>
121 </tr>'
121 </tr>'
122
122
123 changelogparent = '
123 changelogparent = '
124 <tr>
124 <tr>
125 <th class="parent">parent {rev}:</th>
125 <th class="parent">parent {rev}:</th>
126 <td class="parent">
126 <td class="parent">
127 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
127 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
128 </td>
128 </td>
129 </tr>'
129 </tr>'
130 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
130 changesetlink = '<a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
131 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
131 changesetbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
132 changesetparent = '
132 changesetparent = '
133 <tr>
133 <tr>
134 <td>parent {rev}</td>
134 <td>parent {rev}</td>
135 <td style="font-family:monospace">
135 <td style="font-family:monospace">
136 {changesetlink}
136 {changesetlink}
137 </td>
137 </td>
138 </tr>'
138 </tr>'
139 changesetparentdiff = '
139 changesetparentdiff = '
140 <tr>
140 <tr>
141 <td>parent {rev}</td>
141 <td>parent {rev}</td>
142 <td style="font-family:monospace">
142 <td style="font-family:monospace">
143 {changesetlink} {ifeq(node, basenode, '(current diff)', \'({difffrom})\')}
143 {changesetlink} {ifeq(node, basenode, '(current diff)', \'({difffrom})\')}
144 </td>
144 </td>
145 </tr>'
145 </tr>'
146 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
146 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
147 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
147 filerevbranch = '<tr><td>branch</td><td>{name|escape}</td></tr>'
148 filerevparent = '
148 filerevparent = '
149 <tr>
149 <tr>
150 <td>parent {rev}</td>
150 <td>parent {rev}</td>
151 <td style="font-family:monospace">
151 <td style="font-family:monospace">
152 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
152 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
153 {rename%filerename}{node|short}
153 {rename%filerename}{node|short}
154 </a>
154 </a>
155 </td>
155 </td>
156 </tr>'
156 </tr>'
157 filerename = '{file|escape}@'
157 filerename = '{file|escape}@'
158 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
158 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
159 fileannotateparent = '
159 fileannotateparent = '
160 <tr>
160 <tr>
161 <td>parent {rev}</td>
161 <td>parent {rev}</td>
162 <td style="font-family:monospace">
162 <td style="font-family:monospace">
163 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
163 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
164 {rename%filerename}{node|short}
164 {rename%filerename}{node|short}
165 </a>
165 </a>
166 </td>
166 </td>
167 </tr>'
167 </tr>'
168 changelogchild = '
168 changelogchild = '
169 <tr>
169 <tr>
170 <th class="child">child {rev}:</th>
170 <th class="child">child {rev}:</th>
171 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
171 <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
172 </tr>'
172 </tr>'
173 changesetchild = '
173 changesetchild = '
174 <tr>
174 <tr>
175 <td>child {rev}</td>
175 <td>child {rev}</td>
176 <td style="font-family:monospace">
176 <td style="font-family:monospace">
177 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
177 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
178 </td>
178 </td>
179 </tr>'
179 </tr>'
180 filerevchild = '
180 filerevchild = '
181 <tr>
181 <tr>
182 <td>child {rev}</td>
182 <td>child {rev}</td>
183 <td style="font-family:monospace">
183 <td style="font-family:monospace">
184 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
184 <a class="list" href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
185 </tr>'
185 </tr>'
186 fileannotatechild = '
186 fileannotatechild = '
187 <tr>
187 <tr>
188 <td>child {rev}</td>
188 <td>child {rev}</td>
189 <td style="font-family:monospace">
189 <td style="font-family:monospace">
190 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
190 <a class="list" href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
191 </tr>'
191 </tr>'
192 tags = tags.tmpl
192 tags = tags.tmpl
193 tagentry = '
193 tagentry = '
194 <tr class="parity{parity}">
194 <tr class="parity{parity}">
195 <td class="age"><i class="age">{date|rfc822date}</i></td>
195 <td class="age"><i class="age">{date|rfc822date}</i></td>
196 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
196 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
197 <td class="link">
197 <td class="link">
198 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
198 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
199 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
199 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
200 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
200 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
201 </td>
201 </td>
202 </tr>'
202 </tr>'
203 bookmarks = bookmarks.tmpl
203 bookmarks = bookmarks.tmpl
204 bookmarkentry = '
204 bookmarkentry = '
205 <tr class="parity{parity}">
205 <tr class="parity{parity}">
206 <td class="age"><i class="age">{date|rfc822date}</i></td>
206 <td class="age"><i class="age">{date|rfc822date}</i></td>
207 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
207 <td><a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
208 <td class="link">
208 <td class="link">
209 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
209 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
210 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
210 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
211 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
211 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
212 </td>
212 </td>
213 </tr>'
213 </tr>'
214 branches = branches.tmpl
214 branches = branches.tmpl
215 branchentry = '
215 branchentry = '
216 <tr class="parity{parity}">
216 <tr class="parity{parity}">
217 <td class="age"><i class="age">{date|rfc822date}</i></td>
217 <td class="age"><i class="age">{date|rfc822date}</i></td>
218 <td><a class="list" href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
218 <td><a class="list" href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
219 <td class="{status}">{branch|escape}</td>
219 <td class="{status}">{branch|escape}</td>
220 <td class="link">
220 <td class="link">
221 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
221 <a href="{url|urlescape}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
222 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
222 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
223 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
223 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
224 </td>
224 </td>
225 </tr>'
225 </tr>'
226 diffblock = '<pre>{lines}</pre>'
226 diffblock = '<pre>{lines}</pre>'
227 filediffparent = '
227 filediffparent = '
228 <tr>
228 <tr>
229 <td>parent {rev}</td>
229 <td>parent {rev}</td>
230 <td style="font-family:monospace">
230 <td style="font-family:monospace">
231 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
231 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
232 {node|short}
232 {node|short}
233 </a>
233 </a>
234 </td>
234 </td>
235 </tr>'
235 </tr>'
236 filecompparent = '
236 filecompparent = '
237 <tr>
237 <tr>
238 <td>parent {rev}</td>
238 <td>parent {rev}</td>
239 <td style="font-family:monospace">
239 <td style="font-family:monospace">
240 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
240 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
241 {node|short}
241 {node|short}
242 </a>
242 </a>
243 </td>
243 </td>
244 </tr>'
244 </tr>'
245 filelogparent = '
245 filelogparent = '
246 <tr>
246 <tr>
247 <td align="right">parent {rev}:&nbsp;</td>
247 <td align="right">parent {rev}:&nbsp;</td>
248 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
248 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
249 </tr>'
249 </tr>'
250 filediffchild = '
250 filediffchild = '
251 <tr>
251 <tr>
252 <td>child {rev}</td>
252 <td>child {rev}</td>
253 <td style="font-family:monospace">
253 <td style="font-family:monospace">
254 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
254 <a class="list" href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
255 </td>
255 </td>
256 </tr>'
256 </tr>'
257 filecompchild = '
257 filecompchild = '
258 <tr>
258 <tr>
259 <td>child {rev}</td>
259 <td>child {rev}</td>
260 <td style="font-family:monospace">
260 <td style="font-family:monospace">
261 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
261 <a class="list" href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
262 </td>
262 </td>
263 </tr>'
263 </tr>'
264 filelogchild = '
264 filelogchild = '
265 <tr>
265 <tr>
266 <td align="right">child {rev}:&nbsp;</td>
266 <td align="right">child {rev}:&nbsp;</td>
267 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
267 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
268 </tr>'
268 </tr>'
269 shortlog = shortlog.tmpl
269 shortlog = shortlog.tmpl
270 graph = graph.tmpl
270 graph = graph.tmpl
271 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
271 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
272 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
272 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
273 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
273 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
274 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
274 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
275 shortlogentry = '
275 shortlogentry = '
276 <tr class="parity{parity}">
276 <tr class="parity{parity}">
277 <td class="age"><i class="age">{date|rfc822date}</i></td>
277 <td class="age"><i class="age">{date|rfc822date}</i></td>
278 <td><i>{author|person}</i></td>
278 <td><i>{author|person}</i></td>
279 <td>
279 <td>
280 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
280 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
281 <b>{desc|strip|firstline|escape|nonempty}</b>
281 <b>{desc|strip|firstline|escape|nonempty}</b>
282 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
282 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
283 </a>
283 </a>
284 </td>
284 </td>
285 <td class="link" nowrap>
285 <td class="link" nowrap>
286 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
286 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
287 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
287 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
288 </td>
288 </td>
289 </tr>'
289 </tr>'
290 filelogentry = '
290 filelogentry = '
291 <tr class="parity{parity}">
291 <tr class="parity{parity}">
292 <td class="age"><i class="age">{date|rfc822date}</i></td>
292 <td class="age"><i class="age">{date|rfc822date}</i></td>
293 <td>
293 <td>
294 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
294 <a class="list" href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
295 <b>{desc|strip|firstline|escape|nonempty}</b>
295 <b>{desc|strip|firstline|escape|nonempty}</b>
296 </a>
296 </a>
297 </td>
297 </td>
298 <td class="link">
298 <td class="link">
299 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
299 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
300 </tr>'
300 </tr>'
301 archiveentry = ' | <a href="{url|urlescape}archive/{node|short}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
301 archiveentry = ' | <a href="{url|urlescape}archive/{node|short}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> '
302 indexentry = '
302 indexentry = '
303 <tr class="parity{parity}">
303 <tr class="parity{parity}">
304 <td>
304 <td>
305 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
305 <a class="list" href="{url|urlescape}{sessionvars%urlparameter}">
306 <b>{name|escape}</b>
306 <b>{name|escape}</b>
307 </a>
307 </a>
308 </td>
308 </td>
309 <td>{description}</td>
309 <td>{description}</td>
310 <td>{contact|obfuscate}</td>
310 <td>{contact|obfuscate}</td>
311 <td class="age">{lastchange|rfc822date}</td>
311 <td class="age">{lastchange|rfc822date}</td>
312 <td class="indexlinks">{archives%indexarchiveentry}</td>
312 <td class="indexlinks">{archives%indexarchiveentry}</td>
313 <td>{if(isdirectory, '',
313 <td>{if(isdirectory, '',
314 '<div class="rss_logo">
314 '<div class="rss_logo">
315 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
315 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
316 </div>'
316 </div>'
317 )}
317 )}
318 </td>
318 </td>
319 </tr>\n'
319 </tr>\n'
320 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
320 indexarchiveentry = ' <a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
321 index = index.tmpl
321 index = index.tmpl
322 urlparameter = '{separator}{name}={value|urlescape}'
322 urlparameter = '{separator}{name}={value|urlescape}'
323 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
323 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
324 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
324 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,274 +1,274 b''
1 default = 'summary'
1 default = 'summary'
2 mimetype = 'text/html; charset={encoding}'
2 mimetype = 'text/html; charset={encoding}'
3 header = header.tmpl
3 header = header.tmpl
4 footer = footer.tmpl
4 footer = footer.tmpl
5 search = search.tmpl
5 search = search.tmpl
6 changelog = changelog.tmpl
6 changelog = changelog.tmpl
7 summary = summary.tmpl
7 summary = summary.tmpl
8 error = error.tmpl
8 error = error.tmpl
9 notfound = notfound.tmpl
9 notfound = notfound.tmpl
10
10
11 help = help.tmpl
11 help = help.tmpl
12 helptopics = helptopics.tmpl
12 helptopics = helptopics.tmpl
13
13
14 helpentry = '
14 helpentry = '
15 <tr><td>
15 <tr><td>
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
16 <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
17 {topic|escape}
17 {topic|escape}
18 </a>
18 </a>
19 </td><td>
19 </td><td>
20 {summary|escape}
20 {summary|escape}
21 </td></tr>'
21 </td></tr>'
22
22
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
23 naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
24 navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
25 navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
26 filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
27 filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
28 filenodelink = '
28 filenodelink = '
29 <tr class="parity{parity}">
29 <tr class="parity{parity}">
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
30 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
31 <td></td>
31 <td></td>
32 <td>
32 <td>
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
33 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
34 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
35 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
36 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
37 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
38 </td>
38 </td>
39 </tr>'
39 </tr>'
40 filenolink = '
40 filenolink = '
41 <tr class="parity{parity}">
41 <tr class="parity{parity}">
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
42 <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
43 <td></td>
43 <td></td>
44 <td>
44 <td>
45 file |
45 file |
46 annotate |
46 annotate |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
47 <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
48 <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
49 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
50 </td>
50 </td>
51 </tr>'
51 </tr>'
52
52
53 nav = '{before%naventry} {after%naventry}'
53 nav = '{before%naventry} {after%naventry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
54 navshort = '{before%navshortentry}{after%navshortentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
55 navgraph = '{before%navgraphentry}{after%navgraphentry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
56 filenav = '{before%filenaventry}{after%filenaventry}'
57
57
58 fileellipses = '...'
58 fileellipses = '...'
59 changelogentry = changelogentry.tmpl
59 changelogentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
60 searchentry = changelogentry.tmpl
61 changeset = changeset.tmpl
61 changeset = changeset.tmpl
62 manifest = manifest.tmpl
62 manifest = manifest.tmpl
63 direntry = '
63 direntry = '
64 <tr class="parity{parity}">
64 <tr class="parity{parity}">
65 <td>drwxr-xr-x</td>
65 <td>drwxr-xr-x</td>
66 <td></td>
66 <td></td>
67 <td></td>
67 <td></td>
68 <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
68 <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
69 <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
69 <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
70 </tr>'
70 </tr>'
71 fileentry = '
71 fileentry = '
72 <tr class="parity{parity}">
72 <tr class="parity{parity}">
73 <td>{permissions|permissions}</td>
73 <td>{permissions|permissions}</td>
74 <td>{date|isodate}</td>
74 <td>{date|isodate}</td>
75 <td>{size}</td>
75 <td>{size}</td>
76 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
76 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
77 <td>
77 <td>
78 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
78 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
79 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
79 <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
80 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
80 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
81 </td>
81 </td>
82 </tr>'
82 </tr>'
83 filerevision = filerevision.tmpl
83 filerevision = filerevision.tmpl
84 fileannotate = fileannotate.tmpl
84 fileannotate = fileannotate.tmpl
85 filediff = filediff.tmpl
85 filediff = filediff.tmpl
86 filecomparison = filecomparison.tmpl
86 filecomparison = filecomparison.tmpl
87 filelog = filelog.tmpl
87 filelog = filelog.tmpl
88 fileline = '
88 fileline = '
89 <div style="font-family:monospace" class="parity{parity}">
89 <div style="font-family:monospace" class="parity{parity}">
90 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
90 <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
91 </div>'
91 </div>'
92 annotateline = '
92 annotateline = '
93 <tr class="parity{parity}">
93 <tr class="parity{parity}">
94 <td class="linenr">
94 <td class="linenr">
95 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
95 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
96 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
96 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
97 </td>
97 </td>
98 <td class="lineno">
98 <td class="lineno">
99 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
99 <a href="#{lineid}" id="{lineid}">{linenumber}</a>
100 </td>
100 </td>
101 <td class="source">{line|escape}</td>
101 <td class="source">{line|escape}</td>
102 </tr>'
102 </tr>'
103 difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
103 difflineplus = '<span class="difflineplus"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
104 difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
104 difflineminus = '<span class="difflineminus"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
105 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
105 difflineat = '<span class="difflineat"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
106 diffline = '<a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
106 diffline = '<a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
107
107
108 comparisonblock ='
108 comparisonblock ='
109 <tbody class="block">
109 <tbody class="block">
110 {lines}
110 {lines}
111 </tbody>'
111 </tbody>'
112 comparisonline = '
112 comparisonline = '
113 <tr>
113 <tr>
114 <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
114 <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
115 <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
115 <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
116 </tr>'
116 </tr>'
117
117
118 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
118 changesetlink = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
119 changelogparent = '
119 changelogparent = '
120 <tr>
120 <tr>
121 <th class="parent">parent {rev}:</th>
121 <th class="parent">parent {rev}:</th>
122 <td class="parent">
122 <td class="parent">
123 {changesetlink}
123 {changesetlink}
124 </td>
124 </td>
125 </tr>'
125 </tr>'
126 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
126 changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
127 changesetparent = '
127 changesetparent = '
128 <dt>parent {rev}</dt>
128 <dt>parent {rev}</dt>
129 <dd>{changesetlink}</dd>'
129 <dd>{changesetlink}</dd>'
130 changesetparentdiff = '
130 changesetparentdiff = '
131 <dt>parent {rev}</dt>
131 <dt>parent {rev}</dt>
132 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', \'({difffrom})\')}</dd>'
132 <dd>{changesetlink} {ifeq(node, basenode, '(current diff)', \'({difffrom})\')}</dd>'
133 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
133 difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>'
134 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
134 filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
135 filerevparent = '
135 filerevparent = '
136 <dt>parent {rev}</dt>
136 <dt>parent {rev}</dt>
137 <dd>
137 <dd>
138 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
138 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
139 {rename%filerename}{node|short}
139 {rename%filerename}{node|short}
140 </a>
140 </a>
141 </dd>'
141 </dd>'
142 filerename = '{file|escape}@'
142 filerename = '{file|escape}@'
143 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
143 filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
144 fileannotateparent = '
144 fileannotateparent = '
145 <dt>parent {rev}</dt>
145 <dt>parent {rev}</dt>
146 <dd>
146 <dd>
147 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
147 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
148 {rename%filerename}{node|short}
148 {rename%filerename}{node|short}
149 </a>
149 </a>
150 </dd>'
150 </dd>'
151 changelogchild = '
151 changelogchild = '
152 <dt>child {rev}:</dt>
152 <dt>child {rev}:</dt>
153 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
153 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
154 changesetchild = '
154 changesetchild = '
155 <dt>child {rev}</dt>
155 <dt>child {rev}</dt>
156 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
156 <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
157 filerevchild = '
157 filerevchild = '
158 <dt>child {rev}</dt>
158 <dt>child {rev}</dt>
159 <dd>
159 <dd>
160 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
160 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
161 </dd>'
161 </dd>'
162 fileannotatechild = '
162 fileannotatechild = '
163 <dt>child {rev}</dt>
163 <dt>child {rev}</dt>
164 <dd>
164 <dd>
165 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
165 <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
166 </dd>'
166 </dd>'
167 tags = tags.tmpl
167 tags = tags.tmpl
168 tagentry = '
168 tagentry = '
169 <tr class="parity{parity}">
169 <tr class="parity{parity}">
170 <td class="nowrap age">{date|rfc822date}</td>
170 <td class="nowrap age">{date|rfc822date}</td>
171 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
171 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
172 <td class="nowrap">
172 <td class="nowrap">
173 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
173 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
174 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
174 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
175 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
175 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
176 </td>
176 </td>
177 </tr>'
177 </tr>'
178 bookmarks = bookmarks.tmpl
178 bookmarks = bookmarks.tmpl
179 bookmarkentry = '
179 bookmarkentry = '
180 <tr class="parity{parity}">
180 <tr class="parity{parity}">
181 <td class="nowrap date">{date|rfc822date}</td>
181 <td class="nowrap date">{date|rfc822date}</td>
182 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
182 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
183 <td class="nowrap">
183 <td class="nowrap">
184 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
184 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
185 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
185 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
186 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
186 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
187 </td>
187 </td>
188 </tr>'
188 </tr>'
189 branches = branches.tmpl
189 branches = branches.tmpl
190 branchentry = '
190 branchentry = '
191 <tr class="parity{parity}">
191 <tr class="parity{parity}">
192 <td class="nowrap age">{date|rfc822date}</td>
192 <td class="nowrap age">{date|rfc822date}</td>
193 <td><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
193 <td><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
194 <td class="{status}">{branch|escape}</td>
194 <td class="{status}">{branch|escape}</td>
195 <td class="nowrap">
195 <td class="nowrap">
196 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
196 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
197 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
197 <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
198 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
198 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
199 </td>
199 </td>
200 </tr>'
200 </tr>'
201 diffblock = '<pre>{lines}</pre>'
201 diffblock = '<pre>{lines}</pre>'
202 filediffparent = '
202 filediffparent = '
203 <dt>parent {rev}</dt>
203 <dt>parent {rev}</dt>
204 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
204 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
205 filecompparent = '
205 filecompparent = '
206 <dt>parent {rev}</dt>
206 <dt>parent {rev}</dt>
207 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
207 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
208 filelogparent = '
208 filelogparent = '
209 <tr>
209 <tr>
210 <td align="right">parent {rev}:&nbsp;</td>
210 <td align="right">parent {rev}:&nbsp;</td>
211 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
211 <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
212 </tr>'
212 </tr>'
213 filediffchild = '
213 filediffchild = '
214 <dt>child {rev}</dt>
214 <dt>child {rev}</dt>
215 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
215 <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
216 filecompchild = '
216 filecompchild = '
217 <dt>child {rev}</dt>
217 <dt>child {rev}</dt>
218 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
218 <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
219 filelogchild = '
219 filelogchild = '
220 <tr>
220 <tr>
221 <td align="right">child {rev}:&nbsp;</td>
221 <td align="right">child {rev}:&nbsp;</td>
222 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
222 <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
223 </tr>'
223 </tr>'
224 shortlog = shortlog.tmpl
224 shortlog = shortlog.tmpl
225 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
225 tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
226 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
226 branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
227 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
227 inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
228 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
228 bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
229 shortlogentry = '
229 shortlogentry = '
230 <tr class="parity{parity}">
230 <tr class="parity{parity}">
231 <td class="nowrap age">{date|rfc822date}</td>
231 <td class="nowrap age">{date|rfc822date}</td>
232 <td>{author|person}</td>
232 <td>{author|person}</td>
233 <td>
233 <td>
234 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
234 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
235 {desc|strip|firstline|escape|nonempty}
235 {desc|strip|firstline|escape|nonempty}
236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
236 <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
237 </a>
237 </a>
238 </td>
238 </td>
239 <td class="nowrap">
239 <td class="nowrap">
240 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
240 <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
241 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
241 <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
242 </td>
242 </td>
243 </tr>'
243 </tr>'
244 filelogentry = '
244 filelogentry = '
245 <tr class="parity{parity}">
245 <tr class="parity{parity}">
246 <td class="nowrap age">{date|rfc822date}</td>
246 <td class="nowrap age">{date|rfc822date}</td>
247 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
247 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
248 <td class="nowrap">
248 <td class="nowrap">
249 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
249 <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
250 {rename%filelogrename}
250 {rename%filelogrename}
251 </td>
251 </td>
252 </tr>'
252 </tr>'
253 archiveentry = '<li><a href="{url|urlescape}archive/{node|short}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
253 archiveentry = '<li><a href="{url|urlescape}archive/{node|short}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
254 indexentry = '
254 indexentry = '
255 <tr class="parity{parity}">
255 <tr class="parity{parity}">
256 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
256 <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
257 <td>{description}</td>
257 <td>{description}</td>
258 <td>{contact|obfuscate}</td>
258 <td>{contact|obfuscate}</td>
259 <td class="age">{lastchange|rfc822date}</td>
259 <td class="age">{lastchange|rfc822date}</td>
260 <td class="indexlinks">{archives%indexarchiveentry}</td>
260 <td class="indexlinks">{archives%indexarchiveentry}</td>
261 <td>
261 <td>
262 {if(isdirectory, '',
262 {if(isdirectory, '',
263 '<div class="rss_logo">
263 '<div class="rss_logo">
264 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
264 <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
265 </div>'
265 </div>'
266 )}
266 )}
267 </td>
267 </td>
268 </tr>\n'
268 </tr>\n'
269 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
269 indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
270 index = index.tmpl
270 index = index.tmpl
271 urlparameter = '{separator}{name}={value|urlescape}'
271 urlparameter = '{separator}{name}={value|urlescape}'
272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
272 hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
273 graph = graph.tmpl
273 graph = graph.tmpl
274 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
274 breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '
@@ -1,193 +1,196 b''
1 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
1 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
2 a { color:#0000cc; }
2 a { color:#0000cc; }
3 a:hover, a:visited, a:active { color:#880000; }
3 a:hover, a:visited, a:active { color:#880000; }
4 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
4 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
5 div.page_header a:visited { color:#0000cc; }
5 div.page_header a:visited { color:#0000cc; }
6 div.page_header a:hover { color:#880000; }
6 div.page_header a:hover { color:#880000; }
7 div.page_nav { padding:8px; }
7 div.page_nav { padding:8px; }
8 div.page_nav a:visited { color:#0000cc; }
8 div.page_nav a:visited { color:#0000cc; }
9 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
9 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
10 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
10 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
11 div.page_footer_text { float:left; color:#555555; font-style:italic; }
11 div.page_footer_text { float:left; color:#555555; font-style:italic; }
12 div.page_body { padding:8px; }
12 div.page_body { padding:8px; }
13 div.title, a.title {
13 div.title, a.title {
14 display:block; padding:6px 8px;
14 display:block; padding:6px 8px;
15 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
15 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
16 }
16 }
17 a.title:hover { background-color: #d9d8d1; }
17 a.title:hover { background-color: #d9d8d1; }
18 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
18 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
19 div.log_body { padding:8px 8px 8px 150px; }
19 div.log_body { padding:8px 8px 8px 150px; }
20 .age { white-space:nowrap; }
20 .age { white-space:nowrap; }
21 span.age { position:relative; float:left; width:142px; font-style:italic; }
21 span.age { position:relative; float:left; width:142px; font-style:italic; }
22 div.log_link {
22 div.log_link {
23 padding:0px 8px;
23 padding:0px 8px;
24 font-size:10px; font-family:sans-serif; font-style:normal;
24 font-size:10px; font-family:sans-serif; font-style:normal;
25 position:relative; float:left; width:136px;
25 position:relative; float:left; width:136px;
26 }
26 }
27 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
27 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
28 a.list { text-decoration:none; color:#000000; }
28 a.list { text-decoration:none; color:#000000; }
29 a.list:hover { text-decoration:underline; color:#880000; }
29 a.list:hover { text-decoration:underline; color:#880000; }
30 table { padding:8px 4px; }
30 table { padding:8px 4px; }
31 th { padding:2px 5px; font-size:12px; text-align:left; }
31 th { padding:2px 5px; font-size:12px; text-align:left; }
32 tr.light:hover, .parity0:hover { background-color:#edece6; }
32 tr.light:hover, .parity0:hover { background-color:#edece6; }
33 tr.dark, .parity1 { background-color:#f6f6f0; }
33 tr.dark, .parity1 { background-color:#f6f6f0; }
34 tr.dark:hover, .parity1:hover { background-color:#edece6; }
34 tr.dark:hover, .parity1:hover { background-color:#edece6; }
35 td { padding:2px 5px; font-size:12px; vertical-align:top; }
35 td { padding:2px 5px; font-size:12px; vertical-align:top; }
36 td.closed { background-color: #99f; }
36 td.closed { background-color: #99f; }
37 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
37 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
38 td.indexlinks { white-space: nowrap; }
38 td.indexlinks { white-space: nowrap; }
39 td.indexlinks a {
39 td.indexlinks a {
40 padding: 2px 5px; line-height: 10px;
40 padding: 2px 5px; line-height: 10px;
41 border: 1px solid;
41 border: 1px solid;
42 color: #ffffff; background-color: #7777bb;
42 color: #ffffff; background-color: #7777bb;
43 border-color: #aaaadd #333366 #333366 #aaaadd;
43 border-color: #aaaadd #333366 #333366 #aaaadd;
44 font-weight: bold; text-align: center; text-decoration: none;
44 font-weight: bold; text-align: center; text-decoration: none;
45 font-size: 10px;
45 font-size: 10px;
46 }
46 }
47 td.indexlinks a:hover { background-color: #6666aa; }
47 td.indexlinks a:hover { background-color: #6666aa; }
48 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
48 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
49 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
49 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
50 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
50 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
51 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
51 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
52 .linenr { color:#999999; text-decoration:none }
52 .linenr { color:#999999; text-decoration:none }
53 div.rss_logo { float: right; white-space: nowrap; }
53 div.rss_logo { float: right; white-space: nowrap; }
54 div.rss_logo a {
54 div.rss_logo a {
55 padding:3px 6px; line-height:10px;
55 padding:3px 6px; line-height:10px;
56 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
56 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
57 color:#ffffff; background-color:#ff6600;
57 color:#ffffff; background-color:#ff6600;
58 font-weight:bold; font-family:sans-serif; font-size:10px;
58 font-weight:bold; font-family:sans-serif; font-size:10px;
59 text-align:center; text-decoration:none;
59 text-align:center; text-decoration:none;
60 }
60 }
61 div.rss_logo a:hover { background-color:#ee5500; }
61 div.rss_logo a:hover { background-color:#ee5500; }
62 pre { margin: 0; }
62 pre { margin: 0; }
63 span.logtags span {
63 span.logtags span {
64 padding: 0px 4px;
64 padding: 0px 4px;
65 font-size: 10px;
65 font-size: 10px;
66 font-weight: normal;
66 font-weight: normal;
67 border: 1px solid;
67 border: 1px solid;
68 background-color: #ffaaff;
68 background-color: #ffaaff;
69 border-color: #ffccff #ff00ee #ff00ee #ffccff;
69 border-color: #ffccff #ff00ee #ff00ee #ffccff;
70 }
70 }
71 span.logtags span.tagtag {
71 span.logtags span.tagtag {
72 background-color: #ffffaa;
72 background-color: #ffffaa;
73 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
73 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
74 }
74 }
75 span.logtags span.branchtag {
75 span.logtags span.branchtag {
76 background-color: #aaffaa;
76 background-color: #aaffaa;
77 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
77 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
78 }
78 }
79 span.logtags span.inbranchtag {
79 span.logtags span.inbranchtag {
80 background-color: #d5dde6;
80 background-color: #d5dde6;
81 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
81 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
82 }
82 }
83 span.logtags span.bookmarktag {
83 span.logtags span.bookmarktag {
84 background-color: #afdffa;
84 background-color: #afdffa;
85 border-color: #ccecff #46ace6 #46ace6 #ccecff;
85 border-color: #ccecff #46ace6 #46ace6 #ccecff;
86 }
86 }
87 span.difflineplus { color:#008800; }
88 span.difflineminus { color:#cc0000; }
89 span.difflineat { color:#990099; }
87
90
88 /* Graph */
91 /* Graph */
89 div#wrapper {
92 div#wrapper {
90 position: relative;
93 position: relative;
91 margin: 0;
94 margin: 0;
92 padding: 0;
95 padding: 0;
93 margin-top: 3px;
96 margin-top: 3px;
94 }
97 }
95
98
96 canvas {
99 canvas {
97 position: absolute;
100 position: absolute;
98 z-index: 5;
101 z-index: 5;
99 top: -0.9em;
102 top: -0.9em;
100 margin: 0;
103 margin: 0;
101 }
104 }
102
105
103 ul#nodebgs {
106 ul#nodebgs {
104 list-style: none inside none;
107 list-style: none inside none;
105 padding: 0;
108 padding: 0;
106 margin: 0;
109 margin: 0;
107 top: -0.7em;
110 top: -0.7em;
108 }
111 }
109
112
110 ul#graphnodes li, ul#nodebgs li {
113 ul#graphnodes li, ul#nodebgs li {
111 height: 39px;
114 height: 39px;
112 }
115 }
113
116
114 ul#graphnodes {
117 ul#graphnodes {
115 position: absolute;
118 position: absolute;
116 z-index: 10;
119 z-index: 10;
117 top: -0.8em;
120 top: -0.8em;
118 list-style: none inside none;
121 list-style: none inside none;
119 padding: 0;
122 padding: 0;
120 }
123 }
121
124
122 ul#graphnodes li .info {
125 ul#graphnodes li .info {
123 display: block;
126 display: block;
124 font-size: 100%;
127 font-size: 100%;
125 position: relative;
128 position: relative;
126 top: -3px;
129 top: -3px;
127 font-style: italic;
130 font-style: italic;
128 }
131 }
129
132
130 /* Comparison */
133 /* Comparison */
131 .legend {
134 .legend {
132 padding: 1.5% 0 1.5% 0;
135 padding: 1.5% 0 1.5% 0;
133 }
136 }
134
137
135 .legendinfo {
138 .legendinfo {
136 border: 1px solid #d9d8d1;
139 border: 1px solid #d9d8d1;
137 font-size: 80%;
140 font-size: 80%;
138 text-align: center;
141 text-align: center;
139 padding: 0.5%;
142 padding: 0.5%;
140 }
143 }
141
144
142 .equal {
145 .equal {
143 background-color: #ffffff;
146 background-color: #ffffff;
144 }
147 }
145
148
146 .delete {
149 .delete {
147 background-color: #faa;
150 background-color: #faa;
148 color: #333;
151 color: #333;
149 }
152 }
150
153
151 .insert {
154 .insert {
152 background-color: #ffa;
155 background-color: #ffa;
153 }
156 }
154
157
155 .replace {
158 .replace {
156 background-color: #e8e8e8;
159 background-color: #e8e8e8;
157 }
160 }
158
161
159 .comparison {
162 .comparison {
160 overflow-x: auto;
163 overflow-x: auto;
161 }
164 }
162
165
163 .header th {
166 .header th {
164 text-align: center;
167 text-align: center;
165 }
168 }
166
169
167 .block {
170 .block {
168 border-top: 1px solid #d9d8d1;
171 border-top: 1px solid #d9d8d1;
169 }
172 }
170
173
171 .scroll-loading {
174 .scroll-loading {
172 -webkit-animation: change_color 1s linear 0s infinite alternate;
175 -webkit-animation: change_color 1s linear 0s infinite alternate;
173 -moz-animation: change_color 1s linear 0s infinite alternate;
176 -moz-animation: change_color 1s linear 0s infinite alternate;
174 -o-animation: change_color 1s linear 0s infinite alternate;
177 -o-animation: change_color 1s linear 0s infinite alternate;
175 animation: change_color 1s linear 0s infinite alternate;
178 animation: change_color 1s linear 0s infinite alternate;
176 }
179 }
177
180
178 @-webkit-keyframes change_color {
181 @-webkit-keyframes change_color {
179 from { background-color: #A0CEFF; } to { }
182 from { background-color: #A0CEFF; } to { }
180 }
183 }
181 @-moz-keyframes change_color {
184 @-moz-keyframes change_color {
182 from { background-color: #A0CEFF; } to { }
185 from { background-color: #A0CEFF; } to { }
183 }
186 }
184 @-o-keyframes change_color {
187 @-o-keyframes change_color {
185 from { background-color: #A0CEFF; } to { }
188 from { background-color: #A0CEFF; } to { }
186 }
189 }
187 @keyframes change_color {
190 @keyframes change_color {
188 from { background-color: #A0CEFF; } to { }
191 from { background-color: #A0CEFF; } to { }
189 }
192 }
190
193
191 .scroll-loading-error {
194 .scroll-loading-error {
192 background-color: #FFCCCC !important;
195 background-color: #FFCCCC !important;
193 }
196 }
@@ -1,554 +1,558 b''
1 /*** Initial Settings ***/
1 /*** Initial Settings ***/
2 * {
2 * {
3 margin: 0;
3 margin: 0;
4 padding: 0;
4 padding: 0;
5 font-weight: normal;
5 font-weight: normal;
6 font-style: normal;
6 font-style: normal;
7 }
7 }
8
8
9 html {
9 html {
10 font-size: 100%;
10 font-size: 100%;
11 font-family: sans-serif;
11 font-family: sans-serif;
12 }
12 }
13
13
14 body {
14 body {
15 font-size: 77%;
15 font-size: 77%;
16 margin: 15px 50px;
16 margin: 15px 50px;
17 background: #4B4B4C;
17 background: #4B4B4C;
18 }
18 }
19
19
20 a {
20 a {
21 color:#0000cc;
21 color:#0000cc;
22 text-decoration: none;
22 text-decoration: none;
23 }
23 }
24 /*** end of Initial Settings ***/
24 /*** end of Initial Settings ***/
25
25
26
26
27 /** common settings **/
27 /** common settings **/
28 div#container {
28 div#container {
29 background: #FFFFFF;
29 background: #FFFFFF;
30 position: relative;
30 position: relative;
31 color: #666;
31 color: #666;
32 }
32 }
33
33
34 div.page-header {
34 div.page-header {
35 padding: 50px 20px 0;
35 padding: 50px 20px 0;
36 background: #006699 top left repeat-x;
36 background: #006699 top left repeat-x;
37 position: relative;
37 position: relative;
38 }
38 }
39 div.page-header h1 {
39 div.page-header h1 {
40 margin: 10px 0 30px;
40 margin: 10px 0 30px;
41 font-size: 1.8em;
41 font-size: 1.8em;
42 font-weight: bold;
42 font-weight: bold;
43 font-family: osaka,'MS P Gothic', Georgia, serif;
43 font-family: osaka,'MS P Gothic', Georgia, serif;
44 letter-spacing: 1px;
44 letter-spacing: 1px;
45 color: #DDD;
45 color: #DDD;
46 }
46 }
47 div.page-header h1 a {
47 div.page-header h1 a {
48 font-weight: bold;
48 font-weight: bold;
49 color: #FFF;
49 color: #FFF;
50 }
50 }
51 div.page-header a {
51 div.page-header a {
52 text-decoration: none;
52 text-decoration: none;
53 }
53 }
54
54
55 div.page-header form {
55 div.page-header form {
56 position: absolute;
56 position: absolute;
57 margin-bottom: 2px;
57 margin-bottom: 2px;
58 bottom: 0;
58 bottom: 0;
59 right: 20px;
59 right: 20px;
60 }
60 }
61 div.page-header form label {
61 div.page-header form label {
62 color: #DDD;
62 color: #DDD;
63 }
63 }
64 div.page-header form input {
64 div.page-header form input {
65 padding: 2px;
65 padding: 2px;
66 border: solid 1px #DDD;
66 border: solid 1px #DDD;
67 }
67 }
68 div.page-header form dl {
68 div.page-header form dl {
69 overflow: hidden;
69 overflow: hidden;
70 }
70 }
71 div.page-header form dl dt {
71 div.page-header form dl dt {
72 font-size: 1.2em;
72 font-size: 1.2em;
73 }
73 }
74 div.page-header form dl dt,
74 div.page-header form dl dt,
75 div.page-header form dl dd {
75 div.page-header form dl dd {
76 margin: 0 0 0 5px;
76 margin: 0 0 0 5px;
77 float: left;
77 float: left;
78 height: 24px;
78 height: 24px;
79 line-height: 20px;
79 line-height: 20px;
80 }
80 }
81
81
82 ul.page-nav {
82 ul.page-nav {
83 margin: 10px 0 0 0;
83 margin: 10px 0 0 0;
84 list-style-type: none;
84 list-style-type: none;
85 overflow: hidden;
85 overflow: hidden;
86 width: 900px;
86 width: 900px;
87 }
87 }
88 ul.page-nav li {
88 ul.page-nav li {
89 margin: 0 2px 0 0;
89 margin: 0 2px 0 0;
90 float: left;
90 float: left;
91 width: 80px;
91 width: 80px;
92 height: 24px;
92 height: 24px;
93 font-size: 1.1em;
93 font-size: 1.1em;
94 line-height: 24px;
94 line-height: 24px;
95 text-align: center;
95 text-align: center;
96 }
96 }
97 ul.page-nav li.current {
97 ul.page-nav li.current {
98 background: #FFF;
98 background: #FFF;
99 }
99 }
100 ul.page-nav li a {
100 ul.page-nav li a {
101 height: 24px;
101 height: 24px;
102 color: #666;
102 color: #666;
103 background: #DDD;
103 background: #DDD;
104 display: block;
104 display: block;
105 text-decoration: none;
105 text-decoration: none;
106 }
106 }
107 ul.page-nav li a:hover {
107 ul.page-nav li a:hover {
108 color:#333;
108 color:#333;
109 background: #FFF;
109 background: #FFF;
110 }
110 }
111
111
112 ul.submenu {
112 ul.submenu {
113 margin: 10px 0 -10px 20px;
113 margin: 10px 0 -10px 20px;
114 list-style-type: none;
114 list-style-type: none;
115 }
115 }
116 ul.submenu li {
116 ul.submenu li {
117 margin: 0 10px 0 0;
117 margin: 0 10px 0 0;
118 font-size: 1.2em;
118 font-size: 1.2em;
119 display: inline;
119 display: inline;
120 }
120 }
121
121
122 h2 {
122 h2 {
123 margin: 20px 0 10px;
123 margin: 20px 0 10px;
124 height: 30px;
124 height: 30px;
125 line-height: 30px;
125 line-height: 30px;
126 text-indent: 20px;
126 text-indent: 20px;
127 background: #FFF;
127 background: #FFF;
128 font-size: 1.2em;
128 font-size: 1.2em;
129 border-top: dotted 1px #D5E1E6;
129 border-top: dotted 1px #D5E1E6;
130 font-weight: bold;
130 font-weight: bold;
131 }
131 }
132 h2.no-link {
132 h2.no-link {
133 color:#006699;
133 color:#006699;
134 }
134 }
135 h2.no-border {
135 h2.no-border {
136 color: #FFF;
136 color: #FFF;
137 background: #006699;
137 background: #006699;
138 border: 0;
138 border: 0;
139 }
139 }
140 h2 a {
140 h2 a {
141 font-weight:bold;
141 font-weight:bold;
142 color:#006699;
142 color:#006699;
143 }
143 }
144
144
145 div.page-path {
145 div.page-path {
146 text-align: right;
146 text-align: right;
147 padding: 20px 30px 10px 0;
147 padding: 20px 30px 10px 0;
148 border:solid #d9d8d1;
148 border:solid #d9d8d1;
149 border-width:0px 0px 1px;
149 border-width:0px 0px 1px;
150 font-size: 1.2em;
150 font-size: 1.2em;
151 }
151 }
152
152
153 div.page-footer {
153 div.page-footer {
154 margin: 50px 0 0;
154 margin: 50px 0 0;
155 position: relative;
155 position: relative;
156 }
156 }
157 div.page-footer p {
157 div.page-footer p {
158 position: relative;
158 position: relative;
159 left: 20px;
159 left: 20px;
160 bottom: 5px;
160 bottom: 5px;
161 font-size: 1.2em;
161 font-size: 1.2em;
162 }
162 }
163
163
164 ul.rss-logo {
164 ul.rss-logo {
165 position: absolute;
165 position: absolute;
166 top: -10px;
166 top: -10px;
167 right: 20px;
167 right: 20px;
168 height: 20px;
168 height: 20px;
169 list-style-type: none;
169 list-style-type: none;
170 }
170 }
171 ul.rss-logo li {
171 ul.rss-logo li {
172 display: inline;
172 display: inline;
173 }
173 }
174 ul.rss-logo li a {
174 ul.rss-logo li a {
175 padding: 3px 6px;
175 padding: 3px 6px;
176 line-height: 10px;
176 line-height: 10px;
177 border:1px solid;
177 border:1px solid;
178 border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
178 border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
179 color:#ffffff;
179 color:#ffffff;
180 background-color:#ff6600;
180 background-color:#ff6600;
181 font-weight:bold;
181 font-weight:bold;
182 font-family:sans-serif;
182 font-family:sans-serif;
183 font-size:10px;
183 font-size:10px;
184 text-align:center;
184 text-align:center;
185 text-decoration:none;
185 text-decoration:none;
186 }
186 }
187 div.rss-logo li a:hover {
187 div.rss-logo li a:hover {
188 background-color:#ee5500;
188 background-color:#ee5500;
189 }
189 }
190
190
191 p.normal {
191 p.normal {
192 margin: 20px 0 20px 30px;
192 margin: 20px 0 20px 30px;
193 font-size: 1.2em;
193 font-size: 1.2em;
194 }
194 }
195
195
196 table {
196 table {
197 margin: 10px 0 0 20px;
197 margin: 10px 0 0 20px;
198 width: 95%;
198 width: 95%;
199 border-collapse: collapse;
199 border-collapse: collapse;
200 }
200 }
201 table tr td {
201 table tr td {
202 font-size: 1.1em;
202 font-size: 1.1em;
203 }
203 }
204 table tr td.nowrap {
204 table tr td.nowrap {
205 white-space: nowrap;
205 white-space: nowrap;
206 }
206 }
207 table tr td.closed {
207 table tr td.closed {
208 background-color: #99f;
208 background-color: #99f;
209 }
209 }
210 /*
210 /*
211 table tr.parity0:hover,
211 table tr.parity0:hover,
212 table tr.parity1:hover {
212 table tr.parity1:hover {
213 background: #D5E1E6;
213 background: #D5E1E6;
214 }
214 }
215 */
215 */
216 table tr.parity0 {
216 table tr.parity0 {
217 background: #F1F6F7;
217 background: #F1F6F7;
218 }
218 }
219 table tr.parity1 {
219 table tr.parity1 {
220 background: #FFFFFF;
220 background: #FFFFFF;
221 }
221 }
222 table tr td {
222 table tr td {
223 padding: 5px 5px;
223 padding: 5px 5px;
224 }
224 }
225 table.annotated tr td {
225 table.annotated tr td {
226 padding: 0px 5px;
226 padding: 0px 5px;
227 }
227 }
228
228
229 span.logtags span {
229 span.logtags span {
230 padding: 2px 6px;
230 padding: 2px 6px;
231 font-weight: normal;
231 font-weight: normal;
232 font-size: 11px;
232 font-size: 11px;
233 border: 1px solid;
233 border: 1px solid;
234 background-color: #ffaaff;
234 background-color: #ffaaff;
235 border-color: #ffccff #ff00ee #ff00ee #ffccff;
235 border-color: #ffccff #ff00ee #ff00ee #ffccff;
236 }
236 }
237 span.logtags span.tagtag {
237 span.logtags span.tagtag {
238 background-color: #ffffaa;
238 background-color: #ffffaa;
239 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
239 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
240 }
240 }
241 span.logtags span.branchtag {
241 span.logtags span.branchtag {
242 background-color: #aaffaa;
242 background-color: #aaffaa;
243 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
243 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
244 }
244 }
245 span.logtags span.inbranchtag {
245 span.logtags span.inbranchtag {
246 background-color: #d5dde6;
246 background-color: #d5dde6;
247 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
247 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
248 }
248 }
249 span.logtags span.bookmarktag {
249 span.logtags span.bookmarktag {
250 background-color: #afdffa;
250 background-color: #afdffa;
251 border-color: #ccecff #46ace6 #46ace6 #ccecff;
251 border-color: #ccecff #46ace6 #46ace6 #ccecff;
252 }
252 }
253
253
254 div.diff pre {
254 div.diff pre {
255 margin: 10px 0 0 0;
255 margin: 10px 0 0 0;
256 }
256 }
257 div.diff pre span {
257 div.diff pre span {
258 font-family: monospace;
258 font-family: monospace;
259 white-space: pre;
259 white-space: pre;
260 font-size: 1.2em;
260 font-size: 1.2em;
261 padding: 3px 0;
261 padding: 3px 0;
262 }
262 }
263 span.difflineplus { color:#008800; }
264 span.difflineminus { color:#cc0000; }
265 span.difflineat { color:#990099; }
266
263 td.source {
267 td.source {
264 white-space: pre;
268 white-space: pre;
265 font-family: monospace;
269 font-family: monospace;
266 margin: 10px 30px 0;
270 margin: 10px 30px 0;
267 font-size: 1.2em;
271 font-size: 1.2em;
268 font-family: monospace;
272 font-family: monospace;
269 }
273 }
270 div.source div.parity0,
274 div.source div.parity0,
271 div.source div.parity1 {
275 div.source div.parity1 {
272 padding: 1px;
276 padding: 1px;
273 font-size: 1.2em;
277 font-size: 1.2em;
274 }
278 }
275 div.source div.parity0 {
279 div.source div.parity0 {
276 background: #F1F6F7;
280 background: #F1F6F7;
277 }
281 }
278 div.source div.parity1 {
282 div.source div.parity1 {
279 background: #FFFFFF;
283 background: #FFFFFF;
280 }
284 }
281 div.parity0:hover,
285 div.parity0:hover,
282 div.parity1:hover {
286 div.parity1:hover {
283 background: #D5E1E6;
287 background: #D5E1E6;
284 }
288 }
285 .linenr {
289 .linenr {
286 color: #999;
290 color: #999;
287 text-align: right;
291 text-align: right;
288 }
292 }
289 .lineno {
293 .lineno {
290 text-align: right;
294 text-align: right;
291 }
295 }
292 .lineno a {
296 .lineno a {
293 color: #999;
297 color: #999;
294 }
298 }
295 td.linenr {
299 td.linenr {
296 width: 60px;
300 width: 60px;
297 }
301 }
298
302
299 div#powered-by {
303 div#powered-by {
300 position: absolute;
304 position: absolute;
301 width: 75px;
305 width: 75px;
302 top: 15px;
306 top: 15px;
303 right: 20px;
307 right: 20px;
304 font-size: 1.2em;
308 font-size: 1.2em;
305 }
309 }
306 div#powered-by a {
310 div#powered-by a {
307 color: #EEE;
311 color: #EEE;
308 text-decoration: none;
312 text-decoration: none;
309 }
313 }
310 div#powered-by a:hover {
314 div#powered-by a:hover {
311 text-decoration: underline;
315 text-decoration: underline;
312 }
316 }
313 /*
317 /*
314 div#monoblue-corner-top-left {
318 div#monoblue-corner-top-left {
315 position: absolute;
319 position: absolute;
316 top: 0;
320 top: 0;
317 left: 0;
321 left: 0;
318 width: 10px;
322 width: 10px;
319 height: 10px;
323 height: 10px;
320 background: url(./monoblue-corner.png) top left no-repeat !important;
324 background: url(./monoblue-corner.png) top left no-repeat !important;
321 background: none;
325 background: none;
322 }
326 }
323 div#monoblue-corner-top-right {
327 div#monoblue-corner-top-right {
324 position: absolute;
328 position: absolute;
325 top: 0;
329 top: 0;
326 right: 0;
330 right: 0;
327 width: 10px;
331 width: 10px;
328 height: 10px;
332 height: 10px;
329 background: url(./monoblue-corner.png) top right no-repeat !important;
333 background: url(./monoblue-corner.png) top right no-repeat !important;
330 background: none;
334 background: none;
331 }
335 }
332 div#monoblue-corner-bottom-left {
336 div#monoblue-corner-bottom-left {
333 position: absolute;
337 position: absolute;
334 bottom: 0;
338 bottom: 0;
335 left: 0;
339 left: 0;
336 width: 10px;
340 width: 10px;
337 height: 10px;
341 height: 10px;
338 background: url(./monoblue-corner.png) bottom left no-repeat !important;
342 background: url(./monoblue-corner.png) bottom left no-repeat !important;
339 background: none;
343 background: none;
340 }
344 }
341 div#monoblue-corner-bottom-right {
345 div#monoblue-corner-bottom-right {
342 position: absolute;
346 position: absolute;
343 bottom: 0;
347 bottom: 0;
344 right: 0;
348 right: 0;
345 width: 10px;
349 width: 10px;
346 height: 10px;
350 height: 10px;
347 background: url(./monoblue-corner.png) bottom right no-repeat !important;
351 background: url(./monoblue-corner.png) bottom right no-repeat !important;
348 background: none;
352 background: none;
349 }
353 }
350 */
354 */
351 /** end of common settings **/
355 /** end of common settings **/
352
356
353 /** summary **/
357 /** summary **/
354 dl.overview {
358 dl.overview {
355 margin: 0 0 0 30px;
359 margin: 0 0 0 30px;
356 font-size: 1.1em;
360 font-size: 1.1em;
357 overflow: hidden;
361 overflow: hidden;
358 }
362 }
359 dl.overview dt,
363 dl.overview dt,
360 dl.overview dd {
364 dl.overview dd {
361 margin: 5px 0;
365 margin: 5px 0;
362 float: left;
366 float: left;
363 }
367 }
364 dl.overview dt {
368 dl.overview dt {
365 clear: left;
369 clear: left;
366 font-weight: bold;
370 font-weight: bold;
367 width: 150px;
371 width: 150px;
368 }
372 }
369 /** end of summary **/
373 /** end of summary **/
370
374
371 /** chagelog **/
375 /** chagelog **/
372 h3.changelog {
376 h3.changelog {
373 margin: 20px 0 5px 30px;
377 margin: 20px 0 5px 30px;
374 padding: 0 0 2px;
378 padding: 0 0 2px;
375 font-size: 1.4em;
379 font-size: 1.4em;
376 border-bottom: dotted 1px #D5E1E6;
380 border-bottom: dotted 1px #D5E1E6;
377 }
381 }
378 ul.changelog-entry {
382 ul.changelog-entry {
379 margin: 0 0 10px 30px;
383 margin: 0 0 10px 30px;
380 list-style-type: none;
384 list-style-type: none;
381 position: relative;
385 position: relative;
382 }
386 }
383 ul.changelog-entry li span.revdate {
387 ul.changelog-entry li span.revdate {
384 font-size: 1.1em;
388 font-size: 1.1em;
385 }
389 }
386 ul.changelog-entry li.age {
390 ul.changelog-entry li.age {
387 position: absolute;
391 position: absolute;
388 top: -25px;
392 top: -25px;
389 right: 10px;
393 right: 10px;
390 font-size: 1.4em;
394 font-size: 1.4em;
391 color: #CCC;
395 color: #CCC;
392 font-weight: bold;
396 font-weight: bold;
393 font-style: italic;
397 font-style: italic;
394 }
398 }
395 ul.changelog-entry li span.name {
399 ul.changelog-entry li span.name {
396 font-size: 1.2em;
400 font-size: 1.2em;
397 font-weight: bold;
401 font-weight: bold;
398 }
402 }
399 ul.changelog-entry li.description {
403 ul.changelog-entry li.description {
400 margin: 10px 0 0;
404 margin: 10px 0 0;
401 font-size: 1.1em;
405 font-size: 1.1em;
402 }
406 }
403 /** end of changelog **/
407 /** end of changelog **/
404
408
405 /** file **/
409 /** file **/
406 p.files {
410 p.files {
407 margin: 0 0 0 20px;
411 margin: 0 0 0 20px;
408 font-size: 2.0em;
412 font-size: 2.0em;
409 font-weight: bold;
413 font-weight: bold;
410 }
414 }
411 /** end of file **/
415 /** end of file **/
412
416
413 /** changeset **/
417 /** changeset **/
414 h3.changeset {
418 h3.changeset {
415 margin: 20px 0 5px 20px;
419 margin: 20px 0 5px 20px;
416 padding: 0 0 2px;
420 padding: 0 0 2px;
417 font-size: 1.6em;
421 font-size: 1.6em;
418 border-bottom: dotted 1px #D5E1E6;
422 border-bottom: dotted 1px #D5E1E6;
419 }
423 }
420 p.changeset-age {
424 p.changeset-age {
421 position: relative;
425 position: relative;
422 }
426 }
423 p.changeset-age span {
427 p.changeset-age span {
424 position: absolute;
428 position: absolute;
425 top: -25px;
429 top: -25px;
426 right: 10px;
430 right: 10px;
427 font-size: 1.4em;
431 font-size: 1.4em;
428 color: #CCC;
432 color: #CCC;
429 font-weight: bold;
433 font-weight: bold;
430 font-style: italic;
434 font-style: italic;
431 }
435 }
432 p.description {
436 p.description {
433 margin: 10px 30px 0 30px;
437 margin: 10px 30px 0 30px;
434 padding: 10px;
438 padding: 10px;
435 border: solid 1px #CCC;
439 border: solid 1px #CCC;
436 font-size: 1.2em;
440 font-size: 1.2em;
437 }
441 }
438 /** end of changeset **/
442 /** end of changeset **/
439
443
440 /** canvas **/
444 /** canvas **/
441 div#wrapper {
445 div#wrapper {
442 position: relative;
446 position: relative;
443 font-size: 1.2em;
447 font-size: 1.2em;
444 }
448 }
445
449
446 canvas {
450 canvas {
447 position: absolute;
451 position: absolute;
448 z-index: 5;
452 z-index: 5;
449 top: -0.7em;
453 top: -0.7em;
450 }
454 }
451
455
452 ul#nodebgs li.parity0 {
456 ul#nodebgs li.parity0 {
453 background: #F1F6F7;
457 background: #F1F6F7;
454 }
458 }
455
459
456 ul#nodebgs li.parity1 {
460 ul#nodebgs li.parity1 {
457 background: #FFFFFF;
461 background: #FFFFFF;
458 }
462 }
459
463
460 ul#graphnodes {
464 ul#graphnodes {
461 position: absolute;
465 position: absolute;
462 z-index: 10;
466 z-index: 10;
463 top: 7px;
467 top: 7px;
464 list-style: none inside none;
468 list-style: none inside none;
465 }
469 }
466
470
467 ul#nodebgs {
471 ul#nodebgs {
468 list-style: none inside none;
472 list-style: none inside none;
469 }
473 }
470
474
471 ul#graphnodes li, ul#nodebgs li {
475 ul#graphnodes li, ul#nodebgs li {
472 height: 39px;
476 height: 39px;
473 }
477 }
474
478
475 ul#graphnodes li .info {
479 ul#graphnodes li .info {
476 display: block;
480 display: block;
477 position: relative;
481 position: relative;
478 }
482 }
479 /** end of canvas **/
483 /** end of canvas **/
480
484
481 /** comparison **/
485 /** comparison **/
482 .legend {
486 .legend {
483 margin-left: 20px;
487 margin-left: 20px;
484 padding: 1.5% 0 1.5% 0;
488 padding: 1.5% 0 1.5% 0;
485 }
489 }
486
490
487 .legendinfo {
491 .legendinfo {
488 border: 1px solid #999;
492 border: 1px solid #999;
489 font-size: 80%;
493 font-size: 80%;
490 text-align: center;
494 text-align: center;
491 padding: 0.5%;
495 padding: 0.5%;
492 }
496 }
493
497
494 .equal {
498 .equal {
495 background-color: #ffffff;
499 background-color: #ffffff;
496 }
500 }
497
501
498 .delete {
502 .delete {
499 background-color: #faa;
503 background-color: #faa;
500 color: #333;
504 color: #333;
501 }
505 }
502
506
503 .insert {
507 .insert {
504 background-color: #ffa;
508 background-color: #ffa;
505 }
509 }
506
510
507 .replace {
511 .replace {
508 background-color: #e8e8e8;
512 background-color: #e8e8e8;
509 }
513 }
510
514
511 .comparison {
515 .comparison {
512 overflow-x: auto;
516 overflow-x: auto;
513 }
517 }
514
518
515 .comparison table td {
519 .comparison table td {
516 padding: 0px 5px;
520 padding: 0px 5px;
517 }
521 }
518
522
519 .header th {
523 .header th {
520 font-weight: bold;
524 font-weight: bold;
521 }
525 }
522
526
523 .block {
527 .block {
524 border-top: 1px solid #999;
528 border-top: 1px solid #999;
525 }
529 }
526 /** end of comparison **/
530 /** end of comparison **/
527
531
528 .breadcrumb a:hover {
532 .breadcrumb a:hover {
529 text-decoration:underline;
533 text-decoration:underline;
530 }
534 }
531
535
532 .scroll-loading {
536 .scroll-loading {
533 -webkit-animation: change_color 1s linear 0s infinite alternate;
537 -webkit-animation: change_color 1s linear 0s infinite alternate;
534 -moz-animation: change_color 1s linear 0s infinite alternate;
538 -moz-animation: change_color 1s linear 0s infinite alternate;
535 -o-animation: change_color 1s linear 0s infinite alternate;
539 -o-animation: change_color 1s linear 0s infinite alternate;
536 animation: change_color 1s linear 0s infinite alternate;
540 animation: change_color 1s linear 0s infinite alternate;
537 }
541 }
538
542
539 @-webkit-keyframes change_color {
543 @-webkit-keyframes change_color {
540 from { background-color: #A0CEFF; } to { }
544 from { background-color: #A0CEFF; } to { }
541 }
545 }
542 @-moz-keyframes change_color {
546 @-moz-keyframes change_color {
543 from { background-color: #A0CEFF; } to { }
547 from { background-color: #A0CEFF; } to { }
544 }
548 }
545 @-o-keyframes change_color {
549 @-o-keyframes change_color {
546 from { background-color: #A0CEFF; } to { }
550 from { background-color: #A0CEFF; } to { }
547 }
551 }
548 @keyframes change_color {
552 @keyframes change_color {
549 from { background-color: #A0CEFF; } to { }
553 from { background-color: #A0CEFF; } to { }
550 }
554 }
551
555
552 .scroll-loading-error {
556 .scroll-loading-error {
553 background-color: #FFCCCC !important;
557 background-color: #FFCCCC !important;
554 }
558 }
@@ -1,608 +1,611 b''
1 #require serve
1 #require serve
2
2
3 Some tests for hgweb. Tests static files, plain files and different 404's.
3 Some tests for hgweb. Tests static files, plain files and different 404's.
4
4
5 $ hg init test
5 $ hg init test
6 $ cd test
6 $ cd test
7 $ mkdir da
7 $ mkdir da
8 $ echo foo > da/foo
8 $ echo foo > da/foo
9 $ echo foo > foo
9 $ echo foo > foo
10 $ hg ci -Ambase
10 $ hg ci -Ambase
11 adding da/foo
11 adding da/foo
12 adding foo
12 adding foo
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
13 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
14 $ cat hg.pid >> $DAEMON_PIDS
14 $ cat hg.pid >> $DAEMON_PIDS
15
15
16 manifest
16 manifest
17
17
18 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw')
18 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=raw')
19 200 Script output follows
19 200 Script output follows
20
20
21
21
22 drwxr-xr-x da
22 drwxr-xr-x da
23 -rw-r--r-- 4 foo
23 -rw-r--r-- 4 foo
24
24
25
25
26 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/da?style=raw')
26 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/da?style=raw')
27 200 Script output follows
27 200 Script output follows
28
28
29
29
30 -rw-r--r-- 4 foo
30 -rw-r--r-- 4 foo
31
31
32
32
33
33
34 plain file
34 plain file
35
35
36 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?style=raw'
36 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?style=raw'
37 200 Script output follows
37 200 Script output follows
38
38
39 foo
39 foo
40
40
41 should give a 404 - static file that does not exist
41 should give a 404 - static file that does not exist
42
42
43 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'static/bogus'
43 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'static/bogus'
44 404 Not Found
44 404 Not Found
45
45
46 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
46 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
47 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
47 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
48 <head>
48 <head>
49 <link rel="icon" href="/static/hgicon.png" type="image/png" />
49 <link rel="icon" href="/static/hgicon.png" type="image/png" />
50 <meta name="robots" content="index, nofollow" />
50 <meta name="robots" content="index, nofollow" />
51 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
51 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
52 <script type="text/javascript" src="/static/mercurial.js"></script>
52 <script type="text/javascript" src="/static/mercurial.js"></script>
53
53
54 <title>test: error</title>
54 <title>test: error</title>
55 </head>
55 </head>
56 <body>
56 <body>
57
57
58 <div class="container">
58 <div class="container">
59 <div class="menu">
59 <div class="menu">
60 <div class="logo">
60 <div class="logo">
61 <a href="http://mercurial.selenic.com/">
61 <a href="http://mercurial.selenic.com/">
62 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
62 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
63 </div>
63 </div>
64 <ul>
64 <ul>
65 <li><a href="/shortlog">log</a></li>
65 <li><a href="/shortlog">log</a></li>
66 <li><a href="/graph">graph</a></li>
66 <li><a href="/graph">graph</a></li>
67 <li><a href="/tags">tags</a></li>
67 <li><a href="/tags">tags</a></li>
68 <li><a href="/bookmarks">bookmarks</a></li>
68 <li><a href="/bookmarks">bookmarks</a></li>
69 <li><a href="/branches">branches</a></li>
69 <li><a href="/branches">branches</a></li>
70 </ul>
70 </ul>
71 <ul>
71 <ul>
72 <li><a href="/help">help</a></li>
72 <li><a href="/help">help</a></li>
73 </ul>
73 </ul>
74 </div>
74 </div>
75
75
76 <div class="main">
76 <div class="main">
77
77
78 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
78 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
79 <h3>error</h3>
79 <h3>error</h3>
80
80
81 <form class="search" action="/log">
81 <form class="search" action="/log">
82
82
83 <p><input name="rev" id="search1" type="text" size="30"></p>
83 <p><input name="rev" id="search1" type="text" size="30"></p>
84 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
84 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
85 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
85 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
86 </form>
86 </form>
87
87
88 <div class="description">
88 <div class="description">
89 <p>
89 <p>
90 An error occurred while processing your request:
90 An error occurred while processing your request:
91 </p>
91 </p>
92 <p>
92 <p>
93 Not Found
93 Not Found
94 </p>
94 </p>
95 </div>
95 </div>
96 </div>
96 </div>
97 </div>
97 </div>
98
98
99 <script type="text/javascript">process_dates()</script>
99 <script type="text/javascript">process_dates()</script>
100
100
101
101
102 </body>
102 </body>
103 </html>
103 </html>
104
104
105 [1]
105 [1]
106
106
107 should give a 404 - bad revision
107 should give a 404 - bad revision
108
108
109 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/spam/foo?style=raw'
109 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/spam/foo?style=raw'
110 404 Not Found
110 404 Not Found
111
111
112
112
113 error: revision not found: spam
113 error: revision not found: spam
114 [1]
114 [1]
115
115
116 should give a 400 - bad command
116 should give a 400 - bad command
117
117
118 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
118 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/foo?cmd=spam&style=raw'
119 400* (glob)
119 400* (glob)
120
120
121
121
122 error: no such method: spam
122 error: no such method: spam
123 [1]
123 [1]
124
124
125 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT '?cmd=spam'
125 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT '?cmd=spam'
126 400 no such method: spam
126 400 no such method: spam
127 [1]
127 [1]
128
128
129 should give a 400 - bad command as a part of url path (issue4071)
129 should give a 400 - bad command as a part of url path (issue4071)
130
130
131 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'spam'
131 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'spam'
132 400 no such method: spam
132 400 no such method: spam
133 [1]
133 [1]
134
134
135 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'raw-spam'
135 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'raw-spam'
136 400 no such method: spam
136 400 no such method: spam
137 [1]
137 [1]
138
138
139 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'spam/tip/foo'
139 $ "$TESTDIR/get-with-headers.py" --headeronly localhost:$HGPORT 'spam/tip/foo'
140 400 no such method: spam
140 400 no such method: spam
141 [1]
141 [1]
142
142
143 should give a 404 - file does not exist
143 should give a 404 - file does not exist
144
144
145 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork?style=raw'
145 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork?style=raw'
146 404 Not Found
146 404 Not Found
147
147
148
148
149 error: bork@2ef0ac749a14: not found in manifest
149 error: bork@2ef0ac749a14: not found in manifest
150 [1]
150 [1]
151 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork'
151 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/bork'
152 404 Not Found
152 404 Not Found
153
153
154 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
154 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
155 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
155 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
156 <head>
156 <head>
157 <link rel="icon" href="/static/hgicon.png" type="image/png" />
157 <link rel="icon" href="/static/hgicon.png" type="image/png" />
158 <meta name="robots" content="index, nofollow" />
158 <meta name="robots" content="index, nofollow" />
159 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
159 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
160 <script type="text/javascript" src="/static/mercurial.js"></script>
160 <script type="text/javascript" src="/static/mercurial.js"></script>
161
161
162 <title>test: error</title>
162 <title>test: error</title>
163 </head>
163 </head>
164 <body>
164 <body>
165
165
166 <div class="container">
166 <div class="container">
167 <div class="menu">
167 <div class="menu">
168 <div class="logo">
168 <div class="logo">
169 <a href="http://mercurial.selenic.com/">
169 <a href="http://mercurial.selenic.com/">
170 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
170 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
171 </div>
171 </div>
172 <ul>
172 <ul>
173 <li><a href="/shortlog">log</a></li>
173 <li><a href="/shortlog">log</a></li>
174 <li><a href="/graph">graph</a></li>
174 <li><a href="/graph">graph</a></li>
175 <li><a href="/tags">tags</a></li>
175 <li><a href="/tags">tags</a></li>
176 <li><a href="/bookmarks">bookmarks</a></li>
176 <li><a href="/bookmarks">bookmarks</a></li>
177 <li><a href="/branches">branches</a></li>
177 <li><a href="/branches">branches</a></li>
178 </ul>
178 </ul>
179 <ul>
179 <ul>
180 <li><a href="/help">help</a></li>
180 <li><a href="/help">help</a></li>
181 </ul>
181 </ul>
182 </div>
182 </div>
183
183
184 <div class="main">
184 <div class="main">
185
185
186 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
186 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
187 <h3>error</h3>
187 <h3>error</h3>
188
188
189 <form class="search" action="/log">
189 <form class="search" action="/log">
190
190
191 <p><input name="rev" id="search1" type="text" size="30"></p>
191 <p><input name="rev" id="search1" type="text" size="30"></p>
192 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
192 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
193 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
193 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
194 </form>
194 </form>
195
195
196 <div class="description">
196 <div class="description">
197 <p>
197 <p>
198 An error occurred while processing your request:
198 An error occurred while processing your request:
199 </p>
199 </p>
200 <p>
200 <p>
201 bork@2ef0ac749a14: not found in manifest
201 bork@2ef0ac749a14: not found in manifest
202 </p>
202 </p>
203 </div>
203 </div>
204 </div>
204 </div>
205 </div>
205 </div>
206
206
207 <script type="text/javascript">process_dates()</script>
207 <script type="text/javascript">process_dates()</script>
208
208
209
209
210 </body>
210 </body>
211 </html>
211 </html>
212
212
213 [1]
213 [1]
214 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/bork?style=raw'
214 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/tip/bork?style=raw'
215 404 Not Found
215 404 Not Found
216
216
217
217
218 error: bork@2ef0ac749a14: not found in manifest
218 error: bork@2ef0ac749a14: not found in manifest
219 [1]
219 [1]
220
220
221 try bad style
221 try bad style
222
222
223 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=foobar')
223 $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/?style=foobar')
224 200 Script output follows
224 200 Script output follows
225
225
226 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
226 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
227 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
227 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
228 <head>
228 <head>
229 <link rel="icon" href="/static/hgicon.png" type="image/png" />
229 <link rel="icon" href="/static/hgicon.png" type="image/png" />
230 <meta name="robots" content="index, nofollow" />
230 <meta name="robots" content="index, nofollow" />
231 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
231 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
232 <script type="text/javascript" src="/static/mercurial.js"></script>
232 <script type="text/javascript" src="/static/mercurial.js"></script>
233
233
234 <title>test: 2ef0ac749a14 /</title>
234 <title>test: 2ef0ac749a14 /</title>
235 </head>
235 </head>
236 <body>
236 <body>
237
237
238 <div class="container">
238 <div class="container">
239 <div class="menu">
239 <div class="menu">
240 <div class="logo">
240 <div class="logo">
241 <a href="http://mercurial.selenic.com/">
241 <a href="http://mercurial.selenic.com/">
242 <img src="/static/hglogo.png" alt="mercurial" /></a>
242 <img src="/static/hglogo.png" alt="mercurial" /></a>
243 </div>
243 </div>
244 <ul>
244 <ul>
245 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
245 <li><a href="/shortlog/2ef0ac749a14">log</a></li>
246 <li><a href="/graph/2ef0ac749a14">graph</a></li>
246 <li><a href="/graph/2ef0ac749a14">graph</a></li>
247 <li><a href="/tags">tags</a></li>
247 <li><a href="/tags">tags</a></li>
248 <li><a href="/bookmarks">bookmarks</a></li>
248 <li><a href="/bookmarks">bookmarks</a></li>
249 <li><a href="/branches">branches</a></li>
249 <li><a href="/branches">branches</a></li>
250 </ul>
250 </ul>
251 <ul>
251 <ul>
252 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
252 <li><a href="/rev/2ef0ac749a14">changeset</a></li>
253 <li class="active">browse</li>
253 <li class="active">browse</li>
254 </ul>
254 </ul>
255 <ul>
255 <ul>
256
256
257 </ul>
257 </ul>
258 <ul>
258 <ul>
259 <li><a href="/help">help</a></li>
259 <li><a href="/help">help</a></li>
260 </ul>
260 </ul>
261 </div>
261 </div>
262
262
263 <div class="main">
263 <div class="main">
264 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
264 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
265 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
265 <h3>directory / @ 0:2ef0ac749a14 <span class="tag">tip</span> </h3>
266
266
267 <form class="search" action="/log">
267 <form class="search" action="/log">
268
268
269 <p><input name="rev" id="search1" type="text" size="30" /></p>
269 <p><input name="rev" id="search1" type="text" size="30" /></p>
270 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
270 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
271 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
271 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
272 </form>
272 </form>
273
273
274 <table class="bigtable">
274 <table class="bigtable">
275 <tr>
275 <tr>
276 <th class="name">name</th>
276 <th class="name">name</th>
277 <th class="size">size</th>
277 <th class="size">size</th>
278 <th class="permissions">permissions</th>
278 <th class="permissions">permissions</th>
279 </tr>
279 </tr>
280 <tbody class="stripes2">
280 <tbody class="stripes2">
281 <tr class="fileline">
281 <tr class="fileline">
282 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
282 <td class="name"><a href="/file/2ef0ac749a14/">[up]</a></td>
283 <td class="size"></td>
283 <td class="size"></td>
284 <td class="permissions">drwxr-xr-x</td>
284 <td class="permissions">drwxr-xr-x</td>
285 </tr>
285 </tr>
286
286
287 <tr class="fileline">
287 <tr class="fileline">
288 <td class="name">
288 <td class="name">
289 <a href="/file/2ef0ac749a14/da">
289 <a href="/file/2ef0ac749a14/da">
290 <img src="/static/coal-folder.png" alt="dir."/> da/
290 <img src="/static/coal-folder.png" alt="dir."/> da/
291 </a>
291 </a>
292 <a href="/file/2ef0ac749a14/da/">
292 <a href="/file/2ef0ac749a14/da/">
293
293
294 </a>
294 </a>
295 </td>
295 </td>
296 <td class="size"></td>
296 <td class="size"></td>
297 <td class="permissions">drwxr-xr-x</td>
297 <td class="permissions">drwxr-xr-x</td>
298 </tr>
298 </tr>
299
299
300 <tr class="fileline">
300 <tr class="fileline">
301 <td class="filename">
301 <td class="filename">
302 <a href="/file/2ef0ac749a14/foo">
302 <a href="/file/2ef0ac749a14/foo">
303 <img src="/static/coal-file.png" alt="file"/> foo
303 <img src="/static/coal-file.png" alt="file"/> foo
304 </a>
304 </a>
305 </td>
305 </td>
306 <td class="size">4</td>
306 <td class="size">4</td>
307 <td class="permissions">-rw-r--r--</td>
307 <td class="permissions">-rw-r--r--</td>
308 </tr>
308 </tr>
309 </tbody>
309 </tbody>
310 </table>
310 </table>
311 </div>
311 </div>
312 </div>
312 </div>
313 <script type="text/javascript">process_dates()</script>
313 <script type="text/javascript">process_dates()</script>
314
314
315
315
316 </body>
316 </body>
317 </html>
317 </html>
318
318
319
319
320 stop and restart
320 stop and restart
321
321
322 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
322 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
323 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
323 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log
324 $ cat hg.pid >> $DAEMON_PIDS
324 $ cat hg.pid >> $DAEMON_PIDS
325
325
326 Test the access/error files are opened in append mode
326 Test the access/error files are opened in append mode
327
327
328 $ $PYTHON -c "print len(file('access.log').readlines()), 'log lines written'"
328 $ $PYTHON -c "print len(file('access.log').readlines()), 'log lines written'"
329 14 log lines written
329 14 log lines written
330
330
331 static file
331 static file
332
332
333 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
333 $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
334 200 Script output follows
334 200 Script output follows
335 content-length: 5262
335 content-length: 5372
336 content-type: text/css
336 content-type: text/css
337
337
338 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
338 body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
339 a { color:#0000cc; }
339 a { color:#0000cc; }
340 a:hover, a:visited, a:active { color:#880000; }
340 a:hover, a:visited, a:active { color:#880000; }
341 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
341 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
342 div.page_header a:visited { color:#0000cc; }
342 div.page_header a:visited { color:#0000cc; }
343 div.page_header a:hover { color:#880000; }
343 div.page_header a:hover { color:#880000; }
344 div.page_nav { padding:8px; }
344 div.page_nav { padding:8px; }
345 div.page_nav a:visited { color:#0000cc; }
345 div.page_nav a:visited { color:#0000cc; }
346 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
346 div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
347 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
347 div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
348 div.page_footer_text { float:left; color:#555555; font-style:italic; }
348 div.page_footer_text { float:left; color:#555555; font-style:italic; }
349 div.page_body { padding:8px; }
349 div.page_body { padding:8px; }
350 div.title, a.title {
350 div.title, a.title {
351 display:block; padding:6px 8px;
351 display:block; padding:6px 8px;
352 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
352 font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
353 }
353 }
354 a.title:hover { background-color: #d9d8d1; }
354 a.title:hover { background-color: #d9d8d1; }
355 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
355 div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
356 div.log_body { padding:8px 8px 8px 150px; }
356 div.log_body { padding:8px 8px 8px 150px; }
357 .age { white-space:nowrap; }
357 .age { white-space:nowrap; }
358 span.age { position:relative; float:left; width:142px; font-style:italic; }
358 span.age { position:relative; float:left; width:142px; font-style:italic; }
359 div.log_link {
359 div.log_link {
360 padding:0px 8px;
360 padding:0px 8px;
361 font-size:10px; font-family:sans-serif; font-style:normal;
361 font-size:10px; font-family:sans-serif; font-style:normal;
362 position:relative; float:left; width:136px;
362 position:relative; float:left; width:136px;
363 }
363 }
364 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
364 div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
365 a.list { text-decoration:none; color:#000000; }
365 a.list { text-decoration:none; color:#000000; }
366 a.list:hover { text-decoration:underline; color:#880000; }
366 a.list:hover { text-decoration:underline; color:#880000; }
367 table { padding:8px 4px; }
367 table { padding:8px 4px; }
368 th { padding:2px 5px; font-size:12px; text-align:left; }
368 th { padding:2px 5px; font-size:12px; text-align:left; }
369 tr.light:hover, .parity0:hover { background-color:#edece6; }
369 tr.light:hover, .parity0:hover { background-color:#edece6; }
370 tr.dark, .parity1 { background-color:#f6f6f0; }
370 tr.dark, .parity1 { background-color:#f6f6f0; }
371 tr.dark:hover, .parity1:hover { background-color:#edece6; }
371 tr.dark:hover, .parity1:hover { background-color:#edece6; }
372 td { padding:2px 5px; font-size:12px; vertical-align:top; }
372 td { padding:2px 5px; font-size:12px; vertical-align:top; }
373 td.closed { background-color: #99f; }
373 td.closed { background-color: #99f; }
374 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
374 td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
375 td.indexlinks { white-space: nowrap; }
375 td.indexlinks { white-space: nowrap; }
376 td.indexlinks a {
376 td.indexlinks a {
377 padding: 2px 5px; line-height: 10px;
377 padding: 2px 5px; line-height: 10px;
378 border: 1px solid;
378 border: 1px solid;
379 color: #ffffff; background-color: #7777bb;
379 color: #ffffff; background-color: #7777bb;
380 border-color: #aaaadd #333366 #333366 #aaaadd;
380 border-color: #aaaadd #333366 #333366 #aaaadd;
381 font-weight: bold; text-align: center; text-decoration: none;
381 font-weight: bold; text-align: center; text-decoration: none;
382 font-size: 10px;
382 font-size: 10px;
383 }
383 }
384 td.indexlinks a:hover { background-color: #6666aa; }
384 td.indexlinks a:hover { background-color: #6666aa; }
385 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
385 div.pre { font-family:monospace; font-size:12px; white-space:pre; }
386 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
386 div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
387 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
387 div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
388 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
388 div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
389 .linenr { color:#999999; text-decoration:none }
389 .linenr { color:#999999; text-decoration:none }
390 div.rss_logo { float: right; white-space: nowrap; }
390 div.rss_logo { float: right; white-space: nowrap; }
391 div.rss_logo a {
391 div.rss_logo a {
392 padding:3px 6px; line-height:10px;
392 padding:3px 6px; line-height:10px;
393 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
393 border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
394 color:#ffffff; background-color:#ff6600;
394 color:#ffffff; background-color:#ff6600;
395 font-weight:bold; font-family:sans-serif; font-size:10px;
395 font-weight:bold; font-family:sans-serif; font-size:10px;
396 text-align:center; text-decoration:none;
396 text-align:center; text-decoration:none;
397 }
397 }
398 div.rss_logo a:hover { background-color:#ee5500; }
398 div.rss_logo a:hover { background-color:#ee5500; }
399 pre { margin: 0; }
399 pre { margin: 0; }
400 span.logtags span {
400 span.logtags span {
401 padding: 0px 4px;
401 padding: 0px 4px;
402 font-size: 10px;
402 font-size: 10px;
403 font-weight: normal;
403 font-weight: normal;
404 border: 1px solid;
404 border: 1px solid;
405 background-color: #ffaaff;
405 background-color: #ffaaff;
406 border-color: #ffccff #ff00ee #ff00ee #ffccff;
406 border-color: #ffccff #ff00ee #ff00ee #ffccff;
407 }
407 }
408 span.logtags span.tagtag {
408 span.logtags span.tagtag {
409 background-color: #ffffaa;
409 background-color: #ffffaa;
410 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
410 border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
411 }
411 }
412 span.logtags span.branchtag {
412 span.logtags span.branchtag {
413 background-color: #aaffaa;
413 background-color: #aaffaa;
414 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
414 border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
415 }
415 }
416 span.logtags span.inbranchtag {
416 span.logtags span.inbranchtag {
417 background-color: #d5dde6;
417 background-color: #d5dde6;
418 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
418 border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
419 }
419 }
420 span.logtags span.bookmarktag {
420 span.logtags span.bookmarktag {
421 background-color: #afdffa;
421 background-color: #afdffa;
422 border-color: #ccecff #46ace6 #46ace6 #ccecff;
422 border-color: #ccecff #46ace6 #46ace6 #ccecff;
423 }
423 }
424 span.difflineplus { color:#008800; }
425 span.difflineminus { color:#cc0000; }
426 span.difflineat { color:#990099; }
424
427
425 /* Graph */
428 /* Graph */
426 div#wrapper {
429 div#wrapper {
427 position: relative;
430 position: relative;
428 margin: 0;
431 margin: 0;
429 padding: 0;
432 padding: 0;
430 margin-top: 3px;
433 margin-top: 3px;
431 }
434 }
432
435
433 canvas {
436 canvas {
434 position: absolute;
437 position: absolute;
435 z-index: 5;
438 z-index: 5;
436 top: -0.9em;
439 top: -0.9em;
437 margin: 0;
440 margin: 0;
438 }
441 }
439
442
440 ul#nodebgs {
443 ul#nodebgs {
441 list-style: none inside none;
444 list-style: none inside none;
442 padding: 0;
445 padding: 0;
443 margin: 0;
446 margin: 0;
444 top: -0.7em;
447 top: -0.7em;
445 }
448 }
446
449
447 ul#graphnodes li, ul#nodebgs li {
450 ul#graphnodes li, ul#nodebgs li {
448 height: 39px;
451 height: 39px;
449 }
452 }
450
453
451 ul#graphnodes {
454 ul#graphnodes {
452 position: absolute;
455 position: absolute;
453 z-index: 10;
456 z-index: 10;
454 top: -0.8em;
457 top: -0.8em;
455 list-style: none inside none;
458 list-style: none inside none;
456 padding: 0;
459 padding: 0;
457 }
460 }
458
461
459 ul#graphnodes li .info {
462 ul#graphnodes li .info {
460 display: block;
463 display: block;
461 font-size: 100%;
464 font-size: 100%;
462 position: relative;
465 position: relative;
463 top: -3px;
466 top: -3px;
464 font-style: italic;
467 font-style: italic;
465 }
468 }
466
469
467 /* Comparison */
470 /* Comparison */
468 .legend {
471 .legend {
469 padding: 1.5% 0 1.5% 0;
472 padding: 1.5% 0 1.5% 0;
470 }
473 }
471
474
472 .legendinfo {
475 .legendinfo {
473 border: 1px solid #d9d8d1;
476 border: 1px solid #d9d8d1;
474 font-size: 80%;
477 font-size: 80%;
475 text-align: center;
478 text-align: center;
476 padding: 0.5%;
479 padding: 0.5%;
477 }
480 }
478
481
479 .equal {
482 .equal {
480 background-color: #ffffff;
483 background-color: #ffffff;
481 }
484 }
482
485
483 .delete {
486 .delete {
484 background-color: #faa;
487 background-color: #faa;
485 color: #333;
488 color: #333;
486 }
489 }
487
490
488 .insert {
491 .insert {
489 background-color: #ffa;
492 background-color: #ffa;
490 }
493 }
491
494
492 .replace {
495 .replace {
493 background-color: #e8e8e8;
496 background-color: #e8e8e8;
494 }
497 }
495
498
496 .comparison {
499 .comparison {
497 overflow-x: auto;
500 overflow-x: auto;
498 }
501 }
499
502
500 .header th {
503 .header th {
501 text-align: center;
504 text-align: center;
502 }
505 }
503
506
504 .block {
507 .block {
505 border-top: 1px solid #d9d8d1;
508 border-top: 1px solid #d9d8d1;
506 }
509 }
507
510
508 .scroll-loading {
511 .scroll-loading {
509 -webkit-animation: change_color 1s linear 0s infinite alternate;
512 -webkit-animation: change_color 1s linear 0s infinite alternate;
510 -moz-animation: change_color 1s linear 0s infinite alternate;
513 -moz-animation: change_color 1s linear 0s infinite alternate;
511 -o-animation: change_color 1s linear 0s infinite alternate;
514 -o-animation: change_color 1s linear 0s infinite alternate;
512 animation: change_color 1s linear 0s infinite alternate;
515 animation: change_color 1s linear 0s infinite alternate;
513 }
516 }
514
517
515 @-webkit-keyframes change_color {
518 @-webkit-keyframes change_color {
516 from { background-color: #A0CEFF; } to { }
519 from { background-color: #A0CEFF; } to { }
517 }
520 }
518 @-moz-keyframes change_color {
521 @-moz-keyframes change_color {
519 from { background-color: #A0CEFF; } to { }
522 from { background-color: #A0CEFF; } to { }
520 }
523 }
521 @-o-keyframes change_color {
524 @-o-keyframes change_color {
522 from { background-color: #A0CEFF; } to { }
525 from { background-color: #A0CEFF; } to { }
523 }
526 }
524 @keyframes change_color {
527 @keyframes change_color {
525 from { background-color: #A0CEFF; } to { }
528 from { background-color: #A0CEFF; } to { }
526 }
529 }
527
530
528 .scroll-loading-error {
531 .scroll-loading-error {
529 background-color: #FFCCCC !important;
532 background-color: #FFCCCC !important;
530 }
533 }
531 304 Not Modified
534 304 Not Modified
532
535
533
536
534 phase changes are refreshed (issue4061)
537 phase changes are refreshed (issue4061)
535
538
536 $ echo bar >> foo
539 $ echo bar >> foo
537 $ hg ci -msecret --secret
540 $ hg ci -msecret --secret
538 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw'
541 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw'
539 200 Script output follows
542 200 Script output follows
540
543
541
544
542 # HG changelog
545 # HG changelog
543 # Node ID 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
546 # Node ID 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
544
547
545 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
548 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
546 revision: 0
549 revision: 0
547 user: test
550 user: test
548 date: Thu, 01 Jan 1970 00:00:00 +0000
551 date: Thu, 01 Jan 1970 00:00:00 +0000
549 summary: base
552 summary: base
550 branch: default
553 branch: default
551 tag: tip
554 tag: tip
552
555
553
556
554 $ hg phase --draft tip
557 $ hg phase --draft tip
555 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw'
558 $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw'
556 200 Script output follows
559 200 Script output follows
557
560
558
561
559 # HG changelog
562 # HG changelog
560 # Node ID a084749e708a9c4c0a5b652a2a446322ce290e04
563 # Node ID a084749e708a9c4c0a5b652a2a446322ce290e04
561
564
562 changeset: a084749e708a9c4c0a5b652a2a446322ce290e04
565 changeset: a084749e708a9c4c0a5b652a2a446322ce290e04
563 revision: 1
566 revision: 1
564 user: test
567 user: test
565 date: Thu, 01 Jan 1970 00:00:00 +0000
568 date: Thu, 01 Jan 1970 00:00:00 +0000
566 summary: secret
569 summary: secret
567 branch: default
570 branch: default
568 tag: tip
571 tag: tip
569
572
570 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
573 changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
571 revision: 0
574 revision: 0
572 user: test
575 user: test
573 date: Thu, 01 Jan 1970 00:00:00 +0000
576 date: Thu, 01 Jan 1970 00:00:00 +0000
574 summary: base
577 summary: base
575
578
576
579
577
580
578 errors
581 errors
579
582
580 $ cat errors.log
583 $ cat errors.log
581
584
582 Uncaught exceptions result in a logged error and canned HTTP response
585 Uncaught exceptions result in a logged error and canned HTTP response
583
586
584 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
587 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
585 $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
588 $ hg --config extensions.hgweberror=$TESTDIR/hgweberror.py serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log
586 $ cat hg.pid >> $DAEMON_PIDS
589 $ cat hg.pid >> $DAEMON_PIDS
587
590
588 $ $TESTDIR/get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
591 $ $TESTDIR/get-with-headers.py localhost:$HGPORT 'raiseerror' transfer-encoding content-type
589 500 Internal Server Error
592 500 Internal Server Error
590 transfer-encoding: chunked
593 transfer-encoding: chunked
591
594
592 Internal Server Error (no-eol)
595 Internal Server Error (no-eol)
593 [1]
596 [1]
594
597
595 $ head -1 errors.log
598 $ head -1 errors.log
596 .* Exception happened during processing request '/raiseerror': (re)
599 .* Exception happened during processing request '/raiseerror': (re)
597
600
598 Uncaught exception after partial content sent
601 Uncaught exception after partial content sent
599
602
600 $ $TESTDIR/get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
603 $ $TESTDIR/get-with-headers.py localhost:$HGPORT 'raiseerror?partialresponse=1' transfer-encoding content-type
601 200 Script output follows
604 200 Script output follows
602 transfer-encoding: chunked
605 transfer-encoding: chunked
603 content-type: text/plain
606 content-type: text/plain
604
607
605 partial content
608 partial content
606 Internal Server Error (no-eol)
609 Internal Server Error (no-eol)
607
610
608 $ cd ..
611 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now