From 5dbb3035d4a56ad9f1d304a6fe559f6a9b59edf5 Mon Sep 17 00:00:00 2001 From: pmusaraj Date: Mon, 19 Sep 2016 14:07:15 -0400 Subject: [PATCH 1/2] add "Approve new topics unless user level" setting --- config/locales/server.en.yml | 1 + config/site_settings.yml | 3 +++ lib/new_post_manager.rb | 1 + 3 files changed, 5 insertions(+) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 96c5facc90..b205c482ca 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1353,6 +1353,7 @@ en: approve_post_count: "The amount of posts from a new or basic user that must be approved" approve_unless_trust_level: "Posts for users below this trust level must be approved" + approve_new_topics_unless_trust_level: "New topics for users below this trust level must be approved" notify_about_queued_posts_after: "If there are posts that have been waiting to be reviewed for more than this many hours, an email will be sent to the contact_email. Set to 0 to disable these emails." auto_close_messages_post_count: "Maximum number of posts allowed in a message before it is automatically closed (0 to disable)" auto_close_topics_post_count: "Maximum number of posts allowed in a topic before it is automatically closed (0 to disable)" diff --git a/config/site_settings.yml b/config/site_settings.yml index 25f92abde7..067933349c 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -544,6 +544,9 @@ posting: approve_unless_trust_level: default: 0 enum: 'TrustLevelSetting' + approve_new_topics_unless_trust_level: + default: 0 + enum: 'TrustLevelSetting' notify_about_queued_posts_after: default: 24 min: 0 diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb index 9d8c570fa3..026f787573 100644 --- a/lib/new_post_manager.rb +++ b/lib/new_post_manager.rb @@ -73,6 +73,7 @@ class NewPostManager (user.trust_level <= TrustLevel.levels[:basic] && user.post_count < SiteSetting.approve_post_count) || (user.trust_level < SiteSetting.approve_unless_trust_level.to_i) || + (manager.args[:title].present? && user.trust_level < SiteSetting.approve_new_topics_unless_trust_level.to_i) || is_fast_typer?(manager) || matches_auto_block_regex?(manager) end From 03443889241e3b9ee8846c91199e486d3da58aa0 Mon Sep 17 00:00:00 2001 From: pmusaraj Date: Thu, 22 Sep 2016 14:51:36 -0400 Subject: [PATCH 2/2] added tests and enabled queue when new setting is > 0 --- lib/new_post_manager.rb | 1 + spec/components/new_post_manager_spec.rb | 25 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb index 026f787573..27aebae663 100644 --- a/lib/new_post_manager.rb +++ b/lib/new_post_manager.rb @@ -115,6 +115,7 @@ class NewPostManager def self.queue_enabled? SiteSetting.approve_post_count > 0 || SiteSetting.approve_unless_trust_level.to_i > 0 || + SiteSetting.approve_new_topics_unless_trust_level.to_i > 0 || handlers.size > 1 end diff --git a/spec/components/new_post_manager_spec.rb b/spec/components/new_post_manager_spec.rb index fb116adbf7..3b38304d17 100644 --- a/spec/components/new_post_manager_spec.rb +++ b/spec/components/new_post_manager_spec.rb @@ -115,6 +115,31 @@ describe NewPostManager do end end + context 'with a high trust level setting for new topics but post responds to existing topic' do + before do + SiteSetting.approve_new_topics_unless_trust_level = 4 + end + it "doesn't return a result action" do + result = NewPostManager.default_handler(manager) + expect(result).to eq(nil) + end + end + + end + + context "new topic handler" do + let(:manager) { NewPostManager.new(topic.user, raw: 'this is new topic content', title: 'new topic title') } + context 'with a high trust level setting for new topics' do + before do + SiteSetting.approve_new_topics_unless_trust_level = 4 + end + it "will return an enqueue result" do + result = NewPostManager.default_handler(manager) + expect(NewPostManager.queue_enabled?).to eq(true) + expect(result.action).to eq(:enqueued) + end + end + end context "extensibility priority" do