FEATURE: Public groups.

This commit is contained in:
Guo Xiang Tan
2016-12-07 12:06:56 +08:00
parent 78553151ea
commit be5b5f6bea
14 changed files with 352 additions and 187 deletions

View File

@@ -1,6 +1,6 @@
import { popupAjaxError } from 'discourse/lib/ajax-error';
import Group from 'discourse/models/group';
import { observes } from 'ember-addons/ember-computed-decorators';
import { default as computed, observes } from 'ember-addons/ember-computed-decorators';
export default Ember.Controller.extend({
queryParams: ['order', 'desc'],
@@ -17,6 +17,11 @@ export default Ember.Controller.extend({
this.get('model').findMembers({ order: this.get('order'), desc: this.get('desc') });
},
@computed("model.public")
canJoinGroup(publicGroup) {
return !!(this.currentUser) && publicGroup;
},
actions: {
removeMember(user) {
this.get('model').removeMember(user);
@@ -29,6 +34,28 @@ export default Ember.Controller.extend({
}
},
joinGroup() {
this.set('updatingMembership', true);
const model = this.get('model');
model.addMembers(this.currentUser.get('username')).then(() => {
model.set('is_group_user', true);
}).catch(popupAjaxError).finally(() => {
this.set('updatingMembership', false);
});
},
leaveGroup() {
this.set('updatingMembership', true);
const model = this.get('model');
model.removeMember(this.currentUser).then(() => {
model.set('is_group_user', false);
}).catch(popupAjaxError).finally(() => {
this.set('updatingMembership', false);
});
},
loadMore() {
if (this.get("loading")) { return; }
if (this.get("model.members.length") >= this.get("model.user_count")) { return; }

View File

@@ -114,7 +114,8 @@ const Group = Discourse.Model.extend({
flair_url: this.get('flair_url'),
flair_bg_color: this.get('flairBackgroundHexColor'),
flair_color: this.get('flairHexColor'),
bio_raw: this.get('bio_raw')
bio_raw: this.get('bio_raw'),
public: this.get('public')
};
},

View File

@@ -4,6 +4,20 @@
{{user-selector usernames=usernames placeholderKey="groups.selector_placeholder" id="user-search-selector" name="usernames"}}
{{d-button action="addMembers" class="add" icon="plus" label="groups.add"}}
</form>
{{else if canJoinGroup}}
{{#if model.is_group_user}}
{{d-button action="leaveGroup"
class="btn-danger group-index-leave"
icon="minus"
label="group.leave"
disabled=updatingMembership}}
{{else}}
{{d-button action="joinGroup"
class="group-index-join"
icon="plus"
label="group.join"
disabled=updatingMembership}}
{{/if}}
{{/if}}
{{#load-more selector=".group-members tr" action="loadMore"}}

View File

@@ -1,4 +1,4 @@
{{#d-modal-body title="group.edit.title" class="edit-group groups"}}
{{#d-modal-body title="group.title" class="edit-group groups"}}
<form class="form-horizontal">
<label for='title'>{{i18n 'group.title'}}</label>
{{input type='text' name='title' value=model.title class='edit-group-title'}}
@@ -7,6 +7,11 @@
{{d-editor value=model.bio_raw class="edit-group-bio"}}
{{group-flair-inputs model=model}}
<label>
{{input type='checkbox' checked=model.public class="edit-group-public"}}
{{i18n 'group.public'}}
</label>
</form>
{{/d-modal-body}}