diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-03-14 08:50:46 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-03-16 18:02:55 -0400 |
commit | 12896bd23eeba79884245c1c29fdc568cf21a7fa (patch) | |
tree | 4e7f83d3e2564b9b89d669e9f7905ff11768b11a /web/react/components/team_general_tab.jsx | |
parent | 29fe6a3d13c9c7aa490fffebbe5d1b5fdf1e3090 (diff) | |
download | chat-12896bd23eeba79884245c1c29fdc568cf21a7fa.tar.gz chat-12896bd23eeba79884245c1c29fdc568cf21a7fa.tar.bz2 chat-12896bd23eeba79884245c1c29fdc568cf21a7fa.zip |
Converting to Webpack. Stage 1.
Diffstat (limited to 'web/react/components/team_general_tab.jsx')
-rw-r--r-- | web/react/components/team_general_tab.jsx | 655 |
1 files changed, 0 insertions, 655 deletions
diff --git a/web/react/components/team_general_tab.jsx b/web/react/components/team_general_tab.jsx deleted file mode 100644 index ef7410b2f..000000000 --- a/web/react/components/team_general_tab.jsx +++ /dev/null @@ -1,655 +0,0 @@ -// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import SettingItemMin from './setting_item_min.jsx'; -import SettingItemMax from './setting_item_max.jsx'; - -import * as Client from '../utils/client.jsx'; -import * as Utils from '../utils/utils.jsx'; -import TeamStore from '../stores/team_store.jsx'; - -import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'mm-intl'; - -const holders = defineMessages({ - dirDisabled: { - id: 'general_tab.dirDisabled', - defaultMessage: 'Team Directory has been disabled. Please ask a System Admin to enable the Team Directory in the System Console team settings.' - }, - required: { - id: 'general_tab.required', - defaultMessage: 'This field is required' - }, - chooseName: { - id: 'general_tab.chooseName', - defaultMessage: 'Please choose a new name for your team' - }, - includeDirTitle: { - id: 'general_tab.includeDirTitle', - defaultMessage: 'Include this team in the Team Directory' - }, - yes: { - id: 'general_tab.yes', - defaultMessage: 'Yes' - }, - no: { - id: 'general_tab.no', - defaultMessage: 'No' - }, - dirOff: { - id: 'general_tab.dirOff', - defaultMessage: 'Team directory is turned off for this system.' - }, - openInviteTitle: { - id: 'general_tab.openInviteTitle', - defaultMessage: 'Allow anyone to sign-up from login page' - }, - codeTitle: { - id: 'general_tab.codeTitle', - defaultMessage: 'Invite Code' - }, - codeDesc: { - id: 'general_tab.codeDesc', - defaultMessage: "Click 'Edit' to regenerate Invite Code." - }, - teamNameInfo: { - id: 'general_tab.teamNameInfo', - defaultMessage: 'Set the name of the team as it appears on your sign-in screen and at the top of the left-hand sidebar.' - } -}); - -class GeneralTab extends React.Component { - constructor(props) { - super(props); - - this.updateSection = this.updateSection.bind(this); - this.handleNameSubmit = this.handleNameSubmit.bind(this); - this.handleInviteIdSubmit = this.handleInviteIdSubmit.bind(this); - this.handleOpenInviteSubmit = this.handleOpenInviteSubmit.bind(this); - this.handleTeamListingSubmit = this.handleTeamListingSubmit.bind(this); - this.handleClose = this.handleClose.bind(this); - this.onUpdateNameSection = this.onUpdateNameSection.bind(this); - this.updateName = this.updateName.bind(this); - this.onUpdateInviteIdSection = this.onUpdateInviteIdSection.bind(this); - this.updateInviteId = this.updateInviteId.bind(this); - this.onUpdateOpenInviteSection = this.onUpdateOpenInviteSection.bind(this); - this.handleOpenInviteRadio = this.handleOpenInviteRadio.bind(this); - this.onUpdateTeamListingSection = this.onUpdateTeamListingSection.bind(this); - this.handleTeamListingRadio = this.handleTeamListingRadio.bind(this); - this.handleGenerateInviteId = this.handleGenerateInviteId.bind(this); - - this.state = this.setupInitialState(props); - } - - updateSection(section) { - this.setState(this.setupInitialState(this.props)); - this.props.updateSection(section); - } - - setupInitialState(props) { - const team = props.team; - - return { - name: team.display_name, - invite_id: team.invite_id, - allow_open_invite: team.allow_open_invite, - allow_team_listing: team.allow_team_listing, - serverError: '', - clientError: '' - }; - } - - handleGenerateInviteId(e) { - e.preventDefault(); - - var newId = ''; - for (var i = 0; i < 32; i++) { - newId += Math.floor(Math.random() * 16).toString(16); - } - - this.setState({invite_id: newId}); - } - - handleOpenInviteRadio(openInvite) { - this.setState({allow_open_invite: openInvite}); - } - - handleTeamListingRadio(listing) { - if (global.window.mm_config.EnableTeamListing !== 'true' && listing) { - this.setState({clientError: this.props.intl.formatMessage(holders.dirDisabled)}); - } else { - this.setState({allow_team_listing: listing}); - } - } - - handleOpenInviteSubmit(e) { - e.preventDefault(); - - var state = {serverError: '', clientError: ''}; - - var data = this.props.team; - data.allow_open_invite = this.state.allow_open_invite; - Client.updateTeam(data, - (team) => { - TeamStore.saveTeam(team); - TeamStore.emitChange(); - this.updateSection(''); - }, - (err) => { - state.serverError = err.message; - this.setState(state); - } - ); - } - - handleTeamListingSubmit(e) { - e.preventDefault(); - - var state = {serverError: '', clientError: ''}; - - var data = this.props.team; - data.allow_team_listing = this.state.allow_team_listing; - Client.updateTeam(data, - (team) => { - TeamStore.saveTeam(team); - TeamStore.emitChange(); - this.updateSection(''); - }, - (err) => { - state.serverError = err.message; - this.setState(state); - } - ); - } - - handleNameSubmit(e) { - e.preventDefault(); - - var state = {serverError: '', clientError: ''}; - let valid = true; - - const {formatMessage} = this.props.intl; - const name = this.state.name.trim(); - if (!name) { - state.clientError = formatMessage(holders.required); - valid = false; - } else if (name === this.props.team.display_name) { - state.clientError = formatMessage(holders.chooseName); - valid = false; - } else { - state.clientError = ''; - } - - this.setState(state); - - if (!valid) { - return; - } - - var data = this.props.team; - data.display_name = this.state.name; - Client.updateTeam(data, - (team) => { - TeamStore.saveTeam(team); - TeamStore.emitChange(); - this.updateSection(''); - }, - (err) => { - state.serverError = err.message; - this.setState(state); - } - ); - } - - handleInviteIdSubmit(e) { - e.preventDefault(); - - var state = {serverError: '', clientError: ''}; - let valid = true; - - const inviteId = this.state.invite_id.trim(); - if (inviteId) { - state.clientError = ''; - } else { - state.clientError = this.props.intl.fromatMessage(holders.required); - valid = false; - } - - this.setState(state); - - if (!valid) { - return; - } - - var data = this.props.team; - data.invite_id = this.state.invite_id; - Client.updateTeam(data, - (team) => { - TeamStore.saveTeam(team); - TeamStore.emitChange(); - this.updateSection(''); - }, - (err) => { - state.serverError = err.message; - this.setState(state); - } - ); - } - - componentWillReceiveProps(newProps) { - if (newProps.team && newProps.teamDisplayName) { - this.setState({name: newProps.teamDisplayName}); - } - } - - handleClose() { - this.updateSection(''); - } - - componentDidMount() { - $('#team_settings').on('hidden.bs.modal', this.handleClose); - } - - componentWillUnmount() { - $('#team_settings').off('hidden.bs.modal', this.handleClose); - } - - onUpdateNameSection(e) { - e.preventDefault(); - if (this.props.activeSection === 'name') { - this.updateSection(''); - } else { - this.updateSection('name'); - } - } - - onUpdateInviteIdSection(e) { - e.preventDefault(); - if (this.props.activeSection === 'invite_id') { - this.updateSection(''); - } else { - this.updateSection('invite_id'); - } - } - - onUpdateOpenInviteSection(e) { - e.preventDefault(); - if (this.props.activeSection === 'open_invite') { - this.updateSection(''); - } else { - this.updateSection('open_invite'); - } - } - - onUpdateTeamListingSection(e) { - e.preventDefault(); - if (this.props.activeSection === 'team_listing') { - this.updateSection(''); - } else { - this.updateSection('team_listing'); - } - } - - updateName(e) { - e.preventDefault(); - this.setState({name: e.target.value}); - } - - updateInviteId(e) { - e.preventDefault(); - this.setState({invite_id: e.target.value}); - } - - render() { - let clientError = null; - let serverError = null; - if (this.state.clientError) { - clientError = this.state.clientError; - } - if (this.state.serverError) { - serverError = this.state.serverError; - } - - const enableTeamListing = global.window.mm_config.EnableTeamListing === 'true'; - const {formatMessage} = this.props.intl; - - let teamListingSection; - if (this.props.activeSection === 'team_listing') { - const inputs = []; - let submitHandle = null; - - if (enableTeamListing) { - submitHandle = this.handleTeamListingSubmit; - - inputs.push( - <div key='userTeamListingOptions'> - <div className='radio'> - <label> - <input - name='userTeamListingOptions' - type='radio' - defaultChecked={this.state.allow_team_listing} - onChange={this.handleTeamListingRadio.bind(this, true)} - /> - <FormattedMessage - id='general_tab.yes' - defaultMessage='Yes' - /> - </label> - <br/> - </div> - <div className='radio'> - <label> - <input - ref='teamListingRadioNo' - name='userTeamListingOptions' - type='radio' - defaultChecked={!this.state.allow_team_listing} - onChange={this.handleTeamListingRadio.bind(this, false)} - /> - <FormattedMessage - id='general_tab.no' - defaultMessage='No' - /> - </label> - <br/> - </div> - <div> - <br/> - <FormattedMessage - id='general_tab.includeDirDesc' - defaultMessage='Including this team will display the team name from the Team Directory section of the Home Page, and provide a link to the sign-in page.' - /> - </div> - </div> - ); - } else { - inputs.push( - <div key='userTeamListingOptions'> - <div> - <br/> - <FormattedMessage - id='general_tab.dirContact' - defaultMessage='Contact your system administrator to turn on the team directory on the system home page.' - /> - </div> - </div> - ); - } - - teamListingSection = ( - <SettingItemMax - title={formatMessage(holders.includeDirTitle)} - inputs={inputs} - submit={submitHandle} - server_error={serverError} - client_error={clientError} - updateSection={this.onUpdateTeamListingSection} - /> - ); - } else { - let describe = ''; - - if (enableTeamListing) { - if (this.state.allow_team_listing === true) { - describe = formatMessage(holders.yes); - } else { - describe = formatMessage(holders.no); - } - } else { - describe = formatMessage(holders.dirOff); - } - - teamListingSection = ( - <SettingItemMin - title={formatMessage(holders.includeDirTitle)} - describe={describe} - updateSection={this.onUpdateTeamListingSection} - /> - ); - } - - let openInviteSection; - if (this.props.activeSection === 'open_invite') { - const inputs = [ - <div key='userOpenInviteOptions'> - <div className='radio'> - <label> - <input - name='userOpenInviteOptions' - type='radio' - defaultChecked={this.state.allow_open_invite} - onChange={this.handleOpenInviteRadio.bind(this, true)} - /> - <FormattedMessage - id='general_tab.yes' - defaultMessage='Yes' - /> - </label> - <br/> - </div> - <div className='radio'> - <label> - <input - name='userOpenInviteOptions' - type='radio' - defaultChecked={!this.state.allow_open_invite} - onChange={this.handleOpenInviteRadio.bind(this, false)} - /> - <FormattedMessage - id='general_tab.no' - defaultMessage='No' - /> - </label> - <br/> - </div> - <div> - <br/> - <FormattedMessage - id='general_tab.openInviteDesc' - defaultMessage='When allowed, a link to account creation will be included on the sign-in page of this team and allow any visitor to sign-up.' - /> - </div> - </div> - ]; - - openInviteSection = ( - <SettingItemMax - title={formatMessage(holders.openInviteTitle)} - inputs={inputs} - submit={this.handleOpenInviteSubmit} - server_error={serverError} - updateSection={this.onUpdateOpenInviteSection} - /> - ); - } else { - let describe = ''; - if (this.state.allow_open_invite === true) { - describe = formatMessage(holders.yes); - } else { - describe = formatMessage(holders.no); - } - - openInviteSection = ( - <SettingItemMin - title={formatMessage(holders.openInviteTitle)} - describe={describe} - updateSection={this.onUpdateOpenInviteSection} - /> - ); - } - - let inviteSection; - - if (this.props.activeSection === 'invite_id') { - const inputs = []; - - inputs.push( - <div key='teamInviteSetting'> - <div className='row'> - <label className='col-sm-5 control-label visible-xs-block'> - </label> - <div className='col-sm-12'> - <input - className='form-control' - type='text' - onChange={this.updateInviteId} - value={this.state.invite_id} - maxLength='32' - /> - <div className='padding-top x2'> - <a - href='#' - onClick={this.handleGenerateInviteId} - > - <FormattedMessage - id='general_tab.regenerate' - defaultMessage='Re-Generate' - /> - </a> - </div> - </div> - </div> - <div className='setting-list__hint'> - <FormattedMessage - id='general_tab.codeLongDesc' - defaultMessage='The Invite Code is used as part of the URL in the team invitation link created by **Get Team Invite Link** in the main menu. Regenerating creates a new team invitation link and invalidates the previous link.' - /> - </div> - </div> - ); - - inviteSection = ( - <SettingItemMax - title={formatMessage(holders.codeTitle)} - inputs={inputs} - submit={this.handleInviteIdSubmit} - server_error={serverError} - client_error={clientError} - updateSection={this.onUpdateInviteIdSection} - /> - ); - } else { - inviteSection = ( - <SettingItemMin - title={formatMessage(holders.codeTitle)} - describe={formatMessage(holders.codeDesc)} - updateSection={this.onUpdateInviteIdSection} - /> - ); - } - - let nameSection; - - if (this.props.activeSection === 'name') { - const inputs = []; - - let teamNameLabel = ( - <FormattedMessage - id='general_tab.teamName' - defaultMessage='Team Name' - /> - ); - if (Utils.isMobile()) { - teamNameLabel = ''; - } - - inputs.push( - <div - key='teamNameSetting' - className='form-group' - > - <label className='col-sm-5 control-label'>{teamNameLabel}</label> - <div className='col-sm-7'> - <input - className='form-control' - type='text' - maxLength='22' - onChange={this.updateName} - value={this.state.name} - /> - </div> - </div> - ); - - const nameExtraInfo = <span>{formatMessage(holders.teamNameInfo)}</span>; - - nameSection = ( - <SettingItemMax - title={formatMessage({id: 'general_tab.teamName'})} - inputs={inputs} - submit={this.handleNameSubmit} - server_error={serverError} - client_error={clientError} - updateSection={this.onUpdateNameSection} - extraInfo={nameExtraInfo} - /> - ); - } else { - var describe = this.state.name; - - nameSection = ( - <SettingItemMin - title={formatMessage({id: 'general_tab.teamName'})} - describe={describe} - updateSection={this.onUpdateNameSection} - /> - ); - } - - return ( - <div> - <div className='modal-header'> - <button - type='button' - className='close' - data-dismiss='modal' - aria-label='Close' - > - <span aria-hidden='true'>×</span> - </button> - <h4 - className='modal-title' - ref='title' - > - <div className='modal-back'> - <i className='fa fa-angle-left'></i> - </div> - <FormattedMessage - id='general_tab.title' - defaultMessage='General Settings' - /> - </h4> - </div> - <div - ref='wrapper' - className='user-settings' - > - <h3 className='tab-header'> - <FormattedMessage - id='general_tab.title' - defaultMessage='General Settings' - /> - </h3> - <div className='divider-dark first'/> - {nameSection} - <div className='divider-light'/> - {openInviteSection} - <div className='divider-light'/> - {teamListingSection} - <div className='divider-light'/> - {inviteSection} - <div className='divider-dark'/> - </div> - </div> - ); - } -} - -GeneralTab.propTypes = { - intl: intlShape.isRequired, - updateSection: React.PropTypes.func.isRequired, - team: React.PropTypes.object.isRequired, - activeSection: React.PropTypes.string.isRequired -}; - -export default injectIntl(GeneralTab);
\ No newline at end of file |