change globalmanage pages and add a recent posts view for all boards

merge-requests/208/head
fatchan 5 years ago
parent db3595d766
commit 76e2fee22e
  1. 4
      controllers/forms/deleteboard.js
  2. 4
      controllers/pages.js
  3. 7
      db/posts.js
  4. 1
      ecosystem.config.js
  5. 2
      models/forms/makepost.js
  6. 2
      models/pages/catalog.js
  7. 9
      models/pages/globalmanage/boards.js
  8. 2
      models/pages/globalmanage/index.js
  9. 19
      models/pages/globalmanage/recent.js
  10. 2
      views/includes/postform.pug
  11. 2
      views/mixins/globalmanagenav.pug
  12. 13
      views/pages/globalmanageaccounts.pug
  13. 24
      views/pages/globalmanageboards.pug
  14. 24
      views/pages/globalmanagerecent.pug

@ -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'
});
}

@ -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

@ -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({

@ -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'

@ -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) => {

@ -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) => {

@ -1,9 +0,0 @@
'use strict';
module.exports = async (req, res, next) => {
res.render('globalmanageboards', {
csrf: req.csrfToken(),
});
}

@ -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'),
}

@ -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,
});
}

@ -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

@ -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]

@ -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')

@ -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')

@ -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
Loading…
Cancel
Save