PLT-93 cleaing up client side configs

Этот коммит содержится в:
=Corey Hulen
2015-09-15 18:59:14 -07:00
родитель 788fc4373b
Коммит b2a679c25d
82 изменённых файлов: 429 добавлений и 375 удалений

Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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 Обычный файл
Просмотреть файл

@@ -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.

Просмотреть файл

@@ -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