diff --git a/app/assets/javascripts/discourse/templates/topic.hbs b/app/assets/javascripts/discourse/templates/topic.hbs index ace64e6e75a..d8fc7fd7080 100644 --- a/app/assets/javascripts/discourse/templates/topic.hbs +++ b/app/assets/javascripts/discourse/templates/topic.hbs @@ -256,7 +256,7 @@ {{/if}} - {{#if currentUser.admin}} + {{#if currentUser.staff}}
  • {{#if model.isPrivateMessage}} {{d-button action="convertToPublicTopic" icon="comment" label="topic.actions.make_public"}} diff --git a/lib/guardian/topic_guardian.rb b/lib/guardian/topic_guardian.rb index 04c81a894af..d766af64e85 100644 --- a/lib/guardian/topic_guardian.rb +++ b/lib/guardian/topic_guardian.rb @@ -59,7 +59,9 @@ module TopicGuardian end def can_convert_topic?(topic) - topic && !topic.trashed? && is_admin? + return false if topic && topic.trashed? + return true if is_admin? + is_moderator? && can_create_post?(topic) end def can_reply_as_new_topic?(topic) diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 969067404ef..13fbd297add 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -881,8 +881,12 @@ describe Guardian do expect(Guardian.new.can_convert_topic?(topic)).to be_falsey end - it 'returns false when not admin' do - expect(Guardian.new(moderator).can_convert_topic?(topic)).to be_falsey + it 'returns false when not staff' do + expect(Guardian.new(trust_level_4).can_convert_topic?(topic)).to be_falsey + end + + it 'returns true when a moderator' do + expect(Guardian.new(moderator).can_convert_topic?(topic)).to be_truthy end it 'returns true when an admin' do