-rw-r--r-- | cgit.css | 6 | ||||
-rw-r--r-- | ui-shared.c | 3 |
2 files changed, 9 insertions, 0 deletions
@@ -418,32 +418,38 @@ div.pager { | |||
418 | margin: 1em 0em 0em 0em; | 418 | margin: 1em 0em 0em 0em; |
419 | } | 419 | } |
420 | 420 | ||
421 | div.pager a { | 421 | div.pager a { |
422 | color: #777; | 422 | color: #777; |
423 | margin: 0em 0.5em; | 423 | margin: 0em 0.5em; |
424 | } | 424 | } |
425 | 425 | ||
426 | span.age-mins { | 426 | span.age-mins { |
427 | font-weight: bold; | 427 | font-weight: bold; |
428 | color: #080; | 428 | color: #080; |
429 | } | 429 | } |
430 | 430 | ||
431 | span.age-hours { | 431 | span.age-hours { |
432 | color: #080; | 432 | color: #080; |
433 | } | 433 | } |
434 | 434 | ||
435 | span.age-days { | 435 | span.age-days { |
436 | color: #040; | 436 | color: #040; |
437 | } | 437 | } |
438 | 438 | ||
439 | span.age-weeks { | 439 | span.age-weeks { |
440 | color: #444; | 440 | color: #444; |
441 | } | 441 | } |
442 | 442 | ||
443 | span.age-months { | 443 | span.age-months { |
444 | color: #888; | 444 | color: #888; |
445 | } | 445 | } |
446 | 446 | ||
447 | span.age-years { | 447 | span.age-years { |
448 | color: #bbb; | 448 | color: #bbb; |
449 | } | 449 | } |
450 | div.footer { | ||
451 | margin-top: 0.5em; | ||
452 | text-align: center; | ||
453 | font-size: 80%; | ||
454 | color: #ccc; | ||
455 | } | ||
diff --git a/ui-shared.c b/ui-shared.c index f366354..44269a7 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -414,64 +414,67 @@ void cgit_print_http_headers(struct cgit_context *ctx) | |||
414 | htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, | 414 | htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, |
415 | ctx->page.charset); | 415 | ctx->page.charset); |
416 | else if (ctx->page.mimetype) | 416 | else if (ctx->page.mimetype) |
417 | htmlf("Content-Type: %s\n", ctx->page.mimetype); | 417 | htmlf("Content-Type: %s\n", ctx->page.mimetype); |
418 | if (ctx->page.filename) | 418 | if (ctx->page.filename) |
419 | htmlf("Content-Disposition: inline; filename=\"%s\"\n", | 419 | htmlf("Content-Disposition: inline; filename=\"%s\"\n", |
420 | ctx->page.filename); | 420 | ctx->page.filename); |
421 | htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); | 421 | htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); |
422 | htmlf("Expires: %s\n", http_date(ctx->page.expires)); | 422 | htmlf("Expires: %s\n", http_date(ctx->page.expires)); |
423 | html("\n"); | 423 | html("\n"); |
424 | } | 424 | } |
425 | 425 | ||
426 | void cgit_print_docstart(struct cgit_context *ctx) | 426 | void cgit_print_docstart(struct cgit_context *ctx) |
427 | { | 427 | { |
428 | html(cgit_doctype); | 428 | html(cgit_doctype); |
429 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); | 429 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); |
430 | html("<head>\n"); | 430 | html("<head>\n"); |
431 | html("<title>"); | 431 | html("<title>"); |
432 | html_txt(ctx->page.title); | 432 | html_txt(ctx->page.title); |
433 | html("</title>\n"); | 433 | html("</title>\n"); |
434 | htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); | 434 | htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); |
435 | if (ctx->cfg.robots && *ctx->cfg.robots) | 435 | if (ctx->cfg.robots && *ctx->cfg.robots) |
436 | htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); | 436 | htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); |
437 | html("<link rel='stylesheet' type='text/css' href='"); | 437 | html("<link rel='stylesheet' type='text/css' href='"); |
438 | html_attr(ctx->cfg.css); | 438 | html_attr(ctx->cfg.css); |
439 | html("'/>\n"); | 439 | html("'/>\n"); |
440 | html("</head>\n"); | 440 | html("</head>\n"); |
441 | html("<body>\n"); | 441 | html("<body>\n"); |
442 | } | 442 | } |
443 | 443 | ||
444 | void cgit_print_docend() | 444 | void cgit_print_docend() |
445 | { | 445 | { |
446 | html("</div><div class='footer'>generated "); | ||
447 | cgit_print_date(time(NULL), FMT_LONGDATE); | ||
448 | htmlf(" by cgit %s", cgit_version); | ||
446 | html("</div>\n</body>\n</html>\n"); | 449 | html("</div>\n</body>\n</html>\n"); |
447 | } | 450 | } |
448 | 451 | ||
449 | int print_branch_option(const char *refname, const unsigned char *sha1, | 452 | int print_branch_option(const char *refname, const unsigned char *sha1, |
450 | int flags, void *cb_data) | 453 | int flags, void *cb_data) |
451 | { | 454 | { |
452 | char *name = (char *)refname; | 455 | char *name = (char *)refname; |
453 | html_option(name, name, ctx.qry.head); | 456 | html_option(name, name, ctx.qry.head); |
454 | return 0; | 457 | return 0; |
455 | } | 458 | } |
456 | 459 | ||
457 | int print_archive_ref(const char *refname, const unsigned char *sha1, | 460 | int print_archive_ref(const char *refname, const unsigned char *sha1, |
458 | int flags, void *cb_data) | 461 | int flags, void *cb_data) |
459 | { | 462 | { |
460 | struct tag *tag; | 463 | struct tag *tag; |
461 | struct taginfo *info; | 464 | struct taginfo *info; |
462 | struct object *obj; | 465 | struct object *obj; |
463 | char buf[256], *url; | 466 | char buf[256], *url; |
464 | unsigned char fileid[20]; | 467 | unsigned char fileid[20]; |
465 | int *header = (int *)cb_data; | 468 | int *header = (int *)cb_data; |
466 | 469 | ||
467 | if (prefixcmp(refname, "refs/archives")) | 470 | if (prefixcmp(refname, "refs/archives")) |
468 | return 0; | 471 | return 0; |
469 | strncpy(buf, refname+14, sizeof(buf)); | 472 | strncpy(buf, refname+14, sizeof(buf)); |
470 | obj = parse_object(sha1); | 473 | obj = parse_object(sha1); |
471 | if (!obj) | 474 | if (!obj) |
472 | return 1; | 475 | return 1; |
473 | if (obj->type == OBJ_TAG) { | 476 | if (obj->type == OBJ_TAG) { |
474 | tag = lookup_tag(sha1); | 477 | tag = lookup_tag(sha1); |
475 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) | 478 | if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) |
476 | return 0; | 479 | return 0; |
477 | hashcpy(fileid, tag->tagged->sha1); | 480 | hashcpy(fileid, tag->tagged->sha1); |