summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.c4
-rw-r--r--cgit.h2
-rw-r--r--cgitrc.5.txt9
-rw-r--r--ui-shared.c28
4 files changed, 37 insertions, 6 deletions
diff --git a/cgit.c b/cgit.c
index 513ea12..2039ab1 100644
--- a/cgit.c
+++ b/cgit.c
@@ -48,12 +48,14 @@ void config_cb(const char *name, const char *value)
48 else if (!strcmp(name, "virtual-root")) { 48 else if (!strcmp(name, "virtual-root")) {
49 ctx.cfg.virtual_root = trim_end(value, '/'); 49 ctx.cfg.virtual_root = trim_end(value, '/');
50 if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) 50 if (!ctx.cfg.virtual_root && (!strcmp(value, "/")))
51 ctx.cfg.virtual_root = ""; 51 ctx.cfg.virtual_root = "";
52 } else if (!strcmp(name, "nocache")) 52 } else if (!strcmp(name, "nocache"))
53 ctx.cfg.nocache = atoi(value); 53 ctx.cfg.nocache = atoi(value);
54 else if (!strcmp(name, "noheader"))
55 ctx.cfg.noheader = atoi(value);
54 else if (!strcmp(name, "snapshots")) 56 else if (!strcmp(name, "snapshots"))
55 ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); 57 ctx.cfg.snapshots = cgit_parse_snapshots_mask(value);
56 else if (!strcmp(name, "enable-index-links")) 58 else if (!strcmp(name, "enable-index-links"))
57 ctx.cfg.enable_index_links = atoi(value); 59 ctx.cfg.enable_index_links = atoi(value);
58 else if (!strcmp(name, "enable-log-filecount")) 60 else if (!strcmp(name, "enable-log-filecount"))
59 ctx.cfg.enable_log_filecount = atoi(value); 61 ctx.cfg.enable_log_filecount = atoi(value);
@@ -70,12 +72,14 @@ void config_cb(const char *name, const char *value)
70 else if (!strcmp(name, "cache-repo-ttl")) 72 else if (!strcmp(name, "cache-repo-ttl"))
71 ctx.cfg.cache_repo_ttl = atoi(value); 73 ctx.cfg.cache_repo_ttl = atoi(value);
72 else if (!strcmp(name, "cache-static-ttl")) 74 else if (!strcmp(name, "cache-static-ttl"))
73 ctx.cfg.cache_static_ttl = atoi(value); 75 ctx.cfg.cache_static_ttl = atoi(value);
74 else if (!strcmp(name, "cache-dynamic-ttl")) 76 else if (!strcmp(name, "cache-dynamic-ttl"))
75 ctx.cfg.cache_dynamic_ttl = atoi(value); 77 ctx.cfg.cache_dynamic_ttl = atoi(value);
78 else if (!strcmp(name, "embedded"))
79 ctx.cfg.embedded = atoi(value);
76 else if (!strcmp(name, "max-message-length")) 80 else if (!strcmp(name, "max-message-length"))
77 ctx.cfg.max_msg_len = atoi(value); 81 ctx.cfg.max_msg_len = atoi(value);
78 else if (!strcmp(name, "max-repodesc-length")) 82 else if (!strcmp(name, "max-repodesc-length"))
79 ctx.cfg.max_repodesc_len = atoi(value); 83 ctx.cfg.max_repodesc_len = atoi(value);
80 else if (!strcmp(name, "max-repo-count")) 84 else if (!strcmp(name, "max-repo-count"))
81 ctx.cfg.max_repo_count = atoi(value); 85 ctx.cfg.max_repo_count = atoi(value);
diff --git a/cgit.h b/cgit.h
index 78b30ba..8c64efe 100644
--- a/cgit.h
+++ b/cgit.h
@@ -153,23 +153,25 @@ struct cgit_config {
153 int cache_size; 153 int cache_size;
154 int cache_dynamic_ttl; 154 int cache_dynamic_ttl;
155 int cache_max_create_time; 155 int cache_max_create_time;
156 int cache_repo_ttl; 156 int cache_repo_ttl;
157 int cache_root_ttl; 157 int cache_root_ttl;
158 int cache_static_ttl; 158 int cache_static_ttl;
159 int embedded;
159 int enable_index_links; 160 int enable_index_links;
160 int enable_log_filecount; 161 int enable_log_filecount;
161 int enable_log_linecount; 162 int enable_log_linecount;
162 int local_time; 163 int local_time;
163 int max_repo_count; 164 int max_repo_count;
164 int max_commit_count; 165 int max_commit_count;
165 int max_lock_attempts; 166 int max_lock_attempts;
166 int max_msg_len; 167 int max_msg_len;
167 int max_repodesc_len; 168 int max_repodesc_len;
168 int max_stats; 169 int max_stats;
169 int nocache; 170 int nocache;
171 int noheader;
170 int renamelimit; 172 int renamelimit;
171 int snapshots; 173 int snapshots;
172 int summary_branches; 174 int summary_branches;
173 int summary_log; 175 int summary_log;
174 int summary_tags; 176 int summary_tags;
175}; 177};
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 683f3b5..a207fe0 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -56,12 +56,17 @@ clone-prefix::
56 none. 56 none.
57 57
58css:: 58css::
59 Url which specifies the css document to include in all cgit pages. 59 Url which specifies the css document to include in all cgit pages.
60 Default value: "/cgit.css". 60 Default value: "/cgit.css".
61 61
62embedded::
63 Flag which, when set to "1", will make cgit generate a html fragment
64 suitable for embedding in other html pages. Default value: none. See
65 also: "noheader".
66
62enable-index-links:: 67enable-index-links::
63 Flag which, when set to "1", will make cgit generate extra links for 68 Flag which, when set to "1", will make cgit generate extra links for
64 each repo in the repository index (specifically, to the "summary", 69 each repo in the repository index (specifically, to the "summary",
65 "commit" and "tree" pages). Default value: "0". 70 "commit" and "tree" pages). Default value: "0".
66 71
67enable-log-filecount:: 72enable-log-filecount::
@@ -150,12 +155,16 @@ module-link::
150 155
151nocache:: 156nocache::
152 If set to the value "1" caching will be disabled. This settings is 157 If set to the value "1" caching will be disabled. This settings is
153 deprecated, and will not be honored starting with cgit-1.0. Default 158 deprecated, and will not be honored starting with cgit-1.0. Default
154 value: "0". 159 value: "0".
155 160
161noheader::
162 Flag which, when set to "1", will make cgit omit the standard header
163 on all pages. Default value: none. See also: "embedded".
164
156renamelimit:: 165renamelimit::
157 Maximum number of files to consider when detecting renames. The value 166 Maximum number of files to consider when detecting renames. The value
158 "-1" uses the compiletime value in git (for further info, look at 167 "-1" uses the compiletime value in git (for further info, look at
159 `man git-diff`). Default value: "-1". 168 `man git-diff`). Default value: "-1".
160 169
161repo.group:: 170repo.group::
diff --git a/ui-shared.c b/ui-shared.c
index 66d5b82..015c52b 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -466,12 +466,15 @@ void cgit_print_age(time_t t, time_t max_relative, char *format)
466} 466}
467 467
468void cgit_print_http_headers(struct cgit_context *ctx) 468void cgit_print_http_headers(struct cgit_context *ctx)
469{ 469{
470 const char *method = getenv("REQUEST_METHOD"); 470 const char *method = getenv("REQUEST_METHOD");
471 471
472 if (ctx->cfg.embedded)
473 return;
474
472 if (ctx->page.status) 475 if (ctx->page.status)
473 htmlf("Status: %d %s\n", ctx->page.status, ctx->page.statusmsg); 476 htmlf("Status: %d %s\n", ctx->page.status, ctx->page.statusmsg);
474 if (ctx->page.mimetype && ctx->page.charset) 477 if (ctx->page.mimetype && ctx->page.charset)
475 htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, 478 htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype,
476 ctx->page.charset); 479 ctx->page.charset);
477 else if (ctx->page.mimetype) 480 else if (ctx->page.mimetype)
@@ -489,12 +492,15 @@ void cgit_print_http_headers(struct cgit_context *ctx)
489 if (method && !strcmp(method, "HEAD")) 492 if (method && !strcmp(method, "HEAD"))
490 exit(0); 493 exit(0);
491} 494}
492 495
493void cgit_print_docstart(struct cgit_context *ctx) 496void cgit_print_docstart(struct cgit_context *ctx)
494{ 497{
498 if (ctx->cfg.embedded)
499 return;
500
495 char *host = cgit_hosturl(); 501 char *host = cgit_hosturl();
496 html(cgit_doctype); 502 html(cgit_doctype);
497 html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); 503 html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n");
498 html("<head>\n"); 504 html("<head>\n");
499 html("<title>"); 505 html("<title>");
500 html_txt(ctx->page.title); 506 html_txt(ctx->page.title);
@@ -534,12 +540,15 @@ void cgit_print_docend()
534 else { 540 else {
535 htmlf("<div class='footer'>generated by cgit %s at ", 541 htmlf("<div class='footer'>generated by cgit %s at ",
536 cgit_version); 542 cgit_version);
537 cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time); 543 cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time);
538 html("</div>\n"); 544 html("</div>\n");
539 } 545 }
546 html("</div>");
547 if (ctx.cfg.embedded)
548 return;
540 html("</body>\n</html>\n"); 549 html("</body>\n</html>\n");
541} 550}
542 551
543int print_branch_option(const char *refname, const unsigned char *sha1, 552int print_branch_option(const char *refname, const unsigned char *sha1,
544 int flags, void *cb_data) 553 int flags, void *cb_data)
545{ 554{
@@ -621,19 +630,14 @@ const char *fallback_cmd = "repolist";
621 630
622char *hc(struct cgit_cmd *cmd, const char *page) 631char *hc(struct cgit_cmd *cmd, const char *page)
623{ 632{
624 return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active"); 633 return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active");
625} 634}
626 635
627void cgit_print_pageheader(struct cgit_context *ctx) 636static void print_header(struct cgit_context *ctx)
628{ 637{
629 struct cgit_cmd *cmd = cgit_get_cmd(ctx);
630
631 if (!cmd && ctx->repo)
632 fallback_cmd = "summary";
633
634 html("<table id='header'>\n"); 638 html("<table id='header'>\n");
635 html("<tr>\n"); 639 html("<tr>\n");
636 html("<td class='logo' rowspan='2'><a href='"); 640 html("<td class='logo' rowspan='2'><a href='");
637 if (ctx->cfg.logo_link) 641 if (ctx->cfg.logo_link)
638 html_attr(ctx->cfg.logo_link); 642 html_attr(ctx->cfg.logo_link);
639 else 643 else
@@ -668,12 +672,24 @@ void cgit_print_pageheader(struct cgit_context *ctx)
668 if (ctx->cfg.root_desc) 672 if (ctx->cfg.root_desc)
669 html_txt(ctx->cfg.root_desc); 673 html_txt(ctx->cfg.root_desc);
670 else if (ctx->cfg.index_info) 674 else if (ctx->cfg.index_info)
671 html_include(ctx->cfg.index_info); 675 html_include(ctx->cfg.index_info);
672 } 676 }
673 html("</td></tr></table>\n"); 677 html("</td></tr></table>\n");
678}
679
680void cgit_print_pageheader(struct cgit_context *ctx)
681{
682 struct cgit_cmd *cmd = cgit_get_cmd(ctx);
683
684 if (!cmd && ctx->repo)
685 fallback_cmd = "summary";
686
687 html("<div id='cgit'>");
688 if (!ctx->cfg.noheader)
689 print_header(ctx);
674 690
675 html("<table class='tabs'><tr><td>\n"); 691 html("<table class='tabs'><tr><td>\n");
676 if (ctx->repo) { 692 if (ctx->repo) {
677 cgit_summary_link("summary", NULL, hc(cmd, "summary"), 693 cgit_summary_link("summary", NULL, hc(cmd, "summary"),
678 ctx->qry.head); 694 ctx->qry.head);
679 cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, 695 cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head,