diff --git a/app/assets/javascripts/admin/controllers/admin-agree-flag.js.es6 b/app/assets/javascripts/admin/controllers/admin-agree-flag.js.es6 index 658bb7b25ca..703556c300d 100644 --- a/app/assets/javascripts/admin/controllers/admin-agree-flag.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-agree-flag.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for agreeing with a flag. +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class AdminAgreeFlagController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality, { needs: ["adminFlags"], diff --git a/app/assets/javascripts/admin/controllers/admin-badge.js.es6 b/app/assets/javascripts/admin/controllers/admin-badge.js.es6 index cc799694bdd..a1088411baa 100644 --- a/app/assets/javascripts/admin/controllers/admin-badge.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-badge.js.es6 @@ -1,14 +1,16 @@ +import ObjectController from 'discourse/controllers/object'; + /** This is the itemController for `Discourse.AdminBadgesController`. Its main purpose is to indicate which badge was selected. @class AdminBadgeController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ /** Whether this badge has been selected. diff --git a/app/assets/javascripts/admin/controllers/admin-delete-flag.js.es6 b/app/assets/javascripts/admin/controllers/admin-delete-flag.js.es6 index 2d65c91cf86..d0aa6733930 100644 --- a/app/assets/javascripts/admin/controllers/admin-delete-flag.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-delete-flag.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for deleting a flag. +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class AdminDeleteFlagController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality, { needs: ["adminFlags"], diff --git a/app/assets/javascripts/admin/controllers/admin-email-index.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-index.js.es6 index 75b28701309..58eff83cd26 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-index.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-index.js.es6 @@ -1,12 +1,6 @@ -/** - This controller supports email functionality. +import DiscourseController from 'discourse/controllers/controller'; - @class AdminEmailIndexController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ /** Is the "send test email" button disabled? diff --git a/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 index 9e9653d6301..2e57f8baf12 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** This controller previews an email digest @class AdminEmailPreviewDigestController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ actions: { refresh: function() { diff --git a/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 index 671f8ce4c8d..0b23e902688 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-sent.js.es6 @@ -1,12 +1,6 @@ - /** - This controller supports email logs functionality. +import DiscourseController from 'discourse/controllers/controller'; - @class AdminEmailSentController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ filterEmailLogs: Discourse.debounce(function() { var self = this; diff --git a/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 index 49aa73ad689..9e3affff6a2 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-skipped.js.es6 @@ -1,13 +1,6 @@ - /** - This controller supports email logs functionality. - - @class AdminEmailSkippedController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +import DiscourseController from 'discourse/controllers/controller'; +export default DiscourseController.extend({ filterEmailLogs: Discourse.debounce(function() { var self = this; Discourse.EmailLog.findAll(this.get("filter")).then(function(logs) { diff --git a/app/assets/javascripts/admin/controllers/admin-site-content-edit.js.es6 b/app/assets/javascripts/admin/controllers/admin-site-content-edit.js.es6 index 44f00e3a9f7..1886b660498 100644 --- a/app/assets/javascripts/admin/controllers/admin-site-content-edit.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-site-content-edit.js.es6 @@ -1,12 +1,6 @@ -/** - This controller is used for editing site content +import DiscourseController from 'discourse/controllers/controller'; - @class AdminSiteContentEditController - @extends Ember.ObjectController - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ saveDisabled: function() { if (this.get('saving')) { return true; } diff --git a/app/assets/javascripts/admin/controllers/admin-staff-action-log-details.js.es6 b/app/assets/javascripts/admin/controllers/admin-staff-action-log-details.js.es6 index 583516c3feb..9d525e9827b 100644 --- a/app/assets/javascripts/admin/controllers/admin-staff-action-log-details.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-staff-action-log-details.js.es6 @@ -1,10 +1,5 @@ -/** - The modal for viewing the details of a staff action log record. +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class AdminStaffActionLogDetailsController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality); +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality); diff --git a/app/assets/javascripts/admin/controllers/admin-suspend-user.js.es6 b/app/assets/javascripts/admin/controllers/admin-suspend-user.js.es6 index 20e6ab4bfcc..a8c19fe563b 100644 --- a/app/assets/javascripts/admin/controllers/admin-suspend-user.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-suspend-user.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for suspending a user. +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class AdminSuspendUserController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality, { submitDisabled: function() { return (!this.get('reason') || this.get('reason').length < 1); diff --git a/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 b/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 index 54c6b5454f1..8b932957e06 100644 --- a/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-user-index.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** A controller related to viewing a user in the admin section @class AdminUserIndexController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ editingTitle: false, originalPrimaryGroupId: null, availableGroups: null, diff --git a/app/assets/javascripts/admin/controllers/admin-user.js.es6 b/app/assets/javascripts/admin/controllers/admin-user.js.es6 index 6a196f98686..85be90825ea 100644 --- a/app/assets/javascripts/admin/controllers/admin-user.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-user.js.es6 @@ -1,10 +1,12 @@ +import ObjectController from 'discourse/controllers/object'; + /** The top-level controller for user pages in admin. Ember assertion says that this class needs to be defined even if it's empty. @class AdminUserController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend(); +export default ObjectController.extend(); diff --git a/app/assets/javascripts/admin/controllers/admin.js.es6 b/app/assets/javascripts/admin/controllers/admin.js.es6 index 4eb6d8ecbcd..b255781ffd6 100644 --- a/app/assets/javascripts/admin/controllers/admin.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin.js.es6 @@ -1,12 +1,6 @@ -/** - A base admin controller that has access to the Discourse properties. +import DiscourseController from 'discourse/controllers/controller'; - @class AdminController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ showBadges: function() { return this.get('currentUser.admin') && Discourse.SiteSettings.enable_badges; }.property() diff --git a/app/assets/javascripts/admin/controllers/change-site-customization-details.js.es6 b/app/assets/javascripts/admin/controllers/change-site-customization-details.js.es6 index b7e60c92eb1..13e6086f76f 100644 --- a/app/assets/javascripts/admin/controllers/change-site-customization-details.js.es6 +++ b/app/assets/javascripts/admin/controllers/change-site-customization-details.js.es6 @@ -1,4 +1,8 @@ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality, { previousSelected: Ember.computed.equal('selectedTab', 'previous'), newSelected: Ember.computed.equal('selectedTab', 'new'), diff --git a/app/assets/javascripts/admin/controllers/delete-site-customization-details.js.es6 b/app/assets/javascripts/admin/controllers/delete-site-customization-details.js.es6 index 07100e681b7..57e3c9652a6 100644 --- a/app/assets/javascripts/admin/controllers/delete-site-customization-details.js.es6 +++ b/app/assets/javascripts/admin/controllers/delete-site-customization-details.js.es6 @@ -1,13 +1,3 @@ -/** - The modal for viewing the details of a staff action log record - for when a site customization is deleted. - - @class DeleteSiteCustomizationDetailsController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ import ChangeSiteCustomizationDetailsController from "admin/controllers/change-site-customization-details"; export default ChangeSiteCustomizationDetailsController.extend({ diff --git a/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 b/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 index 76e2c766f4c..fe6d9c24d7c 100644 --- a/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 +++ b/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 @@ -1,22 +1,15 @@ -/** - The modal for selecting an avatar +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class AvatarSelectorController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { selectedUploadId: function(){ switch(this.get("selected")){ case "system": return this.get("system_avatar_upload_id"); - break; case "gravatar": return this.get("gravatar_avatar_upload_id"); - break; default: return this.get("custom_avatar_upload_id"); } diff --git a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 index c448069af30..6da73596fa1 100644 --- a/app/assets/javascripts/discourse/controllers/badges/show.js.es6 +++ b/app/assets/javascripts/discourse/controllers/badges/show.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** Controller for showing a particular badge. @class BadgesShowController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ actions: { loadMore: function() { diff --git a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 index 46b04289829..ab4cc4639d8 100644 --- a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** Modal related to changing the ownership of posts @class ChangeOwnerController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.SelectedPostsCount, Discourse.ModalFunctionality, { +export default ObjectController.extend(Discourse.SelectedPostsCount, ModalFunctionality, { needs: ['topic'], topicController: Em.computed.alias('controllers.topic'), diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 305d610b029..9567ba57ac1 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -1,12 +1,6 @@ -/** - This controller supports composing new posts and topics. +import DiscourseController from 'discourse/controllers/controller'; - @class ComposerController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ needs: ['modal', 'topic', 'composer-messages'], replyAsNewTopicDraft: Em.computed.equal('model.draftKey', Discourse.Composer.REPLY_AS_NEW_TOPIC_KEY), diff --git a/app/assets/javascripts/discourse/controllers/controller.js b/app/assets/javascripts/discourse/controllers/controller.js deleted file mode 100644 index ce298bced04..00000000000 --- a/app/assets/javascripts/discourse/controllers/controller.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - A base controller for Discourse that includes Presence support. - - @class Controller - @extends Ember.Controller - @namespace Discourse - @uses Discourse.Presence - @module Discourse -**/ -Discourse.Controller = Ember.Controller.extend(Discourse.Presence, Discourse.HasCurrentUser); diff --git a/app/assets/javascripts/discourse/controllers/controller.js.es6 b/app/assets/javascripts/discourse/controllers/controller.js.es6 new file mode 100644 index 00000000000..91fabd74710 --- /dev/null +++ b/app/assets/javascripts/discourse/controllers/controller.js.es6 @@ -0,0 +1 @@ +export default Ember.Controller.extend(Discourse.Presence, Discourse.HasCurrentUser); diff --git a/app/assets/javascripts/discourse/controllers/create-account.js.es6 b/app/assets/javascripts/discourse/controllers/create-account.js.es6 index 292f5624f5a..a8dba32d378 100644 --- a/app/assets/javascripts/discourse/controllers/create-account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/create-account.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for creating accounts +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class CreateAccountController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { uniqueUsernameValidation: null, globalNicknameExists: false, complete: false, diff --git a/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 b/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 index bed27bb21ba..0061dcb4f0c 100644 --- a/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.Controller.extend({ +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend({ needs: ['discovery/topics'], queryParams: ['order', 'ascending', 'status', 'state', 'search'], order: Em.computed.alias('controllers.discovery/topics.order'), diff --git a/app/assets/javascripts/discourse/controllers/discovery.js.es6 b/app/assets/javascripts/discourse/controllers/discovery.js.es6 index 66b49a04a13..5fe00057a92 100644 --- a/app/assets/javascripts/discourse/controllers/discovery.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.ObjectController.extend({ +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend({ loading: false, loadingSpinner: false, scheduledSpinner: null, diff --git a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 index cf30a00586a..fddcca77771 100644 --- a/app/assets/javascripts/discourse/controllers/edit-category.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-category.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** Modal for editing / creating a category @class EditCategoryController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +export default ObjectController.extend(ModalFunctionality, { foregroundColors: ['FFFFFF', '000000'], categoryUploadUrl: '/category/uploads', diff --git a/app/assets/javascripts/discourse/controllers/edit-topic-auto-close.js.es6 b/app/assets/javascripts/discourse/controllers/edit-topic-auto-close.js.es6 index 06ed57a3137..d36ae269cd7 100644 --- a/app/assets/javascripts/discourse/controllers/edit-topic-auto-close.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-topic-auto-close.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** Modal related to auto closing of topics @class EditTopicAutoCloseController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +export default ObjectController.extend(ModalFunctionality, { auto_close_valid: true, auto_close_invalid: Em.computed.not('auto_close_valid'), diff --git a/app/assets/javascripts/discourse/controllers/exception.js.es6 b/app/assets/javascripts/discourse/controllers/exception.js.es6 index e6b8ae8815a..e73b3064c40 100644 --- a/app/assets/javascripts/discourse/controllers/exception.js.es6 +++ b/app/assets/javascripts/discourse/controllers/exception.js.es6 @@ -1,3 +1,5 @@ +import ObjectController from 'discourse/controllers/object'; + var ButtonBackBright = { classes: "btn-primary", @@ -24,11 +26,11 @@ var ButtonBackBright = { The controller for the nice error page @class ExceptionController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ thrown: null, lastTransition: null, diff --git a/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 b/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 index c4639cb5a16..f4b2fd84de2 100644 --- a/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 +++ b/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** Supports logic for flags in the modal @class FlagActionTypeController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ needs: ['flag'], message: Em.computed.alias('controllers.flag.message'), diff --git a/app/assets/javascripts/discourse/controllers/flag.js.es6 b/app/assets/javascripts/discourse/controllers/flag.js.es6 index 6df825a917c..b4ef30e3f5e 100644 --- a/app/assets/javascripts/discourse/controllers/flag.js.es6 +++ b/app/assets/javascripts/discourse/controllers/flag.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** This controller supports actions related to flagging @class FlagController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +export default ObjectController.extend(ModalFunctionality, { onShow: function() { this.set('selected', null); diff --git a/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 b/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 index e44c5b64426..9b115997a27 100644 --- a/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 +++ b/app/assets/javascripts/discourse/controllers/forgot-password.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for when the user has forgotten their password +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class ForgotPasswordController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { // You need a value in the field to submit it. submitDisabled: function() { diff --git a/app/assets/javascripts/discourse/controllers/group.js.es6 b/app/assets/javascripts/discourse/controllers/group.js.es6 index 57de966961b..baf2dca201a 100644 --- a/app/assets/javascripts/discourse/controllers/group.js.es6 +++ b/app/assets/javascripts/discourse/controllers/group.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** The basic controller for a group @class GroupController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ counts: null, // It would be nice if bootstrap marked action lists as selected when their links diff --git a/app/assets/javascripts/discourse/controllers/header.js.es6 b/app/assets/javascripts/discourse/controllers/header.js.es6 index d4025f173ec..1c30a5716bf 100644 --- a/app/assets/javascripts/discourse/controllers/header.js.es6 +++ b/app/assets/javascripts/discourse/controllers/header.js.es6 @@ -1,12 +1,6 @@ -/** - This controller supports actions on the site header +import DiscourseController from 'discourse/controllers/controller'; - @class HeaderController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ topic: null, showExtraInfo: null, notifications: null, diff --git a/app/assets/javascripts/discourse/controllers/history.js.es6 b/app/assets/javascripts/discourse/controllers/history.js.es6 index 6f43cff99d7..50170a72068 100644 --- a/app/assets/javascripts/discourse/controllers/history.js.es6 +++ b/app/assets/javascripts/discourse/controllers/history.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** This controller handles displaying of history @class HistoryController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +export default ObjectController.extend(ModalFunctionality, { loading: false, viewMode: "side_by_side", revisionsTextKey: "post.revisions.controls.comparing_previous_to_current_out_of_total", diff --git a/app/assets/javascripts/discourse/controllers/invite-private.js.es6 b/app/assets/javascripts/discourse/controllers/invite-private.js.es6 index dfe32be7f6d..fe00c85bfa1 100644 --- a/app/assets/javascripts/discourse/controllers/invite-private.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invite-private.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for inviting a user to a private topic +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class InvitePrivateController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality, { modalClass: 'invite', isAdmin: function(){ diff --git a/app/assets/javascripts/discourse/controllers/invite.js.es6 b/app/assets/javascripts/discourse/controllers/invite.js.es6 index 0582d55fe4c..09a2fe4e431 100644 --- a/app/assets/javascripts/discourse/controllers/invite.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invite.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for inviting a user to a topic +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class InviteController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.ObjectController.extend(Discourse.ModalFunctionality, { +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(ModalFunctionality, { needs: ['user-invited'], // If this isn't defined, it will proxy to the user model on the preferences diff --git a/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 b/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 index 4ad546e45be..20a9823fdc1 100644 --- a/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 +++ b/app/assets/javascripts/discourse/controllers/keyboard-shortcuts-help.js.es6 @@ -1,13 +1,8 @@ -/** - This controller is used to display the Keyboard Shortcuts Help Modal +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class KeyboardShortcutsHelpController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { needs: ['modal'], onShow: function() { diff --git a/app/assets/javascripts/discourse/controllers/login.js.es6 b/app/assets/javascripts/discourse/controllers/login.js.es6 index 2515a7da632..21811a0ea5f 100644 --- a/app/assets/javascripts/discourse/controllers/login.js.es6 +++ b/app/assets/javascripts/discourse/controllers/login.js.es6 @@ -1,13 +1,8 @@ -/** - This controller supports actions related to flagging +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class LoginController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { needs: ['modal', 'createAccount', 'application'], authenticate: null, loggingIn: false, diff --git a/app/assets/javascripts/discourse/controllers/merge-topic.js.es6 b/app/assets/javascripts/discourse/controllers/merge-topic.js.es6 index 0af0ae0fb4a..7b1b684823f 100644 --- a/app/assets/javascripts/discourse/controllers/merge-topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/merge-topic.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** Modal related to merging of topics @class MergeTopicController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.SelectedPostsCount, Discourse.ModalFunctionality, { +export default ObjectController.extend(Discourse.SelectedPostsCount, ModalFunctionality, { needs: ['topic'], topicController: Em.computed.alias('controllers.topic'), diff --git a/app/assets/javascripts/discourse/controllers/modal.js.es6 b/app/assets/javascripts/discourse/controllers/modal.js.es6 index 7d9d1db3ef7..c744bdfc36c 100644 --- a/app/assets/javascripts/discourse/controllers/modal.js.es6 +++ b/app/assets/javascripts/discourse/controllers/modal.js.es6 @@ -1,9 +1,3 @@ -/** - Related to showing a modal and its title. +import DiscourseController from 'discourse/controllers/controller'; - @class ModalController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({}); +export default DiscourseController.extend({}); diff --git a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 index 84824c871cb..0824990e5a7 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 @@ -1,12 +1,6 @@ -/** - Handles the controller for the default navigation within discovery. +import DiscourseController from 'discourse/controllers/controller'; - @class NavigationDefaultController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ categories: function() { return Discourse.Category.list(); }.property(), diff --git a/app/assets/javascripts/discourse/controllers/not-activated.js.es6 b/app/assets/javascripts/discourse/controllers/not-activated.js.es6 index b6cb729badd..802dee64640 100644 --- a/app/assets/javascripts/discourse/controllers/not-activated.js.es6 +++ b/app/assets/javascripts/discourse/controllers/not-activated.js.es6 @@ -1,13 +1,8 @@ -/** - Modal displayed to a user when they are not active yet. +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class NotActivatedController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { emailSent: false, actions: { diff --git a/app/assets/javascripts/discourse/controllers/notification.js.es6 b/app/assets/javascripts/discourse/controllers/notification.js.es6 index bd49498e149..e62e174f227 100644 --- a/app/assets/javascripts/discourse/controllers/notification.js.es6 +++ b/app/assets/javascripts/discourse/controllers/notification.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.ObjectController.extend({ +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend({ scope: function () { return "notifications." + Discourse.Site.currentProp("notificationLookup")[this.get("notification_type")]; diff --git a/app/assets/javascripts/discourse/controllers/object.js.es6 b/app/assets/javascripts/discourse/controllers/object.js.es6 new file mode 100644 index 00000000000..56bef4c5199 --- /dev/null +++ b/app/assets/javascripts/discourse/controllers/object.js.es6 @@ -0,0 +1 @@ +export default Ember.ObjectController.extend(Discourse.Presence, Discourse.HasCurrentUser); diff --git a/app/assets/javascripts/discourse/controllers/object_controller.js b/app/assets/javascripts/discourse/controllers/object_controller.js deleted file mode 100644 index 966c9c52fde..00000000000 --- a/app/assets/javascripts/discourse/controllers/object_controller.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - A custom object controller for Discourse - - @class ObjectController - @extends Ember.ObjectController - @namespace Discourse - @uses Discourse.Presence - @module Discourse -**/ -Discourse.ObjectController = Ember.ObjectController.extend(Discourse.Presence, Discourse.HasCurrentUser); - - diff --git a/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 b/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 index b526344b294..79ea4001181 100644 --- a/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 +++ b/app/assets/javascripts/discourse/controllers/poster-expansion.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.ObjectController.extend({ +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend({ needs: ['topic'], visible: false, user: null, diff --git a/app/assets/javascripts/discourse/controllers/preferences.js.es6 b/app/assets/javascripts/discourse/controllers/preferences.js.es6 index b1841128b5e..0394fe857bb 100644 --- a/app/assets/javascripts/discourse/controllers/preferences.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** This controller supports actions related to updating one's preferences @class PreferencesController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ allowAvatarUpload: Discourse.computed.setting('allow_uploaded_avatars'), allowUserLocale: Discourse.computed.setting('allow_user_locale'), diff --git a/app/assets/javascripts/discourse/controllers/preferences/about.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/about.js.es6 index 2cf612406c7..c6c6fc08d2a 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/about.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/about.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** This controller supports actions related to updating your "About Me" bio @class PreferencesAboutController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ saving: false, saveButtonText: function() { diff --git a/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 index 393b1801dc3..c5edaef1991 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/email.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** This controller supports actions related to updating one's email address @class PreferencesEmailController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ taken: false, saving: false, error: false, diff --git a/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 b/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 index a9a4d44d0a3..68aa1b9eb1d 100644 --- a/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences/username.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** This controller supports actions related to updating one's username @class PreferencesUsernameController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ taken: false, saving: false, error: false, diff --git a/app/assets/javascripts/discourse/controllers/quote-button.js.es6 b/app/assets/javascripts/discourse/controllers/quote-button.js.es6 index 6bdb8da0b14..23e076242a2 100644 --- a/app/assets/javascripts/discourse/controllers/quote-button.js.es6 +++ b/app/assets/javascripts/discourse/controllers/quote-button.js.es6 @@ -1,14 +1,8 @@ +import DiscourseController from 'discourse/controllers/controller'; + /*global assetPath:true */ -/** - This controller supports the pop up quote button - - @class QuoteButtonController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ needs: ['topic', 'composer'], init: function() { diff --git a/app/assets/javascripts/discourse/controllers/search.js.es6 b/app/assets/javascripts/discourse/controllers/search.js.es6 index 28a316c6583..c36cd69a3b4 100644 --- a/app/assets/javascripts/discourse/controllers/search.js.es6 +++ b/app/assets/javascripts/discourse/controllers/search.js.es6 @@ -1,11 +1,3 @@ -/** - Support for searching - - @class SearchController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ export default Em.ArrayController.extend(Discourse.Presence, { contextChanged: function(){ diff --git a/app/assets/javascripts/discourse/controllers/share.js.es6 b/app/assets/javascripts/discourse/controllers/share.js.es6 index 3954ff4eb2c..2b86c3c97bb 100644 --- a/app/assets/javascripts/discourse/controllers/share.js.es6 +++ b/app/assets/javascripts/discourse/controllers/share.js.es6 @@ -1,12 +1,6 @@ -/** - This controller supports the "share" link controls +import DiscourseController from 'discourse/controllers/controller'; - @class ShareController - @extends Discourse.Controller - @namespace Discourse - @module Discourse -**/ -export default Discourse.Controller.extend({ +export default DiscourseController.extend({ needs: ['topic'], // Close the share controller diff --git a/app/assets/javascripts/discourse/controllers/split-topic.js.es6 b/app/assets/javascripts/discourse/controllers/split-topic.js.es6 index 590911620da..38c2ba38e2d 100644 --- a/app/assets/javascripts/discourse/controllers/split-topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/split-topic.js.es6 @@ -1,13 +1,17 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + +import ObjectController from 'discourse/controllers/object'; + /** Modal related to auto closing of topics @class SplitTopicController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Discourse.ObjectController.extend(Discourse.SelectedPostsCount, Discourse.ModalFunctionality, { +export default ObjectController.extend(Discourse.SelectedPostsCount, ModalFunctionality, { needs: ['topic'], topicController: Em.computed.alias('controllers.topic'), diff --git a/app/assets/javascripts/discourse/controllers/topic-admin-menu.js.es6 b/app/assets/javascripts/discourse/controllers/topic-admin-menu.js.es6 index 06b3db52cac..ce65499f68f 100644 --- a/app/assets/javascripts/discourse/controllers/topic-admin-menu.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic-admin-menu.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** This controller supports the admin menu on topics @class TopicAdminMenuController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ menuVisible: false, needs: ['modal'], diff --git a/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 b/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 index b0d75dbf11b..ae6cc468990 100644 --- a/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic-bulk-actions.js.es6 @@ -1,13 +1,15 @@ +import ModalFunctionality from 'discourse/mixins/modal-functionality'; + /** Modal for performing bulk actions on topics @class TopicBulkActionsController @extends Ember.ArrayController @namespace Discourse - @uses Discourse.ModalFunctionality + @uses ModalFunctionality @module Discourse **/ -export default Ember.ArrayController.extend(Discourse.ModalFunctionality, { +export default Ember.ArrayController.extend(ModalFunctionality, { needs: ['discovery/topics'], onShow: function() { diff --git a/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6 b/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6 index b0d0d7e9596..9d4364842f2 100644 --- a/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic-list-item.js.es6 @@ -1,8 +1,10 @@ +import ObjectController from 'discourse/controllers/object'; + /** Handles displaying of a topic as a list item @class TopicListItemController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 289463010be..11baa77c9a5 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.ObjectController.extend(Discourse.SelectedPostsCount, { +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend(Discourse.SelectedPostsCount, { multiSelect: false, needs: ['header', 'modal', 'composer', 'quote-button', 'search', 'topic-progress'], allPostsSelected: false, diff --git a/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 b/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 index e9ab1d32ee4..d762ebf7ca8 100644 --- a/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 +++ b/app/assets/javascripts/discourse/controllers/upload-selector.js.es6 @@ -1,13 +1,8 @@ -/** - The modal for upload a file to a post +import ModalFunctionality from 'discourse/mixins/modal-functionality'; - @class UploadSelectorController - @extends Discourse.Controller - @namespace Discourse - @uses Discourse.ModalFunctionality - @module Discourse -**/ -export default Discourse.Controller.extend(Discourse.ModalFunctionality, { +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend(ModalFunctionality, { remote: Em.computed.not("local"), local: false, showMore: false, diff --git a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 index 3de715bb428..8e81c0f220d 100644 --- a/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-topics-list.js.es6 @@ -1,12 +1,14 @@ +import ObjectController from 'discourse/controllers/object'; + /** Lists of topics on a user's page. @class UserTopicsListController - @extends Discourse.ObjectController + @extends ObjectController @namespace Discourse @module Discourse **/ -export default Discourse.ObjectController.extend({ +export default ObjectController.extend({ hideCategory: false, showParticipants: false, diff --git a/app/assets/javascripts/discourse/controllers/user.js.es6 b/app/assets/javascripts/discourse/controllers/user.js.es6 index 8ff4c0131ed..2db276896eb 100644 --- a/app/assets/javascripts/discourse/controllers/user.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.ObjectController.extend({ +import ObjectController from 'discourse/controllers/object'; + +export default ObjectController.extend({ viewingSelf: function() { return this.get('content.username') === Discourse.User.currentProp('username'); diff --git a/app/assets/javascripts/discourse/mixins/modal-functionality.js.es6 b/app/assets/javascripts/discourse/mixins/modal-functionality.js.es6 new file mode 100644 index 00000000000..1eef2431f0f --- /dev/null +++ b/app/assets/javascripts/discourse/mixins/modal-functionality.js.es6 @@ -0,0 +1,10 @@ +export default Em.Mixin.create({ + needs: ['modal'], + + flash: function(message, messageClass) { + this.set('flashMessage', Em.Object.create({ + message: message, + messageClass: messageClass + })); + } +}); diff --git a/app/assets/javascripts/discourse/mixins/modal_functionality.js b/app/assets/javascripts/discourse/mixins/modal_functionality.js deleted file mode 100644 index 8cb98fc86a8..00000000000 --- a/app/assets/javascripts/discourse/mixins/modal_functionality.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - This mixin provides functionality to modal controllers - - @class Discourse.ModalFunctionality - @extends Ember.Mixin - @namespace Discourse - @module Discourse -**/ -Discourse.ModalFunctionality = Em.Mixin.create({ - needs: ['modal'], - - /** - Flash a message at the top of the modal - - @method blank - @param {String} message I18n name of the message - @param {String} messageClass CSS class to apply - @return {Boolean} - **/ - flash: function(message, messageClass) { - this.set('flashMessage', Em.Object.create({ - message: message, - messageClass: messageClass - })); - } - -}); - - diff --git a/app/assets/javascripts/main_include.js b/app/assets/javascripts/main_include.js index b3599013b0d..c20e8c1341e 100644 --- a/app/assets/javascripts/main_include.js +++ b/app/assets/javascripts/main_include.js @@ -20,7 +20,7 @@ //= require ./discourse/models/composer //= require ./discourse/models/topic //= require ./discourse/controllers/controller -//= require ./discourse/controllers/object_controller +//= require ./discourse/controllers/object //= require ./discourse/controllers/navigation/default //= require ./discourse/views/modal_body_view //= require ./discourse/views/flag diff --git a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb index 39d377b4a12..8de52eada5f 100644 --- a/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb +++ b/lib/es6_module_transpiler/tilt/es6_module_transpiler_template.rb @@ -70,7 +70,7 @@ module Tilt # For backwards compatibility with plugins, for now export the Global format too. # We should eventually have an upgrade system for plugins to use ES6 or some other # resolve based API. - if ENV['DISCOURSE_NO_CONSTANTS'].nil? && scope.logical_path =~ /(discourse|admin)\/(controllers|components|views|routes)\/(.*)/ + if ENV['DISCOURSE_NO_CONSTANTS'].nil? && scope.logical_path =~ /(discourse|admin)\/(controllers|components|views|routes|mixins)\/(.*)/ type = Regexp.last_match[2] file_name = Regexp.last_match[3].gsub(/[\-\/]/, '_') class_name = file_name.classify @@ -82,7 +82,13 @@ module Tilt require_name = module_name(scope.root_path, scope.logical_path) if require_name !~ /\-test$/ - @output << "\n\nDiscourse.#{class_name}#{type.classify} = require('#{require_name}').default;\n" + result = "#{class_name}#{type.classify}" + + # HAX + result = "Controller" if result == "ControllerController" + result.gsub!(/Mixin$/, '') + + @output << "\n\nDiscourse.#{result} = require('#{require_name}').default;\n" end end diff --git a/plugins/poll/assets/javascripts/controllers/poll.js.es6 b/plugins/poll/assets/javascripts/controllers/poll.js.es6 index 5deef83b3b3..5ac1db7bd40 100644 --- a/plugins/poll/assets/javascripts/controllers/poll.js.es6 +++ b/plugins/poll/assets/javascripts/controllers/poll.js.es6 @@ -1,4 +1,6 @@ -export default Discourse.Controller.extend({ +import DiscourseController from 'discourse/controllers/controller'; + +export default DiscourseController.extend({ poll: null, showResults: Em.computed.oneWay('poll.closed'), disableRadio: Em.computed.any('poll.closed', 'loading'), diff --git a/test/javascripts/controllers/discourse-test.js.es6 b/test/javascripts/controllers/discourse-test.js.es6 index f5ee52d1845..03bdd42ed3a 100644 --- a/test/javascripts/controllers/discourse-test.js.es6 +++ b/test/javascripts/controllers/discourse-test.js.es6 @@ -1,6 +1,8 @@ -module("Discourse.Controller"); +import DiscourseController from 'discourse/controllers/controller'; + +module("DiscourseController"); test("includes mixins", function() { - ok(Discourse.Presence.detect(Discourse.Controller.create()), "Discourse.Presence"); - ok(Discourse.HasCurrentUser.detect(Discourse.Controller.create()), "Discourse.HasCurrentUser"); + ok(Discourse.Presence.detect(DiscourseController.create()), "Discourse.Presence"); + ok(Discourse.HasCurrentUser.detect(DiscourseController.create()), "Discourse.HasCurrentUser"); });