Show More
@@ -0,0 +1,1 b'' | |||
|
1 | <a class="revnumlink" href="?cmd=chkin;nd=#cnode#">#cnum#</a>:<a class="annlinelink" href="?cmd=file;fn=#fn#;cs=#cnode#">#line#</a> |
@@ -82,8 +82,8 b' class page:' | |||
|
82 | 82 | print '</pre>' |
|
83 | 83 | |
|
84 | 84 | class errpage(page): |
|
85 | def __init__(self): | |
|
86 | page.__init__(self, title="Mercurial Web Error Page") | |
|
85 | def __init__(self, tmpl_dir): | |
|
86 | page.__init__(self, tmpl_dir, title="Mercurial Web Error Page") | |
|
87 | 87 | |
|
88 | 88 | class change_list(page): |
|
89 | 89 | def __init__(self, repo, tmpl_dir, reponame, numchanges = 50): |
@@ -204,12 +204,32 b' class filepage(page):' | |||
|
204 | 204 | print '<div class="filename">%s (%s)</div>' % \ |
|
205 | 205 | (cgi.escape(self.fn), self.nodestr, ) |
|
206 | 206 | print '<a href="?cmd=hist;fn=%s">history</a><br />' % self.fn |
|
207 | print '<a href="?cmd=ann;fn=%s;nd=%s">annotate</a><br />' % \ | |
|
208 | (self.fn, self.nodestr) | |
|
207 | 209 | |
|
208 | 210 | def content(self): |
|
209 | 211 | print '<pre>' |
|
210 | 212 | print cgi.escape(self.repo.file(self.fn).read(self.node)) |
|
211 | 213 | print '</pre>' |
|
212 | 214 | |
|
215 | class annpage(page): | |
|
216 | def __init__(self, repo, tmpl_dir, fn, node): | |
|
217 | page.__init__(self, tmpl_dir) | |
|
218 | self.repo = repo | |
|
219 | self.fn = fn | |
|
220 | self.nodestr = node | |
|
221 | self.node = hg.bin(node) | |
|
222 | print '<div class="annotation">Annotated: %s (%s)</div>' % \ | |
|
223 | (cgi.escape(self.fn), self.nodestr, ) | |
|
224 | ||
|
225 | def content(self): | |
|
226 | print '<pre>' | |
|
227 | for n, l in self.repo.file(self.fn).annotate(self.node): | |
|
228 | cnode = self.repo.changelog.lookup(n) | |
|
229 | write(self.tmpl.do_page('annline.tmpl', cnode=hg.hex(cnode), | |
|
230 | cnum='% 6s' % n, fn=self.fn, line=cgi.escape(l[:-1]))) | |
|
231 | print '</pre>' | |
|
232 | ||
|
213 | 233 | class mfpage(page): |
|
214 | 234 | def __init__(self, repo, tmpl_dir, node): |
|
215 | 235 | page.__init__(self, tmpl_dir) |
@@ -285,7 +305,7 b' class hgweb:' | |||
|
285 | 305 | |
|
286 | 306 | elif args['cmd'][0] == 'chkin': |
|
287 | 307 | if not args.has_key('nd'): |
|
288 | page = errpage() | |
|
308 | page = errpage(self.tmpl_dir) | |
|
289 | 309 | print '<div class="errmsg">No Node!</div>' |
|
290 | 310 | else: |
|
291 | 311 | page = checkin(repo, self.tmpl_dir, args['nd'][0]) |
@@ -295,7 +315,7 b' class hgweb:' | |||
|
295 | 315 | elif args['cmd'][0] == 'file': |
|
296 | 316 | if not (args.has_key('nd') and args.has_key('fn')) and \ |
|
297 | 317 | not (args.has_key('cs') and args.has_key('fn')): |
|
298 | page = errpage() | |
|
318 | page = errpage(self.tmpl_dir) | |
|
299 | 319 | print '<div class="errmsg">Invalid Args!</div>' |
|
300 | 320 | else: |
|
301 | 321 | if args.has_key('nd'): |
@@ -309,7 +329,7 b' class hgweb:' | |||
|
309 | 329 | |
|
310 | 330 | elif args['cmd'][0] == 'mf': |
|
311 | 331 | if not args.has_key('nd'): |
|
312 | page = errpage() | |
|
332 | page = errpage(self.tmpl_dir) | |
|
313 | 333 | print '<div class="errmsg">No Node!</div>' |
|
314 | 334 | else: |
|
315 | 335 | page = mfpage(repo, self.tmpl_dir, args['nd'][0]) |
@@ -318,13 +338,26 b' class hgweb:' | |||
|
318 | 338 | |
|
319 | 339 | elif args['cmd'][0] == 'hist': |
|
320 | 340 | if not args.has_key('fn'): |
|
321 | page = errpage() | |
|
341 | page = errpage(self.tmpl_dir) | |
|
322 | 342 | print '<div class="errmsg">No Filename!</div>' |
|
323 | 343 | else: |
|
324 | 344 | page = histpage(repo, self.tmpl_dir, args['fn'][0]) |
|
325 | 345 | page.content() |
|
326 | 346 | page.endpage() |
|
327 | 347 | |
|
348 | elif args['cmd'][0] == 'ann': | |
|
349 | if not args.has_key('fn'): | |
|
350 | page = errpage(self.tmpl_dir) | |
|
351 | print '<div class="errmsg">No Filename!</div>' | |
|
352 | elif not args.has_key('nd'): | |
|
353 | page = errpage(self.tmpl_dir) | |
|
354 | print '<div class="errmsg">No Node!</div>' | |
|
355 | else: | |
|
356 | page = annpage(repo, self.tmpl_dir, args['fn'][0], | |
|
357 | args['nd'][0]) | |
|
358 | page.content() | |
|
359 | page.endpage() | |
|
360 | ||
|
328 | 361 | elif args['cmd'][0] == 'branches': |
|
329 | 362 | httphdr("text/plain") |
|
330 | 363 | nodes = [] |
@@ -355,7 +388,7 b' class hgweb:' | |||
|
355 | 388 | sys.stdout.write(z.flush()) |
|
356 | 389 | |
|
357 | 390 | else: |
|
358 | page = errpage() | |
|
391 | page = errpage(self.tmpl_dir) | |
|
359 | 392 | print '<div class="errmsg">unknown command: %s</div>' % \ |
|
360 | 393 | cgi.escape(args['cmd'][0]) |
|
361 | 394 | page.endpage() |
@@ -9,9 +9,14 b' table { font-size: 12px; }' | |||
|
9 | 9 | .filename { font-size: 150%; color: purple; } |
|
10 | 10 | .manifest { font-size: 150%; color: purple; } |
|
11 | 11 | .filehist { font-size: 150%; color: purple; } |
|
12 | .annotation { font-size: 150%; color: purple; } | |
|
12 | 13 | .plusline { color: green; } |
|
13 | 14 | .minusline { color: red; } |
|
14 | 15 | .atline { color: purple; } |
|
16 | a.annlinelink { text-decoration: none; color: black; } | |
|
17 | a.revnumlink { text-decoration: none; color: black; } | |
|
18 | a.annlinelink:hover { text-decoration: none; color: blue; } | |
|
19 | a.revnumlink:hover { text-decoration: none; color: blue; } | |
|
15 | 20 | </style> |
|
16 | 21 | </HEAD> |
|
17 | 22 | <BODY> |
General Comments 0
You need to be logged in to leave comments.
Login now