ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
ilTestPlayerAbstractGUI Class Reference

Output class for assessment test execution. More...

+ Inheritance diagram for ilTestPlayerAbstractGUI:
+ Collaboration diagram for ilTestPlayerAbstractGUI:

Public Member Functions

 __construct ($a_object)
 ilTestOutputGUI constructor More...
 
 saveTagsCmd ()
 Save tags for tagging gui. More...
 
 outResultsToplistCmd ()
 
 updateWorkingTime ()
 updates working time and stores state saveresult to see if question has to be stored or not More...
 
 saveQuestionSolution ($force=FALSE)
 saves the user input of a question More...
 
 outIntroductionPageCmd ()
 Creates the introduction page for a test. More...
 
 isMaxProcessingTimeReached ()
 Checks wheather the maximum processing time is reached or not. More...
 
 setAnonymousIdCmd ()
 Sets a session variable with the test access code for an anonymous test user. More...
 
 getLockParameter ()
 
 displayCodeCmd ()
 
 codeConfirmedCmd ()
 
 handleUserSettings ()
 Handles some form parameters on starting and resuming a test. More...
 
 calculateSequence ()
 Calculates the sequence to determine the next question. More...
 
 redirectAfterAutosaveCmd ()
 
 autosaveCmd ()
 
 togglesidelistCmd ()
 Toggle side list. More...
 
 backFromSummaryCmd ()
 Go back to the last active question from the summary. More...
 
 finishTestCmd ($requires_confirmation=true)
 
 redirectBackCmd ()
 
 showFinalStatementCmd ()
 
 getKioskHead ()
 
 outTestPage ($directfeedback)
 Outputs the question of the active sequence. More...
 
 checkOnlineTestAccess ()
 check access restrictions like client ip, partipating user etc. More...
 
 isTestAccessible ()
 test accessible returns true if the user can perform the test More...
 
 isNrOfTriesReached ()
 nr of tries exceeded More...
 
 passDetails ()
 Output of the learners view of an existing test pass. More...
 
 maxProcessingTimeReached ()
 Outputs a message when the maximum processing time is reached. More...
 
 confirmSubmitAnswers ()
 confirm submit results if confirm then results are submitted and the screen will be redirected to the startpage of the test @access public More...
 
 outProcessingTime ($active_id)
 
 outQuestionSummaryCmd ($fullpage=true, $contextFinishTest=false, $obligationsNotAnswered=false, $obligationsFilter=false)
 Output of a summary of all test questions for test participants. More...
 
 outQuestionSummaryWithObligationsInfoCmd ()
 
 outObligationsOnlySummaryCmd ()
 
 showMaximumAllowedUsersReachedMessage ()
 
 backConfirmFinishCmd ()
 
 outCorrectSolution ()
 Creates an output of the solution of an answer compared to the correct solution. More...
 
 showListOfAnswers ($active_id, $pass=NULL, $top_data="", $bottom_data="")
 Creates an output of the list of answers for a test participant during the test (only the actual pass will be shown) More...
 
 getContentBlockName ()
 Returns the name of the current content block (depends on the kiosk mode setting) More...
 
 outUserResultsOverviewCmd ()
 
 outUserListOfAnswerPassesCmd ()
 
- Public Member Functions inherited from ilTestServiceGUI
 isContextWithinTestPass ()
 
 setContextWithinTestPass ($contextWithinTestPass)
 
 ilTestServiceGUI (ilObjTest $a_object)
 The constructor takes the test object reference as parameter. More...
 
 setParticipantData ($participantData)
 
 getParticipantData ()
 
executeCommand ()
 execute command More...
 
 getCommand ($cmd)
 Retrieves the ilCtrl command. More...
 
 getPassOverview ($active_id, $targetclass="", $targetcommand="", $short=FALSE, $hide_details=FALSE, $adminMode=false)
 Returns the pass overview for a given active ID. More...
 
 getPassListOfAnswers (&$result_array, $active_id, $pass, $show_solutions=FALSE, $only_answered_questions=FALSE, $show_question_only=FALSE, $show_reached_points=FALSE, $anchorNav=false)
 Returns the list of answers of a users test pass. More...
 
 getPassListOfAnswersWithScoring (&$result_array, $active_id, $pass, $show_solutions=FALSE)
 Returns the list of answers of a users test pass and offers a scoring option. More...
 
 getResultsSignature ()
 Returns HTML code for a signature field. More...
 
 getResultsUserdata ($testSession, $active_id, $overwrite_anonymity=FALSE)
 Returns the user data for a test results output. More...
 
 getCorrectSolutionOutput ($question_id, $active_id, $pass)
 Returns an output of the solution to an answer compared to the correct solution. More...
 
 getResultsOfUserOutput ($testSession, $active_id, $pass, $targetGUI, $show_pass_details=TRUE, $show_answers=TRUE, $show_question_only=FALSE, $show_reached_points=FALSE)
 Output of the pass overview for a test called by a test participant. More...
 
 getResultsHeadUserAndPass ($active_id, $pass)
 Returns the user and pass data for a test results output. More...
 
 getQuestionResultForTestUsers ($question_id, $test_id)
 Creates a HTML representation for the results of a given question in a test. More...
 

Data Fields

 $ref_id
 
 $saveResult
 
 $sequence
 
 $cmdCtrl
 
 $maxProcessingTimeReached
 
 $endingTimeReached
 
- Data Fields inherited from ilTestServiceGUI
 $object = null
 
 $service = null
 
 $lng
 
 $tpl
 
 $ctrl
 
 $ilias
 
 $tree
 
 $ref_id
 

Protected Member Functions

 ensureExistingTestSession (ilTestSession $testSession)
 
 initProcessLocker ($activeId)
 
 canSaveResult ()
 
 outWorkingForm ($sequence="", $test_id, $postpone_allowed, $directfeedback=false)
 
 determineInlineScoreDisplay ()
 
 populatePreviousButtons ($sequence)
 
 populateQuestionMarkingBlockAsUnmarked ()
 
 populateQuestionMarkingBlockAsMarked ()
 
 populateNextButtonsLeadingToQuestion ()
 
 populateLowerNextButtonBlockLeadingToQuestion ()
 
 populateUpperNextButtonBlockLeadingToQuestion ()
 
 populateNextButtonsLeadingToEndOfTest ()
 
 populateLowerNextButtonBlockLeadingToEndOfTest ()
 
 populateUpperNextButtonBlockLeadingToEndOfTest ()
 
 populateNextButtonsLeadingToSummary ()
 
 populateLowerNextButtonBlockLeadingToSummary ()
 
 populateUpperNextButtonBlockLeadingToSummary ()
 
 populateCancelButtonBlock ()
 
 populateSummaryButtons ()
 
 populateLowerSummaryButtonBlock ()
 
 populateUpperSummaryButtonBlock ()
 
 populateQuestionSelectionButtons ()
 
 populateLowerQuestionSelectionButtonBlock ()
 
 populateUpperQuestionSelectionButtonBlock ()
 
 populatePostponeButtons ()
 
 populateLowerPostponeButtonBlock ()
 
 populateUpperPostponeButtonBlock ()
 
 populatePreviousButtonsLeadingToQuestion ()
 
 populatePreviousButtonsLeadingToIntroduction ()
 
 populateLowerPreviousButtonBlock ($cmd, $label)
 
 populateUpperPreviousButtonBlock ($cmd, $label)
 
 populateSpecificFeedbackBlock ($question_gui)
 
 populateGenericFeedbackBlock ($question_gui)
 
 populateScoreBlock ($reachedPoints, $maxPoints)
 
 populateSolutionBlock ($solutionoutput)
 
 populateCharSelector ()
 
 showSideList ()
 
 populateSyntaxStyleBlock ()
 
 populateContentStyleBlock ()
 
 startPlayerCmd ()
 Start a test for the first time. More...
 
 resumePlayerCmd ()
 Resume a test at the last position. More...
 
 initTestCmd ()
 Start a test for the first time after a redirect. More...
 
 getCurrentQuestionId ()
 
 markQuestionCmd ()
 Set a question solved. More...
 
 unmarkQuestionCmd ()
 Set a question unsolved. More...
 
 gotoQuestionCmd ()
 Go to the question with the active sequence. More...
 
 confirmFinishCmd ()
 The final submission of a test was confirmed. More...
 
 performTestPassFinishedTasks ($finishedPass)
 
 afterTestPassFinishedCmd ()
 
 isTestSignRedirectRequired ($activeId, $lastFinishedPass)
 
 archiveParticipantSubmission ( $active, $pass)
 
 showRequestedHintListCmd ()
 Go to requested hint list. More...
 
 confirmHintRequestCmd ()
 Go to hint request confirmation. More...
 
 fillQuestionRelatedNavigation (assQuestionGUI $questionGUI)
 renders the elements for the question related navigation More...
 
 isFirstPageInSequence ($sequence)
 
 isLastQuestionInSequence (assQuestionGUI $questionGUI)
 
 handleQuestionActionCmd ()
 
 showInstantResponseCmd ()
 
 nextQuestionCmd ()
 
 previousQuestionCmd ()
 
 postponeQuestionCmd ()
 
 getMarkedQuestions ()
 
 prepareSummaryPage ()
 
 prepareTestPageOutput ()
 
 populateKioskHead ()
 
 handlePasswordProtectionRedirect ()
 
 isParticipantsAnswerFixed ($questionId)
 
 customRedirectRequired ()
 
 performCustomRedirect ()
 
 getIntroductionPageButtonLabel ()
 
- Protected Member Functions inherited from ilTestServiceGUI
 isPdfDeliveryRequest ()
 
 getPassDetailsOverview ($result_array, $active_id, $pass, $targetGUI, $targetCMD, $questionDetailsCMD, $questionAnchorNav)
 
 buildPassDetailsOverviewTableGUI ($targetGUI, $targetCMD)
 
 isGradingMessageRequired ()
 
 getGradingMessage ($activeId)
 

Protected Attributes

 $passwordChecker
 
 $processLocker
 
 $testSession
 
- Protected Attributes inherited from ilTestServiceGUI
 $db
 
 $testSessionFactory = null
 
 $testSequenceFactory = null
 
 $participantData
 

Private Member Functions

 endingTimeReached ()
 handle endingTimeReached More...
 

Detailed Description

Output class for assessment test execution.

The ilTestOutputGUI class creates the output for the ilObjTestGUI class when learners execute a test. This saves some heap space because the ilObjTestGUI class will be much smaller then

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Björn Heyser bheys.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Version
$Id$

@inGroup ModulesTest

Definition at line 25 of file class.ilTestPlayerAbstractGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilTestPlayerAbstractGUI::__construct (   $a_object)

ilTestOutputGUI constructor

Parameters
ilObjTest$a_object

Definition at line 54 of file class.ilTestPlayerAbstractGUI.php.

55 {
56 parent::ilTestServiceGUI($a_object);
57 $this->ref_id = $_GET["ref_id"];
58
59 global $rbacsystem, $ilUser;
60 require_once 'Modules/Test/classes/class.ilTestPasswordChecker.php';
61 $this->passwordChecker = new ilTestPasswordChecker($rbacsystem, $ilUser, $this->object);
62
63 $this->processLocker = null;
64 $this->testSession = null;
65 }
$_GET["client_id"]
global $ilUser
Definition: imgupload.php:15

References $_GET, and $ilUser.

Member Function Documentation

◆ afterTestPassFinishedCmd()

ilTestPlayerAbstractGUI::afterTestPassFinishedCmd ( )
protected

Definition at line 956 of file class.ilTestPlayerAbstractGUI.php.

957 {
958 $activeId = $this->testSession->getActiveId();
959 $lastFinishedPass = $this->testSession->getLastFinishedPass();
960
961 // handle test signature
962
963 if ( $this->isTestSignRedirectRequired($activeId, $lastFinishedPass) )
964 {
965 $this->ctrl->redirectByClass('ilTestSignatureGUI', 'invokeSignaturePlugin');
966 }
967
968 if(!$_GET['skipfinalstatement'])
969 {
970 if ($this->object->getShowFinalStatement())
971 {
972 $this->ctrl->redirect($this, 'showFinalStatement');
973 }
974 }
975
976 // redirect after test
977 $redirection_mode = $this->object->getRedirectionMode();
978 $redirection_url = $this->object->getRedirectionUrl();
979 if( $redirection_url && $redirection_mode && !$this->object->canViewResults() )
980 {
981 if( $redirection_mode == REDIRECT_KIOSK )
982 {
983 if( $this->object->getKioskMode() )
984 {
985 ilUtil::redirect($redirection_url);
986 }
987 }
988 else
989 {
990 ilUtil::redirect($redirection_url);
991 }
992 }
993
994 // custom after test redirect (ilTestOutput - objective oriented sessions)
995 if( $this->customRedirectRequired() )
996 {
997 $this->performCustomRedirect();
998 }
999
1000 // default redirect (pass results)
1001 $this->redirectBackCmd();
1002 }
isTestSignRedirectRequired($activeId, $lastFinishedPass)
static redirect($a_script)
http redirect to other script
const REDIRECT_KIOSK

References $_GET, customRedirectRequired(), isTestSignRedirectRequired(), performCustomRedirect(), ilUtil\redirect(), REDIRECT_KIOSK, and redirectBackCmd().

+ Here is the call graph for this function:

◆ archiveParticipantSubmission()

ilTestPlayerAbstractGUI::archiveParticipantSubmission (   $active,
  $pass 
)
protected
Parameters
$active
Returns
void

Definition at line 1033 of file class.ilTestPlayerAbstractGUI.php.

