diff --git a/mercurial/hgweb/hgwebdir_mod.py b/mercurial/hgweb/hgwebdir_mod.py --- a/mercurial/hgweb/hgwebdir_mod.py +++ b/mercurial/hgweb/hgwebdir_mod.py @@ -15,12 +15,13 @@ from hgweb_mod import hgweb # This is a stopgap class hgwebdir(object): - def __init__(self, config): + def __init__(self, config, parentui=None): def cleannames(items): return [(name.strip(os.sep), path) for name, path in items] - self.motd = "" - self.style = "" + self.parentui = parentui + self.motd = None + self.style = None self.repos_sorted = ('name', False) if isinstance(config, (list, tuple)): self.repos = cleannames(config) @@ -73,13 +74,23 @@ class hgwebdir(object): yield tmpl("footer", **map) def motd(**map): - yield self.motd + if self.motd is not None: + yield self.motd + else: + yield config('web', 'motd', '') + + parentui = self.parentui or ui.ui(report_untrusted=False) + + def config(section, name, default=None, untrusted=True): + return parentui.config(section, name, default, untrusted) url = req.env['REQUEST_URI'].split('?')[0] if not url.endswith('/'): url += '/' style = self.style + if style is None: + style = config('web', 'style', '') if req.form.has_key('style'): style = req.form['style'][0] mapfile = style_map(templater.templatepath(), style) @@ -113,7 +124,7 @@ class hgwebdir(object): rows = [] parity = 0 for name, path in self.repos: - u = ui.ui(report_untrusted=False) + u = ui.ui(parentui=parentui) try: u.readconfig(os.path.join(path, '.hg', 'hgrc')) except IOError: @@ -181,7 +192,8 @@ class hgwebdir(object): if real: req.env['REPO_NAME'] = virtual try: - hgweb(real).run_wsgi(req) + repo = hg.repository(parentui, real) + hgweb(repo).run_wsgi(req) except IOError, inst: req.write(tmpl("error", error=inst.strerror)) except hg.RepoError, inst: