mirror of https://gitgud.io/fatchan/jschan.git
Ability to edit newsposts reference #298
parent
77529034a6
commit
cf43f650d6
12 changed files with 167 additions and 2 deletions
@ -0,0 +1,40 @@ |
||||
'use strict'; |
||||
|
||||
const editNews = require(__dirname+'/../../models/forms/editnews.js') |
||||
, dynamicResponse = require(__dirname+'/../../helpers/dynamic.js'); |
||||
|
||||
module.exports = async (req, res, next) => { |
||||
|
||||
const errors = []; |
||||
|
||||
if (!req.body.news_id) { |
||||
errors.push('Missing news id'); |
||||
} |
||||
if (!req.body.message || res.locals.messageLength === 0) { |
||||
errors.push('Missing message'); |
||||
} |
||||
if (res.locals.messageLength > 10000) { |
||||
errors.push('Message must be 10000 characters or less'); |
||||
} |
||||
if (!req.body.title || req.body.title.length === 0) { |
||||
errors.push('Missing title'); |
||||
} |
||||
if (req.body.title.length > 50) { |
||||
errors.push('Title must be 50 characters or less'); |
||||
} |
||||
|
||||
if (errors.length > 0) { |
||||
return dynamicResponse(req, res, 400, 'message', { |
||||
'title': 'Bad request', |
||||
'errors': errors, |
||||
'redirect': req.headers.referer || '/globalmanage/news.html' |
||||
}); |
||||
} |
||||
|
||||
try { |
||||
await editNews(req, res, next); |
||||
} catch (err) { |
||||
return next(err); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,35 @@ |
||||
'use strict'; |
||||
|
||||
const { News } = require(__dirname+'/../../db/') |
||||
, dynamicResponse = require(__dirname+'/../../helpers/dynamic.js') |
||||
, buildQueue = require(__dirname+'/../../queue.js') |
||||
, { prepareMarkdown } = require(__dirname+'/../../helpers/posting/markdown.js') |
||||
, messageHandler = require(__dirname+'/../../helpers/posting/message.js'); |
||||
|
||||
module.exports = async (req, res, next) => { |
||||
|
||||
const message = prepareMarkdown(req.body.message, false); |
||||
const { message: markdownNews } = await messageHandler(message, null, null); |
||||
|
||||
const updated = await News.updateOne(req.body.news_id, req.body.title, message, markdownNews).then(r => r.matchedCount); |
||||
|
||||
if (updated === 0) { |
||||
return dynamicResponse(req, res, 400, 'message', { |
||||
'title': 'Bad request', |
||||
'errors': 'News post does not exist', |
||||
'redirect': req.headers.referer || '/globalmanage/news.html' |
||||
}); |
||||
} |
||||
|
||||
buildQueue.push({ |
||||
'task': 'buildNews', |
||||
'options': {} |
||||
}); |
||||
|
||||
return dynamicResponse(req, res, 200, 'message', { |
||||
'title': 'Success', |
||||
'message': 'Updated newspost', |
||||
'redirect': '/globalmanage/news.html' |
||||
}); |
||||
|
||||
} |
@ -0,0 +1,25 @@ |
||||
'use strict'; |
||||
|
||||
const { News } = require(__dirname+'/../../db/'); |
||||
|
||||
module.exports = async (req, res, next) => { |
||||
|
||||
let news; |
||||
try { |
||||
news = await News.findOne(req.params.newsid); |
||||
} catch (err) { |
||||
return next(err) |
||||
} |
||||
|
||||
if (!news) { |
||||
return next(); |
||||
} |
||||
|
||||
res |
||||
.set('Cache-Control', 'private, max-age=5') |
||||
.render('editnews', { |
||||
csrf: req.csrfToken(), |
||||
news, |
||||
}); |
||||
|
||||
} |
@ -0,0 +1,23 @@ |
||||
extends ../layout.pug |
||||
|
||||
block head |
||||
title Edit News |
||||
|
||||
block content |
||||
h1.board-title Edit News |
||||
include ../includes/stickynav.pug |
||||
.form-wrapper.flex-center.mv-10 |
||||
form.form-post(action='/forms/global/editnews' method='POST') |
||||
input(type='hidden' name='_csrf' value=csrf) |
||||
input(type='hidden' name='news_id' value=news._id) |
||||
.table-container.flex-center.mv-5 |
||||
table |
||||
tr |
||||
th |
||||
input.edit.left(type='text' name='title' value=news.title required) |
||||
- const newsDate = new Date(news.date); |
||||
time.right.reltime(datetime=newsDate.toISOString()) #{newsDate.toLocaleString(undefined, {hourCycle:'h23'})} |
||||
tr |
||||
td |
||||
textarea.edit.fw(name='message' rows='10' placeholder='Supports post styling' required) #{news.message.raw} |
||||
input(type='submit', value='save') |
Loading…
Reference in new issue