diff --git a/assets/javascripts/discourse-assign/controllers/group-assigned-show.js.es6 b/assets/javascripts/discourse-assign/controllers/group-assigned-show.js.es6 index 6566d07..f32e68e 100644 --- a/assets/javascripts/discourse-assign/controllers/group-assigned-show.js.es6 +++ b/assets/javascripts/discourse-assign/controllers/group-assigned-show.js.es6 @@ -9,20 +9,20 @@ export default UserTopicsList.extend({ taskActions: Ember.inject.service(), order: "", ascending: false, - q: "", + search: "", bulkSelectEnabled: false, selected: [], canBulkSelect: alias("currentUser.staff"), - queryParams: ["order", "ascending", "q"], + queryParams: ["order", "ascending", "search"], - @discourseComputed("q") - searchTerm(q) { - return q; + @discourseComputed("search") + searchTerm(search) { + return search; }, _setSearchTerm(searchTerm) { - this.set("q", searchTerm); + this.set("search", searchTerm); this.refreshModel(); }, @@ -34,7 +34,7 @@ export default UserTopicsList.extend({ params: { order: this.order, ascending: this.ascending, - q: this.q, + search: this.search, }, }) .then((result) => this.set("model", result)) diff --git a/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 b/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 index 8493999..a30a4c8 100644 --- a/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 +++ b/assets/javascripts/discourse-assign/controllers/group-assigned.js.es6 @@ -24,9 +24,9 @@ export default Controller.extend({ return ascending || false; }, - @discourseComputed("router.currentRoute.queryParams.q") - q(q) { - return q || ""; + @discourseComputed("router.currentRoute.queryParams.search") + search(search) { + return search || ""; }, @discourseComputed("site.mobileView") diff --git a/assets/javascripts/discourse-assign/controllers/user-activity-assigned.js.es6 b/assets/javascripts/discourse-assign/controllers/user-activity-assigned.js.es6 index aafa582..306adf1 100644 --- a/assets/javascripts/discourse-assign/controllers/user-activity-assigned.js.es6 +++ b/assets/javascripts/discourse-assign/controllers/user-activity-assigned.js.es6 @@ -6,18 +6,18 @@ import { INPUT_DELAY } from "discourse-common/config/environment"; export default UserTopicsList.extend({ user: Ember.inject.controller(), taskActions: Ember.inject.service(), - queryParams: ["order", "ascending", "q"], + queryParams: ["order", "ascending", "search"], order: "", ascending: false, - q: "", + search: "", - @discourseComputed("q") - searchTerm(q) { - return q; + @discourseComputed("search") + searchTerm(search) { + return search; }, _setSearchTerm(searchTerm) { - this.set("q", searchTerm); + this.set("search", searchTerm); this.refreshModel(); }, @@ -29,7 +29,7 @@ export default UserTopicsList.extend({ params: { order: this.order, ascending: this.ascending, - q: this.q, + search: this.search, }, }) .then((result) => this.set("model", result)) diff --git a/assets/javascripts/discourse-assign/routes/group-assigned-show.js.es6 b/assets/javascripts/discourse-assign/routes/group-assigned-show.js.es6 index 6cd13c8..7e6acde 100644 --- a/assets/javascripts/discourse-assign/routes/group-assigned-show.js.es6 +++ b/assets/javascripts/discourse-assign/routes/group-assigned-show.js.es6 @@ -28,7 +28,7 @@ export default DiscourseRoute.extend({ params: { order: params.order, ascending: params.ascending, - q: params.q, + search: params.search, }, }); }, @@ -36,7 +36,7 @@ export default DiscourseRoute.extend({ setupController(controller, model) { controller.setProperties({ model, - searchTerm: this.currentModel.params.q, + searchTerm: this.currentModel.params.search, }); }, diff --git a/assets/javascripts/discourse-assign/routes/user-activity-assigned.js.es6 b/assets/javascripts/discourse-assign/routes/user-activity-assigned.js.es6 index 1356b4e..07bc5dd 100644 --- a/assets/javascripts/discourse-assign/routes/user-activity-assigned.js.es6 +++ b/assets/javascripts/discourse-assign/routes/user-activity-assigned.js.es6 @@ -15,7 +15,7 @@ export default UserTopicListRoute.extend({ exclude_category_ids: [-1], order: params.order, ascending: params.ascending, - q: params.q, + search: params.search, }, }); }, diff --git a/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs b/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs index 672adee..ccaa9cf 100644 --- a/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs +++ b/assets/javascripts/discourse/templates/components/group-assigned-filter.hbs @@ -1,5 +1,5 @@ {{#if show-avatar}} - {{#link-to "group.assigned.show" filter.username_lower (query-params order=order ascending=ascending q=q)}} + {{#link-to "group.assigned.show" filter.username_lower (query-params order=order ascending=ascending search=search)}}
{{avatar filter imageSize="large"}}
@@ -14,7 +14,7 @@ {{/link-to}} {{else}} - {{#link-to "group.assigned.show" filter (query-params order=order ascending=ascending q=q)}} + {{#link-to "group.assigned.show" filter (query-params order=order ascending=ascending search=search)}}
{{i18n "discourse_assign.group_everyone"}}
diff --git a/assets/javascripts/discourse/templates/group/assigned.hbs b/assets/javascripts/discourse/templates/group/assigned.hbs index 255ff11..7536ed4 100644 --- a/assets/javascripts/discourse/templates/group/assigned.hbs +++ b/assets/javascripts/discourse/templates/group/assigned.hbs @@ -17,7 +17,7 @@ filter="everyone" routeType=route_type assignmentCount=group.assignment_count - q=q + search=search ascending=ascending order=order}} {{#each members as |member|}} @@ -25,7 +25,7 @@ show-avatar=true filter=member routeType=route_type - q=q + search=search ascending=ascending order=order}} {{/each}} diff --git a/plugin.rb b/plugin.rb index f13fda2..7a48c21 100644 --- a/plugin.rb +++ b/plugin.rb @@ -20,8 +20,8 @@ load File.expand_path('../lib/discourse_assign/helpers.rb', __FILE__) Discourse::Application.routes.append do mount ::DiscourseAssign::Engine, at: "/assign" get "topics/private-messages-assigned/:username" => "list#private_messages_assigned", as: "topics_private_messages_assigned", constraints: { username: ::RouteFormat.username } - get "/topics/messages-assigned/:username" => "list#messages_assigned", constraints: { username: ::RouteFormat.username } - get "/topics/group-topics-assigned/:groupname" => "list#group_topics_assigned", constraints: { username: ::RouteFormat.username } + get "/topics/messages-assigned/:username" => "list#messages_assigned", constraints: { username: ::RouteFormat.username }, as: "messages_assigned" + get "/topics/group-topics-assigned/:groupname" => "list#group_topics_assigned", constraints: { username: ::RouteFormat.username }, as: "group_topics_assigned" get "/g/:id/assigned" => "groups#index" get "/g/:id/assigned/:route_type" => "groups#index" end @@ -233,92 +233,46 @@ after_initialize do end add_to_class(:topic_query, :list_messages_assigned) do |user| - secure = Topic.listable_topics.secured(@guardian).or(Topic.private_messages_for_user(@user)) - list = joined_topic_user.where(" + list = default_results(include_pms: true) + + list = list.where(" topics.id IN ( SELECT topic_id FROM topic_custom_fields WHERE name = 'assigned_to_id' AND value = ?) ", user.id.to_s) - .includes(:tags) - - list = apply_ordering(list, options) - - list = list.merge(secure) - - if options[:q].present? - term = options[:q] - ts_query = Search.ts_query(term: term) - - list = list - .joins("LEFT JOIN topic_search_data ON topic_search_data.topic_id=topics.id") - .where( - "#{ts_query} @@ topic_search_data.search_data" - ) - end - - list = list.offset(per_page_setting * options[:page]) - .limit(per_page_setting) create_list(:assigned, { unordered: true }, list) end add_to_class(:list_controller, :messages_assigned) do - page = (params[:page].to_i || 0).to_i - user = User.find_by_username(params[:username]) raise Discourse::NotFound unless user raise Discourse::InvalidAccess unless current_user.can_assign? list_opts = build_topic_list_options - list_opts[:page] = page - list_opts[:ascending] = params[:ascending] - list_opts[:order] = params[:order] - list_opts[:q] = params[:q] if params[:q] - list = generate_list_for("messages_assigned", user, list_opts) - more_topics_url = "/topics/messages-assigned/#{params[:username]}.json?page=#{page + 1}" - more_topics_url += "&ascending=#{params[:ascending]}&order=#{params[:order]}" if params[:order] + list.more_topics_url = construct_url_with(:next, list_opts) + list.prev_topics_url = construct_url_with(:prev, list_opts) - list.more_topics_url = more_topics_url respond_with_list(list) end add_to_class(:topic_query, :list_group_topics_assigned) do |group| - secure = Topic.listable_topics.secured(@guardian).or(Topic.private_messages_for_user(@user)) - list = joined_topic_user.where(" + list = default_results(include_pms: true) + + list = list.where(" topics.id IN ( SELECT topic_id FROM topic_custom_fields WHERE name = 'assigned_to_id' AND value IN (SELECT user_id::varchar(255) from group_users where group_id = ?)) ", group.id.to_s) - .includes(:tags) - - list = apply_ordering(list, options) - - list = list.merge(secure) - - if options[:q].present? - term = options[:q] - ts_query = Search.ts_query(term: term) - - list = list - .joins("LEFT JOIN topic_search_data ON topic_search_data.topic_id=topics.id") - .where( - "#{ts_query} @@ topic_search_data.search_data" - ) - end - - list = list.offset(per_page_setting * options[:page]) - .limit(per_page_setting) create_list(:assigned, { unordered: true }, list) end add_to_class(:list_controller, :group_topics_assigned) do - page = (params[:page].to_i || 0).to_i - group = Group.find_by("name = ?", params[:groupname]) guardian.ensure_can_see_group_members!(group) @@ -327,17 +281,11 @@ after_initialize do raise Discourse::InvalidAccess unless group.can_show_assigned_tab? list_opts = build_topic_list_options - list_opts[:page] = page - list_opts[:ascending] = params[:ascending] - list_opts[:order] = params[:order] - list_opts[:q] = params[:q] if params[:q] - list = generate_list_for("group_topics_assigned", group, list_opts) - more_topics_url = "/topics/group-topics-assigned/#{params[:groupname]}.json?page=#{page + 1}" - more_topics_url += "&ascending=#{params[:ascending]}&order=#{params[:order]}" if params[:order] + list.more_topics_url = construct_url_with(:next, list_opts) + list.prev_topics_url = construct_url_with(:prev, list_opts) - list.more_topics_url = more_topics_url respond_with_list(list) end diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index 413af9c..b95c84f 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -228,13 +228,13 @@ describe ListController do topic2.save! topic3.save! - get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { q: 'Testing' } + get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { search: 'Testing' } expect(JSON.parse(response.body)['topic_list']['topics'].map { |t| t['id'] }).to match_array([topic1.id, topic2.id, topic3.id]) - get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { q: 'RSpec' } + get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { search: 'RSpec' } expect(JSON.parse(response.body)['topic_list']['topics'].map { |t| t['id'] }).to match_array([topic2.id]) - get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { q: 'love' } + get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { search: 'love' } expect(JSON.parse(response.body)['topic_list']['topics'].map { |t| t['id'] }).to match_array([topic1.id]) end @@ -247,10 +247,10 @@ describe ListController do topic2.save! topic3.save! - get "/topics/messages-assigned/#{user.username}.json", params: { q: 'Testing' } + get "/topics/messages-assigned/#{user.username}.json", params: { search: 'Testing' } expect(JSON.parse(response.body)['topic_list']['topics'].map { |t| t['id'] }).to match_array([topic1.id, topic3.id]) - get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { q: 'love' } + get "/topics/group-topics-assigned/#{get_assigned_allowed_group_name}.json", params: { search: 'love' } expect(JSON.parse(response.body)['topic_list']['topics'].map { |t| t['id'] }).to match_array([topic1.id]) end end