summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-06-26 11:53:30 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-06-26 11:53:30 (UTC)
commitde5e9281719809c5b07051faa88e95bd16e8d485 (patch) (unidiff)
tree30c6f6bc74c067ebad78e45e5602011006332f8b
parent29b37e9781ce1bb04e558c7490d2c29eb1a477e5 (diff)
downloadcgit-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>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c2
-rw-r--r--cgit.h1
-rw-r--r--ui-shared.c14
3 files changed, 13 insertions, 4 deletions
diff --git a/cgit.c b/cgit.c
index 0deae12..8f154c9 100644
--- a/cgit.c
+++ b/cgit.c
@@ -16,24 +16,26 @@
16const char *cgit_version = CGIT_VERSION; 16const char *cgit_version = CGIT_VERSION;
17 17
18void config_cb(const char *name, const char *value) 18void config_cb(const char *name, const char *value)
19{ 19{
20 if (!strcmp(name, "root-title")) 20 if (!strcmp(name, "root-title"))
21 ctx.cfg.root_title = xstrdup(value); 21 ctx.cfg.root_title = xstrdup(value);
22 else if (!strcmp(name, "root-desc")) 22 else if (!strcmp(name, "root-desc"))
23 ctx.cfg.root_desc = xstrdup(value); 23 ctx.cfg.root_desc = xstrdup(value);
24 else if (!strcmp(name, "root-readme")) 24 else if (!strcmp(name, "root-readme"))
25 ctx.cfg.root_readme = xstrdup(value); 25 ctx.cfg.root_readme = xstrdup(value);
26 else if (!strcmp(name, "css")) 26 else if (!strcmp(name, "css"))
27 ctx.cfg.css = xstrdup(value); 27 ctx.cfg.css = xstrdup(value);
28 else if (!strcmp(name, "footer"))
29 ctx.cfg.footer = xstrdup(value);
28 else if (!strcmp(name, "logo")) 30 else if (!strcmp(name, "logo"))
29 ctx.cfg.logo = xstrdup(value); 31 ctx.cfg.logo = xstrdup(value);
30 else if (!strcmp(name, "index-header")) 32 else if (!strcmp(name, "index-header"))
31 ctx.cfg.index_header = xstrdup(value); 33 ctx.cfg.index_header = xstrdup(value);
32 else if (!strcmp(name, "index-info")) 34 else if (!strcmp(name, "index-info"))
33 ctx.cfg.index_info = xstrdup(value); 35 ctx.cfg.index_info = xstrdup(value);
34 else if (!strcmp(name, "logo-link")) 36 else if (!strcmp(name, "logo-link"))
35 ctx.cfg.logo_link = xstrdup(value); 37 ctx.cfg.logo_link = xstrdup(value);
36 else if (!strcmp(name, "module-link")) 38 else if (!strcmp(name, "module-link"))
37 ctx.cfg.module_link = xstrdup(value); 39 ctx.cfg.module_link = xstrdup(value);
38 else if (!strcmp(name, "virtual-root")) { 40 else if (!strcmp(name, "virtual-root")) {
39 ctx.cfg.virtual_root = trim_end(value, '/'); 41 ctx.cfg.virtual_root = trim_end(value, '/');
diff --git a/cgit.h b/cgit.h
index 1972d75..d18d9ca 100644
--- a/cgit.h
+++ b/cgit.h
@@ -116,24 +116,25 @@ struct cgit_query {
116 char *sha2; 116 char *sha2;
117 char *path; 117 char *path;
118 char *name; 118 char *name;
119 char *mimetype; 119 char *mimetype;
120 int ofs; 120 int ofs;
121}; 121};
122 122
123struct cgit_config { 123struct cgit_config {
124 char *agefile; 124 char *agefile;
125 char *cache_root; 125 char *cache_root;
126 char *clone_prefix; 126 char *clone_prefix;
127 char *css; 127 char *css;
128 char *footer;
128 char *index_header; 129 char *index_header;
129 char *index_info; 130 char *index_info;
130 char *logo; 131 char *logo;
131 char *logo_link; 132 char *logo_link;
132 char *module_link; 133 char *module_link;
133 char *repo_group; 134 char *repo_group;
134 char *robots; 135 char *robots;
135 char *root_title; 136 char *root_title;
136 char *root_desc; 137 char *root_desc;
137 char *root_readme; 138 char *root_readme;
138 char *script_name; 139 char *script_name;
139 char *virtual_root; 140 char *virtual_root;
diff --git a/ui-shared.c b/ui-shared.c
index cd98387..8a00099 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -434,28 +434,34 @@ void cgit_print_docstart(struct cgit_context *ctx)
434 htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); 434 htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version);
435 if (ctx->cfg.robots && *ctx->cfg.robots) 435 if (ctx->cfg.robots && *ctx->cfg.robots)
436 htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); 436 htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots);
437 html("<link rel='stylesheet' type='text/css' href='"); 437 html("<link rel='stylesheet' type='text/css' href='");
438 html_attr(ctx->cfg.css); 438 html_attr(ctx->cfg.css);
439 html("'/>\n"); 439 html("'/>\n");
440 html("</head>\n"); 440 html("</head>\n");
441 html("<body>\n"); 441 html("<body>\n");
442} 442}
443 443
444void cgit_print_docend() 444void cgit_print_docend()
445{ 445{
446 html("</div><div class='footer'>generated "); 446 html("</div>");
447 cgit_print_date(time(NULL), FMT_LONGDATE); 447 if (ctx.cfg.footer)
448 htmlf(" by cgit %s", cgit_version); 448 html_include(ctx.cfg.footer);
449 html("</div>\n</body>\n</html>\n"); 449 else {
450 html("<div class='footer'>generated ");
451 cgit_print_date(time(NULL), FMT_LONGDATE);
452 htmlf(" by cgit %s", cgit_version);
453 html("</div>\n");
454 }
455 html("</body>\n</html>\n");
450} 456}
451 457
452int print_branch_option(const char *refname, const unsigned char *sha1, 458int print_branch_option(const char *refname, const unsigned char *sha1,
453 int flags, void *cb_data) 459 int flags, void *cb_data)
454{ 460{
455 char *name = (char *)refname; 461 char *name = (char *)refname;
456 html_option(name, name, ctx.qry.head); 462 html_option(name, name, ctx.qry.head);
457 return 0; 463 return 0;
458} 464}
459 465
460int print_archive_ref(const char *refname, const unsigned char *sha1, 466int print_archive_ref(const char *refname, const unsigned char *sha1,
461 int flags, void *cb_data) 467 int flags, void *cb_data)