mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-12-18 03:25:31 -05:00
FIX: Admins should be able to post short titles. This is especially important for when syndicating
a blog via the wordpress plugin into Discourse.
This commit is contained in:
parent
e076661759
commit
023d18cab2
3 changed files with 32 additions and 9 deletions
|
@ -185,8 +185,8 @@ class PostCreator
|
||||||
|
|
||||||
def setup_post
|
def setup_post
|
||||||
post = @topic.posts.new(raw: @opts[:raw],
|
post = @topic.posts.new(raw: @opts[:raw],
|
||||||
user: @user,
|
user: @user,
|
||||||
reply_to_post_number: @opts[:reply_to_post_number])
|
reply_to_post_number: @opts[:reply_to_post_number])
|
||||||
|
|
||||||
# Attributes we pass through to the post instance if present
|
# Attributes we pass through to the post instance if present
|
||||||
[:post_type, :no_bump, :cooking_options, :image_sizes, :acting_user, :invalidate_oneboxes].each do |a|
|
[:post_type, :no_bump, :cooking_options, :image_sizes, :acting_user, :invalidate_oneboxes].each do |a|
|
||||||
|
|
|
@ -1,12 +1,21 @@
|
||||||
class TopicTitleLengthValidator < ActiveModel::EachValidator
|
class TopicTitleLengthValidator < ActiveModel::EachValidator
|
||||||
|
|
||||||
def validate_each(record, attribute, value)
|
def validate_each(record, attribute, value)
|
||||||
if record.private_message?
|
title_validator(record).validate_each(record, attribute, value)
|
||||||
private_message_title_validator = ActiveModel::Validations::LengthValidator.new({attributes: :title, in: SiteSetting.private_message_title_length, allow_blank: true})
|
|
||||||
private_message_title_validator.validate_each(record, attribute, value)
|
|
||||||
else
|
|
||||||
topic_title_validator = ActiveModel::Validations::LengthValidator.new({attributes: :title, in: SiteSetting.topic_title_length, allow_blank: true})
|
|
||||||
topic_title_validator.validate_each(record, attribute, value)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def title_validator(record)
|
||||||
|
length_range = if record.user.try(:admin?)
|
||||||
|
1..SiteSetting.max_topic_title_length
|
||||||
|
elsif record.private_message?
|
||||||
|
SiteSetting.private_message_title_length
|
||||||
|
else
|
||||||
|
SiteSetting.topic_title_length
|
||||||
|
end
|
||||||
|
|
||||||
|
ActiveModel::Validations::LengthValidator.new({attributes: :title, in: length_range, allow_blank: true})
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -69,6 +69,20 @@ describe Topic do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'admin topic title' do
|
||||||
|
let(:admin) { Fabricate(:admin) }
|
||||||
|
|
||||||
|
it 'allows really short titles' do
|
||||||
|
pm = Fabricate.build(:private_message_topic, user: admin, title: 'a')
|
||||||
|
expect(pm).to be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'but not blank' do
|
||||||
|
pm = Fabricate.build(:private_message_topic, title: '')
|
||||||
|
expect(pm).to_not be_valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'topic title uniqueness' do
|
context 'topic title uniqueness' do
|
||||||
|
|
||||||
let!(:topic) { Fabricate(:topic) }
|
let!(:topic) { Fabricate(:topic) }
|
||||||
|
|
Loading…
Reference in a new issue