work in progress ... groups

This commit is contained in:
Sam
2013-05-08 15:20:38 +10:00
parent 7571152d1d
commit 6b536dcde5
16 changed files with 189 additions and 21 deletions

View File

@@ -1,10 +1,22 @@
Discourse.AdminGroupsController = Ember.ArrayController.extend({
itemController: 'adminGroup',
edit: function(action){
this.get('content').select(action);
edit: function(group){
this.get('model').select(group);
group.loadUsers();
},
refreshAutoGroups: function(){
var controller = this;
this.set('refreshingAutoGroups', true);
Discourse.ajax('/admin/groups/refresh_automatic_groups', {type: 'POST'}).then(function(){
controller.set('model', Discourse.Group.findAll());
controller.set('refreshingAutoGroups',false);
});
}
});
Discourse.AdminGroupController = Ember.ObjectController.extend({
Discourse.AdminGroupController = Ember.Controller.extend({
});

View File

@@ -1,4 +1,34 @@
Discourse.Group = Discourse.Model.extend({
userCountDisplay: function(){
var c = this.get('user_count');
// don't display zero its ugly
if(c > 0) {
return c;
}
}.property('user_count'),
loadUsers: function() {
var group = this;
Discourse.ajax('/admin/groups/' + this.get('id') + '/users').then(function(payload){
var users = Em.A()
payload.each(function(user){
users.addObject(Discourse.User.create(user));
});
group.set('users', users)
});
},
usernames: function() {
var users = this.get('users');
var usernames = "";
if(users) {
usernames = $.map(users, function(user){
return user.get('username');
}).join(',')
}
return usernames;
}.property('users')
});
@@ -6,19 +36,22 @@ Discourse.Group.reopenClass({
findAll: function(){
var list = Discourse.SelectableArray.create();
list.addObject(Discourse.Group.create({id: 1, name: "all mods", members: ["A","b","c"]}));
list.addObject(Discourse.Group.create({id: 2, name: "other mods", members: ["A","b","c"]}));
Discourse.ajax("/admin/groups").then(function(groups){
groups.each(function(group){
list.addObject(Discourse.Group.create(group));
});
});
return list;
},
find: function(id) {
var promise = new Em.Deferred();
setTimeout(function(){
promise.resolve(Discourse.Group.create({id: 1, name: "all mods", members: ["A","b","c"]}));
}, 1000);
return promise;
}
});

View File

@@ -1,9 +1,10 @@
Discourse.AdminGroupsRoute = Discourse.Route.extend({
model: function() {
return Discourse.Group.findAll();
},
renderTemplate: function() {
this.render('admin/templates/groups',{into: 'admin/templates/admin'});
},
setupController: function(controller, model) {
controller.set('model', Discourse.Group.findAll());
}
});

View File

@@ -3,20 +3,23 @@
<div class='content-list span6'>
<h3>{{i18n admin.groups.edit}}</h3>
<ul>
{{#each group in controller}}
{{#each group in model}}
<li>
<a href="#" {{action "edit" group}} {{bindAttr class="group.active"}}>{{group.name}}</a>
<a href="#" {{action "edit" group}} {{bindAttr class="group.active"}}>{{group.name}} <span class="count">{{group.userCountDisplay}}</span></a>
</li>
{{/each}}
</ul>
<div>
<button {{bindAttr disabled="refreshingAutoGroups"}} {{action "refreshAutoGroups"}}>Refresh Automatic Groups</button>
</div>
</div>
<div class='content-editor'>
{{#if content.active}}
{{#with content.active}}
<h3>{{name}}</h3>
{{#if model.active}}
{{#with model.active}}
<h3>{{name}}</h3>
{{view Discourse.UserSelector id="private-message-users" class="span8" placeholderKey="admin.groups.selector_placeholder" tabindex="1" usernamesBinding="usernames"}}
<button>Save</button>
<button {{bindAttr disabled="allowSave"}}>Save</button>
{{/with}}
{{else}}