Re: [PATCH] gitweb: allow extra breadcrumbs to prefix the trail
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jul 3, 2013, 21:59 UTC
- Message-ID
- <20130703215930.GT408@google.com>
- In-Reply-To
- <E1Uu3IT-0008U1-3c@hermes-2.csi.cam.ac.uk>
(cc-ing Jakub, gitweb wrangler)
Tony Finch wrote:
> There are often parent pages logically above the gitweb projects > list, e.g. home pages of the organization and department that host > the gitweb server. This change allows you to include links to those > pages in gitweb's breadcrumb trail.
Neat.
Show 21 quoted lines
> Signed-off-by: Tony Finch <dot@dotat.at> > --- > Documentation/gitweb.conf.txt | 8 ++++++++ > gitweb/gitweb.perl | 6 ++++++ > 2 files changed, 14 insertions(+) > > diff --git a/Documentation/gitweb.conf.txt b/Documentation/gitweb.conf.txt > index ea0526e..4579578 100644 > --- a/Documentation/gitweb.conf.txt > +++ b/Documentation/gitweb.conf.txt > @@ -339,6 +339,14 @@ $home_link_str:: > as this link leads to the list of projects. Other popular choice it to > set it to the name of site. > > +@extra_breadcrumbs:: > + Additional links to be added to the start of the breadcrumb trail, > + that are logically "above" the gitweb projects list. For example, > + links to the organization and department which host the gitweb > + server. Each element of the list is a reference to an array, > + in which element 0 is the link text and element 1 is the > + target URL.
Is arbitrary HTML permitted in the link text?
I think it makes sense to permit it for consistency with $home_link_str, but it might be worth mentioning in the manpage so the administrator knows not to set it to something user-controlled --- e.g.:
The link text can contain arbitrary HTML --- to escape link text generated programatically, use esc_html($text).
For what it's worth, with or without such a change, Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
(Patch left unsnipped for reference.)
Show 29 quoted lines
> +
> $logo_url::
> $logo_label::
> URI and label (title) for the Git logo link (or your site logo,
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 8d69ada..436f17a 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -85,6 +85,9 @@ our $project_maxdepth = "++GITWEB_PROJECT_MAXDEPTH++";
> # string of the home link on top of all pages
> our $home_link_str = "++GITWEB_HOME_LINK_STR++";
>
> +# extra breadcrumbs preceding the home link
> +our @extra_breadcrumbs = ();
> +
> # name of your site or organization to appear in page titles
> # replace this with something more descriptive for clearer bookmarks
> our $site_name = "++GITWEB_SITENAME++"
> @@ -3982,6 +3985,9 @@ sub print_nav_breadcrumbs_path {
> sub print_nav_breadcrumbs {
> my %opts = @_;
>
> + for my $crumb (@extra_breadcrumbs) {
> + print $cgi->a({-href => esc_url($crumb->[1])}, $crumb->[0]) . " / ";
> + }
> print $cgi->a({-href => esc_url($home_link)}, $home_link_str) . " / ";
> if (defined $project) {
> my @dirname = split '/', $project;
> --