X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/0de2055b75735986ff04aed8f534ecf06248e5e1..ca8eb8fc8f71ee0a40015c323619f776840b6503:/ui-shared.c diff --git a/ui-shared.c b/ui-shared.c index 9ec4be8..bca50aa 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -25,7 +25,7 @@ static char *http_date(time_t t) tm->tm_hour, tm->tm_min, tm->tm_sec); } -static int ttl_seconds(int ttl) +static long ttl_seconds(long ttl) { if (ttl<0) return 60 * 60 * 24 * 365; @@ -40,6 +40,14 @@ void cgit_print_error(char *msg) html("\n"); } +char *cgit_rooturl() +{ + if (cgit_virtual_root) + return fmt("%s/", cgit_virtual_root); + else + return "./cgit.cgi"; +} + char *cgit_repourl(const char *reponame) { if (cgit_virtual_root) { @@ -60,6 +68,18 @@ char *cgit_pageurl(const char *reponame, const char *pagename, } } +char *cgit_currurl() +{ + if (!cgit_virtual_root) + return "./cgit.cgi"; + else if (cgit_query_page) + return fmt("%s/%s/%s/", cgit_virtual_root, cgit_query_repo, cgit_query_page); + else if (cgit_query_repo) + return fmt("%s/%s/", cgit_virtual_root, cgit_query_repo); + else + return fmt("%s/", cgit_virtual_root); +} + void cgit_print_date(unsigned long secs) { @@ -95,19 +115,60 @@ void cgit_print_docstart(char *title, struct cacheitem *item) void cgit_print_docend() { + html(""); html("\n\n"); } -void cgit_print_pageheader(char *title) +void cgit_print_pageheader(char *title, int show_search) { - html(""); + html(""); + html(""); + html(""); + html(""); + html("
"); + htmlf("root", cgit_rooturl()); + if (cgit_query_repo) { + htmlf(" : ", cgit_repourl(cgit_repo->url)); + html_txt(cgit_repo->name); + htmlf(" : %s", title); + } + html("
"); +} + +void cgit_print_snapshot_start(const char *mimetype, const char *filename, + struct cacheitem *item) +{ + htmlf("Content-Type: %s\n", mimetype); + htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename); + htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); + htmlf("Expires: %s\n", http_date(item->st.st_mtime + + ttl_seconds(item->ttl))); + html("\n"); }