Browse Source

Updated the admin page to be able to delete old downloads.

pull/4/head
jrtechs 6 years ago
parent
commit
b591631d86
5 changed files with 70 additions and 33 deletions
  1. +1
    -2
      admin/admin.js
  2. +45
    -26
      admin/manageDownloads.js
  3. +0
    -1
      admin/newPost.js
  4. +1
    -3
      server.js
  5. +23
    -1
      utils/sql.js

+ 1
- 2
admin/admin.js View File

@ -21,7 +21,7 @@ module.exports=
Promise.all([require("../admin/newPost.js").main(postData), Promise.all([require("../admin/newPost.js").main(postData),
require("../admin/addCategory.js").main(postData), require("../admin/addCategory.js").main(postData),
require("../admin/editPost.js").main(postData), require("../admin/editPost.js").main(postData),
require("../admin/addDownload.js").main(postData)])
require("./manageDownloads.js").main(postData)])
.then(function(content) .then(function(content)
{ {
resolve(content.join('')); resolve(content.join(''));
@ -43,7 +43,6 @@ module.exports=
console.log(err); console.log(err);
}) })
} }
}); });
} }
}; };

admin/addDownload.js → admin/manageDownloads.js View File

@ -1,29 +1,36 @@
/**
* File which deals with adding and removing downloads from
* the admin section of the website.
*
* @author Jeffery Russell 6-30-18
*/
//file IO
const utils = require('../utils/utils.js'); const utils = require('../utils/utils.js');
//updates db
const sql = require('../utils/sql'); const sql = require('../utils/sql');
//parses post data
const qs = require('querystring'); const qs = require('querystring');
const Promise = require('promise');
/**
* @author Jeffery Russell 6-30-18
*/
/** /**
* Processes post requests from the addDownload form * Processes post requests from the addDownload form
*
* @param postData * @param postData
* @returns {*|Promise} * @returns {*|Promise}
*/ */
var addDownloadPostData = function(postData)
const addDownloadPostData = function(postData)
{ {
return new Promise(function(resolve, reject) return new Promise(function(resolve, reject)
{ {
var post = qs.parse(postData);
const post = qs.parse(postData);
if(post.add_download) if(post.add_download)
{ {
console.log(post);
sql.addDownload(post.add_download_name, post.add_download_file).then(function()
sql.addDownload(post.add_download_name, post.add_download_file)
.then(function()
{ {
resolve(""); resolve("");
}).catch(function(error) }).catch(function(error)
@ -47,16 +54,14 @@ var addDownloadPostData = function(postData)
*/ */
const addDownload = function(postData) const addDownload = function(postData)
{ {
//res.write("<div class=\"col-md-6\">");
return new Promise(function(resolve, reject) return new Promise(function(resolve, reject)
{ {
Promise.all([addDownloadPostData(postData), utils.include("./admin/addDownload.html")]).then(function(html)
Promise.all([addDownloadPostData(postData),
utils.include("./admin/addDownload.html")]).then(function(html)
{ {
console.log("add download is good");
resolve("<div class=\"col-md-6\">" + html.join('') + "</div>"); resolve("<div class=\"col-md-6\">" + html.join('') + "</div>");
}).catch(function(error) }).catch(function(error)
{ {
console.log(error);
reject(error); reject(error);
}) })
}); });
@ -73,13 +78,21 @@ const displayDownloadsPostData = function(postData)
{ {
return new Promise(function(resolve, reject) return new Promise(function(resolve, reject)
{ {
var post = qs.parse(postData);
const post = qs.parse(postData);
if(post.delete_download) if(post.delete_download)
{ {
sql.removeDownload(post.delete_download).then(function()
{
resolve(postData);
}).catch(function(err)
{
reject(err);
});
}
else
{
resolve(postData);
} }
resolve(postData);
}); });
}; };
@ -97,9 +110,10 @@ const renderDownloadRow = function(download)
"<td>" + download.file + "</td>" + "<td>" + download.file + "</td>" +
"<td>" + download.download_count + "</td>" + "<td>" + download.download_count + "</td>" +
"<td><form action=\"/admin/\" method =\"post\" >\n" + "<td><form action=\"/admin/\" method =\"post\" >\n" +
" <input type=\"submit\" name=\"submit\" value=\"Edit\"\n" +
" <input type=\"submit\" name=\"submit\" value=\"Delete\"\n" +
" class=\"btn btn-secondary\"/>\n" + " class=\"btn btn-secondary\"/>\n" +
"<input type='hidden' name='delete_download' value='" + download.download_id + "'/>"+
"<input type='hidden' name='delete_download' value='" +
download.download_id + "'/>"+
"</form></td>" + "</form></td>" +
"</tr>"; "</tr>";
}; };
@ -121,7 +135,8 @@ const displayDownloads = function(postData)
"<h1 class=\"text-center\">Downloads</h1>" + "<h1 class=\"text-center\">Downloads</h1>" +
"<div class=\"\"><table class=\"table table-striped\">" + "<div class=\"\"><table class=\"table table-striped\">" +
"<thead class=\"thead-dark\"><tr>" + "<thead class=\"thead-dark\"><tr>" +
"<td>Download Name</td><td>File</td><td>Download Count</td><td>Delete</td>" +
"<td>Download Name</td><td>File</td>" +
"<td>Download Count</td><td>Delete</td>" +
"</tr></thead><tbody>"; "</tr></thead><tbody>";
@ -136,30 +151,34 @@ const displayDownloads = function(postData)
Promise.all(downloadPromises).then(function(htmls) Promise.all(downloadPromises).then(function(htmls)
{ {
var htmlafter = "</tbody></table></div></div><br>" +
const htmlafter = "</tbody></table></div></div><br>" +
"</div>"; "</div>";
console.log("display download is good");
resolve(html + htmls.join('') + htmlafter); resolve(html + htmls.join('') + htmlafter);
}); });
}).catch(function(error) }).catch(function(error)
{ {
console.log(error);
reject(error); reject(error);
}); });
}); });
}); });
}; };
module.exports= module.exports=
{ {
/**
* Renders tha download section of the admin page
*
* @param postData
* @returns {Promise}
*/
main: function(postData) main: function(postData)
{ {
return new Promise(function(resolve, reject) return new Promise(function(resolve, reject)
{ {
Promise.all([addDownload(postData), displayDownloads(postData)]).then(function(html)
Promise.all([addDownload(postData),
displayDownloads(postData)]).then(function(html)
{ {
resolve("<div class=\"row\">" + html.join('') + "</div>"); resolve("<div class=\"row\">" + html.join('') + "</div>");
}).catch(function(error) }).catch(function(error)

+ 0
- 1
admin/newPost.js View File

@ -60,7 +60,6 @@ module.exports=
resolve(html.join('')); resolve(html.join(''));
}).catch(function(error) }).catch(function(error)
{ {
console.log(error);
reject(error); reject(error);
}) })
}); });

+ 1
- 3
server.js View File

@ -128,9 +128,7 @@ app.use(function(request, result)
sql.logTraffic(getClientAddress, filename); sql.logTraffic(getClientAddress, filename);
} }
catch (e) catch (e)
{
}
{ }
} }
} }
else else