1034 {
1035 require_once 'class.ilTestEvaluationGUI.php';
1036 $testevaluationgui = new ilTestEvaluationGUI($this->object);
1037 $results = $this->object->getTestResult($active,$pass);
1038 $results_output = $testevaluationgui->getPassListOfAnswers($results, $active, $pass, false, false, false, false);
1039
1040 require_once './Modules/Test/classes/class.ilTestArchiver.php';
1041 global $ilSetting;
1042 $inst_id = $ilSetting->get('inst_id', null);
1043 $archiver = new ilTestArchiver($this->object->getId());
1044
1045 $path = ilUtil::getWebspaceDir() . '/assessment/'. $this->object->getId() . '/exam_pdf';
1046 if (!is_dir($path))
1047 {
1049 }
1050 $filename = $path . '/exam_N' . $inst_id . '-' . $this->object->getId()
1051 . '-' . $active . '-' . $pass . '.pdf';
1052
1053 require_once 'class.ilTestPDFGenerator.php';
1055 //$template->setVariable("PDF_FILE_LOCATION", $filename);
1056 // Participant submission
1057 $archiver->handInParticipantSubmission( $active, $pass, $filename, $results_output );
1058 //$archiver->handInParticipantMisc( $active, $pass, 'signature_gedoens.sig', $filename );
1059 //$archiver->handInParticipantQuestionMaterial( $active, $pass, 123, 'file_upload.pdf', $filename );
1060
1061 global $ilias;
1062 $questions = $this->object->getQuestions();
1063 foreach ($questions as $question_id)
1064 {
1065 $question_object = $this->object->getQuestionDataset( $question_id );
1066 if ($question_object->type_tag == 'assFileUpload')
1067 {
1068 // Pfad: /data/default/assessment/tst_2/14/21/files/file_14_4_1370417414.png
1069 // /data/ - klar
1070 // /assessment/ - Konvention
1071 // /tst_2/ = /tst_<test_id> (ilObjTest)
1072 // /14/ = /<active_fi>/
1073 // /21/ = /<question_id>/ (question_object)
1074 // /files/ - Konvention
1075 // file_14_4_1370417414.png = file_<active_fi>_<pass>_<some timestamp>.<ext>
1076
1077 $candidate_path =
1078 $ilias->ini_ilias->readVariable( 'server', 'absolute_path' ) . ilTestArchiver::DIR_SEP
1079 . $ilias->ini_ilias->readVariable( 'clients', 'path' ) . ilTestArchiver::DIR_SEP
1080 . $ilias->client_id . ilTestArchiver::DIR_SEP
1081 . 'assessment' . ilTestArchiver::DIR_SEP
1082 . 'tst_' . $this->object->test_id . ilTestArchiver::DIR_SEP
1083 . $active . ilTestArchiver::DIR_SEP
1084 . $question_id . ilTestArchiver::DIR_SEP
1085 . 'files' . ilTestArchiver::DIR_SEP;
1086 $handle = opendir( $candidate_path );
1087 while ($handle !== false && ($file = readdir( $handle )) !== false)
1088 {
1089 if ($file != null)
1090 {
1091 $filename_start = 'file_' . $active . '_' . $pass . '_';
1092
1093 if (strpos( $file, $filename_start ) === 0)
1094 {
1095 $archiver->handInParticipantQuestionMaterial( $active, $pass, $question_id, $file, $file );
1096 }
1097 }
1098 }
1099 }
1100 }
1101 $passdata = $this->object->getTestResult($active, $pass);
1102 $overview = $testevaluationgui->getPassListOfAnswers($passdata, $active, $pass, true, false, false, true);
1103 $filename = ilUtil::getWebspaceDir() . '/assessment/scores-'.$this->object->getId() . '-' . $active . '-' . $pass . '.pdf';
1105 $archiver->handInTestResult($active, $pass, $filename);
1106 unlink($filename);
1107
1108 return;
1109 }
print $file
$filename
Definition: buildRTE.php:89
Class ilTestArchiver.
Output class for assessment test evaluation.
static generatePDF($pdf_output, $output_mode, $filename=null)
static getWebspaceDir($mode="filesystem")
get webspace directory
static makeDirParents($a_dir)
Create a new directory and all parent directories.
global $ilSetting
Definition: privfeed.php:40
$results
$path
Definition: index.php:22

References $file, $filename, ilTestServiceGUI\$ilias, $ilSetting, $pass, $path, $results, ilTestArchiver\DIR_SEP, ilTestPDFGenerator\generatePDF(), ilUtil\getWebspaceDir(), ilUtil\makeDirParents(), and ilTestPDFGenerator\PDF_OUTPUT_FILE.

Referenced by ilTestPlayerFixedQuestionSetGUI\performTestPassFinishedTasks().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ autosaveCmd()

ilTestPlayerAbstractGUI::autosaveCmd ( )

Definition at line 724 of file class.ilTestPlayerAbstractGUI.php.

725 {
726 $result = "";
727 if (is_array($_POST) && count($_POST) > 0)
728 {
730 {
731 $result = '-IGNORE-';
732 }
733 else
734 {
735 $res = $this->saveQuestionSolution(TRUE);
736 if ($res)
737 {
738 $result = $this->lng->txt("autosave_success");
739 }
740 else
741 {
742 $result = $this->lng->txt("autosave_failed");
743 }
744 }
745 }
746 if (!$this->canSaveResult())
747 {
748 // this was the last action in the test, saving is no longer allowed
749 $result = $this->ctrl->getLinkTarget($this, "redirectAfterAutosave", "", true);
750 }
751 echo $result;
752 exit;
753 }
$result
saveQuestionSolution($force=FALSE)
saves the user input of a question
$_POST['username']
Definition: cron.php:12
exit
Definition: login.php:54

References $_POST, $res, $result, canSaveResult(), exit, getCurrentQuestionId(), isParticipantsAnswerFixed(), and saveQuestionSolution().

+ Here is the call graph for this function:

◆ backConfirmFinishCmd()

ilTestPlayerAbstractGUI::backConfirmFinishCmd ( )

Definition at line 1619 of file class.ilTestPlayerAbstractGUI.php.

1620 {
1621 $this->ctrl->redirect($this, 'gotoQuestion');
1622 }

◆ backFromSummaryCmd()

ilTestPlayerAbstractGUI::backFromSummaryCmd ( )

Go back to the last active question from the summary.

Go back to the last active question from the summary

Definition at line 806 of file class.ilTestPlayerAbstractGUI.php.

807 {
808 $this->ctrl->setParameter($this, "activecommand", "back");
809 $this->ctrl->redirect($this, "redirectQuestion");
810 }

◆ calculateSequence()

ilTestPlayerAbstractGUI::calculateSequence ( )

Calculates the sequence to determine the next question.

Definition at line 682 of file class.ilTestPlayerAbstractGUI.php.

683 {
684 $sequence = $_GET["sequence"];
685 if (!$sequence) $sequence = $this->testSequence->getFirstSequence();
686 if (array_key_exists("save_error", $_GET))
687 {
688 if ($_GET["save_error"] == 1)
689 {
690 return $sequence;
691 }
692 }
693 switch ($_GET["activecommand"])
694 {
695 case "next":
696 $sequence = $this->testSequence->getNextSequence($sequence);
697 break;
698 case "previous":
699 $sequence = $this->testSequence->getPreviousSequence($sequence);
700 break;
701 }
702 return $sequence;
703 }

References $_GET, and $sequence.

Referenced by ilTestOutputGUI\executeCommand(), ilTestPlayerDynamicQuestionSetGUI\executeCommand(), and ilTestOutputGUI\redirectQuestionCmd().

+ Here is the caller graph for this function:

◆ canSaveResult()

ilTestPlayerAbstractGUI::canSaveResult ( )
abstractprotected

Reimplemented in ilTestOutputGUI, and ilTestPlayerDynamicQuestionSetGUI.

Referenced by autosaveCmd().

+ Here is the caller graph for this function:

◆ checkOnlineTestAccess()

ilTestPlayerAbstractGUI::checkOnlineTestAccess ( )

check access restrictions like client ip, partipating user etc.

check access restrictions like client ip, partipating user etc.

@access public

Definition at line 1239 of file class.ilTestPlayerAbstractGUI.php.

1240 {
1241 global $ilUser;
1242
1243 // check if user is invited to participate
1244 $user = $this->object->getInvitedUsers($ilUser->getId());
1245 if (!is_array ($user) || count($user)!=1)
1246 {
1247 ilUtil::sendInfo($this->lng->txt("user_not_invited"), true);
1248 $this->ctrl->redirectByClass("ilobjtestgui", "backToRepository");
1249 }
1250
1251 $user = array_pop($user);
1252 // check if client ip is set and if current remote addr is equal to stored client-ip
1253 if (strcmp($user["clientip"],"")!=0 && strcmp($user["clientip"],$_SERVER["REMOTE_ADDR"])!=0)
1254 {
1255 ilUtil::sendInfo($this->lng->txt("user_wrong_clientip"), true);
1256 $this->ctrl->redirectByClass("ilobjtestgui", "backToRepository");
1257 }
1258 }
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.

References $ilUser, and ilUtil\sendInfo().

+ Here is the call graph for this function:

◆ codeConfirmedCmd()

ilTestPlayerAbstractGUI::codeConfirmedCmd ( )

Definition at line 640 of file class.ilTestPlayerAbstractGUI.php.

641 {
642 $this->ctrl->setParameter($this, "activecommand", "start");
643 $this->ctrl->redirect($this, "redirectQuestion");
644 }

◆ confirmFinishCmd()

ilTestPlayerAbstractGUI::confirmFinishCmd ( )
protected

The final submission of a test was confirmed.

Definition at line 815 of file class.ilTestPlayerAbstractGUI.php.

816 {
817 $this->finishTestCmd(false);
818 }
finishTestCmd($requires_confirmation=true)

References finishTestCmd().

+ Here is the call graph for this function:

◆ confirmHintRequestCmd()

ilTestPlayerAbstractGUI::confirmHintRequestCmd ( )
protected

Go to hint request confirmation.

Definition at line 1781 of file class.ilTestPlayerAbstractGUI.php.

1782 {
1783 $this->saveQuestionSolution();
1784
1785 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintRequestGUI.php';
1786 $this->ctrl->redirectByClass('ilAssQuestionHintRequestGUI', ilAssQuestionHintRequestGUI::CMD_CONFIRM_REQUEST);
1787 }

References ilAssQuestionHintRequestGUI\CMD_CONFIRM_REQUEST, and saveQuestionSolution().

+ Here is the call graph for this function:

◆ confirmSubmitAnswers()

ilTestPlayerAbstractGUI::confirmSubmitAnswers ( )

confirm submit results if confirm then results are submitted and the screen will be redirected to the startpage of the test @access public

Definition at line 1339 of file class.ilTestPlayerAbstractGUI.php.

1340 {
1341 $this->tpl->addBlockFile($this->getContentBlockName(), "adm_content", "tpl.il_as_tst_submit_answers_confirm.html", "Modules/Test");
1342 $this->tpl->setCurrentBlock("adm_content");
1343 if ($this->object->isTestFinished($this->testSession->getActiveId()))
1344 {
1345 $this->tpl->setCurrentBlock("not_submit_allowed");
1346 $this->tpl->setVariable("TEXT_ALREADY_SUBMITTED", $this->lng->txt("tst_already_submitted"));
1347 $this->tpl->setVariable("BTN_OK", $this->lng->txt("tst_show_answer_sheet"));
1348 } else
1349 {
1350 $this->tpl->setCurrentBlock("submit_allowed");
1351 $this->tpl->setVariable("TEXT_CONFIRM_SUBMIT_RESULTS", $this->lng->txt("tst_confirm_submit_answers"));
1352 $this->tpl->setVariable("BTN_OK", $this->lng->txt("tst_submit_results"));
1353 }
1354 $this->tpl->setVariable("BTN_BACK", $this->lng->txt("back"));
1355 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "finalSubmission"));
1356 $this->tpl->parseCurrentBlock();
1357 }
getContentBlockName()
Returns the name of the current content block (depends on the kiosk mode setting)

References getContentBlockName().

+ Here is the call graph for this function:

◆ customRedirectRequired()

ilTestPlayerAbstractGUI::customRedirectRequired ( )
protected

Reimplemented in ilTestOutputGUI.

Definition at line 1971 of file class.ilTestPlayerAbstractGUI.php.

1972 {
1973 return false;
1974 }

Referenced by afterTestPassFinishedCmd(), and outIntroductionPageCmd().

+ Here is the caller graph for this function:

◆ determineInlineScoreDisplay()

ilTestPlayerAbstractGUI::determineInlineScoreDisplay ( )
protected

Definition at line 183 of file class.ilTestPlayerAbstractGUI.php.

184 {
185 $show_question_inline_score = FALSE;
186 if ($this->object->getAnswerFeedbackPoints())
187 {
188 $show_question_inline_score = TRUE;
189 return $show_question_inline_score;
190 }
191 return $show_question_inline_score;
192 }

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the caller graph for this function:

◆ displayCodeCmd()

ilTestPlayerAbstractGUI::displayCodeCmd ( )

Definition at line 629 of file class.ilTestPlayerAbstractGUI.php.

630 {
631 $this->tpl->addBlockFile($this->getContentBlockName(), "adm_content", "tpl.il_as_tst_anonymous_code_presentation.html", "Modules/Test");
632 $this->tpl->setCurrentBlock("adm_content");
633 $this->tpl->setVariable("TEXT_ANONYMOUS_CODE_CREATED", $this->lng->txt("tst_access_code_created"));
634 $this->tpl->setVariable("TEXT_ANONYMOUS_CODE", $this->testSession->getAccessCodeFromSession());
635 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
636 $this->tpl->setVariable("CONTINUE", $this->lng->txt("continue_work"));
637 $this->tpl->parseCurrentBlock();
638 }

References getContentBlockName().

+ Here is the call graph for this function:

◆ endingTimeReached()

ilTestPlayerAbstractGUI::endingTimeReached ( )
private

handle endingTimeReached

Definition at line 1306 of file class.ilTestPlayerAbstractGUI.php.

1307 {
1308 ilUtil::sendInfo(sprintf($this->lng->txt("detail_ending_time_reached"), ilFormat::ftimestamp2datetimeDB($this->object->getEndingTime())));
1309 $this->testSession->increasePass();
1310 $this->testSession->setLastSequence(0);
1311 $this->testSession->saveToDb();
1312 if (!$this->object->canViewResults())
1313 {
1314 $this->outIntroductionPage();
1315 }
1316 else
1317 {
1318 $this->ctrl->redirectByClass("ilTestEvaluationGUI", "outUserResultsOverview");
1319 }
1320 }
ftimestamp2datetimeDB($aTimestamp)
Timestamp to database datetime.

