diff options
author | Mark Powers <markppowers0@gmail.com> | 2020-08-13 11:12:37 -0500 |
---|---|---|
committer | Mark Powers <markppowers0@gmail.com> | 2020-08-13 11:12:37 -0500 |
commit | 73e145884680242d64bc542afac09aee5f24b132 (patch) | |
tree | f96d12daaeeb330dae68cdba5c02c42162ff6840 /src | |
parent | 09fdcb05b2c1fa7a51e4b4110c7317b5d0e361f4 (diff) |
Remove client JS requirement from /blog, convert new posts from markdown automatically
Diffstat (limited to 'src')
-rw-r--r-- | src/html/admin.html | 3 | ||||
-rw-r--r-- | src/html/blog.html | 16 | ||||
-rw-r--r-- | src/server.js | 28 | ||||
-rw-r--r-- | src/templates.js | 20 |
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"><</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"><</a> + Blog + </h1>`, + post: `</body> + </html>` } }
\ No newline at end of file |