Новости Joomla

👩‍💻 Вышел Quantum Manager 3.3.0 - медиа менеджер для Joomla.

👩‍💻 Вышел Quantum Manager 3.3.0 - медиа менеджер для Joomla.

Популярный файловый менеджер для Joomla от отечественных разработчиков.

v.3.3.0. Что нового?
- Joomla 6. Компонент полностью совместим с Joomla 6, плагин обратной совместимости не требуется.
- Рефакторинг. Полностью удалён устаревший код, оставшийся в наследство от версий для Joomla 3.
- Новые настройки для SVG. Новые параметры фильтрации SVG-файлов.
- Улучшена безопасная функция предварительного просмотра SVG-файлов. Благодаря новым механизмам фильтрации восстановлена ​​возможность безопасного предварительного просмотра SVG-изображений.
- Исправления ошибок. Исправлены ошибки с данными EXIF ​​и обновлена ​​библиотека EXIF.

Читать новость
Скачать расширение

Также обновление получил плагин пользовательского поля Radicalmultifield для совместимости с новым Quantum Manager.

Репозиторий GitHub
Релиз на GitHub

@joomlafeed

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

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
Просмотров: 684
Последний ответ 05.06.2023, 22:25:24
от espam
С определением функции регистрации

Автор sesil

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

Автор Dram

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

Автор igorigor76

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

Автор avantyrist

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