- /** Whiskers template file
- * this has stuff for both editing blog and viewing a list of blog*/
- const TEMPLATE_FILE = "admin/adminPosts.html";
-
- const includes = require('../includes/includes.js');
-
- const sql = require('../utils/sql');
-
- //parses the post data
- const qs = require('querystring');
-
-
- const utils = require('../utils/utils');
-
-
- /**
- * Detects if the post data came from the edit form in blog table or edit post
- * in the edit post form.
- *
- * @param postData
- * @param renderContext
- * @returns {Promise}
- */
- const processPostData = function(postData, renderContext)
- {
- return new Promise(function(resolve, reject)
- {
- var postParsed = qs.parse(postData);
-
- if(postParsed.edit_post)
- {
- renderContext.editPost = true;
- sql.getPostById(postParsed.edit_post).then(function(post)
- {
- post.published = post.published.toISOString().split('T')[0];
- renderContext.post = post;
- resolve();
- });
- }
- else if(postParsed.edit_post_2)
- {
- sql.editPost(postParsed).then(function()
- {
- resolve();
- }).catch(function(error)
- {
- reject(error);
- });
- }
- else
- {
- resolve();
- }
- });
- };
-
-
- /**
- * Grabs and appends the list of blog from the SQL database to
- * the template context for the template renderer.
- *
- * @param templateContext
- * @returns {Promise}
- */
- const fetchPostsInformation = function(templateContext)
- {
- return new Promise(function(resolve, reject)
- {
- sql.getAllPosts().then(function(posts)
- {
- templateContext.posts = posts;
- resolve();
- }).catch(function(error)
- {
- reject(error);
- })
- });
- };
-
- module.exports=
- {
- /**
- * Fetches context information for the admin blog page and handles post
- * data sent regarding editing blog.
- *
- * @param postData posted by user
- * @param templateContext json object used as the template context
- * @returns {Promise} renders the template used for this page
- */
- main: function(templateContext)
- {
- return new Promise(function(resolve, reject)
- {
- Promise.all([includes.fetchTemplate(TEMPLATE_FILE),
- fetchPostsInformation(templateContext)]).then(function(template)
- {
- templateContext.adminPage = template[0];
- resolve();
- }).catch(function(error)
- {
- console.log("error in add admin posts.js");
- reject(error);
- });
- });
- },
-
- processPostData(templateContext, postData)
- {
- return new Promise(function(resolve, reject)
- {
- Promise.all([includes.fetchTemplate(TEMPLATE_FILE),
- processPostData(postData, templateContext),
- fetchPostsInformation(templateContext)]).then(function(template)
- {
- templateContext.adminPage = template[0];
- resolve();
- }).catch(function(error)
- {
- console.log("error in add admin posts.js");
- reject(error);
- });
- });
- }
- };
|