Commit bc60b93a authored by difox's avatar difox

Merge branch 'master' of http://git.task-on.com/ktask/task-on.com

Conflicts:
	common/modules/school/views/course/index.php
	common/modules/users/models/User.php
	frontend/config/main.php
parents 79ef690f efcdc81e
...@@ -18,8 +18,8 @@ use yii\helpers\Html; ...@@ -18,8 +18,8 @@ use yii\helpers\Html;
Вы получили это письмо, потому что ваш адрес был указан Вы получили это письмо, потому что ваш адрес был указан
при регистрации нового логина на сайте <?php echo $link;?> при регистрации нового логина на сайте <?php echo $link;?>
Чтобы завершить регистрацию, пройдите по ссылке: Чтобы завершить регистрацию, пройдите по ссылке:
<a href="<?php echo $link;?>"> <a href="<?php echo $linkActivate;?>">
<?php echo $link;?> <?php echo $linkActivate;?>
</a> </a>
<?php $this->endBody() ?> <?php $this->endBody() ?>
</body> </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 ...@@ -30,7 +30,8 @@ class CourseController extends BaseController
$modelUser = new User(); $modelUser = new User();
$form = new \common\components\BaseForm('/common/modules/users/forms/RegistrationUserForm', $modelUser); $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) public function actionView($id)
......
<?php
use common\modules\eauth\widgets;
?>
<section class="sh_kurs"> <section class="sh_kurs">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
...@@ -19,11 +17,22 @@ use common\modules\eauth\widgets; ...@@ -19,11 +17,22 @@ use common\modules\eauth\widgets;
</ul> </ul>
</div> </div>
</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="row">
<div class="col-md-12 col-xs-12 col-sm-12"> <div class="col-md-12 col-xs-12 col-sm-12">
<p>Рынок переполнен псевдотренерами, которые не имеют реального опыта в it отрасли. Они думают линейно и не создают последователей с аналитическим складом ума. Мы решили это изменить и создали данный раздел в который не только для своих сотрудников, но и для всего рынка выкладываем учебные материалы. Это не просто набор роликов. Это продуманные и обкатанные программы обучения с системой он-тестирования и сертификации. Выбери интересный для себя курс, зарегистрируйся, а все остальное сделаем мы!</p> <p>Рынок переполнен псевдотренерами, которые не имеют реального опыта в it отрасли. Они думают линейно и не создают последователей с аналитическим складом ума. Мы решили это изменить и создали данный раздел в который не только для своих сотрудников, но и для всего рынка выкладываем учебные материалы. Это не просто набор роликов. Это продуманные и обкатанные программы обучения с системой он-тестирования и сертификации. Выбери интересный для себя курс, зарегистрируйся, а все остальное сделаем мы!</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-12 col-xs-12 col-sm-12"> <div class="col-md-12 col-xs-12 col-sm-12">
<?php echo \yii\widgets\ListView::widget( [ <?php echo \yii\widgets\ListView::widget( [
...@@ -48,8 +57,6 @@ use common\modules\eauth\widgets; ...@@ -48,8 +57,6 @@ use common\modules\eauth\widgets;
</div> </div>
</div> </div>
</section> </section>
<?php if (Yii::$app->user->isGuest): ?>
<section class="sh_ft"> <section class="sh_ft">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
...@@ -57,7 +64,7 @@ use common\modules\eauth\widgets; ...@@ -57,7 +64,7 @@ use common\modules\eauth\widgets;
<?php <?php
echo $form; echo $form;
?> ?>
<?php echo common\modules\eauth\widgets\SocialWidget::widget(['action' => '/site/login']); ?> <?php echo \common\modules\eauth\widgets\Widget::widget(['action' => '/site/login']); ?>
<div class="usl">Проходя регистрацию вы подтверждаете<br><a href="#">согласие на обработку персональных данных.</a></div> <div class="usl">Проходя регистрацию вы подтверждаете<br><a href="#">согласие на обработку персональных данных.</a></div>
</div> </div>
<div class="col-md-8 col-xs-6 col-sm-12"> <div class="col-md-8 col-xs-6 col-sm-12">
...@@ -68,8 +75,6 @@ use common\modules\eauth\widgets; ...@@ -68,8 +75,6 @@ use common\modules\eauth\widgets;
</div> </div>
</div> </div>
</section> </section>
<?php endif ?>
<div class="tr_foot"></div> <div class="tr_foot"></div>
<footer> <footer>
<div class="container"> <div class="container">
...@@ -123,14 +128,11 @@ use common\modules\eauth\widgets; ...@@ -123,14 +128,11 @@ use common\modules\eauth\widgets;
<div id="reg_form" class="popup"> <div id="reg_form" class="popup">
<!-- <div class="txtbtnclose">Закрыть</div> --> <!-- <div class="txtbtnclose">Закрыть</div> -->
<span class="popup__title">Регистрация</span> <span class="popup__title">Регистрация</span>
<form class="validreg_form"> <?php
<input type="text" class="input_st field-input required alphanumeric" placeholder="Имя Фамилия"> echo $formPopup;
<input type="tel" class="input_st field-input required alphanumeric" placeholder="Телефон"> ?>
<input type="email" class="input_st field-input required email" placeholder="E-mail"> <span class="popup_text">Проходя регистрацию вы подтверждаете<br>
<input type="password" class="input_st field-input required alphanumeric" placeholder="Придумайте пароль"> <a href="#">согласие на обработку персональных данных.</a></span>
<input type="password" class="input_st field-input required alphanumeric" placeholder="Повторите пароль">
<button class="save-button popup_bt_send">Зарегистрироваться</button>
</form>
</div> </div>
</div> </div>
......
...@@ -15,7 +15,11 @@ ...@@ -15,7 +15,11 @@
<div class="blip_kurs">За просмотр этих курсов<br> мы заплатим 15 000 руб.</div> <div class="blip_kurs">За просмотр этих курсов<br> мы заплатим 15 000 руб.</div>
<?php endif;?> <?php endif;?>
<div class="kurs_foot clearfix"> <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>
<div class="for_<?php echo $model->getClassCourse($model->type);?>"> <div class="for_<?php echo $model->getClassCourse($model->type);?>">
<div class="r_<?php echo $model->getClassCourse($model->type);?>"></div> <div class="r_<?php echo $model->getClassCourse($model->type);?>"></div>
......
...@@ -120,6 +120,7 @@ class UserController extends \common\components\BaseController { ...@@ -120,6 +120,7 @@ class UserController extends \common\components\BaseController {
if ($model->validate()) { if ($model->validate()) {
$model->password = md5($model->password); $model->password = md5($model->password);
$model->activate_code = md5($model->password . 'xdf5sf'); $model->activate_code = md5($model->password . 'xdf5sf');
$model->source = User::SOURCE_DEFAULT;
$model->save(false); $model->save(false);
$assignment = new AuthAssignment(); $assignment = new AuthAssignment();
...@@ -127,8 +128,9 @@ class UserController extends \common\components\BaseController { ...@@ -127,8 +128,9 @@ class UserController extends \common\components\BaseController {
$assignment->user_id = $model->id; $assignment->user_id = $model->id;
$assignment->save(); $assignment->save();
$subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'].'/school'; $linkActivate = Yii::$app->params['frontUrl'].'/activate/'.$model->activate_code;
Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl']]) $subject = 'Регистрация на сайте '.Yii::$app->params['frontUrl'];
Yii::$app->mailer->compose('activate', ['link' => Yii::$app->params['frontUrl'], 'linkActivate' => $linkActivate])
->setFrom(Yii::$app->params['adminEmail']) ->setFrom(Yii::$app->params['adminEmail'])
->setTo($model->email) ->setTo($model->email)
->setSubject($subject) ->setSubject($subject)
...@@ -143,28 +145,25 @@ class UserController extends \common\components\BaseController { ...@@ -143,28 +145,25 @@ class UserController extends \common\components\BaseController {
} }
public function actionActivateAccount($code, $login) { public function actionActivateAccount($code) {
$this->cats = Categories::model()->parentCats()->findAll(); $user = User::model()->findByAttributes(array('activate_code' => $code));
$user = User::model()->findByAttributes(array('activate_code' => $code, 'email' => $login));
if ($user===null) if ($user===null)
$activate_error = 'Неверные данные активации аккаунта!'; \Yii::$app->getSession()->setFlash('error_activate', 'Неверные данные активации аккаунта!');
else { else {
if (strtotime($user->date_create) + 24 * 3600 > time()) { $user->activate_date = date('Y-m-d H:i:s');
$user->activate_date = null; $user->activate_code = null;
$user->activate_code = null; $user->status = User::STATUS_ACTIVE;
$user->status = User::STATUS_ACTIVE; $user->save(false);
$user->save(false); \Yii::$app->getSession()->setFlash('success_activate', 'Неверные данные активации аккаунта!');
$subject = 'Активация аккаунта на сайте '.Yii::$app->params['frontUrl'];
$message = 'Ваш аккаунт был успешно подтвержден. Хотите ' . CHtml::link('авторизироваться', '#', array('onclick' => '$("#login_box_display").click();')) . '?'; Yii::$app->mailer->compose('activateSuccess', ['link' => Yii::$app->params['frontUrl']])
} else ->setFrom(Yii::$app->params['adminEmail'])
$activate_error = 'С момента регистрации прошло больше суток!'; ->setTo($user->email)
} ->setSubject($subject)
->send();
$this->render('activateAccount', array( }
'activate_error' => isset($activate_error) ? $activate_error : null, $this->redirect(array("/school/course/index"));
'message' => isset($message) ? $message : null
));
} }
......
<?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,
];
...@@ -54,6 +54,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter ...@@ -54,6 +54,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
const SCENARIO_CSV_IMPORT = 'CSV_IMPORT'; const SCENARIO_CSV_IMPORT = 'CSV_IMPORT';
const SCENARIO_RECOVER_PASSWORD = 'RecoverPassword'; const SCENARIO_RECOVER_PASSWORD = 'RecoverPassword';
const SCENARIO_SOCIAL_REGISTRATION = 'SocialRegistration'; const SCENARIO_SOCIAL_REGISTRATION = 'SocialRegistration';
const SOURCE_DEFAULT = 'direct';
// public $email; // public $email;
public $role; public $role;
...@@ -195,6 +196,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter ...@@ -195,6 +196,7 @@ class User extends \common\components\ActiveRecordModel implements IdentityInter
//array('phone', 'integer'), //array('phone', 'integer'),
[['fio'], 'string','min' => 2], [['fio'], 'string','min' => 2],
[['email'], 'string','max' => 200], [['email'], 'string','max' => 200],
[['source'], 'string','max' => 50],
[['status'], '\yii\validators\RangeValidator', 'range' => ['active','new','blocked'], 'allowArray' => true], [['status'], '\yii\validators\RangeValidator', 'range' => ['active','new','blocked'], 'allowArray' => true],
[['activate_code'], 'safe'], [['activate_code'], 'safe'],
[['email'], 'filter','filter' => 'trim'], [['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');
}
}
...@@ -158,6 +158,7 @@ return [ ...@@ -158,6 +158,7 @@ return [
'login/eauth/<service_eauth:google|facebook|vk|twitter>' => 'site/login', 'login/eauth/<service_eauth:google|facebook|vk|twitter>' => 'site/login',
'login' => 'site/login', 'login' => 'site/login',
'logout' => 'site/logout', 'logout' => 'site/logout',
'activate/<code>'=>'users/user/activateAccount',
'<page:(/)>' => 'content/page/view', '<page:(/)>' => 'content/page/view',
'<_m>/<_c>/<_a>/<id:\d+>' => '<_m>/<_c>/<_a>', '<_m>/<_c>/<_a>/<id:\d+>' => '<_m>/<_c>/<_a>',
......
...@@ -3944,6 +3944,13 @@ footer { ...@@ -3944,6 +3944,13 @@ footer {
text-align: center; text-align: center;
margin-bottom: 34px; 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) { @media only screen and (min-width: 320px) and (max-width: 479px) {
.popup { .popup {
width: 300px; width: 300px;
...@@ -8771,7 +8778,7 @@ a.kurs_bt:active { ...@@ -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; width: 264px;
height: 50px; height: 50px;
background: #F5F5F5; background: #F5F5F5;
...@@ -8786,27 +8793,27 @@ a.kurs_bt:active { ...@@ -8786,27 +8793,27 @@ a.kurs_bt:active {
font-size: 16px; font-size: 16px;
padding: 0px 18px; 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; color: #698387;
font-size: 16px; font-size: 16px;
opacity: 1; 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; color: #698387;
font-size: 16px; font-size: 16px;
opacity: 1; 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; color: #698387;
font-size: 16px; font-size: 16px;
opacity: 1; 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; color: #698387;
font-size: 16px; font-size: 16px;
opacity: 1; 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; background: #fff url(../images/icon-fail.png) no-repeat 96% center;
border: 1px solid #E9A2A2; border: 1px solid #E9A2A2;
} }
...@@ -8877,13 +8884,13 @@ a.kurs_bt:active { ...@@ -8877,13 +8884,13 @@ a.kurs_bt:active {
} }
@media only screen and (min-width: 480px) and (max-width: 767px) { @media only screen and (min-width: 480px) and (max-width: 767px) {
.sh_reg_form { .sh_reg_form, .reg_form_popup {
width: 264px; width: 264px;
margin: 0 auto; margin: 0 auto;
} }
} }
@media only screen and (min-width: 320px) and (max-width: 479px) { @media only screen and (min-width: 320px) and (max-width: 479px) {
.sh_reg_form { .sh_reg_form, .reg_form_popup {
width: 264px; width: 264px;
margin: 0 auto; margin: 0 auto;
} }
...@@ -11466,10 +11473,14 @@ h6 { ...@@ -11466,10 +11473,14 @@ h6 {
color: #698387; color: #698387;
font-size: 14px; font-size: 14px;
} }
a.submit_form_reg{ a.submit_form_reg, a.submit_form_reg_popup{
text-decoration: none; text-decoration: none;
} }
.errors-reg{ .errors-reg, .errors-reg_popup{
color: #ff5b57; color: #ff5b57;
margin-bottom: 10px; 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() { ...@@ -591,6 +591,15 @@ $(document).ready(function() {
url: '/users/user/registration', // override for form's 'action' attribute url: '/users/user/registration', // override for form's 'action' attribute
dataType: 'json' // 'xml', 'script', or 'json' (expected server response type) 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 // bind to the form's submit event
$('#sh_reg_form').submit(function() { $('#sh_reg_form').submit(function() {
...@@ -599,10 +608,22 @@ $(document).ready(function() { ...@@ -599,10 +608,22 @@ $(document).ready(function() {
return false; 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 () { $(".submit_form_reg").on('click', function () {
$('#sh_reg_form').ajaxSubmit(options); $('#sh_reg_form').ajaxSubmit(options);
return false; return false;
}); });
$(".submit_form_reg_popup").on('click', function () {
$('#reg_form_popup').ajaxSubmit(optionsPopup);
return false;
});
}); });
// pre-submit callback // pre-submit callback
...@@ -617,11 +638,23 @@ function showResponse(responseText, statusText, xhr, $form) { ...@@ -617,11 +638,23 @@ function showResponse(responseText, statusText, xhr, $form) {
if (responseText.errors){ if (responseText.errors){
$.each(responseText.errors, function(key,value) { $.each(responseText.errors, function(key,value) {
$('.errors-reg').append(value+'<br>'); $('.errors-reg').append(value+'<br>');
$('.field-user-'+key).addClass('has-error'); $('#sh_reg_form .field-user-'+key).addClass('has-error');
}); });
} }
else{ else{
console.log(responseText.success); $('#sh_reg_form').html('<div class="alert alert-block alert-success">Регистрация успешно завершена. Вам отправлено письмо для активации аккаунта.</div>');
$('#sh_reg_form').html('Регистрация успешно завершена. Вам отправлено письмо для активации аккаунта.');
} }
} }
\ 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