Web: Extract base template.
Change-Id: I20a4fbb04aa75a94f96617b0c4d1be00ab3e4aca
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
index ebed4e2..714b785 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/wiki/WikiResource.java
@@ -4,6 +4,7 @@
import io.quarkus.panache.common.Sort;
import io.quarkus.qute.Template;
+import io.quarkus.qute.TemplateExtension;
import io.quarkus.qute.TemplateInstance;
import io.quarkus.qute.api.ResourcePath;
import io.quarkus.security.Authenticated;
@@ -11,6 +12,7 @@
import io.smallrye.jwt.auth.principal.JWTCallerPrincipal;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
+import java.time.temporal.TemporalAccessor;
import java.util.Map;
import java.util.Optional;
import javax.inject.Inject;
@@ -55,17 +57,7 @@
throw new NotFoundException();
}
var page = maybePage.get();
- return wikiPage
- .data("title", page.title)
- .data(
- "date",
- Map.of(
- "htmlFormat", htmlDateFormatter.format(page.date),
- "humanFormat", humanDateFormatter.format(page.date)))
- .data(
- "author",
- Map.of("name", String.format("%s %s", page.author.firstName, page.author.lastName)))
- .data("content", page.content);
+ return wikiPage.data("page", page);
}
@POST
@@ -85,4 +77,14 @@
public TemplateInstance getPageRevisions(@PathParam("pageName") String pageName) {
throw new NotImplementedYetException();
}
+
+ @TemplateExtension
+ static String humanDateTime(TemporalAccessor x) {
+ return humanDateFormatter.format(x);
+ }
+
+ @TemplateExtension
+ static String htmlDateTime(TemporalAccessor x) {
+ return htmlDateFormatter.format(x);
+ }
}
diff --git a/src/main/resources/templates/base.html b/src/main/resources/templates/base.html
new file mode 100644
index 0000000..8fefe31
--- /dev/null
+++ b/src/main/resources/templates/base.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+
+ <title>{#insert title}{/}</title>
+
+ <link rel="stylesheet" type="text/css" href="/common.css" />
+ <script type="module" src="/components.js"></script>
+</head>
+
+<body>
+{#insert body}{/}
+</body>
+</html>
diff --git a/src/main/resources/templates/benki/wiki/wikiPage.html b/src/main/resources/templates/benki/wiki/wikiPage.html
index 865d3ba..7caf94d 100644
--- a/src/main/resources/templates/benki/wiki/wikiPage.html
+++ b/src/main/resources/templates/benki/wiki/wikiPage.html
@@ -1,28 +1,22 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="UTF-8">
+{@eu.mulk.mulkcms2.benki.wiki.WikiPageRevision page}
- <title>{title} — Benki Wiki</title>
+{#include base.html}
+{#title}{page.title} — Benki Wiki{/title}
+{#body}
+<article id="wiki-page">
+ <header>
+ <h1>{page.title}</h1>
+ </header>
- <link rel="stylesheet" type="text/css" href="/common.css" />
-</head>
+ <main>
+ {#with page}{content.raw}{/}
+ </main>
-<body>
- <article id="wiki-page">
- <header>
- <h1>{title}</h1>
- </header>
+ <hr>
- <main>
- {content.raw}
- </main>
-
- <hr>
-
- <footer>
- <a href="/wiki/{title}/revisions">Page revisions</a>
- </footer>
- </article>
-</body>
-</html>
+ <footer>
+ <a href="/wiki/{page.title}/revisions">Page revisions</a>
+ </footer>
+</article>
+{/body}
+{/include}