Show dismiss posts/topics buttons on category filtered lists

This commit is contained in:
cpradio 2014-10-22 18:31:19 -04:00
parent d3b268cd2c
commit 439f393d89
3 changed files with 18 additions and 7 deletions

View File

@ -85,7 +85,8 @@ var controllerOpts = {
if (selected.length > 0) { if (selected.length > 0) {
promise = Discourse.Topic.bulkOperation(selected, operation); promise = Discourse.Topic.bulkOperation(selected, operation);
} else { } else {
promise = Discourse.Topic.bulkOperationByFilter(this.get('filter'), operation); var category = this.get('category');
promise = Discourse.Topic.bulkOperationByFilter('unread', operation, category ? category.id : null);
} }
promise.then(function(result) { promise.then(function(result) {
if (result && result.topic_ids) { if (result && result.topic_ids) {
@ -105,8 +106,12 @@ var controllerOpts = {
return Discourse.TopicTrackingState.current(); return Discourse.TopicTrackingState.current();
}.property(), }.property(),
isFilterPage: function(filter, filterType) {
return filter.match(new RegExp(filterType + '$', 'gi')) ? true : false;
},
showDismissRead: function() { showDismissRead: function() {
return this.get('filter') === 'unread' && this.get('topics.length') > 0; return this.isFilterPage(this.get('filter'), 'unread') && this.get('topics.length') > 0;
}.property('filter', 'topics.length'), }.property('filter', 'topics.length'),
showResetNew: function() { showResetNew: function() {
@ -114,8 +119,8 @@ var controllerOpts = {
}.property('filter', 'topics.length'), }.property('filter', 'topics.length'),
showDismissAtTop: function() { showDismissAtTop: function() {
return (this.get('filter') === 'new' || return (this.isFilterPage(this.get('filter'), 'new') ||
this.get('filter') === 'unread') && this.isFilterPage(this.get('filter'), 'unread')) &&
this.get('topics.length') >= 30; this.get('topics.length') >= 30;
}.property('filter', 'topics.length'), }.property('filter', 'topics.length'),

View File

@ -452,10 +452,12 @@ Discourse.Topic.reopenClass({
}); });
}, },
bulkOperationByFilter: function(filter, operation) { bulkOperationByFilter: function(filter, operation, categoryId) {
var data = { filter: filter, operation: operation };
if (categoryId) data['categoryId'] = categoryId;
return Discourse.ajax("/topics/bulk", { return Discourse.ajax("/topics/bulk", {
type: 'PUT', type: 'PUT',
data: { filter: filter, operation: operation } data: data
}); });
}, },

View File

@ -359,7 +359,11 @@ class TopicsController < ApplicationController
topic_ids = params[:topic_ids].map {|t| t.to_i} topic_ids = params[:topic_ids].map {|t| t.to_i}
elsif params[:filter] == 'unread' elsif params[:filter] == 'unread'
tq = TopicQuery.new(current_user) tq = TopicQuery.new(current_user)
topic_ids = TopicQuery.unread_filter(tq.joined_topic_user).listable_topics.pluck(:id) if params[:categoryId]
topic_ids = TopicQuery.unread_filter(tq.joined_topic_user).listable_topics.where('category_id = ?', params[:categoryId]).pluck(:id)
else
topic_ids = TopicQuery.unread_filter(tq.joined_topic_user).listable_topics.pluck(:id)
end
else else
raise ActionController::ParameterMissing.new(:topic_ids) raise ActionController::ParameterMissing.new(:topic_ids)
end end