diff options
Diffstat (limited to 'webapp/components/sidebar_header_dropdown.jsx')
-rw-r--r-- | webapp/components/sidebar_header_dropdown.jsx | 643 |
1 files changed, 0 insertions, 643 deletions
diff --git a/webapp/components/sidebar_header_dropdown.jsx b/webapp/components/sidebar_header_dropdown.jsx deleted file mode 100644 index 63a5c2541..000000000 --- a/webapp/components/sidebar_header_dropdown.jsx +++ /dev/null @@ -1,643 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import $ from 'jquery'; -import ReactDOM from 'react-dom'; -import * as UserAgent from 'utils/user_agent.jsx'; -import * as Utils from 'utils/utils.jsx'; -import * as GlobalActions from 'actions/global_actions.jsx'; - -import TeamStore from 'stores/team_store.jsx'; -import UserStore from 'stores/user_store.jsx'; -import WebrtcStore from 'stores/webrtc_store.jsx'; -import AboutBuildModal from './about_build_modal.jsx'; -import SidebarHeaderDropdownButton from './sidebar_header_dropdown_button.jsx'; -import TeamMembersModal from './team_members_modal.jsx'; -import AddUsersToTeam from 'components/add_users_to_team'; - -import {Constants, WebrtcActionTypes} from 'utils/constants.jsx'; - -import {Dropdown} from 'react-bootstrap'; -import {FormattedMessage} from 'react-intl'; -import {Link} from 'react-router/es6'; - -import PropTypes from 'prop-types'; - -import React from 'react'; - -export default class SidebarHeaderDropdown extends React.Component { - static propTypes = { - teamType: PropTypes.string, - teamDisplayName: PropTypes.string, - teamName: PropTypes.string, - currentUser: PropTypes.object - }; - - static defaultProps = { - teamType: '' - }; - - constructor(props) { - super(props); - - this.toggleDropdown = this.toggleDropdown.bind(this); - - this.handleAboutModal = this.handleAboutModal.bind(this); - this.aboutModalDismissed = this.aboutModalDismissed.bind(this); - this.showAccountSettingsModal = this.showAccountSettingsModal.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); - this.hideTeamMembersModal = this.hideTeamMembersModal.bind(this); - this.showShortcutsModal = this.showShortcutsModal.bind(this); - - this.onTeamChange = this.onTeamChange.bind(this); - - this.renderCustomEmojiLink = this.renderCustomEmojiLink.bind(this); - - this.handleClick = this.handleClick.bind(this); - - this.state = { - teamMembers: TeamStore.getMyTeamMembers(), - teamListings: TeamStore.getTeamListings(), - showAboutModal: false, - showDropdown: false, - showTeamMembersModal: false, - showAddUsersToTeamModal: false - }; - } - - handleClick(e) { - if (WebrtcStore.isBusy()) { - WebrtcStore.emitChanged({action: WebrtcActionTypes.IN_PROGRESS}); - e.preventDefault(); - } - } - - toggleDropdown(val) { - if (typeof (val) === 'boolean') { - this.setState({showDropdown: val}); - return; - } - - if (val && val.preventDefault) { - val.preventDefault(); - } - - this.setState({showDropdown: !this.state.showDropdown}); - } - - handleAboutModal(e) { - e.preventDefault(); - - this.setState({ - showAboutModal: true, - showDropdown: false - }); - } - - aboutModalDismissed() { - this.setState({showAboutModal: false}); - } - - showAccountSettingsModal(e) { - e.preventDefault(); - - this.setState({showDropdown: false}); - - GlobalActions.showAccountSettingsModal(); - } - - showShortcutsModal(e) { - e.preventDefault(); - this.setState({showDropdown: false}); - - GlobalActions.showShortcutsModal(); - } - - showAddUsersToTeamModal(e) { - e.preventDefault(); - - this.setState({ - showAddUsersToTeamModal: true, - showDropdown: false - }); - } - - hideAddUsersToTeamModal() { - this.setState({ - showAddUsersToTeamModal: false - }); - } - - showInviteMemberModal(e) { - e.preventDefault(); - - this.setState({showDropdown: false}); - - GlobalActions.showInviteMemberModal(); - } - - showGetTeamInviteLinkModal(e) { - e.preventDefault(); - - this.setState({showDropdown: false}); - - GlobalActions.showGetTeamInviteLinkModal(); - } - - showTeamMembersModal(e) { - e.preventDefault(); - - this.setState({ - showTeamMembersModal: true - }); - } - - hideTeamMembersModal() { - this.setState({ - showTeamMembersModal: false - }); - } - - componentDidMount() { - TeamStore.addChangeListener(this.onTeamChange); - } - - onTeamChange() { - this.setState({ - teamMembers: TeamStore.getMyTeamMembers(), - teamListings: TeamStore.getTeamListings(), - showDropdown: false - }); - } - - componentWillUnmount() { - $(ReactDOM.findDOMNode(this.refs.dropdown)).off('hide.bs.dropdown'); - TeamStore.removeChangeListener(this.onTeamChange); - } - - renderCustomEmojiLink() { - if (window.mm_config.EnableCustomEmoji !== 'true' || !Utils.canCreateCustomEmoji(this.props.currentUser)) { - return null; - } - - return ( - <li> - <Link - id='customEmoji' - onClick={this.handleClick} - to={'/' + this.props.teamName + '/emoji'} - > - <FormattedMessage - id='navbar_dropdown.emoji' - defaultMessage='Custom Emoji' - /> - </Link> - </li> - ); - } - - render() { - const config = global.mm_config; - const currentUser = this.props.currentUser; - let teamLink = ''; - let inviteLink = ''; - let addMemberToTeam = ''; - let manageLink = ''; - let sysAdminLink = ''; - let isAdmin = false; - let isSystemAdmin = false; - let teamSettings = null; - let integrationsLink = null; - - if (!currentUser) { - return null; - } - - if (currentUser != null) { - isAdmin = TeamStore.isTeamAdminForCurrentTeam() || UserStore.isSystemAdminForCurrentUser(); - isSystemAdmin = UserStore.isSystemAdminForCurrentUser(); - - inviteLink = ( - <li> - <a - id='sendEmailInvite' - href='#' - onClick={this.showInviteMemberModal} - > - <FormattedMessage - id='navbar_dropdown.inviteMember' - 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> - ); - - if (this.props.teamType === Constants.OPEN_TEAM && config.EnableUserCreation === 'true') { - teamLink = ( - <li> - <a - id='getTeamInviteLink' - href='#' - onClick={this.showGetTeamInviteLinkModal} - > - <FormattedMessage - id='navbar_dropdown.teamLink' - defaultMessage='Get Team Invite Link' - /> - </a> - </li> - ); - } - - if (global.window.mm_license.IsLicensed === 'true') { - 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; - } - } - } - - let membersName = ( - <FormattedMessage - id='navbar_dropdown.manageMembers' - defaultMessage='Manage Members' - /> - ); - - if (isAdmin) { - teamSettings = ( - <li> - <a - id='teamSettings' - href='#' - data-toggle='modal' - data-target='#team_settings' - onClick={this.toggleDropdown} - > - <FormattedMessage - id='navbar_dropdown.teamSettings' - defaultMessage='Team Settings' - /> - </a> - </li> - ); - } else { - membersName = ( - <FormattedMessage - id='navbar_dropdown.viewMembers' - defaultMessage='View Members' - /> - ); - } - - manageLink = ( - <li> - <a - href='#' - onClick={this.showTeamMembersModal} - > - {membersName} - </a> - </li> - ); - - const integrationsEnabled = - config.EnableIncomingWebhooks === 'true' || - config.EnableOutgoingWebhooks === 'true' || - config.EnableCommands === 'true' || - (config.EnableOAuthServiceProvider === 'true' && (isSystemAdmin || config.EnableOnlyAdminIntegrations !== 'true')); - if (integrationsEnabled && (isAdmin || config.EnableOnlyAdminIntegrations !== 'true')) { - integrationsLink = ( - <li> - <Link - id='Integrations' - to={'/' + this.props.teamName + '/integrations'} - onClick={this.handleClick} - > - <FormattedMessage - id='navbar_dropdown.integrations' - defaultMessage='Integrations' - /> - </Link> - </li> - ); - } - - if (isSystemAdmin) { - sysAdminLink = ( - <li> - <Link - id='systemConsole' - to={'/admin_console'} - onClick={this.handleClick} - > - <FormattedMessage - id='navbar_dropdown.console' - defaultMessage='System Console' - /> - </Link> - </li> - ); - } - - const teams = []; - let moreTeams = false; - - if (config.EnableTeamCreation === 'true' || UserStore.isSystemAdminForCurrentUser()) { - teams.push( - <li key='newTeam_li'> - <Link - id='createTeam' - key='newTeam_a' - to='/create_team' - onClick={this.handleClick} - > - <FormattedMessage - id='navbar_dropdown.create' - defaultMessage='Create a New Team' - /> - </Link> - </li> - ); - } - - const isAlreadyMember = this.state.teamMembers.reduce((result, item) => { - result[item.team_id] = true; - return result; - }, {}); - - for (const id in this.state.teamListings) { - if (this.state.teamListings.hasOwnProperty(id) && !isAlreadyMember[id]) { - moreTeams = true; - break; - } - } - - if (moreTeams) { - teams.push( - <li key='joinTeam_li'> - <Link - id='joinAnotherTeam' - onClick={this.handleClick} - to='/select_team' - > - <FormattedMessage - id='navbar_dropdown.join' - defaultMessage='Join Another Team' - /> - </Link> - </li> - ); - } - - teams.push( - <li key='leaveTeam_li'> - <a - id='leaveTeam' - href='#' - onClick={GlobalActions.showLeaveTeamModal} - > - <FormattedMessage - id='navbar_dropdown.leave' - defaultMessage='Leave Team' - /> - </a> - </li> - ); - - let helpLink = null; - if (config.HelpLink) { - helpLink = ( - <li> - <Link - target='_blank' - rel='noopener noreferrer' - to={config.HelpLink} - > - <FormattedMessage - id='navbar_dropdown.help' - defaultMessage='Help' - /> - </Link> - </li> - ); - } - - let reportLink = null; - if (config.ReportAProblemLink) { - reportLink = ( - <li> - <Link - target='_blank' - rel='noopener noreferrer' - to={config.ReportAProblemLink} - > - <FormattedMessage - id='navbar_dropdown.report' - defaultMessage='Report a Problem' - /> - </Link> - </li> - ); - } - - let nativeAppLink = null; - if (global.window.mm_config.AppDownloadLink && !UserAgent.isMobileApp()) { - nativeAppLink = ( - <li> - <Link - target='_blank' - rel='noopener noreferrer' - to={global.window.mm_config.AppDownloadLink} - > - <FormattedMessage - id='navbar_dropdown.nativeApps' - defaultMessage='Download Apps' - /> - </Link> - </li> - ); - } - - let teamMembersModal; - if (this.state.showTeamMembersModal) { - teamMembersModal = ( - <TeamMembersModal - onLoad={this.toggleDropdown} - onHide={this.hideTeamMembersModal} - isAdmin={isAdmin} - /> - ); - } - - let addUsersToTeamModal; - if (this.state.showAddUsersToTeamModal) { - addUsersToTeamModal = ( - <AddUsersToTeam - onModalDismissed={this.hideAddUsersToTeamModal} - /> - ); - } - - const keyboardShortcuts = ( - <li> - <a - id='keyboardShortcuts' - href='#' - onClick={this.showShortcutsModal} - > - <FormattedMessage - id='navbar_dropdown.keyboardShortcuts' - defaultMessage='Keyboard Shortcuts' - /> - </a> - </li> - ); - - const accountSettings = ( - <li> - <a - id='accountSettings' - href='#' - onClick={this.showAccountSettingsModal} - > - <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' - open={this.state.showDropdown} - onToggle={this.toggleDropdown} - className='sidebar-header-dropdown' - pullRight={true} - > - <SidebarHeaderDropdownButton - bsRole='toggle' - onClick={this.toggleDropdown} - /> - <Dropdown.Menu> - {accountSettings} - {inviteDivider} - {inviteLink} - {teamLink} - {addMemberToTeam} - {teamDivider} - {teamSettings} - {manageLink} - {teams} - {backstageDivider} - {integrationsLink} - {customEmoji} - {sysAdminDivider} - {sysAdminLink} - {helpDivider} - {helpLink} - {keyboardShortcuts} - {reportLink} - {nativeAppLink} - {about} - {logoutDivider} - {logout} - {teamMembersModal} - <AboutBuildModal - show={this.state.showAboutModal} - onModalDismissed={this.aboutModalDismissed} - /> - {addUsersToTeamModal} - </Dropdown.Menu> - </Dropdown> - ); - } -} |