Popup registration

parent 058ab648
......@@ -18,8 +18,8 @@ use yii\helpers\Html;
Вы получили это письмо, потому что ваш адрес был указан
при регистрации нового логина на сайте <?php echo $link;?>
Чтобы завершить регистрацию, пройдите по ссылке:
<a href="<?php echo $link;?>">
<?php echo $link;?>
<a href="<?php echo $linkActivate;?>">
<?php echo $linkActivate;?>
</a>
<?php $this->endBody() ?>
</body>
......
<?php
use yii\helpers\Html;
/* @var $this \yii\web\View view component instance */
/* @var $message \yii\mail\MessageInterface the message being composed */
/* @var $content string main view render result */
?>
<?php $this->beginPage() ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?= Yii::$app->charset ?>" />
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
Вы активировали свой аккаунт.
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
......@@ -30,7 +30,8 @@ class CourseController extends BaseController
$modelUser = new User();
$form = new \common\components\BaseForm('/common/modules/users/forms/RegistrationUserForm', $modelUser);
return $this->render('index', ['dataProvider' => $dataProvider, 'form' => $form->out]);
$formPopup = new \common\components\BaseForm('/common/modules/users/forms/RegistrationUserPopupForm', $modelUser);
return $this->render('index', ['dataProvider' => $dataProvider, 'form' => $form->out, 'formPopup' => $formPopup->out]);
}
public function actionView($id)
......
<section class="sh_kurs">
<div class="container">
<div class="row">
......@@ -16,11 +17,22 @@
</ul>
</div>
</div>
<?php
if (Yii::$app->session->hasFlash('success_activate')) {
echo '<div class="alert alert-block alert-success">'.\Yii::$app->session->getFlash('success_activate').'</div>';
}
?>
<?php
if (Yii::$app->session->hasFlash('error_activate')) {
echo '<div class="alert alert-block alert-danger">'.\Yii::$app->session->getFlash('error_activate').'</div>';
}
?>
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<p>Рынок переполнен псевдотренерами, которые не имеют реального опыта в it отрасли. Они думают линейно и не создают последователей с аналитическим складом ума. Мы решили это изменить и создали данный раздел в который не только для своих сотрудников, но и для всего рынка выкладываем учебные материалы. Это не просто набор роликов. Это продуманные и обкатанные программы обучения с системой он-тестирования и сертификации. Выбери интересный для себя курс, зарегистрируйся, а все остальное сделаем мы!</p>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<?php echo \yii\widgets\ListView::widget( [
......@@ -116,14 +128,11 @@
<div id="reg_form" class="popup">
<!-- <div class="txtbtnclose">Закрыть</div> -->
<span class="popup__title">Регистрация</span>
<form class="validreg_form">
<input type="text" class="input_st field-input required alphanumeric" placeholder="Имя Фамилия">
<input type="tel" class="input_st field-input required alphanumeric" placeholder="Телефон">
<input type="email" class="input_st field-input required email" placeholder="E-mail">
<input type="password" class="input_st field-input required alphanumeric" placeholder="Придумайте пароль">
<input type="password" class="input_st field-input required alphanumeric" placeholder="Повторите пароль">
<button class="save-button popup_bt_send">Зарегистрироваться</button>
</form>
<?php
echo $formPopup;
?>
<span class="popup_text">Проходя регистрацию вы подтверждаете<br>
<a href="#">согласие на обработку персональных данных.</a></span>
</div>
</div>
......
......@@ -15,7 +15,11 @@
<div class="blip_kurs">За просмотр этих курсов<br> мы заплатим 15 000 руб.</div>
<?php endif;?>
<div class="kurs_foot clearfix">
<a href="<?php echo Url::toRoute(['/school/course/view', 'id' => $model->id]);?>" class="kurs_bt">Подробнее</a>
<?php if($model->type == Courses::TYPE_DV):?>
<a href="#reg_form" class="kurs_bt popup-form">Предварительная регистрация</a>
<?php else:?>
<a href="<?php echo Url::toRoute(['/school/course/view', 'id' => $model->id]);?>" class="kurs_bt">Подробнее</a>
<?php endif;?>
</div>
<div class="for_<?php echo $model->getClassCourse($model->type);?>">
<div class="r_<?php echo $model->getClassCourse($model->type);?>"></div>
......
......@@ -118,6 +118,7 @@ class UserController extends \common\components\BaseController {
if ($model->validate()) {
$model->password = md5($model->password);
$model->activate_code = md5($model->password . 'xdf5sf');
$model->source = User::SOURCE_DEFAULT;
$model->save(false);
$assignment = new AuthAssignment();
......@@ -125,8 +126,9 @@ class UserController extends \common\components\BaseController {
$assignment->user_id = $model->id;
$assignment->save();
$subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'].'/school';
Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl']])
$linkActivate = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
$subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'];
Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl'], 'linkActivate' => $linkActivate])
->setFrom(Yii::$app->params['adminEmail'])
->setTo($model->email)
->setSubject($subject)
......@@ -141,28 +143,25 @@ class UserController extends \common\components\BaseController {
}
public function actionActivateAccount($code, $login) {
$this->cats = Categories::model()->parentCats()->findAll();
$user = User::model()->findByAttributes(array('activate_code' => $code, 'email' => $login));
public function actionActivateAccount($code) {
$user = User::model()->findByAttributes(array('activate_code' => $code));
if ($user===null)
$activate_error = 'Неверные данные активации аккаунта!';
\Yii::$app->getSession()->setFlash('error_activate', 'Неверные данные активации аккаунта!');
else {
if (strtotime($user->date_create) + 24 * 3600 > time()) {
$user->activate_date = null;
$user->activate_code = null;
$user->status = User::STATUS_ACTIVE;
$user->save(false);
$message = 'Ваш аккаунт был успешно подтвержден. Хотите ' . CHtml::link('авторизироваться', '#', array('onclick' => '$("#login_box_display").click();')) . '?';
} else
$activate_error = 'С момента регистрации прошло больше суток!';
}
$this->render('activateAccount', array(
'activate_error' => isset($activate_error) ? $activate_error : null,
'message' => isset($message) ? $message : null
));
$user->activate_date = date('Y-m-d H:i:s');
$user->activate_code = null;
$user->status = User::STATUS_ACTIVE;
$user->save(false);
\Yii::$app->getSession()->setFlash('success_activate', 'Неверные данные активации аккаунта!');
$subject = 'Активация аккаунта на сайте '.Yii::$app->params['frontUrl'];
Yii::$app->mailer->compose('activateSuccess', ['link' => Yii::$app->params['frontUrl']])
->setFrom(Yii::$app->params['adminEmail'])
->setTo($user->email)
->setSubject($subject)
->send();
}
$this->redirect(array("/school/course/index"));
}
......
<?php
use common\modules\users\models\User;
$elements = [
'errors_reg' => '<div class="errors-reg_popup"></div>',
'name' => ['type' => 'text', 'placeholder'=>"Ваше имя*", 'options'=>['label'=>false],
'inputOptions'=>['class'=>'input_st field-input required alphanumeric']],
'email' => ['type' => 'text', 'placeholder'=>"E-mail*", 'options'=>['label'=>false],
'inputOptions'=>['class'=>'input_st field-input required alphanumeric']],
'password' => ['type' => 'password', 'placeholder'=>"Придумайте пароль*", 'options'=>['label'=>false],
'inputOptions'=>['class'=>'input_st field-input required alphanumeric']],
'password_c' => ['type' => 'password', 'placeholder'=>"Повторите пароль*", 'options'=>['label'=>false],
'inputOptions'=>['class'=>'input_st field-input required alphanumeric']],
'phone' => ['type' => 'text', 'placeholder'=>"Телефон", 'options'=>['label'=>false],
'inputOptions'=>['class'=>'input_st field-input required alphanumeric']],
'teltext' => '<div class="teltext-block">Для участие в проводимых конкурсах укажите Ваш реальный номер телефона,
что бы мы смогли вас оповестить о результатах</div>',
'occupation' => [
'type' => 'dropdownlist',
'items' => User::$occupation_list,
'placeholder'=>"Род занятий",
'options'=>['label'=>false],
'empty'=>'Чем вы занимаетесь',
'inputOptions'=>['class'=>'input_st field-input required alphanumeric']
],
'button_submit' => '<a href="javascript:void(0)" class="submit_form_reg_popup">
<div class="save-button sh_bt_send">
Записаться
</div>
</a>',
];
return [
'activeForm'=>[
'id' => 'reg_form_popup',
'options' => [
'enctype' => 'multipart/form-data'
],
],
'elements' => $elements,
];
......@@ -49,6 +49,8 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
const SCENARIO_SEARCH = 'Search';
const SCENARIO_CSV_IMPORT = 'CSV_IMPORT';
const SCENARIO_RECOVER_PASSWORD = 'RecoverPassword';
const SOURCE_DEFAULT = 'direct';
// public $email;
public $role;
......@@ -188,6 +190,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
//array('phone', 'integer'),
[['fio'], 'string','min' => 2],
[['email'], 'string','max' => 200],
[['source'], 'string','max' => 50],
[['status'], '\yii\validators\RangeValidator', 'range' => ['active','new','blocked'], 'allowArray' => true],
[['activate_code'], 'safe'],
[['email'], 'filter','filter' => 'trim'],
......
<?php
use yii\db\Migration;
use yii\db\Schema;
class m160207_184453_add_new_column_to_users extends Migration
{
public function safeUp()
{
$this->addColumn('users', 'source', Schema::TYPE_STRING . '(50) NOT NULL');
}
public function safeDown()
{
$this->dropColumn('users', 'source');
}
}
......@@ -156,7 +156,8 @@ return [
'school/course/<id>' => 'school/course/view',
'school/lesson/<id>' => 'school/lesson/view',
'login/eauth/<service_eauth:google|facebook|vk|twitter>' => 'site/login',
'login' => 'site/login',
'login' => 'site/login',
'activate/<code>'=>'users/user/activateAccount',
'<page:(/)>' => 'content/page/view',
'<_m>/<_c>/<_a>/<id:\d+>' => '<_m>/<_c>/<_a>',
......
......@@ -3944,6 +3944,13 @@ footer {
text-align: center;
margin-bottom: 34px;
}
.popup_text {
font-size: 13px;
color: #698387;
line-height: 24px;
display: block;
margin-bottom: 10px;
}
@media only screen and (min-width: 320px) and (max-width: 479px) {
.popup {
width: 300px;
......@@ -8771,7 +8778,7 @@ a.kurs_bt:active {
}
}
.sh_reg_form .input_st {
.sh_reg_form .input_st, .reg_form_popup .input_st {
width: 264px;
height: 50px;
background: #F5F5F5;
......@@ -8786,27 +8793,27 @@ a.kurs_bt:active {
font-size: 16px;
padding: 0px 18px;
}
.sh_reg_form .input_st::-webkit-input-placeholder {
.sh_reg_form .input_st::-webkit-input-placeholder, .reg_form_popup .input_st::-webkit-input-placeholder{
color: #698387;
font-size: 16px;
opacity: 1;
}
.sh_reg_form .input_st:-moz-placeholder {
.sh_reg_form .input_st:-moz-placeholder, .reg_form_popup .input_st:-moz-placeholder {
color: #698387;
font-size: 16px;
opacity: 1;
}
.sh_reg_form .input_st::-moz-placeholder {
.sh_reg_form .input_st::-moz-placeholder, .reg_form_popup .input_st::-moz-placeholder {
color: #698387;
font-size: 16px;
opacity: 1;
}
.sh_reg_form .input_st:-ms-input-placeholder {
.sh_reg_form .input_st:-ms-input-placeholder, .reg_form_popup .input_st:-ms-input-placeholder {
color: #698387;
font-size: 16px;
opacity: 1;
}
.sh_reg_form .field-input.input-error {
.sh_reg_form .field-input.input-error, .reg_form_popup .field-input.input-error {
background: #fff url(../images/icon-fail.png) no-repeat 96% center;
border: 1px solid #E9A2A2;
}
......@@ -8877,13 +8884,13 @@ a.kurs_bt:active {
}
@media only screen and (min-width: 480px) and (max-width: 767px) {
.sh_reg_form {
.sh_reg_form, .reg_form_popup {
width: 264px;
margin: 0 auto;
}
}
@media only screen and (min-width: 320px) and (max-width: 479px) {
.sh_reg_form {
.sh_reg_form, .reg_form_popup {
width: 264px;
margin: 0 auto;
}
......@@ -11466,10 +11473,14 @@ h6 {
color: #698387;
font-size: 14px;
}
a.submit_form_reg{
a.submit_form_reg, a.submit_form_reg_popup{
text-decoration: none;
}
.errors-reg{
.errors-reg, .errors-reg_popup{
color: #ff5b57;
margin-bottom: 10px;
}
.sh_kurs .alert {
margin-top: 10px;
margin-bottom: 10px;
}
\ No newline at end of file
......@@ -591,6 +591,15 @@ $(document).ready(function() {
url: '/users/user/registration', // override for form's 'action' attribute
dataType: 'json' // 'xml', 'script', or 'json' (expected server response type)
};
var optionsPopup = {
beforeSubmit: showRequest, // pre-submit callback
success: showResponsePopup, // post-submit callback
// other available options:
url: '/users/user/registration', // override for form's 'action' attribute
dataType: 'json' // 'xml', 'script', or 'json' (expected server response type)
};
// bind to the form's submit event
$('#sh_reg_form').submit(function() {
......@@ -599,10 +608,22 @@ $(document).ready(function() {
return false;
});
// bind to the form's submit event
$('#reg_form_popup').submit(function() {
$('.errors-reg_popup').append('');
$(this).ajaxSubmit(optionsPopup);
return false;
});
$(".submit_form_reg").on('click', function () {
$('#sh_reg_form').ajaxSubmit(options);
return false;
});
$(".submit_form_reg_popup").on('click', function () {
$('#reg_form_popup').ajaxSubmit(optionsPopup);
return false;
});
});
// pre-submit callback
......@@ -617,11 +638,23 @@ function showResponse(responseText, statusText, xhr, $form) {
if (responseText.errors){
$.each(responseText.errors, function(key,value) {
$('.errors-reg').append(value+'<br>');
$('.field-user-'+key).addClass('has-error');
$('#sh_reg_form .field-user-'+key).addClass('has-error');
});
}
else{
console.log(responseText.success);
$('#sh_reg_form').html('Регистрация успешно завершена. Вам отправлено письмо для активации аккаунта.');
$('#sh_reg_form').html('<div class="alert alert-block alert-success">Регистрация успешно завершена. Вам отправлено письмо для активации аккаунта.</div>');
}
}
\ No newline at end of file
}
// post-submit callback
function showResponsePopup(responseText, statusText, xhr, $form) {
if (responseText.errors){
$.each(responseText.errors, function(key,value) {
$('.errors-reg_popup').append(value+'<br>');
$('#reg_form_popup .field-user-'+key).addClass('has-error');
});
}
else{
$('#sh_reg_form').html('<div class="alert alert-block alert-success">Регистрация успешно завершена. Вам отправлено письмо для активации аккаунта.</div>');
$('#reg_form_popup').html('<div class="alert alert-block alert-success">Регистрация успешно завершена. Вам отправлено письмо для активации аккаунта.</div>');
}
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment