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.

67 lines
1.8 KiB

  1. const routes = require('express').Router();
  2. const pageBuilder = require('../../utils/pageBuilder');
  3. const renderBlogPost = require('../../blog/renderBlogPost');
  4. const utils = require('../../utils/utils');
  5. const whiskers = require('whiskers');
  6. const url = require('url');
  7. const fs = require('fs');
  8. routes.get('/', (request, result) =>
  9. {
  10. //do something later
  11. });
  12. const photosBaseDir = "blogContent/photos";
  13. photoPageBuilder = function(filename, request, templateContext)
  14. {
  15. return new Promise((resolve, reject)=>
  16. {
  17. if(fs.existsSync(photosBaseDir + filename + "/post.md"))
  18. {
  19. var markdownContent = utils.getFileContents(
  20. photosBaseDir + filename + "/post.md");
  21. renderBlogPost.pandocWrapper(markdownContent, "-t html5")
  22. .then((html)=>
  23. {
  24. templateContext.images = [];
  25. templateContext.mainPost = html;
  26. var imagePath = "/" + photosBaseDir + filename + "/";
  27. fs.readdirSync(photosBaseDir + filename).forEach(file=>
  28. {
  29. if(file.includes('.jpg')) //doesn't pick up mark down files
  30. {
  31. templateContext.images.push({full:imagePath+ file,
  32. preview:imagePath + "preview/" + file});
  33. }
  34. });
  35. resolve();
  36. }).catch((error)=>
  37. {
  38. reject(error);
  39. })
  40. }
  41. else
  42. {
  43. templateContext.error = true;
  44. resolve();
  45. }
  46. })
  47. };
  48. routes.get('*', (request, result) =>
  49. {
  50. pageBuilder.buildPageWithTemplate(request, result,
  51. photoPageBuilder, "photos/photosEntry.html");
  52. });
  53. module.exports = routes;