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}} +
{{#if showTable}} diff --git a/app/assets/stylesheets/desktop/topic-list.scss b/app/assets/stylesheets/desktop/topic-list.scss index 4c5be3d3236..432c2a67785 100644 --- a/app/assets/stylesheets/desktop/topic-list.scss +++ b/app/assets/stylesheets/desktop/topic-list.scss @@ -546,3 +546,8 @@ ol.category-breadcrumb { padding: 3px 0 3px 6px; } } + +button.dismiss-read { + float: right; + margin-bottom: 5px; +} diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index a5d44fb48c1..da3d43e6277 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -2,9 +2,9 @@ require_dependency 'site_serializer' class SiteController < ApplicationController - def index + def index @site = Site.new(guardian) render_serialized(@site, SiteSerializer) end - -end \ No newline at end of file + +end diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 03db539f82d..0ce3bbc3490 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -628,6 +628,7 @@ en: topics: bulk: + dismiss_read: "Dismiss Read" toggle: "toggle bulk selection of topics" actions: "Bulk Actions" change_category: "Change Category"