You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
4.3 KiB
JavaScript
171 lines
4.3 KiB
JavaScript
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;
|