diff --git a/pom.xml b/pom.xml
index 69c974c..2d03578 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.example
Widerhall
- 0.2.27
+ 0.2.28
diff --git a/src/main/java/de/srsoftware/widerhall/web/TemplateServlet.java b/src/main/java/de/srsoftware/widerhall/web/TemplateServlet.java
index 4c69da2..43eacbf 100644
--- a/src/main/java/de/srsoftware/widerhall/web/TemplateServlet.java
+++ b/src/main/java/de/srsoftware/widerhall/web/TemplateServlet.java
@@ -29,8 +29,10 @@ public abstract class TemplateServlet extends HttpServlet {
var file = new File(path);
if (!file.exists()) return t("File {} does not exist!",filename);
try {
- var content = Files.readString(file.toPath());
- resp.getWriter().println(content);
+ var content = Files.readAllBytes(file.toPath());
+ var out = resp.getOutputStream();
+ out.write(content);
+ out.flush();
} catch (IOException e) {
return t("Failed to load file '{}'!",filename);
}
diff --git a/src/main/java/de/srsoftware/widerhall/web/Web.java b/src/main/java/de/srsoftware/widerhall/web/Web.java
index b46cd29..2e76d6f 100644
--- a/src/main/java/de/srsoftware/widerhall/web/Web.java
+++ b/src/main/java/de/srsoftware/widerhall/web/Web.java
@@ -306,7 +306,12 @@ public class Web extends TemplateServlet {
case "jquery":
resp.setContentType("text/javascript");
return loadFile("jquery-3.6.0.min.js",resp);
- case UNSUBSCRIBE:
+ case "OpenSans-Regular.woff":
+ resp.setContentType("font/woff");
+ return loadFile("OpenSans-Regular.woff",resp);
+ case "Bhineka.ttf":
+ resp.setContentType("font/ttf");
+ return loadFile("Bhineka.ttf",resp); case UNSUBSCRIBE:
data.put(LIST,list.email());
return loadTemplate(path,data,resp);
diff --git a/static/Bhineka.ttf b/static/Bhineka.ttf
new file mode 100644
index 0000000..ce6b709
Binary files /dev/null and b/static/Bhineka.ttf differ
diff --git a/static/OpenSans-Regular.woff b/static/OpenSans-Regular.woff
new file mode 100644
index 0000000..a7f9ed2
Binary files /dev/null and b/static/OpenSans-Regular.woff differ
diff --git a/static/templates/css.st b/static/templates/css.st
index f2f2e24..79b86a2 100644
--- a/static/templates/css.st
+++ b/static/templates/css.st
@@ -1,3 +1,16 @@
+@font-face{
+ font-family: "osans";
+ src: url("OpenSans-Regular.woff") format("woff");
+}
+
+@font-face{
+ font-family: "lofty";
+ src: url("Bhineka.ttf") format("truetype");
+}
+
+body {
+ font-family: osans;
+}
label {
display: block;
margin: 5px 0;
@@ -13,6 +26,35 @@ form#list_data,
h1 {
text-align: center;
+ font-family: lofty;
+ font-size: 64px;
+}
+
+fieldset{
+ border-radius: 15px;
+ background: #eefffc;
+ border-color: #6c57ff;
+ border-width: 1px;
+ border-style: solid;
+}
+
+fieldset fieldset {
+ background: white;
+}
+legend {
+ font-family: lofty;
+ font-size: 24px;
+ border-radius: 5px;
+ padding: 0px 5px;
+ background: #eefffc;
+ border-color: #6c57ff;
+ border-width: 1px;
+ border-style: solid;
+ margin: 10px 0;
+}
+
+fieldset fieldset>legend {
+ background: white;
}
.error{
@@ -42,4 +84,29 @@ h1 {
right: 0;
text-align: right;
margin: 5px;
+}
+
+tr:nth-child(2n),
+tr>*:nth-child(2n){
+ background: rgba(0,0,0,0.1);
+}
+
+a,
+button {
+ padding: 5px;
+ border-radius: 5px;
+ border-color: #2621ca;
+ border-width: 1px;
+ border-collapse: collapse;
+ border-style: solid;
+ font-size: 14px;
+ text-decoration: none;
+ margin: 10px 2px;
+ background: #83f9ff;
+ color: #1b00d7;
+}
+
+table{
+ margin: 0 0 10px;
+ min-width: 100%;
}
\ No newline at end of file