mirror of
https://git.zx2c4.com/cgit
synced 2024-11-23 00:48:42 +00:00
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.
This commit is contained in:
parent
e19f7d7180
commit
7530d94f05
@ -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;
|
int i;
|
||||||
html("<div class='pager'>");
|
html("<div class='pager'>");
|
||||||
for(i = 0; i * pagelen < items; i++)
|
for(i = 0; i * pagelen < items; i++)
|
||||||
cgit_index_link(fmt("[%d]", i+1), fmt("Page %d", i+1), NULL,
|
cgit_index_link(fmt("[%d]", i+1), fmt("Page %d", i+1), NULL,
|
||||||
search, i * pagelen);
|
search, sort, i * pagelen);
|
||||||
html("</div>");
|
html("</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ void cgit_print_repolist()
|
|||||||
if (!hits)
|
if (!hits)
|
||||||
cgit_print_error("No repositories found");
|
cgit_print_error("No repositories found");
|
||||||
else if (hits > ctx.cfg.max_repo_count)
|
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();
|
cgit_print_docend();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
24
ui-shared.c
24
ui-shared.c
@ -133,7 +133,7 @@ char *cgit_currurl()
|
|||||||
return fmt("%s/", ctx.cfg.virtual_root);
|
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 = "?";
|
char *delim = "?";
|
||||||
|
|
||||||
@ -154,6 +154,12 @@ static void site_url(const char *page, const char *search, int ofs)
|
|||||||
html_attr(search);
|
html_attr(search);
|
||||||
delim = "&";
|
delim = "&";
|
||||||
}
|
}
|
||||||
|
if (sort) {
|
||||||
|
html(delim);
|
||||||
|
html("s=");
|
||||||
|
html_attr(sort);
|
||||||
|
delim = "&";
|
||||||
|
}
|
||||||
if (ofs) {
|
if (ofs) {
|
||||||
html(delim);
|
html(delim);
|
||||||
htmlf("ofs=%d", ofs);
|
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,
|
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");
|
html("<a");
|
||||||
if (title) {
|
if (title) {
|
||||||
@ -175,16 +181,16 @@ static void site_link(const char *page, const char *name, const char *title,
|
|||||||
html("'");
|
html("'");
|
||||||
}
|
}
|
||||||
html(" href='");
|
html(" href='");
|
||||||
site_url(page, search, ofs);
|
site_url(page, search, sort, ofs);
|
||||||
html("'>");
|
html("'>");
|
||||||
html_txt(name);
|
html_txt(name);
|
||||||
html("</a>");
|
html("</a>");
|
||||||
}
|
}
|
||||||
|
|
||||||
void cgit_index_link(const char *name, const char *title, const char *class,
|
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,
|
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)
|
struct cgit_context *ctx)
|
||||||
{
|
{
|
||||||
if (!strcmp(ctx->qry.page, "repolist"))
|
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);
|
ctx->qry.ofs);
|
||||||
else if (!strcmp(ctx->qry.page, "summary"))
|
else if (!strcmp(ctx->qry.page, "summary"))
|
||||||
return cgit_summary_link(name, title, class, ctx->qry.head);
|
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'>");
|
html("<td class='main'>");
|
||||||
if (ctx->repo) {
|
if (ctx->repo) {
|
||||||
cgit_index_link("index", NULL, NULL, NULL, 0);
|
cgit_index_link("index", NULL, NULL, NULL, NULL, 0);
|
||||||
html(" : ");
|
html(" : ");
|
||||||
cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
|
cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL);
|
||||||
html("</td><td class='form'>");
|
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("<input type='submit' value='search'/>\n");
|
||||||
html("</form>\n");
|
html("</form>\n");
|
||||||
} else {
|
} 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)
|
if (ctx->cfg.root_readme)
|
||||||
site_link("about", "about", NULL, hc(ctx, "about"),
|
site_link("about", "about", NULL, hc(ctx, "about"),
|
||||||
NULL, 0);
|
NULL, NULL, 0);
|
||||||
html("</td><td class='form'>");
|
html("</td><td class='form'>");
|
||||||
html("<form method='get' action='");
|
html("<form method='get' action='");
|
||||||
html_attr(cgit_rooturl());
|
html_attr(cgit_rooturl());
|
||||||
|
@ -11,7 +11,7 @@ extern char *cgit_pageurl(const char *reponame, const char *pagename,
|
|||||||
const char *query);
|
const char *query);
|
||||||
|
|
||||||
extern void cgit_index_link(const char *name, const char *title,
|
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,
|
extern void cgit_summary_link(const char *name, const char *title,
|
||||||
const char *class, const char *head);
|
const char *class, const char *head);
|
||||||
extern void cgit_tag_link(const char *name, const char *title,
|
extern void cgit_tag_link(const char *name, const char *title,
|
||||||
|
Loading…
Reference in New Issue
Block a user