diff --git a/controllers/forms/deleteboard.js b/controllers/forms/deleteboard.js index 2971719d..a9128771 100644 --- a/controllers/forms/deleteboard.js +++ b/controllers/forms/deleteboard.js @@ -38,7 +38,7 @@ module.exports = async (req, res, next) => { return res.status(400).render('message', { 'title': 'Bad request', 'errors': errors, - 'redirect': req.params.board ? `/${req.params.board}/manage/settings.html` : '/globalmanage/boards.html' + 'redirect': req.params.board ? `/${req.params.board}/manage/settings.html` : '/globalmanage/recent.html' }); } @@ -51,7 +51,7 @@ module.exports = async (req, res, next) => { return res.render('message', { 'title': 'Success', 'message': 'Board deleted', - 'redirect': req.params.board ? '/' : '/globalmanage/boards.html' + 'redirect': req.params.board ? '/' : '/globalmanage/recent.html' }); } diff --git a/controllers/pages.js b/controllers/pages.js index ea05c8b9..c9db3889 100644 --- a/controllers/pages.js +++ b/controllers/pages.js @@ -15,7 +15,7 @@ const express = require('express') , home = require(__dirname+'/../models/pages/home.js') , register = require(__dirname+'/../models/pages/register.js') , { manageReports, manageBanners, manageSettings, manageBans } = require(__dirname+'/../models/pages/manage/') - , { globalManageReports, globalManageBans, globalManageBoards, globalManageAccounts, globalManageNews } = require(__dirname+'/../models/pages/globalmanage/') + , { globalManageReports, globalManageBans, globalManageRecent, globalManageAccounts, globalManageNews } = require(__dirname+'/../models/pages/globalmanage/') , changePassword = require(__dirname+'/../models/pages/changepassword.js') , login = require(__dirname+'/../models/pages/login.js') , logout = require(__dirname+'/../models/pages/logout.js') @@ -58,7 +58,7 @@ router.get('/globalmanage/reports.html', sessionRefresh, isLoggedIn, calcPerms, router.get('/globalmanage/bans.html', sessionRefresh, isLoggedIn, calcPerms, hasPerms(1), csrf, globalManageBans); router.get('/globalmanage/news.html', sessionRefresh, isLoggedIn, calcPerms, hasPerms(0), csrf, globalManageNews); router.get('/globalmanage/accounts.html', sessionRefresh, isLoggedIn, calcPerms, hasPerms(1), csrf, globalManageAccounts); -router.get('/globalmanage/boards.html', sessionRefresh, isLoggedIn, calcPerms, hasPerms(1), csrf, globalManageBoards); +router.get('/globalmanage/recent.html', sessionRefresh, isLoggedIn, calcPerms, hasPerms(1), csrf, globalManageRecent); //captcha router.get('/captcha', captcha); //get captcha image and cookie diff --git a/db/posts.js b/db/posts.js index 747f6ec9..dfab19c6 100644 --- a/db/posts.js +++ b/db/posts.js @@ -21,6 +21,13 @@ module.exports = { return Math.ceil(threadsBefore/10) || 1; //1 because 0 threads before is page 1 }, + getGlobalRecent: (limit=10) => { + //global recent posts for recent section of global manage page + return db.find({}).sort({ + '_id': -1 + }).limit(limit).toArray(); + }, + getRecent: async (board, page, limit=10) => { // get all thread posts (posts with null thread id) const threads = await db.find({ diff --git a/ecosystem.config.js b/ecosystem.config.js index 61bff1ad..294d6c70 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -23,7 +23,6 @@ module.exports = { max_memory_restart: '1G', log_date_format: 'YYYY-MM-DD HH:mm:ss.SSS', wait_ready: true, - listen_timeout: 5000, kill_timeout: 5000, env: { NODE_ENV: 'development' diff --git a/models/forms/makepost.js b/models/forms/makepost.js index 82330a0f..e1d5e270 100644 --- a/models/forms/makepost.js +++ b/models/forms/makepost.js @@ -28,7 +28,7 @@ const path = require('path') , spamCheck = require(__dirname+'/../../helpers/checks/spamcheck.js') , { postPasswordSecret } = require(__dirname+'/../../configs/main.json') , buildQueue = require(__dirname+'/../../queue.js') - , { buildThread } = require(__dirname+'/../../helpers/build.js'); + , { buildThread } = require(__dirname+'/../../helpers/tasks.js'); module.exports = async (req, res, next) => { diff --git a/models/pages/catalog.js b/models/pages/catalog.js index 96076e94..f5816218 100644 --- a/models/pages/catalog.js +++ b/models/pages/catalog.js @@ -1,6 +1,6 @@ 'use strict'; -const { buildCatalog } = require(__dirname+'/../../helpers/tasksd.js'); +const { buildCatalog } = require(__dirname+'/../../helpers/tasks.js'); module.exports = async (req, res, next) => { diff --git a/models/pages/globalmanage/boards.js b/models/pages/globalmanage/boards.js deleted file mode 100644 index 6f18a03a..00000000 --- a/models/pages/globalmanage/boards.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -module.exports = async (req, res, next) => { - - res.render('globalmanageboards', { - csrf: req.csrfToken(), - }); - -} diff --git a/models/pages/globalmanage/index.js b/models/pages/globalmanage/index.js index f2d2db26..64a1e0b8 100644 --- a/models/pages/globalmanage/index.js +++ b/models/pages/globalmanage/index.js @@ -3,7 +3,7 @@ module.exports = { globalManageReports: require(__dirname+'/reports.js'), globalManageBans: require(__dirname+'/bans.js'), - globalManageBoards: require(__dirname+'/boards.js'), + globalManageRecent: require(__dirname+'/recent.js'), globalManageNews: require(__dirname+'/news.js'), globalManageAccounts: require(__dirname+'/accounts.js'), } diff --git a/models/pages/globalmanage/recent.js b/models/pages/globalmanage/recent.js new file mode 100644 index 00000000..0c0d7dad --- /dev/null +++ b/models/pages/globalmanage/recent.js @@ -0,0 +1,19 @@ +'use strict'; + +const { Posts } = require(__dirname+'/../../../db/'); + +module.exports = async (req, res, next) => { + + let posts; + try { + posts = await Posts.getGlobalRecent(); //10 default limit can be adjusted + } catch (err) { + return next(err) + } + + res.render('globalmanagerecent', { + csrf: req.csrfToken(), + posts, + }); + +} diff --git a/views/includes/postform.pug b/views/includes/postform.pug index 9e06c4a9..4f492299 100644 --- a/views/includes/postform.pug +++ b/views/includes/postform.pug @@ -55,5 +55,5 @@ section.form-wrapper.flex-center .required * .col include ./captcha.pug - input(type='submit', value=`New ${isThread ? 'Reply' : 'Thread'}`) + input#submitpost(type='submit', value=`New ${isThread ? 'Reply' : 'Thread'}`) a.toggle-summary(href='#postform') Open Postform diff --git a/views/mixins/globalmanagenav.pug b/views/mixins/globalmanagenav.pug index d5af6174..05ca2103 100644 --- a/views/mixins/globalmanagenav.pug +++ b/views/mixins/globalmanagenav.pug @@ -4,7 +4,7 @@ mixin globalmanagenav(selected) | a(href=`/globalmanage/bans.html` class=(selected === 'bans' ? 'bold' : '')) [Bans] | - a(href=`/globalmanage/boards.html` class=(selected === 'boards' ? 'bold' : '')) [Boards] + a(href=`/globalmanage/recent.html` class=(selected === 'recent' ? 'bold' : '')) [Recent] if permLevel === 0 | a(href=`/globalmanage/accounts.html` class=(selected === 'accounts' ? 'bold' : '')) [Accounts] diff --git a/views/pages/globalmanageaccounts.pug b/views/pages/globalmanageaccounts.pug index e8ed5777..19549cdd 100644 --- a/views/pages/globalmanageaccounts.pug +++ b/views/pages/globalmanageaccounts.pug @@ -10,6 +10,19 @@ block content br +globalmanagenav('accounts') hr(size=1) + h4.no-m-p Delete board: + section.form-wrapper.flexleft.mt-10 + form.form-post(action=`/forms/global/deleteboard`, enctype='application/x-www-form-urlencoded', method='POST') + input(type='hidden' name='_csrf' value=csrf) + section.row + .label I'm sure + label.postform-style.ph-5 + input(type='checkbox', name='confirm', value='true' required) + section.row + .label Board URI + input(type='text' name='uri' required) + input(type='submit', value='submit') + hr(size-1) h4.no-m-p Accounts: section.form-wrapper.flexleft.mt-10 form.form-post(action=`/forms/global/editaccounts` method='POST' enctype='application/x-www-form-urlencoded') diff --git a/views/pages/globalmanageboards.pug b/views/pages/globalmanageboards.pug deleted file mode 100644 index 6abb6e4c..00000000 --- a/views/pages/globalmanageboards.pug +++ /dev/null @@ -1,24 +0,0 @@ -extends ../layout.pug -include ../mixins/globalmanagenav.pug - -block head - script(src='/js/all.js') - title Manage - -block content - h1.board-title Global Management - br - +globalmanagenav('boards') - hr(size=1) - h4.no-m-p Delete board: - section.form-wrapper.flexleft.mt-10 - form.form-post(action=`/forms/global/deleteboard`, enctype='application/x-www-form-urlencoded', method='POST') - input(type='hidden' name='_csrf' value=csrf) - section.row - .label I'm sure - label.postform-style.ph-5 - input(type='checkbox', name='confirm', value='true' required) - section.row - .label Board URI - input(type='text' name='uri' required) - input(type='submit', value='submit') diff --git a/views/pages/globalmanagerecent.pug b/views/pages/globalmanagerecent.pug new file mode 100644 index 00000000..892e0466 --- /dev/null +++ b/views/pages/globalmanagerecent.pug @@ -0,0 +1,24 @@ +extends ../layout.pug +include ../mixins/globalmanagenav.pug +include ../mixins/post.pug + +block head + script(src='/js/all.js') + title Manage + +block content + h1.board-title Global Management + br + +globalmanagenav('recent') + hr(size=1) + h4.no-m-p Recent posts: + form(action=`/forms/global/actions` method='POST' enctype='application/x-www-form-urlencoded') + input(type='hidden' name='_csrf' value=csrf) + if posts.length === 0 + p No posts. + else + for p in posts + section.thread + +post(p, false, false, true) + hr(size=1) + include ../includes/actionfooter_globalmanage.pug