+ 23
- 1
utils/sql.js View File

@ -94,6 +94,7 @@ module.exports=
}); });
}, },
/** /**
* Not to be mistaken for getPostData() in @file utils/utils.js, * Not to be mistaken for getPostData() in @file utils/utils.js,
* this function extracts a post entry from the sql server * this function extracts a post entry from the sql server
@ -137,6 +138,8 @@ module.exports=
}); });
}, },
/** /**
* Function used to retrieve all categories when making the sidebar * Function used to retrieve all categories when making the sidebar
* *
@ -148,6 +151,7 @@ module.exports=
return fetch(q); return fetch(q);
}, },
/** /**
* Function which currently returns all posts of a particular * Function which currently returns all posts of a particular
* category from the database * category from the database
@ -185,6 +189,7 @@ module.exports=
return fetch("select * from posts order by post_id desc limit 10"); return fetch("select * from posts order by post_id desc limit 10");
}, },
/** /**
* Helper method which returns a list of objects which contains the url * Helper method which returns a list of objects which contains the url
* and name of thee ten most recent posts * and name of thee ten most recent posts
@ -242,6 +247,8 @@ module.exports=
}); });
}); });
}, },
/** /**
* Function which checks to see if a user successfully logged in based on * Function which checks to see if a user successfully logged in based on
* the post data which they sent * the post data which they sent
@ -299,6 +306,7 @@ module.exports=
}); });
}, },
/** /**
* Fetches a promise containing every post in the database * Fetches a promise containing every post in the database
* @returns {Array} * @returns {Array}
@ -398,12 +406,25 @@ module.exports=
*/ */
addDownload: function(name, file) addDownload: function(name, file)
{ {
var q = "insert into downloads (name, file, download_count) " +
const q = "insert into downloads (name, file, download_count) " +
"values('" + name + "', '" + file + "', '0')"; "values('" + name + "', '" + file + "', '0')";
return module.exports.insert(q); return module.exports.insert(q);
}, },
/**
*
* @param id
*/
removeDownload: function(id)
{
const q = "delete from downloads where download_id='" + id + "'";
return module.exports.insert(q);
},
/** /**
* Based on the post data submitted by the user this function updates * Based on the post data submitted by the user this function updates
* the information on the post in the database * the information on the post in the database
@ -423,6 +444,7 @@ module.exports=
return module.exports.insert(q); return module.exports.insert(q);
}, },
/** /**
* Function which returns a promise which contains the string of the * Function which returns a promise which contains the string of the
* entire sitemap for the blog. * entire sitemap for the blog.

Loading…
Cancel
Save