On Thu, Jul 4, 2013 at 7:02 PM, Tony Finch <dot@xxxxxxxx> 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. > > Signed-off-by: Tony Finch <dot@xxxxxxxx> > Reviewed-by: Jonathan Nieder <jrnieder@xxxxxxxxx> For what it is worth: Acked-by: Jakub Narebski <jnareb@xxxxxxxxx> > --- > 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 ??? > + 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 > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html