aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/html/admin.html3
-rw-r--r--src/html/blog.html16
-rw-r--r--src/server.js28
-rw-r--r--src/templates.js20
4 files changed, 40 insertions, 27 deletions
diff --git a/src/html/admin.html b/src/html/admin.html
index 363f5c0..6136b3c 100644
--- a/src/html/admin.html
+++ b/src/html/admin.html
@@ -8,6 +8,7 @@
<link rel="stylesheet" type="text/css" href="/css/styles.css">
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> -->
+ <!-- <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> -->
<script>
window.onload = function () {
var feed = new Vue({
@@ -39,7 +40,7 @@
<div>
<h1>Create Post</h1>
<div class="form">
- <form action="/posts" method="post" enctype="multipart/form-data">
+ <form action="/admin/posts" method="post" enctype="multipart/form-data">
<div>
<textarea name="description"></textarea>
</div>
diff --git a/src/html/blog.html b/src/html/blog.html
index c0662f7..03a37e4 100644
--- a/src/html/blog.html
+++ b/src/html/blog.html
@@ -33,22 +33,6 @@
<a class="navigation" href="/" title="marks.kitchen">&lt;</a>
Blog
</h1>
- <!-- <div id="feed" class="feed">
- <div class="card" v-for="post in posts">
- <p class="card-text" v-html="post.description"></p>
- <div class="card-img">
- <span v-for="image in post.images">
- <a v-bind:href="image"><img v-bind:src="image"></a>
- </span>
- </div>
- <p class="date">
- <a v-bind:href="'/blog/'+post.id">{{{ post.createdAt.substring(0,10) }}}</a>
- <span v-for="tag in post.tags">
- <a class="tag" v-bind:href="'/tags#'+tag">{{tag}}</a>
- </span>
- </p>
- </div>
- </div> -->
<div id="feed" class="feed"></div>
</div>
</body>
diff --git a/src/server.js b/src/server.js
index 8114172..522823d 100644
--- a/src/server.js
+++ b/src/server.js
@@ -6,6 +6,7 @@ const crypto = require('crypto');
const uuidv4 = require('uuid/v4');
const path = require('path');
const rss = require('rss');
+const marked = require('marked');
const templates = require('./templates');
@@ -132,24 +133,29 @@ function setUpRoutes(models, jwtFunctions, database) {
html.push(templates["index"]["post"])
res.status(200).send(html.join(""))
- // res.sendFile(__dirname + "/html/index.html")
})
server.get('/bread', async (req, res) => {
var html = []
html.push(templates["bread"]["pre"])
- // html.push(templates["titlebar"])
html.push(await constructFeed(models, "bread"))
html.push(templates["footer"])
html.push(templates["bread"]["post"])
res.status(200).send(html.join(""))
- // res.sendFile(__dirname + "/html/index.html")
})
+ server.get('/blog', async (req, res) => {
+ var html = []
+ html.push(templates["blog"]["pre"])
+ html.push(await constructFeed(models, "blog"))
+ html.push(templates["footer"])
+ html.push(templates["blog"]["post"])
+
+ res.status(200).send(html.join(""))
+ })
+
server.get('/admin', (req, res) => res.sendFile(__dirname + "/html/admin.html"));
server.get('/login', (req, res) => res.sendFile(__dirname + "/html/login.html"))
server.get('/email', (req, res) => res.sendFile(__dirname + "/html/email.html"))
- server.get('/bread', (req, res) => res.sendFile(__dirname + "/html/bread.html"));
- server.get('/blog', (req, res) => res.sendFile(__dirname + "/html/blog.html"));
server.get('/tags', (req, res) => res.sendFile(__dirname + "/html/tags.html"));
server.get('/feed', (req, res) => res.sendFile(__dirname + "/html/feed.html"));
server.get('/essay', (req, res) => res.sendFile(__dirname + "/html/essay.html"));
@@ -255,18 +261,20 @@ function setUpRoutes(models, jwtFunctions, database) {
res.status(400).send(e.message);
}
})
- server.post('/posts', upload.array('images'), async (req, res, next) => {
+ server.post('/admin/posts', upload.array('images'), async (req, res, next) => {
try {
const type = req.body.type
+ req.body.description = marked(req.body.description)
const newPost = await models.posts.create(req.body);
req.files.forEach(async (file) => {
await models.pictures.create({ "source": "uploads/" + file.filename, "postId": newPost.id });
console.log("uploaded ", file.path);
})
- req.body.tags.split(" ").forEach(async (tag) => {
- await models.tags.create({ "text": tag, "postId": newPost.id });
- })
- console.log(newPost);
+ if(req.body.tags.trim().length > 0) {
+ req.body.tags.split(" ").forEach(async (tag) => {
+ await models.tags.create({ "text": tag, "postId": newPost.id });
+ })
+ }
res.redirect(`/${type}`);
next();
} catch (e) {
diff --git a/src/templates.js b/src/templates.js
index 07a774c..7f22bed 100644
--- a/src/templates.js
+++ b/src/templates.js
@@ -57,5 +57,25 @@ module.exports = {
Some highlights (and lowlights) of breadmaking`,
post: `</body>
</html>`
+ },
+ blog: {
+ pre: `<!doctype html>
+ <html lang="en">
+
+ <head>
+ <title>Mark's Kitchen - Blog</title>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+ <link rel="stylesheet" type="text/css" href="/css/styles.css">
+ <link rel="shortcut icon" href="/favicon.ico">
+ </head>
+
+ <body>
+ <h1>
+ <a class="navigation" href="/" title="marks.kitchen">&lt;</a>
+ Blog
+ </h1>`,
+ post: `</body>
+ </html>`
}
} \ No newline at end of file