X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/5a106eb09b9b5e189b96cc736046a92b054f6c7f..5ec6e02bd1cc0c05b7cfd0d53371e7d176daec39:/ui-shared.c diff --git a/ui-shared.c b/ui-shared.c index e795043..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; @@ -39,6 +39,59 @@ void cgit_print_error(char *msg) html_txt(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) { + return fmt("%s/%s/", cgit_virtual_root, reponame); + } else { + return fmt("?r=%s", reponame); + } +} + +char *cgit_pageurl(const char *reponame, const char *pagename, + const char *query) +{ + if (cgit_virtual_root) { + return fmt("%s/%s/%s/?%s", cgit_virtual_root, reponame, + pagename, query); + } else { + return fmt("?r=%s&p=%s&%s", reponame, pagename, query); + } +} + +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) +{ + char buf[32]; + struct tm *time; + + time = gmtime(&secs); + strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", time); + html_txt(buf); + +} + void cgit_print_docstart(char *title, struct cacheitem *item) { html("Content-Type: text/html; charset=utf-8\n"); @@ -62,15 +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"); }