import Book from '../../data/Book'; const express = require('express'); const router = express.Router(); const moment = require('moment'); const book = new Book(); const uuidv4 = require('uuid/v4'); const fs = require('fs-extra'); //-------------------------- // 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) { book.getPage() .then(pages => { pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); let all = []; let deleted = []; let published = []; let menu = []; let featured = []; for (let index = 0; index < pages.length; index++) { let item = pages[index].metadata; if (typeof item.deleted === 'undefined' || item.deleted === false) { all.push({ page: pages[index].metadata, date: moment(pages[index].metadata.created).fromNow() }); if (item.published == true) published.push({ page: pages[index].metadata, date: moment(pages[index].metadata.created).fromNow() }); if (item.menu == true) menu.push({ page: pages[index].metadata, date: moment(pages[index].metadata.created).fromNow() }); if (item.featured == true) featured.push({ page: pages[index].metadata, date: moment(pages[index].metadata.created).fromNow() }); } else { deleted.push({ page: pages[index].metadata, date: moment(pages[index].metadata.created).fromNow() }); } } var filtered; switch (filter) { case 'published': filtered = published; break; case 'deleted': filtered = deleted; break; default: filtered = all; break; } var count = Math.ceil(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].page.id != null) { pageItems.push({ page: filtered[i + rangeStart].page, date: moment(filtered[i + rangeStart].page.created).fromNow() }); } } catch (e) { //console.log("NO POST", e) } } res.render('book-index', { title: 'Dashbord | Book', welcome: 'Your pages', 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, status: true }); }) .then(() => { //console.log(value); }) .catch(err => { res.render('error', { error: err }); }); } else { res.redirect('/@/dashboard'); } }); //-------------------------- // BLOG POST ADD DISPLAY //-------------------------- router.get('/add/new', function (req, res) { if (req.session.user) { //need to grab a few copy of settings for the lastest index fs.readJSON('site/settings.json') .then(config => { res.render('page-edit', { id: config.library_stats.current_index, uuid: uuidv4(), title: 'Add New Page', user_status: true, welcome: 'Add New Page', date: moment(Date.now()).format('YYYY MMM DD'), page: [], rawDate: moment(Date.now()).format(), status: ['false', 'false', 'false'], edit: false }); }) .catch(err => { res.render('error', { error: err }); }); } else { res.redirect('/@/dashboard'); } }); //-------------------------- // BLOG POST EDIT DISPLAY //-------------------------- router.get('/edit/:id', function (req, res) { var id = req.params.id; if (req.session.user) { book.getPage(id) .then(page => { res.render('page-edit', { id: page.metadata.id, uuid: page.metadata.uuid, title: 'Edit Page', welcome: 'Edit Page', page: page.metadata, date: moment(page.metadata.created).format('YYYY MMM DD HH:mm'), layout: page.metadata.layout, rawDate: page.metadata.created, content: page.content, feature: page.metadata.feature, status: [ String(page.metadata.menu), String(page.metadata.featured), String(page.metadata.published) ], edit: true }); }) .catch(err => { res.render('error', { error: err }); }); } else { res.redirect('/@/dashboard'); } }); module.exports = router;