summaryrefslogtreecommitdiff
path: root/ui-repolist.c
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2007-05-18 22:48:22 +0200
committerLars Hjemli <hjemli@gmail.com>2007-05-18 22:51:18 +0200
commit5877c49f68b1e1bef94b4867f22c336f0e1605b6 (patch)
tree4e628096d9f189b7ef5ff9dcda40a07a5f7b21d0 /ui-repolist.c
parentRemove unused extern declarations from cgit.h (diff)
Teach cgit how to group repositories by category
The new parameter 'repo.group' is used to set the repository group for the following repositores. Whenever this parameter changes value, a subheading is generated in the index page (printing the current value of repo.group). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-repolist.c')
-rw-r--r--ui-repolist.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ui-repolist.c b/ui-repolist.c
index d7311e4..a884c20 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -12,6 +12,7 @@ void cgit_print_repolist(struct cacheitem *item)
{
struct repoinfo *repo;
int i;
+ char *last_group = NULL;
cgit_print_docstart(cgit_root_title, item);
cgit_print_pageheader(cgit_root_title, 0);
@@ -25,6 +26,15 @@ void cgit_print_repolist(struct cacheitem *item)
for (i=0; i<cgit_repolist.count; i++) {
repo = &cgit_repolist.repos[i];
+ if ((last_group == NULL && repo->group != NULL) ||
+ (last_group != NULL && repo->group == NULL) ||
+ (last_group != NULL && repo->group!= NULL &&
+ strcmp(repo->group, last_group))) {
+ html("<tr><td colspan='4' class='repogroup'>");
+ html_txt(repo->group);
+ html("</td></tr>");
+ last_group = repo->group;
+ }
html("<tr><td>");
html_link_open(cgit_repourl(repo->url), NULL, NULL);
html_txt(repo->name);