all repos — cgit @ db8b8cb9467625cb8d9ecb67863aa67590e59cc0

a hyperfast web frontend for git written in c

Merge branch 'lh/about'

Conflicts:
	cgit.h
Lars Hjemli hjemli@gmail.com
Sun, 09 Aug 2009 13:46:34 +0200
commit

db8b8cb9467625cb8d9ecb67863aa67590e59cc0

parent

db6303b58883c4417f5bcc0c1ee34fed6553dca3

8 files changed, 48 insertions(+), 10 deletions(-)

jump to
M cgit.ccgit.c

@@ -100,6 +100,8 @@ else if (!strcmp(name, "cache-static-ttl"))

ctx.cfg.cache_static_ttl = atoi(value); else if (!strcmp(name, "cache-dynamic-ttl")) ctx.cfg.cache_dynamic_ttl = atoi(value); + else if (!strcmp(name, "about-filter")) + ctx.cfg.about_filter = new_filter(value, 0); else if (!strcmp(name, "commit-filter")) ctx.cfg.commit_filter = new_filter(value, 0); else if (!strcmp(name, "embedded"))

@@ -158,6 +160,8 @@ else if (ctx.repo && !strcmp(name, "repo.max-stats"))

ctx.repo->max_stats = cgit_find_stats_period(value, NULL); else if (ctx.repo && !strcmp(name, "repo.module-link")) ctx.repo->module_link= xstrdup(value); + else if (ctx.repo && !strcmp(name, "repo.about-filter")) + ctx.repo->about_filter = new_filter(value, 0); else if (ctx.repo && !strcmp(name, "repo.commit-filter")) ctx.repo->commit_filter = new_filter(value, 0); else if (ctx.repo && !strcmp(name, "repo.source-filter"))
M cgit.hcgit.h

@@ -74,6 +74,7 @@ int enable_log_filecount;

int enable_log_linecount; int max_stats; time_t mtime; + struct cgit_filter *about_filter; struct cgit_filter *commit_filter; struct cgit_filter *source_filter; };

@@ -188,6 +189,7 @@ int summary_branches;

int summary_log; int summary_tags; struct string_list mimetypes; + struct cgit_filter *about_filter; struct cgit_filter *commit_filter; struct cgit_filter *source_filter; };
M cgitrc.5.txtcgitrc.5.txt

@@ -16,6 +16,13 @@

GLOBAL SETTINGS --------------- +about-filter:: + Specifies a command which will be invoked to format the content of + about pages (both top-level and for each repository). The command will + get the content of the about-file on its STDIN, and the STDOUT from the + command will be included verbatim on the about page. Default value: + none. + agefile:: Specifies a path, relative to each repository path, which can be used to specify the date and time of the youngest commit in the repository.

@@ -242,6 +249,9 @@ same kind of virtual urls, so this option will probably be deprecated.

REPOSITORY SETTINGS ------------------- +repo.about-filter:: + Override the default about-filter. Default value: <about-filter>. + repo.clone-url:: A list of space-separated urls which can be used to clone this repo. Default value: none.
M cmd.ccmd.c

@@ -39,7 +39,7 @@

static void about_fn(struct cgit_context *ctx) { if (ctx->repo) - cgit_print_repo_readme(); + cgit_print_repo_readme(ctx->qry.path); else cgit_print_site_readme(); }
M shared.cshared.c

@@ -62,6 +62,7 @@ ret->max_stats = ctx.cfg.max_stats;

ret->module_link = ctx.cfg.module_link; ret->readme = NULL; ret->mtime = -1; + ret->about_filter = ctx.cfg.about_filter; ret->commit_filter = ctx.cfg.commit_filter; ret->source_filter = ctx.cfg.source_filter; return ret;
M ui-repolist.cui-repolist.c

@@ -273,6 +273,11 @@ }

void cgit_print_site_readme() { - if (ctx.cfg.root_readme) - html_include(ctx.cfg.root_readme); + if (!ctx.cfg.root_readme) + return; + if (ctx.cfg.about_filter) + cgit_open_filter(ctx.cfg.about_filter); + html_include(ctx.cfg.root_readme); + if (ctx.cfg.about_filter) + cgit_close_filter(ctx.cfg.about_filter); }
M ui-summary.cui-summary.c

@@ -66,11 +66,27 @@ print_urls(ctx.cfg.clone_prefix, ctx.repo->url);

html("</table>"); } -void cgit_print_repo_readme() +void cgit_print_repo_readme(char *path) { - if (ctx.repo->readme) { - html("<div id='summary'>"); - html_include(ctx.repo->readme); - html("</div>"); - } + char *slash, *tmp; + + if (!ctx.repo->readme) + return; + + if (path) { + slash = strrchr(ctx.repo->readme, '/'); + if (!slash) + return; + tmp = xmalloc(slash - ctx.repo->readme + 1 + strlen(path) + 1); + strncpy(tmp, ctx.repo->readme, slash - ctx.repo->readme + 1); + strcpy(tmp + (slash - ctx.repo->readme + 1), path); + } else + tmp = ctx.repo->readme; + html("<div id='summary'>"); + if (ctx.repo->about_filter) + cgit_open_filter(ctx.repo->about_filter); + html_include(tmp); + if (ctx.repo->about_filter) + cgit_close_filter(ctx.repo->about_filter); + html("</div>"); }
M ui-summary.hui-summary.h

@@ -2,6 +2,6 @@ #ifndef UI_SUMMARY_H

#define UI_SUMMARY_H extern void cgit_print_summary(); -extern void cgit_print_repo_readme(); +extern void cgit_print_repo_readme(char *path); #endif /* UI_SUMMARY_H */