ES6: More controllers

This commit is contained in:
Robin Ward 2014-05-20 12:49:25 -04:00
parent 29fa2d2fc2
commit 8a24a34b1b
12 changed files with 61 additions and 55 deletions

View File

@ -0,0 +1,3 @@
import NavigationDefaultController from 'discourse/controllers/navigation/default';
export default NavigationDefaultController.extend({});

View File

@ -0,0 +1,8 @@
import NavigationDefaultController from 'discourse/controllers/navigation/default';
export default NavigationDefaultController.extend({
navItems: function() {
return Discourse.NavItem.buildList(this.get('category'), { noSubcategories: this.get('noSubcategories') });
}.property('category', 'noSubcategories')
});

View File

@ -0,0 +1,17 @@
/**
Handles the controller for the default navigation within discovery.
@class NavigationDefaultController
@extends Discourse.Controller
@namespace Discourse
@module Discourse
**/
export default Discourse.Controller.extend({
categories: function() {
return Discourse.Category.list();
}.property(),
navItems: function() {
return Discourse.NavItem.buildList();
}.property()
});

View File

@ -1,25 +0,0 @@
/**
Handles the controller for the default navigation within discovery.
@class NavigationDefaultController
@extends Discourse.Controller
@namespace Discourse
@module Discourse
**/
Discourse.NavigationDefaultController = Discourse.Controller.extend({
categories: function() {
return Discourse.Category.list();
}.property(),
navItems: function() {
return Discourse.NavItem.buildList();
}.property()
});
Discourse.NavigationCategoryController = Discourse.NavigationDefaultController.extend({
navItems: function() {
return Discourse.NavItem.buildList(this.get('category'), { noSubcategories: this.get('noSubcategories') });
}.property('category', 'noSubcategories')
});
Discourse.NavigationCategoriesController = Discourse.NavigationDefaultController.extend({});

View File

@ -0,0 +1,20 @@
/**
Modal displayed to a user when they are not active yet.
@class NotActivatedController
@extends Discourse.Controller
@namespace Discourse
@uses Discourse.ModalFunctionality
@module Discourse
**/
export default Discourse.Controller.extend(Discourse.ModalFunctionality, {
emailSent: false,
actions: {
sendActivationEmail: function() {
Discourse.ajax('/users/' + this.get('username') + '/send_activation_email', {type: 'POST'});
this.set('emailSent', true);
}
}
});

View File

@ -1,18 +0,0 @@
/**
Modal displayed to a user when they are not active yet.
@class NotActivatedController
@extends Discourse.Controller
@namespace Discourse
@uses Discourse.ModalFunctionality
@module Discourse
**/
Discourse.NotActivatedController = Discourse.Controller.extend(Discourse.ModalFunctionality, {
emailSent: false,
sendActivationEmail: function() {
Discourse.ajax('/users/' + this.get('username') + '/send_activation_email', {type: 'POST'});
this.set('emailSent', true);
}
});

View File

