Personal blog written from scratch using Node.js, Bootstrap, and MySQL. https://jrtechs.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

105 lines
3.0 KiB

const routes = require('express').Router();
const pageBuilder = require('../../utils/pageBuilder');
const renderBlogPost = require('../../blog/renderBlogPost');
const utils = require('../../utils/utils');
const whiskers = require('whiskers');
const url = require('url');
const fs = require('fs');
// routes.get('/', (request, result) =>
// {
// //do something later
// result.write("Not implemented yet.");
// result.end();
// });
const photosBaseDir = "content/photos";
photoPageBuilder = function(filename, request, templateContext)
{
const imagePath = "/" + photosBaseDir + filename + "/";
return new Promise((resolve, reject)=>
{
if(fs.existsSync(photosBaseDir + filename + "/post.md"))
{
var markdownContent = utils.getFileContents(
photosBaseDir + filename + "/post.md");
renderBlogPost.pandocWrapper(markdownContent, "-t html5")
.then((html)=>
{
templateContext.mainPost = html;
templateContext.images = [];
fs.readdirSync(photosBaseDir + filename).forEach(file=>
{
if(file.includes('.jpg')) //doesn't pick up mark down files
{
templateContext.images.push({full:imagePath+ file,
preview:imagePath + "preview/" + file});
}
});
resolve();
}).catch((error)=>
{
reject(error);
})
}
else if(fs.existsSync(photosBaseDir + filename + "/dir.md"))
{
templateContext.folders = [];
templateContext.directory = true;
fs.readdirSync(photosBaseDir + filename).forEach(file=>
{
if(!file.includes('.md') && !file.includes('.jpg') && !file.includes('private')) //only pick up folders
{
templateContext.folders.push({url: "/photos" + filename + "/" + file,
img:imagePath + file + "/1.jpg"});
}
});
renderBlogPost.pandocWrapper(utils.getFileContents(
photosBaseDir + filename + "/dir.md"), "-t html5")
.then((html)=>
{
templateContext.mainPost = html;
resolve();
}).catch((error)=>
{
console.log(error);
templateContext.error = true;
resolve();
});
}
else
{
templateContext.error = true;
resolve();
}
})
};
routes.get('*', (request, result) =>
{
pageBuilder.buildPageWithTemplate(request, result,
photoPageBuilder, "photos/photosEntry.html");
});
routes.get('/', (request, result) =>
{
console.log("wham");
pageBuilder.buildPageWithTemplate(request, result,
photoPageBuilder, "photos/photosEntry.html");
});
module.exports = routes;