diff --git a/app/assets/javascripts/admin/routes/admin_flags_active_route.js b/app/assets/javascripts/admin/routes/admin_flags_active_route.js index 886de964c..8ff49c1fd 100644 --- a/app/assets/javascripts/admin/routes/admin_flags_active_route.js +++ b/app/assets/javascripts/admin/routes/admin_flags_active_route.js @@ -8,9 +8,13 @@ **/ Discourse.AdminFlagsActiveRoute = Discourse.Route.extend({ - setupController: function() { + model: function() { + return Discourse.FlaggedPost.findAll('active'); + }, + + setupController: function(controller, model) { var adminFlagsController = this.controllerFor('adminFlags'); - adminFlagsController.set('content', Discourse.FlaggedPost.findAll('active')); + adminFlagsController.set('content', model); adminFlagsController.set('query', 'active'); } diff --git a/app/assets/javascripts/admin/routes/admin_flags_old_route.js b/app/assets/javascripts/admin/routes/admin_flags_old_route.js index 04a815d56..8d6b16644 100644 --- a/app/assets/javascripts/admin/routes/admin_flags_old_route.js +++ b/app/assets/javascripts/admin/routes/admin_flags_old_route.js @@ -8,9 +8,13 @@ **/ Discourse.AdminFlagsOldRoute = Discourse.Route.extend({ + model: function() { + return Discourse.FlaggedPost.findAll('old'); + }, + setupController: function(controller, model) { var adminFlagsController = this.controllerFor('adminFlags'); - adminFlagsController.set('content', Discourse.FlaggedPost.findAll('old')); + adminFlagsController.set('content', model); adminFlagsController.set('query', 'old'); } diff --git a/app/assets/javascripts/admin/routes/admin_groups_routes.js b/app/assets/javascripts/admin/routes/admin_groups_routes.js index 535c280e6..752dedb76 100644 --- a/app/assets/javascripts/admin/routes/admin_groups_routes.js +++ b/app/assets/javascripts/admin/routes/admin_groups_routes.js @@ -1,10 +1,12 @@ Discourse.AdminGroupsRoute = Discourse.Route.extend({ - renderTemplate: function() { - this.render('admin/templates/groups',{into: 'admin/templates/admin'}); + + model: function() { + return Discourse.Group.findAll(); }, - setupController: function(controller, model) { - controller.set('model', Discourse.Group.findAll()); + renderTemplate: function() { + this.render('admin/templates/groups',{into: 'admin/templates/admin'}); } + }); diff --git a/app/assets/javascripts/admin/routes/admin_user_route.js b/app/assets/javascripts/admin/routes/admin_user_route.js index a18ce9a90..5cef66f6f 100644 --- a/app/assets/javascripts/admin/routes/admin_user_route.js +++ b/app/assets/javascripts/admin/routes/admin_user_route.js @@ -7,18 +7,17 @@ @module Discourse **/ Discourse.AdminUserRoute = Discourse.Route.extend({ + serialize: function(params) { return { username: Em.get(params, 'username').toLowerCase() }; }, - renderTemplate: function() { - this.render('admin/templates/user', {into: 'admin/templates/admin'}); + model: function(params) { + return Discourse.AdminUser.find(Em.get(params, 'username').toLowerCase()); }, - setupController: function(controller, model) { - Discourse.AdminUser.find(Em.get(model, 'username').toLowerCase()).then(function (u) { - controller.set('content', u); - }); + renderTemplate: function() { + this.render('admin/templates/user', {into: 'admin/templates/admin'}); } }); diff --git a/app/assets/javascripts/admin/templates/site_content_edit.js.handlebars b/app/assets/javascripts/admin/templates/site_content_edit.js.handlebars index 749227e3b..491019ca6 100644 --- a/app/assets/javascripts/admin/templates/site_content_edit.js.handlebars +++ b/app/assets/javascripts/admin/templates/site_content_edit.js.handlebars @@ -1,4 +1,4 @@ -{{#if loaded}} +

{{model.title}}

{{model.description}}

@@ -30,7 +30,3 @@ {{#if saved}}{{i18n saved}}{{/if}} - -{{else}} -
{{i18n loading}}
-{{/if}} \ No newline at end of file diff --git a/app/assets/javascripts/discourse/mixins/model_ready.js b/app/assets/javascripts/discourse/mixins/model_ready.js new file mode 100644 index 000000000..f50d2c321 --- /dev/null +++ b/app/assets/javascripts/discourse/mixins/model_ready.js @@ -0,0 +1,29 @@ +/** + Until the fully async router is merged into Ember, it is healthy to do some extra checking + that setupController is not passed a promise instead of the model we want. + + This mixin handles that case, and calls modelReady instead. + + @class Discourse.ModelReady + @extends Ember.Mixin + @namespace Discourse + @module Discourse +**/ +Discourse.ModelReady = Em.Mixin.create({ + + setupController: function(controller, model) { + var route = this; + if (model.then) { + model.then(function (m) { + controller.set('model', m); + if (route.modelReady) { route.modelReady(controller, m); } + }); + } else { + controller.set('model', model); + if (route.modelReady) { route.modelReady(controller, model); } + } + } + +}); + + diff --git a/app/assets/javascripts/discourse/routes/list_categories_route.js b/app/assets/javascripts/discourse/routes/list_categories_route.js index d825c9bff..6ccd4b0ce 100644 --- a/app/assets/javascripts/discourse/routes/list_categories_route.js +++ b/app/assets/javascripts/discourse/routes/list_categories_route.js @@ -6,7 +6,7 @@ @namespace Discourse @module Discourse **/ -Discourse.ListCategoriesRoute = Discourse.Route.extend({ +Discourse.ListCategoriesRoute = Discourse.Route.extend(Discourse.ModelReady, { redirect: function() { Discourse.redirectIfLoginRequired(this); }, @@ -28,9 +28,8 @@ Discourse.ListCategoriesRoute = Discourse.Route.extend({ this.controllerFor('list').set('canCreateCategory', false); }, - setupController: function(controller, categoryList) { + modelReady: function(controller, categoryList) { this.render('listCategories', { into: 'list', outlet: 'listView' }); - controller.set('model', categoryList); this.controllerFor('list').setProperties({ canCreateCategory: categoryList.get('can_create_category'), diff --git a/app/assets/javascripts/discourse/routes/user_invited_route.js b/app/assets/javascripts/discourse/routes/user_invited_route.js index 251219659..f603b1ccc 100644 --- a/app/assets/javascripts/discourse/routes/user_invited_route.js +++ b/app/assets/javascripts/discourse/routes/user_invited_route.js @@ -6,16 +6,14 @@ @namespace Discourse @module Discourse **/ -Discourse.UserInvitedRoute = Discourse.Route.extend({ +Discourse.UserInvitedRoute = Discourse.Route.extend(Discourse.ModelReady, { renderTemplate: function() { this.render({ into: 'user', outlet: 'userOutlet' }); }, - setupController: function(controller) { - Discourse.InviteList.findInvitedBy(this.controllerFor('user').get('content')).then(function(invited) { - controller.set('content', invited); - }); + model: function() { + return Discourse.InviteList.findInvitedBy(this.modelFor('user')); } });