References ilFormat\ftimestamp2datetimeDB(), and ilUtil\sendInfo().

Referenced by outTestPage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ensureExistingTestSession()

ilTestPlayerAbstractGUI::ensureExistingTestSession ( ilTestSession  $testSession)
protected

Definition at line 67 of file class.ilTestPlayerAbstractGUI.php.

68 {
69 if( $testSession->getActiveId() )
70 {
71 return;
72 }
73
74 global $ilUser;
75
76 $testSession->setUserId($ilUser->getId());
77
78 if( $testSession->isAnonymousUser() )
79 {
80 if( !$testSession->doesAccessCodeInSessionExists() )
81 {
82 return;
83 }
84
85 $testSession->setAnonymousId($testSession->getAccessCodeFromSession());
86 }
87
88 $testSession->saveToDb();
89 }

References $ilUser, and $testSession.

Referenced by ilTestOutputGUI\executeCommand(), and ilTestPlayerDynamicQuestionSetGUI\executeCommand().

+ Here is the caller graph for this function:

◆ fillQuestionRelatedNavigation()

ilTestPlayerAbstractGUI::fillQuestionRelatedNavigation ( assQuestionGUI  $questionGUI)
protected

renders the elements for the question related navigation

@access private @global ilTemplate $tpl @global ilLanguage $lng

Parameters
assQuestionGUI$questionGUI

Definition at line 1797 of file class.ilTestPlayerAbstractGUI.php.

1798 {
1799 global $tpl, $lng;
1800
1801 $parseQuestionRelatedNavigation = false;
1802
1803 switch( 1 )
1804 {
1805 case $this->object->getSpecificAnswerFeedback():
1806 case $this->object->getGenericAnswerFeedback():
1807 case $this->object->getAnswerFeedbackPoints():
1808 case $this->object->getInstantFeedbackSolution():
1809
1810 $tpl->setCurrentBlock("direct_feedback");
1811 $tpl->setVariable("CMD_SHOW_INSTANT_RESPONSE", 'showInstantResponse');
1812 $tpl->setVariable("TEXT_SHOW_INSTANT_RESPONSE", $lng->txt("check"));
1813 $tpl->parseCurrentBlock();
1814
1815 $parseQuestionRelatedNavigation = true;
1816 }
1817
1818 if( $this->object->isOfferingQuestionHintsEnabled() )
1819 {
1820 $questionId = $questionGUI->object->getId();
1821 $activeId = $this->testSession->getActiveId();
1822 $pass = $this->testSession->getPass();
1823
1824 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintTracking.php';
1825 $questionHintTracking = new ilAssQuestionHintTracking($questionId, $activeId, $pass);
1826
1827 $requestsExist = $questionHintTracking->requestsExist();
1828 $requestsPossible = $questionHintTracking->requestsPossible();
1829
1830 if( $requestsPossible )
1831 {
1832 if( $requestsExist )
1833 {
1834 $buttonText = $lng->txt("button_request_next_question_hint");
1835 }
1836 else
1837 {
1838 $buttonText = $lng->txt("button_request_question_hint");
1839 }
1840
1841 $tpl->setCurrentBlock("button_request_next_question_hint");
1842 $tpl->setVariable("CMD_REQUEST_NEXT_QUESTION_HINT", 'confirmHintRequest');
1843 $tpl->setVariable("TEXT_REQUEST_NEXT_QUESTION_HINT", $buttonText);
1844 $tpl->parseCurrentBlock();
1845
1846 $parseQuestionRelatedNavigation = true;
1847 }
1848
1849 if( $requestsExist )
1850 {
1851 $tpl->setCurrentBlock("button_show_requested_question_hints");
1852 $tpl->setVariable("CMD_SHOW_REQUESTED_QUESTION_HINTS", 'showRequestedHintList');
1853 $tpl->setVariable("TEXT_SHOW_REQUESTED_QUESTION_HINTS", $lng->txt("button_show_requested_question_hints"));
1854 $tpl->parseCurrentBlock();
1855
1856 $parseQuestionRelatedNavigation = true;
1857 }
1858 }
1859
1860 if( $parseQuestionRelatedNavigation )
1861 {
1862 $tpl->setCurrentBlock("question_related_navigation");
1863 $tpl->parseCurrentBlock();
1864 }
1865 }

References ilTestServiceGUI\$lng, $pass, and ilTestServiceGUI\$tpl.

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the caller graph for this function:

◆ finishTestCmd()

ilTestPlayerAbstractGUI::finishTestCmd (   $requires_confirmation = true)

Definition at line 848 of file class.ilTestPlayerAbstractGUI.php.

849 {
850 global $ilUser, $ilAuth;
851
852 unset($_SESSION["tst_next"]);
853
854 $active_id = $this->testSession->getActiveId();
855 $actualpass = $this->object->_getPass($active_id);
856
857 $allObligationsAnswered = ilObjTest::allObligationsAnswered($this->testSession->getTestId(), $active_id, $actualpass);
858
859 /*
860 * The following "endgames" are possible prior to actually finishing the test:
861 * - Obligations (Ability to finish the test.)
862 * If not all obligatory questions are answered, the user is presented a list
863 * showing the deficits.
864 * - Examview (Will to finish the test.)
865 * With the examview, the participant can review all answers given in ILIAS or a PDF prior to
866 * commencing to the finished test.
867 * - Last pass allowed (Reassuring the will to finish the test.)
868 * If passes are limited, on the last pass, an additional confirmation is to be displayed.
869 */
870
871 // Obligations fulfilled? redirectQuestion : one or the other summary -> no finish
872 if( $this->object->areObligationsEnabled() && !$allObligationsAnswered )
873 {
874 if( $this->object->getListOfQuestions() )
875 {
876 $_GET['activecommand'] = 'summary_obligations';
877 }
878 else
879 {
880 $_GET['activecommand'] = 'summary_obligations_only';
881 }
882
883 $this->redirectQuestionCmd();
884 return;
885 }
886
887 // Examview enabled & !reviewed & requires_confirmation? test_submission_overview (review gui)
888 if ($this->object->getEnableExamview() && !isset($_GET['reviewed']) && $requires_confirmation)
889 {
890 $_GET['activecommand'] = 'test_submission_overview';
891 $this->redirectQuestionCmd();
892 return;
893 }
894
895 // Last try in limited tries & !confirmed
896 if (($requires_confirmation) && ($actualpass == $this->object->getNrOfTries() - 1))
897 {
898 // show confirmation page
899 return $this->confirmFinishTestCmd();
900 }
901
902 // Last try in limited tries & confirmed?
903 if(($actualpass == $this->object->getNrOfTries() - 1) && (!$requires_confirmation))
904 {
905 $ilAuth->setIdle(ilSession::getIdleValue(), false);
906 $ilAuth->setExpire(0);
907 switch($this->object->getMailNotification())
908 {
909 case 1:
910 $this->object->sendSimpleNotification($active_id);
911 break;
912 case 2:
913 $this->object->sendAdvancedNotification($active_id);
914 break;
915 }
916 }
917
918 // Non-last try finish
919 if(!$_SESSION['tst_pass_finish'])
920 {
921 if(!$_SESSION['tst_pass_finish']) $_SESSION['tst_pass_finish'] = 1;
922 if($this->object->getMailNotificationType() == 1)
923 {
924 switch($this->object->getMailNotification())
925 {
926 case 1:
927 $this->object->sendSimpleNotification($active_id);
928 break;
929 case 2:
930 $this->object->sendAdvancedNotification($active_id);
931 break;
932 }
933 }
934 }
935
936 // no redirect request loops after test pass finished tasks has been performed
937
938 $this->performTestPassFinishedTasks($actualpass);
939
940 $this->testSession->setLastFinishedPass($this->testSession->getPass());
941 $this->testSession->increaseTestPass();
942
943 $this->ctrl->redirect($this, 'afterTestPassFinished');
944 }
static allObligationsAnswered($test_id, $active_id, $pass)
checks wether all questions marked as obligatory were answered within the test pass with given testId...
static getIdleValue($fixedMode=false)
Returns the idle time in seconds.
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']

References $_GET, $_SESSION, $ilUser, ilObjTest\allObligationsAnswered(), ilSession\getIdleValue(), and performTestPassFinishedTasks().

Referenced by confirmFinishCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getContentBlockName()

ilTestPlayerAbstractGUI::getContentBlockName ( )

Returns the name of the current content block (depends on the kiosk mode setting)

Returns
string The name of the content block

Definition at line 1739 of file class.ilTestPlayerAbstractGUI.php.

1740 {
1741 if ($this->object->getKioskMode())
1742 {
1743 $this->tpl->setBodyClass("kiosk");
1744 $this->tpl->setAddFooter(FALSE);
1745 return "CONTENT";
1746 }
1747 else
1748 {
1749 return "ADM_CONTENT";
1750 }
1751 }

Referenced by confirmSubmitAnswers(), displayCodeCmd(), outQuestionSummaryCmd(), prepareSummaryPage(), prepareTestPageOutput(), redirectAfterAutosaveCmd(), showFinalStatementCmd(), showListOfAnswers(), and showMaximumAllowedUsersReachedMessage().

+ Here is the caller graph for this function:

◆ getCurrentQuestionId()

ilTestPlayerAbstractGUI::getCurrentQuestionId ( )
abstractprotected

Reimplemented in ilTestOutputGUI, and ilTestPlayerDynamicQuestionSetGUI.

Referenced by autosaveCmd().

+ Here is the caller graph for this function:

◆ getIntroductionPageButtonLabel()

ilTestPlayerAbstractGUI::getIntroductionPageButtonLabel ( )
protected
Returns
string

Definition at line 1984 of file class.ilTestPlayerAbstractGUI.php.

1985 {
1986 if( $this->testSession->isObjectiveOriented() )
1987 {
1988 return $this->lng->txt("save_back_to_objective_container");
1989 }
1990
1991 return $this->lng->txt("save_introduction");
1992 }

Referenced by populatePreviousButtonsLeadingToIntroduction().

+ Here is the caller graph for this function:

◆ getKioskHead()

ilTestPlayerAbstractGUI::getKioskHead ( )

Definition at line 1136 of file class.ilTestPlayerAbstractGUI.php.

1137 {
1138 global $ilUser;
1139
1140 $template = new ilTemplate('tpl.il_as_tst_kiosk_head.html', true, true, 'Modules/Test');
1141 if ($this->object->getShowKioskModeTitle())
1142 {
1143 $template->setCurrentBlock("kiosk_show_title");
1144 $template->setVariable("TEST_TITLE", $this->object->getTitle());
1145 $template->parseCurrentBlock();
1146 }
1147 if ($this->object->getShowKioskModeParticipant())
1148 {
1149 $template->setCurrentBlock("kiosk_show_participant");
1150 $template->setVariable("PARTICIPANT_NAME_TXT", $this->lng->txt("login_as"));
1151 $template->setVariable("PARTICIPANT_NAME", $ilUser->getFullname());
1152 $template->setVariable("PARTICIPANT_LOGIN", $ilUser->getLogin());
1153 $template->setVariable("PARTICIPANT_MATRICULATION", $ilUser->getMatriculation());
1154 $template->setVariable("PARTICIPANT_EMAIL", $ilUser->getEmail());
1155 $template->parseCurrentBlock();
1156 }
1157 if ($this->object->isShowExamIdInTestPassEnabled())
1158 {
1159 $exam_id = ilObjTest::buildExamId(
1160 $this->testSession->getActiveId() , $this->testSession->getPass(), $this->object->getId()
1161 );
1162
1163 $template->setCurrentBlock("kiosk_show_exam_id");
1164 $template->setVariable("EXAM_ID_TXT", $this->lng->txt("exam_id"));
1165 $template->setVariable( "EXAM_ID", $exam_id);
1166 $template->parseCurrentBlock();
1167 }
1168 return $template->get();
1169 }
static buildExamId($active_id, $pass, $test_obj_id=null)
special template class to simplify handling of ITX/PEAR

References $ilUser, and ilObjTest\buildExamId().

Referenced by outQuestionSummaryCmd(), and populateKioskHead().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLockParameter()

ilTestPlayerAbstractGUI::getLockParameter ( )

Definition at line 580 of file class.ilTestPlayerAbstractGUI.php.

581 {
582 if( isset($_POST['lock']) && strlen($_POST['lock']) )
583 {
584 return $_POST['lock'];
585 }
586 elseif( isset($_GET['lock']) && strlen($_GET['lock']) )
587 {
588 return $_GET['lock'];
589 }
590
591 return null;
592 }

References $_GET, and $_POST.

Referenced by handlePasswordProtectionRedirect(), and startPlayerCmd().

+ Here is the caller graph for this function:

◆ getMarkedQuestions()

ilTestPlayerAbstractGUI::getMarkedQuestions ( )
protected

Definition at line 1884 of file class.ilTestPlayerAbstractGUI.php.

1885 {
1886 if( $this->object->getShowMarker() )
1887 {
1888 include_once "./Modules/Test/classes/class.ilObjTest.php";
1889 $marked_questions = ilObjTest::_getSolvedQuestions($this->testSession->getActiveId());
1890 }
1891 else
1892 {
1893 $marked_questions = array();
1894 }
1895
1896 return $marked_questions;
1897 }
_getSolvedQuestions($active_id, $question_fi=null)
get solved questions

References ilObjTest\_getSolvedQuestions().

+ Here is the call graph for this function:

◆ gotoQuestionCmd()

ilTestPlayerAbstractGUI::gotoQuestionCmd ( )
protected

Go to the question with the active sequence.

Reimplemented in ilTestPlayerDynamicQuestionSetGUI.

Definition at line 791 of file class.ilTestPlayerAbstractGUI.php.

792 {
793 if (is_array($_POST) && count($_POST) > 0) $this->saveQuestionSolution();
794 $this->ctrl->setParameter($this, "sequence", $_GET["sequence"]);
795 $this->ctrl->setParameter($this, "activecommand", "gotoquestion");
796 $this->ctrl->saveParameter($this, "tst_javascript");
797 if (strlen($_GET['qst_selection'])) $_SESSION['qst_selection'] = $_GET['qst_selection'];
798 $this->ctrl->redirect($this, "redirectQuestion");
799 }

