Re: [PATCH v4 1/2] gitweb: add project_filter to limit project list to a subdirectory
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Jan 29, 2012, 16:41 UTC
- Message-ID
- <201201291741.58532.jnareb@gmail.com>
- In-Reply-To
- <20120129160615.GA13937@server.brlink.eu>
On Sun, 29 Jan 2012, Bernhard R. Link wrote:
Show 17 quoted lines
> This commit changes the project listing views (project_list, > project_index and opml) to limit the output to only projects in a > subdirectory if the new optional parameter ?pf=directory name is used. > > The change is quite minimal as git_get_projects_list already can limit > itself to a subdirectory (though that was previously only used for > 'forks'). > > If there is a GITWEB_LIST file, the contents are just filtered like > with the forks action. > > Without a GITWEB_LIST file only the given subdirectory is searched > for projects (like with forks) unless GITWEB_STRICT_EXPORT is enabled. > In the later case GITWEB_PROJECTROOT is traversed normally (unlike > with forks) and projects not in the directory ignored. > (As there is no check if the filter_path would have been found in > the usual search as the project path is checked with forks).
I am still unsure if it is really necessary, but nevermind...
Show 6 quoted lines
> Reusing $project instead of adding a new parameter would have been > nicer from a UI point-of-view (including PATH_INFO support) but > would complicate the $project validating code that is currently being > used to ensure nothing is exported that should not be viewable. > > Signed-off-by: Bernhard R. Link <brlink@debian.org>
Acked-by: Jakub Narebski <jnareb@gmail.com>
> ---
[...]
Show 28 quoted lines
> @@ -3823,6 +3836,18 @@ sub print_header_links {
> }
> }
>
> +sub print_nav_breadcrumbs_path {
> + my $dirprefix = undef;
> + while (my $part = shift) {
> + $dirprefix .= "/" if defined $dirprefix;
> + $dirprefix .= $part;
> + print $cgi->a({-href => href(project => undef,
> + project_filter => $dirprefix,
> + action=>"project_list")},
> + esc_html($part)) . " / ";
> + }
> +}
> +
> sub print_nav_breadcrumbs {
> my %opts = @_;
>
> @@ -3841,6 +3866,8 @@ sub print_nav_breadcrumbs {
> print " / $opts{-action_extra}";
> }
> print "\n";
> + } elsif (defined $project_filter) {
> + print_nav_breadcrumbs_path(split '/', $project_filter);
> }
> }
> This could have been split into a separate 2/3 commit, but nevermind; it can be squashed here.
-- Jakub Narebski Poland