// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import $ from 'jquery'; import ReactDOM from 'react-dom'; import * as Utils from 'utils/utils.jsx'; import {uploadLicenseFile, removeLicenseFile} from 'actions/admin_actions.jsx'; import {injectIntl, intlShape, defineMessages, FormattedMessage, FormattedHTMLMessage} from 'react-intl'; const holders = defineMessages({ removing: { id: 'admin.license.removing', defaultMessage: 'Removing License...' }, uploading: { id: 'admin.license.uploading', defaultMessage: 'Uploading License...' } }); import React from 'react'; class LicenseSettings extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); this.handleRemove = this.handleRemove.bind(this); this.state = { fileSelected: false, fileName: null, serverError: null }; } handleChange() { const element = $(ReactDOM.findDOMNode(this.refs.fileInput)); if (element.prop('files').length > 0) { this.setState({fileSelected: true, fileName: element.prop('files')[0].name}); } } handleSubmit(e) { e.preventDefault(); const element = $(ReactDOM.findDOMNode(this.refs.fileInput)); if (element.prop('files').length === 0) { return; } const file = element.prop('files')[0]; $('#upload-button').button('loading'); uploadLicenseFile( file, () => { Utils.clearFileInput(element[0]); $('#upload-button').button('reset'); this.setState({fileSelected: false, fileName: null, serverError: null}); window.location.reload(true); }, (error) => { Utils.clearFileInput(element[0]); $('#upload-button').button('reset'); this.setState({fileSelected: false, fileName: null, serverError: error.message}); } ); } handleRemove(e) { e.preventDefault(); $('#remove-button').button('loading'); removeLicenseFile( () => { $('#remove-button').button('reset'); this.setState({fileSelected: false, fileName: null, serverError: null}); window.location.reload(true); }, (error) => { $('#remove-button').button('reset'); this.setState({fileSelected: false, fileName: null, serverError: error.message}); } ); } render() { var serverError = ''; if (this.state.serverError) { serverError =
; } var btnClass = 'btn'; if (this.state.fileSelected) { btnClass = 'btn btn-primary'; } let edition; let licenseType; let licenseKey; const issued = Utils.displayDate(parseInt(global.window.mm_license.IssuedAt, 10)) + ' ' + Utils.displayTime(parseInt(global.window.mm_license.IssuedAt, 10), true); const startsAt = Utils.displayDate(parseInt(global.window.mm_license.StartsAt, 10)); const expiresAt = Utils.displayDate(parseInt(global.window.mm_license.ExpiresAt, 10)); if (global.window.mm_license.IsLicensed === 'true') { // Note: DO NOT LOCALISE THESE STRINGS. Legally we can not since the license is in English. edition = 'Mattermost Enterprise Edition. Enterprise features on this server have been unlocked with a license key and a valid subscription.'; licenseType = (

{'This software is offered under a commercial license.\n\nSee ENTERPRISE-EDITION-LICENSE.txt in your root install directory for details. See NOTICE.txt for information about open source software used in this system.\n\nYour subscription details are as follows:'}

{`Name: ${global.window.mm_license.Name}`}
{`Company or organization name: ${global.window.mm_license.Company}`}
{`Number of users: ${global.window.mm_license.Users}`}
{`License issued: ${issued}`}
{`Start date of license: ${startsAt}`}
{`Expiry date of license: ${expiresAt}`}

{'See also '}{'Enterprise Edition Terms of Service'}{' and '}{'Privacy Policy.'}
); licenseKey = (


{'If you migrate servers you may need to remove your license key to install it elsewhere. You can remove the key here, which will revert functionality to that of Team Edition.'}

); } else { // Note: DO NOT LOCALISE THESE STRINGS. Legally we can not since the license is in English. edition = (

{'Mattermost Enterprise Edition. Unlock enterprise features in this software through the purchase of a subscription from '} {'https://mattermost.com/'}

); licenseType = 'This software is offered under a commercial license.\n\nSee ENTERPRISE-EDITION-LICENSE.txt in your root install directory for details. See NOTICE.txt for information about open source software used in this system.'; let fileName; if (this.state.fileName) { fileName = this.state.fileName; } else { fileName = ( ); } licenseKey = (
{fileName}

{serverError}

); } return (

{edition}
{licenseType}
{licenseKey}
); } } LicenseSettings.propTypes = { intl: intlShape.isRequired, config: React.PropTypes.object }; export default injectIntl(LicenseSettings);