From 98deb5ff418da1fb9b2b5b0fde11e8bee79e77e7 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Thu, 29 May 2014 14:15:56 -0400 Subject: [PATCH] Category notification settings dropdown: use common code with topic notification and pin/unpin dropdowns --- .../buttons/category_notifications_button.js | 73 +++---------------- .../views/buttons/dropdown_button_view.js | 10 +-- .../views/buttons/notifications_button.js | 69 ++++++++++-------- .../discourse/views/buttons/pinned_button.js | 11 ++- .../buttons/topic_notifications_button.js | 27 +++++++ .../views/topic_footer_buttons_view.js | 2 +- app/assets/javascripts/main_include.js | 1 + .../desktop/category-notification.scss | 39 ---------- .../stylesheets/desktop/topic-list.scss | 7 ++ app/assets/stylesheets/mobile/topic-list.scss | 4 + 10 files changed, 102 insertions(+), 141 deletions(-) create mode 100644 app/assets/javascripts/discourse/views/buttons/topic_notifications_button.js delete mode 100644 app/assets/stylesheets/desktop/category-notification.scss diff --git a/app/assets/javascripts/discourse/views/buttons/category_notifications_button.js b/app/assets/javascripts/discourse/views/buttons/category_notifications_button.js index 7586ea1c5e7..52954bb5070 100644 --- a/app/assets/javascripts/discourse/views/buttons/category_notifications_button.js +++ b/app/assets/javascripts/discourse/views/buttons/category_notifications_button.js @@ -6,68 +6,19 @@ @namespace Discourse @module Discourse **/ -Discourse.CategoryNotificationsButton = Discourse.View.extend({ - classNames: ['notification-options'], +Discourse.CategoryNotificationsButton = Discourse.NotificationsButton.extend({ + classNames: ['notification-options', 'category-notification-menu'], + buttonIncludesText: false, + longDescriptionBinding: null, category: Em.computed.alias('controller.model'), + target: Em.computed.alias('category'), hidden: Em.computed.alias('category.deleted'), - templateName: 'category_notification_dropdown', + notificationLevels: Discourse.Category.NotificationLevel, + notificationLevel: Em.computed.alias('category.notification_level'), + i18nPrefix: 'category.notifications', + i18nPostfix: '', - watchingClasses: 'fa fa-exclamation-circle watching', - trackingClasses: 'fa fa-circle tracking', - mutedClasses: 'fa fa-times-circle muted', - regularClasses: 'fa fa-circle-o regular', - - - - init: function() { - this.display(); - this._super(); - }, - - dropDownContent: function() { - var contents = []; - - _.each([ - ['WATCHING', 'watching', this.watchingClasses], - ['TRACKING', 'tracking', this.trackingClasses], - ['REGULAR', 'regular', ''], - ['MUTED', 'muted', this.mutedClasses] - ], function(pair) { - - contents.push({ - id: Discourse.Category.NotificationLevel[pair[0]], - title: I18n.t('category.notifications.' + pair[1] + '.title'), - description: I18n.t('category.notifications.' + pair[1] + '.description'), - styleClasses: pair[2] - } - - ); - }); - - return contents; - }.property(), - - // displayed Button - display: function() { - var icon = ""; - switch (this.get('category').notification_level) { - case Discourse.Category.NotificationLevel.WATCHING: - icon = this.watchingClasses; - break; - case Discourse.Category.NotificationLevel.TRACKING: - icon = this.trackingClasses; - break; - case Discourse.Category.NotificationLevel.MUTED: - icon = this.mutedClasses; - break; - default: - icon = this.regularClasses; - break; - } - this.set("icon", icon); - }, - - changeDisplay: function() { - this.display(); - }.observes('category.notification_level') + clicked: function(id) { + this.get('category').setNotification(id); + } }); diff --git a/app/assets/javascripts/discourse/views/buttons/dropdown_button_view.js b/app/assets/javascripts/discourse/views/buttons/dropdown_button_view.js index 9fcf28cf663..38a382204e8 100644 --- a/app/assets/javascripts/discourse/views/buttons/dropdown_button_view.js +++ b/app/assets/javascripts/discourse/views/buttons/dropdown_button_view.js @@ -29,7 +29,6 @@ Discourse.DropdownButtonView = Discourse.View.extend({ render: function(buffer) { var self = this; - var descriptionKey = self.get('descriptionKey') || 'description'; buffer.push("

" + self.get('title') + "

"); buffer.push("