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);