diff --git a/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js b/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js index 8eeb242def5..47d1c1049f2 100644 --- a/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js +++ b/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js @@ -27,7 +27,7 @@ Discourse.DiscoveryTopicsController = Discourse.DiscoveryController.extend({ this.send('loading'); Discourse.TopicList.find(filter).then(function(list) { - self.set('model', list); + self.setProperties({ model: list, selected: [] }); self.send('loadingComplete'); }); }, @@ -35,13 +35,32 @@ Discourse.DiscoveryTopicsController = Discourse.DiscoveryController.extend({ toggleBulkSelect: function() { this.toggleProperty('bulkSelectEnabled'); this.get('selected').clear(); + }, + + dismissRead: function() { + var self = this, + selected = this.get('selected'), + operation = { type: 'change_notification_level', + notification_level: Discourse.Topic.NotificationLevel.REGULAR }; + + if (selected.length > 0) { + Discourse.Topic.bulkOperation(selected, operation).then(function() { + self.send('refresh'); + }); + } else { + } } }, + topicTrackingState: function() { return Discourse.TopicTrackingState.current(); }.property(), + showDismissRead: function() { + return this.get('filter') === 'unread' && this.get('topics.length') > 0; + }.property('filter', 'topics.length'), + canBulkSelect: Em.computed.alias('currentUser.staff'), hasTopics: Em.computed.gt('topics.length', 0), showTable: Em.computed.or('hasTopics', 'topicTrackingState.hasIncoming'), diff --git a/app/assets/javascripts/discourse/routes/discovery_route_builders.js b/app/assets/javascripts/discourse/routes/discovery_route_builders.js index 53e7ac19f31..6e1194d22af 100644 --- a/app/assets/javascripts/discourse/routes/discovery_route_builders.js +++ b/app/assets/javascripts/discourse/routes/discovery_route_builders.js @@ -34,7 +34,12 @@ function buildTopicRoute(filter) { Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText})); } - this.controllerFor('discoveryTopics').setProperties({ model: model, category: null, period: period }); + this.controllerFor('discoveryTopics').setProperties({ + model: model, + category: null, + period: period, + selected: [], + }); // If there's a draft, open the create topic composer if (model.draft) { @@ -108,6 +113,7 @@ function buildCategoryRoute(filter, params) { model: topics, category: model, period: period, + selected: [], noSubcategories: params && !!params.no_subcategories }); diff --git a/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars b/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars index 9ab7faf4aa4..4eedd13a6c6 100644 --- a/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars +++ b/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars @@ -4,6 +4,10 @@ {{/if}} +{{#if showDismissRead}} + +{{/if}} +