about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTobias Grimm <git@e-tobi.net>2011-07-31 02:44:05 +0200
committerLars Hjemli <hjemli@gmail.com>2012-01-03 15:20:17 +0000
commit7530d94f05887b8065742adb614c368d8568a22c (patch)
tree7364cde2e397b40d84153a1527e50e863b69d69b
parentui-ssdiff: move LCS table away from the stack (diff)
downloadcgit-pink-7530d94f05887b8065742adb614c368d8568a22c.tar.gz
cgit-pink-7530d94f05887b8065742adb614c368d8568a22c.zip
Add sort parameter to pager of repo list
When the repolist is paged, the page-links are missing the sort parameter,
causing the initial page to be custom sorted, but any clicked page will
then be with the default sort order again.
Diffstat (limited to '')
-rw-r--r--ui-repolist.c6
-rw-r--r--ui-shared.c24
-rw-r--r--ui-shared.h2
3 files changed, 19 insertions, 13 deletions
diff --git a/ui-repolist.c b/ui-repolist.c
index e138f59..4b21e2f 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -109,13 +109,13 @@ void print_header(int columns)
 }
 
 
-void print_pager(int items, int pagelen, char *search)
+void print_pager(int items, int pagelen, char *search, char *sort)
 {
 	int i;
 	html("<div class='pager'>");
 	for(i = 0; i * pagelen < items; i++)
 		cgit_index_link(fmt("[%d]", i+1), fmt("Page %d", i+1), NULL,
-				search, i * pagelen);
+				search, sort, i * pagelen);
 	html("</div>");
 }
 
@@ -282,7 +282,7 @@ void cgit_print_repolist()
 	if (!hits)
 		cgit_print_error("No repositories found");
 	else if (hits > ctx.cfg.max_repo_count)
-		print_pager(hits, ctx.cfg.max_repo_count, ctx.qry.search);
+		print_pager(hits, ctx.cfg.max_repo_count, ctx.qry.search, ctx.qry.sort);
 	cgit_print_docend();
 }
 
diff --git a/ui-shared.c b/ui-shared.c
index 5aa9119..85c2096 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -133,7 +133,7 @@ char *cgit_currurl()
 		return fmt("%s/", ctx.cfg.virtual_root);
 }
 
-static void site_url(const char *page, const char *search, int ofs)
+static void site_url(const char *page, const char *search, const char *sort, int ofs)
 {
 	char *delim = "?";
 
@@ -154,6 +154,12 @@ static void site_url(const char *page, const char *search, int ofs)
 		html_attr(search);
 		delim = "&";
 	}
+	if (sort) {
+		html(delim);
+		html("s=");
+		html_attr(sort);
+		delim = "&";
+	}
 	if (ofs) {
 		html(delim);
 		htmlf("ofs=%d", ofs);
@@ -161,7 +167,7 @@ static void site_url(const char *page, const char *search, int ofs)
 }
 
 static void site_link(const char *page, const char *name, const char *title,
-		      const char *class, const char *search, int ofs)
+		      const char *class, const char *search, const char *sort, int ofs)
 {
 	html("<a");
 	if (title) {
@@ -175,16 +181,16 @@ static void site_link(const char *page, const char *name, const char *title,
 		html("'");
 	}
 	html(" href='");
-	site_url(page, search, ofs);
+	site_url(page, search, sort, ofs);
 	html("'>");
 	html_txt(name);
 	html("</a>");
 }
 
 void cgit_index_link(const char *name, const char *title, const char *class,
-		     const char *pattern, int ofs)
+		     const char *pattern, const char *sort, int ofs)
 {
-	site_link(NULL, name, title, class, pattern, ofs);
+	site_link(NULL, name, title, class, pattern, sort, ofs);
 }
 
 static char *repolink(const char *title, const char *class, const char *page,
@@ -428,7 +434,7 @@ void cgit_self_link(char *name, const char *title, const char *class,
 		    struct cgit_context *ctx)
 {
 	if (!strcmp(ctx->qry.page, "repolist"))
-		return cgit_index_link(name, title, class, ctx->qry.search,
+		return cgit_index_link(name, title, class, ctx->qry.search, ctx->qry.sort,
 				       ctx->qry.ofs);
 	else if (!strcmp(ctx->qry.page, "summary"))
 		return cgit_summary_link(name, title, class, ctx->qry.head);
@@ -782,7 +788,7 @@ static void print_header(struct cgit_context *ctx)
 
 	html("<td class='main'>");
 	if (ctx->repo) {
-		cgit_index_link("index", NULL, NULL, NULL, 0);
+		cgit_index_link("index", NULL, NULL, NULL, NULL, 0);
 		html(" : ");
 		cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
 		html("</td><td class='form'>");
@@ -858,10 +864,10 @@ void cgit_print_pageheader(struct cgit_context *ctx)
 		html("<input type='submit' value='search'/>\n");
 		html("</form>\n");
 	} else {
-		site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0);
+		site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, NULL, 0);
 		if (ctx->cfg.root_readme)
 			site_link("about", "about", NULL, hc(ctx, "about"),
-				  NULL, 0);
+				  NULL, NULL, 0);
 		html("</td><td class='form'>");
 		html("<form method='get' action='");
 		html_attr(cgit_rooturl());
diff --git a/ui-shared.h b/ui-shared.h
index 3cc1258..865bd45 100644
--- a/ui-shared.h
+++ b/ui-shared.h
@@ -11,7 +11,7 @@ extern char *cgit_pageurl(const char *reponame, const char *pagename,
 			  const char *query);
 
 extern void cgit_index_link(const char *name, const char *title,
-			    const char *class, const char *pattern, int ofs);
+			    const char *class, const char *pattern, const char *sort, int ofs);
 extern void cgit_summary_link(const char *name, const char *title,
 			      const char *class, const char *head);
 extern void cgit_tag_link(const char *name, const char *title,