PLT-93 cleaing up client side configs
Этот коммит содержится в:
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class EmailVerify extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -19,10 +17,10 @@ export default class EmailVerify extends React.Component {
|
||||
var body = '';
|
||||
var resend = '';
|
||||
if (this.props.isVerified === 'true') {
|
||||
title = config.SiteName + ' Email Verified';
|
||||
title = global.window.config.SiteName + ' Email Verified';
|
||||
body = <p>Your email has been verified! Click <a href={this.props.teamURL + '?email=' + this.props.userEmail}>here</a> to log in.</p>;
|
||||
} else {
|
||||
title = config.SiteName + ' Email Not Verified';
|
||||
title = global.window.config.SiteName + ' Email Not Verified';
|
||||
body = <p>Please verify your email address. Check your inbox for an email.</p>;
|
||||
resend = (
|
||||
<button
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
var utils = require('../utils/utils.jsx');
|
||||
var client = require('../utils/client.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class FindTeam extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -51,8 +50,8 @@ export default class FindTeam extends React.Component {
|
||||
if (this.state.sent) {
|
||||
return (
|
||||
<div>
|
||||
<h4>{'Find Your ' + utils.toTitleCase(strings.Team)}</h4>
|
||||
<p>{'An email was sent with links to any ' + strings.TeamPlural + ' to which you are a member.'}</p>
|
||||
<h4>{'Find Your team'}</h4>
|
||||
<p>{'An email was sent with links to any teams to which you are a member.'}</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -61,7 +60,7 @@ export default class FindTeam extends React.Component {
|
||||
<div>
|
||||
<h4>Find Your Team</h4>
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<p>{'Get an email with links to any ' + strings.TeamPlural + ' to which you are a member.'}</p>
|
||||
<p>{'Get an email with links to any teams to which you are a member.'}</p>
|
||||
<div className='form-group'>
|
||||
<label className='control-label'>Email</label>
|
||||
<div className={emailErrorClass}>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class GetLinkModal extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -76,9 +75,9 @@ export default class GetLinkModal extends React.Component {
|
||||
</div>
|
||||
<div className='modal-body'>
|
||||
<p>
|
||||
Send {strings.Team + 'mates'} the link below for them to sign-up to this {strings.Team} site.
|
||||
Send teammates the link below for them to sign-up to this team site.
|
||||
<br /><br />
|
||||
Be careful not to share this link publicly, since anyone with the link can join your {strings.Team}.
|
||||
Be careful not to share this link publicly, since anyone with the link can join your team.
|
||||
</p>
|
||||
<textarea
|
||||
className='form-control no-resize'
|
||||
|
||||
@@ -6,7 +6,6 @@ var ConfigStore = require('../stores/config_store.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
var ConfirmModal = require('./confirm_modal.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class InviteMemberModal extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -79,23 +78,9 @@ export default class InviteMemberModal extends React.Component {
|
||||
emailErrors[index] = '';
|
||||
}
|
||||
|
||||
if (config.AllowInviteNames) {
|
||||
invite.firstName = React.findDOMNode(this.refs['first_name' + index]).value.trim();
|
||||
if (!invite.firstName && config.RequireInviteNames) {
|
||||
firstNameErrors[index] = 'This is a required field';
|
||||
valid = false;
|
||||
} else {
|
||||
firstNameErrors[index] = '';
|
||||
}
|
||||
invite.firstName = React.findDOMNode(this.refs['first_name' + index]).value.trim();
|
||||
|
||||
invite.lastName = React.findDOMNode(this.refs['last_name' + index]).value.trim();
|
||||
if (!invite.lastName && config.RequireInviteNames) {
|
||||
lastNameErrors[index] = 'This is a required field';
|
||||
valid = false;
|
||||
} else {
|
||||
lastNameErrors[index] = '';
|
||||
}
|
||||
}
|
||||
invite.lastName = React.findDOMNode(this.refs['last_name' + index]).value.trim();
|
||||
|
||||
invites.push(invite);
|
||||
}
|
||||
@@ -143,10 +128,8 @@ export default class InviteMemberModal extends React.Component {
|
||||
for (var i = 0; i < inviteIds.length; i++) {
|
||||
var index = inviteIds[i];
|
||||
React.findDOMNode(this.refs['email' + index]).value = '';
|
||||
if (config.AllowInviteNames) {
|
||||
React.findDOMNode(this.refs['first_name' + index]).value = '';
|
||||
React.findDOMNode(this.refs['last_name' + index]).value = '';
|
||||
}
|
||||
React.findDOMNode(this.refs['first_name' + index]).value = '';
|
||||
React.findDOMNode(this.refs['last_name' + index]).value = '';
|
||||
}
|
||||
|
||||
this.setState({
|
||||
@@ -210,44 +193,43 @@ export default class InviteMemberModal extends React.Component {
|
||||
}
|
||||
|
||||
var nameFields = null;
|
||||
if (config.AllowInviteNames) {
|
||||
var firstNameClass = 'form-group';
|
||||
if (firstNameError) {
|
||||
firstNameClass += ' has-error';
|
||||
}
|
||||
var lastNameClass = 'form-group';
|
||||
if (lastNameError) {
|
||||
lastNameClass += ' has-error';
|
||||
}
|
||||
nameFields = (<div className='row--invite'>
|
||||
<div className='col-sm-6'>
|
||||
<div className={firstNameClass}>
|
||||
<input
|
||||
type='text'
|
||||
className='form-control'
|
||||
ref={'first_name' + index}
|
||||
placeholder='First name'
|
||||
maxLength='64'
|
||||
disabled={!this.state.emailEnabled}
|
||||
/>
|
||||
{firstNameError}
|
||||
</div>
|
||||
</div>
|
||||
<div className='col-sm-6'>
|
||||
<div className={lastNameClass}>
|
||||
<input
|
||||
type='text'
|
||||
className='form-control'
|
||||
ref={'last_name' + index}
|
||||
placeholder='Last name'
|
||||
maxLength='64'
|
||||
disabled={!this.state.emailEnabled}
|
||||
/>
|
||||
{lastNameError}
|
||||
</div>
|
||||
</div>
|
||||
</div>);
|
||||
|
||||
var firstNameClass = 'form-group';
|
||||
if (firstNameError) {
|
||||
firstNameClass += ' has-error';
|
||||
}
|
||||
var lastNameClass = 'form-group';
|
||||
if (lastNameError) {
|
||||
lastNameClass += ' has-error';
|
||||
}
|
||||
nameFields = (<div className='row--invite'>
|
||||
<div className='col-sm-6'>
|
||||
<div className={firstNameClass}>
|
||||
<input
|
||||
type='text'
|
||||
className='form-control'
|
||||
ref={'first_name' + index}
|
||||
placeholder='First name'
|
||||
maxLength='64'
|
||||
disabled={!this.state.emailEnabled}
|
||||
/>
|
||||
{firstNameError}
|
||||
</div>
|
||||
</div>
|
||||
<div className='col-sm-6'>
|
||||
<div className={lastNameClass}>
|
||||
<input
|
||||
type='text'
|
||||
className='form-control'
|
||||
ref={'last_name' + index}
|
||||
placeholder='Last name'
|
||||
maxLength='64'
|
||||
disabled={!this.state.emailEnabled}
|
||||
/>
|
||||
{lastNameError}
|
||||
</div>
|
||||
</div>
|
||||
</div>);
|
||||
|
||||
inviteSections[index] = (
|
||||
<div key={'key' + index}>
|
||||
|
||||
@@ -6,7 +6,6 @@ const Client = require('../utils/client.jsx');
|
||||
const UserStore = require('../stores/user_store.jsx');
|
||||
const BrowserStore = require('../stores/browser_store.jsx');
|
||||
const Constants = require('../utils/constants.jsx');
|
||||
import {config, strings} from '../utils/config.js';
|
||||
|
||||
export default class Login extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -177,7 +176,7 @@ export default class Login extends React.Component {
|
||||
<div className='signup-team__container'>
|
||||
<h5 className='margin--less'>Sign in to:</h5>
|
||||
<h2 className='signup-team__name'>{teamDisplayName}</h2>
|
||||
<h2 className='signup-team__subdomain'>on {config.SiteName}</h2>
|
||||
<h2 className='signup-team__subdomain'>on {global.window.config.SiteName}</h2>
|
||||
<form onSubmit={this.handleSubmit}>
|
||||
<div className={'form-group' + errorClass}>
|
||||
{serverError}
|
||||
@@ -185,11 +184,11 @@ export default class Login extends React.Component {
|
||||
{loginMessage}
|
||||
{emailSignup}
|
||||
<div className='form-group margin--extra form-group--small'>
|
||||
<span><a href='/find_team'>{'Find other ' + strings.TeamPlural}</a></span>
|
||||
<span><a href='/find_team'>{'Find other teams'}</a></span>
|
||||
</div>
|
||||
{forgotPassword}
|
||||
<div className='margin--extra'>
|
||||
<span>{'Want to create your own ' + strings.Team + '? '}
|
||||
<span>{'Want to create your own team? '}
|
||||
<a
|
||||
href='/'
|
||||
className='signup-team-login'
|
||||
|
||||
@@ -7,7 +7,6 @@ var UserStore = require('../stores/user_store.jsx');
|
||||
var TeamStore = require('../stores/team_store.jsx');
|
||||
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
function getStateFromStores() {
|
||||
return {teams: UserStore.getTeams(), currentTeam: TeamStore.getCurrent()};
|
||||
@@ -188,7 +187,7 @@ export default class NavbarDropdown extends React.Component {
|
||||
<li>
|
||||
<a
|
||||
target='_blank'
|
||||
href={config.HelpLink}
|
||||
href='/static/help/help.html'
|
||||
>
|
||||
Help
|
||||
</a>
|
||||
@@ -196,7 +195,7 @@ export default class NavbarDropdown extends React.Component {
|
||||
<li>
|
||||
<a
|
||||
target='_blank'
|
||||
href={config.ReportProblemLink}
|
||||
href='/static/help/report_problem.html'
|
||||
>
|
||||
Report a Problem
|
||||
</a>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var client = require('../utils/client.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class PasswordResetForm extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -62,7 +61,7 @@ export default class PasswordResetForm extends React.Component {
|
||||
<div className='signup-team__container'>
|
||||
<h3>Password Reset</h3>
|
||||
<form onSubmit={this.handlePasswordReset}>
|
||||
<p>{'Enter a new password for your ' + this.props.teamDisplayName + ' ' + config.SiteName + ' account.'}</p>
|
||||
<p>{'Enter a new password for your ' + this.props.teamDisplayName + ' ' + global.window.config.SiteName + ' account.'}</p>
|
||||
<div className={formClass}>
|
||||
<input
|
||||
type='password'
|
||||
|
||||
@@ -15,8 +15,6 @@ var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
var ActionTypes = Constants.ActionTypes;
|
||||
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class PostList extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -347,7 +345,7 @@ export default class PostList extends React.Component {
|
||||
|
||||
return (
|
||||
<div className='channel-intro'>
|
||||
<p className='channel-intro-text'>{'This is the start of your private message history with this ' + strings.Team + 'mate. Private messages and files shared here are not shown to people outside this area.'}</p>
|
||||
<p className='channel-intro-text'>{'This is the start of your private message history with this teammate. Private messages and files shared here are not shown to people outside this area.'}</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -369,7 +367,7 @@ export default class PostList extends React.Component {
|
||||
<p className='channel-intro__content'>
|
||||
Welcome to {channel.display_name}!
|
||||
<br/><br/>
|
||||
This is the first channel {strings.Team}mates see when they
|
||||
This is the first channel teammates see when they
|
||||
<br/>
|
||||
sign up - use it for posting updates everyone needs to know.
|
||||
<br/><br/>
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class SettingPicture extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@@ -81,7 +79,7 @@ export default class SettingPicture extends React.Component {
|
||||
>Save</a>
|
||||
);
|
||||
}
|
||||
var helpText = 'Upload a profile picture in either JPG or PNG format, at least ' + config.ProfileWidth + 'px in width and ' + config.ProfileHeight + 'px height.';
|
||||
var helpText = 'Upload a profile picture in either JPG or PNG format, at least ' + global.window.config.ProfileWidth + 'px in width and ' + global.window.config.ProfileHeight + 'px height.';
|
||||
|
||||
var self = this;
|
||||
return (
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
var NavbarDropdown = require('./navbar_dropdown.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class SidebarHeader extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -59,7 +58,7 @@ export default class SidebarHeader extends React.Component {
|
||||
}
|
||||
|
||||
SidebarHeader.defaultProps = {
|
||||
teamDisplayName: config.SiteName,
|
||||
teamDisplayName: global.window.config.SiteName,
|
||||
teamType: ''
|
||||
};
|
||||
SidebarHeader.propTypes = {
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
var client = require('../utils/client.jsx');
|
||||
var utils = require('../utils/utils.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class SidebarRightMenu extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -75,8 +74,8 @@ export default class SidebarRightMenu extends React.Component {
|
||||
}
|
||||
|
||||
var siteName = '';
|
||||
if (config.SiteName != null) {
|
||||
siteName = config.SiteName;
|
||||
if (global.window.config.SiteName != null) {
|
||||
siteName = global.window.config.SiteName;
|
||||
}
|
||||
var teamDisplayName = siteName;
|
||||
if (this.props.teamDisplayName) {
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
var WelcomePage = require('./team_signup_welcome_page.jsx');
|
||||
var TeamDisplayNamePage = require('./team_signup_display_name_page.jsx');
|
||||
var TeamURLPage = require('./team_signup_url_page.jsx');
|
||||
var AllowedDomainsPage = require('./team_signup_allowed_domains_page.jsx');
|
||||
var SendInivtesPage = require('./team_signup_send_invites_page.jsx');
|
||||
var UsernamePage = require('./team_signup_username_page.jsx');
|
||||
var PasswordPage = require('./team_signup_password_page.jsx');
|
||||
@@ -70,15 +69,6 @@ export default class SignupTeamComplete extends React.Component {
|
||||
);
|
||||
}
|
||||
|
||||
if (this.state.wizard === 'allowed_domains') {
|
||||
return (
|
||||
<AllowedDomainsPage
|
||||
state={this.state}
|
||||
updateParent={this.updateParent}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
if (this.state.wizard === 'send_invites') {
|
||||
return (
|
||||
<SendInivtesPage
|
||||
|
||||
@@ -6,7 +6,6 @@ var client = require('../utils/client.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
var BrowserStore = require('../stores/browser_store.jsx');
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class SignupUserComplete extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -136,7 +135,7 @@ export default class SignupUserComplete extends React.Component {
|
||||
// set up the email entry and hide it if an email was provided
|
||||
var yourEmailIs = '';
|
||||
if (this.state.user.email) {
|
||||
yourEmailIs = <span>Your email address is {this.state.user.email}. You'll use this address to sign in to {config.SiteName}.</span>;
|
||||
yourEmailIs = <span>Your email address is {this.state.user.email}. You'll use this address to sign in to {global.window.config.SiteName}.</span>;
|
||||
}
|
||||
|
||||
var emailContainerStyle = 'margin--extra';
|
||||
@@ -238,8 +237,8 @@ export default class SignupUserComplete extends React.Component {
|
||||
}
|
||||
|
||||
var termsDisclaimer = null;
|
||||
if (config.ShowTermsDuringSignup) {
|
||||
termsDisclaimer = <p>By creating an account and using Mattermost you are agreeing to our <a href={config.TermsLink}>Terms of Service</a>. If you do not agree, you cannot use this service.</p>;
|
||||
if (global.window.config.ShowTermsDuringSignup) {
|
||||
termsDisclaimer = <p>By creating an account and using Mattermost you are agreeing to our <a href='/static/help/terms.html'>Terms of Service</a>. If you do not agree, you cannot use this service.</p>;
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -251,7 +250,7 @@ export default class SignupUserComplete extends React.Component {
|
||||
/>
|
||||
<h5 className='margin--less'>Welcome to:</h5>
|
||||
<h2 className='signup-team__name'>{this.props.teamDisplayName}</h2>
|
||||
<h2 className='signup-team__subdomain'>on {config.SiteName}</h2>
|
||||
<h2 className='signup-team__subdomain'>on {global.window.config.SiteName}</h2>
|
||||
<h4 className='color--light'>Let's create your account</h4>
|
||||
{signupMessage}
|
||||
{emailSignup}
|
||||
|
||||
@@ -6,7 +6,6 @@ const SettingItemMax = require('./setting_item_max.jsx');
|
||||
|
||||
const Client = require('../utils/client.jsx');
|
||||
const Utils = require('../utils/utils.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class GeneralTab extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -30,7 +29,7 @@ export default class GeneralTab extends React.Component {
|
||||
state.clientError = 'This field is required';
|
||||
valid = false;
|
||||
} else if (name === this.props.teamDisplayName) {
|
||||
state.clientError = 'Please choose a new name for your ' + strings.Team;
|
||||
state.clientError = 'Please choose a new name for your team';
|
||||
valid = false;
|
||||
} else {
|
||||
state.clientError = '';
|
||||
@@ -99,7 +98,7 @@ export default class GeneralTab extends React.Component {
|
||||
if (this.props.activeSection === 'name') {
|
||||
let inputs = [];
|
||||
|
||||
let teamNameLabel = Utils.toTitleCase(strings.Team) + ' Name';
|
||||
let teamNameLabel = 'Team Name';
|
||||
if (Utils.isMobile()) {
|
||||
teamNameLabel = '';
|
||||
}
|
||||
@@ -123,7 +122,7 @@ export default class GeneralTab extends React.Component {
|
||||
|
||||
nameSection = (
|
||||
<SettingItemMax
|
||||
title={`${Utils.toTitleCase(strings.Team)} Name`}
|
||||
title={`Team Name`}
|
||||
inputs={inputs}
|
||||
submit={this.handleNameSubmit}
|
||||
server_error={serverError}
|
||||
@@ -136,7 +135,7 @@ export default class GeneralTab extends React.Component {
|
||||
|
||||
nameSection = (
|
||||
<SettingItemMin
|
||||
title={`${Utils.toTitleCase(strings.Team)} Name`}
|
||||
title={`Team Name`}
|
||||
describe={describe}
|
||||
updateSection={this.onUpdateSection}
|
||||
/>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var Client = require('../utils/client.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupAllowedDomainsPage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -77,12 +76,12 @@ export default class TeamSignupAllowedDomainsPage extends React.Component {
|
||||
ref='allow'
|
||||
defaultChecked={true}
|
||||
/>
|
||||
{' Allow sign up and ' + strings.Team + ' discovery with a ' + strings.Company + ' email address.'}
|
||||
{' Allow sign up and team discovery with a company email address.'}
|
||||
</label>
|
||||
</div>
|
||||
</p>
|
||||
<p>{'Check this box to allow your ' + strings.Team + ' members to sign up using their ' + strings.Company + ' email addresses if you share the same domain--otherwise, you need to invite everyone yourself.'}</p>
|
||||
<h4>{'Your ' + strings.Team + '\'s domain for emails'}</h4>
|
||||
<p>{'Check this box to allow your team members to sign up using their company email addresses if you share the same domain--otherwise, you need to invite everyone yourself.'}</p>
|
||||
<h4>{'Your team\'s domain for emails'}</h4>
|
||||
<div className={nameDivClass}>
|
||||
<div className='row'>
|
||||
<div className='col-sm-9'>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class ChooseAuthPage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -24,7 +23,7 @@ export default class ChooseAuthPage extends React.Component {
|
||||
}
|
||||
>
|
||||
<span className='icon' />
|
||||
<span>Create new {strings.Team} with GitLab Account</span>
|
||||
<span>Create new team with GitLab Account</span>
|
||||
</a>
|
||||
);
|
||||
}
|
||||
@@ -42,7 +41,7 @@ export default class ChooseAuthPage extends React.Component {
|
||||
}
|
||||
>
|
||||
<span className='fa fa-envelope' />
|
||||
<span>Create new {strings.Team} with email address</span>
|
||||
<span>Create new team with email address</span>
|
||||
</a>
|
||||
);
|
||||
}
|
||||
@@ -55,7 +54,7 @@ export default class ChooseAuthPage extends React.Component {
|
||||
<div>
|
||||
{buttons}
|
||||
<div className='form-group margin--extra-2x'>
|
||||
<span><a href='/find_team'>{'Find my ' + strings.Team}</a></span>
|
||||
<span><a href='/find_team'>{'Find my team'}</a></span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
var utils = require('../utils/utils.jsx');
|
||||
var client = require('../utils/client.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupDisplayNamePage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -54,7 +53,7 @@ export default class TeamSignupDisplayNamePage extends React.Component {
|
||||
className='signup-team-logo'
|
||||
src='/static/images/logo.png'
|
||||
/>
|
||||
<h2>{utils.toTitleCase(strings.Team) + ' Name'}</h2>
|
||||
<h2>{'Team Name'}</h2>
|
||||
<div className={nameDivClass}>
|
||||
<div className='row'>
|
||||
<div className='col-sm-9'>
|
||||
@@ -73,7 +72,7 @@ export default class TeamSignupDisplayNamePage extends React.Component {
|
||||
{nameError}
|
||||
</div>
|
||||
<div>
|
||||
{'Name your ' + strings.Team + ' in any language. Your ' + strings.Team + ' name shows in menus and headings.'}
|
||||
{'Name your team in any language. Your team name shows in menus and headings.'}
|
||||
</div>
|
||||
<button
|
||||
type='submit'
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
var Client = require('../utils/client.jsx');
|
||||
var BrowserStore = require('../stores/browser_store.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
import {strings, config} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupPasswordPage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -123,13 +122,13 @@ export default class TeamSignupPasswordPage extends React.Component {
|
||||
type='submit'
|
||||
className='btn btn-primary margin--extra'
|
||||
id='finish-button'
|
||||
data-loading-text={'<span class=\'glyphicon glyphicon-refresh glyphicon-refresh-animate\'></span> Creating ' + strings.Team + '...'}
|
||||
data-loading-text={'<span class=\'glyphicon glyphicon-refresh glyphicon-refresh-animate\'></span> Creating team...'}
|
||||
onClick={this.submitNext}
|
||||
>
|
||||
Finish
|
||||
</button>
|
||||
</div>
|
||||
<p>By proceeding to create your account and use {config.SiteName}, you agree to our <a href={config.TermsLink}>Terms of Service</a> and <a href={config.PrivacyLink}>Privacy Policy</a>. If you do not agree, you cannot use {config.SiteName}.</p>
|
||||
<p>By proceeding to create your account and use {global.window.config.SiteName}, you agree to our <a href='/static/help/terms.html'>Terms of Service</a> and <a href='/static/help/privacy.html'>Privacy Policy</a>. If you do not agree, you cannot use {global.window.config.SiteName}.</p>
|
||||
<div className='margin--extra'>
|
||||
<a
|
||||
href='#'
|
||||
|
||||
@@ -2,10 +2,8 @@
|
||||
// See License.txt for license information.
|
||||
|
||||
var EmailItem = require('./team_signup_email_item.jsx');
|
||||
var Utils = require('../utils/utils.jsx');
|
||||
var ConfigStore = require('../stores/config_store.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
import {strings, config} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -26,12 +24,7 @@ export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
}
|
||||
submitBack(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (config.AllowSignupDomainsWizard) {
|
||||
this.props.state.wizard = 'allowed_domains';
|
||||
} else {
|
||||
this.props.state.wizard = 'team_url';
|
||||
}
|
||||
this.props.state.wizard = 'team_url';
|
||||
|
||||
this.props.updateParent(this.props.state);
|
||||
}
|
||||
@@ -138,7 +131,7 @@ export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
|
||||
bottomContent = (
|
||||
<p className='color--light'>
|
||||
{'if you prefer, you can invite ' + strings.Team + ' members later'}
|
||||
{'if you prefer, you can invite team members later'}
|
||||
<br />
|
||||
{' and '}
|
||||
<a
|
||||
@@ -153,7 +146,7 @@ export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
} else {
|
||||
content = (
|
||||
<div className='form-group color--light'>
|
||||
{'Email is currently disabled for your ' + strings.Team + ', and emails cannot be sent. Contact your system administrator to enable email and email invitations.'}
|
||||
{'Email is currently disabled for your team, and emails cannot be sent. Contact your system administrator to enable email and email invitations.'}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -165,7 +158,7 @@ export default class TeamSignupSendInvitesPage extends React.Component {
|
||||
className='signup-team-logo'
|
||||
src='/static/images/logo.png'
|
||||
/>
|
||||
<h2>{'Invite ' + Utils.toTitleCase(strings.Team) + ' Members'}</h2>
|
||||
<h2>{'Invite Team Members'}</h2>
|
||||
{content}
|
||||
<div className='form-group'>
|
||||
<button
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
const Utils = require('../utils/utils.jsx');
|
||||
const Client = require('../utils/client.jsx');
|
||||
const Constants = require('../utils/constants.jsx');
|
||||
import {strings, config} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupUrlPage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -51,12 +50,8 @@ export default class TeamSignupUrlPage extends React.Component {
|
||||
Client.findTeamByName(name,
|
||||
function success(data) {
|
||||
if (!data) {
|
||||
if (config.AllowSignupDomainsWizard) {
|
||||
this.props.state.wizard = 'allowed_domains';
|
||||
} else {
|
||||
this.props.state.wizard = 'send_invites';
|
||||
this.props.state.team.type = 'O';
|
||||
}
|
||||
this.props.state.wizard = 'send_invites';
|
||||
this.props.state.team.type = 'O';
|
||||
|
||||
this.props.state.team.name = name;
|
||||
this.props.updateParent(this.props.state);
|
||||
@@ -97,7 +92,7 @@ export default class TeamSignupUrlPage extends React.Component {
|
||||
className='signup-team-logo'
|
||||
src='/static/images/logo.png'
|
||||
/>
|
||||
<h2>{`${Utils.toTitleCase(strings.Team)} URL`}</h2>
|
||||
<h2>{`Team URL`}</h2>
|
||||
<div className={nameDivClass}>
|
||||
<div className='row'>
|
||||
<div className='col-sm-11'>
|
||||
@@ -124,7 +119,7 @@ export default class TeamSignupUrlPage extends React.Component {
|
||||
</div>
|
||||
{nameError}
|
||||
</div>
|
||||
<p>{`Choose the web address of your new ${strings.Team}:`}</p>
|
||||
<p>{`Choose the web address of your new team:`}</p>
|
||||
<ul className='color--light'>
|
||||
<li>Short and memorable is best</li>
|
||||
<li>Use lowercase letters, numbers and dashes</li>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
var Utils = require('../utils/utils.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupUsernamePage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -55,7 +54,7 @@ export default class TeamSignupUsernamePage extends React.Component {
|
||||
src='/static/images/logo.png'
|
||||
/>
|
||||
<h2 className='margin--less'>Your username</h2>
|
||||
<h5 className='color--light'>{'Select a memorable username that makes it easy for ' + strings.Team + 'mates to identify you:'}</h5>
|
||||
<h5 className='color--light'>{'Select a memorable username that makes it easy for teammates to identify you:'}</h5>
|
||||
<div className='inner__content margin--extra'>
|
||||
<div className={nameDivClass}>
|
||||
<div className='row'>
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
var Utils = require('../utils/utils.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
var BrowserStore = require('../stores/browser_store.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class TeamSignupWelcomePage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -112,7 +111,7 @@ export default class TeamSignupWelcomePage extends React.Component {
|
||||
src='/static/images/logo.png'
|
||||
/>
|
||||
<h3 className='sub-heading'>Welcome to:</h3>
|
||||
<h1 className='margin--top-none'>{config.SiteName}</h1>
|
||||
<h1 className='margin--top-none'>{global.window.config.SiteName}</h1>
|
||||
</p>
|
||||
<p className='margin--less'>Let's set up your new team</p>
|
||||
<p>
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
const Utils = require('../utils/utils.jsx');
|
||||
const Client = require('../utils/client.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class EmailSignUpPage extends React.Component {
|
||||
constructor() {
|
||||
@@ -70,7 +69,7 @@ export default class EmailSignUpPage extends React.Component {
|
||||
</button>
|
||||
</div>
|
||||
<div className='form-group margin--extra-2x'>
|
||||
<span><a href='/find_team'>{`Find my ${strings.Team}`}</a></span>
|
||||
<span><a href='/find_team'>{`Find my team`}</a></span>
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
var utils = require('../utils/utils.jsx');
|
||||
var client = require('../utils/client.jsx');
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
import {strings} from '../utils/config.js';
|
||||
|
||||
export default class SSOSignUpPage extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -84,7 +83,7 @@ export default class SSOSignUpPage extends React.Component {
|
||||
disabled={disabled}
|
||||
>
|
||||
<span className='icon'/>
|
||||
<span>Create {strings.Team} with GitLab Account</span>
|
||||
<span>Create team with GitLab Account</span>
|
||||
</a>
|
||||
);
|
||||
}
|
||||
@@ -111,7 +110,7 @@ export default class SSOSignUpPage extends React.Component {
|
||||
{serverError}
|
||||
</div>
|
||||
<div className='form-group margin--extra-2x'>
|
||||
<span><a href='/find_team'>{'Find my ' + strings.Team}</a></span>
|
||||
<span><a href='/find_team'>{'Find my team'}</a></span>
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
var Utils = require('../utils/utils.jsx');
|
||||
var UserStore = require('../stores/user_store.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
var id = 0;
|
||||
|
||||
@@ -58,7 +57,7 @@ export default class UserProfile extends React.Component {
|
||||
}
|
||||
|
||||
var dataContent = '<img class="user-popover__image" src="/api/v1/users/' + this.state.profile.id + '/image?time=' + this.state.profile.update_at + '" height="128" width="128" />';
|
||||
if (!config.ShowEmail) {
|
||||
if (!global.window.config.ShowEmail) {
|
||||
dataContent += '<div class="text-nowrap">Email not shared</div>';
|
||||
} else {
|
||||
dataContent += '<div data-toggle="tooltip" title="' + this.state.profile.email + '"><a href="mailto:' + this.state.profile.email + '" class="text-nowrap text-lowercase user-popover__email">' + this.state.profile.email + '</a></div>';
|
||||
|
||||
@@ -6,7 +6,8 @@ var SettingItemMin = require('./setting_item_min.jsx');
|
||||
var SettingItemMax = require('./setting_item_max.jsx');
|
||||
var Client = require('../utils/client.jsx');
|
||||
var Utils = require('../utils/utils.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
var ThemeColors = ['#2389d7', '#008a17', '#dc4fad', '#ac193d', '#0072c6', '#d24726', '#ff8f32', '#82ba00', '#03b3b2', '#008299', '#4617b4', '#8c0095', '#004b8b', '#004b8b', '#570000', '#380000', '#585858', '#000000'];
|
||||
|
||||
export default class UserSettingsAppearance extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -21,8 +22,8 @@ export default class UserSettingsAppearance extends React.Component {
|
||||
getStateFromStores() {
|
||||
var user = UserStore.getCurrentUser();
|
||||
var theme = '#2389d7';
|
||||
if (config.ThemeColors != null) {
|
||||
theme = config.ThemeColors[0];
|
||||
if (ThemeColors != null) {
|
||||
theme = ThemeColors[0];
|
||||
}
|
||||
if (user.props && user.props.theme) {
|
||||
theme = user.props.theme;
|
||||
@@ -83,18 +84,18 @@ export default class UserSettingsAppearance extends React.Component {
|
||||
var themeSection;
|
||||
var self = this;
|
||||
|
||||
if (config.ThemeColors != null) {
|
||||
if (ThemeColors != null) {
|
||||
if (this.props.activeSection === 'theme') {
|
||||
var themeButtons = [];
|
||||
|
||||
for (var i = 0; i < config.ThemeColors.length; i++) {
|
||||
for (var i = 0; i < ThemeColors.length; i++) {
|
||||
themeButtons.push(
|
||||
<button
|
||||
key={config.ThemeColors[i] + 'key' + i}
|
||||
ref={config.ThemeColors[i]}
|
||||
key={ThemeColors[i] + 'key' + i}
|
||||
ref={ThemeColors[i]}
|
||||
type='button'
|
||||
className='btn btn-lg color-btn'
|
||||
style={{backgroundColor: config.ThemeColors[i]}}
|
||||
style={{backgroundColor: ThemeColors[i]}}
|
||||
onClick={this.updateTheme}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -8,7 +8,6 @@ var client = require('../utils/client.jsx');
|
||||
var AsyncClient = require('../utils/async_client.jsx');
|
||||
var utils = require('../utils/utils.jsx');
|
||||
var assign = require('object-assign');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
function getNotificationsStateFromStores() {
|
||||
var user = UserStore.getCurrentUser();
|
||||
@@ -415,7 +414,7 @@ export default class NotificationsTab extends React.Component {
|
||||
</label>
|
||||
<br/>
|
||||
</div>
|
||||
<div><br/>{'Email notifications are sent for mentions and private messages after you have been away from ' + config.SiteName + ' for 5 minutes.'}</div>
|
||||
<div><br/>{'Email notifications are sent for mentions and private messages after you have been away from ' + global.window.config.SiteName + ' for 5 minutes.'}</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
var Client = require('../utils/client.jsx');
|
||||
var Utils = require('../utils/utils.jsx');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export default class ViewImageModal extends React.Component {
|
||||
constructor(props) {
|
||||
@@ -301,7 +300,7 @@ export default class ViewImageModal extends React.Component {
|
||||
}
|
||||
|
||||
var publicLink = '';
|
||||
if (config.AllowPublicLink) {
|
||||
if (global.window.config.AllowPublicLink) {
|
||||
publicLink = (
|
||||
<div>
|
||||
<a
|
||||
|
||||
@@ -39,18 +39,18 @@ var AsyncClient = require('../utils/async_client.jsx');
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
var ActionTypes = Constants.ActionTypes;
|
||||
|
||||
function setupChannelPage(teamName, teamType, teamId, channelName, channelId) {
|
||||
function setupChannelPage(props) {
|
||||
AsyncClient.getConfig();
|
||||
|
||||
AppDispatcher.handleViewAction({
|
||||
type: ActionTypes.CLICK_CHANNEL,
|
||||
name: channelName,
|
||||
id: channelId
|
||||
name: props.ChannelName,
|
||||
id: props.ChannelId
|
||||
});
|
||||
|
||||
AppDispatcher.handleViewAction({
|
||||
type: ActionTypes.CLICK_TEAM,
|
||||
id: teamId
|
||||
id: props.TeamId
|
||||
});
|
||||
|
||||
// ChannelLoader must be rendered first
|
||||
@@ -65,14 +65,14 @@ function setupChannelPage(teamName, teamType, teamId, channelName, channelId) {
|
||||
);
|
||||
|
||||
React.render(
|
||||
<Navbar teamDisplayName={teamName} />,
|
||||
<Navbar teamDisplayName={props.TeamDisplayName} />,
|
||||
document.getElementById('navbar')
|
||||
);
|
||||
|
||||
React.render(
|
||||
<Sidebar
|
||||
teamDisplayName={teamName}
|
||||
teamType={teamType}
|
||||
teamDisplayName={props.TeamDisplayName}
|
||||
teamType={props.TeamType}
|
||||
/>,
|
||||
document.getElementById('sidebar-left')
|
||||
);
|
||||
@@ -88,17 +88,17 @@ function setupChannelPage(teamName, teamType, teamId, channelName, channelId) {
|
||||
);
|
||||
|
||||
React.render(
|
||||
<TeamSettingsModal teamDisplayName={teamName} />,
|
||||
<TeamSettingsModal teamDisplayName={props.TeamDisplayName} />,
|
||||
document.getElementById('team_settings_modal')
|
||||
);
|
||||
|
||||
React.render(
|
||||
<TeamMembersModal teamDisplayName={teamName} />,
|
||||
<TeamMembersModal teamDisplayName={props.TeamDisplayName} />,
|
||||
document.getElementById('team_members_modal')
|
||||
);
|
||||
|
||||
React.render(
|
||||
<MemberInviteModal teamType={teamType} />,
|
||||
<MemberInviteModal teamType={props.TeamType} />,
|
||||
document.getElementById('invite_member_modal')
|
||||
);
|
||||
|
||||
@@ -184,8 +184,8 @@ function setupChannelPage(teamName, teamType, teamId, channelName, channelId) {
|
||||
|
||||
React.render(
|
||||
<SidebarRightMenu
|
||||
teamDisplayName={teamName}
|
||||
teamType={teamType}
|
||||
teamDisplayName={props.TeamDisplayName}
|
||||
teamType={props.TeamType}
|
||||
/>,
|
||||
document.getElementById('sidebar-menu')
|
||||
);
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
var ChannelStore = require('../stores/channel_store.jsx');
|
||||
var Constants = require('../utils/constants.jsx');
|
||||
|
||||
function setupHomePage(teamURL) {
|
||||
function setupHomePage(props) {
|
||||
var last = ChannelStore.getLastVisitedName();
|
||||
if (last == null || last.length === 0) {
|
||||
window.location = teamURL + '/channels/' + Constants.DEFAULT_CHANNEL;
|
||||
window.location = props.TeamURL + '/channels/' + Constants.DEFAULT_CHANNEL;
|
||||
} else {
|
||||
window.location = teamURL + '/channels/' + last;
|
||||
window.location = props.TeamURL + '/channels/' + last;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
var Login = require('../components/login.jsx');
|
||||
|
||||
function setupLoginPage(teamDisplayName, teamName, authServices) {
|
||||
function setupLoginPage(props) {
|
||||
React.render(
|
||||
<Login
|
||||
teamDisplayName={teamDisplayName}
|
||||
teamName={teamName}
|
||||
authServices={authServices}
|
||||
teamDisplayName={props.TeamDisplayName}
|
||||
teamName={props.TeamName}
|
||||
authServices={props.AuthServices}
|
||||
/>,
|
||||
document.getElementById('login')
|
||||
);
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
|
||||
var PasswordReset = require('../components/password_reset.jsx');
|
||||
|
||||
function setupPasswordResetPage(isReset, teamDisplayName, teamName, hash, data) {
|
||||
function setupPasswordResetPage(props) {
|
||||
React.render(
|
||||
<PasswordReset
|
||||
isReset={isReset}
|
||||
teamDisplayName={teamDisplayName}
|
||||
teamName={teamName}
|
||||
hash={hash}
|
||||
data={data}
|
||||
isReset={props.IsReset}
|
||||
teamDisplayName={props.TeamDisplayName}
|
||||
teamName={props.TeamName}
|
||||
hash={props.Hash}
|
||||
data={props.Data}
|
||||
/>,
|
||||
document.getElementById('reset')
|
||||
);
|
||||
|
||||
@@ -5,10 +5,10 @@ var SignupTeam = require('../components/signup_team.jsx');
|
||||
|
||||
var AsyncClient = require('../utils/async_client.jsx');
|
||||
|
||||
function setupSignupTeamPage(authServices) {
|
||||
function setupSignupTeamPage(props) {
|
||||
AsyncClient.getConfig();
|
||||
|
||||
var services = JSON.parse(authServices);
|
||||
var services = JSON.parse(props.AuthServices);
|
||||
|
||||
React.render(
|
||||
<SignupTeam services={services} />,
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
var SignupTeamComplete = require('../components/signup_team_complete.jsx');
|
||||
|
||||
function setupSignupTeamCompletePage(email, data, hash) {
|
||||
function setupSignupTeamCompletePage(props) {
|
||||
React.render(
|
||||
<SignupTeamComplete
|
||||
email={email}
|
||||
hash={hash}
|
||||
data={data}
|
||||
email={props.Email}
|
||||
hash={props.Hash}
|
||||
data={props.Data}
|
||||
/>,
|
||||
document.getElementById('signup-team-complete')
|
||||
);
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
|
||||
var SignupUserComplete = require('../components/signup_user_complete.jsx');
|
||||
|
||||
function setupSignupUserCompletePage(email, name, uiName, id, data, hash, authServices) {
|
||||
function setupSignupUserCompletePage(props) {
|
||||
React.render(
|
||||
<SignupUserComplete
|
||||
teamId={id}
|
||||
teamName={name}
|
||||
teamDisplayName={uiName}
|
||||
email={email}
|
||||
hash={hash}
|
||||
data={data}
|
||||
authServices={authServices}
|
||||
teamId={props.TeamId}
|
||||
teamName={props.TeamName}
|
||||
teamDisplayName={props.TeamDisplayName}
|
||||
email={props.Email}
|
||||
hash={props.Hash}
|
||||
data={props.Data}
|
||||
authServices={props.AuthServices}
|
||||
/>,
|
||||
document.getElementById('signup-user-complete')
|
||||
);
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
var EmailVerify = require('../components/email_verify.jsx');
|
||||
|
||||
global.window.setupVerifyPage = function setupVerifyPage(isVerified, teamURL, userEmail) {
|
||||
global.window.setupVerifyPage = function setupVerifyPage(props) {
|
||||
React.render(
|
||||
<EmailVerify
|
||||
isVerified={isVerified}
|
||||
teamURL={teamURL}
|
||||
userEmail={userEmail}
|
||||
isVerified={props.IsVerified}
|
||||
teamURL={props.TeamURL}
|
||||
userEmail={props.UserEmail}
|
||||
/>,
|
||||
document.getElementById('verify')
|
||||
);
|
||||
|
||||
@@ -3,42 +3,13 @@
|
||||
|
||||
export var config = {
|
||||
|
||||
// Segment configs
|
||||
SegmentWriteKey: '',
|
||||
|
||||
// Feature switches
|
||||
AllowPublicLink: true,
|
||||
AllowInviteNames: true,
|
||||
RequireInviteNames: false,
|
||||
AllowSignupDomainsWizard: false,
|
||||
|
||||
// Google Developer Key (for Youtube API links)
|
||||
// Leave blank to disable
|
||||
GoogleDeveloperKey: '',
|
||||
|
||||
// Privacy switches
|
||||
ShowEmail: true,
|
||||
|
||||
// Links
|
||||
TermsLink: '/static/help/configure_links.html',
|
||||
PrivacyLink: '/static/help/configure_links.html',
|
||||
AboutLink: '/static/help/configure_links.html',
|
||||
HelpLink: '/static/help/configure_links.html',
|
||||
ReportProblemLink: '/static/help/configure_links.html',
|
||||
HomeLink: '',
|
||||
|
||||
// Toggle whether or not users are shown a message about agreeing to the Terms of Service during the signup process
|
||||
ShowTermsDuringSignup: false,
|
||||
|
||||
ThemeColors: ['#2389d7', '#008a17', '#dc4fad', '#ac193d', '#0072c6', '#d24726', '#ff8f32', '#82ba00', '#03b3b2', '#008299', '#4617b4', '#8c0095', '#004b8b', '#004b8b', '#570000', '#380000', '#585858', '#000000']
|
||||
};
|
||||
|
||||
// Flavor strings
|
||||
export var strings = {
|
||||
Team: 'team',
|
||||
TeamPlural: 'teams',
|
||||
Company: 'company',
|
||||
CompanyPlural: 'companies'
|
||||
ShowTermsDuringSignup: false
|
||||
};
|
||||
|
||||
global.window.config = config;
|
||||
|
||||
@@ -9,7 +9,6 @@ var ActionTypes = Constants.ActionTypes;
|
||||
var AsyncClient = require('./async_client.jsx');
|
||||
var client = require('./client.jsx');
|
||||
var Autolinker = require('autolinker');
|
||||
import {config} from '../utils/config.js';
|
||||
|
||||
export function isEmail(email) {
|
||||
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
|
||||
@@ -295,12 +294,12 @@ function getYoutubeEmbed(link) {
|
||||
$('.post-list-holder-by-time').scrollTop($('.post-list-holder-by-time')[0].scrollHeight);
|
||||
}
|
||||
|
||||
if (config.GoogleDeveloperKey) {
|
||||
if (global.window.config.GoogleDeveloperKey) {
|
||||
$.ajax({
|
||||
async: true,
|
||||
url: 'https://www.googleapis.com/youtube/v3/videos',
|
||||
type: 'GET',
|
||||
data: {part: 'snippet', id: youtubeId, key: config.GoogleDeveloperKey},
|
||||
data: {part: 'snippet', id: youtubeId, key: global.window.config.GoogleDeveloperKey},
|
||||
success: success
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
|
||||
Learn more, or download the source code from <a href=http://mattermost.com>http://mattermost.com</a>.</p>
|
||||
|
||||
<h1>How to update this link</h1>
|
||||
<p>In the source code, search for "config.js" and update the links pointing to this page to whatever policies and product description you prefer.
|
||||
</p>
|
||||
|
||||
<h1>Join the community</h1>
|
||||
<p>To take part in the community building Mattermost, please consider sharing comments, feature requests, votes, and contributions. If you like the project, please Tweet about us at <a href=https://twitter.com/mattermosthq>@mattermosthq</a>.</p>
|
||||
|
||||
24
web/static/help/help.html
Обычный файл
24
web/static/help/help.html
Обычный файл
@@ -0,0 +1,24 @@
|
||||
<htmL>
|
||||
<body>
|
||||
<h1>Help with Mattermost</h1>
|
||||
<p>Mattermost is a team communication service. It brings team real-time messaging and file sharing into one place, with easy archiving and search, accessible across PCs and phones.
|
||||
</p>
|
||||
<p>We built Mattermost to help teams focus on what matters most to them. It works for us, we hope it works for you too.
|
||||
|
||||
Learn more, or download the source code from <a href=http://mattermost.com>http://mattermost.com</a>.</p>
|
||||
|
||||
<h1>Join the community</h1>
|
||||
<p>To take part in the community building Mattermost, please consider sharing comments, feature requests, votes, and contributions. If you like the project, please Tweet about us at <a href=https://twitter.com/mattermosthq>@mattermosthq</a>.</p>
|
||||
|
||||
<p>Here's some links to get started:<br>
|
||||
<ul>
|
||||
<li><a href="https://github.com/mattermost/platform">Follow Mattermost on Github</a></li>
|
||||
<li><a href="http://forum.mattermost.org/">Ask us anything at http://forum.mattermost.org/</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Review the Mattermost feature list </a></li>
|
||||
<li><a href="http://www.mattermost.org/download/">Download our source code and install instructions</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Share feature requests and upvotes</a></li>
|
||||
<li><a href="http://www.mattermost.org/filing-issues/">File any bugs you find with our Issue tracking system</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
24
web/static/help/privacy.html
Обычный файл
24
web/static/help/privacy.html
Обычный файл
@@ -0,0 +1,24 @@
|
||||
<htmL>
|
||||
<body>
|
||||
<h1>Mattermost Privacy</h1>
|
||||
<p>Mattermost is a team communication service. It brings team real-time messaging and file sharing into one place, with easy archiving and search, accessible across PCs and phones.
|
||||
</p>
|
||||
<p>We built Mattermost to help teams focus on what matters most to them. It works for us, we hope it works for you too.
|
||||
|
||||
Learn more, or download the source code from <a href=http://mattermost.com>http://mattermost.com</a>.</p>
|
||||
|
||||
<h1>Join the community</h1>
|
||||
<p>To take part in the community building Mattermost, please consider sharing comments, feature requests, votes, and contributions. If you like the project, please Tweet about us at <a href=https://twitter.com/mattermosthq>@mattermosthq</a>.</p>
|
||||
|
||||
<p>Here's some links to get started:<br>
|
||||
<ul>
|
||||
<li><a href="https://github.com/mattermost/platform">Follow Mattermost on Github</a></li>
|
||||
<li><a href="http://forum.mattermost.org/">Ask us anything at http://forum.mattermost.org/</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Review the Mattermost feature list </a></li>
|
||||
<li><a href="http://www.mattermost.org/download/">Download our source code and install instructions</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Share feature requests and upvotes</a></li>
|
||||
<li><a href="http://www.mattermost.org/filing-issues/">File any bugs you find with our Issue tracking system</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
24
web/static/help/report_problem.html
Обычный файл
24
web/static/help/report_problem.html
Обычный файл
@@ -0,0 +1,24 @@
|
||||
<htmL>
|
||||
<body>
|
||||
<h1>Report a Problem About Mattermost</h1>
|
||||
<p>Mattermost is a team communication service. It brings team real-time messaging and file sharing into one place, with easy archiving and search, accessible across PCs and phones.
|
||||
</p>
|
||||
<p>We built Mattermost to help teams focus on what matters most to them. It works for us, we hope it works for you too.
|
||||
|
||||
Learn more, or download the source code from <a href=http://mattermost.com>http://mattermost.com</a>.</p>
|
||||
|
||||
<h1>Join the community</h1>
|
||||
<p>To take part in the community building Mattermost, please consider sharing comments, feature requests, votes, and contributions. If you like the project, please Tweet about us at <a href=https://twitter.com/mattermosthq>@mattermosthq</a>.</p>
|
||||
|
||||
<p>Here's some links to get started:<br>
|
||||
<ul>
|
||||
<li><a href="https://github.com/mattermost/platform">Follow Mattermost on Github</a></li>
|
||||
<li><a href="http://forum.mattermost.org/">Ask us anything at http://forum.mattermost.org/</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Review the Mattermost feature list </a></li>
|
||||
<li><a href="http://www.mattermost.org/download/">Download our source code and install instructions</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Share feature requests and upvotes</a></li>
|
||||
<li><a href="http://www.mattermost.org/filing-issues/">File any bugs you find with our Issue tracking system</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
24
web/static/help/terms.html
Обычный файл
24
web/static/help/terms.html
Обычный файл
@@ -0,0 +1,24 @@
|
||||
<htmL>
|
||||
<body>
|
||||
<h1>Mattermost Terms</h1>
|
||||
<p>Mattermost is a team communication service. It brings team real-time messaging and file sharing into one place, with easy archiving and search, accessible across PCs and phones.
|
||||
</p>
|
||||
<p>We built Mattermost to help teams focus on what matters most to them. It works for us, we hope it works for you too.
|
||||
|
||||
Learn more, or download the source code from <a href=http://mattermost.com>http://mattermost.com</a>.</p>
|
||||
|
||||
<h1>Join the community</h1>
|
||||
<p>To take part in the community building Mattermost, please consider sharing comments, feature requests, votes, and contributions. If you like the project, please Tweet about us at <a href=https://twitter.com/mattermosthq>@mattermosthq</a>.</p>
|
||||
|
||||
<p>Here's some links to get started:<br>
|
||||
<ul>
|
||||
<li><a href="https://github.com/mattermost/platform">Follow Mattermost on Github</a></li>
|
||||
<li><a href="http://forum.mattermost.org/">Ask us anything at http://forum.mattermost.org/</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Review the Mattermost feature list </a></li>
|
||||
<li><a href="http://www.mattermost.org/download/">Download our source code and install instructions</a></li>
|
||||
<li><a href="http://www.mattermost.org/feature-requests/">Share feature requests and upvotes</a></li>
|
||||
<li><a href="http://www.mattermost.org/filing-issues/">File any bugs you find with our Issue tracking system</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -50,7 +50,7 @@
|
||||
<div id="activity_log_modal"></div>
|
||||
<div id="removed_from_channel_modal"></div>
|
||||
<script>
|
||||
window.setup_channel_page('{{ .Props.TeamDisplayName }}', '{{ .Props.TeamType }}', '{{ .Props.TeamId }}', '{{ .Props.ChannelName }}', '{{ .Props.ChannelId }}');
|
||||
window.setup_channel_page({{ .Props }});
|
||||
$('body').tooltip( {selector: '[data-toggle=tooltip]'} );
|
||||
$('.modal-body').css('max-height', $(window).height() * 0.7);
|
||||
$('.modal-body').perfectScrollbar();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{{define "footer"}}
|
||||
<div class="footer-pane col-xs-12">
|
||||
<div class="col-xs-12">
|
||||
<span class="pull-right footer-site-name">{{ .SiteName }}</span>
|
||||
<span class="pull-right footer-site-name">{{ .ClientProps.SiteName }}</span>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<span class="pull-right footer-link copyright">© 2015 SpinPunch</span>
|
||||
@@ -12,9 +12,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.getElementById("help_link").setAttribute("href", config.HelpLink);
|
||||
document.getElementById("terms_link").setAttribute("href", config.TermsLink);
|
||||
document.getElementById("privacy_link").setAttribute("href", config.PrivacyLink);
|
||||
document.getElementById("about_link").setAttribute("href", config.AboutLink);
|
||||
document.getElementById("help_link").setAttribute("href", '/static/help/help.html');
|
||||
document.getElementById("terms_link").setAttribute("href", '/static/help/terms.html');
|
||||
document.getElementById("privacy_link").setAttribute("href", '/static/help/privacy.html');
|
||||
document.getElementById("about_link").setAttribute("href", '/static/help/about.html');
|
||||
</script>
|
||||
{{end}}
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
|
||||
<title>{{ .Title }}</title>
|
||||
<title>{{ .Props.Title }}</title>
|
||||
|
||||
<!-- iOS add to homescreen -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-title" content="{{ .Title }}">
|
||||
<meta name="application-name" content="{{ .Title }}">
|
||||
<meta name="apple-mobile-web-app-title" content="{{ .Props.Title }}">
|
||||
<meta name="application-name" content="{{ .Props.Title }}">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<!-- iOS add to homescreen -->
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
<link rel="manifest" href="/static/config/manifest.json">
|
||||
<!-- Android add to homescreen -->
|
||||
|
||||
<script>
|
||||
window.config = {{ .ClientProps }};
|
||||
</script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/static/css/bootstrap-3.3.5.min.css">
|
||||
<link rel="stylesheet" href="/static/css/jasny-bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
@@ -35,9 +40,7 @@
|
||||
|
||||
<script src="/static/js/jquery-dragster/jquery.dragster.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['annotationchart']}]}"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cloudfront.loggly.com/js/loggly.tracker.js" async></script>
|
||||
<style id="antiClickjack">body{display:none !important;}</style>
|
||||
<script src="/static/js/bundle.js"></script>
|
||||
<script type="text/javascript">
|
||||
@@ -46,17 +49,8 @@
|
||||
blocker.parentNode.removeChild(blocker);
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
if (window.config == null) {
|
||||
window.config = {};
|
||||
}
|
||||
window.config.SiteName = '{{ .SiteName }}';
|
||||
window.config.ProfileWidth = '{{ .Props.ProfileWidth }}'
|
||||
window.config.ProfileHeight = '{{ .Props.ProfileHeight }}'
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
if (window.config.SegmentWriteKey != null && window.config.SegmentWriteKey !== "") {
|
||||
if (window.config.SegmentDeveloperKey != null && window.config.SegmentDeveloperKey !== "") {
|
||||
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.0.1";
|
||||
analytics.load(window.config.SegmentWriteKey);
|
||||
var user = window.UserStore.getCurrentUser(true);
|
||||
@@ -77,7 +71,6 @@
|
||||
analytics = {};
|
||||
analytics.page = function(){};
|
||||
analytics.track = function(){};
|
||||
console.warn("config.js missing SegmentWriteKey, SegmentIO analytics is not tracking");
|
||||
}
|
||||
</script>
|
||||
<!-- Snowplow starts plowing -->
|
||||
@@ -89,7 +82,7 @@
|
||||
n.src=w;g.parentNode.insertBefore(n,g)}}(window,document,"script","//d1fc8wv8zag5ca.cloudfront.net/2.4.2/sp.js","snowplow"));
|
||||
|
||||
window.snowplow('newTracker', 'cf', '{{ .Props.AnalyticsUrl }}', {
|
||||
appId: '{{ .SiteName }}'
|
||||
appId: window.config.SiteName
|
||||
});
|
||||
|
||||
var user = window.UserStore.getCurrentUser(true);
|
||||
@@ -100,7 +93,6 @@
|
||||
window.snowplow('trackPageView');
|
||||
} else {
|
||||
window.snowplow = function(){};
|
||||
console.warn("config.json missing AnalyticsUrl, Snowplow analytics is not tracking");
|
||||
}
|
||||
</script>
|
||||
<!-- Snowplow stops plowing -->
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setup_home_page({{.Props.TeamURL}});
|
||||
window.setup_home_page({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setup_login_page('{{.Props.TeamDisplayName}}', '{{.Props.TeamName}}', '{{.Props.AuthServices}}');
|
||||
window.setup_login_page({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setup_password_reset_page('{{ .Props.IsReset }}', '{{ .Props.TeamDisplayName }}', '{{ .Props.TeamName }}', '{{ .Props.Hash }}', '{{ .Props.Data }}');
|
||||
window.setup_password_reset_page({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="col-sm-12">
|
||||
<div class="signup-team__container">
|
||||
<img class="signup-team-logo" src="/static/images/logo.png" />
|
||||
<h1>{{ .SiteName }}</h1>
|
||||
<h1>{{ .ClientProps.SiteName }}</h1>
|
||||
<h4 class="color--light">All team communication in one place, searchable and accessible anywhere</h4>
|
||||
<div id="signup-team"></div>
|
||||
</div>
|
||||
@@ -22,7 +22,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setup_signup_team_page('{{.Props.AuthServices}}');
|
||||
window.setup_signup_team_page({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setup_signup_team_complete_page('{{.Props.Email}}', '{{.Props.Data}}', '{{.Props.Hash}}');
|
||||
window.setup_signup_team_complete_page({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setup_signup_user_complete_page('{{.Props.Email}}', '{{.Props.TeamName}}', '{{.Props.TeamDisplayName}}', '{{.Props.TeamId}}', '{{.Props.Data}}', '{{.Props.Hash}}', '{{.Props.AuthServices}}');
|
||||
window.setup_signup_user_complete_page({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
window.setupVerifyPage('{{.Props.IsVerified}}', '{{.Props.TeamURL}}', '{{.Props.UserEmail}}');
|
||||
window.setupVerifyPage({{ .Props }});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<div class="row main">
|
||||
<div class="app__content">
|
||||
<div class="welcome-info">
|
||||
<h1>Welcome to {{ .SiteName }}!</h1>
|
||||
<h1>Welcome to {{ .ClientProps.SiteName }}!</h1>
|
||||
<p>
|
||||
You do not appear to be part of any teams. Please contact your
|
||||
administrator to have him send you an invitation to a private team.
|
||||
|
||||
10
web/web.go
10
web/web.go
@@ -30,10 +30,8 @@ func NewHtmlTemplatePage(templateName string, title string) *HtmlTemplatePage {
|
||||
}
|
||||
|
||||
props := make(map[string]string)
|
||||
props["AnalyticsUrl"] = utils.Cfg.ServiceSettings.AnalyticsUrl
|
||||
props["ProfileHeight"] = fmt.Sprintf("%v", utils.Cfg.ImageSettings.ProfileHeight)
|
||||
props["ProfileWidth"] = fmt.Sprintf("%v", utils.Cfg.ImageSettings.ProfileWidth)
|
||||
return &HtmlTemplatePage{TemplateName: templateName, Title: title, SiteName: utils.Cfg.ServiceSettings.SiteName, Props: props}
|
||||
props["Title"] = title
|
||||
return &HtmlTemplatePage{TemplateName: templateName, Props: props, ClientProps: utils.ClientProperties}
|
||||
}
|
||||
|
||||
func (me *HtmlTemplatePage) Render(c *api.Context, w http.ResponseWriter) {
|
||||
@@ -344,7 +342,7 @@ func getChannel(c *api.Context, w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
page := NewHtmlTemplatePage("channel", "")
|
||||
page.Title = name + " - " + team.DisplayName + " " + page.SiteName
|
||||
page.Props["Title"] = name + " - " + team.DisplayName + " " + page.ClientProps["SiteName"]
|
||||
page.Props["TeamDisplayName"] = team.DisplayName
|
||||
page.Props["TeamType"] = team.Type
|
||||
page.Props["TeamId"] = team.Id
|
||||
@@ -447,7 +445,7 @@ func resetPassword(c *api.Context, w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
page := NewHtmlTemplatePage("password_reset", "")
|
||||
page.Title = "Reset Password - " + page.SiteName
|
||||
page.Props["Title"] = "Reset Password " + page.ClientProps["SiteName"]
|
||||
page.Props["TeamDisplayName"] = teamDisplayName
|
||||
page.Props["Hash"] = hash
|
||||
page.Props["Data"] = data
|
||||
|
||||
Ссылка в новой задаче
Block a user