##// END OF EJS Templates
added annotate...
jake@edge2.net -
r136:0e8d60d2 default
parent child Browse files
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