diff options
Diffstat (limited to 'web/react/components/admin_console')
7 files changed, 52 insertions, 48 deletions
diff --git a/web/react/components/admin_console/admin_controller.jsx b/web/react/components/admin_console/admin_controller.jsx index 32ed70a99..4c4f21f08 100644 --- a/web/react/components/admin_console/admin_controller.jsx +++ b/web/react/components/admin_console/admin_controller.jsx @@ -6,7 +6,6 @@ import AdminStore from '../../stores/admin_store.jsx'; import TeamStore from '../../stores/team_store.jsx'; import * as AsyncClient from '../../utils/async_client.jsx'; import LoadingScreen from '../loading_screen.jsx'; -import * as Utils from '../../utils/utils.jsx'; import EmailSettingsTab from './email_settings.jsx'; import LogSettingsTab from './log_settings.jsx'; @@ -50,11 +49,6 @@ export default class AdminController extends React.Component { selected: props.tab || 'system_analytics', selectedTeam: props.teamId || null }; - - if (!props.tab) { - var tokenIndex = Utils.getUrlParameter('session_token_index'); - history.replaceState(null, null, `/admin_console/${this.state.selected}?session_token_index=${tokenIndex}`); - } } componentDidMount() { @@ -63,6 +57,9 @@ export default class AdminController extends React.Component { AdminStore.addAllTeamsChangeListener(this.onAllTeamsListenerChange); AsyncClient.getAllTeams(); + + $('[data-toggle="tooltip"]').tooltip(); + $('[data-toggle="popover"]').popover(); } componentWillUnmount() { @@ -175,7 +172,7 @@ export default class AdminController extends React.Component { } return ( - <div> + <div id='admin_controller'> <div className='sidebar--menu' id='sidebar-menu' diff --git a/web/react/components/admin_console/admin_navbar_dropdown.jsx b/web/react/components/admin_console/admin_navbar_dropdown.jsx index dc0b3c4cb..ae95f5a3a 100644 --- a/web/react/components/admin_console/admin_navbar_dropdown.jsx +++ b/web/react/components/admin_console/admin_navbar_dropdown.jsx @@ -2,13 +2,14 @@ // See License.txt for license information. import * as Utils from '../../utils/utils.jsx'; -import * as Client from '../../utils/client.jsx'; import TeamStore from '../../stores/team_store.jsx'; import Constants from '../../utils/constants.jsx'; import {FormattedMessage} from 'mm-intl'; +import {Link} from 'react-router'; + function getStateFromStores() { return {currentTeam: TeamStore.getCurrent()}; } @@ -18,16 +19,9 @@ export default class AdminNavbarDropdown extends React.Component { super(props); this.blockToggle = false; - this.handleLogoutClick = this.handleLogoutClick.bind(this); - this.state = getStateFromStores(); } - handleLogoutClick(e) { - e.preventDefault(); - Client.logout(); - } - componentDidMount() { $(ReactDOM.findDOMNode(this.refs.dropdown)).on('hide.bs.dropdown', () => { this.blockToggle = true; @@ -78,15 +72,12 @@ export default class AdminNavbarDropdown extends React.Component { </a> </li> <li> - <a - href='#' - onClick={this.handleLogoutClick} - > + <Link to={Utils.getTeamURLFromAddressBar() + '/logout'}> <FormattedMessage id='admin.nav.logout' defaultMessage='Logout' /> - </a> + </Link> </li> <li className='divider'></li> <li> @@ -116,4 +107,4 @@ export default class AdminNavbarDropdown extends React.Component { </ul> ); } -}
\ No newline at end of file +} diff --git a/web/react/components/admin_console/admin_sidebar.jsx b/web/react/components/admin_console/admin_sidebar.jsx index 6621e5743..c2f31f569 100644 --- a/web/react/components/admin_console/admin_sidebar.jsx +++ b/web/react/components/admin_console/admin_sidebar.jsx @@ -3,7 +3,6 @@ import AdminSidebarHeader from './admin_sidebar_header.jsx'; import SelectTeamModal from './select_team_modal.jsx'; -import * as Utils from '../../utils/utils.jsx'; import {FormattedMessage} from 'mm-intl'; @@ -30,8 +29,6 @@ export default class AdminSidebar extends React.Component { handleClick(name, teamId, e) { e.preventDefault(); this.props.selectTab(name, teamId); - var tokenIndex = Utils.getUrlParameter('session_token_index'); - history.pushState({name, teamId}, null, `/admin_console/${name}/${teamId || ''}?session_token_index=${tokenIndex}`); } isSelected(name, teamId) { @@ -73,7 +70,6 @@ export default class AdminSidebar extends React.Component { } teamSelectedModal(teamId) { - this.props.selectedTeams[teamId] = 'true'; this.setState({showSelectModal: false}); this.props.addSelectedTeam(teamId); this.forceUpdate(); diff --git a/web/react/components/admin_console/admin_sidebar_header.jsx b/web/react/components/admin_console/admin_sidebar_header.jsx index 8c9f74934..f1281c6ee 100644 --- a/web/react/components/admin_console/admin_sidebar_header.jsx +++ b/web/react/components/admin_console/admin_sidebar_header.jsx @@ -3,7 +3,6 @@ import AdminNavbarDropdown from './admin_navbar_dropdown.jsx'; import UserStore from '../../stores/user_store.jsx'; -import * as Utils from '../../utils/utils.jsx'; import {FormattedMessage} from 'mm-intl'; @@ -39,7 +38,7 @@ export default class SidebarHeader extends React.Component { profilePicture = ( <img className='user__picture' - src={'/api/v1/users/' + me.id + '/image?time=' + me.update_at + '&' + Utils.getSessionIndex()} + src={'/api/v1/users/' + me.id + '/image?time=' + me.update_at} /> ); } @@ -65,4 +64,4 @@ export default class SidebarHeader extends React.Component { </div> ); } -}
\ No newline at end of file +} diff --git a/web/react/components/admin_console/ldap_settings.jsx b/web/react/components/admin_console/ldap_settings.jsx index 535c264dd..4cd19c886 100644 --- a/web/react/components/admin_console/ldap_settings.jsx +++ b/web/react/components/admin_console/ldap_settings.jsx @@ -20,7 +20,7 @@ var holders = defineMessages({ }, baseEx: { id: 'admin.ldap.baseEx', - defaultMessage: 'Ex "dc=mydomain,dc=com"' + defaultMessage: 'Ex "ou=Unit Name,dc=corp,dc=example,dc=com"' }, firstnameAttrEx: { id: 'admin.ldap.firstnameAttrEx', @@ -32,7 +32,7 @@ var holders = defineMessages({ }, emailAttrEx: { id: 'admin.ldap.emailAttrEx', - defaultMessage: 'Ex "mail"' + defaultMessage: 'Ex "mail" or "userPrincipalName"' }, usernameAttrEx: { id: 'admin.ldap.usernameAttrEx', @@ -581,4 +581,4 @@ LdapSettings.propTypes = { config: React.PropTypes.object }; -export default injectIntl(LdapSettings);
\ No newline at end of file +export default injectIntl(LdapSettings); diff --git a/web/react/components/admin_console/license_settings.jsx b/web/react/components/admin_console/license_settings.jsx index d4dfa13f2..9d2ec8030 100644 --- a/web/react/components/admin_console/license_settings.jsx +++ b/web/react/components/admin_console/license_settings.jsx @@ -27,6 +27,7 @@ class LicenseSettings extends React.Component { this.state = { fileSelected: false, + fileName: null, serverError: null }; } @@ -34,7 +35,7 @@ class LicenseSettings extends React.Component { handleChange() { const element = $(ReactDOM.findDOMNode(this.refs.fileInput)); if (element.prop('files').length > 0) { - this.setState({fileSelected: true}); + this.setState({fileSelected: true, fileName: element.prop('files')[0].name}); } } @@ -56,13 +57,13 @@ class LicenseSettings extends React.Component { () => { Utils.clearFileInput(element[0]); $('#upload-button').button('reset'); - this.setState({serverError: null}); + this.setState({fileSelected: false, fileName: null, serverError: null}); window.location.reload(true); }, (error) => { Utils.clearFileInput(element[0]); $('#upload-button').button('reset'); - this.setState({serverError: error.message}); + this.setState({fileSelected: false, fileName: null, serverError: error.message}); } ); } @@ -75,12 +76,12 @@ class LicenseSettings extends React.Component { Client.removeLicenseFile( () => { $('#remove-button').button('reset'); - this.setState({serverError: null}); + this.setState({fileSelected: false, fileName: null, serverError: null}); window.location.reload(true); }, (error) => { $('#remove-button').button('reset'); - this.setState({serverError: error.message}); + this.setState({fileSelected: false, fileName: null, serverError: error.message}); } ); } @@ -172,17 +173,36 @@ class LicenseSettings extends React.Component { /> ); + let fileName; + if (this.state.fileName) { + fileName = this.state.fileName; + } else { + fileName = ( + <FormattedMessage + id='admin.license.noFile' + defaultMessage='No file uploaded' + /> + ); + } + licenseKey = ( <div className='col-sm-8'> - <input - className='pull-left' - ref='fileInput' - type='file' - accept='.mattermost-license' - onChange={this.handleChange} - /> + <div className='file__upload'> + <button className='btn btn-default'> + <FormattedMessage + id='admin.license.choose' + defaultMessage='Choose File' + /> + </button> + <input + ref='fileInput' + type='file' + accept='.mattermost-license' + onChange={this.handleChange} + /> + </div> <button - className={btnClass + ' pull-left'} + className={btnClass} disabled={!this.state.fileSelected} onClick={this.handleSubmit} id='upload-button' @@ -193,11 +213,12 @@ class LicenseSettings extends React.Component { defaultMessage='Upload' /> </button> - <br/> - <br/> + <div className='help-text no-margin'> + {fileName} + </div> <br/> {serverError} - <p className='help-text'> + <p className='help-text no-margin'> <FormattedHTMLMessage id='admin.license.uploadDesc' defaultMessage='Upload a license key for Mattermost Enterprise Edition to upgrade this server. <a href="http://mattermost.com" target="_blank">Visit us online</a> to learn more about the benefits of Enterprise Edition or to purchase a key.' diff --git a/web/react/components/admin_console/user_item.jsx b/web/react/components/admin_console/user_item.jsx index 4af350bcd..7d6cfb5c3 100644 --- a/web/react/components/admin_console/user_item.jsx +++ b/web/react/components/admin_console/user_item.jsx @@ -366,7 +366,7 @@ export default class UserItem extends React.Component { <td className='row member-div padding--equal'> <img className='post-profile-img pull-left' - src={`/api/v1/users/${user.id}/image?time=${user.update_at}&${Utils.getSessionIndex()}`} + src={`/api/v1/users/${user.id}/image?time=${user.update_at}`} height='36' width='36' /> |