author | Lars Hjemli <hjemli@gmail.com> | 2008-06-26 11:53:30 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-06-26 11:53:30 (UTC) |
commit | de5e9281719809c5b07051faa88e95bd16e8d485 (patch) (side-by-side diff) | |
tree | 30c6f6bc74c067ebad78e45e5602011006332f8b /ui-shared.c | |
parent | 29b37e9781ce1bb04e558c7490d2c29eb1a477e5 (diff) | |
download | cgit-de5e9281719809c5b07051faa88e95bd16e8d485.zip cgit-de5e9281719809c5b07051faa88e95bd16e8d485.tar.gz cgit-de5e9281719809c5b07051faa88e95bd16e8d485.tar.bz2 |
Add support for including a footer on all pages
The new cgitrc option `footer` can be used to include a html-file which
replaces the standard 'generated by cgit' message at the bottom of each
page.
Suggested-by: Peter Danenberg <pcd@wikitex.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-shared.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ui-shared.c b/ui-shared.c index cd98387..8a00099 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -398,100 +398,106 @@ void cgit_print_age(time_t t, time_t max_relative, char *format) htmlf("<span class='age-weeks'>%.0f weeks</span>", secs * 1.0 / TM_WEEK); return; } if (secs < TM_YEAR * 2) { htmlf("<span class='age-months'>%.0f months</span>", secs * 1.0 / TM_MONTH); return; } htmlf("<span class='age-years'>%.0f years</span>", secs * 1.0 / TM_YEAR); } void cgit_print_http_headers(struct cgit_context *ctx) { if (ctx->page.mimetype && ctx->page.charset) htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, ctx->page.charset); else if (ctx->page.mimetype) htmlf("Content-Type: %s\n", ctx->page.mimetype); if (ctx->page.filename) htmlf("Content-Disposition: inline; filename=\"%s\"\n", ctx->page.filename); htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); htmlf("Expires: %s\n", http_date(ctx->page.expires)); html("\n"); } void cgit_print_docstart(struct cgit_context *ctx) { html(cgit_doctype); html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); html("<head>\n"); html("<title>"); html_txt(ctx->page.title); html("</title>\n"); htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); if (ctx->cfg.robots && *ctx->cfg.robots) htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); html("<link rel='stylesheet' type='text/css' href='"); html_attr(ctx->cfg.css); html("'/>\n"); html("</head>\n"); html("<body>\n"); } void cgit_print_docend() { - html("</div><div class='footer'>generated "); - cgit_print_date(time(NULL), FMT_LONGDATE); - htmlf(" by cgit %s", cgit_version); - html("</div>\n</body>\n</html>\n"); + html("</div>"); + if (ctx.cfg.footer) + html_include(ctx.cfg.footer); + else { + html("<div class='footer'>generated "); + cgit_print_date(time(NULL), FMT_LONGDATE); + htmlf(" by cgit %s", cgit_version); + html("</div>\n"); + } + html("</body>\n</html>\n"); } int print_branch_option(const char *refname, const unsigned char *sha1, int flags, void *cb_data) { char *name = (char *)refname; html_option(name, name, ctx.qry.head); return 0; } int print_archive_ref(const char *refname, const unsigned char *sha1, int flags, void *cb_data) { struct tag *tag; struct taginfo *info; struct object *obj; char buf[256], *url; unsigned char fileid[20]; int *header = (int *)cb_data; if (prefixcmp(refname, "refs/archives")) return 0; strncpy(buf, refname+14, sizeof(buf)); obj = parse_object(sha1); if (!obj) return 1; if (obj->type == OBJ_TAG) { tag = lookup_tag(sha1); if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) return 0; hashcpy(fileid, tag->tagged->sha1); } else if (obj->type != OBJ_BLOB) { return 0; } else { hashcpy(fileid, sha1); } if (!*header) { html("<h1>download</h1>\n"); *header = 1; } url = cgit_pageurl(ctx.qry.repo, "blob", fmt("id=%s&path=%s", sha1_to_hex(fileid), buf)); html_link_open(url, NULL, "menu"); html_txt(strlpart(buf, 20)); html_link_close(); return 0; } |