From d3bc945e6317b7f1b80464387e11b191c8143c69 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sat, 25 Apr 2020 15:45:17 -0400 Subject: Render index.html --- html.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 89 insertions(+), 5 deletions(-) (limited to 'html.c') diff --git a/html.c b/html.c index 0d1ae11..8f349e5 100644 --- a/html.c +++ b/html.c @@ -393,12 +393,9 @@ int htmlSubthreadClose(FILE *file) { return templateRender(file, TEMPLATE(), NULL, NULL); } -int htmlThreadClose(FILE *file) { +static int htmlFooter(FILE *file) { const char *template = TEMPLATE( - - + ); time_t now = time(NULL); char time[sizeof("0000-00-00T00:00:00Z")]; @@ -409,3 +406,90 @@ int htmlThreadClose(FILE *file) { }; return templateRender(file, template, vars, escapeXML); } + +int htmlThreadClose(FILE *file) { + return 0 + || templateRender(file, TEMPLATE(), NULL, NULL) + || htmlFooter(file); +} + +int htmlIndexHead(FILE *file) { + const char *template = TEMPLATE( + + + [title] + + ); + struct Variable vars[] = { + { "title", htmlTitle }, + {0}, + }; + return templateRender(file, template, vars, escapeXML); +} + +int htmlIndexOpen(FILE *file) { + const char *template = TEMPLATE( +
+

[title]

+ +
+
+
    + ); + struct Variable vars[] = { + { "title", htmlTitle }, + {0}, + }; + return templateRender(file, template, vars, escapeXML); +} + +static char *htmlIndexURL(const struct Envelope *envelope) { + struct Variable vars[] = { + { "messageID", envelope->messageID }, + { "type", "html" }, + {0}, + }; + return templateURL(PATH_THREAD, vars); +} + +int htmlIndexThread( + FILE *file, const struct Envelope *envelope, struct List thread +) { + const char *template = TEMPLATE( +
  1. +

    [subject]

    +
    [from]
    + + [replies] repl[ies] +
  2. + ); + char *url = htmlIndexURL(envelope); + char utc[sizeof("0000-00-00T00:00:00Z")]; + strftime(utc, sizeof(utc), "%FT%TZ", gmtime(&envelope->time)); + size_t count = threadCount(thread) - 1; + char replies[32]; + snprintf(replies, sizeof(replies), "%zu", count); + struct Variable vars[] = { + { "url", url }, + { "subject", envelope->subject }, + { "from", addressName(envelope->from) }, + { "utc", utc }, + { "date", envelope->date }, + { "replies", replies }, + { "ies", (count == 1 ? "y" : "ies") }, + {0}, + }; + int error = templateRender(file, template, vars, escapeXML); + free(url); + return error; +} + +int htmlIndexClose(FILE *file) { + return 0 + || templateRender(file, TEMPLATE(
), NULL, NULL) + || htmlFooter(file); +} -- cgit 1.4.1