add global announcements, now that there is global settings, DUH close #301

merge-requests/218/head
Thomas Lynch 3 years ago
parent 9b0b734bce
commit 06bac65200
  1. 5
      configs/template.js.example
  2. 1
      controllers/forms/globalsettings.js
  3. 5
      helpers/render.js
  4. 12
      models/forms/changeglobalsettings.js
  5. 5
      views/includes/announcements.pug
  6. 3
      views/pages/globalmanagesettings.pug

@ -1,5 +1,10 @@
module.exports = {
globalAnnouncement: {
markdown: '',
raw: '',
},
secureCookies: true,
//check referrer to prevent some CSRF attack

@ -28,6 +28,7 @@ module.exports = async (req, res, next) => {
}
return false;
}, expected: false, error: 'Extra mime types must be like type/subtype' },
{ result: lengthBody(req.body.global_announcement, 0, 10000), expected: false, error: 'Global announcement must not exceed 10000 characters' },
{ result: lengthBody(req.body.filters, 0, 5000), expected: false, error: 'Filter text cannot exceed 5000 characters' },
{ result: numberBody(req.body.filter_mode, 0, 2), expected: false, error: 'Filter mode must be a number from 0-2' },
{ result: numberBody(req.body.ban_duration), expected: false, error: 'Invalid filter auto ban duration' },

@ -14,13 +14,13 @@ const { outputFile } = require('fs-extra')
let { enableUserBoardCreation, enableUserAccountCreation,
lockWait, globalLimits, boardDefaults, cacheTemplates,
meta, enableWebring, captchaOptions } = config.get
meta, enableWebring, captchaOptions, globalAnnouncement } = config.get
, renderLocals = null;
const updateLocals = () => {
({ enableUserBoardCreation, enableUserAccountCreation,
lockWait, globalLimits, boardDefaults, cacheTemplates,
meta, enableWebring, captchaOptions } = config.get);
meta, enableWebring, captchaOptions, globalAnnouncement } = config.get);
renderLocals = {
cache: cacheTemplates,
meta,
@ -36,6 +36,7 @@ const updateLocals = () => {
googleRecaptchaSiteKey: google.siteKey,
hcaptchaSitekey: hcaptcha.siteKey,
captchaGridSize: captchaOptions.grid.size,
globalAnnouncement,
};
};

@ -6,6 +6,8 @@ const { Boards, Posts, Accounts } = require(__dirname+'/../../db/')
, buildQueue = require(__dirname+'/../../queue.js')
, redis = require(__dirname+'/../../redis.js')
, config = require(__dirname+'/../../config.js')
, { prepareMarkdown } = require(__dirname+'/../../helpers/posting/markdown.js')
, messageHandler = require(__dirname+'/../../helpers/posting/message.js')
, { trimSetting, numberSetting, booleanSetting, arraySetting } = require(__dirname+'/../../helpers/setting.js')
, { remove } = require('fs-extra');
@ -14,6 +16,12 @@ module.exports = async (req, res, next) => {
const promises = [];
const oldSettings = config.get;
const announcement = req.body.global_announcement === null ? null : prepareMarkdown(req.body.global_announcement, false);
let markdownAnnouncement = oldSettings.globalAnnouncement.markdown;
if (announcement !== oldSettings.globalAnnouncement.raw) {
({ message: markdownAnnouncement } = await messageHandler(announcement, null, null))
}
const newSettings = {
filters: arraySetting(req.body.filters, oldSettings.filters),
filterMode: numberSetting(req.body.filter_mode, oldSettings.filterMode),
@ -22,6 +30,10 @@ module.exports = async (req, res, next) => {
allowedHosts: arraySetting(req.body.allowed_hosts, oldSettings.allowedHosts),
countryCodeHeader: trimSetting(req.body.country_code_header, oldSettings.countryCodeHeader),
ipHeader: trimSetting(req.body.ip_header, oldSettings.ipHeader),
globalAnnouncement: {
raw: trimSetting(announcement, oldSettings.globalAnnouncement.raw),
markdown: trimSetting(markdownAnnouncement, oldSettings.globalAnnouncement.markdown),
},
meta: {
siteName: trimSetting(req.body.meta_site_name, oldSettings.meta.siteName),
url: trimSetting(req.body.meta_url, oldSettings.meta.url),

@ -1,3 +1,8 @@
if globalAnnouncement.markdown
hr(size=1)
pre.post-message.no-m-p.text-center !{globalAnnouncement.markdown}
if !board.settings.announcement.markdown
hr(size=1)
if board.settings.announcement.markdown
hr(size=1)
pre.post-message.no-m-p.text-center !{board.settings.announcement.markdown}

@ -45,6 +45,9 @@ block content
.row
h4.mv-5 Server
.row
.label Global Announcement
textarea(name='global_announcement') #{settings.globalAnnouncement.raw}
.row
.label Country Code Header
input(type='text' name='country_code_header' value=settings.countryCodeHeader)

Loading…
Cancel
Save