import DateUtils from '../../tools/utilities/DateUtils'; var express = require('express'); var router = express.Router(); var Models = require('../../models'); var hljs = require('highlight.js/lib/highlight'); var hljs_md = require('highlight.js/lib/languages/markdown'); hljs.registerLanguage('markdown', hljs_md); var Sequelize = require('sequelize'); const Op = Sequelize.Op; const dateUtils = new DateUtils(); //-------------------------- // POSTS //-------------------------- router.get('/list/:filter?/:page?', function(req, res) { var pageNum = req.params.page; var filter = req.params.filter; if (pageNum == '' || pageNum == null) pageNum = 1; if (filter == '' || filter == null) filter = 'all'; if (req.session.user) { Models.FreshPost.findAll({ order: [['id', 'DESC']] }) .then(function(posts) { let all = []; let deleted = []; let published = []; let pages = []; let featured = []; for (let index = 0; index < posts.length; index++) { let item = posts[index].post; if (typeof item.deleted == 'undefined' || item.deleted == false) { all.push(posts[index]); if (item.published == 'true') published.push(posts[index]); if (item.page == 'true') pages.push(posts[index]); if (item.featured == 'true') featured.push(posts[index]); } else { deleted.push(posts[index]); } } var filtered; switch (filter) { case 'published': filtered = published; break; case 'deleted': filtered = deleted; break; default: filtered = all; break; } var count = Math.round(filtered.length / 6); var pageItems = []; var itemLimit = 6; var rangeStart = pageNum * itemLimit - itemLimit; for (var i = 0; i < itemLimit; i++) { try { if (filtered[i + rangeStart].id != null) { pageItems.push(filtered[i + rangeStart]); } } catch (e) { //console.log("NO POST", e) } } res.render('dash/posts-index', { title: 'Dashbord | Posts', mode: 'admin', welcome: 'Your Posts', items: pageItems, page_info: { all: all.length, deleted: deleted.length, published: published.length, pages: pages.length, featured: featured.length }, page_index: pageNum, page_count: count, postFilter: filter, user_status: true }); }) .then(() => { //console.log(value); }) .catch(() => { //next(err); }); } else { res.redirect('/@/dashboard'); } }); //-------------------------- // BLOG POST ADD DISPLAY //-------------------------- router.get('/add/new', function(req, res) { if (req.session.user) { res.render('dash/post-edit', { title: 'Dashboard New Post', user_status: true, welcome: 'New Post', mode: 'admin', date: dateUtils.getDate('year', new Date()) + '-' + dateUtils.getDate('month', new Date()) + '-' + dateUtils.getDate('day', new Date()), status: ['false', 'false', 'false'], edit: false }); } else { res.redirect('/@/dashboard'); } }); //-------------------------- // BLOG POST EDIT DISPLAY //-------------------------- router.get('/edit/:id', function(req, res) { if (req.session.user) { Models.FreshPost.findOne({ where: { post: { [Op.contains]: { uuid: req.params.id } } } }) .then(item => { let featured = 'null'; if (item.post.feature != null || item.post.feature != '') featured = item.post.feature.substr(8, item.post.feature.length); let pretty = hljs.highlight('markdown', item.post.plaintext).value; let sexydate = dateUtils.getDate('year', item.post.created) + '-' + dateUtils.getDate('month', item.post.created) + '-' + dateUtils.getDate('day', item.post.created); res.render('dash/post-edit', { id: item.id, title: 'Edit Post', user_status: true, welcome: 'Edit Post', mode: 'admin', post: item.post, date: sexydate, colored: pretty, html: item.post.plaintext, feature: featured, status: [ String(item.post.page), String(item.post.featured), String(item.post.published) ], edit: true }); }) .then(() => { //console.log("VALUE: " + value); }) .catch(() => { //console.log(err); }); } else { res.redirect('/@/dashboard'); } }); module.exports = router;