References $_GET, $_POST, $_SESSION, and saveQuestionSolution().

+ Here is the call graph for this function:

◆ handlePasswordProtectionRedirect()

ilTestPlayerAbstractGUI::handlePasswordProtectionRedirect ( )
protected

Definition at line 1937 of file class.ilTestPlayerAbstractGUI.php.

1938 {
1939 if( $this->ctrl->getNextClass() == 'iltestpasswordprotectiongui' )
1940 {
1941 return;
1942 }
1943
1944 if( !$this->passwordChecker->isPasswordProtectionPageRedirectRequired() )
1945 {
1946 return;
1947 }
1948
1949 $this->ctrl->setParameter($this, 'lock', $this->getLockParameter());
1950
1951 $nextCommand = $this->ctrl->getCmdClass().'::'.$this->ctrl->getCmd();
1952 $this->ctrl->setParameterByClass('ilTestPasswordProtectionGUI', 'nextCommand', $nextCommand);
1953 $this->ctrl->redirectByClass('ilTestPasswordProtectionGUI', 'showPasswordForm');
1954 }

References getLockParameter().

Referenced by ilTestOutputGUI\executeCommand(), and ilTestPlayerDynamicQuestionSetGUI\executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleQuestionActionCmd()

ilTestPlayerAbstractGUI::handleQuestionActionCmd ( )
abstractprotected

◆ handleUserSettings()

ilTestPlayerAbstractGUI::handleUserSettings ( )

Handles some form parameters on starting and resuming a test.

Definition at line 649 of file class.ilTestPlayerAbstractGUI.php.

650 {
651 global $ilUser;
652
653 if ($_POST["chb_javascript"])
654 {
655 $ilUser->writePref("tst_javascript", 1);
656 }
657 else
658 {
659 $ilUser->writePref("tst_javascript", 0);
660 }
661
662 // hide previous results
663 if ($this->object->getNrOfTries() != 1)
664 {
665 if ($this->object->getUsePreviousAnswers() == 1)
666 {
667 if ($_POST["chb_use_previous_answers"])
668 {
669 $ilUser->writePref("tst_use_previous_answers", 1);
670 }
671 else
672 {
673 $ilUser->writePref("tst_use_previous_answers", 0);
674 }
675 }
676 }
677 }

References $_POST, and $ilUser.

Referenced by resumePlayerCmd(), ilTestPlayerDynamicQuestionSetGUI\resumePlayerCmd(), and startPlayerCmd().

+ Here is the caller graph for this function:

◆ initProcessLocker()

ilTestPlayerAbstractGUI::initProcessLocker (   $activeId)
protected

Definition at line 91 of file class.ilTestPlayerAbstractGUI.php.

92 {
93 global $ilDB;
94
95 $settings = new ilSetting('assessment');
96
97 require_once 'Modules/Test/classes/class.ilTestProcessLockerFactory.php';
98 $processLockerFactory = new ilTestProcessLockerFactory($settings, $ilDB);
99
100 $processLockerFactory->setActiveId($activeId);
101
102 $this->processLocker = $processLockerFactory->getLocker();
103 }
ILIAS Setting Class.
global $ilDB

References $ilDB.

Referenced by ilTestOutputGUI\executeCommand(), and ilTestPlayerDynamicQuestionSetGUI\executeCommand().

+ Here is the caller graph for this function:

◆ initTestCmd()

ilTestPlayerAbstractGUI::initTestCmd ( )
protected

Start a test for the first time after a redirect.

Definition at line 608 of file class.ilTestPlayerAbstractGUI.php.

609 {
610 if ($this->object->checkMaximumAllowedUsers() == FALSE)
611 {
613 }
614
615 if( $this->testSession->isAnonymousUser() && !$this->testSession->getActiveId() )
616 {
617 $accessCode = $this->testSession->createNewAccessCode();
618
619 $this->testSession->setAccessCodeToSession($accessCode);
620 $this->testSession->setAnonymousId($accessCode);
621 $this->testSession->saveToDb();
622
623 $this->ctrl->redirect($this, 'displayCode');
624 }
625
626 $this->ctrl->redirect($this, 'startTest');
627 }

References showMaximumAllowedUsersReachedMessage().

+ Here is the call graph for this function:

◆ isFirstPageInSequence()

ilTestPlayerAbstractGUI::isFirstPageInSequence (   $sequence)
abstractprotected

Reimplemented in ilTestOutputGUI, and ilTestPlayerDynamicQuestionSetGUI.

Referenced by populatePreviousButtons().

+ Here is the caller graph for this function:

◆ isLastQuestionInSequence()

ilTestPlayerAbstractGUI::isLastQuestionInSequence ( assQuestionGUI  $questionGUI)
abstractprotected

◆ isMaxProcessingTimeReached()

ilTestPlayerAbstractGUI::isMaxProcessingTimeReached ( )

Checks wheather the maximum processing time is reached or not.

Checks wheather the maximum processing time is reached or not

Returns
bool TRUE if the maximum processing time is reached, FALSE otherwise

Definition at line 168 of file class.ilTestPlayerAbstractGUI.php.

169 {
170 global $ilUser;
171 $active_id = $this->testSession->getActiveId();
172 $starting_time = $this->object->getStartingTimeOfUser($active_id);
173 if ($starting_time === FALSE)
174 {
175 return FALSE;
176 }
177 else
178 {
179 return $this->object->isMaxProcessingTimeReached($starting_time, $active_id);
180 }
181 }

References $ilUser.

Referenced by ilTestOutputGUI\canSaveResult(), isTestAccessible(), and outTestPage().

+ Here is the caller graph for this function:

◆ isNrOfTriesReached()

ilTestPlayerAbstractGUI::isNrOfTriesReached ( )

nr of tries exceeded

Definition at line 1275 of file class.ilTestPlayerAbstractGUI.php.

1276 {
1277 return $this->object->hasNrOfTriesRestriction() && $this->object->isNrOfTriesReached($this->testSession->getPass());
1278 }

Referenced by ilTestOutputGUI\canSaveResult(), and isTestAccessible().

+ Here is the caller graph for this function:

◆ isParticipantsAnswerFixed()

◆ isTestAccessible()

ilTestPlayerAbstractGUI::isTestAccessible ( )

test accessible returns true if the user can perform the test

Definition at line 1264 of file class.ilTestPlayerAbstractGUI.php.

1265 {
1266 return !$this->isNrOfTriesReached()
1267 and !$this->isMaxProcessingTimeReached()
1268 and $this->object->startingTimeReached()
1269 and !$this->object->endingTimeReached();
1270 }
endingTimeReached()
handle endingTimeReached
isMaxProcessingTimeReached()
Checks wheather the maximum processing time is reached or not.

References isMaxProcessingTimeReached(), and isNrOfTriesReached().

+ Here is the call graph for this function:

◆ isTestSignRedirectRequired()

ilTestPlayerAbstractGUI::isTestSignRedirectRequired (   $activeId,
  $lastFinishedPass 
)
protected

Definition at line 1004 of file class.ilTestPlayerAbstractGUI.php.

1005 {
1006 if( !$this->object->getSignSubmission() )
1007 {
1008 return false;
1009 }
1010
1011 if( !is_null(ilSession::get("signed_{$activeId}_{$lastFinishedPass}")) )
1012 {
1013 return false;
1014 }
1015
1016 global $ilPluginAdmin;
1017
1018 $activePlugins = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, 'Test', 'tsig');
1019
1020 if( !count($activePlugins) )
1021 {
1022 return false;
1023 }
1024
1025 return true;
1026 }
const IL_COMP_MODULE
static get($a_var)
Get a value.

References ilSession\get(), and IL_COMP_MODULE.

Referenced by afterTestPassFinishedCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ markQuestionCmd()

ilTestPlayerAbstractGUI::markQuestionCmd ( )
protected

Set a question solved.

Reimplemented in ilTestPlayerDynamicQuestionSetGUI.

Definition at line 771 of file class.ilTestPlayerAbstractGUI.php.

772 {
773 $this->saveQuestionSolution();
774 $this->ctrl->setParameter($this, "activecommand", "setmarked");
775 $this->ctrl->redirect($this, "redirectQuestion");
776 }

References saveQuestionSolution().

+ Here is the call graph for this function:

◆ maxProcessingTimeReached()

ilTestPlayerAbstractGUI::maxProcessingTimeReached ( )

Outputs a message when the maximum processing time is reached.

Outputs a message when the maximum processing time is reached

@access public

Definition at line 1329 of file class.ilTestPlayerAbstractGUI.php.

1330 {
1331 $this->outIntroductionPage();
1332 }

Referenced by outTestPage().

+ Here is the caller graph for this function:

◆ nextQuestionCmd()

ilTestPlayerAbstractGUI::nextQuestionCmd ( )
abstractprotected

◆ outCorrectSolution()

ilTestPlayerAbstractGUI::outCorrectSolution ( )

Creates an output of the solution of an answer compared to the correct solution.

@access public

Definition at line 1629 of file class.ilTestPlayerAbstractGUI.php.

1630 {
1631 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_correct_solution.html", "Modules/Test");
1632
1633 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
1634 $this->tpl->setCurrentBlock("ContentStyle");
1635 $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET", ilObjStyleSheet::getContentStylePath(0));
1636 $this->tpl->parseCurrentBlock();
1637
1638 $this->tpl->setCurrentBlock("SyntaxStyle");
1639 $this->tpl->setVariable("LOCATION_SYNTAX_STYLESHEET", ilObjStyleSheet::getSyntaxStylePath());
1640 $this->tpl->parseCurrentBlock();
1641
1642 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
1643 if ($this->object->getShowSolutionAnswersOnly())
1644 {
1645 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print");
1646 }
1647
1648 $this->tpl->setCurrentBlock("adm_content");
1649 $solution = $this->getCorrectSolutionOutput($_GET["evaluation"], $_GET["active_id"], $_GET["pass"]);
1650 $this->tpl->setVariable("OUTPUT_SOLUTION", $solution);
1651 $this->tpl->setVariable("TEXT_BACK", $this->lng->txt("back"));
1652 $this->ctrl->saveParameter($this, "pass");
1653 $this->ctrl->saveParameter($this, "active_id");
1654 $this->tpl->setVariable("URL_BACK", $this->ctrl->getLinkTarget($this, "outUserResultsOverview"));
1655 $this->tpl->parseCurrentBlock();
1656 }
getContentStylePath($a_style_id)
get content style path
getSyntaxStylePath()
get syntax style path
getCorrectSolutionOutput($question_id, $active_id, $pass)
Returns an output of the solution to an answer compared to the correct solution.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user

References $_GET, ilObjStyleSheet\getContentStylePath(), ilTestServiceGUI\getCorrectSolutionOutput(), ilUtil\getStyleSheetLocation(), and ilObjStyleSheet\getSyntaxStylePath().

+ Here is the call graph for this function:

◆ outIntroductionPageCmd()

ilTestPlayerAbstractGUI::outIntroductionPageCmd ( )

Creates the introduction page for a test.

Creates the introduction page for a test

Definition at line 151 of file class.ilTestPlayerAbstractGUI.php.

152 {
153 if( $this->customRedirectRequired() )
154 {
155 $this->performCustomRedirect();
156 }
157
158 $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
159 }

References customRedirectRequired(), and performCustomRedirect().

Referenced by redirectBackCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ outObligationsOnlySummaryCmd()

ilTestPlayerAbstractGUI::outObligationsOnlySummaryCmd ( )

Definition at line 1603 of file class.ilTestPlayerAbstractGUI.php.

1604 {
1605 return $this->outQuestionSummaryCmd(true, true, true, true);
1606 }
outQuestionSummaryCmd($fullpage=true, $contextFinishTest=false, $obligationsNotAnswered=false, $obligationsFilter=false)
Output of a summary of all test questions for test participants.

References outQuestionSummaryCmd().

+ Here is the call graph for this function:

◆ outProcessingTime()

ilTestPlayerAbstractGUI::outProcessingTime (   $active_id)

Definition at line 1359 of file class.ilTestPlayerAbstractGUI.php.

