2015-10-08 12:27:09 -04:00
|
|
|
|
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
|
2015-09-10 14:56:37 -07:00
|
|
|
|
// See License.txt for license information.
|
|
|
|
|
|
|
2016-03-24 18:12:57 +05:00
|
|
|
|
import $ from 'jquery';
|
|
|
|
|
|
|
2015-11-19 21:12:56 -05:00
|
|
|
|
import AdminSidebarHeader from './admin_sidebar_header.jsx';
|
|
|
|
|
|
import SelectTeamModal from './select_team_modal.jsx';
|
2016-03-24 18:12:57 +05:00
|
|
|
|
import * as Utils from 'utils/utils.jsx';
|
2015-09-10 14:56:37 -07:00
|
|
|
|
|
2016-03-14 08:50:46 -04:00
|
|
|
|
import {FormattedMessage} from 'react-intl';
|
2016-01-26 22:19:51 -03:00
|
|
|
|
|
2016-03-14 08:50:46 -04:00
|
|
|
|
import {Tooltip, OverlayTrigger} from 'react-bootstrap';
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react';
|
2015-12-03 22:22:46 +05:00
|
|
|
|
|
2015-09-10 14:56:37 -07:00
|
|
|
|
export default class AdminSidebar extends React.Component {
|
|
|
|
|
|
constructor(props) {
|
|
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
|
|
|
|
this.isSelected = this.isSelected.bind(this);
|
|
|
|
|
|
this.handleClick = this.handleClick.bind(this);
|
2015-09-23 12:49:28 -07:00
|
|
|
|
this.removeTeam = this.removeTeam.bind(this);
|
|
|
|
|
|
|
|
|
|
|
|
this.showTeamSelect = this.showTeamSelect.bind(this);
|
|
|
|
|
|
this.teamSelectedModal = this.teamSelectedModal.bind(this);
|
|
|
|
|
|
this.teamSelectedModalDismissed = this.teamSelectedModalDismissed.bind(this);
|
2015-09-10 14:56:37 -07:00
|
|
|
|
|
|
|
|
|
|
this.state = {
|
2015-09-23 12:49:28 -07:00
|
|
|
|
showSelectModal: false
|
2015-09-10 14:56:37 -07:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-03-24 18:12:57 +05:00
|
|
|
|
componentDidUpdate() {
|
|
|
|
|
|
if (!Utils.isMobile()) {
|
|
|
|
|
|
$('.sidebar--left .nav-pills__container').perfectScrollbar();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-23 12:49:28 -07:00
|
|
|
|
handleClick(name, teamId, e) {
|
2015-09-17 22:00:33 -07:00
|
|
|
|
e.preventDefault();
|
2015-09-23 12:49:28 -07:00
|
|
|
|
this.props.selectTab(name, teamId);
|
2015-09-10 14:56:37 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-23 12:49:28 -07:00
|
|
|
|
isSelected(name, teamId) {
|
2015-09-10 14:56:37 -07:00
|
|
|
|
if (this.props.selected === name) {
|
2015-11-02 12:50:15 -08:00
|
|
|
|
if (name === 'team_users' || name === 'team_analytics') {
|
2015-09-23 12:49:28 -07:00
|
|
|
|
if (this.props.selectedTeam != null && this.props.selectedTeam === teamId) {
|
|
|
|
|
|
return 'active';
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return 'active';
|
|
|
|
|
|
}
|
2015-09-10 14:56:37 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return '';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-23 12:49:28 -07:00
|
|
|
|
removeTeam(teamId, e) {
|
|
|
|
|
|
e.preventDefault();
|
2016-02-09 15:51:36 -05:00
|
|
|
|
e.stopPropagation();
|
2015-09-23 12:49:28 -07:00
|
|
|
|
Reflect.deleteProperty(this.props.selectedTeams, teamId);
|
|
|
|
|
|
this.props.removeSelectedTeam(teamId);
|
|
|
|
|
|
|
|
|
|
|
|
if (this.props.selected === 'team_users') {
|
|
|
|
|
|
if (this.props.selectedTeam != null && this.props.selectedTeam === teamId) {
|
|
|
|
|
|
this.props.selectTab('service_settings', null);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
showTeamSelect(e) {
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
|
this.setState({showSelectModal: true});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
teamSelectedModal(teamId) {
|
|
|
|
|
|
this.setState({showSelectModal: false});
|
|
|
|
|
|
this.props.addSelectedTeam(teamId);
|
|
|
|
|
|
this.forceUpdate();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
teamSelectedModalDismissed() {
|
|
|
|
|
|
this.setState({showSelectModal: false});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-10 14:56:37 -07:00
|
|
|
|
render() {
|
2015-09-23 12:49:28 -07:00
|
|
|
|
var count = '*';
|
2016-01-26 22:19:51 -03:00
|
|
|
|
var teams = (
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.loading'
|
|
|
|
|
|
defaultMessage='Loading'
|
|
|
|
|
|
/>
|
|
|
|
|
|
);
|
2015-12-03 22:22:46 +05:00
|
|
|
|
const removeTooltip = (
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<Tooltip id='remove-team-tooltip'>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.rmTeamSidebar'
|
|
|
|
|
|
defaultMessage='Remove team from sidebar menu'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</Tooltip>
|
2015-12-03 22:22:46 +05:00
|
|
|
|
);
|
|
|
|
|
|
const addTeamTooltip = (
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<Tooltip id='add-team-tooltip'>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.addTeamSidebar'
|
|
|
|
|
|
defaultMessage='Add team from sidebar menu'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</Tooltip>
|
2015-12-03 22:22:46 +05:00
|
|
|
|
);
|
2015-09-23 12:49:28 -07:00
|
|
|
|
|
|
|
|
|
|
if (this.props.teams != null) {
|
|
|
|
|
|
count = '' + Object.keys(this.props.teams).length;
|
|
|
|
|
|
|
|
|
|
|
|
teams = [];
|
|
|
|
|
|
for (var key in this.props.selectedTeams) {
|
|
|
|
|
|
if (this.props.selectedTeams.hasOwnProperty(key)) {
|
|
|
|
|
|
var team = this.props.teams[key];
|
|
|
|
|
|
|
|
|
|
|
|
if (team != null) {
|
|
|
|
|
|
teams.push(
|
|
|
|
|
|
<ul
|
|
|
|
|
|
key={'team_' + team.id}
|
|
|
|
|
|
className='nav nav__sub-menu'
|
|
|
|
|
|
>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'team_users', team.id)}
|
2015-12-11 16:24:24 -08:00
|
|
|
|
className={'nav__sub-menu-item ' + this.isSelected('team_users', team.id) + ' ' + this.isSelected('team_analytics', team.id)}
|
2015-09-23 12:49:28 -07:00
|
|
|
|
>
|
|
|
|
|
|
{team.name}
|
2015-12-03 22:22:46 +05:00
|
|
|
|
<OverlayTrigger
|
|
|
|
|
|
delayShow={1000}
|
|
|
|
|
|
placement='top'
|
|
|
|
|
|
overlay={removeTooltip}
|
|
|
|
|
|
>
|
2015-09-23 12:49:28 -07:00
|
|
|
|
<span
|
|
|
|
|
|
className='menu-icon--right menu__close'
|
|
|
|
|
|
onClick={this.removeTeam.bind(this, team.id)}
|
|
|
|
|
|
style={{cursor: 'pointer'}}
|
|
|
|
|
|
>
|
2015-12-03 22:22:46 +05:00
|
|
|
|
{'×'}
|
2015-09-23 12:49:28 -07:00
|
|
|
|
</span>
|
2015-12-03 22:22:46 +05:00
|
|
|
|
</OverlayTrigger>
|
2015-09-23 12:49:28 -07:00
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<ul className='nav nav__inner-menu'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('team_users', team.id)}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'team_users', team.id)}
|
|
|
|
|
|
>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.users'
|
|
|
|
|
|
defaultMessage='- Users'
|
|
|
|
|
|
/>
|
2015-09-23 12:49:28 -07:00
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
2015-10-22 18:04:06 -07:00
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('team_analytics', team.id)}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'team_analytics', team.id)}
|
|
|
|
|
|
>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.statistics'
|
|
|
|
|
|
defaultMessage='- Statistics'
|
|
|
|
|
|
/>
|
2015-10-22 18:04:06 -07:00
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
2015-09-23 12:49:28 -07:00
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-01-04 12:44:22 -05:00
|
|
|
|
let ldapSettings;
|
2016-03-14 16:07:58 -07:00
|
|
|
|
let complianceSettings;
|
2016-01-04 12:44:22 -05:00
|
|
|
|
let licenseSettings;
|
|
|
|
|
|
if (global.window.mm_config.BuildEnterpriseReady === 'true') {
|
|
|
|
|
|
if (global.window.mm_license.IsLicensed === 'true') {
|
|
|
|
|
|
ldapSettings = (
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('ldap_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'ldap_settings', null)}
|
|
|
|
|
|
>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.ldap'
|
|
|
|
|
|
defaultMessage='LDAP Settings'
|
|
|
|
|
|
/>
|
2016-01-04 12:44:22 -05:00
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
);
|
2016-03-14 16:07:58 -07:00
|
|
|
|
|
|
|
|
|
|
complianceSettings = (
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('compliance_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'compliance_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.compliance'
|
|
|
|
|
|
defaultMessage='Compliance Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
);
|
2016-01-04 12:44:22 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
licenseSettings = (
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('license')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'license', null)}
|
|
|
|
|
|
>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.license'
|
|
|
|
|
|
defaultMessage='Edition and License'
|
|
|
|
|
|
/>
|
2016-01-04 12:44:22 -05:00
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-02-02 16:49:27 -05:00
|
|
|
|
let audits;
|
|
|
|
|
|
if (global.window.mm_license.IsLicensed === 'true') {
|
|
|
|
|
|
audits = (
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('audits')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'audits', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.audits'
|
2016-02-04 09:29:00 -05:00
|
|
|
|
defaultMessage='Compliance and Auditing'
|
2016-02-02 16:49:27 -05:00
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-10 14:56:37 -07:00
|
|
|
|
return (
|
|
|
|
|
|
<div className='sidebar--left sidebar--collapsable'>
|
2016-03-24 18:12:57 +05:00
|
|
|
|
<AdminSidebarHeader/>
|
|
|
|
|
|
<div className='nav-pills__container'>
|
|
|
|
|
|
<ul className='nav nav-pills nav-stacked'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<ul className='nav nav__sub-menu'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<h4>
|
|
|
|
|
|
<span className='icon fa fa-gear'></span>
|
|
|
|
|
|
<span>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
2016-03-24 18:12:57 +05:00
|
|
|
|
id='admin.sidebar.reports'
|
|
|
|
|
|
defaultMessage='SITE REPORTS'
|
2016-01-26 22:19:51 -03:00
|
|
|
|
/>
|
2016-03-24 18:12:57 +05:00
|
|
|
|
</span>
|
|
|
|
|
|
</h4>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu padded'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('system_analytics')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'system_analytics', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.view_statistics'
|
|
|
|
|
|
defaultMessage='View Statistics'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<h4>
|
|
|
|
|
|
<span className='icon fa fa-gear'></span>
|
|
|
|
|
|
<span>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
2016-03-24 18:12:57 +05:00
|
|
|
|
id='admin.sidebar.settings'
|
|
|
|
|
|
defaultMessage='SETTINGS'
|
2016-01-26 22:19:51 -03:00
|
|
|
|
/>
|
2016-03-24 18:12:57 +05:00
|
|
|
|
</span>
|
|
|
|
|
|
</h4>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu padded'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('service_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'service_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.service'
|
|
|
|
|
|
defaultMessage='Service Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('team_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'team_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.team'
|
|
|
|
|
|
defaultMessage='Team Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('sql_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'sql_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.sql'
|
|
|
|
|
|
defaultMessage='SQL Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('email_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'email_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.email'
|
|
|
|
|
|
defaultMessage='Email Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('image_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'image_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.file'
|
|
|
|
|
|
defaultMessage='File Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('log_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'log_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.log'
|
|
|
|
|
|
defaultMessage='Log Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('rate_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'rate_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.rate_limit'
|
|
|
|
|
|
defaultMessage='Rate Limit Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('privacy_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'privacy_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.privacy'
|
|
|
|
|
|
defaultMessage='Privacy Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('gitlab_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'gitlab_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.gitlab'
|
|
|
|
|
|
defaultMessage='GitLab Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
{ldapSettings}
|
|
|
|
|
|
{complianceSettings}
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('legal_and_support_settings')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'legal_and_support_settings', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.support'
|
|
|
|
|
|
defaultMessage='Legal and Support Settings'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<h4>
|
|
|
|
|
|
<span className='icon fa fa-gear'></span>
|
|
|
|
|
|
<span>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
2016-03-24 18:12:57 +05:00
|
|
|
|
id='admin.sidebar.teams'
|
|
|
|
|
|
defaultMessage='TEAMS ({count})'
|
|
|
|
|
|
values={{
|
|
|
|
|
|
count: count
|
|
|
|
|
|
}}
|
2016-01-26 22:19:51 -03:00
|
|
|
|
/>
|
2016-03-24 18:12:57 +05:00
|
|
|
|
</span>
|
|
|
|
|
|
<span className='menu-icon--right'>
|
|
|
|
|
|
<OverlayTrigger
|
|
|
|
|
|
delayShow={1000}
|
|
|
|
|
|
placement='top'
|
|
|
|
|
|
overlay={addTeamTooltip}
|
|
|
|
|
|
>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
onClick={this.showTeamSelect}
|
|
|
|
|
|
>
|
|
|
|
|
|
<i
|
|
|
|
|
|
className='fa fa-plus'
|
|
|
|
|
|
></i>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</OverlayTrigger>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</h4>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu padded'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
{teams}
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu'>
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<h4>
|
|
|
|
|
|
<span className='icon fa fa-gear'></span>
|
|
|
|
|
|
<span>
|
2016-01-26 22:19:51 -03:00
|
|
|
|
<FormattedMessage
|
2016-03-24 18:12:57 +05:00
|
|
|
|
id='admin.sidebar.other'
|
|
|
|
|
|
defaultMessage='OTHER'
|
2016-01-26 22:19:51 -03:00
|
|
|
|
/>
|
2016-03-24 18:12:57 +05:00
|
|
|
|
</span>
|
|
|
|
|
|
</h4>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
<ul className='nav nav__sub-menu padded'>
|
|
|
|
|
|
{licenseSettings}
|
|
|
|
|
|
{audits}
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href='#'
|
|
|
|
|
|
className={this.isSelected('logs')}
|
|
|
|
|
|
onClick={this.handleClick.bind(this, 'logs', null)}
|
|
|
|
|
|
>
|
|
|
|
|
|
<FormattedMessage
|
|
|
|
|
|
id='admin.sidebar.logs'
|
|
|
|
|
|
defaultMessage='Logs'
|
|
|
|
|
|
/>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
2015-09-10 14:56:37 -07:00
|
|
|
|
</div>
|
2015-09-23 12:49:28 -07:00
|
|
|
|
|
|
|
|
|
|
<SelectTeamModal
|
|
|
|
|
|
teams={this.props.teams}
|
|
|
|
|
|
show={this.state.showSelectModal}
|
|
|
|
|
|
onModalSubmit={this.teamSelectedModal}
|
|
|
|
|
|
onModalDismissed={this.teamSelectedModalDismissed}
|
|
|
|
|
|
/>
|
2015-09-10 14:56:37 -07:00
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AdminSidebar.propTypes = {
|
2015-09-23 12:49:28 -07:00
|
|
|
|
teams: React.PropTypes.object,
|
|
|
|
|
|
selectedTeams: React.PropTypes.object,
|
|
|
|
|
|
removeSelectedTeam: React.PropTypes.func,
|
|
|
|
|
|
addSelectedTeam: React.PropTypes.func,
|
2015-09-10 14:56:37 -07:00
|
|
|
|
selected: React.PropTypes.string,
|
2015-09-23 12:49:28 -07:00
|
|
|
|
selectedTeam: React.PropTypes.string,
|
2015-09-10 14:56:37 -07:00
|
|
|
|
selectTab: React.PropTypes.func
|
2015-12-08 13:38:43 -05:00
|
|
|
|
};
|