Browse Source

Created system to preview blog posts your working on.

pull/29/head
Jeffery Russell 5 years ago
parent
commit
56dc63a7bc
3 changed files with 136 additions and 31 deletions
  1. +57
    -0
      previewer.js
  2. +77
    -30
      utils/renderBlogPost.js
  3. +2
    -1
      utils/sql.js

+ 57
- 0
previewer.js View File

@ -0,0 +1,57 @@
//http server
const http = require('http');
//used to parse the request URL
const url = require('url');
//express app
const express = require("express");
//express app
const app = express();
//used to append static content to result
const includes = require('./includes/includes.js');
//used to append static content to result
const contentLoader = require('./includes/staticContentServer.js');
//port for the server to run on
const port = 8000;
/**
* Parses the request url and calls correct JS files
*/
app.use(function(request, result)
{
const filename = url.parse(request.url, true).pathname;
if(contentLoader.serveStaticContent(request, result, filename, ""))
{
//do nothing
}
else
{
result.writeHead(200, {'Content-Type': 'text/html'});
Promise.all([includes.printHeader(),
require('./utils/renderBlogPost.js').generateBlogPostComponent('/programming/', 'cs-theory-exam-2-review', -1),
includes.printFooter()]).then(function (content)
{
result.write(content.join(''));
result.end();
}).catch(function (err)
{
console.log(err);
throw err;
});
}
});
http.createServer(app).listen(port);

+ 77
- 30
utils/renderBlogPost.js View File

@ -69,7 +69,7 @@ module.exports=
* Method which renders the body of the blog post. This is responsible for getting
* the contents of the markdown/latex file and rendering it into beautiful html.
*
* @param post
* @param post stuff from the SQL table
* @param blocks
* @returns {Promise}
*/
@ -79,45 +79,91 @@ module.exports=
{
sql.getCategory(post.category_id).then(function(category)
{
const pathName = "blogContent/posts/" + category[0].url + "/"
+ post.url + ".md";
var markDown = utils.getFileContents(pathName).toString();
markDown = markDown.split("(media/").join("(" + "../blogContent/posts/"
+ category[0].url + "/media/");
resolve(module.exports.generateBlogPost(post.url, category[0].url, blocks));
// const pathName = "blogContent/posts/" + category[0].url + "/"
// + post.url + ".md";
// var markDown = utils.getFileContents(pathName).toString();
// markDown = markDown.split("(media/").join("(" + "../blogContent/posts/"
// + category[0].url + "/media/");
//
// module.exports.convertToHTML(markDown, blocks).then(function(result)
// {
//
// result = result.split("<figcaption>").join("<figcaption style=\"visibility: hidden;\">");
//
// //this line prevents older versions of pandoc from including invalid cdm scripts
// result = result.split("<script src=\"https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_CHTML-full\" type=\"text/javascript\"></script>").join("");
//
// if(blocks == -1)
// resolve(result);
//
// const htmlBlocks = result.split("<p>");
// var html = "";
// for(var i = 0; i < blocks; i++)
// {
// html += "<p>" + htmlBlocks[i];
// }
//
// html += " <div style=\"\">\n" +
// " <p class='text-center'><button class=\"btn btn-secondary btn-lg " +
// "w3-padding-large w3-white w3-border\" onclick=\"location.href='" +
// "http://jrtechs.net/" + category[0].url + "/" + post.url +
// "'\"><b>READ MORE &raquo;</b></button></p>\n" +
// " </div>\n";
//
// resolve(html);
//
// }).catch(function(error)
// {
// reject(error);
// })
module.exports.convertToHTML(markDown, blocks).then(function(result)
{
});
})
},
result = result.split("<figcaption>").join("<figcaption style=\"visibility: hidden;\">");
//this line prevents older versions of pandoc from including invalid cdm scripts
result = result.split("<script src=\"https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_CHTML-full\" type=\"text/javascript\"></script>").join("");
generateBlogPostComponent: function(categoryURL, postURL, blocks)
{
return new Promise(function(resolve, reject)
{
const pathName = "blogContent/posts/" + categoryURL + "/"
+ postURL + ".md";
var markDown = utils.getFileContents(pathName).toString();
markDown = markDown.split("(media/").join("(" + "../blogContent/posts/"
+ categoryURL + "/media/");
if(blocks == -1)
resolve(result);
module.exports.convertToHTML(markDown, blocks).then(function(result)
{
const htmlBlocks = result.split("<p>");
var html = "";
for(var i = 0; i < blocks; i++)
{
html += "<p>" + htmlBlocks[i];
}
result = result.split("<figcaption>").join("<figcaption style=\"visibility: hidden;\">");
html += " <div style=\"\">\n" +
" <p class='text-center'><button class=\"btn btn-secondary btn-lg " +
"w3-padding-large w3-white w3-border\" onclick=\"location.href='" +
"http://jrtechs.net/" + category[0].url + "/" + post.url +
"'\"><b>READ MORE &raquo;</b></button></p>\n" +
" </div>\n";
//this line prevents older versions of pandoc from including invalid cdm scripts
result = result.split("<script src=\"https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_CHTML-full\" type=\"text/javascript\"></script>").join("");
resolve(html);
if(blocks == -1)
resolve(result);
}).catch(function(error)
const htmlBlocks = result.split("<p>");
var html = "";
for(var i = 0; i < blocks; i++)
{
reject(error);
})
html += "<p>" + htmlBlocks[i];
}
});
html += " <div style=\"\">\n" +
" <p class='text-center'><button class=\"btn btn-secondary btn-lg " +
"w3-padding-large w3-white w3-border\" onclick=\"location.href='" +
"http://jrtechs.net/" + categoryURL + "/" + postURL +
"'\"><b>READ MORE &raquo;</b></button></p>\n" +
" </div>\n";
resolve(html);
}).catch(function(error)
{
reject(error);
})
})
},
@ -131,6 +177,7 @@ module.exports=
return "</div></div></div><br><br>";
},
/**
* Converts markdown into html.
*

+ 2
- 1
utils/sql.js View File

@ -19,7 +19,8 @@ const con = mysql.createConnection({
con.connect(function(err) {
if (err) throw err;
if (err)
console.log(err);
});

Loading…
Cancel
Save