This is a preparatory patch for separation of project list and frontpage actions; it factors out most logic of git_project_list(): * git_project_list_all() as a git_project_list_body() wrapper for complete project listing * git_project_search_form() for printing the project search form Also, git_project_list_ctags() is now separated out of git_project_list_body(), showing tag cloud for given project list. Signed-off-by: Petr Baudis <pasky@xxxxxxx> --- gitweb/gitweb.perl | 69 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 41 insertions(+), 28 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index e4cbfc3..e82ca45 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -4201,10 +4201,9 @@ sub git_patchset_body { # project in the list, removing invalid projects from returned list # NOTE: modifies $projlist, but does not remove entries from it sub fill_project_list_info { - my ($projlist, $check_forks) = @_; + my ($projlist, $check_forks, $show_ctags) = @_; my @projects; - my $show_ctags = gitweb_check_feature('ctags'); PROJECT: foreach my $pr (@$projlist) { my (@activity) = git_get_last_activity($pr->{'path'}); @@ -4254,12 +4253,26 @@ sub print_sort_th { } } +sub git_project_list_ctags { + my ($projects) = @_; + + my %ctags; + foreach my $p (@$projects) { + foreach my $ct (keys %{$p->{'ctags'}}) { + $ctags{$ct} += $p->{'ctags'}->{$ct}; + } + } + my $cloud = git_populate_project_tagcloud(\%ctags); + print git_show_project_tagcloud($cloud, 64); +} + sub git_project_list_body { # actually uses global variable $project my ($projlist, $order, $from, $to, $extra, $no_header) = @_; my $check_forks = gitweb_check_feature('forks'); - my @projects = fill_project_list_info($projlist, $check_forks); + my $show_ctags = gitweb_check_feature('ctags'); + my @projects = fill_project_list_info($projlist, $check_forks, $show_ctags); $order ||= $default_projects_order; $from = 0 unless defined $from; @@ -4278,16 +4291,8 @@ sub git_project_list_body { @projects = sort {$a->{$oi->{'key'}} <=> $b->{$oi->{'key'}}} @projects; } - my $show_ctags = gitweb_check_feature('ctags'); if ($show_ctags) { - my %ctags; - foreach my $p (@projects) { - foreach my $ct (keys %{$p->{'ctags'}}) { - $ctags{$ct} += $p->{'ctags'}->{$ct}; - } - } - my $cloud = git_populate_project_tagcloud(\%ctags); - print git_show_project_tagcloud($cloud, 64); + git_project_list_ctags(\@projects); } print "<table class=\"project_list\">\n"; @@ -4361,6 +4366,28 @@ sub git_project_list_body { print "</table>\n"; } +sub git_project_search_form { + print $cgi->startform(-method => "get") . + "<p class=\"projsearch\">Search:\n" . + $cgi->textfield(-name => "s", -value => $searchtext) . "\n" . + "</p>" . + $cgi->end_form() . "\n"; +} + +sub git_project_list_all { + my $order = $input_params{'order'}; + if (defined $order && $order !~ m/none|project|descr|owner|age/) { + die_error(400, "Unknown order parameter"); + } + + my @list = git_get_projects_list(); + if (!@list) { + die_error(404, "No projects found"); + } + + git_project_list_body(\@list, $order); +} + sub git_shortlog_body { # uses global variable $project my ($commitlist, $from, $to, $refs, $extra) = @_; @@ -4630,28 +4657,14 @@ sub git_search_grep_body { ## actions sub git_project_list { - my $order = $input_params{'order'}; - if (defined $order && $order !~ m/none|project|descr|owner|age/) { - die_error(400, "Unknown order parameter"); - } - - my @list = git_get_projects_list(); - if (!@list) { - die_error(404, "No projects found"); - } - git_header_html(); if (-f $home_text) { print "<div class=\"index_include\">\n"; insert_file($home_text); print "</div>\n"; } - print $cgi->startform(-method => "get") . - "<p class=\"projsearch\">Search:\n" . - $cgi->textfield(-name => "s", -value => $searchtext) . "\n" . - "</p>" . - $cgi->end_form() . "\n"; - git_project_list_body(\@list, $order); + git_project_search_form(); + git_project_list_all(); git_footer_html(); } -- tg: (8cc62c1..) t/frontpage/refactor (depends on: vanilla/master) -- 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