X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/25f6a1f4c29b6a6009a185e9473317f0fe64616d..ef0c6aadf70e33ef63f0a68ca16338a49d0a3f1f:/ui-shared.c?ds=inline diff --git a/ui-shared.c b/ui-shared.c index 95dfeb4..5e03a7a 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -369,6 +369,12 @@ void cgit_patch_link(char *name, char *title, char *class, char *head, reporevlink("patch", name, title, class, head, rev, NULL); } +void cgit_stats_link(char *name, char *title, char *class, char *head, + char *path) +{ + reporevlink("stats", name, title, class, head, NULL, path); +} + void cgit_object_link(struct object *obj) { char *page, *shortrev, *fullrev, *name; @@ -450,6 +456,9 @@ void cgit_print_age(time_t t, time_t max_relative, char *format) void cgit_print_http_headers(struct cgit_context *ctx) { + if (ctx->cfg.embedded) + return; + if (ctx->page.mimetype && ctx->page.charset) htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, ctx->page.charset); @@ -467,6 +476,9 @@ void cgit_print_http_headers(struct cgit_context *ctx) void cgit_print_docstart(struct cgit_context *ctx) { + if (ctx->cfg.embedded) + return; + char *host = cgit_hosturl(); html(cgit_doctype); html("\n"); @@ -494,6 +506,8 @@ void cgit_print_docstart(struct cgit_context *ctx) } html("\n"); html("\n"); + if (ctx->cfg.header) + html_include(ctx->cfg.header); } void cgit_print_docend() @@ -507,6 +521,9 @@ void cgit_print_docend() cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time); html("\n"); } + html(""); + if (ctx.cfg.embedded) + return; html("\n\n"); } @@ -557,7 +574,7 @@ int print_archive_ref(const char *refname, const unsigned char *sha1, return 0; } -void add_hidden_formfields(int incl_head, int incl_search, char *page) +void cgit_add_hidden_formfields(int incl_head, int incl_search, char *page) { char *url; @@ -587,15 +604,15 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page) } } +const char *fallback_cmd = "repolist"; + char *hc(struct cgit_cmd *cmd, const char *page) { - return (strcmp(cmd->name, page) ? NULL : "active"); + return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active"); } -void cgit_print_pageheader(struct cgit_context *ctx) +static void print_header(struct cgit_context *ctx) { - struct cgit_cmd *cmd = cgit_get_cmd(ctx); - html("\n"); html("\n"); html("\n"); +} + +void cgit_print_pageheader(struct cgit_context *ctx) +{ + struct cgit_cmd *cmd = cgit_get_cmd(ctx); + + if (!cmd && ctx->repo) + fallback_cmd = "summary"; + + html("
"); + if (!ctx->cfg.noheader) + print_header(ctx); html("
\n"); if (ctx->repo) { @@ -651,6 +680,9 @@ void cgit_print_pageheader(struct cgit_context *ctx) ctx->qry.head, ctx->qry.sha1); cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head, ctx->qry.sha1, ctx->qry.sha2, NULL); + if (ctx->repo->max_stats) + cgit_stats_link("stats", NULL, hc(cmd, "stats"), + ctx->qry.head, NULL); if (ctx->repo->readme) reporevlink("about", "about", NULL, hc(cmd, "about"), ctx->qry.head, NULL, @@ -661,7 +693,7 @@ void cgit_print_pageheader(struct cgit_context *ctx) html_url_path(cgit_fileurl(ctx->qry.repo, "log", ctx->qry.path, NULL)); html("'>\n"); - add_hidden_formfields(1, 0, "log"); + cgit_add_hidden_formfields(1, 0, "log"); html("