aboutsummaryrefslogtreecommitdiffstats
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
parent08cc2e5f0e24773dad81d38bd6b689e36afe9dda (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>
-rw-r--r--cgit.css5
-rw-r--r--cgit.h2
-rw-r--r--shared.c4
-rw-r--r--ui-repolist.c10
4 files changed, 21 insertions, 0 deletions
diff --git a/cgit.css b/cgit.css
index 6c7f9c3..88a0a1d 100644
--- a/cgit.css
+++ b/cgit.css
@@ -353,3 +353,8 @@ table.diff td div.del {
.right {
text-align: right;
}
+
+table.list td.repogroup {
+ padding-top: 1em;
+ font-weight: bold;
+}
diff --git a/cgit.h b/cgit.h
index f3d783e..8a69a1f 100644
--- a/cgit.h
+++ b/cgit.h
@@ -36,6 +36,7 @@ struct repoinfo {
char *desc;
char *owner;
char *defbranch;
+ char *group;
char *module_link;
int snapshots;
int enable_log_filecount;
@@ -80,6 +81,7 @@ extern char *cgit_module_link;
extern char *cgit_virtual_root;
extern char *cgit_script_name;
extern char *cgit_cache_root;
+extern char *cgit_repo_group;
extern int cgit_nocache;
extern int cgit_snapshots;
diff --git a/shared.c b/shared.c
index 53cd9b0..4ddba61 100644
--- a/shared.c
+++ b/shared.c
@@ -19,6 +19,7 @@ char *cgit_module_link = "./?repo=%s&page=commit&id=%s";
char *cgit_virtual_root = NULL;
char *cgit_script_name = CGIT_SCRIPT_NAME;
char *cgit_cache_root = "/var/cache/cgit";
+char *cgit_repo_group = NULL;
int cgit_nocache = 0;
int cgit_snapshots = 0;
@@ -85,6 +86,7 @@ struct repoinfo *add_repo(const char *url)
ret->path = NULL;
ret->desc = NULL;
ret->owner = NULL;
+ ret->group = cgit_repo_group;
ret->defbranch = "master";
ret->snapshots = cgit_snapshots;
ret->enable_log_filecount = cgit_enable_log_filecount;
@@ -131,6 +133,8 @@ void cgit_global_config_cb(const char *name, const char *value)
cgit_max_repodesc_len = atoi(value);
else if (!strcmp(name, "max-commit-count"))
cgit_max_commit_count = atoi(value);
+ else if (!strcmp(name, "repo.group"))
+ cgit_repo_group = xstrdup(value);
else if (!strcmp(name, "repo.url"))
cgit_repo = add_repo(value);
else if (!strcmp(name, "repo.name"))
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);