0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 96 Просмотров
*

Alesso

  • Новичок
  • 1
  • 0 / 0
Имеется код компонента тестирования. Но есть один существенный недостаток. Нельзя завершить тестирование, пока не закончится время тестирования(дается 45 минут). После того как оно закончится, выводится результат теста. Хочу данное действие выполнять по кнопке "Закончить тест", чтобы человек мог в любое время этот тест закончить и получить результаты. Не могу понять какая функция здесь завершает этот тест. Подскажите как мне это реализовать. Прилагаю код.

Код

<form method="post" action="<?php echo JURI::root(true); ?>/index.php<?php if ($itemId): ?>?Itemid=<?php echo $itemId; ?><?php endif; ?>" name="formQue_<?php echo $questionVersionId; ?>" id="formQue_<?php echo $questionVersionId; ?>" style="margin: 5px 5px 5px 5px;">

<h4><?php AriQuizWebHelper::displayDbValue($quizInfo->QuizName); ?></h4>

<div style="text-align: center; width: 100%">
<input type="text" size="<?php echo $questionTime != null ? strlen($questionTime) : '1'; ?>" readonly="readonly" style="display: none;" <?php if ($questionTime != null) { ?>class="ariQuizTime<?php if ($questionTime < 31) echo ' ariQuizTimeEnd'; ?>"<?php } ?> id="tbxAriQuizTime_<?php echo $questionVersionId; ?>" value="<?php echo $questionTime != null ? $questionTime : ''; ?>" />
</div>
<?php
if ($hasSplitter) echo ' / ';
?>
<input type="text" size="<?php echo $totalTime != null ? strlen($totalTime) : '1'; ?>" readonly="readonly" style="display: none;" <?php if ($totalTime != null) { ?>class="ariQuizTime<?php if ($totalTime < 31) echo ' ariQuizTimeEnd'; ?>"<?php } ?> id="tbxAriQuizTotalTime_<?php echo $questionVersionId; ?>" value="<?php echo $totalTime != null ? $totalTime : ''; ?>" />
<?php printf(AriQuizWebHelper::getResValue('Label.QuestionInfo'), $statistics->QuestionIndex + 1, $quizInfo->QuestionCount); ?>
<div class="ariQuizProgressWrap" title="<?php echo $completedCount . ' / ' . $quizInfo->QuestionCount; ?>">
<div class="ariQuizProgress" style="width: <?php echo $progressPercent; ?>%;"><?php echo JHTML::image('components/' . $option . '/images/x.gif', '', array('border' => 0, 'width' => 1, 'height' => 7)); ?></div>
</div>


<div class="ariWrap">
<div class="ariQuizQuestionRight"><?php AriQuizWebHelper::displayDbValue($questionVersion->Question, false); ?></div>

<?php
$path = AriQuizFrontHelper::getQuestionTemplatePath($questionVersion);
if (!empty($path)) require_once($path);
?>
<!-- Question end -->
<input type="submit" class="btn btn-primary" value="Далее" name="ariEvent[save]" disabledAfterSubmit="true" onclick="return aris.validators.alertSummaryValidators.validate();" />
<?php
if ($quizInfo->CanSkip)
{
?>
<input type="submit" class="button" value="<?php AriQuizWebHelper::displayResValue('Label.Skip'); ?>" name="ariEvent[skip]" disabledAfterSubmit="true" />
<input type="submit" class="button" value="Закончить тест" disabledAfterSubmit="true" name="ariEvent[close]">
<?php
}
?>
</div>