1360 {
1361 global $ilUser;
1362
1363 $starting_time = $this->object->getStartingTimeOfUser($active_id);
1364 $processing_time = $this->object->getProcessingTimeInSeconds($active_id);
1365 $processing_time_minutes = floor($processing_time / 60);
1366 $processing_time_seconds = $processing_time - $processing_time_minutes * 60;
1367 $str_processing_time = "";
1368 if ($processing_time_minutes > 0)
1369 {
1370 $str_processing_time = $processing_time_minutes . " " . ($processing_time_minutes == 1 ? $this->lng->txt("minute") : $this->lng->txt("minutes"));
1371 }
1372 if ($processing_time_seconds > 0)
1373 {
1374 if (strlen($str_processing_time) > 0) $str_processing_time .= " " . $this->lng->txt("and") . " ";
1375 $str_processing_time .= $processing_time_seconds . " " . ($processing_time_seconds == 1 ? $this->lng->txt("second") : $this->lng->txt("seconds"));
1376 }
1377 $time_left = $starting_time + $processing_time - mktime();
1378 $time_left_minutes = floor($time_left / 60);
1379 $time_left_seconds = $time_left - $time_left_minutes * 60;
1380 $str_time_left = "";
1381 if ($time_left_minutes > 0)
1382 {
1383 $str_time_left = $time_left_minutes . " " . ($time_left_minutes == 1 ? $this->lng->txt("minute") : $this->lng->txt("minutes"));
1384 }
1385 if ($time_left < 300)
1386 {
1387 if ($time_left_seconds > 0)
1388 {
1389 if (strlen($str_time_left) > 0) $str_time_left .= " " . $this->lng->txt("and") . " ";
1390 $str_time_left .= $time_left_seconds . " " . ($time_left_seconds == 1 ? $this->lng->txt("second") : $this->lng->txt("seconds"));
1391 }
1392 }
1393 $date = getdate($starting_time);
1394 $formattedStartingTime = ilDatePresentation::formatDate(new ilDateTime($date,IL_CAL_FKT_GETDATE));
1395 /*
1396 $formattedStartingTime = ilFormat::formatDate(
1397 $date["year"]."-".
1398 sprintf("%02d", $date["mon"])."-".
1399 sprintf("%02d", $date["mday"])." ".
1400 sprintf("%02d", $date["hours"]).":".
1401 sprintf("%02d", $date["minutes"]).":".
1402 sprintf("%02d", $date["seconds"])
1403 );
1404 */
1405 $datenow = getdate();
1406 $this->tpl->setCurrentBlock("enableprocessingtime");
1407 $this->tpl->setVariable("USER_WORKING_TIME",
1408 sprintf(
1409 $this->lng->txt("tst_time_already_spent"),
1410 $formattedStartingTime,
1411 $str_processing_time
1412 )
1413 );
1414 $this->tpl->setVariable("USER_REMAINING_TIME", sprintf($this->lng->txt("tst_time_already_spent_left"), $str_time_left));
1415 $this->tpl->parseCurrentBlock();
1416 $template = new ilTemplate("tpl.workingtime.js.html", TRUE, TRUE, 'Modules/Test');
1417 $template->setVariable("STRING_MINUTE", $this->lng->txt("minute"));
1418 $template->setVariable("STRING_MINUTES", $this->lng->txt("minutes"));
1419 $template->setVariable("STRING_SECOND", $this->lng->txt("second"));
1420 $template->setVariable("STRING_SECONDS", $this->lng->txt("seconds"));
1421 $template->setVariable("STRING_TIMELEFT", $this->lng->txt("tst_time_already_spent_left"));
1422 $template->setVariable("AND", strtolower($this->lng->txt("and")));
1423 $template->setVariable("YEAR", $date["year"]);
1424 $template->setVariable("MONTH", $date["mon"]-1);
1425 $template->setVariable("DAY", $date["mday"]);
1426 $template->setVariable("HOUR", $date["hours"]);
1427 $template->setVariable("MINUTE", $date["minutes"]);
1428 $template->setVariable("SECOND", $date["seconds"]);
1429 if ($this->object->isEndingTimeEnabled() && preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $this->object->getEndingTime(), $matches))
1430 {
1431 $template->setVariable("ENDYEAR", $matches[1]);
1432 $template->setVariable("ENDMONTH", $matches[2]-1);
1433 $template->setVariable("ENDDAY", $matches[3]);
1434 $template->setVariable("ENDHOUR", $matches[4]);
1435 $template->setVariable("ENDMINUTE", $matches[5]);
1436 $template->setVariable("ENDSECOND", $matches[6]);
1437 }
1438 $template->setVariable("YEARNOW", $datenow["year"]);
1439 $template->setVariable("MONTHNOW", $datenow["mon"]-1);
1440 $template->setVariable("DAYNOW", $datenow["mday"]);
1441 $template->setVariable("HOURNOW", $datenow["hours"]);
1442 $template->setVariable("MINUTENOW", $datenow["minutes"]);
1443 $template->setVariable("SECONDNOW", $datenow["seconds"]);
1444 $template->setVariable("PTIME_M", $processing_time_minutes);
1445 $template->setVariable("PTIME_S", $processing_time_seconds);
1446
1447 $this->tpl->setCurrentBlock("HeadContent");
1448 $this->tpl->setVariable("CONTENT_BLOCK", $template->get());
1449 $this->tpl->parseCurrentBlock();
1450 }
const IL_CAL_FKT_GETDATE
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling

References $ilUser, ilDatePresentation\formatDate(), and IL_CAL_FKT_GETDATE.

Referenced by ilTestPlayerDynamicQuestionSetGUI\outCurrentlyFinishedPage(), outQuestionSummaryCmd(), outTestPage(), ilTestPlayerDynamicQuestionSetGUI\showQuestionSelectionCmd(), and ilTestPlayerDynamicQuestionSetGUI\showTrackedQuestionListCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ outQuestionSummaryCmd()

ilTestPlayerAbstractGUI::outQuestionSummaryCmd (   $fullpage = true,
  $contextFinishTest = false,
  $obligationsNotAnswered = false,
  $obligationsFilter = false 
)

Output of a summary of all test questions for test participants.

Definition at line 1455 of file class.ilTestPlayerAbstractGUI.php.

1456 {
1457 if( $fullpage )
1458 {
1459 $this->tpl->addBlockFile($this->getContentBlockName(), "adm_content", "tpl.il_as_tst_question_summary.html", "Modules/Test");
1460 }
1461
1462 if( $obligationsNotAnswered )
1463 {
1464 ilUtil::sendFailure($this->lng->txt('not_all_obligations_answered'));
1465 }
1466
1467 $active_id = $this->testSession->getActiveId();
1468 $result_array = & $this->testSequence->getSequenceSummary($obligationsFilter);
1469
1470 $marked_questions = array();
1471
1472 if( $this->object->getKioskMode() && $fullpage )
1473 {
1474 $head = $this->getKioskHead();
1475 if( strlen($head) )
1476 {
1477 $this->tpl->setCurrentBlock("kiosk_options");
1478 $this->tpl->setVariable("KIOSK_HEAD", $head);
1479 $this->tpl->parseCurrentBlock();
1480 }
1481 }
1482
1483 if( $this->object->getShowMarker() )
1484 {
1485 include_once "./Modules/Test/classes/class.ilObjTest.php";
1486 $marked_questions = ilObjTest::_getSolvedQuestions($active_id);
1487 }
1488
1489 $data = array();
1490
1491 foreach( $result_array as $key => $value )
1492 {
1493 $this->ctrl->setParameter($this, "sequence", $value["sequence"]);
1494
1495 $href = $this->ctrl->getLinkTargetByClass(get_class($this), "gotoQuestion");
1496
1497 $this->tpl->setVariable("VALUE_QUESTION_TITLE", "<a href=\"".$this->ctrl->getLinkTargetByClass(get_class($this), "gotoQuestion")."\">" . $this->object->getQuestionTitle($value["title"]) . "</a>");
1498
1499 $this->ctrl->setParameter($this, "sequence", $_GET["sequence"]);
1500
1501 $description = "";
1502 if( $this->object->getListOfQuestionsDescription() )
1503 {
1504 $description = $value["description"];
1505 }
1506
1507 $points = "";
1508 if( !$this->object->getTitleOutput() )
1509 {
1510 $points = $value["points"]."&nbsp;".$this->lng->txt("points_short");
1511 }
1512
1513 $marked = false;
1514 if( count($marked_questions) )
1515 {
1516 if( array_key_exists($value["qid"], $marked_questions) )
1517 {
1518 $obj = $marked_questions[$value["qid"]];
1519 if( $obj["solved"] == 1 )
1520 {
1521 $marked = true;
1522 }
1523 }
1524 }
1525
1526 array_push($data, array(
1527 'order' => $value["nr"],
1528 'href' => $href,
1529 'title' => $this->object->getQuestionTitle($value["title"]),
1530 'description' => $description,
1531 'worked_through' => ($value["worked_through"]) ? true : false,
1532 'postponed' => ($value["postponed"]) ? $this->lng->txt("postponed") : '',
1533 'points' => $points,
1534 'marked' => $marked,
1535 'sequence' => $value["sequence"],
1536 'obligatory' => $value['obligatory'],
1537 'isAnswered' => $value['isAnswered']
1538 ));
1539 }
1540
1541 $this->ctrl->setParameter($this, "sequence", $_GET["sequence"]);
1542
1543 if( $fullpage )
1544 {
1545 include_once "./Modules/Test/classes/tables/class.ilListOfQuestionsTableGUI.php";
1546 $table_gui = new ilListOfQuestionsTableGUI($this, 'backFromSummary');
1547
1548 $table_gui->setShowPointsEnabled( !$this->object->getTitleOutput() );
1549 $table_gui->setShowMarkerEnabled( $this->object->getShowMarker() );
1550 $table_gui->setObligationsNotAnswered( $obligationsNotAnswered );
1551 $table_gui->setShowObligationsEnabled( $this->object->areObligationsEnabled() );
1552 $table_gui->setObligationsFilterEnabled( $obligationsFilter );
1553
1554 $table_gui->init();
1555
1556 $table_gui->setData($data);
1557
1558 $this->tpl->setVariable('TABLE_LIST_OF_QUESTIONS', $table_gui->getHTML());
1559
1560 if( $this->object->getEnableProcessingTime() )
1561 {
1562 $this->outProcessingTime($active_id);
1563 }
1564 }
1565 else
1566 {
1567 $template = new ilTemplate('tpl.il_as_tst_list_of_questions_short.html', true, true, 'Modules/Test');
1568
1569 foreach( $data as $row )
1570 {
1571 if( strlen($row['description']) )
1572 {
1573 $template->setCurrentBlock('description');
1574 $template->setVariable("DESCRIPTION", $row['description']);
1575 $template->parseCurrentBlock();
1576 }
1577
1578 $active = ($row['sequence'] == $this->sequence) ? ' active' : '';
1579
1580 $template->setCurrentBlock('item');
1581 $template->setVariable('CLASS', ($row['walked_through']) ? ('answered'.$active) : ('unanswered'.$active));
1582 $template->setVariable('ITEM', ilUtil::prepareFormOutput($row['title']));
1583 $template->setVariable('SEQUENCE', $row['sequence']);
1584 $template->parseCurrentBlock();
1585 }
1586
1587 require_once 'Services/UIComponent/Panel/classes/class.ilPanelGUI.php';
1588 $panel = ilPanelGUI::getInstance();
1589 $panel->setHeadingStyle(ilPanelGUI::HEADING_STYLE_SUBHEADING);
1590 $panel->setPanelStyle(ilPanelGUI::PANEL_STYLE_SECONDARY);
1591 $panel->setHeading($this->lng->txt('list_of_questions'));
1592 $panel->setBody($template->get());
1593
1594 $this->tpl->setVariable('LIST_OF_QUESTIONS', $panel->getHTML());
1595 }
1596 }
const PANEL_STYLE_SECONDARY
const HEADING_STYLE_SUBHEADING
static getInstance()
Get instance.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public

References $_GET, $data, $row, $sequence, ilObjTest\_getSolvedQuestions(), getContentBlockName(), ilPanelGUI\getInstance(), getKioskHead(), ilPanelGUI\HEADING_STYLE_SUBHEADING, outProcessingTime(), ilPanelGUI\PANEL_STYLE_SECONDARY, ilUtil\prepareFormOutput(), and ilUtil\sendFailure().

Referenced by outObligationsOnlySummaryCmd(), outQuestionSummaryWithObligationsInfoCmd(), ilTestOutputGUI\redirectQuestionCmd(), and showSideList().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ outQuestionSummaryWithObligationsInfoCmd()

ilTestPlayerAbstractGUI::outQuestionSummaryWithObligationsInfoCmd ( )

Definition at line 1598 of file class.ilTestPlayerAbstractGUI.php.

1599 {
1600 return $this->outQuestionSummaryCmd(true, true, true, false);
1601 }

References outQuestionSummaryCmd().

+ Here is the call graph for this function:

◆ outResultsToplistCmd()

ilTestPlayerAbstractGUI::outResultsToplistCmd ( )

Definition at line 120 of file class.ilTestPlayerAbstractGUI.php.

121 {
122 global $ilCtrl;
123 $ilCtrl->redirectByClass('ilTestToplistGUI', 'outResultsToplist');
124 }
global $ilCtrl
Definition: ilias.php:18

References $ilCtrl.

◆ outTestPage()

ilTestPlayerAbstractGUI::outTestPage (   $directfeedback)

Outputs the question of the active sequence.

Definition at line 1174 of file class.ilTestPlayerAbstractGUI.php.

1175 {
1176 global $rbacsystem, $ilUser;
1177
1178 $this->prepareTestPageOutput();
1179
1180 if (!$rbacsystem->checkAccess("read", $this->object->getRefId()))
1181 {
1182 // only with read access it is possible to run the test
1183 $this->ilias->raiseError($this->lng->txt("cannot_execute_test"),$this->ilias->error_obj->MESSAGE);
1184 }
1185
1186 if ($this->isMaxProcessingTimeReached())
1187 {
1188 $this->maxProcessingTimeReached();
1189 return;
1190 }
1191
1192 if ($this->object->endingTimeReached())
1193 {
1194 $this->endingTimeReached();
1195 return;
1196 }
1197
1198 if ($this->object->getKioskMode())
1199 {
1200 $this->populateKioskHead();
1201 }
1202
1203 $this->tpl->setVariable("TEST_ID", $this->object->getTestId());
1204 $this->tpl->setVariable("LOGIN", $ilUser->getLogin());
1205 $this->tpl->setVariable("SEQ_ID", $this->sequence);
1206 $this->tpl->setVariable("QUEST_ID", $this->testSequence->questions[$this->sequence]);
1207
1208 if ($this->object->getEnableProcessingTime())
1209 {
1210 $this->outProcessingTime($this->testSession->getActiveId());
1211 }
1212
1213 $this->tpl->setVariable("FORM_TIMESTAMP", time());
1214
1215 $this->tpl->setVariable("PAGETITLE", "- " . $this->object->getTitle());
1216
1217 $postpone = ( $this->object->getSequenceSettings() == TEST_POSTPONE );
1218
1219 if ($this->object->isShowExamIdInTestPassEnabled() && !$this->object->getKioskMode())
1220 {
1221 $this->tpl->setCurrentBlock('exam_id_footer');
1222 $this->tpl->setVariable('EXAM_ID_VAL', ilObjTest::lookupExamId(
1223 $this->testSession->getActiveId(), $this->testSession->getPass(), $this->object->getId()
1224 ));
1225 $this->tpl->setVariable('EXAM_ID_TXT', $this->lng->txt('exam_id'));
1226 $this->tpl->parseCurrentBlock();
1227 }
1228
1229 $this->outWorkingForm($this->sequence, $this->object->getTestId(), $postpone, $directfeedback);
1230 }
lookupExamId($active_id, $pass)
outWorkingForm($sequence="", $test_id, $postpone_allowed, $directfeedback=false)
maxProcessingTimeReached()
Outputs a message when the maximum processing time is reached.
const TEST_POSTPONE
redirection script todo: (a better solution should control the processing via a xml file)

