git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 13] gitweb: Pager refactoring - use git_get_paging_nav for pagination

From
Jakub Narebski <jnareb@gmail.com>
Date
Jul 30, 2006, 15:49 UTC
Message-ID
<200607301749.00999.jnareb@gmail.com>
In-Reply-To
<200607292239.11034.jnareb@gmail.com>

Add git_get_paging_nav subroutine which returns string with pager (paging nav) for shortlog and log actions.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
It would make no sense to split this patch into two, I think.
 gitweb/gitweb.cgi |   68 +++++++++++++++++++++++++----------------------------
 1 files changed, 32 insertions(+), 36 deletions(-)
diff --git a/gitweb/gitweb.cgi b/gitweb/gitweb.cgi
index df152c3..0ed3ad2 100755
--- a/gitweb/gitweb.cgi
+++ b/gitweb/gitweb.cgi
@@ -420,6 +420,36 @@ sub git_page_nav {
 	      "</div>\n";
 }
 
+sub git_get_paging_nav {
+	my ($project, $action, $hash, $head, $page, $nrevs) = @_;
+	my $paging_nav;
+
+
+	if ($hash ne $head || $page) {
+		$paging_nav .= $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=$action")}, "HEAD");
+	} else {
+		$paging_nav .= "HEAD";
+	}
+
+	if ($page > 0) {
+		$paging_nav .= " &sdot; " .
+			$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=$action;h=$hash;pg=" . ($page-1)),
+							 -accesskey => "p", -title => "Alt-p"}, "prev");
+	} else {
+		$paging_nav .= " &sdot; prev";
+	}
+
+	if ($nrevs >= (100 * ($page+1)-1)) {
+		$paging_nav .= " &sdot; " .
+			$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=$action;h=$hash;pg=" . ($page+1)),
+							 -accesskey => "n", -title => "Alt-n"}, "next");
+	} else {
+		$paging_nav .= " &sdot; next";
+	}
+
+	return $paging_nav;
+}
+
 sub git_get_type {
 	my $hash = shift;
 
@@ -1873,24 +1903,7 @@ sub git_log {
 	my @revlist = map { chomp; $_ } <$fd>;
 	close $fd;
 
-	my $paging_nav = '';
-	if ($hash ne $head || $page) {
-		$paging_nav .= $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=log")}, "HEAD");
-	} else {
-		$paging_nav .= "HEAD";
-	}
-	if ($page > 0) {
-		$paging_nav .= " &sdot; " .
-			$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=log;h=$hash;pg=" . ($page-1)), -accesskey => "p", -title => "Alt-p"}, "prev");
-	} else {
-		$paging_nav .= " &sdot; prev";
-	}
-	if ($#revlist >= (100 * ($page+1)-1)) {
-		$paging_nav .= " &sdot; " .
-			$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=log;h=$hash;pg=" . ($page+1)), -accesskey => "n", -title => "Alt-n"}, "next");
-	} else {
-		$paging_nav .= " &sdot; next";
-	}
+	my $paging_nav = git_get_paging_nav($project, 'log', $hash, $head, $page, $#revlist);
 
 	git_header_html();
 	git_page_nav('log','', $hash,undef,undef, $paging_nav);
@@ -2553,24 +2566,7 @@ sub git_shortlog {
 	my @revlist = map { chomp; $_ } <$fd>;
 	close $fd;
 
-	my $paging_nav = '';
-	if ($hash ne $head || $page) {
-		$paging_nav .= $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=shortlog")}, "HEAD");
-	} else {
-		$paging_nav .= "HEAD";
-	}
-	if ($page > 0) {
-		$paging_nav .= " &sdot; " .
-			$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=shortlog;h=$hash;pg=" . ($page-1)), -accesskey => "p", -title => "Alt-p"}, "prev");
-	} else {
-		$paging_nav .= " &sdot; prev";
-	}
-	if ($#revlist >= (100 * ($page+1)-1)) {
-		$paging_nav .= " &sdot; " .
-			$cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=shortlog;h=$hash;pg=" . ($page+1)), -accesskey => "n", -title => "Alt-n"}, "next");
-	} else {
-		$paging_nav .= " &sdot; next";
-	}
+	my $paging_nav = git_get_paging_nav($project, 'shortlog', $hash, $head, $page, $#revlist);
 
 	git_header_html();
 	git_page_nav('shortlog','', $hash,$hash,$hash, $paging_nav);
-- 
1.4.0
Previous: Jakub NarebskiNext: Jakub Narebski
Message 22 of 54 in “Some gitweb patches”
  1. Some gitweb patchesJakub Narebski, Jul 29, 2006
  2. gitweb: whitespace cleanupJakub Narebski, Jul 29, 2006
  3. gitweb: Use list for of open for running git commands, thorougly.Jakub Narebski, Jul 29, 2006
  4. Jakub NarebskiJul 30, 2006
  5. Junio C HamanoJul 31, 2006
  6. Jakub NarebskiJul 31, 2006
  7. Jakub NarebskiJul 31, 2006
  8. Jakub NarebskiJul 31, 2006
  9. Jakub NarebskiJul 31, 2006
  10. gitweb: simplify git_get_hash_by_pathJakub Narebski, Jul 29, 2006
  11. gitweb: More explicit error messages for open "-|"Jakub Narebski, Jul 29, 2006
  12. gitweb: Cleanup - chomp $line in consistent styleJakub Narebski, Jul 30, 2006
  13. gitweb: Correct error from changing "-|" open to list form in git_commitJakub Narebski, Jul 30, 2006
  14. gitweb: Cleanup - chomp @lines in consistent styleJakub Narebski, Jul 30, 2006
  15. gitweb: Add git_page_nav for later useJakub Narebski, Jul 30, 2006
  16. gitweb: Navbar refactoring - use git_page_nav to generate navigation barJakub Narebski, Jul 30, 2006
  17. gitweb: Replace form-feed character by ^LJakub Narebski, Jul 30, 2006
  18. gitweb: Read project description using utf-8 encodingJakub Narebski, Jul 30, 2006
  19. Jakub NarebskiJul 30, 2006
  20. gitweb: Show project descriptions with utf-8 characters in project list correctlyJakub Narebski, Jul 30, 2006
  21. gitweb: Add "\n" after <br/> in git_page_navJakub Narebski, Jul 30, 2006
  22. gitweb: Pager refactoring - use git_get_paging_nav for paginationJakub Narebski, Jul 30, 2006
  23. gitweb: Remove $project from git_get_paging_nav argumentsJakub Narebski, Jul 30, 2006
  24. gitweb: Headers refactoring - use git_header_div for header divsJakub Narebski, Jul 30, 2006
  25. gitweb: Remove characters entities entirely when shortening stringJakub Narebski, Jul 30, 2006
  26. Jakub NarebskiJul 31, 2006
  27. Jakub NarebskiJul 31, 2006
  28. gitweb: Ref refactoring - use git_get_referencing for marking tagged/head commitsJakub Narebski, Jul 31, 2006
  29. gitweb: Refactor generation of shortlog, tags and heads bodyJakub Narebski, Jul 31, 2006
  30. gitweb: No need to quote path for list version of open "-|"Jakub Narebski, Jul 31, 2006
  31. Junio C HamanoJul 31, 2006
  32. Jakub NarebskiJul 31, 2006
  33. Junio C HamanoAug 1, 2006
  34. There can be more than two levels of subdirectoriesJunio C Hamano, Aug 1, 2006
  35. gitweb: Reordering code and dividing it into categoriesJakub Narebski, Jul 31, 2006
  36. gitweb: Reordering code and dividing it into categoriesJakub Narebski, Jul 31, 2006
  37. gitweb: use a hash to lookup the sub for an actionMatthias Lederhofer, Jul 31, 2006
  38. Junio C HamanoJul 31, 2006
  39. Jakub NarebskiJul 31, 2006
  40. Luben TuikovAug 1, 2006
  41. Jakub Narebski, Aug 1, 2006
  42. Perhaps an obvious cut and paste error.Junio C Hamano, Aug 1, 2006
  43. Jakub NarebskiAug 1, 2006
  44. A few more fixups to gitwebJunio C Hamano, Aug 1, 2006
  45. Jakub NarebskiAug 1, 2006
  46. Junio C HamanoAug 1, 2006
  47. 1/2 Use tabs for indent in shell scriptsJakub Narebski, Aug 1, 2006
  48. 2/2 Set User-Agent string in shell scripts used for fetchingJakub Narebski, Aug 1, 2006
  49. Junio C HamanoAug 1, 2006
  50. Junio C HamanoAug 1, 2006
  51. Jakub NarebskiAug 1, 2006
  52. Luben TuikovAug 1, 2006
  53. gitweb: clean up user configuration partMatthias Lederhofer, Aug 1, 2006
  54. gitweb: include perl files for configurationMatthias Lederhofer, Aug 1, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.