#925 - Создать каркас модуля тестирования

parent ba37bf6b
......@@ -6,6 +6,7 @@ use Yii;
use yii\web\NotFoundHttpException;
use yii\web\Response;
use common\models\Settings;
use common\modules\testings\models\Test;
use common\modules\testings\models\Passing;
use common\modules\testings\models\Question;
......@@ -153,6 +154,15 @@ class TestController extends \common\components\BaseController
$passing = $this->findPassing($id);
if($passing->attempt >= $passing->test->attempt || strtotime($passing->start_date) + ($passing->test->minutes * 60) < time())
{
$passing->end_date = date('d.m.Y H:i:s');
$passing->status = Passing::ENDED;
$passing->save(false, ['end_date', 'status']);
return $this->redirect(['/testings/test/statistic', 'id' => $passing->id]);
}
switch ($passing->status)
{
case Passing::STARTED :
......@@ -167,29 +177,6 @@ class TestController extends \common\components\BaseController
]);
break;
case Passing::FAILED :
if($passing->attempt < $passing->test->attempt && strtotime($passing->start_date) + ($passing->test->minutes * 60) >= time())
{
return $this->redirect(['/testings/test/statistic', 'id' => $passing->id]);
}
else
{
if($passing->attempt >= $passing->test->attempt)
{
return $this->render('not_attempt', [
'model' => $passing,
]);
}
elseif(strtotime($passing->start_date) + ($passing->test->minutes * 60) < time())
{
return $this->render('not_time', [
'model' => $passing,
]);
}
return;
}
break;
case Passing::PASSED :
return $this->redirect(['/testings/test/statistic', 'id' => $passing->id]);
break;
......@@ -202,16 +189,33 @@ class TestController extends \common\components\BaseController
{
Yii::$app->response->format = Response::FORMAT_JSON;
$passing = $this->findModel($id);
$passing = $this->findPassing($id);
try
{
$email = Settings::getValue('bids-support-email');
$message = 'Сообщение: ' . Yii::$app->request->post('message') . '<br>Прохождение: ' . $passing->id;
$headers = "MIME-Version: 1.0\r\n".
"Content-Transfer-Encoding: 8bit\r\n".
"Content-Type: text/html; charset=\"UTF-8\"\r\n".
"X-Mailer: PHP v.".phpversion()."\r\n".
"From: Ошибка в тестировании на TaskOn <".Settings::getValue('bids-support-email-from').">\r\n";
$subject = "Ошибка в тестировании на TaskOn";
if($model && $model->sendNotAttempt(Yii::$app->request->post('message')))
@mail($email, $subject, $message, $headers);
}
catch (Exception $e)
{
echo [
}
return [
'success' => true,
'message' => 'Сообщение отправлено!'
];
}
}
else
{
throw new NotFoundHttpException('The requested page does not exist.');
......@@ -303,6 +307,13 @@ class TestController extends \common\components\BaseController
{
$passing = $this->findPassing($id);
if($passing->attempt >= $passing->test->attempt || strtotime($passing->start_date) + ($passing->test->minutes * 60) < time())
{
return $this->render('error', [
'model' => $passing,
]);
}
switch ($passing->passed)
{
case Passing::FAILED :
......
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use common\models\Settings;
?>
......@@ -19,46 +22,34 @@ use yii\helpers\Html;
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<h1 class="successfully_title">Тестирование не завершено.</h1>
<h6>Для переназначения теста позвоните в службу поддержки по телефону +7 903 961-42-29</h6>
<h6>Для переназначения теста позвоните в службу поддержки по телефону <?=Settings::getValue('content-phone');?></h6>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<div class="error_fedback clearfix">
<h6>Обратная связь</h6>
<?php $form = ActiveForm::begin([
'id' => 'error-testing-form',
'action' => ['/testing/send-not-attempt/'.$model->id]
])?>
<?=Html::beginForm();?>
<h6>Обратная связь</h6>
<?=Html::textArea('message', '', ['placeholder' => 'Введите сообщение']);?>
<?=Html::ajaxSubmitButton(
'Отправить',
Url::to(['/testings/testingTest/sendNotAttempt', 'id' => $model->id]),
[
'dataType' => 'json',
'success' => 'js:function(data){
if(data.success)
{
console.log("+");
$(".error_fedback").html("<div class=\"row\"><div class=\"col-sm-8\" style=\"margin:0 auto;float:none;\"><div class=\"gray_box\"><p>" + data.message + "</p></div></div></div>");
}
}'
],
[
<?=Html::textArea('message', '', ['placeholder' => 'Введите сообщение'])?>
<?=Html::submitButton('Отправить', [
'class' => 'error_fedback_btn'
]
);?>
<div class="clear"></div>
<?=Html::endForm();?>
])?>
<?php ActiveForm::end()?>
</div>
</div>
</div>
<!-- <div class="row">
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<div class="list_back">
<a href="/testings/test/index">Вернуться к списку тестов <span>↑</span></a>
<a href="#">Вернуться к списку тестов <span></span></a>
</div>
</div>
</div>
</div> -->
<div class="row">
<div class="col-md-12 col-xs-12 col-sm-12">
<div class="read_box_wr">
......
<?php
$this->page_title = $model->test->session->name;
$this->crumbs = array(
'Тестирование' => array('/testings/testingTest/index'),
$model->test->name => false,
);
?>
<?php if (Yii::app()->user->hasFlash('flash')) : ?>
<div class="message"><span>
<?php echo Yii::app()->user->getFlash('flash'); ?>
</span></div>
<?php endif; ?>
<div class="row">
<div class="col-sm-12">
<div class="not_passed_text">
<?=Setting::getValue('text_pass_not_time');?>
</div>
</div>
</div>
<div class="test_parameters not_passed_test">
<div class="row">
<div class="col-sm-6">
<h6>Тест пройден на:</h6>
<h5><?php echo $model->percent; ?>%</h5>
</div>
<div class="col-sm-6">
<h6>Прохождение теста у Вас заняло:</h6>
<?php
$minutesText = TestingPassing::declOfNum(floor($model->time / 60), array(' минута ', ' минуты ', ' минут '));
$secondsText = TestingPassing::declOfNum($model->time % 60, array(' секунда', ' секунды', ' секунд'));
?>
<h5><?=$minutesText?><?=$secondsText?></h5>
</div>
</div>
<br>
</div>
<?php if($model->gammas && !$model->test->mix) : ?>
<div class="row">
<div class="col-sm-12">
<div class="statistics_test_wr">
<ul class="statistics_test">
<?php foreach ($model->gammas as $gamma) : ?>
<li><span><?php echo $model->gammaPercent($gamma->id); ?>%</span><?php echo $gamma->name; ?> (<?php echo TestingGamma::$type_list[$gamma->type]; ?>)</li>
<?php endforeach; ?>
</ul>
</div>
</div>
</div>
<?php endif; ?>
<div class="row">
<div class="col-sm-12">
<div class="list_back">
<a href="/testings/testingTest/index">Вернуться к списку тестов <span></span></a>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<div class="green_wr not_passed_test_progress">
<div class="green_box">
<div class="progress_ins">
<span class="col_text">Вопрос <strong class="green_text"><?=$model->test->questions?></strong> из <strong class="green_text"><?=$model->test->questions?></strong></span>
<div class="progress_wr">
<div class="progress">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100% Complete (success)</span>
</div>
</div>
</div>
<div class="progress_done">
Выполнено 100%
</div>
</div>
<div class="time_progress">
<p>Затраченное время:</p>
<span><?=date("H:i:s", mktime(0, 0, $model->time));?></span>
</div>
<div class="clear"></div>
</div>
</div>
</div>
</div>
<br>
<?php echo $this->render('@app/views/layouts/footer-testing'); ?>
\ No newline at end of file
......@@ -106,9 +106,6 @@ use common\modules\testings\models\Question;
<div class="row">
<div class="col-md-4 col-xs-4 col-sm-12">
<div class="number_questions_img_box" id="questionPictureBox"></div>
<!-- <div class="testing_img_block">
<img src="/images/testing_img.jpg" height="123" width="203" alt="">
</div> -->
</div>
</div>
<div class="row">
......@@ -116,21 +113,6 @@ use common\modules\testings\models\Question;
<form class="testing_form">
<div class="questions" id="answerBox"></div>
<div class="answer" id="sendInfoBox"></div>
<!-- <div class="input_bg">
<input id="radio1" type="radio" name="radio" class="radio" checked>
<label for="radio1">Только макет в PSD</label>
</div>
<div class="input_bg">
<input id="checkbox1" type="checkbox" class="checkbox">
<label for="checkbox1">Макет и техническое задание по проекту</label>
</div>
<div class="input_bg">
<input id="radio2" type="radio" name="radio" class="radio">
<label for="radio2">Макет и задание описывающее краткий функционал front-end (дизайна)</label>
</div>
<div class="input_bg">
<input type="text" placeholder="Ваш ответ">
</div> -->
<button id="clickNext" class="testing_form_btn" onClick="tester.nextQuestion(); return false;">Подтвердить ответ</button>
</form>
</div>
......
......@@ -53,4 +53,22 @@ $(document).ready(function() {
}, 1000 * 60 * 5);
$('form#error-testing-form').on('beforeSubmit', function(e) {
$.ajax({
url: $('form#error-testing-form').attr('action'),
method: 'POST',
dataType: 'json',
data: {
message: $('[name="message"]').val()
},
success: function(response){
if(response.success)
{
$(".error_fedback").html('<div class="row"><div class="col-sm-8" style="margin:0 auto;float:none;"><div class="gray_box"><p>' + response.message + '</p></div></div></div>');
}
}
});
}).on('submit', function(e){
return false;
});
});
\ No newline at end of file
......@@ -121,13 +121,11 @@ tester = {
{
this.questionBox.html('');
this.answerBox.html('');
var sendInfoBox = $('#sendInfoBox');
sendInfoBox.append('<p>Результат Вашего тестирования необходимо отправить на сервер для обработки.</p>');
sendInfoBox.append('<p>Этот процесс может занять некоторое время. Не производите никаких действий и не закрывайте окно браузера до тех пор, пока не будет получен результат тестирования.</p>');
this.pictureBox.html('');
/* delete */
$('#questionThemeBox').html('');
var sendInfoBox = $('#sendInfoBox');
sendInfoBox.append('<div class="row"><div class="col-sm-8" style="margin:0 auto;float:none;"><div class="gray_box"><p>Результат Вашего тестирования необходимо отправить на сервер для обработки.</p><p>Этот процесс может занять некоторое время. Не производите никаких действий и не закрывайте окно браузера до тех пор, пока не будет получен результат тестирования.</p><p style="margin:0 auto; float:none;"><img src="/images/bx_loader.gif" alt=""></p></div></div></div>');
},
setQuestion : function(id)
{
......@@ -308,15 +306,11 @@ tester = {
},
finishTesting : function() {
var clickNext = $('#clickNext');
var clickFinish = $('#clickFinish');
var sendInfoBox = $('#sendInfoBox');
clickNext.css('display','none');
this.resetQuestion();
$('p.uploading_info').remove();
clickFinish.css('display','inline-block');
clickFinish.attr('disabled','disabled');
sendInfoBox.append('<p class="uploading_info">Подождите, происходит отправка данных…</p>');
sendInfoBox.append('<p class="uploading_info"><img src="/images/site/preloader.gif"></img></p>');
var request = $.ajax({
url : tester.options.finishUrl,
data : {
......
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