From 6ee266c7ee81ceffad6449ea0977baef340a190d Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 29 Jan 2014 13:35:24 -0500 Subject: [PATCH] Modal for performing a bulk operation --- .../controllers/topic_bulk_actions_controller.js | 14 ++++++++++++++ .../discourse/routes/discovery_route.js | 5 +++++ .../templates/discovery/topics.js.handlebars | 6 ++++++ .../modal/topic_bulk_actions.js.handlebars | 7 +++++++ .../discourse/views/topic_bulk_actions_view.js | 12 ++++++++++++ app/assets/stylesheets/desktop/modal.scss | 5 +++++ app/assets/stylesheets/desktop/topic-list.scss | 11 +++++++++-- config/locales/client.en.yml | 4 ++++ 8 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/discourse/controllers/topic_bulk_actions_controller.js create mode 100644 app/assets/javascripts/discourse/templates/modal/topic_bulk_actions.js.handlebars create mode 100644 app/assets/javascripts/discourse/views/topic_bulk_actions_view.js diff --git a/app/assets/javascripts/discourse/controllers/topic_bulk_actions_controller.js b/app/assets/javascripts/discourse/controllers/topic_bulk_actions_controller.js new file mode 100644 index 0000000000..7d24571b0b --- /dev/null +++ b/app/assets/javascripts/discourse/controllers/topic_bulk_actions_controller.js @@ -0,0 +1,14 @@ +/** + Modal for performing bulk actions on topics + + @class TopicBulkActionsController + @extends Ember.ArrayController + @namespace Discourse + @uses Discourse.ModalFunctionality + @module Discourse +**/ +Discourse.TopicBulkActionsController = Ember.ArrayController.extend(Discourse.ModalFunctionality, { + onShow: function() { + this.set('controllers.modal.modalClass', 'topic-bulk-actions-modal'); + } +}); diff --git a/app/assets/javascripts/discourse/routes/discovery_route.js b/app/assets/javascripts/discourse/routes/discovery_route.js index dbedf8d3dd..6fbf9e8d83 100644 --- a/app/assets/javascripts/discourse/routes/discovery_route.js +++ b/app/assets/javascripts/discourse/routes/discovery_route.js @@ -35,6 +35,11 @@ Discourse.DiscoveryRoute = Discourse.Route.extend({ draftKey: topicsController.get('draft_key'), draftSequence: topicsController.get('draft_sequence') }); + }, + + showBulkActions: function() { + var selected = this.controllerFor('discoveryTopics').get('selected'); + Discourse.Route.showModal(this, 'topicBulkActions', selected); } } }); diff --git a/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars b/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars index d6f217f727..c23fcd0494 100644 --- a/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars +++ b/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars @@ -1,3 +1,9 @@ +{{#if selected}} +
+ +
+{{/if}} +
{{#if showTable}} diff --git a/app/assets/javascripts/discourse/templates/modal/topic_bulk_actions.js.handlebars b/app/assets/javascripts/discourse/templates/modal/topic_bulk_actions.js.handlebars new file mode 100644 index 0000000000..e0368634dc --- /dev/null +++ b/app/assets/javascripts/discourse/templates/modal/topic_bulk_actions.js.handlebars @@ -0,0 +1,7 @@ + diff --git a/app/assets/javascripts/discourse/views/topic_bulk_actions_view.js b/app/assets/javascripts/discourse/views/topic_bulk_actions_view.js new file mode 100644 index 0000000000..53eee4ba5b --- /dev/null +++ b/app/assets/javascripts/discourse/views/topic_bulk_actions_view.js @@ -0,0 +1,12 @@ +/** + Handles the view for the topic bulk actions modal + + @class TopicBulkActionsView + @extends Discourse.ModalBodyView + @namespace Discourse + @module Discourse +**/ +Discourse.TopicBulkActionsView = Discourse.ModalBodyView.extend({ + templateName: 'modal/topic_bulk_actions', + title: I18n.t('topics.bulk_actions') +}); diff --git a/app/assets/stylesheets/desktop/modal.scss b/app/assets/stylesheets/desktop/modal.scss index d0ecee0c6f..4c7ec965ca 100644 --- a/app/assets/stylesheets/desktop/modal.scss +++ b/app/assets/stylesheets/desktop/modal.scss @@ -247,6 +247,11 @@ } } +.topic-bulk-actions-modal { + p { + margin-top: 0; + } +} .tabbed-modal { .modal-body { position: relative; diff --git a/app/assets/stylesheets/desktop/topic-list.scss b/app/assets/stylesheets/desktop/topic-list.scss index 150400ceb6..d8098c18c3 100644 --- a/app/assets/stylesheets/desktop/topic-list.scss +++ b/app/assets/stylesheets/desktop/topic-list.scss @@ -532,8 +532,6 @@ ol.category-breadcrumb { text-align: center; margin-right: 20px; - - } @@ -542,3 +540,12 @@ ol.category-breadcrumb { } } +#bulk-select { + position: fixed; + right: 20px; + padding: 5px; + background-color: white; + button { + padding: 3px 0 3px 6px; + } +} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 57d62d4533..2c99efe14f 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -601,6 +601,10 @@ en: topics: toggle_bulk_select: "toggle bulk selection of topics" + bulk_actions: "Bulk Actions" + selected: + one: "You have selected 1 topic." + other: "You have selected {{count}} topics." none: starred: "You haven't starred any topics yet. To star a topic, click or tap the star next to the title."