// 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 Client from 'utils/web_client.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'); Client.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'); Client.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}`}{'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.'}
{'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 = (