mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Public groups.
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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')
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@@ -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"}}
|
||||
|
||||
@@ -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}}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user