References $ilUser, endingTimeReached(), isMaxProcessingTimeReached(), ilObjTest\lookupExamId(), maxProcessingTimeReached(), outProcessingTime(), outWorkingForm(), populateKioskHead(), prepareTestPageOutput(), and TEST_POSTPONE.

Referenced by ilTestOutputGUI\redirectQuestionCmd(), ilTestPlayerDynamicQuestionSetGUI\showInstantResponseCmd(), and ilTestPlayerDynamicQuestionSetGUI\showQuestionCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ outUserListOfAnswerPassesCmd()

ilTestPlayerAbstractGUI::outUserListOfAnswerPassesCmd ( )

Definition at line 1760 of file class.ilTestPlayerAbstractGUI.php.

1761 {
1762 $this->ctrl->redirectByClass(
1763 array('ilRepositoryGUI', 'ilObjTestGUI', 'ilTestEvaluationGUI'), "outUserListOfAnswerPasses"
1764 );
1765 }

◆ outUserResultsOverviewCmd()

ilTestPlayerAbstractGUI::outUserResultsOverviewCmd ( )

Definition at line 1753 of file class.ilTestPlayerAbstractGUI.php.

1754 {
1755 $this->ctrl->redirectByClass(
1756 array('ilRepositoryGUI', 'ilObjTestGUI', 'ilTestEvaluationGUI'), "outUserResultsOverview"
1757 );
1758 }

◆ outWorkingForm()

ilTestPlayerAbstractGUI::outWorkingForm (   $sequence = "",
  $test_id,
  $postpone_allowed,
  $directfeedback = false 
)
abstractprotected

Reimplemented in ilTestOutputGUI, and ilTestPlayerDynamicQuestionSetGUI.

Referenced by outTestPage().

+ Here is the caller graph for this function:

◆ passDetails()

ilTestPlayerAbstractGUI::passDetails ( )

Output of the learners view of an existing test pass.

Output of the learners view of an existing test pass

@access public

Definition at line 1287 of file class.ilTestPlayerAbstractGUI.php.

1288 {
1289 if (array_key_exists("pass", $_GET) && (strlen($_GET["pass"]) > 0))
1290 {
1291 $this->ctrl->saveParameter($this, "pass");
1292 $this->ctrl->saveParameter($this, "active_id");
1293 $this->outTestResults(false, $_GET["pass"]);
1294 }
1295 else
1296 {
1297 $this->outTestResults(false);
1298 }
1299 }

References $_GET.

◆ performCustomRedirect()

ilTestPlayerAbstractGUI::performCustomRedirect ( )
protected

Reimplemented in ilTestOutputGUI.

Definition at line 1976 of file class.ilTestPlayerAbstractGUI.php.

1977 {
1978 return;
1979 }

Referenced by afterTestPassFinishedCmd(), and outIntroductionPageCmd().

+ Here is the caller graph for this function:

◆ performTestPassFinishedTasks()

ilTestPlayerAbstractGUI::performTestPassFinishedTasks (   $finishedPass)
protected

Reimplemented in ilTestPlayerFixedQuestionSetGUI.

Definition at line 946 of file class.ilTestPlayerAbstractGUI.php.

947 {
948 if( !$this->testSession->isSubmitted() )
949 {
950 $this->testSession->setSubmitted(1);
951 $this->testSession->setSubmittedTimestamp(date('Y-m-d H:i:s'));
952 $this->testSession->saveToDb();
953 }
954 }

Referenced by finishTestCmd(), and redirectAfterAutosaveCmd().

+ Here is the caller graph for this function:

◆ populateCancelButtonBlock()

ilTestPlayerAbstractGUI::populateCancelButtonBlock ( )
protected

Definition at line 320 of file class.ilTestPlayerAbstractGUI.php.

321 {
322 $this->tpl->setCurrentBlock('cancel_test');
323 $this->tpl->setVariable('TEXT_CANCELTEST', $this->lng->txt('cancel_test'));
324 $this->ctrl->setParameterByClass(get_class($this), 'cancelTest', 'true');
325 $this->tpl->setVariable('HREF_CANCELTEXT', $this->ctrl->getLinkTargetByClass(get_class($this), 'outIntroductionPage'));
326 $this->ctrl->setParameterByClass(get_class($this), 'cancelTest', null);
327 $this->tpl->parseCurrentBlock();
328 }

Referenced by ilTestPlayerDynamicQuestionSetGUI\outCurrentlyFinishedPage(), ilTestOutputGUI\outWorkingForm(), ilTestPlayerDynamicQuestionSetGUI\outWorkingForm(), and prepareSummaryPage().

+ Here is the caller graph for this function:

◆ populateCharSelector()

ilTestPlayerAbstractGUI::populateCharSelector ( )
protected

Definition at line 474 of file class.ilTestPlayerAbstractGUI.php.

475 {
476 global $ilSetting;
477 if ($ilSetting->get('char_selector_availability') > 0)
478 {
479 require_once 'Services/UIComponent/CharSelector/classes/class.ilCharSelectorGUI.php';
480 $char_selector = ilCharSelectorGUI::_getCurrentGUI($this->object);
481 if ($char_selector->getConfig()->getAvailability() == ilCharSelectorConfig::ENABLED)
482 {
483 $char_selector->addToPage();
484 $this->tpl->setCurrentBlock('char_selector');
485 $this->tpl->setVariable("CHAR_SELECTOR_IMAGE", ilUtil::getImagePath('icon_omega_test.svg','Services/UIComponent/CharSelector'));
486 $this->tpl->setVariable("CHAR_SELECTOR_TEXT", $this->lng->txt('char_selector'));
487 $this->tpl->setVariable("CHAR_SELECTOR_TEMPLATE", $char_selector->getSelectorHtml());
488 $this->tpl->parseCurrentBlock();
489 }
490 }
491 }
static _getCurrentGUI(ilObjTest $a_test_obj=null)
Get the GUI that is used for the currently available selector (other GUI instances may exist for conf...
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)

References $ilSetting, ilCharSelectorGUI\_getCurrentGUI(), ilCharSelectorConfig\ENABLED, and ilUtil\getImagePath().

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateContentStyleBlock()

ilTestPlayerAbstractGUI::populateContentStyleBlock ( )
protected

Definition at line 524 of file class.ilTestPlayerAbstractGUI.php.

525 {
526 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
527 $this->tpl->setCurrentBlock( "ContentStyle" );
528 $this->tpl->setVariable( "LOCATION_CONTENT_STYLESHEET",
530 );
531 $this->tpl->parseCurrentBlock();
532 }

References ilObjStyleSheet\getContentStylePath().

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateGenericFeedbackBlock()

ilTestPlayerAbstractGUI::populateGenericFeedbackBlock (   $question_gui)
protected

Definition at line 444 of file class.ilTestPlayerAbstractGUI.php.

445 {
446 $this->tpl->setCurrentBlock( "answer_feedback" );
447 $this->tpl->setVariable( "ANSWER_FEEDBACK",
448 $question_gui->getAnswerFeedbackOutput( $this->testSession->getActiveId(),
449 NULL
450 )
451 );
452 $this->tpl->parseCurrentBlock();
453 }

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the caller graph for this function:

◆ populateKioskHead()

ilTestPlayerAbstractGUI::populateKioskHead ( )
protected

Definition at line 1923 of file class.ilTestPlayerAbstractGUI.php.

1924 {
1925 ilUtil::sendInfo(); // ???
1926
1927 $head = $this->getKioskHead();
1928
1929 if (strlen($head))
1930 {
1931 $this->tpl->setCurrentBlock("kiosk_options");
1932 $this->tpl->setVariable("KIOSK_HEAD", $head);
1933 $this->tpl->parseCurrentBlock();
1934 }
1935 }

References getKioskHead(), and ilUtil\sendInfo().

Referenced by ilTestPlayerDynamicQuestionSetGUI\outCurrentlyFinishedPage(), outTestPage(), and prepareSummaryPage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateLowerNextButtonBlockLeadingToEndOfTest()

ilTestPlayerAbstractGUI::populateLowerNextButtonBlockLeadingToEndOfTest ( )
protected

Definition at line 262 of file class.ilTestPlayerAbstractGUI.php.

263 {
264 $button = ilSubmitButton::getInstance();
265 $button->setPrimary( true );
266 $button->setCommand( 'nextQuestion' );
267 $button->setCaption( 'save_finish' );
268 $button->setId( 'bottomnextbutton' );
269
270 $this->tpl->setCurrentBlock( "next_bottom" );
271 $this->tpl->setVariable( "BTN_NEXT", $button->render());
272 $this->tpl->parseCurrentBlock();
273 }
static getInstance()
Factory.

References ilSubmitButton\getInstance().

Referenced by populateNextButtonsLeadingToEndOfTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateLowerNextButtonBlockLeadingToQuestion()

ilTestPlayerAbstractGUI::populateLowerNextButtonBlockLeadingToQuestion ( )
protected

Definition at line 230 of file class.ilTestPlayerAbstractGUI.php.

231 {
232 $button = ilSubmitButton::getInstance();
233 $button->setPrimary( true );
234 $button->setCommand( 'nextQuestion' );
235 $button->setCaption( 'save_next' );
236 $button->setId( 'bottomnextbutton' );
237
238 $this->tpl->setCurrentBlock( "next_bottom" );
239 $this->tpl->setVariable( "BTN_NEXT", $button->render());
240 $this->tpl->parseCurrentBlock();
241 }

References ilSubmitButton\getInstance().

Referenced by populateNextButtonsLeadingToQuestion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateLowerNextButtonBlockLeadingToSummary()

ilTestPlayerAbstractGUI::populateLowerNextButtonBlockLeadingToSummary ( )
protected

Definition at line 294 of file class.ilTestPlayerAbstractGUI.php.

295 {
296 $button = ilSubmitButton::getInstance();
297 $button->setPrimary( true );
298 $button->setCommand( 'nextQuestion' );
299 $button->setCaption( 'question_summary' );
300 $button->setId( 'bottomnextbutton' );
301
302 $this->tpl->setCurrentBlock( "next_bottom" );
303 $this->tpl->setVariable( "BTN_NEXT", $button->render());
304 $this->tpl->parseCurrentBlock();
305 }

References ilSubmitButton\getInstance().

Referenced by populateNextButtonsLeadingToSummary().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateLowerPostponeButtonBlock()

ilTestPlayerAbstractGUI::populateLowerPostponeButtonBlock ( )
protected

Definition at line 380 of file class.ilTestPlayerAbstractGUI.php.

381 {
382 $this->tpl->setCurrentBlock( "postpone_bottom" );
383 $this->tpl->setVariable( "CMD_POSTPONE", 'postponeQuestion' );
384 $this->tpl->setVariable( "BTN_POSTPONE", $this->lng->txt( "postpone" ) );
385 $this->tpl->parseCurrentBlock();
386 }

Referenced by populatePostponeButtons().

+ Here is the caller graph for this function:

◆ populateLowerPreviousButtonBlock()

ilTestPlayerAbstractGUI::populateLowerPreviousButtonBlock (   $cmd,
  $label 
)
protected

Definition at line 416 of file class.ilTestPlayerAbstractGUI.php.

417 {
418 $this->tpl->setCurrentBlock( "prev_bottom" );
419 $this->tpl->setVariable("CMD_PREV", $cmd);
420 $this->tpl->setVariable("BTN_PREV", $label);
421 $this->tpl->parseCurrentBlock();
422 }
$cmd
Definition: sahs_server.php:35

References $cmd.

Referenced by ilTestPlayerDynamicQuestionSetGUI\populatePreviousButtons(), populatePreviousButtonsLeadingToIntroduction(), and populatePreviousButtonsLeadingToQuestion().

+ Here is the caller graph for this function:

◆ populateLowerQuestionSelectionButtonBlock()

ilTestPlayerAbstractGUI::populateLowerQuestionSelectionButtonBlock ( )
protected

Definition at line 358 of file class.ilTestPlayerAbstractGUI.php.

359 {
360 $this->tpl->setCurrentBlock( "summary_bottom" );
361 $this->tpl->setVariable( "CMD_SUMMARY", 'showQuestionSelection' );
362 $this->tpl->setVariable( "BTN_SUMMARY", $this->lng->txt( "tst_change_dyn_test_question_selection" ) );
363 $this->tpl->parseCurrentBlock();
364 }

Referenced by populateQuestionSelectionButtons().

+ Here is the caller graph for this function:

◆ populateLowerSummaryButtonBlock()

ilTestPlayerAbstractGUI::populateLowerSummaryButtonBlock ( )
protected

Definition at line 336 of file class.ilTestPlayerAbstractGUI.php.

337 {
338 $this->tpl->setCurrentBlock( "summary_bottom" );
339 $this->tpl->setVariable( "CMD_SUMMARY", 'showQuestionList' );
340 $this->tpl->setVariable( "BTN_SUMMARY", $this->lng->txt( "question_summary" ) );
341 $this->tpl->parseCurrentBlock();
342 }

Referenced by populateSummaryButtons().

+ Here is the caller graph for this function:

◆ populateNextButtonsLeadingToEndOfTest()

ilTestPlayerAbstractGUI::populateNextButtonsLeadingToEndOfTest ( )
protected

◆ populateNextButtonsLeadingToQuestion()

ilTestPlayerAbstractGUI::populateNextButtonsLeadingToQuestion ( )
protected

◆ populateNextButtonsLeadingToSummary()

ilTestPlayerAbstractGUI::populateNextButtonsLeadingToSummary ( )
protected

◆ populatePostponeButtons()

ilTestPlayerAbstractGUI::populatePostponeButtons ( )
protected

Definition at line 374 of file class.ilTestPlayerAbstractGUI.php.

References populateLowerPostponeButtonBlock(), and populateUpperPostponeButtonBlock().

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populatePreviousButtons()

ilTestPlayerAbstractGUI::populatePreviousButtons (   $sequence)
protected

Reimplemented in ilTestPlayerDynamicQuestionSetGUI.

Definition at line 194 of file class.ilTestPlayerAbstractGUI.php.

