summaryrefslogtreecommitdiffstats
path: root/webapp/components/sidebar_header_dropdown.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/sidebar_header_dropdown.jsx')
-rw-r--r--webapp/components/sidebar_header_dropdown.jsx185
1 files changed, 139 insertions, 46 deletions
diff --git a/webapp/components/sidebar_header_dropdown.jsx b/webapp/components/sidebar_header_dropdown.jsx
index a0a0205be..baa8aae7b 100644
--- a/webapp/components/sidebar_header_dropdown.jsx
+++ b/webapp/components/sidebar_header_dropdown.jsx
@@ -14,6 +14,7 @@ import AboutBuildModal from './about_build_modal.jsx';
import SidebarHeaderDropdownButton from './sidebar_header_dropdown_button.jsx';
import TeamMembersModal from './team_members_modal.jsx';
import UserSettingsModal from './user_settings/user_settings_modal.jsx';
+import AddUsersToTeam from './add_users_to_team.jsx';
import {Constants, WebrtcActionTypes} from 'utils/constants.jsx';
@@ -43,6 +44,8 @@ export default class SidebarHeaderDropdown extends React.Component {
this.handleAboutModal = this.handleAboutModal.bind(this);
this.aboutModalDismissed = this.aboutModalDismissed.bind(this);
this.toggleAccountSettingsModal = this.toggleAccountSettingsModal.bind(this);
+ this.showAddUsersToTeamModal = this.showAddUsersToTeamModal.bind(this);
+ this.hideAddUsersToTeamModal = this.hideAddUsersToTeamModal.bind(this);
this.showInviteMemberModal = this.showInviteMemberModal.bind(this);
this.showGetTeamInviteLinkModal = this.showGetTeamInviteLinkModal.bind(this);
this.showTeamMembersModal = this.showTeamMembersModal.bind(this);
@@ -61,7 +64,8 @@ export default class SidebarHeaderDropdown extends React.Component {
showAboutModal: false,
showDropdown: false,
showTeamMembersModal: false,
- showUserSettingsModal: false
+ showUserSettingsModal: false,
+ showAddUsersToTeamModal: false
};
}
@@ -102,6 +106,21 @@ export default class SidebarHeaderDropdown extends React.Component {
});
}
+ showAddUsersToTeamModal(e) {
+ e.preventDefault();
+
+ this.setState({
+ showAddUsersToTeamModal: true,
+ showDropdown: false
+ });
+ }
+
+ hideAddUsersToTeamModal() {
+ this.setState({
+ showAddUsersToTeamModal: false
+ });
+ }
+
showInviteMemberModal(e) {
e.preventDefault();
@@ -181,6 +200,7 @@ export default class SidebarHeaderDropdown extends React.Component {
const currentUser = this.props.currentUser;
let teamLink = '';
let inviteLink = '';
+ let addMemberToTeam = '';
let manageLink = '';
let sysAdminLink = '';
let isAdmin = false;
@@ -204,7 +224,22 @@ export default class SidebarHeaderDropdown extends React.Component {
>
<FormattedMessage
id='navbar_dropdown.inviteMember'
- defaultMessage='Invite New Member'
+ defaultMessage='Send Email Invite'
+ />
+ </a>
+ </li>
+ );
+
+ addMemberToTeam = (
+ <li>
+ <a
+ id='addUsersToTeam'
+ href='#'
+ onClick={this.showAddUsersToTeamModal}
+ >
+ <FormattedMessage
+ id='navbar_dropdown.addMemberToTeam'
+ defaultMessage='Add Members to Team'
/>
</a>
</li>
@@ -230,9 +265,11 @@ export default class SidebarHeaderDropdown extends React.Component {
if (config.RestrictTeamInvite === Constants.PERMISSIONS_SYSTEM_ADMIN && !isSystemAdmin) {
teamLink = null;
inviteLink = null;
+ addMemberToTeam = null;
} else if (config.RestrictTeamInvite === Constants.PERMISSIONS_TEAM_ADMIN && !isAdmin) {
teamLink = null;
inviteLink = null;
+ addMemberToTeam = null;
}
}
}
@@ -416,10 +453,8 @@ export default class SidebarHeaderDropdown extends React.Component {
);
}
- let nativeAppDivider = null;
let nativeAppLink = null;
if (global.window.mm_config.AppDownloadLink && !UserAgent.isMobileApp()) {
- nativeAppDivider = <li className='divider'/>;
nativeAppLink = (
<li>
<Link
@@ -447,6 +482,92 @@ export default class SidebarHeaderDropdown extends React.Component {
);
}
+ let addUsersToTeamModal;
+ if (this.state.showAddUsersToTeamModal) {
+ addUsersToTeamModal = (
+ <AddUsersToTeam
+ onModalDismissed={this.hideAddUsersToTeamModal}
+ />
+ );
+ }
+
+ const accountSettings = (
+ <li>
+ <a
+ id='accountSettings'
+ href='#'
+ onClick={this.toggleAccountSettingsModal}
+ >
+ <FormattedMessage
+ id='navbar_dropdown.accountSettings'
+ defaultMessage='Account Settings'
+ />
+ </a>
+ </li>
+ );
+
+ const about = (
+ <li>
+ <a
+ href='#'
+ onClick={this.handleAboutModal}
+ >
+ <FormattedMessage
+ id='navbar_dropdown.about'
+ defaultMessage='About Mattermost'
+ />
+ </a>
+ </li>
+ );
+
+ const logout = (
+ <li>
+ <a
+ id='logout'
+ href='#'
+ onClick={() => GlobalActions.emitUserLoggedOutEvent()}
+ >
+ <FormattedMessage
+ id='navbar_dropdown.logout'
+ defaultMessage='Logout'
+ />
+ </a>
+ </li>
+ );
+
+ const customEmoji = this.renderCustomEmojiLink();
+
+ // Dividers.
+ let inviteDivider = null;
+ if (inviteLink || teamLink || addMemberToTeam) {
+ inviteDivider = <li className='divider'/>;
+ }
+
+ let teamDivider = null;
+ if (teamSettings || manageLink || teams) {
+ teamDivider = <li className='divider'/>;
+ }
+
+ let backstageDivider = null;
+ if (integrationsLink || customEmoji) {
+ backstageDivider = <li className='divider'/>;
+ }
+
+ let sysAdminDivider = null;
+ if (sysAdminLink) {
+ sysAdminDivider = <li className='divider'/>;
+ }
+
+ let helpDivider = null;
+ if (helpLink || reportLink || nativeAppLink || about) {
+ helpDivider = <li className='divider'/>;
+ }
+
+ let logoutDivider = null;
+ if (logout) {
+ logoutDivider = <li className='divider'/>;
+ }
+
return (
<Dropdown
id='sidebar-header-dropdown'
@@ -460,56 +581,27 @@ export default class SidebarHeaderDropdown extends React.Component {
onClick={this.toggleDropdown}
/>
<Dropdown.Menu>
- <li>
- <a
- id='accountSettings'
- href='#'
- onClick={this.toggleAccountSettingsModal}
- >
- <FormattedMessage
- id='navbar_dropdown.accountSettings'
- defaultMessage='Account Settings'
- />
- </a>
- </li>
+ {accountSettings}
+ {inviteDivider}
{inviteLink}
{teamLink}
- <li>
- <a
- id='logout'
- href='#'
- onClick={() => GlobalActions.emitUserLoggedOutEvent()}
- >
- <FormattedMessage
- id='navbar_dropdown.logout'
- defaultMessage='Logout'
- />
- </a>
- </li>
- <li className='divider'/>
- {integrationsLink}
- {this.renderCustomEmojiLink()}
- <li className='divider'/>
+ {addMemberToTeam}
+ {teamDivider}
{teamSettings}
{manageLink}
- {sysAdminLink}
{teams}
- <li className='divider'/>
+ {backstageDivider}
+ {integrationsLink}
+ {customEmoji}
+ {sysAdminDivider}
+ {sysAdminLink}
+ {helpDivider}
{helpLink}
{reportLink}
- <li>
- <a
- href='#'
- onClick={this.handleAboutModal}
- >
- <FormattedMessage
- id='navbar_dropdown.about'
- defaultMessage='About Mattermost'
- />
- </a>
- </li>
- {nativeAppDivider}
{nativeAppLink}
+ {about}
+ {logoutDivider}
+ {logout}
<UserSettingsModal
show={this.state.showUserSettingsModal}
onModalDismissed={() => this.setState({showUserSettingsModal: false})}
@@ -519,6 +611,7 @@ export default class SidebarHeaderDropdown extends React.Component {
show={this.state.showAboutModal}
onModalDismissed={this.aboutModalDismissed}
/>
+ {addUsersToTeamModal}
</Dropdown.Menu>
</Dropdown>
);