<?php if ($tmpl): ?>
<input type="hidden" name="tmpl" value="<?php echo $tmpl; ?>" />
<?php endif; ?>
<input type="hidden" name="option" value="<?php echo $option; ?>" />
<input type="hidden" name="task" id="task" value="question" />
<input type="hidden" name="ticketId" value="<?php echo $ticketId; ?>" />
<input type="hidden" name="qid" value="<?php echo $questionVersion->QuestionId; ?>" />
<input type="hidden" name="timeOver" id="timeOver" value="false" />
</form>
<script type="text/javascript">
var frm = document.forms['formQue_<?php echo $questionVersionId; ?>'];
frm.onsubmit = function()
{
var frm = document.forms['formQue_<?php echo $questionVersionId; ?>'];
var elements = aris.DOM.getChildElementsByAttribute(frm, 'disabledAfterSubmit');
if (elements)
{
for (var i = 0; i < elements.length; i++)
{
var el = elements[i];
if (typeof(el.disabled)!= 'undefined')
{
var cloneEl = el.cloneNode(true);
cloneEl.disabled = true;
el.parentNode.insertBefore(cloneEl, el);
el.style.display = 'none';
}
}
}
}
</script>
<?php
if ($questionTime != null || $totalTime != null)
{
?>
<script type="text/javascript">
var ariQuestionTime = <?php echo is_null($questionTime)? 'null' : $questionTime; ?>;
var ariTotalTime = <?php echo is_null($totalTime)? 'null' : $totalTime; ?>;
var ariStartDate = (new Date()).getTime();

var timeUpdateTimer = YAHOO.util.Lang.later(
999,
null,
function()
{
var curDate = (new Date()).getTime();
var subSeconds = Math.round((curDate - ariStartDate) / 1000);
if (ariQuestionTime != null) ariQuestionTime -= subSeconds;
if (ariTotalTime != null) ariTotalTime -= subSeconds;
ariStartDate = curDate;
if ((ariQuestionTime != null && ariQuestionTime <= 0) ||
(ariTotalTime != null && ariTotalTime <= 0))
{
ariQuestionTime = 0;
ariTotalTime = 0;
timeUpdateTimer.cancel();
var frm = document.forms['formQue_<?php echo $questionVersionId; ?>'];
if (frm)
{
var timeOver = YAHOO.util.Dom.get('timeOver');
if (timeOver) timeOver.value = 'true';
frm.submit();
return ;
}
}

if (ariQuestionTime != null)
{
var tbxAriQuizTime = YAHOO.util.Dom.get('tbxAriQuizTime_<?php echo $questionVersionId; ?>');
if (ariQuestionTime < 31) YAHOO.util.Dom.addClass(tbxAriQuizTime, 'ariQuizTimeEnd');
tbxAriQuizTime.value = ariQuestionTime;
}

if (ariTotalTime != null)
{
var tbxAriQuizTotalTime = YAHOO.util.Dom.get('tbxAriQuizTotalTime_<?php echo $questionVersionId; ?>');
if (ariTotalTime < 31) YAHOO.util.Dom.addClass(tbxAriQuizTotalTime, 'ariQuizTimeEnd');
tbxAriQuizTotalTime.value = ariTotalTime;
}
},
null, true);
</script>
<?php
}
?>
*

robert

  • Живу я здесь
  • 4256
  • 407 / 15
То, что вы привели- всего лишь код вывода формы. В функционале участвуют еще другие файлы.
Там, правда, есть какие-то кусочки JS-кода с намеком на связь между значениями времени теста и событием submit, но опять же - это только кусочки, которые не дают понять полную картину.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вызов процедуры (функции) из статьи

Автор igorigor76

Ответов: 4
Просмотров: 299
Последний ответ 13.04.2017, 22:06:47
от ChaosHead
SQL изменение поля и получения результата

Автор avantyrist

Ответов: 12
Просмотров: 247
Последний ответ 12.03.2017, 00:59:02
от avantyrist
Где надо писать функции

Автор tmpnikl

Ответов: 13
Просмотров: 235
Последний ответ 19.01.2017, 12:59:52
от tmpnikl
Вывод результата поиска в отдельном шаблоне

Автор wwe2012

Ответов: 3
Просмотров: 152
Последний ответ 10.11.2016, 19:34:26
от fsv
своя страница с видом для результата работы формы модуля Joomla

Автор voron121

Ответов: 6
Просмотров: 305
Последний ответ 14.06.2016, 02:29:59
от fsv