4 require_once
'./Modules/Test/classes/inc.AssessmentConstants.php';
5 require_once
'./Modules/Test/classes/class.ilTestServiceGUI.php';
6 require_once
'./Modules/TestQuestionPool/classes/class.assQuestion.php';
51 $this->ref_id =
$_GET[
"ref_id"];
53 $this->processLocker = null;
54 $this->testSession = null;
66 $testSession->
setUserId($ilUser->getId());
87 require_once
'Modules/Test/classes/class.ilTestProcessLockerFactory.php';
90 $processLockerFactory->setActiveId($activeId);
92 $this->processLocker = $processLockerFactory->getLocker();
103 include_once(
"./Services/Tagging/classes/class.ilTaggingGUI.php");
105 $tagging_gui->setObject($this->object->getId(), $this->
object->getType());
106 $tagging_gui->saveInput();
107 $this->ctrl->redirectByClass(
"ilobjtestgui",
"infoScreen");
113 $ilCtrl->redirectByClass(
'ilTestToplistGUI',
'outResultsToplist');
123 $this->
object->updateWorkingTime(
$_SESSION[
"active_time_id"]);
134 abstract protected function outWorkingForm(
$sequence =
"", $test_id, $postpone_allowed, $directfeedback =
false);
143 $this->ctrl->redirectByClass(
"ilobjtestgui",
"infoScreen");
156 $active_id = $this->testSession->getActiveId();
157 $starting_time = $this->
object->getStartingTimeOfUser($active_id);
158 if ($starting_time === FALSE)
164 return $this->
object->isMaxProcessingTimeReached($starting_time, $active_id);
170 $show_question_inline_score = FALSE;
171 if ($this->object->getAnswerFeedbackPoints())
173 $show_question_inline_score = TRUE;
174 return $show_question_inline_score;
176 return $show_question_inline_score;
193 $this->tpl->setCurrentBlock(
"isnotmarked" );
194 $this->tpl->setVariable(
"CMD_UNMARKED",
'markQuestion' );
196 $this->tpl->setVariable(
"TEXT_UNMARKED", $this->lng->txt(
"tst_question_mark" ) );
197 $this->tpl->parseCurrentBlock();
202 $this->tpl->setCurrentBlock(
"ismarked" );
203 $this->tpl->setVariable(
"CMD_MARKED",
'unmarkQuestion' );
205 $this->tpl->setVariable(
"TEXT_MARKED", $this->lng->txt(
"tst_remove_mark" ) );
206 $this->tpl->parseCurrentBlock();
217 $this->tpl->setCurrentBlock(
"next_bottom" );
218 $this->tpl->setVariable(
"CMD_NEXT",
'nextQuestion' );
219 $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"save_next" ) .
" >>" );
220 $this->tpl->parseCurrentBlock();
225 $this->tpl->setCurrentBlock(
"next" );
226 $this->tpl->setVariable(
"CMD_NEXT",
'nextQuestion' );
227 $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"save_next" ) .
" >>" );
228 $this->tpl->parseCurrentBlock();
239 $this->tpl->setCurrentBlock(
"next_bottom" );
240 $this->tpl->setVariable(
"CMD_NEXT",
'nextQuestion' );
241 $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"save_finish" ) .
" >>" );
242 $this->tpl->parseCurrentBlock();
247 $this->tpl->setCurrentBlock(
"next" );
248 $this->tpl->setVariable(
"CMD_NEXT",
'nextQuestion' );
249 $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"save_finish" ) .
" >>" );
250 $this->tpl->parseCurrentBlock();
261 $this->tpl->setCurrentBlock(
"next_bottom" );
262 $this->tpl->setVariable(
"CMD_NEXT",
'nextQuestion' );
263 $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"question_summary" ) .
" >>" );
264 $this->tpl->parseCurrentBlock();
269 $this->tpl->setCurrentBlock(
"next" );
270 $this->tpl->setVariable(
"CMD_NEXT",
'nextQuestion' );
271 $this->tpl->setVariable(
"BTN_NEXT", $this->lng->txt(
"question_summary" ) .
" >>" );
272 $this->tpl->parseCurrentBlock();
277 $this->tpl->setCurrentBlock(
"cancel_test" );
278 $this->tpl->setVariable(
"TEXT_CANCELTEST", $this->lng->txt(
"cancel_test" ) );
279 $this->tpl->setVariable(
"TEXT_ALTCANCELTEXT", $this->lng->txt(
"cancel_test" ) );
280 $this->tpl->setVariable(
"TEXT_TITLECANCELTEXT", $this->lng->txt(
"cancel_test" ) );
281 $this->tpl->setVariable(
"HREF_IMGCANCELTEST",
282 $this->ctrl->getLinkTargetByClass( get_class( $this ),
"outIntroductionPage"
283 ) .
"&cancelTest=true"
285 $this->tpl->setVariable(
"HREF_CANCELTEXT",
286 $this->ctrl->getLinkTargetByClass( get_class( $this ),
"outIntroductionPage"
287 ) .
"&cancelTest=true"
290 $this->tpl->parseCurrentBlock();
301 $this->tpl->setCurrentBlock(
"summary_bottom" );
302 $this->tpl->setVariable(
"CMD_SUMMARY",
'showQuestionList' );
303 $this->tpl->setVariable(
"BTN_SUMMARY", $this->lng->txt(
"question_summary" ) );
304 $this->tpl->parseCurrentBlock();
309 $this->tpl->setCurrentBlock(
"summary" );
310 $this->tpl->setVariable(
"CMD_SUMMARY",
'showQuestionList' );
311 $this->tpl->setVariable(
"BTN_SUMMARY", $this->lng->txt(
"question_summary" ) );
312 $this->tpl->parseCurrentBlock();
323 $this->tpl->setCurrentBlock(
"summary_bottom" );
324 $this->tpl->setVariable(
"CMD_SUMMARY",
'showQuestionSelection' );
325 $this->tpl->setVariable(
"BTN_SUMMARY", $this->lng->txt(
"tst_change_dyn_test_question_selection" ) );
326 $this->tpl->parseCurrentBlock();
331 $this->tpl->setCurrentBlock(
"summary" );
332 $this->tpl->setVariable(
"CMD_SUMMARY",
'showQuestionSelection' );
333 $this->tpl->setVariable(
"BTN_SUMMARY", $this->lng->txt(
"tst_change_dyn_test_question_selection" ) );
334 $this->tpl->parseCurrentBlock();
345 $this->tpl->setCurrentBlock(
"postpone_bottom" );
346 $this->tpl->setVariable(
"CMD_POSTPONE",
'postponeQuestion' );
347 $this->tpl->setVariable(
"BTN_POSTPONE", $this->lng->txt(
"postpone" ) );
348 $this->tpl->parseCurrentBlock();
353 $this->tpl->setCurrentBlock(
"postpone" );
354 $this->tpl->setVariable(
"CMD_POSTPONE",
'postponeQuestion' );
355 $this->tpl->setVariable(
"BTN_POSTPONE", $this->lng->txt(
"postpone" ) );
356 $this->tpl->parseCurrentBlock();
362 'previousQuestion',
"<< " . $this->lng->txt(
"save_previous" )
365 'previousQuestion',
"<< " . $this->lng->txt(
"save_previous" )
372 'previousQuestion',
"<< " . $this->lng->txt(
"save_introduction" )
375 'previousQuestion',
"<< " . $this->lng->txt(
"save_introduction" )
381 $this->tpl->setCurrentBlock(
"prev_bottom" );
382 $this->tpl->setVariable(
"CMD_PREV",
$cmd);
383 $this->tpl->setVariable(
"BTN_PREV", $label);
384 $this->tpl->parseCurrentBlock();
389 $this->tpl->setCurrentBlock(
"prev" );
390 $this->tpl->setVariable(
"CMD_PREV",
$cmd);
391 $this->tpl->setVariable(
"BTN_PREV", $label);
392 $this->tpl->parseCurrentBlock();
397 $this->tpl->setCurrentBlock(
"specific_feedback" );
398 $this->tpl->setVariable(
"SPECIFIC_FEEDBACK",
399 $question_gui->getSpecificFeedbackOutput(
400 $this->testSession->getActiveId(),
404 $this->tpl->parseCurrentBlock();
409 $this->tpl->setCurrentBlock(
"answer_feedback" );
410 $this->tpl->setVariable(
"ANSWER_FEEDBACK",
411 $question_gui->getAnswerFeedbackOutput( $this->testSession->getActiveId(),
415 $this->tpl->parseCurrentBlock();
420 $scoreInformation = sprintf(
421 $this->lng->txt(
"you_received_a_of_b_points" ), $reachedPoints, $maxPoints
424 $this->tpl->setCurrentBlock(
"received_points_information" );
425 $this->tpl->setVariable(
"RECEIVED_POINTS_INFORMATION", $scoreInformation);
426 $this->tpl->parseCurrentBlock();
431 $this->tpl->setCurrentBlock(
"solution_output" );
432 $this->tpl->setVariable(
"CORRECT_SOLUTION", $this->lng->txt(
"tst_best_solution_is" ) );
433 $this->tpl->setVariable(
"QUESTION_FEEDBACK", $solutionoutput );
434 $this->tpl->parseCurrentBlock();
440 if ($ilSetting->get(
'char_selector_availability') > 0)
442 require_once
'Services/UIComponent/CharSelector/classes/class.ilCharSelectorGUI.php';
446 $char_selector->addToPage();
447 $this->tpl->setCurrentBlock(
'char_selector');
448 $this->tpl->setVariable(
"CHAR_SELECTOR_TEXT", $this->lng->txt(
'char_selector'));
449 $this->tpl->setVariable(
"CHAR_SELECTOR_TEMPLATE", $char_selector->getSelectorHtml());
450 $this->tpl->parseCurrentBlock();
458 $show_side_list = $ilUser->getPref(
'side_list_of_questions' );
459 $this->tpl->setCurrentBlock(
'view_sidelist' );
460 $this->tpl->setVariable(
'IMAGE_SIDELIST',
464 $this->tpl->setVariable(
'TEXT_SIDELIST',
465 ($show_side_list) ? $this->lng->txt(
'tst_hide_side_list'
466 ) : $this->lng->txt(
'tst_show_side_list' )
468 $this->tpl->parseCurrentBlock();
478 $this->tpl->setCurrentBlock(
"SyntaxStyle" );
479 $this->tpl->setVariable(
"LOCATION_SYNTAX_STYLESHEET",
482 $this->tpl->parseCurrentBlock();
487 include_once(
"./Services/Style/classes/class.ilObjStyleSheet.php");
488 $this->tpl->setCurrentBlock(
"ContentStyle" );
489 $this->tpl->setVariable(
"LOCATION_CONTENT_STYLESHEET",
492 $this->tpl->parseCurrentBlock();
501 $template =
new ilTemplate(
"tpl.il_as_tst_password_protection.html", TRUE, TRUE,
"Modules/Test");
502 $template->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this,
"checkPassword"));
503 $template->setVariable(
"PASSWORD_INTRODUCTION", $this->lng->txt(
"tst_password_introduction"));
504 $template->setVariable(
"TEXT_PASSWORD", $this->lng->txt(
"tst_password"));
505 $template->setVariable(
"SUBMIT", $this->lng->txt(
"submit"));
514 if (strcmp($this->object->getPassword(),
$_POST[
"password"]) == 0)
517 if (
$_SESSION[
"AccountId"] != ANONYMOUS_USER_ID)
519 $ilUser->setPref(
"tst_password_".$this->object->getTestId(), $this->
object->getPassword());
520 $ilUser->writePref(
"tst_password_".$this->object->getTestId(), $this->
object->getPassword());
524 $_SESSION[
'tst_password_'.$this->object->getTestId()] = $this->
object->getPassword();
526 $this->ctrl->redirect($this,
'startPlayer');
531 $this->ctrl->redirectByClass(
"ilobjtestgui",
"infoScreen");
542 if( $this->testSession->isAnonymousUser() )
544 $this->testSession->setAccessCodeToSession(
$_POST[
'anonymous_id']);
547 $this->ctrl->redirectByClass(
"ilobjtestgui",
"infoScreen");
559 $isFirstTestStartRequest =
false;
561 $this->processLocker->requestTestStartLockCheckLock();
563 if( $this->testSession->lookupTestStartLock() != $testStartLock )
565 $this->testSession->persistTestStartLock($testStartLock);
566 $isFirstTestStartRequest =
true;
569 $this->processLocker->releaseTestStartLockCheckLock();
571 if( $isFirstTestStartRequest )
576 $this->ctrl->redirect($this,
'showPasswordProtectionPage');
579 $this->ctrl->redirect($this,
"initTest");
582 $this->ctrl->setParameterByClass(
'ilObjTestGUI',
'lock', $testStartLock);
583 $this->ctrl->redirectByClass(
"ilobjtestgui",
"redirectToInfoScreen");
592 elseif( isset(
$_GET[
'lock']) && strlen(
$_GET[
'lock']) )
594 return $_GET[
'lock'];
607 $this->ctrl->setParameter($this,
"activecommand",
"resume");
608 $this->ctrl->redirect($this,
"redirectQuestion");
615 if( !strlen($this->object->getPassword()) )
620 if( $rbacsystem->checkAccess(
"write", $this->object->getRefId()) )
626 if(
$_SESSION[
"AccountId"] != ANONYMOUS_USER_ID )
628 $pwd = $ilUser->getPref(
"tst_password_".$this->object->getTestId());
630 elseif( isset(
$_SESSION[
'tst_password_'.$this->object->getTestId()]) )
632 $pwd =
$_SESSION[
'tst_password_'.$this->object->getTestId()];
635 if( $pwd == $this->object->getPassword() )
648 if ($this->object->checkMaximumAllowedUsers() == FALSE)
653 if( $this->testSession->isAnonymousUser() && !$this->testSession->getActiveId() )
655 $accessCode = $this->testSession->createNewAccessCode();
657 $this->testSession->setAccessCodeToSession($accessCode);
658 $this->testSession->setAnonymousId($accessCode);
659 $this->testSession->saveToDb();
661 $this->ctrl->redirect($this,
'displayCode');
664 $this->ctrl->redirect($this,
'startTest');
669 $this->tpl->addBlockFile($this->
getContentBlockName(),
"adm_content",
"tpl.il_as_tst_anonymous_code_presentation.html",
"Modules/Test");
670 $this->tpl->setCurrentBlock(
"adm_content");
671 $this->tpl->setVariable(
"TEXT_ANONYMOUS_CODE_CREATED", $this->lng->txt(
"tst_access_code_created"));
672 $this->tpl->setVariable(
"TEXT_ANONYMOUS_CODE", $this->testSession->getAccessCodeFromSession());
673 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
674 $this->tpl->setVariable(
"CONTINUE", $this->lng->txt(
"continue_work"));
675 $this->tpl->parseCurrentBlock();
680 $this->ctrl->setParameter($this,
"activecommand",
"start");
681 $this->ctrl->redirect($this,
"redirectQuestion");
691 if (
$_POST[
"chb_javascript"])
693 $ilUser->writePref(
"tst_javascript", 1);
697 $ilUser->writePref(
"tst_javascript", 0);
701 if ($this->object->getNrOfTries() != 1)
703 if ($this->object->getUsePreviousAnswers() == 1)
705 if (
$_POST[
"chb_use_previous_answers"])
707 $ilUser->writePref(
"tst_use_previous_answers", 1);
711 $ilUser->writePref(
"tst_use_previous_answers", 0);
724 if (array_key_exists(
"save_error",
$_GET))
726 if (
$_GET[
"save_error"] == 1)
731 switch (
$_GET[
"activecommand"])
745 $active_id = $this->testSession->getActiveId();
746 $actualpass = $this->
object->_getPass($active_id);
750 $this->testSession->setLastFinishedPass($this->testSession->getPass());
751 $this->testSession->increaseTestPass();
753 $this->tpl->addBlockFile($this->
getContentBlockName(),
"adm_content",
"tpl.il_as_tst_redirect_autosave.html",
"Modules/Test");
754 $this->tpl->setVariable(
"TEXT_REDIRECT", $this->lng->txt(
"redirectAfterSave"));
755 $this->tpl->setCurrentBlock(
"HeadContent");
756 $this->tpl->setVariable(
"CONTENT_BLOCK",
"<meta http-equiv=\"refresh\" content=\"5; url=" . $this->ctrl->getLinkTarget($this,
"afterTestPassFinished") .
"\">");
757 $this->tpl->parseCurrentBlock();
768 $result = $this->lng->txt(
"autosave_success");
772 $result = $this->lng->txt(
"autosave_failed");
778 $result = $this->ctrl->getLinkTarget($this,
"redirectAfterAutosave",
"",
true);
791 $show_side_list = $ilUser->getPref(
'side_list_of_questions');
792 $ilUser->writePref(
'side_list_of_questions', !$show_side_list);
794 $this->ctrl->redirect($this,
"redirectQuestion");
803 $this->ctrl->setParameter($this,
"activecommand",
"setmarked");
804 $this->ctrl->redirect($this,
"redirectQuestion");
813 $this->ctrl->setParameter($this,
"activecommand",
"resetmarked");
814 $this->ctrl->redirect($this,
"redirectQuestion");
823 $this->ctrl->setParameter($this,
"sequence",
$_GET[
"sequence"]);
824 $this->ctrl->setParameter($this,
"activecommand",
"gotoquestion");
825 $this->ctrl->saveParameter($this,
"tst_javascript");
827 $this->ctrl->redirect($this,
"redirectQuestion");
837 $this->ctrl->setParameter($this,
"activecommand",
"back");
838 $this->ctrl->redirect($this,
"redirectQuestion");
852 protected function confirmFinishTestCmd()
859 require_once
'Services/Utilities/classes/class.ilConfirmationGUI.php';
861 $confirmation->setFormAction($this->ctrl->getFormAction($this,
'confirmFinish'));
862 $confirmation->setHeaderText($this->lng->txt(
"tst_finish_confirmation_question"));
863 $confirmation->setConfirm($this->lng->txt(
"tst_finish_confirm_button"),
'confirmFinish');
864 if($this->object->canShowSolutionPrintview($ilUser->getId()))
866 $confirmation->setCancel($this->lng->txt(
"tst_finish_confirm_list_of_answers_button"),
'backConfirmFinish');
870 $confirmation->setCancel($this->lng->txt(
"tst_finish_confirm_cancel_button"),
'backConfirmFinish');
873 if($this->object->getKioskMode())
875 $this->tpl->addBlockfile($this->
getContentBlockName(),
'content',
"tpl.il_as_tst_kiosk_mode_content.html",
"Modules/Test");
876 $this->tpl->setContent($confirmation->getHtml());
890 $active_id = $this->testSession->getActiveId();
891 $actualpass = $this->
object->_getPass($active_id);
908 if( $this->object->areObligationsEnabled() && !$allObligationsAnswered )
910 if( $this->object->getListOfQuestions() )
912 $_GET[
'activecommand'] =
'summary_obligations';
916 $_GET[
'activecommand'] =
'summary_obligations_only';
919 $this->redirectQuestionCmd();
924 if ($this->object->getEnableExamview() && !isset(
$_GET[
'reviewed']) && $requires_confirmation)
926 $_GET[
'activecommand'] =
'test_submission_overview';
927 $this->redirectQuestionCmd();
933 if (($requires_confirmation) && ($actualpass == $this->object->getNrOfTries() - 1))
935 if ($this->object->canShowSolutionPrintview($ilUser->getId()))
937 $template =
new ilTemplate(
"tpl.il_as_tst_finish_navigation.html", TRUE, TRUE,
"Modules/Test");
938 $template->setVariable(
"BUTTON_FINISH", $this->lng->txt(
"btn_next"));
939 $template->setVariable(
"BUTTON_CANCEL", $this->lng->txt(
"btn_previous"));
940 if ($this->object->getEnableExamview())
942 $template->setVariable(
"CANCEL_CMD",
'finishTest');
944 else if($this->object->getListOfQuestionsEnd())
946 $template->setVariable(
"CANCEL_CMD",
'outQuestionSummary');
950 $template->setVariable(
"CANCEL_CMD",
'redirectQuestion');
952 $template_top =
new ilTemplate(
"tpl.il_as_tst_list_of_answers_topbuttons.html", TRUE, TRUE,
"Modules/Test");
953 $template_top->setCurrentBlock(
"button_print");
954 $template_top->setVariable(
"BUTTON_PRINT", $this->lng->txt(
"print"));
955 $template_top->parseCurrentBlock();
957 $this->
showListOfAnswers($active_id, NULL, $template_top->get(), $template->get());
963 return $this->confirmFinishTestCmd();
968 if (($actualpass == $this->object->getNrOfTries() - 1) && (!$requires_confirmation))
971 $ilAuth->setExpire(0);
972 switch ($this->object->getMailNotification())
975 $this->
object->sendSimpleNotification($active_id);
978 $this->
object->sendAdvancedNotification($active_id);
987 if ($this->object->getMailNotificationType() == 1)
989 switch ($this->object->getMailNotification())
992 $this->
object->sendSimpleNotification($active_id);
995 $this->
object->sendAdvancedNotification($active_id);
1005 $this->testSession->setLastFinishedPass($this->testSession->getPass());
1006 $this->testSession->increaseTestPass();
1008 $this->ctrl->redirect($this,
'afterTestPassFinished');
1013 if( !$this->testSession->isSubmitted() )
1015 $this->testSession->setSubmitted(1);
1016 $this->testSession->setSubmittedTimestamp(date(
'Y-m-d H:i:s'));
1017 $this->testSession->saveToDb();
1020 if( $this->object->getEnableArchiving() )
1028 $activeId = $this->testSession->getActiveId();
1029 $lastFinishedPass = $this->testSession->getLastFinishedPass();
1035 $this->ctrl->redirectByClass(
'ilTestSignatureGUI',
'invokeSignaturePlugin');
1040 $redirection_mode = $this->
object->getRedirectionMode();
1041 $redirection_url = $this->
object->getRedirectionUrl();
1043 if($redirection_url && $redirection_mode && !$this->object->canViewResults())
1047 if($this->object->getKioskMode())
1063 if( !$this->object->getSignSubmission() )
1068 if( !is_null(
ilSession::get(
"signed_{$activeId}_{$lastFinishedPass}")) )
1073 global $ilPluginAdmin;
1075 $activePlugins = $ilPluginAdmin->getActivePluginsForSlot(
IL_COMP_MODULE,
'Test',
'tsig');
1077 if( !count($activePlugins) )
1092 require_once
'class.ilTestEvaluationGUI.php';
1095 $results_output = $testevaluationgui->getPassListOfAnswers(
$results, $active,
$pass,
false,
false,
false,
false);
1097 require_once
'./Modules/Test/classes/class.ilTestArchiver.php';
1099 $inst_id = $ilSetting->get(
'inst_id', null);
1107 $filename = $path .
'/exam_N' . $inst_id .
'-' . $this->
object->getId()
1108 .
'-' . $active .
'-' .
$pass .
'.pdf';
1110 require_once
'class.ilTestPDFGenerator.php';
1114 $archiver->handInParticipantSubmission( $active,
$pass,
$filename, $results_output );
1119 $questions = $this->
object->getQuestions();
1120 foreach ($questions as $question_id)
1122 $question_object = $this->
object->getQuestionDataset( $question_id );
1123 if ($question_object->type_tag ==
'assFileUpload')
1143 $handle = opendir( $candidate_path );
1144 while ($handle !==
false && (
$file = readdir( $handle )) !==
false)
1148 $filename_start =
'file_' . $active .
'_' .
$pass .
'_';
1150 if (strpos(
$file, $filename_start ) === 0)
1152 $archiver->handInParticipantQuestionMaterial( $active,
$pass, $question_id,
$file,
$file );
1158 $passdata = $this->
object->getTestResult($active,
$pass);
1159 $overview = $testevaluationgui->getPassListOfAnswers($passdata, $active,
$pass,
true,
false,
false,
true);
1170 if (isset(
$_GET[
'reviewed']))
1172 if (!
$_GET[
"skipfinalstatement"])
1174 if ($this->object->getShowFinalStatement() == 1)
1176 $this->ctrl->redirect($this,
"showFinalStatement");
1181 $this->ctrl->redirectByClass(
1182 array(
'ilRepositoryGUI',
'ilObjTestGUI',
'ilTestEvaluationGUI'),
"outUserResultsOverview"
1187 if (!
$_GET[
"skipfinalstatement"])
1189 if ($this->object->getShowFinalStatement())
1191 $this->ctrl->redirect($this,
"showFinalStatement");
1195 if (!$this->object->canViewResults())
1201 $this->ctrl->redirectByClass(
"ilTestEvaluationGUI",
"outUserResultsOverview");
1210 $template =
new ilTemplate(
"tpl.il_as_tst_final_statement.html", TRUE, TRUE,
"Modules/Test");
1211 $this->ctrl->setParameter($this,
"skipfinalstatement", 1);
1212 $template->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this,
"redirectBack"));
1213 $template->setVariable(
"FINALSTATEMENT", $this->object->getFinalStatement());
1214 $template->setVariable(
"BUTTON_CONTINUE", $this->lng->txt(
"btn_next"));
1222 $template =
new ilTemplate(
'tpl.il_as_tst_kiosk_head.html',
true,
true,
'Modules/Test');
1223 if ($this->object->getShowKioskModeTitle())
1225 $template->setCurrentBlock(
"kiosk_show_title");
1226 $template->setVariable(
"TEST_TITLE", $this->object->getTitle());
1227 $template->parseCurrentBlock();
1229 if ($this->object->getShowKioskModeParticipant())
1231 $template->setCurrentBlock(
"kiosk_show_participant");
1232 $template->setVariable(
"PARTICIPANT_NAME_TXT", $this->lng->txt(
"login_as"));
1233 $template->setVariable(
"PARTICIPANT_NAME", $ilUser->getFullname());
1234 $template->setVariable(
"PARTICIPANT_LOGIN", $ilUser->getLogin());
1235 $template->setVariable(
"PARTICIPANT_MATRICULATION", $ilUser->getMatriculation());
1236 $template->setVariable(
"PARTICIPANT_EMAIL", $ilUser->getEmail());
1237 $template->parseCurrentBlock();
1239 if ($this->object->isShowExamIdInTestPassEnabled())
1242 $this->testSession->getActiveId() , $this->testSession->getPass(), $this->
object->getId()
1245 $template->setCurrentBlock(
"kiosk_show_exam_id");
1246 $template->setVariable(
"EXAM_ID_TXT", $this->lng->txt(
"exam_id"));
1247 $template->setVariable(
"EXAM_ID", $exam_id);
1248 $template->parseCurrentBlock();
1250 return $template->get();
1262 if (!$rbacsystem->checkAccess(
"read", $this->object->getRefId()))
1265 $this->ilias->raiseError($this->lng->txt(
"cannot_execute_test"),$this->ilias->error_obj->MESSAGE);
1274 if ($this->object->endingTimeReached())
1280 if ($this->object->getKioskMode())
1285 $this->tpl->setVariable(
"TEST_ID", $this->object->getTestId());
1286 $this->tpl->setVariable(
"LOGIN", $ilUser->getLogin());
1287 $this->tpl->setVariable(
"SEQ_ID", $this->sequence);
1288 $this->tpl->setVariable(
"QUEST_ID", $this->testSequence->questions[$this->sequence]);
1290 if ($this->object->getEnableProcessingTime())
1295 $this->tpl->setVariable(
"FORM_TIMESTAMP", time());
1297 $this->tpl->setVariable(
"PAGETITLE",
"- " . $this->object->getTitle());
1299 $postpone = ( $this->
object->getSequenceSettings() ==
TEST_POSTPONE );
1301 if ($this->object->isShowExamIdInTestPassEnabled() && !$this->
object->getKioskMode())
1303 $this->tpl->setCurrentBlock(
'exam_id_footer');
1305 $this->testSession->getActiveId(), $this->testSession->getPass(), $this->
object->getId()
1307 $this->tpl->setVariable(
'EXAM_ID_TXT', $this->lng->txt(
'exam_id'));
1308 $this->tpl->parseCurrentBlock();
1311 $this->
outWorkingForm($this->sequence, $this->object->getTestId(), $postpone, $directfeedback);
1326 $user = $this->
object->getInvitedUsers($ilUser->getId());
1327 if (!is_array ($user) || count($user)!=1)
1330 $this->ctrl->redirectByClass(
"ilobjtestgui",
"backToRepository");
1333 $user = array_pop($user);
1335 if (strcmp($user[
"clientip"],
"")!=0 && strcmp($user[
"clientip"],$_SERVER[
"REMOTE_ADDR"])!=0)
1338 $this->ctrl->redirectByClass(
"ilobjtestgui",
"backToRepository");
1350 and $this->
object->startingTimeReached()
1351 and !$this->
object->endingTimeReached();
1359 return $this->
object->hasNrOfTriesRestriction() && $this->
object->isNrOfTriesReached($this->testSession->getPass());
1371 if (array_key_exists(
"pass",
$_GET) && (strlen(
$_GET[
"pass"]) > 0))
1373 $this->ctrl->saveParameter($this,
"pass");
1374 $this->ctrl->saveParameter($this,
"active_id");
1375 $this->outTestResults(
false,
$_GET[
"pass"]);
1379 $this->outTestResults(
false);
1391 $this->testSession->increasePass();
1392 $this->testSession->setLastSequence(0);
1393 $this->testSession->saveToDb();
1394 if (!$this->object->canViewResults())
1396 $this->outIntroductionPage();
1400 $this->ctrl->redirectByClass(
"ilTestEvaluationGUI",
"outUserResultsOverview");
1413 $this->outIntroductionPage();
1423 $this->tpl->addBlockFile($this->
getContentBlockName(),
"adm_content",
"tpl.il_as_tst_submit_answers_confirm.html",
"Modules/Test");
1424 $this->tpl->setCurrentBlock(
"adm_content");
1425 if ($this->object->isTestFinished($this->testSession->getActiveId()))
1427 $this->tpl->setCurrentBlock(
"not_submit_allowed");
1428 $this->tpl->setVariable(
"TEXT_ALREADY_SUBMITTED", $this->lng->txt(
"tst_already_submitted"));
1429 $this->tpl->setVariable(
"BTN_OK", $this->lng->txt(
"tst_show_answer_sheet"));
1432 $this->tpl->setCurrentBlock(
"submit_allowed");
1433 $this->tpl->setVariable(
"TEXT_CONFIRM_SUBMIT_RESULTS", $this->lng->txt(
"tst_confirm_submit_answers"));
1434 $this->tpl->setVariable(
"BTN_OK", $this->lng->txt(
"tst_submit_results"));
1436 $this->tpl->setVariable(
"BTN_BACK", $this->lng->txt(
"back"));
1437 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this,
"finalSubmission"));
1438 $this->tpl->parseCurrentBlock();
1445 $starting_time = $this->
object->getStartingTimeOfUser($active_id);
1446 $processing_time = $this->
object->getProcessingTimeInSeconds($active_id);
1447 $processing_time_minutes = floor($processing_time / 60);
1448 $processing_time_seconds = $processing_time - $processing_time_minutes * 60;
1449 $str_processing_time =
"";
1450 if ($processing_time_minutes > 0)
1452 $str_processing_time = $processing_time_minutes .
" " . ($processing_time_minutes == 1 ? $this->lng->txt(
"minute") : $this->lng->txt(
"minutes"));
1454 if ($processing_time_seconds > 0)
1456 if (strlen($str_processing_time) > 0) $str_processing_time .=
" " . $this->lng->txt(
"and") .
" ";
1457 $str_processing_time .= $processing_time_seconds .
" " . ($processing_time_seconds == 1 ? $this->lng->txt(
"second") : $this->lng->txt(
"seconds"));
1459 $time_left = $starting_time + $processing_time - mktime();
1460 $time_left_minutes = floor($time_left / 60);
1461 $time_left_seconds = $time_left - $time_left_minutes * 60;
1462 $str_time_left =
"";
1463 if ($time_left_minutes > 0)
1465 $str_time_left = $time_left_minutes .
" " . ($time_left_minutes == 1 ? $this->lng->txt(
"minute") : $this->lng->txt(
"minutes"));
1467 if ($time_left < 300)
1469 if ($time_left_seconds > 0)
1471 if (strlen($str_time_left) > 0) $str_time_left .=
" " . $this->lng->txt(
"and") .
" ";
1472 $str_time_left .= $time_left_seconds .
" " . ($time_left_seconds == 1 ? $this->lng->txt(
"second") : $this->lng->txt(
"seconds"));
1475 $date = getdate($starting_time);
1487 $datenow = getdate();
1488 $this->tpl->setCurrentBlock(
"enableprocessingtime");
1489 $this->tpl->setVariable(
"USER_WORKING_TIME",
1491 $this->lng->txt(
"tst_time_already_spent"),
1492 $formattedStartingTime,
1493 $str_processing_time
1496 $this->tpl->setVariable(
"USER_REMAINING_TIME", sprintf($this->lng->txt(
"tst_time_already_spent_left"), $str_time_left));
1497 $this->tpl->parseCurrentBlock();
1498 $template =
new ilTemplate(
"tpl.workingtime.js.html", TRUE, TRUE,
'Modules/Test');
1499 $template->setVariable(
"STRING_MINUTE", $this->lng->txt(
"minute"));
1500 $template->setVariable(
"STRING_MINUTES", $this->lng->txt(
"minutes"));
1501 $template->setVariable(
"STRING_SECOND", $this->lng->txt(
"second"));
1502 $template->setVariable(
"STRING_SECONDS", $this->lng->txt(
"seconds"));
1503 $template->setVariable(
"STRING_TIMELEFT", $this->lng->txt(
"tst_time_already_spent_left"));
1504 $template->setVariable(
"AND", strtolower($this->lng->txt(
"and")));
1505 $template->setVariable(
"YEAR", $date[
"year"]);
1506 $template->setVariable(
"MONTH", $date[
"mon"]-1);
1507 $template->setVariable(
"DAY", $date[
"mday"]);
1508 $template->setVariable(
"HOUR", $date[
"hours"]);
1509 $template->setVariable(
"MINUTE", $date[
"minutes"]);
1510 $template->setVariable(
"SECOND", $date[
"seconds"]);
1511 if (preg_match(
"/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $this->object->getEndingTime(), $matches))
1513 $template->setVariable(
"ENDYEAR", $matches[1]);
1514 $template->setVariable(
"ENDMONTH", $matches[2]-1);
1515 $template->setVariable(
"ENDDAY", $matches[3]);
1516 $template->setVariable(
"ENDHOUR", $matches[4]);
1517 $template->setVariable(
"ENDMINUTE", $matches[5]);
1518 $template->setVariable(
"ENDSECOND", $matches[6]);
1520 $template->setVariable(
"YEARNOW", $datenow[
"year"]);
1521 $template->setVariable(
"MONTHNOW", $datenow[
"mon"]-1);
1522 $template->setVariable(
"DAYNOW", $datenow[
"mday"]);
1523 $template->setVariable(
"HOURNOW", $datenow[
"hours"]);
1524 $template->setVariable(
"MINUTENOW", $datenow[
"minutes"]);
1525 $template->setVariable(
"SECONDNOW", $datenow[
"seconds"]);
1526 $template->setVariable(
"PTIME_M", $processing_time_minutes);
1527 $template->setVariable(
"PTIME_S", $processing_time_seconds);
1529 $this->tpl->setCurrentBlock(
"HeadContent");
1530 $this->tpl->setVariable(
"CONTENT_BLOCK", $template->get());
1531 $this->tpl->parseCurrentBlock();
1537 public function outQuestionSummaryCmd($fullpage =
true, $contextFinishTest =
false, $obligationsNotAnswered =
false, $obligationsFilter =
false)
1541 $this->tpl->addBlockFile($this->
getContentBlockName(),
"adm_content",
"tpl.il_as_tst_question_summary.html",
"Modules/Test");
1544 if( $obligationsNotAnswered )
1549 $active_id = $this->testSession->getActiveId();
1550 $result_array = & $this->testSequence->getSequenceSummary($obligationsFilter);
1552 $marked_questions = array();
1554 if( $this->object->getKioskMode() && $fullpage )
1559 $this->tpl->setCurrentBlock(
"kiosk_options");
1560 $this->tpl->setVariable(
"KIOSK_HEAD", $head);
1561 $this->tpl->parseCurrentBlock();
1565 if( $this->object->getShowMarker() )
1567 include_once
"./Modules/Test/classes/class.ilObjTest.php";
1573 foreach( $result_array as $key => $value )
1575 $this->ctrl->setParameter($this,
"sequence", $value[
"sequence"]);
1577 $href = $this->ctrl->getLinkTargetByClass(get_class($this),
"gotoQuestion");
1579 $this->tpl->setVariable(
"VALUE_QUESTION_TITLE",
"<a href=\"".$this->ctrl->getLinkTargetByClass(get_class($this),
"gotoQuestion").
"\">" . $this->
object->getQuestionTitle($value[
"title"]) .
"</a>");
1581 $this->ctrl->setParameter($this,
"sequence",
$_GET[
"sequence"]);
1584 if( $this->object->getListOfQuestionsDescription() )
1586 $description = $value[
"description"];
1590 if( !$this->object->getTitleOutput() )
1592 $points = $value[
"points"].
" ".$this->lng->txt(
"points_short");
1596 if( count($marked_questions) )
1598 if( array_key_exists($value[
"qid"], $marked_questions) )
1600 $obj = $marked_questions[$value[
"qid"]];
1601 if( $obj[
"solved"] == 1 )
1608 array_push($data, array(
1609 'order' => $value[
"nr"],
1611 'title' => $this->object->getQuestionTitle($value[
"title"]),
1612 'description' => $description,
1613 'worked_through' => ($value[
"worked_through"]) ?
true :
false,
1614 'postponed' => ($value[
"postponed"]) ? $this->lng->txt(
"postponed") :
'',
1615 'points' => $points,
1616 'marked' => $marked,
1617 'sequence' => $value[
"sequence"],
1618 'obligatory' => $value[
'obligatory']
1622 $this->ctrl->setParameter($this,
"sequence",
$_GET[
"sequence"]);
1626 include_once
"./Modules/Test/classes/tables/class.ilListOfQuestionsTableGUI.php";
1628 $this,
'backFromSummary', !$this->object->getTitleOutput(), $this->
object->getShowMarker(),
1629 $obligationsNotAnswered, $obligationsFilter
1634 $this->tpl->setVariable(
'TABLE_LIST_OF_QUESTIONS', $table_gui->getHTML());
1636 if( $this->object->getEnableProcessingTime() )
1643 $template =
new ilTemplate(
'tpl.il_as_tst_list_of_questions_short.html',
true,
true,
'Modules/Test');
1645 foreach( $data as
$row )
1647 if( strlen($row[
'description']) )
1649 $template->setCurrentBlock(
'description');
1650 $template->setVariable(
"DESCRIPTION", $row[
'description']);
1651 $template->parseCurrentBlock();
1656 $template->setCurrentBlock(
'item');
1657 $template->setVariable(
'CLASS', ($row[
'walked_through']) ? (
'answered'.$active) : (
'unanswered'.$active));
1659 $template->setVariable(
'SEQUENCE', $row[
'sequence']);
1660 $template->parseCurrentBlock();
1663 $template->setVariable(
'LIST_OF_QUESTIONS', $this->lng->txt(
'list_of_questions'));
1665 $this->tpl->setVariable(
'LIST_OF_QUESTIONS', $template->get());
1681 $this->tpl->addBlockFile($this->
getContentBlockName(),
"adm_content",
"tpl.il_as_tst_max_allowed_users_reached.html",
"Modules/Test");
1682 $this->tpl->setCurrentBlock(
"adm_content");
1683 $this->tpl->setVariable(
"MAX_ALLOWED_USERS_MESSAGE", sprintf($this->lng->txt(
"tst_max_allowed_users_message"), $this->
object->getAllowedUsersTimeGap()));
1684 $this->tpl->setVariable(
"MAX_ALLOWED_USERS_HEADING", sprintf($this->lng->txt(
"tst_max_allowed_users_heading"), $this->
object->getAllowedUsersTimeGap()));
1685 $this->tpl->setVariable(
"BACK_TO_INTRODUCTION", $this->lng->txt(
"tst_results_back_introduction"));
1686 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
1687 $this->tpl->parseCurrentBlock();
1693 if ($this->object->canShowSolutionPrintview($ilUser->getId()))
1695 $template =
new ilTemplate(
"tpl.il_as_tst_finish_navigation.html", TRUE, TRUE,
"Modules/Test");
1696 $template->setVariable(
"BUTTON_FINISH", $this->lng->txt(
"btn_next"));
1697 $template->setVariable(
"BUTTON_CANCEL", $this->lng->txt(
"btn_previous"));
1698 if ($this->object->getEnableExamview())
1700 $template->setVariable(
"CANCEL_CMD",
'finishTest');
1702 else if($this->object->getListOfQuestionsEnd())
1704 $template->setVariable(
"CANCEL_CMD",
'outQuestionSummary');
1708 $template->setVariable(
"CANCEL_CMD",
'redirectQuestion');
1710 $template_top =
new ilTemplate(
"tpl.il_as_tst_list_of_answers_topbuttons.html", TRUE, TRUE,
"Modules/Test");
1711 $template_top->setCurrentBlock(
"button_print");
1712 $template_top->setVariable(
"BUTTON_PRINT", $this->lng->txt(
"print"));
1713 $template_top->parseCurrentBlock();
1714 $active_id = $this->testSession->getActiveId();
1715 return $this->
showListOfAnswers($active_id, NULL, $template_top->get(), $template->get());
1719 $this->ctrl->redirect($this,
'gotoQuestion');
1725 $this->confirmFinishTestCmd();
1735 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_as_tst_correct_solution.html",
"Modules/Test");
1737 include_once(
"./Services/Style/classes/class.ilObjStyleSheet.php");
1738 $this->tpl->setCurrentBlock(
"ContentStyle");
1740 $this->tpl->parseCurrentBlock();
1742 $this->tpl->setCurrentBlock(
"SyntaxStyle");
1744 $this->tpl->parseCurrentBlock();
1747 if ($this->object->getShowSolutionAnswersOnly())
1752 $this->tpl->setCurrentBlock(
"adm_content");
1754 $this->tpl->setVariable(
"OUTPUT_SOLUTION", $solution);
1755 $this->tpl->setVariable(
"TEXT_BACK", $this->lng->txt(
"back"));
1756 $this->ctrl->saveParameter($this,
"pass");
1757 $this->ctrl->saveParameter($this,
"active_id");
1758 $this->tpl->setVariable(
"URL_BACK", $this->ctrl->getLinkTarget($this,
"outUserResultsOverview"));
1759 $this->tpl->parseCurrentBlock();
1775 $this->tpl->addBlockFile($this->
getContentBlockName(),
"adm_content",
"tpl.il_as_tst_finish_list_of_answers.html",
"Modules/Test");
1777 $result_array =& $this->
object->getTestResult($active_id,
$pass);
1781 foreach ($result_array as $question_data)
1783 $question = $question_data[
"qid"];
1784 if (is_numeric($question))
1786 $this->tpl->setCurrentBlock(
"printview_question");
1787 $question_gui = $this->
object->createQuestionGUI(
"", $question);
1788 $template =
new ilTemplate(
"tpl.il_as_qpl_question_printview.html", TRUE, TRUE,
"Modules/TestQuestionPool");
1789 $template->setVariable(
"COUNTER_QUESTION", $counter.
". ");
1790 $template->setVariable(
"QUESTION_TITLE", $question_gui->object->getTitle());
1792 $show_question_only = ($this->
object->getShowSolutionAnswersOnly()) ? TRUE : FALSE;
1793 $result_output = $question_gui->getSolutionOutput($active_id,
$pass, FALSE, FALSE, $show_question_only, $this->object->getShowSolutionFeedback());
1794 $template->setVariable(
"SOLUTION_OUTPUT", $result_output);
1795 $this->tpl->setVariable(
"QUESTION_OUTPUT", $template->get());
1796 $this->tpl->parseCurrentBlock();
1802 if ($this->object->getShowSolutionAnswersOnly())
1806 if (strlen($top_data))
1808 $this->tpl->setCurrentBlock(
"top_data");
1809 $this->tpl->setVariable(
"TOP_DATA", $top_data);
1810 $this->tpl->parseCurrentBlock();
1813 if (strlen($bottom_data))
1815 $this->tpl->setCurrentBlock(
"bottom_data");
1816 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
1817 $this->tpl->setVariable(
"BOTTOM_DATA", $bottom_data);
1818 $this->tpl->parseCurrentBlock();
1821 $this->tpl->setCurrentBlock(
"adm_content");
1822 $this->tpl->setVariable(
"TXT_ANSWER_SHEET", $this->lng->txt(
"tst_list_of_answers"));
1825 $this->tpl->setVariable(
"USER_DETAILS", $user_data);
1826 $this->tpl->setVariable(
"SIGNATURE", $signature);
1827 $this->tpl->setVariable(
"TITLE", $this->object->getTitle());
1828 $this->tpl->setVariable(
"TXT_TEST_PROLOG", $this->lng->txt(
"tst_your_answers"));
1829 $invited_user =& $this->
object->getInvitedUsers($ilUser->getId());
1830 $pagetitle = $this->
object->getTitle() .
" - " . $this->lng->txt(
"clientip") .
1831 ": " . $invited_user[$ilUser->getId()][
"clientip"] .
" - " .
1832 $this->lng->txt(
"matriculation") .
": " .
1833 $invited_user[$ilUser->getId()][
"matriculation"];
1834 $this->tpl->setVariable(
"PAGETITLE", $pagetitle);
1835 $this->tpl->parseCurrentBlock();
1845 if ($this->object->getKioskMode())
1847 $this->tpl->setBodyClass(
"kiosk");
1848 $this->tpl->setAddFooter(FALSE);
1853 return "ADM_CONTENT";
1859 $this->ctrl->redirectByClass(
1860 array(
'ilRepositoryGUI',
'ilObjTestGUI',
'ilTestEvaluationGUI'),
"outUserResultsOverview"
1866 $this->ctrl->redirectByClass(
1867 array(
'ilRepositoryGUI',
'ilObjTestGUI',
'ilTestEvaluationGUI'),
"outUserListOfAnswerPasses"
1878 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintRequestGUI.php';
1889 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintRequestGUI.php';
1905 $parseQuestionRelatedNavigation =
false;
1909 case $this->
object->getSpecificAnswerFeedback():
1910 case $this->
object->getGenericAnswerFeedback():
1911 case $this->
object->getAnswerFeedbackPoints():
1912 case $this->
object->getInstantFeedbackSolution():
1914 $tpl->setCurrentBlock(
"direct_feedback");
1915 $tpl->setVariable(
"CMD_SHOW_INSTANT_RESPONSE",
'showInstantResponse');
1916 $tpl->setVariable(
"TEXT_SHOW_INSTANT_RESPONSE", $lng->txt(
"check"));
1917 $tpl->parseCurrentBlock();
1919 $parseQuestionRelatedNavigation =
true;
1922 if( $this->object->isOfferingQuestionHintsEnabled() )
1924 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintTracking.php';
1926 $questionId = $questionGUI->object->getId();
1927 $activeId = $this->testSession->getActiveId();
1928 $pass = $this->testSession->getPass();
1933 if( $requestsPossible )
1935 if( $requestsExist )
1937 $buttonText = $lng->txt(
"button_request_next_question_hint");
1941 $buttonText = $lng->txt(
"button_request_question_hint");
1944 $tpl->setCurrentBlock(
"button_request_next_question_hint");
1945 $tpl->setVariable(
"CMD_REQUEST_NEXT_QUESTION_HINT",
'confirmHintRequest');
1946 $tpl->setVariable(
"TEXT_REQUEST_NEXT_QUESTION_HINT", $buttonText);
1947 $tpl->parseCurrentBlock();
1949 $parseQuestionRelatedNavigation =
true;
1952 if( $requestsExist )
1954 $tpl->setCurrentBlock(
"button_show_requested_question_hints");
1955 $tpl->setVariable(
"CMD_SHOW_REQUESTED_QUESTION_HINTS",
'showRequestedHintList');
1956 $tpl->setVariable(
"TEXT_SHOW_REQUESTED_QUESTION_HINTS", $lng->txt(
"button_show_requested_question_hints"));
1957 $tpl->parseCurrentBlock();
1959 $parseQuestionRelatedNavigation =
true;
1963 if( $parseQuestionRelatedNavigation )
1965 $tpl->setCurrentBlock(
"question_related_navigation");
1966 $tpl->parseCurrentBlock();
1989 if( $this->object->getShowMarker() )
1991 include_once
"./Modules/Test/classes/class.ilObjTest.php";
1996 $marked_questions = array();
1999 return $marked_questions;
2004 $this->tpl->addBlockFile(
2005 $this->
getContentBlockName(),
'adm_content',
'tpl.il_as_tst_question_summary.html',
'Modules/Test'
2008 if ($this->object->getShowCancel())
2013 if ($this->object->getKioskMode())
2021 $this->tpl->addBlockFile(
2034 $this->tpl->setCurrentBlock(
"kiosk_options");
2035 $this->tpl->setVariable(
"KIOSK_HEAD", $head);
2036 $this->tpl->parseCurrentBlock();