Move Discourse.Group into public models

This commit is contained in:
Robin Ward
2014-02-06 13:40:04 -05:00
parent de57f29467
commit 003eb06807
9 changed files with 86 additions and 65 deletions
@@ -1,5 +1,6 @@
Discourse.AdminGroupsController = Ember.Controller.extend({
itemController: 'adminGroup',
aliasLevels: null,
actions: {
edit: function(group){
@@ -10,6 +10,11 @@ Discourse.AdminGroupsRoute = Discourse.Route.extend({
model: function() {
return Discourse.Group.findAll();
},
setupController: function(controller, model) {
controller.set('model', model);
controller.set('aliasLevelOptions', Discourse.Group.aliasLevelOptions());
}
});
@@ -31,9 +31,9 @@
</div>
</div>
<div class="control-group">
<label class="control-label">{{i18n admin.groups.alias_levels.title}}</label>
<label class="control-label">{{i18n groups.alias_levels.title}}</label>
<div class="controls">
{{combobox valueAttribute="value" value=alias_level content=validValues}}
{{combobox valueAttribute="value" value=alias_level content=controller.aliasLevelOptions}}
</div>
</div>
<div class='controls'>
@@ -1,15 +1,28 @@
/**
The data model for a Group
@class Group
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
var ALIAS_LEVELS = {
nobody: 0,
only_admins: 1,
mods_and_admins: 2,
members_mods_and_admins: 3,
everyone: 99
},
aliasLevelOptions = [
{ name: I18n.t("groups.alias_levels.nobody"), value: ALIAS_LEVELS.nobody},
{ name: I18n.t("groups.alias_levels.mods_and_admins"), value: ALIAS_LEVELS.mods_and_admins},
{ name: I18n.t("groups.alias_levels.members_mods_and_admins"), value: ALIAS_LEVELS.members_mods_and_admins},
{ name: I18n.t("groups.alias_levels.everyone"), value: ALIAS_LEVELS.everyone}
];
Discourse.Group = Discourse.Model.extend({
loaded: false,
ALIAS_LEVELS : {
"nobody": 0,
"only_admins": 1,
"mods_and_admins": 2,
"members_mods_and_admins": 3,
"everyone": 99
},
userCountDisplay: function(){
var c = this.get('user_count');
// don't display zero its ugly
@@ -21,14 +34,14 @@ Discourse.Group = Discourse.Model.extend({
load: function() {
var id = this.get('id');
if(id && !this.get('loaded')) {
var group = this;
var self = this;
Discourse.ajax('/admin/groups/' + this.get('id') + '/users').then(function(payload){
var users = Em.A();
_.each(payload,function(user){
users.addObject(Discourse.User.create(user));
});
group.set('users', users);
group.set('loaded', true);
self.set('users', users);
self.set('loaded', true);
});
}
},
@@ -44,35 +57,25 @@ Discourse.Group = Discourse.Model.extend({
return usernames;
}.property('users'),
validValues: function() {
return Em.A([
{ name: I18n.t("admin.groups.alias_levels.nobody"), value: this.ALIAS_LEVELS.nobody},
{ name: I18n.t("admin.groups.alias_levels.only_admins"), value: this.ALIAS_LEVELS.only_admins},
{ name: I18n.t("admin.groups.alias_levels.mods_and_admins"), value: this.ALIAS_LEVELS.mods_and_admins},
{ name: I18n.t("admin.groups.alias_levels.members_mods_and_admins"), value: this.ALIAS_LEVELS.members_mods_and_admins},
{ name: I18n.t("admin.groups.alias_levels.everyone"), value: this.ALIAS_LEVELS.everyone}
]);
}.property(),
destroy: function(){
if(!this.id) return;
var group = this;
group.set('disableSave', true);
var self = this;
this.set('disableSave', true);
return Discourse.ajax("/admin/groups/" + group.get('id'), {type: "DELETE"})
return Discourse.ajax("/admin/groups/" + this.get('id'), {type: "DELETE"})
.then(function(){
return true;
}, function() {
group.set('disableSave', false);
self.set('disableSave', false);
bootbox.alert(I18n.t("admin.groups.delete_failed"));
return false;
});
},
create: function(){
var group = this;
group.set('disableSave', true);
var self = this;
self.set('disableSave', true);
return Discourse.ajax("/admin/groups", {type: "POST", data: {
group: {
@@ -81,10 +84,10 @@ Discourse.Group = Discourse.Model.extend({
usernames: this.get('usernames')
}
}}).then(function(resp) {
group.set('disableSave', false);
group.set('id', resp.id);
self.set('disableSave', false);
self.set('id', resp.id);
}, function (error) {
group.set('disableSave', false);
self.set('disableSave', false);
if (error && error.responseText) {
bootbox.alert($.parseJSON(error.responseText).errors);
}
@@ -95,8 +98,8 @@ Discourse.Group = Discourse.Model.extend({
},
save: function(){
var group = this;
group.set('disableSave', true);
var self = this;
self.set('disableSave', true);
return Discourse.ajax("/admin/groups/" + this.get('id'), {
type: "PUT",
@@ -108,7 +111,7 @@ Discourse.Group = Discourse.Model.extend({
}
}
}).then(function(){
group.set('disableSave', false);
self.set('disableSave', false);
}, function(e){
var message = $.parseJSON(e.responseText).errors;
bootbox.alert(message);
@@ -128,5 +131,9 @@ Discourse.Group.reopenClass({
});
return list;
},
aliasLevelOptions: function() {
return aliasLevelOptions;
}
});
@@ -1,7 +1,7 @@
Discourse.GroupRoute = Discourse.Route.extend({
model: function() {
return Discourse.AdminGroup.create();
return Discourse.Group.create();
},
});