FEATURE: Allow staffs to tag PMs

This commit is contained in:
Vinoth Kannan
2018-02-14 02:16:25 +05:30
parent d525a644d2
commit 84ce1acfef
30 changed files with 163 additions and 141 deletions

View File

@@ -4,10 +4,10 @@ module DiscourseTagging
TAGS_FILTER_REGEXP = /[\/\?#\[\]@!\$&'\(\)\*\+,;=\.%\\`^\s|\{\}"<>]+/ # /?#[]@!$&'()*+,;=.%\`^|{}"<>
def self.tag_topic_by_names(topic, guardian, tag_names_arg, append: false)
if SiteSetting.tagging_enabled
if can_tag?(topic)
tag_names = DiscourseTagging.tags_for_saving(tag_names_arg, guardian) || []
old_tag_names = topic.tags.map(&:name) || []
old_tag_names = topic.tags.pluck(:name) || []
new_tag_names = tag_names - old_tag_names
removed_tag_names = old_tag_names - tag_names

View File

@@ -129,6 +129,12 @@ class Guardian
alias :can_see_flags? :can_moderate?
alias :can_close? :can_moderate?
def can_tag?(obj)
return false unless obj && obj.is_a?(Topic)
obj.private_message? ? can_tag_pms? : can_tag_topics?
end
def can_send_activation_email?(user)
user && is_staff? && !SiteSetting.must_approve_users?
end

View File

@@ -5,7 +5,11 @@ module TagGuardian
end
def can_tag_topics?
user && user.has_trust_level?(SiteSetting.min_trust_level_to_tag_topics.to_i)
user && SiteSetting.tagging_enabled && user.has_trust_level?(SiteSetting.min_trust_level_to_tag_topics.to_i)
end
def can_tag_pms?
is_staff? && SiteSetting.tagging_enabled && SiteSetting.allow_staff_to_tag_in_pm
end
def can_admin_tags?

View File

@@ -269,6 +269,14 @@ class TopicQuery
create_list(:private_messages, {}, list)
end
def list_private_messages_tag(user)
list = private_messages_for(user, :all)
tag_id = Tag.where('name ilike ?', @options[:tags][0]).pluck(:id).first
list = list.joins("JOIN topic_tags tt ON tt.topic_id = topics.id AND
tt.tag_id = #{tag_id}")
create_list(:private_messages, {}, list)
end
def list_category_topic_ids(category)
query = default_results(category: category.id)
pinned_ids = query.where('pinned_at IS NOT NULL AND category_id = ?', category.id).limit(nil).order('pinned_at DESC').pluck(:id)