Mercurial > imgup
diff page.c @ 28:c1179455fc89
imgupd: add title and buttons
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 31 Mar 2022 09:41:35 +0200 |
parents | b74c1f165e51 |
children | 3e01d0147294 |
line wrap: on
line diff
--- a/page.c Thu Mar 31 09:16:02 2022 +0200 +++ b/page.c Thu Mar 31 09:41:35 2022 +0200 @@ -19,13 +19,49 @@ #include "page.h" #include "util.h" +struct template { + struct kreq *req; + const char *title; +}; + +static int +template(size_t keyword, void *arg) +{ + struct template *tp = arg; + + switch (keyword) { + case 0: + khttp_puts(tp->req, tp->title); + break; + default: + break; + } + + return 1; +} + +static const char * const keywords[] = { + "title" +}; + void -page(struct kreq *req, const struct ktemplate *tmpl, enum khttp status, const char *file) +page(struct kreq *req, const struct ktemplate *tmpl, enum khttp status, const char *file, const char *title) { + struct template data = { + .req = req, + .title = title + }; + struct ktemplate kt = { + .key = keywords, + .keysz = NELEM(keywords), + .arg = &data, + .cb = template + }; + khttp_head(req, kresps[KRESP_CONTENT_TYPE], "%s", kmimetypes[KMIME_TEXT_HTML]); khttp_head(req, kresps[KRESP_STATUS], "%s", khttps[status]); khttp_body(req); - khttp_template(req, NULL, path("fragments/header.html")); + khttp_template(req, &kt, path("fragments/header.html")); khttp_template(req, tmpl, path(file)); khttp_template(req, NULL, path("fragments/footer.html")); khttp_free(req);