add announcements to boards, same styling as posts and fix the strict-origin to same-origin for links

merge-requests/208/head
fatchan 5 years ago
parent 5595dd7024
commit 56dfa48160
  1. 3
      controllers/forms.js
  2. 2
      helpers/posting/markdown.js
  3. 18
      models/forms/changeboardsettings.js
  4. 4
      views/includes/announcements.pug
  5. 2
      views/includes/navbar.pug
  6. 2
      views/pages/banners.pug
  7. 2
      views/pages/board.pug
  8. 1
      views/pages/catalog.pug
  9. 21
      views/pages/manage.pug
  10. 2
      views/pages/thread.pug

@ -273,6 +273,9 @@ router.post('/board/:board/settings', csrf, Boards.exists, checkPermsMiddleware,
if (req.body.description && (req.body.description.length < 1 || req.body.description.length > 50)) {
errors.push('Board description must be 1-50 characters');
}
if (req.body.announcements && (req.body.announcements.length < 1 || req.body.announcements.length > 2000)) {
errors.push('Board announcements must be 1-2000 characters');
}
if (req.body.name && (req.body.name.length < 1 || req.body.name.length > 50)) {
errors.push('Board name must be 1-50 characters');
}

@ -27,7 +27,7 @@ module.exports = (text) => {
//links
text = text.replace(linkRegex, (match) => {
return `<a referrerpolicy='strict-origin' target='_blank' href='${match}'>${match}</a>`;
return `<a referrerpolicy='same-origin' target='_blank' href='${match}'>${match}</a>`;
});
//bold

@ -6,11 +6,28 @@ const Boards = require(__dirname+'/../../db/boards.js')
, { buildHomepage, buildCatalog, buildBoardMultiple } = require(__dirname+'/../../helpers/build.js')
, { remove } = require('fs-extra')
, deletePosts = require(__dirname+'/deletepost.js')
, linkQuotes = require(__dirname+'/../../helpers/posting/quotes.js')
, simpleMarkdown = require(__dirname+'/../../helpers/posting/markdown.js')
, sanitize = require('sanitize-html')
, sanitizeOptions = {
allowedTags: [ 'span', 'a', 'em', 'strong', 'small' ],
allowedAttributes: {
'a': [ 'href', 'class', 'referrerpolicy', 'target' ],
'span': [ 'class' ]
}
};
module.exports = async (req, res, next) => {
const oldSettings = res.locals.board.settings;
let announcements;
if (req.body.announcements) {
const markdownAnnouncements = simpleMarkdown(req.body.announcements);
const quotedAnnouncements = (await linkQuotes(req.params.board, markdownAnnouncements, null)).quotedMessage;
announcements = sanitize(quotedAnnouncements, sanitizeOptions);
}
const newSettings = {
name: req.body.name && req.body.name.trim().length > 0 ? req.body.name : oldSettings.name,
description: req.body.description && req.body.description.trim().length > 0 ? req.body.description : oldSettings.description,
@ -29,6 +46,7 @@ module.exports = async (req, res, next) => {
forceOPMessage: req.body.force_op_message ? true : false,
forceOPFile: req.body.force_op_file ? true : false,
defaultName: req.body.default_name && req.body.default_name.trim().length > 0 ? req.body.default_name : oldSettings.defaultName,
announcements: announcements ? announcements : oldSettings.announcements
};
//settings changed in the db

@ -0,0 +1,4 @@
if board.settings.announcements
hr(size=1)
pre.post-message.no-m-p !{board.settings.announcements}
hr(size=1)

@ -1,4 +1,4 @@
nav.navbar
nav.navbar#top
a.nav-item(href='/') Home
a.nav-item(href=`/${board ? board._id+'/' : 'global'}manage.html`) Manage
//a.nav-item(href='/logout') Logout

@ -7,8 +7,6 @@ block content
include ../includes/bannersheader.pug
br
include ../includes/stickynav.pug
.anchor#top
include ../includes/stickynav.pug
nav.pages
a(href=`/${board._id}/index.html`) [Index]
|

@ -9,8 +9,8 @@ block content
br
include ../includes/postform.pug
br
include ../includes/announcements.pug
include ../includes/stickynav.pug
.anchor#top
nav.pages
include ../includes/pages.pug
a(href=`/${board._id}/catalog.html`) [Catalog]

@ -8,7 +8,6 @@ block content
include ../includes/catalogheader.pug
br
include ../includes/stickynav.pug
.anchor#top
nav.pages
a(href=`/${board._id}/index.html`) [Index]
|

@ -20,42 +20,42 @@ block content
input(type='text' name='description' placeholder=board.settings.description)
section.row
.label IDs
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='ids', value='true' checked=board.settings.ids)
section.row
.label Force Anon
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='force_anon', value='true' checked=board.settings.forceAnon)
section.row
.label Post Captcha
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='captcha', value='true' checked=board.settings.captcha)
section.row
.label Captcha PPH Trigger
input(type='number' name='captcha_trigger' placeholder=board.settings.captchaTrigger)
section.row
.label Post Deletion
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='user_post_delete', value='true' checked=board.settings.userPostDelete)
section.row
.label File Spoilers
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='user_post_spoiler', value='true' checked=board.settings.userPostSpoiler)
section.row
.label File Unlinking
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='user_post_unlink', value='true' checked=board.settings.userPostUnlink)
section.row
.label Force OP Message
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='force_op_message', value='true' checked=board.settings.forceOPMessage)
section.row
.label Force OP Subject
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='force_op_subject', value='true' checked=board.settings.forceOPSubject)
section.row
.label Force OP File
label.style.ph-5
label.postform-style.ph-5
input(type='checkbox', name='force_op_file', value='true' checked=board.settings.forceOPFile)
section.row
.label Anon Name
@ -72,6 +72,9 @@ block content
section.row
.label Max Files
input(type='number' name='max_files' placeholder=board.settings.maxFiles)
section.row
.label Announcements
textarea(name='announcements')
input(type='submit', value='save settings')
hr(size=1)
h4.no-m-p Add Banners:

@ -20,8 +20,8 @@ block content
br
include ../includes/postform.pug
br
include ../includes/announcements.pug
include ../includes/stickynav.pug
.anchor#top
nav.pages
a(href=`/${board._id}/index.html`) [Index]
|

Loading…
Cancel
Save