Add modified view members modal to Town Square (#5695)
Этот коммит содержится в:
коммит произвёл
George Goldberg
родитель
f758f9ff3a
Коммит
ff8b91027f
@@ -462,6 +462,27 @@ export default class ChannelHeader extends React.Component {
|
|||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (ChannelStore.isDefault(channel)) {
|
||||||
|
dropdownContents.push(
|
||||||
|
<li
|
||||||
|
id='channelManageMembers'
|
||||||
|
key='manage_members'
|
||||||
|
role='presentation'
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
role='menuitem'
|
||||||
|
href='#'
|
||||||
|
onClick={() => this.setState({showMembersModal: true})}
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='channel_header.viewMembers'
|
||||||
|
defaultMessage='View Members'
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
dropdownContents.push(
|
dropdownContents.push(
|
||||||
<li
|
<li
|
||||||
id='channelNotificationPreferences'
|
id='channelNotificationPreferences'
|
||||||
@@ -723,7 +744,7 @@ export default class ChannelHeader extends React.Component {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let channelMembersModal;
|
let channelMembersModal;
|
||||||
if (this.state.showMembersModal && channel.name !== Constants.DEFAULT_CHANNEL) {
|
if (this.state.showMembersModal) {
|
||||||
channelMembersModal = (
|
channelMembersModal = (
|
||||||
<ChannelMembersModal
|
<ChannelMembersModal
|
||||||
onModalDismissed={() => this.setState({showMembersModal: false})}
|
onModalDismissed={() => this.setState({showMembersModal: false})}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {removeUserFromChannel, makeUserChannelAdmin, makeUserChannelMember} from
|
|||||||
import * as AsyncClient from 'utils/async_client.jsx';
|
import * as AsyncClient from 'utils/async_client.jsx';
|
||||||
import * as Utils from 'utils/utils.jsx';
|
import * as Utils from 'utils/utils.jsx';
|
||||||
import {canManageMembers} from 'utils/channel_utils.jsx';
|
import {canManageMembers} from 'utils/channel_utils.jsx';
|
||||||
|
import {Constants} from 'utils/constants.jsx';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {FormattedMessage} from 'react-intl';
|
import {FormattedMessage} from 'react-intl';
|
||||||
@@ -127,7 +128,7 @@ export default class ChannelMembersDropdown extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let removeFromChannel = null;
|
let removeFromChannel = null;
|
||||||
if (this.canRemoveMember()) {
|
if (this.canRemoveMember() && this.props.channel.name !== Constants.DEFAULT_CHANNEL) {
|
||||||
removeFromChannel = (
|
removeFromChannel = (
|
||||||
<li role='presentation'>
|
<li role='presentation'>
|
||||||
<a
|
<a
|
||||||
@@ -207,7 +208,7 @@ export default class ChannelMembersDropdown extends React.Component {
|
|||||||
{serverError}
|
{serverError}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
} else if (this.canRemoveMember()) {
|
} else if (this.canRemoveMember() && this.props.channel.name !== Constants.DEFAULT_CHANNEL) {
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
id='removeMember'
|
id='removeMember'
|
||||||
@@ -222,6 +223,12 @@ export default class ChannelMembersDropdown extends React.Component {
|
|||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
} else if (this.isChannelAdmin()) {
|
} else if (this.isChannelAdmin()) {
|
||||||
|
if (this.props.channel.name === Constants.DEFAULT_CHANNEL) {
|
||||||
|
return (
|
||||||
|
<div/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
@@ -232,6 +239,12 @@ export default class ChannelMembersDropdown extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.props.channel.name === Constants.DEFAULT_CHANNEL) {
|
||||||
|
return (
|
||||||
|
<div/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import UserStore from 'stores/user_store.jsx';
|
|||||||
import ChannelStore from 'stores/channel_store.jsx';
|
import ChannelStore from 'stores/channel_store.jsx';
|
||||||
|
|
||||||
import {canManageMembers} from 'utils/channel_utils.jsx';
|
import {canManageMembers} from 'utils/channel_utils.jsx';
|
||||||
|
import {Constants} from 'utils/constants.jsx';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {Modal} from 'react-bootstrap';
|
import {Modal} from 'react-bootstrap';
|
||||||
@@ -35,7 +36,7 @@ export default class ChannelMembersModal extends React.Component {
|
|||||||
const isChannelAdmin = ChannelStore.isChannelAdminForCurrentChannel();
|
const isChannelAdmin = ChannelStore.isChannelAdminForCurrentChannel();
|
||||||
|
|
||||||
let addMembersButton = null;
|
let addMembersButton = null;
|
||||||
if (canManageMembers(this.state.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin)) {
|
if (canManageMembers(this.state.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin) && this.state.channel.name !== Constants.DEFAULT_CHANNEL) {
|
||||||
addMembersButton = (
|
addMembersButton = (
|
||||||
<a
|
<a
|
||||||
id='showInviteModal'
|
id='showInviteModal'
|
||||||
|
|||||||
@@ -349,7 +349,25 @@ export default class Navbar extends React.Component {
|
|||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!ChannelStore.isDefault(channel)) {
|
if (ChannelStore.isDefault(channel)) {
|
||||||
|
manageMembersOption = (
|
||||||
|
<li
|
||||||
|
key='view_members'
|
||||||
|
role='presentation'
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
role='menuitem'
|
||||||
|
href='#'
|
||||||
|
onClick={this.showMembersModal}
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='channel_header.viewMembers'
|
||||||
|
defaultMessage='View Members'
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
} else {
|
||||||
addMembersOption = (
|
addMembersOption = (
|
||||||
<li role='presentation'>
|
<li role='presentation'>
|
||||||
<ToggleModalButton
|
<ToggleModalButton
|
||||||
|
|||||||
@@ -70,17 +70,10 @@ export default class PopoverListMembers extends React.Component {
|
|||||||
showMembersModal(e) {
|
showMembersModal(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
if (ChannelStore.isDefault(this.props.channel)) {
|
this.setState({
|
||||||
this.setState({
|
showPopover: false,
|
||||||
showPopover: false,
|
showChannelMembersModal: true
|
||||||
showTeamMembersModal: true
|
});
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.setState({
|
|
||||||
showPopover: false,
|
|
||||||
showChannelMembersModal: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -158,7 +151,11 @@ export default class PopoverListMembers extends React.Component {
|
|||||||
defaultMessage='Manage Members'
|
defaultMessage='Manage Members'
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
if (!canManageMembers(this.props.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin) && !ChannelStore.isDefault(this.props.channel)) {
|
|
||||||
|
const manageMembers = canManageMembers(this.props.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin);
|
||||||
|
const isDefaultChannel = ChannelStore.isDefault(this.props.channel);
|
||||||
|
|
||||||
|
if ((manageMembers === false && isDefaultChannel === false) || isDefaultChannel) {
|
||||||
membersName = (
|
membersName = (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='members_popover.viewMembers'
|
id='members_popover.viewMembers'
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user