Новости Joomla

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

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

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

Ограниченные функции Администратора

Автор espam

Ответов: 0
Просмотров: 378
Последний ответ 05.06.2023, 22:25:24
от espam
С определением функции регистрации

Автор sesil

Ответов: 0
Просмотров: 459
Последний ответ 09.08.2021, 11:40:04
от sesil
Вызов определенной функции модели ajax

Автор Dram

Ответов: 16
Просмотров: 408
Последний ответ 26.11.2020, 17:01:55
от Dram
Вызов процедуры (функции) из статьи

Автор igorigor76

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

Автор avantyrist

Ответов: 12
Просмотров: 993
Последний ответ 12.03.2017, 00:59:02
от avantyrist