diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2009-08-09 13:46:34 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2009-08-09 13:46:34 +0200 | 
| commit | db8b8cb9467625cb8d9ecb67863aa67590e59cc0 (patch) | |
| tree | d27644fc1b98ec6365e74f3ba40c19f78f8a287f | |
| parent | Merge branch 'lh/plugins' (diff) | |
| parent | Add 'about-filter' and 'repo.about-filter' options (diff) | |
| download | cgit-db8b8cb9467625cb8d9ecb67863aa67590e59cc0.tar.gz cgit-db8b8cb9467625cb8d9ecb67863aa67590e59cc0.tar.bz2 cgit-db8b8cb9467625cb8d9ecb67863aa67590e59cc0.zip | |
Merge branch 'lh/about'
Conflicts:
	cgit.h
Diffstat (limited to '')
| -rw-r--r-- | cgit.c | 4 | ||||
| -rw-r--r-- | cgit.h | 2 | ||||
| -rw-r--r-- | cgitrc.5.txt | 10 | ||||
| -rw-r--r-- | cmd.c | 2 | ||||
| -rw-r--r-- | shared.c | 1 | ||||
| -rw-r--r-- | ui-repolist.c | 9 | ||||
| -rw-r--r-- | ui-summary.c | 28 | ||||
| -rw-r--r-- | ui-summary.h | 2 | 
8 files changed, 48 insertions, 10 deletions
| @@ -100,6 +100,8 @@ void config_cb(const char *name, const char *value)  		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 @@ void config_cb(const char *name, const char *value)  		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")) @@ -74,6 +74,7 @@ struct cgit_repo {  	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 @@ struct cgit_config {  	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;  }; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index dc63637..4d656fe 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -16,6 +16,13 @@ lines, and lines starting with '#', are ignored.  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 @@ virtual-root::  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. @@ -39,7 +39,7 @@ static void atom_fn(struct cgit_context *ctx)  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();  } @@ -62,6 +62,7 @@ struct cgit_repo *cgit_add_repo(const char *url)  	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; diff --git a/ui-repolist.c b/ui-repolist.c index 2c13d50..25f076f 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -273,6 +273,11 @@ void cgit_print_repolist()  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);  } diff --git a/ui-summary.c b/ui-summary.c index ede4a62..a2c018e 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -66,11 +66,27 @@ void cgit_print_summary()  	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>");  } diff --git a/ui-summary.h b/ui-summary.h index 3e13039..c01f560 100644 --- a/ui-summary.h +++ b/ui-summary.h @@ -2,6 +2,6 @@  #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 */ | 
