mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-24 06:35:49 +03:00
Fixed posting empty comments
refs https://github.com/TryGhost/Team/issues/1750 - Trim whitespace from empty paragraphs - Do not allow empty comments - Also includes: Allow requesting the parent relationship of a comment (required for focusing comments)
This commit is contained in:
parent
3c76172e81
commit
17a9759cf3
@ -3,7 +3,7 @@ const tpl = require('@tryghost/tpl');
|
||||
const errors = require('@tryghost/errors');
|
||||
const models = require('../../models');
|
||||
const commentsService = require('../../services/comments');
|
||||
const ALLOWED_INCLUDES = ['post', 'member', 'likes', 'replies'];
|
||||
const ALLOWED_INCLUDES = ['post', 'member', 'likes', 'replies', 'parent'];
|
||||
const UNSAFE_ATTRS = ['status'];
|
||||
|
||||
const messages = {
|
||||
|
@ -2,24 +2,22 @@ const ghostBookshelf = require('./base');
|
||||
const _ = require('lodash');
|
||||
const errors = require('@tryghost/errors');
|
||||
const tpl = require('@tryghost/tpl');
|
||||
const {ValidationError} = require('@tryghost/errors');
|
||||
|
||||
const messages = {
|
||||
emptyComment: 'The body of a comment cannot be empty',
|
||||
commentNotFound: 'Comment could not be found',
|
||||
notYourCommentToEdit: 'You may only edit your own comments',
|
||||
notYourCommentToDestroy: 'You may only delete your own comments'
|
||||
};
|
||||
|
||||
function escapeRegex(string) {
|
||||
return string.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove empty paragraps from the start and end
|
||||
* + remove duplicate empty paragrapsh (only one empty line allowed)
|
||||
*/
|
||||
function trimParagraphs(str) {
|
||||
const paragraph = '<p></p>';
|
||||
const escapedParagraph = escapeRegex(paragraph);
|
||||
const escapedParagraph = '<p>\\s*?</p>';
|
||||
|
||||
const startReg = new RegExp('^(' + escapedParagraph + ')+');
|
||||
const endReg = new RegExp('(' + escapedParagraph + ')+$');
|
||||
@ -67,7 +65,7 @@ const Comment = ghostBookshelf.Model.extend({
|
||||
if (this.hasChanged('html')) {
|
||||
const sanitizeHtml = require('sanitize-html');
|
||||
|
||||
this.set('html', trimParagraphs(
|
||||
const html = trimParagraphs(
|
||||
sanitizeHtml(this.get('html'), {
|
||||
allowedTags: ['p', 'br', 'a', 'blockquote'],
|
||||
allowedAttributes: {
|
||||
@ -82,7 +80,16 @@ const Comment = ghostBookshelf.Model.extend({
|
||||
})
|
||||
}
|
||||
})
|
||||
));
|
||||
).trim();
|
||||
|
||||
console.log(html);
|
||||
|
||||
if (html.length === 0) {
|
||||
throw new ValidationError({
|
||||
message: tpl(messages.emptyComment)
|
||||
});
|
||||
}
|
||||
this.set('html', html);
|
||||
}
|
||||
},
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user