Merged master into add-name-to-signup

This commit is contained in:
Ivan Diaz 2016-07-27 11:12:36 -03:00
commit 1b7b449ae6
6 changed files with 62 additions and 22 deletions

View File

@ -1,10 +1,12 @@
const React = require('react');
const ReactDOM = require('react-dom');
const Reflux = require('reflux');
const _ = require('lodash');
const classNames = require('classnames');
const UserActions = require('actions/user-actions');
const UserStore = require('stores/user-store');
const focus = require('lib-core/focus');
const Button = require('core-components/button');
const Form = require('core-components/form');
@ -35,7 +37,7 @@ let MainHomePageLoginWidget = React.createClass({
renderLogin() {
return (
<Widget className="main-home-page--widget" title="Login">
<Widget className="main-home-page--widget" title="Login" ref="loginWidget">
<Form className="login-widget--form" ref="loginForm" onSubmit={this.handleLoginFormSubmit} errors={this.state.loginFormErrors} onValidateErrors={this.handleLoginFormErrorsValidation}>
<div className="login-widget--inputs">
<Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL" required/>
@ -46,7 +48,7 @@ let MainHomePageLoginWidget = React.createClass({
<Button type="primary">LOG IN</Button>
</div>
</Form>
<Button className="login-widget--forgot-password" type="link" onClick={this.handleForgotPasswordClick}>
<Button className="login-widget--forgot-password" type="link" onClick={this.handleForgotPasswordClick} onMouseDown={(event) => {event.preventDefault()}}>
{'Forgot your password?'}
</Button>
</Widget>
@ -55,7 +57,7 @@ let MainHomePageLoginWidget = React.createClass({
renderPasswordRecovery() {
return (
<Widget className="main-home-page--widget main-home-page--password-widget" title="Password Recovery">
<Widget className="main-home-page--widget main-home-page--password-widget" title="Password Recovery" ref="recoverWidget">
<Form className="login-widget--form" onSubmit={this.handleForgotPasswordSubmit}>
<div className="login-widget--inputs">
<Input placeholder="email" name="email" className="login-widget--input" validation="EMAIL"/>
@ -64,7 +66,7 @@ let MainHomePageLoginWidget = React.createClass({
<Button type="primary">Recover my password</Button>
</div>
</Form>
<Button className="login-widget--forgot-password" type="link" onClick={this.handleBackToLoginClick}>
<Button className="login-widget--forgot-password" type="link" onClick={this.handleBackToLoginClick} onMouseDown={(event) => {event.preventDefault()}}>
{'Back to login form'}
</Button>
</Widget>
@ -88,13 +90,13 @@ let MainHomePageLoginWidget = React.createClass({
handleForgotPasswordClick() {
this.setState({
sideToShow: 'back'
});
}, this.moveFocusToCurrentSide);
},
handleBackToLoginClick() {
this.setState({
sideToShow: 'front'
});
}, this.moveFocusToCurrentSide);
},
onUserStoreChanged(event) {
@ -107,6 +109,23 @@ let MainHomePageLoginWidget = React.createClass({
this.refs.loginForm.refs.password.focus()
}.bind(this));
}
},
moveFocusToCurrentSide() {
let currentWidget;
let previousWidget;
if (this.state.sideToShow === 'front') {
currentWidget = ReactDOM.findDOMNode(this.refs.loginWidget);
previousWidget = ReactDOM.findDOMNode(this.refs.recoverWidget);
} else {
currentWidget = ReactDOM.findDOMNode(this.refs.recoverWidget);
previousWidget = ReactDOM.findDOMNode(this.refs.loginWidget);
}
if (focus.isActiveElementInsideDOMTree(previousWidget)) {
focus.focusFirstInput(currentWidget);
}
}
});

View File

@ -0,0 +1,18 @@
const _ = require('lodash');
export default {
isActiveElementInsideDOMTree(domTree = document) {
let activeElement = document.activeElement;
let elements = domTree.querySelectorAll('*');
return (_.findIndex(elements, activeElement) !== -1);
},
focusFirstInput(domTree) {
let firstFocusableElement = domTree.querySelector('input');
if (firstFocusableElement) {
firstFocusableElement.focus();
}
}
};

View File

@ -23,7 +23,12 @@ class InitSettingsController extends Controller {
private function storeGlobalSettings() {
$this->storeSettings([
'language' => 'en'
'language' => 'en',
'no-reply-email' => 'noreply@opensupports.com',
'smtp-host' => 'localhost',
'smtp-port' => 7070,
'smtp-user' => '',
'smtp-pass' => '',
]);
}

View File

@ -3,15 +3,13 @@ class MailSender {
private $mailOptions = [];
//TODO: Add real initial options when Settings class is available
public function __construct() {
$this->mailOptions['from'] = 'noreply@opensupports.com';
$this->mailOptions['from'] = Setting::getSetting('no-reply-email');
//SMTP Options
$this->mailOptions['smtp_host'] = 'localhost';
$this->mailOptions['smtp_port'] = 7070;
$this->mailOptions['smtp_user'] = '';
$this->mailOptions['smtp_pass'] = '';
$this->mailOptions['smtp-host'] = Setting::getSetting('smtp-host');
$this->mailOptions['smtp-port'] = Setting::getSetting('smtp-host');
$this->mailOptions['smtp-user'] = Setting::getSetting('smtp-host');
$this->mailOptions['smtp-pass'] = Setting::getSetting('smtp-host');
}
public function setTemplate($type, $config) {
@ -29,14 +27,12 @@ class MailSender {
$mailer->Subject = $this->mailOptions['subject'];
$mailer->Body = $this->mailOptions['body'];
//$mailer->SMTPDebug = 3;
$mailer->isSMTP();
$mailer->SMTPAuth = true;
$mailer->Host = $this->mailOptions['smtp_host'];
$mailer->Port = $this->mailOptions['smtp_port'];
$mailer->Username = $this->mailOptions['smtp_user'];
$mailer->Password = $this->mailOptions['smtp_pass'];
//$mailer->SMTPSecure = "tls";
$mailer->Host = $this->mailOptions['smtp-host'];
$mailer->Port = $this->mailOptions['smtp-port'];
$mailer->Username = $this->mailOptions['smtp-user'];
$mailer->Password = $this->mailOptions['smtp-pass'];
$mailer->Timeout = 1000;
if ($mailer->smtpConnect()) {

View File

@ -12,7 +12,7 @@ class MailTemplate extends DataStore {
$bean = RedBean::findOne(MailTemplate::TABLE, 'type = :type AND language = :language', array(
':type' => $type,
':language' => $globalLanguage->value
':language' => $globalLanguage
));
return ($bean) ? new MailTemplate($bean) : null;

View File

@ -4,7 +4,9 @@ class Setting extends DataStore {
const TABLE = 'setting';
public static function getSetting($name) {
return parent::getDataStore($name, 'name');
$dataStore = parent::getDataStore($name, 'name');
return ($dataStore !== null) ? $dataStore->value : null;
}
public static function getProps() {