diff --git a/app/assets/javascripts/admin/controllers/admin_logs_staff_action_logs_controller.js b/app/assets/javascripts/admin/controllers/admin_logs_staff_action_logs_controller.js index ddf94c61b..e47160c74 100644 --- a/app/assets/javascripts/admin/controllers/admin_logs_staff_action_logs_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_logs_staff_action_logs_controller.js @@ -18,7 +18,7 @@ Discourse.AdminLogsStaffActionLogsController = Ember.ArrayController.extend(Disc self.set('content', result); self.set('loading', false); }); - }.observes('filters.action_name', 'filters.staff_user', 'filters.target_user'), + }.observes('filters.action_name', 'filters.staff_user', 'filters.target_user', 'filters.subject'), toggleFullDetails: function(target) { target.set('showFullDetails', !target.get('showFullDetails')); @@ -26,7 +26,7 @@ Discourse.AdminLogsStaffActionLogsController = Ember.ArrayController.extend(Disc filtersExists: function() { return (_.size(this.get('filters')) > 0); - }.property('filters.action_name', 'filters.staff_user', 'filters.target_user'), + }.property('filters.action_name', 'filters.staff_user', 'filters.target_user', 'filters.subject'), clearFilter: function(key) { delete this.get('filters')[key]; @@ -55,5 +55,9 @@ Discourse.AdminLogsStaffActionLogsController = Ember.ArrayController.extend(Disc filterByTargetUser: function(target_user) { this.set('filters.target_user', target_user.username); + }, + + filterBySubject: function(subject) { + this.set('filters.subject', subject); } }); diff --git a/app/assets/javascripts/admin/templates/logs/staff_action_logs.js.handlebars b/app/assets/javascripts/admin/templates/logs/staff_action_logs.js.handlebars index a034650a8..f4c787b02 100644 --- a/app/assets/javascripts/admin/templates/logs/staff_action_logs.js.handlebars +++ b/app/assets/javascripts/admin/templates/logs/staff_action_logs.js.handlebars @@ -20,6 +20,12 @@ <i class="icon icon-remove-sign"></i> </a> {{/if}} + {{#if filters.subject}} + <a {{action clearFilter "subject"}} class="filter"> + <span class="label">{{i18n admin.logs.staff_actions.subject}}</span>: {{filters.subject}} + <i class="icon icon-remove-sign"></i> + </a> + {{/if}} </div> <div class='table staff-actions'> diff --git a/app/assets/javascripts/admin/templates/logs/staff_action_logs_list_item.js.handlebars b/app/assets/javascripts/admin/templates/logs/staff_action_logs_list_item.js.handlebars index c7eda988e..3da2168aa 100644 --- a/app/assets/javascripts/admin/templates/logs/staff_action_logs_list_item.js.handlebars +++ b/app/assets/javascripts/admin/templates/logs/staff_action_logs_list_item.js.handlebars @@ -11,7 +11,7 @@ <a {{action filterByTargetUser target_user}}>{{target_user.username}}</a> {{/if}} {{#if subject}} - <span {{bindAttr title="subject"}}>{{subject}}</span> + <a {{action filterBySubject subject}} {{bindAttr title="subject"}}>{{subject}}</a> {{/if}} </div> <div class="col value created_at">{{unboundAgeWithTooltip created_at}}</div> diff --git a/app/controllers/admin/staff_action_logs_controller.rb b/app/controllers/admin/staff_action_logs_controller.rb index c31a03d8f..c6e8bab09 100644 --- a/app/controllers/admin/staff_action_logs_controller.rb +++ b/app/controllers/admin/staff_action_logs_controller.rb @@ -1,7 +1,7 @@ class Admin::StaffActionLogsController < Admin::AdminController def index - staff_action_logs = StaffActionLog.with_filters(params.slice(:action_name, :staff_user, :target_user)).limit(200).order('id DESC').includes(:staff_user, :target_user).to_a + staff_action_logs = StaffActionLog.with_filters(params.slice(:action_name, :staff_user, :target_user, :subject)).limit(200).order('id DESC').includes(:staff_user, :target_user).to_a render_serialized(staff_action_logs, StaffActionLogSerializer) end diff --git a/app/models/staff_action_log.rb b/app/models/staff_action_log.rb index 385184fe8..1a9ff9bee 100644 --- a/app/models/staff_action_log.rb +++ b/app/models/staff_action_log.rb @@ -22,6 +22,7 @@ class StaffActionLog < ActiveRecord::Base query = query.where("#{key.to_s}_id = ?", obj_id) end end + query = query.where("subject = ?", filters[:subject]) if filters[:subject] query end end diff --git a/db/migrate/20130820174431_add_subject_index_to_staff_action_logs.rb b/db/migrate/20130820174431_add_subject_index_to_staff_action_logs.rb new file mode 100644 index 000000000..24471d4c0 --- /dev/null +++ b/db/migrate/20130820174431_add_subject_index_to_staff_action_logs.rb @@ -0,0 +1,5 @@ +class AddSubjectIndexToStaffActionLogs < ActiveRecord::Migration + def change + add_index :staff_action_logs, [:subject, :id] + end +end