Re: [PATCH v3] gitweb: allow extra breadcrumbs to prefix the trail
- From
Jakub Narębski <jnareb@gmail.com>
- Date
- Jul 4, 2013, 17:42 UTC
- Message-ID
- <CANQwDwf56CQZJ25-Lc9WJYeB4Q7_4LVPx45yq9EQ8c17NsJp4g@mail.gmail.com>
- In-Reply-To
- <E1UunDD-0004Xd-Vv@hermes-2.csi.cam.ac.uk>
On Thu, Jul 4, 2013 at 7:02 PM, Tony Finch <dot@dotat.at> wrote:
Show 7 quoted lines
> 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. > > Signed-off-by: Tony Finch <dot@dotat.at> > Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
For what it is worth:
Acked-by: Jakub Narebski <jnareb@gmail.com>
Show 18 quoted lines
> --- > Documentation/gitweb.conf.txt | 22 ++++++++++++++++++++-- > gitweb/gitweb.perl | 7 ++++++- > 2 files changed, 26 insertions(+), 3 deletions(-) > > diff --git a/Documentation/gitweb.conf.txt b/Documentation/gitweb.conf.txt > index ea0526e..305db63 100644 > --- a/Documentation/gitweb.conf.txt > +++ b/Documentation/gitweb.conf.txt > @@ -336,8 +336,26 @@ $home_link_str:: > used as the first component of gitweb's "breadcrumb trail": > `<home link> / <project> / <action>`. Can be set at build time using > the `GITWEB_HOME_LINK_STR` variable. By default it is set to "projects", > - as this link leads to the list of projects. Other popular choice it to > - set it to the name of site. > + as this link leads to the list of projects. Another popular choice is to > + set it to the name of site. Note that it is treated as raw HTML so it > + should not be set from untrusted sources.
I wonder if we should change this... but it is issue unrelated to current patch, which doesn't make situation worse.
> + > +@extra_breadcrumbs::
@external_breadcrumbs ???
Show 46 quoted lines
> + Additional links to be added to the start of the breadcrumb trail before
> + the home link, to pages that are logically "above" the gitweb projects
> + list, such as 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 (equivalent to `$home_link_str`) and element
> + 1 is the target URL (equivalent to `$home_link`).
> ++
> +For example, the following setting produces a breadcrumb trail like
> +"home / dev / projects / ..." where "projects" is the home link.
> +----------------------------------------------------------------------------
> + our @extra_breadcrumbs = (
> + [ 'home' => 'https://www.example.org/' ],
> + [ 'dev' => 'https://dev.example.org/' ],
> + );
> +----------------------------------------------------------------------------
>
> $logo_url::
> $logo_label::
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 8d69ada..f429f75 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,7 +3985,9 @@ sub print_nav_breadcrumbs_path {
> sub print_nav_breadcrumbs {
> my %opts = @_;
>
> - print $cgi->a({-href => esc_url($home_link)}, $home_link_str) . " / ";
> + for my $crumb (@extra_breadcrumbs, [ $home_link_str => $home_link ]) {
> + print $cgi->a({-href => esc_url($crumb->[1])}, $crumb->[0]) . " / ";
> + }
> if (defined $project) {
> my @dirname = split '/', $project;
> my $projectbasename = pop @dirname;
> --
> 1.8.3.1.605.g85318f5
>