// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import $ from 'jquery'; import ReactDOM from 'react-dom'; import * as Client from 'utils/client.jsx'; import * as AsyncClient from 'utils/async_client.jsx'; import {injectIntl, intlShape, defineMessages, FormattedMessage, FormattedHTMLMessage} from 'react-intl'; const holders = defineMessages({ clientIdExample: { id: 'admin.gitlab.clientIdExample', defaultMessage: 'Ex "jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY"' }, clientSecretExample: { id: 'admin.gitlab.clientSecretExample', defaultMessage: 'Ex "jcuS8PuvcpGhpgHhlcpT1Mx42pnqMxQY"' }, authExample: { id: 'admin.gitlab.authExample', defaultMessage: 'Ex ""' }, tokenExample: { id: 'admin.gitlab.tokenExample', defaultMessage: 'Ex ""' }, userExample: { id: 'admin.gitlab.userExample', defaultMessage: 'Ex ""' }, saving: { id: 'admin.gitlab.saving', defaultMessage: 'Saving Config...' } }); import React from 'react'; class GitLabSettings extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.handleSubmit = this.handleSubmit.bind(this); this.state = { Enable: this.props.config.GitLabSettings.Enable, saveNeeded: false, serverError: null }; } handleChange(action) { var s = {saveNeeded: true, serverError: this.state.serverError}; if (action === 'EnableTrue') { s.Enable = true; } if (action === 'EnableFalse') { s.Enable = false; } this.setState(s); } handleSubmit(e) { e.preventDefault(); $('#save-button').button('loading'); var config = this.props.config; config.GitLabSettings.Enable = ReactDOM.findDOMNode(this.refs.Enable).checked; config.GitLabSettings.Secret = ReactDOM.findDOMNode(this.refs.Secret).value.trim(); config.GitLabSettings.Id = ReactDOM.findDOMNode(this.refs.Id).value.trim(); config.GitLabSettings.AuthEndpoint = ReactDOM.findDOMNode(this.refs.AuthEndpoint).value.trim(); config.GitLabSettings.TokenEndpoint = ReactDOM.findDOMNode(this.refs.TokenEndpoint).value.trim(); config.GitLabSettings.UserApiEndpoint = ReactDOM.findDOMNode(this.refs.UserApiEndpoint).value.trim(); Client.saveConfig( config, () => { AsyncClient.getConfig(); this.setState({ serverError: null, saveNeeded: false }); $('#save-button').button('reset'); }, (err) => { this.setState({ serverError: err.message, saveNeeded: true }); $('#save-button').button('reset'); } ); } render() { const {formatMessage} = this.props.intl; var serverError = ''; if (this.state.serverError) { serverError =
; } var saveClass = 'btn'; if (this.state.saveNeeded) { saveClass = 'btn btn-primary'; } return (


{serverError}
); } } //config.GitLabSettings.Scope = ReactDOM.findDOMNode(this.refs.Scope).value.trim(); //
// //
// //

{'This field is not yet used by GitLab OAuth. Other OAuth providers may use this field to specify the scope of account data from OAuth provider that is sent to Mattermost.'}

//
//
GitLabSettings.propTypes = { intl: intlShape.isRequired, config: React.PropTypes.object }; export default injectIntl(GitLabSettings);