From 3593f9ef67892699ed950acc6cd064e5778f073c Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Mon, 25 Nov 2019 13:48:09 -0300 Subject: [PATCH] FEATURE: Filter reviewables by assigned user (#58) --- .../assigned-to-filter.hbs | 16 ++++++++++++++ .../assigned-to-filter.js.es6 | 13 ++++++++++++ plugin.rb | 21 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.hbs create mode 100644 assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.js.es6 diff --git a/assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.hbs b/assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.hbs new file mode 100644 index 0000000..f0d83f4 --- /dev/null +++ b/assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.hbs @@ -0,0 +1,16 @@ +
+ + {{user-selector + single=true + fullWidthWrap=true + allowAny=false + group="staff" + groupMembersOf=allowedGroups + excludeCurrentUser=false + includeMentionableGroups=false + hasGroups=false + usernames=additionalFilters.assigned_to + placeholderKey=placeholderKey + autocomplete="off" + }} +
\ No newline at end of file diff --git a/assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.js.es6 b/assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.js.es6 new file mode 100644 index 0000000..a7a82a0 --- /dev/null +++ b/assets/javascripts/discourse-assign/connectors/above-review-filters/assigned-to-filter.js.es6 @@ -0,0 +1,13 @@ +export default { + shouldRender(args) { + return args.additionalFilters; + }, + + setupComponent(args, component) { + const groupIDs = component.siteSettings.assign_allowed_on_groups.split("|"); + const groupNames = this.site.groups + .filter(group => groupIDs.includes(group.id.toString())) + .map(group => group.name); + component.set("allowedGroups", groupNames); + } +}; diff --git a/plugin.rb b/plugin.rb index 425d733..ba558f1 100644 --- a/plugin.rb +++ b/plugin.rb @@ -268,6 +268,27 @@ after_initialize do id && id.to_i rescue nil end + # TODO: Remove this when 2.4 becomes the new stable + if self.respond_to?(:add_custom_reviewable_filter) + add_custom_reviewable_filter( + [ + :assigned_to, + Proc.new do |results, value| + results.joins(<<~SQL + INNER JOIN posts p ON p.id = target_id + INNER JOIN topics t ON t.id = p.topic_id + INNER JOIN topic_custom_fields tcf ON tcf.topic_id = t.id + INNER JOIN users u ON u.id = tcf.value::integer + SQL + ) + .where(target_type: Post.name) + .where('tcf.name = ?', TopicAssigner::ASSIGNED_TO_ID) + .where('u.username = ?', value) + end + ] + ) + end + on(:post_created) do |post| ::TopicAssigner.auto_assign(post, force: true) end