195 {
196 if ($this->isFirstPageInSequence( $sequence ))
197 {
199 }
200 else
201 {
203 }
204 }
isFirstPageInSequence($sequence)

References isFirstPageInSequence(), populatePreviousButtonsLeadingToIntroduction(), and populatePreviousButtonsLeadingToQuestion().

Referenced by ilTestOutputGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populatePreviousButtonsLeadingToIntroduction()

ilTestPlayerAbstractGUI::populatePreviousButtonsLeadingToIntroduction ( )
protected

Definition at line 406 of file class.ilTestPlayerAbstractGUI.php.

407 {
409 'previousQuestion', $this->getIntroductionPageButtonLabel()
410 );
412 'previousQuestion', $this->getIntroductionPageButtonLabel()
413 );
414 }

References getIntroductionPageButtonLabel(), populateLowerPreviousButtonBlock(), and populateUpperPreviousButtonBlock().

Referenced by populatePreviousButtons().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populatePreviousButtonsLeadingToQuestion()

ilTestPlayerAbstractGUI::populatePreviousButtonsLeadingToQuestion ( )
protected

Definition at line 396 of file class.ilTestPlayerAbstractGUI.php.

397 {
399 'previousQuestion', $this->lng->txt( "save_previous" )
400 );
402 'previousQuestion', $this->lng->txt( "save_previous" )
403 );
404 }

References populateLowerPreviousButtonBlock(), and populateUpperPreviousButtonBlock().

Referenced by populatePreviousButtons().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateQuestionMarkingBlockAsMarked()

ilTestPlayerAbstractGUI::populateQuestionMarkingBlockAsMarked ( )
protected

Definition at line 215 of file class.ilTestPlayerAbstractGUI.php.

216 {
217 $this->tpl->setCurrentBlock( "ismarked" );
218 $this->tpl->setVariable( "CMD_MARKED", 'unmarkQuestion' );
219 $this->tpl->setVariable( "IMAGE_MARKED", ilUtil::getImagePath( "marked.svg" ) );
220 $this->tpl->setVariable( "TEXT_MARKED", $this->lng->txt( "tst_remove_mark" ) );
221 $this->tpl->parseCurrentBlock();
222 }

References ilUtil\getImagePath().

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateQuestionMarkingBlockAsUnmarked()

ilTestPlayerAbstractGUI::populateQuestionMarkingBlockAsUnmarked ( )
protected

Definition at line 206 of file class.ilTestPlayerAbstractGUI.php.

207 {
208 $this->tpl->setCurrentBlock( "isnotmarked" );
209 $this->tpl->setVariable( "CMD_UNMARKED", 'markQuestion' );
210 $this->tpl->setVariable( "IMAGE_UNMARKED", ilUtil::getImagePath( "marked_.svg" ) );
211 $this->tpl->setVariable( "TEXT_UNMARKED", $this->lng->txt( "tst_question_mark" ) );
212 $this->tpl->parseCurrentBlock();
213 }

References ilUtil\getImagePath().

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateQuestionSelectionButtons()

ilTestPlayerAbstractGUI::populateQuestionSelectionButtons ( )
protected

◆ populateScoreBlock()

ilTestPlayerAbstractGUI::populateScoreBlock (   $reachedPoints,
  $maxPoints 
)
protected

Definition at line 455 of file class.ilTestPlayerAbstractGUI.php.

456 {
457 $scoreInformation = sprintf(
458 $this->lng->txt( "you_received_a_of_b_points" ), $reachedPoints, $maxPoints
459 );
460
461 $this->tpl->setCurrentBlock( "received_points_information" );
462 $this->tpl->setVariable("RECEIVED_POINTS_INFORMATION", $scoreInformation);
463 $this->tpl->parseCurrentBlock();
464 }

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the caller graph for this function:

◆ populateSolutionBlock()

ilTestPlayerAbstractGUI::populateSolutionBlock (   $solutionoutput)
protected

Definition at line 466 of file class.ilTestPlayerAbstractGUI.php.

467 {
468 $this->tpl->setCurrentBlock( "solution_output" );
469 $this->tpl->setVariable( "CORRECT_SOLUTION", $this->lng->txt( "tst_best_solution_is" ) );
470 $this->tpl->setVariable( "QUESTION_FEEDBACK", $solutionoutput );
471 $this->tpl->parseCurrentBlock();
472 }

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the caller graph for this function:

◆ populateSpecificFeedbackBlock()

ilTestPlayerAbstractGUI::populateSpecificFeedbackBlock (   $question_gui)
protected

Definition at line 432 of file class.ilTestPlayerAbstractGUI.php.

433 {
434 $this->tpl->setCurrentBlock( "specific_feedback" );
435 $this->tpl->setVariable( "SPECIFIC_FEEDBACK",
436 $question_gui->getSpecificFeedbackOutput(
437 $this->testSession->getActiveId(),
438 NULL
439 )
440 );
441 $this->tpl->parseCurrentBlock();
442 }

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the caller graph for this function:

◆ populateSummaryButtons()

ilTestPlayerAbstractGUI::populateSummaryButtons ( )
protected

Definition at line 330 of file class.ilTestPlayerAbstractGUI.php.

References populateLowerSummaryButtonBlock(), and populateUpperSummaryButtonBlock().

Referenced by ilTestOutputGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateSyntaxStyleBlock()

ilTestPlayerAbstractGUI::populateSyntaxStyleBlock ( )
protected

Definition at line 515 of file class.ilTestPlayerAbstractGUI.php.

516 {
517 $this->tpl->setCurrentBlock( "SyntaxStyle" );
518 $this->tpl->setVariable( "LOCATION_SYNTAX_STYLESHEET",
520 );
521 $this->tpl->parseCurrentBlock();
522 }

References ilObjStyleSheet\getSyntaxStylePath().

Referenced by ilTestOutputGUI\outWorkingForm(), and ilTestPlayerDynamicQuestionSetGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateUpperNextButtonBlockLeadingToEndOfTest()

ilTestPlayerAbstractGUI::populateUpperNextButtonBlockLeadingToEndOfTest ( )
protected

Definition at line 275 of file class.ilTestPlayerAbstractGUI.php.

276 {
277 $button = ilSubmitButton::getInstance();
278 $button->setPrimary( true );
279 $button->setCommand( 'nextQuestion' );
280 $button->setCaption( 'save_finish' );
281 $button->setId( 'nextbutton' );
282
283 $this->tpl->setCurrentBlock( "next" );
284 $this->tpl->setVariable( "BTN_NEXT", $button->render());
285 $this->tpl->parseCurrentBlock();
286 }

References ilSubmitButton\getInstance().

Referenced by populateNextButtonsLeadingToEndOfTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateUpperNextButtonBlockLeadingToQuestion()

ilTestPlayerAbstractGUI::populateUpperNextButtonBlockLeadingToQuestion ( )
protected

Definition at line 243 of file class.ilTestPlayerAbstractGUI.php.

244 {
245 $button = ilSubmitButton::getInstance();
246 $button->setPrimary( true );
247 $button->setCommand( 'nextQuestion' );
248 $button->setCaption( 'save_next' );
249 $button->setId( 'nextbutton' );
250
251 $this->tpl->setCurrentBlock( "next" );
252 $this->tpl->setVariable( "BTN_NEXT", $button->render());
253 $this->tpl->parseCurrentBlock();
254 }

References ilSubmitButton\getInstance().

Referenced by populateNextButtonsLeadingToQuestion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateUpperNextButtonBlockLeadingToSummary()

ilTestPlayerAbstractGUI::populateUpperNextButtonBlockLeadingToSummary ( )
protected

Definition at line 307 of file class.ilTestPlayerAbstractGUI.php.

308 {
309 $button = ilSubmitButton::getInstance();
310 $button->setPrimary( true );
311 $button->setCommand( 'nextQuestion' );
312 $button->setCaption( 'question_summary' );
313 $button->setId( 'nextbutton' );
314
315 $this->tpl->setCurrentBlock( "next" );
316 $this->tpl->setVariable( "BTN_NEXT", $button->render());
317 $this->tpl->parseCurrentBlock();
318 }

References ilSubmitButton\getInstance().

Referenced by populateNextButtonsLeadingToSummary().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateUpperPostponeButtonBlock()

ilTestPlayerAbstractGUI::populateUpperPostponeButtonBlock ( )
protected

Definition at line 388 of file class.ilTestPlayerAbstractGUI.php.

389 {
390 $this->tpl->setCurrentBlock( "postpone" );
391 $this->tpl->setVariable( "CMD_POSTPONE", 'postponeQuestion' );
392 $this->tpl->setVariable( "BTN_POSTPONE", $this->lng->txt( "postpone" ) );
393 $this->tpl->parseCurrentBlock();
394 }

Referenced by populatePostponeButtons().

+ Here is the caller graph for this function:

◆ populateUpperPreviousButtonBlock()

ilTestPlayerAbstractGUI::populateUpperPreviousButtonBlock (   $cmd,
  $label 
)
protected

Definition at line 424 of file class.ilTestPlayerAbstractGUI.php.

425 {
426 $this->tpl->setCurrentBlock( "prev" );
427 $this->tpl->setVariable("CMD_PREV", $cmd);
428 $this->tpl->setVariable("BTN_PREV", $label);
429 $this->tpl->parseCurrentBlock();
430 }

References $cmd.

Referenced by ilTestPlayerDynamicQuestionSetGUI\populatePreviousButtons(), populatePreviousButtonsLeadingToIntroduction(), and populatePreviousButtonsLeadingToQuestion().

+ Here is the caller graph for this function:

◆ populateUpperQuestionSelectionButtonBlock()

ilTestPlayerAbstractGUI::populateUpperQuestionSelectionButtonBlock ( )
protected

Definition at line 366 of file class.ilTestPlayerAbstractGUI.php.

367 {
368 $this->tpl->setCurrentBlock( "summary" );
369 $this->tpl->setVariable( "CMD_SUMMARY", 'showQuestionSelection' );
370 $this->tpl->setVariable( "BTN_SUMMARY", $this->lng->txt( "tst_change_dyn_test_question_selection" ) );
371 $this->tpl->parseCurrentBlock();
372 }

Referenced by populateQuestionSelectionButtons().

+ Here is the caller graph for this function:

◆ populateUpperSummaryButtonBlock()

ilTestPlayerAbstractGUI::populateUpperSummaryButtonBlock ( )
protected

Definition at line 344 of file class.ilTestPlayerAbstractGUI.php.

345 {
346 $this->tpl->setCurrentBlock( "summary" );
347 $this->tpl->setVariable( "CMD_SUMMARY", 'showQuestionList' );
348 $this->tpl->setVariable( "BTN_SUMMARY", $this->lng->txt( "question_summary" ) );
349 $this->tpl->parseCurrentBlock();
350 }

Referenced by populateSummaryButtons().

+ Here is the caller graph for this function:

◆ postponeQuestionCmd()

ilTestPlayerAbstractGUI::postponeQuestionCmd ( )
abstractprotected

◆ prepareSummaryPage()

ilTestPlayerAbstractGUI::prepareSummaryPage ( )
protected

Definition at line 1899 of file class.ilTestPlayerAbstractGUI.php.

1900 {
1901 $this->tpl->addBlockFile(
1902 $this->getContentBlockName(), 'adm_content', 'tpl.il_as_tst_question_summary.html', 'Modules/Test'
1903 );
1904
1905 if ($this->object->getShowCancel())
1906 {
1908 }
1909
1910 if ($this->object->getKioskMode())
1911 {
1912 $this->populateKioskHead();
1913 }
1914 }

References getContentBlockName(), populateCancelButtonBlock(), and populateKioskHead().

Referenced by ilTestPlayerDynamicQuestionSetGUI\showQuestionSelectionCmd(), and ilTestPlayerDynamicQuestionSetGUI\showTrackedQuestionListCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ prepareTestPageOutput()

ilTestPlayerAbstractGUI::prepareTestPageOutput ( )
protected

Definition at line 1916 of file class.ilTestPlayerAbstractGUI.php.

1917 {
1918 $this->tpl->addBlockFile(
1919 $this->getContentBlockName(), 'adm_content', 'tpl.il_as_tst_output.html', 'Modules/Test'
1920 );
1921 }

References getContentBlockName().

Referenced by ilTestPlayerDynamicQuestionSetGUI\outCurrentlyFinishedPage(), and outTestPage().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ previousQuestionCmd()

ilTestPlayerAbstractGUI::previousQuestionCmd ( )
abstractprotected

◆ redirectAfterAutosaveCmd()

ilTestPlayerAbstractGUI::redirectAfterAutosaveCmd ( )

Definition at line 705 of file class.ilTestPlayerAbstractGUI.php.

706 {
707 $active_id = $this->testSession->getActiveId();
708 $actualpass = $this->object->_getPass($active_id);
709
710 $this->performTestPassFinishedTasks($actualpass);
711
712 $this->testSession->setLastFinishedPass($this->testSession->getPass());
713 $this->testSession->increaseTestPass();
714
715 $this->tpl->addBlockFile($this->getContentBlockName(), "adm_content", "tpl.il_as_tst_redirect_autosave.html", "Modules/Test");
716 $this->tpl->setVariable("TEXT_REDIRECT", $this->lng->txt("redirectAfterSave"));
717 $this->tpl->setCurrentBlock("HeadContent");
718 $this->tpl->setVariable("CONTENT_BLOCK", "<meta http-equiv=\"refresh\" content=\"5; url=" . $this->ctrl->getLinkTarget($this, "afterTestPassFinished") . "\">");
719 $this->tpl->parseCurrentBlock();
720 }

References getContentBlockName(), and performTestPassFinishedTasks().

+ Here is the call graph for this function:

◆ redirectBackCmd()

ilTestPlayerAbstractGUI::redirectBackCmd ( )

Definition at line 1111 of file class.ilTestPlayerAbstractGUI.php.

1112 {
1113 if(!$this->object->canViewResults())
1114 {
1115 $this->outIntroductionPageCmd();
1116 }
1117 else
1118 {
1119 $this->ctrl->redirectByClass("ilTestEvaluationGUI", "outUserResultsOverview");
1120 }
1121 }
outIntroductionPageCmd()
Creates the introduction page for a test.

