|
|
const TEMPLATE_FILE = "admin/adminHome.html";
|
|
|
|
const includes = require('../includes/includes.js');
|
|
|
|
const sql = require('../utils/sql');
|
|
|
|
const qs = require('querystring');
|
|
|
|
|
|
/**
|
|
* Checks for post data regarding adding a new category.
|
|
* If a post is made with add_category, it parses the url-- replaces spaces
|
|
* with dashes -- and calls a insert method on the database
|
|
*
|
|
* @param postData
|
|
* @return {*|Promise}
|
|
*/
|
|
const processPostAddCategory = function(postData)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
const post = qs.parse(postData);
|
|
if(post.add_category)
|
|
{
|
|
const url = post.add_category.split(" ").join("-").toLowerCase();
|
|
const q = "insert into categories (name, url) values " +
|
|
"('" + post.add_category + "','" + url + "')";
|
|
if(sql.insert(q) != 0)
|
|
{
|
|
console.log("category added");
|
|
resolve();
|
|
}
|
|
else
|
|
{
|
|
reject();
|
|
console.log("error adding category");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
resolve();
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Displays all the categories in the database
|
|
* @return {*|Promise}
|
|
*/
|
|
const appendCategoriesToTemplate = function(templateContext)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
sql.getCategories().then(function(categories)
|
|
{
|
|
templateContext.categories = categories;
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
reject(error);
|
|
})
|
|
});
|
|
};
|
|
|
|
/**
|
|
*
|
|
* @param postData
|
|
* @return {*|Promise}
|
|
*/
|
|
const processPost = function(postData)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
var post = qs.parse(postData);
|
|
if(post.add_post_name)
|
|
{
|
|
var urls = post.add_post_name;
|
|
urls = urls.split(" ").join("-");
|
|
urls =urls.toLowerCase();
|
|
|
|
var q = "insert into posts (category_id, picture_url, published, name, url) values ";
|
|
|
|
q += "('" + post.add_post_category + "', '" + post.add_post_picture +
|
|
"', '" + post.add_post_date + "', '" + post.add_post_name + "', '" + urls + "')";
|
|
sql.insert(q).then(function()
|
|
{
|
|
var map = require('../utils/generateSiteMap');
|
|
map.main();
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
reject(error);
|
|
})
|
|
}
|
|
else if(post.clear_cache)
|
|
{
|
|
require("../utils/pageBuilder").clearCache();
|
|
require("../includes/includes.js").clearCache();
|
|
resolve();
|
|
}
|
|
else if(post.git_pull)
|
|
{
|
|
const execSync = require('child_process').execSync;
|
|
code = execSync('git pull');
|
|
resolve();
|
|
}
|
|
else
|
|
{
|
|
resolve();
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
|
|
module.exports=
|
|
{
|
|
/**
|
|
*
|
|
* @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),
|
|
appendCategoriesToTemplate(templateContext)])
|
|
.then(function(template)
|
|
{
|
|
templateContext.adminPage = template[0];
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
console.log("error in add adminHome.js");
|
|
reject(error);
|
|
});
|
|
});
|
|
},
|
|
|
|
processPostData: function(postData)
|
|
{
|
|
return new Promise(function(resolve, reject)
|
|
{
|
|
Promise.all([processPostAddCategory(postData),
|
|
processPost(postData)])
|
|
.then(function()
|
|
{
|
|
console.log("all resolved");
|
|
resolve();
|
|
}).catch(function(error)
|
|
{
|
|
console.log("error in add downloads.js");
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
};
|