# HG changeset patch
# User jake@edge2.net
# Date 1116740594 25200
# Node ID 0e8d60d2bb2bf94dd43c2286d992307b87dcff05
# Parent c0faf50822eaa9ea08c17a9617242d0541ecb8b8
added annotate
fixed error page to get tmpl_dir
diff --git a/mercurial/hgweb.py b/mercurial/hgweb.py
--- a/mercurial/hgweb.py
+++ b/mercurial/hgweb.py
@@ -82,8 +82,8 @@
print ''
class errpage(page):
- def __init__(self):
- page.__init__(self, title="Mercurial Web Error Page")
+ def __init__(self, tmpl_dir):
+ page.__init__(self, tmpl_dir, title="Mercurial Web Error Page")
class change_list(page):
def __init__(self, repo, tmpl_dir, reponame, numchanges = 50):
@@ -204,12 +204,32 @@
print '
%s (%s)
' % \
(cgi.escape(self.fn), self.nodestr, )
print 'history
' % self.fn
+ print 'annotate
' % \
+ (self.fn, self.nodestr)
def content(self):
print ''
print cgi.escape(self.repo.file(self.fn).read(self.node))
print '
'
+class annpage(page):
+ def __init__(self, repo, tmpl_dir, fn, node):
+ page.__init__(self, tmpl_dir)
+ self.repo = repo
+ self.fn = fn
+ self.nodestr = node
+ self.node = hg.bin(node)
+ print 'Annotated: %s (%s)
' % \
+ (cgi.escape(self.fn), self.nodestr, )
+
+ def content(self):
+ print ''
+ for n, l in self.repo.file(self.fn).annotate(self.node):
+ cnode = self.repo.changelog.lookup(n)
+ write(self.tmpl.do_page('annline.tmpl', cnode=hg.hex(cnode),
+ cnum='% 6s' % n, fn=self.fn, line=cgi.escape(l[:-1])))
+ print '
'
+
class mfpage(page):
def __init__(self, repo, tmpl_dir, node):
page.__init__(self, tmpl_dir)
@@ -285,7 +305,7 @@
elif args['cmd'][0] == 'chkin':
if not args.has_key('nd'):
- page = errpage()
+ page = errpage(self.tmpl_dir)
print 'No Node!
'
else:
page = checkin(repo, self.tmpl_dir, args['nd'][0])
@@ -295,7 +315,7 @@
elif args['cmd'][0] == 'file':
if not (args.has_key('nd') and args.has_key('fn')) and \
not (args.has_key('cs') and args.has_key('fn')):
- page = errpage()
+ page = errpage(self.tmpl_dir)
print 'Invalid Args!
'
else:
if args.has_key('nd'):
@@ -309,7 +329,7 @@
elif args['cmd'][0] == 'mf':
if not args.has_key('nd'):
- page = errpage()
+ page = errpage(self.tmpl_dir)
print 'No Node!
'
else:
page = mfpage(repo, self.tmpl_dir, args['nd'][0])
@@ -318,13 +338,26 @@
elif args['cmd'][0] == 'hist':
if not args.has_key('fn'):
- page = errpage()
+ page = errpage(self.tmpl_dir)
print 'No Filename!
'
else:
page = histpage(repo, self.tmpl_dir, args['fn'][0])
page.content()
page.endpage()
+ elif args['cmd'][0] == 'ann':
+ if not args.has_key('fn'):
+ page = errpage(self.tmpl_dir)
+ print 'No Filename!
'
+ elif not args.has_key('nd'):
+ page = errpage(self.tmpl_dir)
+ print 'No Node!
'
+ else:
+ page = annpage(repo, self.tmpl_dir, args['fn'][0],
+ args['nd'][0])
+ page.content()
+ page.endpage()
+
elif args['cmd'][0] == 'branches':
httphdr("text/plain")
nodes = []
@@ -355,7 +388,7 @@
sys.stdout.write(z.flush())
else:
- page = errpage()
+ page = errpage(self.tmpl_dir)
print 'unknown command: %s
' % \
cgi.escape(args['cmd'][0])
page.endpage()
diff --git a/templates/annline.tmpl b/templates/annline.tmpl
new file mode 100644
--- /dev/null
+++ b/templates/annline.tmpl
@@ -0,0 +1,1 @@
+#cnum#:#line#
diff --git a/templates/htmlstart.tmpl b/templates/htmlstart.tmpl
--- a/templates/htmlstart.tmpl
+++ b/templates/htmlstart.tmpl
@@ -9,9 +9,14 @@
.filename { font-size: 150%; color: purple; }
.manifest { font-size: 150%; color: purple; }
.filehist { font-size: 150%; color: purple; }
+.annotation { font-size: 150%; color: purple; }
.plusline { color: green; }
.minusline { color: red; }
.atline { color: purple; }
+a.annlinelink { text-decoration: none; color: black; }
+a.revnumlink { text-decoration: none; color: black; }
+a.annlinelink:hover { text-decoration: none; color: blue; }
+a.revnumlink:hover { text-decoration: none; color: blue; }