Merge remote-tracking branch 'origin/develop' into develop
commit
3e1ff92bdd
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright 2017 Vector Creations Ltd.
|
Copyright 2017 Vector Creations Ltd.
|
||||||
Copyright 2017 New Vector Ltd.
|
Copyright 2017, 2018 New Vector Ltd.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -399,6 +399,9 @@ FeaturedRoom.contextTypes = GroupContext;
|
||||||
RoleUserList.contextTypes = GroupContext;
|
RoleUserList.contextTypes = GroupContext;
|
||||||
FeaturedUser.contextTypes = GroupContext;
|
FeaturedUser.contextTypes = GroupContext;
|
||||||
|
|
||||||
|
const GROUP_JOINPOLICY_OPEN = "open";
|
||||||
|
const GROUP_JOINPOLICY_INVITE = "invite";
|
||||||
|
|
||||||
export default React.createClass({
|
export default React.createClass({
|
||||||
displayName: 'GroupView',
|
displayName: 'GroupView',
|
||||||
|
|
||||||
|
@ -545,6 +548,9 @@ export default React.createClass({
|
||||||
this.setState({
|
this.setState({
|
||||||
editing: true,
|
editing: true,
|
||||||
profileForm: Object.assign({}, this.state.summary.profile),
|
profileForm: Object.assign({}, this.state.summary.profile),
|
||||||
|
joinableForm: {
|
||||||
|
policyType: this.state.summary.profile.join_policy,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'panel_disable',
|
action: 'panel_disable',
|
||||||
|
@ -607,11 +613,15 @@ export default React.createClass({
|
||||||
}).done();
|
}).done();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onJoinableChange: function(ev) {
|
||||||
|
this.setState({
|
||||||
|
joinableForm: { policyType: ev.target.value },
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
_onSaveClick: function() {
|
_onSaveClick: function() {
|
||||||
this.setState({saving: true});
|
this.setState({saving: true});
|
||||||
const savePromise = this.state.isUserPrivileged ?
|
const savePromise = this.state.isUserPrivileged ? this._saveGroup() : Promise.resolve();
|
||||||
this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm) :
|
|
||||||
Promise.resolve();
|
|
||||||
savePromise.then((result) => {
|
savePromise.then((result) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
saving: false,
|
saving: false,
|
||||||
|
@ -642,6 +652,13 @@ export default React.createClass({
|
||||||
}).done();
|
}).done();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_saveGroup: async function() {
|
||||||
|
await this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm);
|
||||||
|
await this._matrixClient.setGroupJoinPolicy(this.props.groupId, {
|
||||||
|
type: this.state.joinableForm.policyType,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
_onAcceptInviteClick: function() {
|
_onAcceptInviteClick: function() {
|
||||||
this.setState({membershipBusy: true});
|
this.setState({membershipBusy: true});
|
||||||
this._groupStore.acceptGroupInvite().then(() => {
|
this._groupStore.acceptGroupInvite().then(() => {
|
||||||
|
@ -735,6 +752,7 @@ export default React.createClass({
|
||||||
return <div className={groupSettingsSectionClasses}>
|
return <div className={groupSettingsSectionClasses}>
|
||||||
{ header }
|
{ header }
|
||||||
{ changeDelayWarning }
|
{ changeDelayWarning }
|
||||||
|
{ this._getJoinableNode() }
|
||||||
{ this._getLongDescriptionNode() }
|
{ this._getLongDescriptionNode() }
|
||||||
{ this._getRoomsNode() }
|
{ this._getRoomsNode() }
|
||||||
</div>;
|
</div>;
|
||||||
|
@ -983,6 +1001,41 @@ export default React.createClass({
|
||||||
</div>;
|
</div>;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_getJoinableNode: function() {
|
||||||
|
return this.state.editing ? <div>
|
||||||
|
<h3>
|
||||||
|
{ _t('Who can join this community?') }
|
||||||
|
{ this.state.groupJoinableLoading ?
|
||||||
|
<InlineSpinner /> : <div />
|
||||||
|
}
|
||||||
|
</h3>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="radio"
|
||||||
|
value={GROUP_JOINPOLICY_INVITE}
|
||||||
|
checked={this.state.joinableForm.policyType === GROUP_JOINPOLICY_INVITE}
|
||||||
|
onClick={this._onJoinableChange}
|
||||||
|
/>
|
||||||
|
<div className="mx_GroupView_label_text">
|
||||||
|
{ _t('Only people who have been invited') }
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
<input type="radio"
|
||||||
|
value={GROUP_JOINPOLICY_OPEN}
|
||||||
|
checked={this.state.joinableForm.policyType === GROUP_JOINPOLICY_OPEN}
|
||||||
|
onClick={this._onJoinableChange}
|
||||||
|
/>
|
||||||
|
<div className="mx_GroupView_label_text">
|
||||||
|
{ _t('Everyone') }
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div> : null;
|
||||||
|
},
|
||||||
|
|
||||||
_getLongDescriptionNode: function() {
|
_getLongDescriptionNode: function() {
|
||||||
const summary = this.state.summary;
|
const summary = this.state.summary;
|
||||||
let description = null;
|
let description = null;
|
||||||
|
|
|
@ -787,6 +787,8 @@
|
||||||
"Join this community": "Join this community",
|
"Join this community": "Join this community",
|
||||||
"You are an administrator of this community": "You are an administrator of this community",
|
"You are an administrator of this community": "You are an administrator of this community",
|
||||||
"You are a member of this community": "You are a member of this community",
|
"You are a member of this community": "You are a member of this community",
|
||||||
|
"Who can join this community?": "Who can join this community?",
|
||||||
|
"Everyone": "Everyone",
|
||||||
"Leave this community": "Leave this community",
|
"Leave this community": "Leave this community",
|
||||||
"Your community hasn't got a Long Description, a HTML page to show to community members.<br />Click here to open settings and give it one!": "Your community hasn't got a Long Description, a HTML page to show to community members.<br />Click here to open settings and give it one!",
|
"Your community hasn't got a Long Description, a HTML page to show to community members.<br />Click here to open settings and give it one!": "Your community hasn't got a Long Description, a HTML page to show to community members.<br />Click here to open settings and give it one!",
|
||||||
"Long Description (HTML)": "Long Description (HTML)",
|
"Long Description (HTML)": "Long Description (HTML)",
|
||||||
|
|
Loading…
Reference in New Issue