// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import $ from 'jquery'; import React from 'react'; import AdminStore from 'stores/admin_store.jsx'; import * as AsyncClient from 'utils/async_client.jsx'; import * as Utils from 'utils/utils.jsx'; import AdminSidebarHeader from './admin_sidebar_header.jsx'; import AdminSidebarTeam from './admin_sidebar_team.jsx'; import {FormattedMessage} from 'react-intl'; import {browserHistory} from 'react-router/es6'; import {OverlayTrigger, Tooltip} from 'react-bootstrap'; import SelectTeamModal from './select_team_modal.jsx'; import AdminSidebarCategory from './admin_sidebar_category.jsx'; import AdminSidebarSection from './admin_sidebar_section.jsx'; export default class AdminSidebar extends React.Component { static get contextTypes() { return { router: React.PropTypes.object.isRequired }; } constructor(props) { super(props); this.handleAllTeamsChange = this.handleAllTeamsChange.bind(this); this.removeTeam = this.removeTeam.bind(this); this.showTeamSelect = this.showTeamSelect.bind(this); this.teamSelectedModal = this.teamSelectedModal.bind(this); this.teamSelectedModalDismissed = this.teamSelectedModalDismissed.bind(this); this.renderAddTeamButton = this.renderAddTeamButton.bind(this); this.renderTeams = this.renderTeams.bind(this); this.state = { teams: AdminStore.getAllTeams(), selectedTeams: AdminStore.getSelectedTeams(), showSelectModal: false }; } componentDidMount() { AdminStore.addAllTeamsChangeListener(this.handleAllTeamsChange); AsyncClient.getAllTeams(); } componentDidUpdate() { if (!Utils.isMobile()) { $('.admin-sidebar .nav-pills__container').perfectScrollbar(); } } componentWillUnmount() { AdminStore.removeAllTeamsChangeListener(this.handleAllTeamsChange); } handleAllTeamsChange() { this.setState({ teams: AdminStore.getAllTeams(), selectedTeams: AdminStore.getSelectedTeams() }); } removeTeam(team) { const selectedTeams = Object.assign({}, this.state.selectedTeams); Reflect.deleteProperty(selectedTeams, team.id); AdminStore.saveSelectedTeams(selectedTeams); this.handleAllTeamsChange(); if (this.context.router.isActive('/admin_console/team/' + team.id)) { browserHistory.push('/admin_console'); } } showTeamSelect(e) { e.preventDefault(); this.setState({showSelectModal: true}); } teamSelectedModal(teamId) { this.setState({ showSelectModal: false }); const selectedTeams = Object.assign({}, this.state.selectedTeams); selectedTeams[teamId] = true; AdminStore.saveSelectedTeams(selectedTeams); this.handleAllTeamsChange(); } teamSelectedModalDismissed() { this.setState({showSelectModal: false}); } renderAddTeamButton() { const addTeamTooltip = ( ); return ( ); } renderTeams() { const teams = []; for (const key in this.state.selectedTeams) { if (!this.state.selectedTeams.hasOwnProperty(key)) { continue; } const team = this.state.teams[key]; if (!team) { continue; } teams.push( ); } return ( } action={this.renderAddTeamButton()} > {teams} ); } render() { let ldapSettings = null; let complianceSettings = null; let license = null; let audits = null; let policy = null; if (window.mm_config.BuildEnterpriseReady === 'true') { if (window.mm_license.IsLicensed === 'true') { if (global.window.mm_license.LDAP === 'true') { ldapSettings = ( } /> ); } if (global.window.mm_license.Compliance === 'true') { complianceSettings = ( } /> ); } policy = ( } /> ); } license = ( } /> ); } if (window.mm_license.IsLicensed === 'true') { audits = ( } /> ); } let customBranding = null; if (window.mm_license.IsLicensed === 'true') { customBranding = ( } /> ); } return (
    } > } /> } > } > } /> } /> } /> {policy} } /> {complianceSettings} } /> } > } /> } /> {ldapSettings} } > } /> } /> } /> } /> } /> } > } /> } /> } > } /> } /> } > } /> } /> } > {customBranding} } /> } /> } > } /> } /> } /> {this.renderTeams()} } > {license} {audits} } />
); } }