References outIntroductionPageCmd().

Referenced by afterTestPassFinishedCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resumePlayerCmd()

ilTestPlayerAbstractGUI::resumePlayerCmd ( )
protected

Resume a test at the last position.

Reimplemented in ilTestPlayerDynamicQuestionSetGUI.

Definition at line 597 of file class.ilTestPlayerAbstractGUI.php.

598 {
599 $this->handleUserSettings();
600
601 $this->ctrl->setParameter($this, "activecommand", "resume");
602 $this->ctrl->redirect($this, "redirectQuestion");
603 }
handleUserSettings()
Handles some form parameters on starting and resuming a test.

References handleUserSettings().

+ Here is the call graph for this function:

◆ saveQuestionSolution()

ilTestPlayerAbstractGUI::saveQuestionSolution (   $force = FALSE)
abstract

saves the user input of a question

Reimplemented in ilTestOutputGUI, and ilTestPlayerDynamicQuestionSetGUI.

Referenced by autosaveCmd(), confirmHintRequestCmd(), gotoQuestionCmd(), markQuestionCmd(), showRequestedHintListCmd(), togglesidelistCmd(), and unmarkQuestionCmd().

+ Here is the caller graph for this function:

◆ saveTagsCmd()

ilTestPlayerAbstractGUI::saveTagsCmd ( )

Save tags for tagging gui.

Needed this function here because the test info page uses another class to send its form results

Definition at line 111 of file class.ilTestPlayerAbstractGUI.php.

112 {
113 include_once("./Services/Tagging/classes/class.ilTaggingGUI.php");
114 $tagging_gui = new ilTaggingGUI();
115 $tagging_gui->setObject($this->object->getId(), $this->object->getType());
116 $tagging_gui->saveInput();
117 $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
118 }
Class ilTaggingGUI.

◆ setAnonymousIdCmd()

ilTestPlayerAbstractGUI::setAnonymousIdCmd ( )

Sets a session variable with the test access code for an anonymous test user.

Sets a session variable with the test access code for an anonymous test user

Definition at line 539 of file class.ilTestPlayerAbstractGUI.php.

540 {
541 if( $this->testSession->isAnonymousUser() )
542 {
543 $this->testSession->setAccessCodeToSession($_POST['anonymous_id']);
544 }
545
546 $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
547 }

References $_POST.

◆ showFinalStatementCmd()

ilTestPlayerAbstractGUI::showFinalStatementCmd ( )

Definition at line 1126 of file class.ilTestPlayerAbstractGUI.php.

1127 {
1128 $template = new ilTemplate("tpl.il_as_tst_final_statement.html", TRUE, TRUE, "Modules/Test");
1129 $this->ctrl->setParameter($this, "skipfinalstatement", 1);
1130 $template->setVariable("FORMACTION", $this->ctrl->getFormAction($this, "afterTestPassFinished"));
1131 $template->setVariable("FINALSTATEMENT", $this->object->prepareTextareaOutput($this->object->getFinalStatement(), true));
1132 $template->setVariable("BUTTON_CONTINUE", $this->lng->txt("btn_next"));
1133 $this->tpl->setVariable($this->getContentBlockName(), $template->get());
1134 }

References getContentBlockName().

+ Here is the call graph for this function:

◆ showInstantResponseCmd()

ilTestPlayerAbstractGUI::showInstantResponseCmd ( )
abstractprotected

◆ showListOfAnswers()

ilTestPlayerAbstractGUI::showListOfAnswers (   $active_id,
  $pass = NULL,
  $top_data = "",
  $bottom_data = "" 
)

Creates an output of the list of answers for a test participant during the test (only the actual pass will be shown)

Parameters
integer$active_idActive id of the participant
integer$passTest pass of the participant
boolean$testnavigationDeceides wheather to show a navigation for tests or not @access public

Definition at line 1667 of file class.ilTestPlayerAbstractGUI.php.

1668 {
1669 global $ilUser;
1670
1671 $this->tpl->addBlockFile($this->getContentBlockName(), "adm_content", "tpl.il_as_tst_finish_list_of_answers.html", "Modules/Test");
1672
1673 $result_array =& $this->object->getTestResult($active_id, $pass);
1674
1675 $counter = 1;
1676 // output of questions with solutions
1677 foreach ($result_array as $question_data)
1678 {
1679 $question = $question_data["qid"];
1680 if (is_numeric($question))
1681 {
1682 $this->tpl->setCurrentBlock("printview_question");
1683 $question_gui = $this->object->createQuestionGUI("", $question);
1684 $template = new ilTemplate("tpl.il_as_qpl_question_printview.html", TRUE, TRUE, "Modules/TestQuestionPool");
1685 $template->setVariable("COUNTER_QUESTION", $counter.". ");
1686 $template->setVariable("QUESTION_TITLE", $question_gui->object->getTitle());
1687
1688 $show_question_only = ($this->object->getShowSolutionAnswersOnly()) ? TRUE : FALSE;
1689 $result_output = $question_gui->getSolutionOutput($active_id, $pass, FALSE, FALSE, $show_question_only, $this->object->getShowSolutionFeedback());
1690 $template->setVariable("SOLUTION_OUTPUT", $result_output);
1691 $this->tpl->setVariable("QUESTION_OUTPUT", $template->get());
1692 $this->tpl->parseCurrentBlock();
1693 $counter ++;
1694 }
1695 }
1696
1697 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print");
1698 if ($this->object->getShowSolutionAnswersOnly())
1699 {
1700 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print");
1701 }
1702 if (strlen($top_data))
1703 {
1704 $this->tpl->setCurrentBlock("top_data");
1705 $this->tpl->setVariable("TOP_DATA", $top_data);
1706 $this->tpl->parseCurrentBlock();
1707 }
1708
1709 if (strlen($bottom_data))
1710 {
1711 $this->tpl->setCurrentBlock("bottom_data");
1712 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
1713 $this->tpl->setVariable("BOTTOM_DATA", $bottom_data);
1714 $this->tpl->parseCurrentBlock();
1715 }
1716
1717 $this->tpl->setCurrentBlock("adm_content");
1718 $this->tpl->setVariable("TXT_ANSWER_SHEET", $this->lng->txt("tst_list_of_answers"));
1719 $user_data = $this->getResultsUserdata($this->testSession, $active_id, TRUE);
1720 $signature = $this->getResultsSignature();
1721 $this->tpl->setVariable("USER_DETAILS", $user_data);
1722 $this->tpl->setVariable("SIGNATURE", $signature);
1723 $this->tpl->setVariable("TITLE", $this->object->getTitle());
1724 $this->tpl->setVariable("TXT_TEST_PROLOG", $this->lng->txt("tst_your_answers"));
1725 $invited_user =& $this->object->getInvitedUsers($ilUser->getId());
1726 $pagetitle = $this->object->getTitle() . " - " . $this->lng->txt("clientip") .
1727 ": " . $invited_user[$ilUser->getId()]["clientip"] . " - " .
1728 $this->lng->txt("matriculation") . ": " .
1729 $invited_user[$ilUser->getId()]["matriculation"];
1730 $this->tpl->setVariable("PAGETITLE", $pagetitle);
1731 $this->tpl->parseCurrentBlock();
1732 }
getResultsSignature()
Returns HTML code for a signature field.
getResultsUserdata($testSession, $active_id, $overwrite_anonymity=FALSE)
Returns the user data for a test results output.

References $ilUser, $pass, getContentBlockName(), ilTestServiceGUI\getResultsSignature(), ilTestServiceGUI\getResultsUserdata(), and ilUtil\getStyleSheetLocation().

+ Here is the call graph for this function:

◆ showMaximumAllowedUsersReachedMessage()

ilTestPlayerAbstractGUI::showMaximumAllowedUsersReachedMessage ( )

Definition at line 1608 of file class.ilTestPlayerAbstractGUI.php.

1609 {
1610 $this->tpl->addBlockFile($this->getContentBlockName(), "adm_content", "tpl.il_as_tst_max_allowed_users_reached.html", "Modules/Test");
1611 $this->tpl->setCurrentBlock("adm_content");
1612 $this->tpl->setVariable("MAX_ALLOWED_USERS_MESSAGE", sprintf($this->lng->txt("tst_max_allowed_users_message"), $this->object->getAllowedUsersTimeGap()));
1613 $this->tpl->setVariable("MAX_ALLOWED_USERS_HEADING", sprintf($this->lng->txt("tst_max_allowed_users_heading"), $this->object->getAllowedUsersTimeGap()));
1614 $this->tpl->setVariable("BACK_TO_INTRODUCTION", $this->lng->txt("tst_results_back_introduction"));
1615 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
1616 $this->tpl->parseCurrentBlock();
1617 }

References getContentBlockName().

Referenced by initTestCmd(), and ilTestPlayerDynamicQuestionSetGUI\resumePlayerCmd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ showRequestedHintListCmd()

ilTestPlayerAbstractGUI::showRequestedHintListCmd ( )
protected

Go to requested hint list.

Definition at line 1770 of file class.ilTestPlayerAbstractGUI.php.

1771 {
1772 $this->saveQuestionSolution();
1773
1774 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionHintRequestGUI.php';
1775 $this->ctrl->redirectByClass('ilAssQuestionHintRequestGUI', ilAssQuestionHintRequestGUI::CMD_SHOW_LIST);
1776 }

References ilAssQuestionHintRequestGUI\CMD_SHOW_LIST, and saveQuestionSolution().

+ Here is the call graph for this function:

◆ showSideList()

ilTestPlayerAbstractGUI::showSideList ( )
protected

Definition at line 493 of file class.ilTestPlayerAbstractGUI.php.

494 {
495 global $ilUser;
496
497 $show_side_list = $ilUser->getPref('side_list_of_questions');
498 $this->tpl->setCurrentBlock('view_sidelist');
499 $this->tpl->setVariable('IMAGE_SIDELIST',
500 ($show_side_list) ? ilUtil::getImagePath('view_remove.png'
501 ) : ilUtil::getImagePath('view_choose.png')
502 );
503 $this->tpl->setVariable('TEXT_SIDELIST',
504 ($show_side_list) ? $this->lng->txt('tst_hide_side_list'
505 ) : $this->lng->txt('tst_show_side_list')
506 );
507 $this->tpl->parseCurrentBlock();
508 if($show_side_list)
509 {
510 $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "ta_split.css", "Modules/Test"), "screen");
511 $this->outQuestionSummaryCmd(false);
512 }
513 }

References $ilUser, ilUtil\getImagePath(), ilUtil\getStyleSheetLocation(), and outQuestionSummaryCmd().

Referenced by ilTestOutputGUI\outWorkingForm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ startPlayerCmd()

ilTestPlayerAbstractGUI::startPlayerCmd ( )
protected

Start a test for the first time.

Start a test for the first time. This method contains a lock to prevent multiple submissions by the start test button

Definition at line 555 of file class.ilTestPlayerAbstractGUI.php.

556 {
557 $testStartLock = $this->getLockParameter();
558 $isFirstTestStartRequest = false;
559
560 $this->processLocker->requestTestStartLockCheckLock();
561
562 if( $this->testSession->lookupTestStartLock() != $testStartLock )
563 {
564 $this->testSession->persistTestStartLock($testStartLock);
565 $isFirstTestStartRequest = true;
566 }
567
568 $this->processLocker->releaseTestStartLockCheckLock();
569
570 if( $isFirstTestStartRequest )
571 {
572 $this->handleUserSettings();
573 $this->ctrl->redirect($this, "initTest");
574 }
575
576 $this->ctrl->setParameterByClass('ilObjTestGUI', 'lock', $testStartLock);
577 $this->ctrl->redirectByClass("ilobjtestgui", "redirectToInfoScreen");
578 }

References getLockParameter(), and handleUserSettings().

+ Here is the call graph for this function:

◆ togglesidelistCmd()

ilTestPlayerAbstractGUI::togglesidelistCmd ( )

Toggle side list.

Definition at line 758 of file class.ilTestPlayerAbstractGUI.php.

759 {
760 global $ilUser;
761
762 $show_side_list = $ilUser->getPref('side_list_of_questions');
763 $ilUser->writePref('side_list_of_questions', !$show_side_list);
764 $this->saveQuestionSolution();
765 $this->ctrl->redirect($this, "redirectQuestion");
766 }

References $ilUser, and saveQuestionSolution().

+ Here is the call graph for this function:

◆ unmarkQuestionCmd()

ilTestPlayerAbstractGUI::unmarkQuestionCmd ( )
protected

Set a question unsolved.

Reimplemented in ilTestPlayerDynamicQuestionSetGUI.

Definition at line 781 of file class.ilTestPlayerAbstractGUI.php.

782 {
783 $this->saveQuestionSolution();
784 $this->ctrl->setParameter($this, "activecommand", "resetmarked");
785 $this->ctrl->redirect($this, "redirectQuestion");
786 }

References saveQuestionSolution().

+ Here is the call graph for this function:

◆ updateWorkingTime()

Field Documentation

◆ $cmdCtrl

ilTestPlayerAbstractGUI::$cmdCtrl

Definition at line 30 of file class.ilTestPlayerAbstractGUI.php.

◆ $endingTimeReached

ilTestPlayerAbstractGUI::$endingTimeReached

Definition at line 32 of file class.ilTestPlayerAbstractGUI.php.

◆ $maxProcessingTimeReached

ilTestPlayerAbstractGUI::$maxProcessingTimeReached

Definition at line 31 of file class.ilTestPlayerAbstractGUI.php.

◆ $passwordChecker

ilTestPlayerAbstractGUI::$passwordChecker
protected

Definition at line 37 of file class.ilTestPlayerAbstractGUI.php.

◆ $processLocker

ilTestPlayerAbstractGUI::$processLocker
protected

Definition at line 42 of file class.ilTestPlayerAbstractGUI.php.

◆ $ref_id

ilTestPlayerAbstractGUI::$ref_id

Definition at line 27 of file class.ilTestPlayerAbstractGUI.php.

◆ $saveResult

ilTestPlayerAbstractGUI::$saveResult

◆ $sequence

◆ $testSession


The documentation for this class was generated from the following file: