X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/4c9916043d6aabb8278e0d78f5fa71a59f82889d..02a545e:/ui-shared.c diff --git a/ui-shared.c b/ui-shared.c index 83758f7..197ee37 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -114,6 +114,60 @@ char *cgit_currurl() return fmt("%s/", ctx.cfg.virtual_root); } +static void site_url(char *page, char *search, int ofs) +{ + char *delim = "?"; + + if (ctx.cfg.virtual_root) { + html_attr(ctx.cfg.virtual_root); + if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/') + html("/"); + } else + html(ctx.cfg.script_name); + + if (page) { + htmlf("?p=%s", page); + delim = "&"; + } + if (search) { + html(delim); + html("q="); + html_attr(search); + delim = "&"; + } + if (ofs) { + html(delim); + htmlf("ofs=%d", ofs); + } +} + +static void site_link(char *page, char *name, char *title, char *class, + char *search, int ofs) +{ + html(""); + html_txt(name); + html(""); +} + +void cgit_index_link(char *name, char *title, char *class, char *pattern, + int ofs) +{ + site_link(NULL, name, title, class, pattern, ofs); +} + static char *repolink(char *title, char *class, char *page, char *head, char *path) { @@ -299,14 +353,17 @@ void cgit_object_link(struct object *obj) html_link_close(); } -void cgit_print_date(time_t secs, char *format) +void cgit_print_date(time_t secs, char *format, int local_time) { char buf[64]; struct tm *time; if (!secs) return; - time = gmtime(&secs); + if(local_time) + time = localtime(&secs); + else + time = gmtime(&secs); strftime(buf, sizeof(buf)-1, format, time); html_txt(buf); } @@ -321,7 +378,7 @@ void cgit_print_age(time_t t, time_t max_relative, char *format) secs = now - t; if (secs > max_relative && max_relative >= 0) { - cgit_print_date(t, format); + cgit_print_date(t, format, ctx.cfg.local_time); return; } @@ -383,13 +440,27 @@ void cgit_print_docstart(struct cgit_context *ctx) html("\n"); + if (ctx->cfg.favicon) { + html("\n"); + } html("\n"); html("\n"); } void cgit_print_docend() { - html("\n\n\n"); + html(""); + if (ctx.cfg.footer) + html_include(ctx.cfg.footer); + else { + html("\n"); + } + html("\n\n"); } int print_branch_option(const char *refname, const unsigned char *sha1, @@ -450,7 +521,8 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page) html_hidden("url", url); } - if (incl_head && strcmp(ctx.qry.head, ctx.repo->defbranch)) + if (incl_head && ctx.qry.head && ctx.repo->defbranch && + strcmp(ctx.qry.head, ctx.repo->defbranch)) html_hidden("h", ctx.qry.head); if (ctx.qry.sha1) @@ -488,10 +560,10 @@ void cgit_print_pageheader(struct cgit_context *ctx) html(""); if (ctx->repo) { + cgit_index_link("index", NULL, NULL, NULL, 0); + html(" : "); reporevlink(NULL, ctx->repo->name, NULL, hc(cmd, "summary"), ctx->qry.head, NULL, NULL); - html(" : "); - html_txt(ctx->qry.page); html(""); html("
\n"); add_hidden_formfields(0, 1, ctx->qry.page); @@ -504,12 +576,12 @@ void cgit_print_pageheader(struct cgit_context *ctx) html_txt(ctx->cfg.root_title); html("\n"); - html(""); if (ctx->repo) { - html(" colspan='2'>"); html_txt(ctx->repo->desc); + html(""); + html_txt(ctx->repo->owner); } else { - html(">"); if (ctx->cfg.root_desc) html_txt(ctx->cfg.root_desc); else if (ctx->cfg.index_info) @@ -531,6 +603,10 @@ 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->readme) + reporevlink("about", "about", NULL, + hc(cmd, "about"), ctx->qry.head, NULL, + NULL); html(""); html("\n"); html("
\n"); } else { - html("index\n"); + site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL, 0); + if (ctx->cfg.root_readme) + site_link("about", "about", NULL, hc(cmd, "about"), + NULL, 0); html(""); html("