diff --git a/app/assets/javascripts/admin/controllers/admin-group.js.es6 b/app/assets/javascripts/admin/controllers/admin-group.js.es6 index 2ee95299a..dbe31af85 100644 --- a/app/assets/javascripts/admin/controllers/admin-group.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-group.js.es6 @@ -75,13 +75,14 @@ export default Ember.Controller.extend({ save() { const group = this.get('model'), - groupsController = this.get("controllers.adminGroupsType"); + groupsController = this.get("controllers.adminGroupsType"), + groupType = groupsController.get("type"); this.set('disableSave', true); let promise = group.get("id") ? group.save() : group.create().then(() => groupsController.addObject(group)); - promise.then(() => this.transitionToRoute("adminGroup", group)) + promise.then(() => this.transitionToRoute("adminGroup", groupType, group.get('name'))) .catch(popupAjaxError) .finally(() => this.set('disableSave', false)); }, @@ -91,6 +92,11 @@ export default Ember.Controller.extend({ groupsController = this.get('controllers.adminGroupsType'), self = this; + if (!group.get('id')) { + self.transitionToRoute('adminGroupsType.index', 'custom'); + return; + } + this.set('disableSave', true); bootbox.confirm( diff --git a/app/assets/javascripts/admin/routes/admin-group.js.es6 b/app/assets/javascripts/admin/routes/admin-group.js.es6 index fd56aeca5..b46022a64 100644 --- a/app/assets/javascripts/admin/routes/admin-group.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-group.js.es6 @@ -1,8 +1,17 @@ +import Group from 'discourse/models/group'; + export default Discourse.Route.extend({ model: function(params) { - var groups = this.modelFor('adminGroupsType'), - group = groups.findProperty('name', params.name); + var groups = this.modelFor('adminGroupsType'); + if (params.name === 'new') { + return Group.create({ + automatic: false, + visible: true + }); + } + + var group = groups.findProperty('name', params.name); if (!group) { return this.transitionTo('adminGroups.index'); } diff --git a/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 b/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 index c8226f04d..def99aa7c 100644 --- a/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 @@ -9,15 +9,5 @@ export default Discourse.Route.extend({ setupController(controller, model){ controller.set("type", this.get("type")); controller.set("model", model); - }, - - actions: { - newGroup() { - const self = this; - this.transitionTo("adminGroupsType", "custom").then(function() { - var group = Discourse.Group.create({ automatic: false, visible: true }); - self.transitionTo("adminGroup", group); - }); - } } }); diff --git a/app/assets/javascripts/admin/templates/groups_type.hbs b/app/assets/javascripts/admin/templates/groups_type.hbs index 8188752a9..980ca08c8 100644 --- a/app/assets/javascripts/admin/templates/groups_type.hbs +++ b/app/assets/javascripts/admin/templates/groups_type.hbs @@ -9,7 +9,9 @@ {{/each}} </ul> <div class='controls'> - {{d-button action="newGroup" icon="plus" label="admin.groups.new"}} + {{#link-to 'adminGroup' 'new' class="btn"}} + {{fa-icon "plus"}} {{i18n 'admin.groups.new'}} + {{/link-to}} {{#if controller.isAuto}} {{d-button action="refreshAutoGroups" icon="refresh" label="admin.groups.refresh" disabled=refreshingAutoGroups}} {{/if}}