@ -7,7 +7,7 @@
@uses Discourse.ModalFunctionality @uses Discourse.ModalFunctionality
@module Discourse @module Discourse
**/ **/
Discourse.SplitTopicController = Discourse.ObjectController.extend(Discourse.SelectedPostsCount, Discourse.ModalFunctionality, { export default Discourse.ObjectController.extend(Discourse.SelectedPostsCount, Discourse.ModalFunctionality, {
needs: ['topic'], needs: ['topic'],
topicController: Em.computed.alias('controllers.topic'), topicController: Em.computed.alias('controllers.topic'),

View File

@ -13,7 +13,7 @@ Discourse.DiscoveryCategoriesRoute = Discourse.Route.extend({
}, },
beforeModel: function() { beforeModel: function() {
this.controllerFor('navigationCategories').set('filterMode', 'categories'); this.controllerFor('navigation/categories').set('filterMode', 'categories');
}, },
model: function() { model: function() {
@ -34,7 +34,7 @@ Discourse.DiscoveryCategoriesRoute = Discourse.Route.extend({
setupController: function(controller, model) { setupController: function(controller, model) {
controller.set('model', model); controller.set('model', model);
Discourse.set('title', I18n.t('filters.categories.title')); Discourse.set('title', I18n.t('filters.categories.title'));
this.controllerFor('navigationCategories').set('canCreateCategory', model.get('can_create_category')); this.controllerFor('navigation/categories').set('canCreateCategory', model.get('can_create_category'));
}, },
actions: { actions: {

View File

@ -12,7 +12,7 @@ function buildTopicRoute(filter) {
}, },
beforeModel: function() { beforeModel: function() {
this.controllerFor('navigationDefault').set('filterMode', filter); this.controllerFor('navigation/default').set('filterMode', filter);
}, },
model: function(data, transaction) { model: function(data, transaction) {
@ -73,7 +73,7 @@ function buildTopicRoute(filter) {
} }
} }
this.controllerFor('navigationDefault').set('canCreateTopic', model.get('can_create_topic')); this.controllerFor('navigation/default').set('canCreateTopic', model.get('can_create_topic'));
}, },
renderTemplate: function() { renderTemplate: function() {
@ -107,7 +107,7 @@ function buildCategoryRoute(filter, params) {
var opts = { category: model, filterMode: filterMode }; var opts = { category: model, filterMode: filterMode };
opts.noSubcategories = params && params.no_subcategories; opts.noSubcategories = params && params.no_subcategories;
opts.canEditCategory = Discourse.User.currentProp('staff'); opts.canEditCategory = Discourse.User.currentProp('staff');
this.controllerFor('navigationCategory').setProperties(opts); this.controllerFor('navigation/category').setProperties(opts);
return Discourse.TopicList.list(listFilter, params).then(function(list) { return Discourse.TopicList.list(listFilter, params).then(function(list) {
var tracking = Discourse.TopicTrackingState.current(); var tracking = Discourse.TopicTrackingState.current();
@ -130,7 +130,7 @@ function buildCategoryRoute(filter, params) {
Discourse.set('title', I18n.t('filters.with_category', { filter: filterText, category: model.get('name').capitalize() })); Discourse.set('title', I18n.t('filters.with_category', { filter: filterText, category: model.get('name').capitalize() }));
this.controllerFor('navigationCategory').set('canCreateTopic', topics.get('can_create_topic')); this.controllerFor('navigation/category').set('canCreateTopic', topics.get('can_create_topic'));
this.controllerFor('discovery/topics').setProperties({ this.controllerFor('discovery/topics').setProperties({
model: topics, model: topics,
category: model, category: model,

View File

@ -8,7 +8,7 @@
**/ **/
Discourse.DiscoveryTopRoute = Discourse.Route.extend(Discourse.OpenComposer, { Discourse.DiscoveryTopRoute = Discourse.Route.extend(Discourse.OpenComposer, {
beforeModel: function() { beforeModel: function() {
this.controllerFor('navigationDefault').set('filterMode', 'top'); this.controllerFor('navigation/default').set('filterMode', 'top');
}, },
model: function() { model: function() {
@ -19,7 +19,7 @@ Discourse.DiscoveryTopRoute = Discourse.Route.extend(Discourse.OpenComposer, {
var filterText = I18n.t('filters.top.title'); var filterText = I18n.t('filters.top.title');
Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText})); Discourse.set('title', I18n.t('filters.with_topics', {filter: filterText}));
this.controllerFor('discovery/top').setProperties({ model: model, category: null }); this.controllerFor('discovery/top').setProperties({ model: model, category: null });
this.controllerFor('navigationDefault').set('canCreateTopic', model.get('can_create_topic')); this.controllerFor('navigation/default').set('canCreateTopic', model.get('can_create_topic'));
// If there's a draft, open the create topic composer // If there's a draft, open the create topic composer
if (model.draft) { if (model.draft) {
@ -70,7 +70,7 @@ Discourse.DiscoveryTopCategoryRoute = Discourse.Route.extend(Discourse.OpenCompo
var opts = { category: model, filterMode: filterMode }; var opts = { category: model, filterMode: filterMode };
opts.noSubcategories = noSubcategories; opts.noSubcategories = noSubcategories;
opts.canEditCategory = Discourse.User.currentProp('staff'); opts.canEditCategory = Discourse.User.currentProp('staff');
this.controllerFor('navigationCategory').setProperties(opts); this.controllerFor('navigation/category').setProperties(opts);
return Discourse.TopList.find(filterMode).then(function(list) { return Discourse.TopList.find(filterMode).then(function(list) {
// If all the categories are the same, we can hide them // If all the categories are the same, we can hide them
@ -89,7 +89,7 @@ Discourse.DiscoveryTopCategoryRoute = Discourse.Route.extend(Discourse.OpenCompo
var topList = this.get('topList'); var topList = this.get('topList');
var filterText = I18n.t('filters.top.title'); var filterText = I18n.t('filters.top.title');
Discourse.set('title', I18n.t('filters.with_category', {filter: filterText, category: model.get('name').capitalize()})); Discourse.set('title', I18n.t('filters.with_category', {filter: filterText, category: model.get('name').capitalize()}));
this.controllerFor('navigationCategory').set('canCreateTopic', topList.get('can_create_topic')); this.controllerFor('navigation/category').set('canCreateTopic', topList.get('can_create_topic'));
this.controllerFor('discovery/top').setProperties({ this.controllerFor('discovery/top').setProperties({
model: topList, model: topList,
category: model, category: model,

View File

@ -69,7 +69,7 @@ Discourse.TopicRoute = Discourse.Route.extend({
}, },
splitTopic: function() { splitTopic: function() {
Discourse.Route.showModal(this, 'splitTopic', this.modelFor('topic')); Discourse.Route.showModal(this, 'split-topic', this.modelFor('topic'));
}, },
changeOwner: function() { changeOwner: function() {

View File

@ -18,6 +18,7 @@
//= require ./discourse/models/composer //= require ./discourse/models/composer
//= require ./discourse/controllers/controller //= require ./discourse/controllers/controller
//= require ./discourse/controllers/object_controller //= require ./discourse/controllers/object_controller
//= require ./discourse/controllers/navigation/default
//= require ./discourse/views/modal/modal_body_view //= require ./discourse/views/modal/modal_body_view
//= require ./discourse/views/modal/flag_view //= require ./discourse/views/modal/flag_view
//= require ./discourse/views/combobox_view //= require ./discourse/views/combobox_view