ES6: Mega update of controllers

This commit is contained in:
Robin Ward 2014-08-12 19:04:36 -04:00
parent 1c9ccc6eb1
commit 0adfeb1cff
66 changed files with 239 additions and 344 deletions

View File

@ -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"],

View File

@ -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.

View File

@ -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"],

View File

@ -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?

View File

@ -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() {

View File

@ -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;

View File

@ -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) {

View File

@ -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; }

View File

@ -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);

View File

@ -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);

View File

@ -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,

View File

@ -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();

View File

@ -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()

View File

@ -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'),

View File

@ -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({

View File

@ -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");
}

View File

@ -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() {

View File

@ -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'),

View File

@ -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),

View File

@ -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);

View File

@ -0,0 +1 @@
export default Ember.Controller.extend(Discourse.Presence, Discourse.HasCurrentUser);

View File

@ -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,

View File

@ -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'),

View File

@ -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,

View File

@ -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',

View File

@ -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'),

View File

@ -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,

View File

@ -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'),

View File

@ -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);

View File

@ -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() {

View File

@ -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

View File

@ -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,

View File

@ -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",

View File

@ -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(){

View File

@ -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

View File

@ -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() {

View File

@ -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,

View File

@ -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'),

View File

@ -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({});

View File

@ -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(),

View File

@ -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: {

View File

@ -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")];

View File

@ -0,0 +1 @@
export default Ember.ObjectController.extend(Discourse.Presence, Discourse.HasCurrentUser);

View File

@ -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);

View File

@ -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,

View File

@ -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'),

View File

@ -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() {

View File

@ -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,

View File

@ -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,

View File

@ -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() {

View File

@ -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(){

View File

@ -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

View File

@ -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'),

View File

@ -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'],

View File

@ -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() {

View File

@ -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
**/

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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');

View File

@ -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
}));
}
});

View File

@ -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
}));
}
});

View File

@ -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

View File

@ -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

View File

@ -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'),

View File

@ -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");
});