# HG changeset patch # User Angel Ezquerra # Date 2013-01-31 21:36:22 # Node ID bf8bbbf4aa4532458d3df6789fbdf5667018fee3 # Parent 2a1fac3650a5b4d650198604c82ab59969500374 hgwebdir: use web.prefix when creating url breadcrumbs (issue3790) The web.prefix setting was being ignored when creating the index URL breadcrumbs. We only need to fix hgwebdir and not hgweb because hgweb gets the complete URL request, including the prefix, while hgwebdir gets a "subdir" which does not include the prefix. This fix is slightly different of what was suggested on the bug tracker. In there it was suggested to hide the prefix itself from the breadcrumb. I think that would be a better solution, but it would require changing all the index templates and passing the prefix to the template engine, which may be too big a change for stable during the freeze. For now this fixes the problem, and the fix could be improved during the next cycle. diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -24,7 +24,7 @@ perms = { 'pushkey': 'push', } -def makebreadcrumb(url): +def makebreadcrumb(url, prefix=''): '''Return a 'URL breadcrumb' list A 'URL breadcrumb' is a list of URL-name pairs, @@ -33,6 +33,8 @@ def makebreadcrumb(url): ''' if url.endswith('/'): url = url[:-1] + if prefix: + url = '/' + prefix + url relpath = url if relpath.startswith('/'): relpath = relpath[1:] 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 @@ -133,6 +133,12 @@ class hgwebdir(object): if self.stripecount: self.stripecount = int(self.stripecount) self._baseurl = self.ui.config('web', 'baseurl') + prefix = self.ui.config('web', 'prefix', '') + if prefix.startswith('/'): + prefix = prefix[1:] + if prefix.endswith('/'): + prefix = prefix[:-1] + self.prefix = prefix self.lastrefresh = time.time() def run(self): @@ -395,7 +401,7 @@ class hgwebdir(object): self.updatereqenv(req.env) return tmpl("index", entries=entries, subdir=subdir, - pathdef=makebreadcrumb('/' + subdir), + pathdef=makebreadcrumb('/' + subdir, self.prefix), sortcolumn=sortcolumn, descending=descending, **dict(sort))