From e7af002d5c405c82652f739d08ced3908d1f57e7 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Sun, 23 Aug 2009 22:58:39 +0200 Subject: Introduce 'section' as canonical spelling for 'repo.group' The 'repo.' prefix should be reserved for repo-specific options, but the option 'repo.group' must still be honored to stay backwards compatible. Signed-off-by: Lars Hjemli --- ui-repolist.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'ui-repolist.c') diff --git a/ui-repolist.c b/ui-repolist.c index 7c7aa9b..4dea3b3 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -203,7 +203,7 @@ int sort_repolist(char *field) void cgit_print_repolist() { int i, columns = 4, hits = 0, header = 0; - char *last_group = NULL; + char *last_section = NULL; int sorted = 0; if (ctx.cfg.enable_index_links) @@ -233,18 +233,18 @@ void cgit_print_repolist() if (!header++) print_header(columns); if (!sorted && - ((last_group == NULL && ctx.repo->group != NULL) || - (last_group != NULL && ctx.repo->group == NULL) || - (last_group != NULL && ctx.repo->group != NULL && - strcmp(ctx.repo->group, last_group)))) { - htmlf("", + ((last_section == NULL && ctx.repo->section != NULL) || + (last_section != NULL && ctx.repo->section == NULL) || + (last_section != NULL && ctx.repo->section != NULL && + strcmp(ctx.repo->section, last_section)))) { + htmlf("", columns); - html_txt(ctx.repo->group); + html_txt(ctx.repo->section); html(""); - last_group = ctx.repo->group; + last_section = ctx.repo->section; } htmlf("", - !sorted && ctx.repo->group ? "sublevel-repo" : "toplevel-repo"); + !sorted && ctx.repo->section ? "sublevel-repo" : "toplevel-repo"); cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL); html(""); html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); -- cgit 1.4.1 From 63816ec59748c622623f20e653a7bed87f4f05a4 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Sun, 23 Aug 2009 23:09:31 +0200 Subject: ui-repolist.c: sort by section name, repo name as default When no sorting is requested by the client, cgit will now sort by section name followed by repo name. This allows repos to be registered/ discovered independently of their display order. Signed-off-by: Lars Hjemli --- ui-repolist.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'ui-repolist.c') diff --git a/ui-repolist.c b/ui-repolist.c index 4dea3b3..d56654d 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -136,6 +136,18 @@ static int cmp(const char *s1, const char *s2) return 0; } +static int sort_section(const void *a, const void *b) +{ + const struct cgit_repo *r1 = a; + const struct cgit_repo *r2 = b; + int result; + + result = cmp(r1->section, r2->section); + if (!result) + result = cmp(r1->name, r2->name); + return result; +} + static int sort_name(const void *a, const void *b) { const struct cgit_repo *r1 = a; @@ -178,6 +190,7 @@ struct sortcolumn { }; struct sortcolumn sortcolumn[] = { + {"section", sort_section}, {"name", sort_name}, {"desc", sort_desc}, {"owner", sort_owner}, @@ -219,6 +232,8 @@ void cgit_print_repolist() if(ctx.qry.sort) sorted = sort_repolist(ctx.qry.sort); + else + sort_repolist("section"); html(""); for (i=0; i Date: Mon, 24 Aug 2009 07:42:03 +0200 Subject: ui-repolist: handle empty sections similar to NULL sections Signed-off-by: Lars Hjemli --- cgit.c | 1 + ui-repolist.c | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'ui-repolist.c') diff --git a/cgit.c b/cgit.c index e281aa9..167b5dd 100644 --- a/cgit.c +++ b/cgit.c @@ -269,6 +269,7 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.root_title = "Git repository browser"; ctx->cfg.root_desc = "a fast webinterface for the git dscm"; ctx->cfg.script_name = CGIT_SCRIPT_NAME; + ctx->cfg.section = ""; ctx->cfg.summary_branches = 10; ctx->cfg.summary_log = 10; ctx->cfg.summary_tags = 10; diff --git a/ui-repolist.c b/ui-repolist.c index d56654d..3ef2e99 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -217,6 +217,7 @@ void cgit_print_repolist() { int i, columns = 4, hits = 0, header = 0; char *last_section = NULL; + char *section; int sorted = 0; if (ctx.cfg.enable_index_links) @@ -247,19 +248,22 @@ void cgit_print_repolist() continue; if (!header++) print_header(columns); + section = ctx.repo->section; + if (section && !strcmp(section, "")) + section = NULL; if (!sorted && - ((last_section == NULL && ctx.repo->section != NULL) || - (last_section != NULL && ctx.repo->section == NULL) || - (last_section != NULL && ctx.repo->section != NULL && - strcmp(ctx.repo->section, last_section)))) { + ((last_section == NULL && section != NULL) || + (last_section != NULL && section == NULL) || + (last_section != NULL && section != NULL && + strcmp(section, last_section)))) { htmlf(""); - last_section = ctx.repo->section; + last_section = section; } htmlf("
", columns); - html_txt(ctx.repo->section); + html_txt(section); html("
", - !sorted && ctx.repo->section ? "sublevel-repo" : "toplevel-repo"); + !sorted && section ? "sublevel-repo" : "toplevel-repo"); cgit_summary_link(ctx.repo->name, ctx.repo->name, NULL, NULL); html(""); html_link_open(cgit_repourl(ctx.repo->url), NULL, NULL); -- cgit 1.4.1