ILIAS  release_8 Revision v8.24
class.ilTestEvalObjectiveOrientedGUI.php
Go to the documentation of this file.
1<?php
2
29{
30 public function executeCommand()
31 {
32 $this->ctrl->saveParameter($this, "active_id");
33
34 switch ($this->ctrl->getNextClass($this)) {
35 case 'ilassquestionpagegui':
36 require_once 'Modules/Test/classes/class.ilAssQuestionPageCommandForwarder.php';
37 $forwarder = new ilAssQuestionPageCommandForwarder();
38 $forwarder->setTestObj($this->object);
39 $forwarder->forward();
40 break;
41
42 default:
43 $cmd = $this->ctrl->getCmd('showVirtualPass') . 'Cmd';
44 $this->$cmd();
45 }
46 }
47
49 {
50 $tableGUI = $this->buildPassDetailsOverviewTableGUI($this, 'showVirtualPass');
51 $tableGUI->initFilter();
52 $tableGUI->resetOffset();
53 $tableGUI->writeFilterToSession();
54 $this->showVirtualPassCmd();
55 }
56
58 {
59 $tableGUI = $this->buildPassDetailsOverviewTableGUI($this, 'showVirtualPass');
60 $tableGUI->initFilter();
61 $tableGUI->resetOffset();
62 $tableGUI->resetFilter();
63 $this->showVirtualPassCmd();
64 }
65
66 private function showVirtualPassCmd()
67 {
68 $testSession = $this->testSessionFactory->getSession();
69
70 if (!$this->object->getShowPassDetails()) {
71 $executable = $this->object->isExecutable($testSession, $testSession->getUserId());
72
73 if ($executable["executable"]) {
74 $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen");
75 }
76 }
77
78 // prepare generation before contents are processed (for mathjax)
79 if ($this->isPdfDeliveryRequest()) {
81 }
82
83 $toolbar = $this->buildUserTestResultsToolbarGUI();
84 $this->ctrl->setParameter($this, 'pdf', '1');
85 $toolbar->setPdfExportLinkTarget($this->ctrl->getLinkTarget($this, 'showVirtualPass'));
86 $this->ctrl->setParameter($this, 'pdf', '');
87 $toolbar->build();
88
89 $virtualSequence = $this->service->buildVirtualSequence($testSession);
90 $userResults = $this->service->getVirtualSequenceUserResults($virtualSequence);
91
92 require_once 'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php';
93 $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($testSession);
94
95 $objectivesList = $this->buildQuestionRelatedObjectivesList($objectivesAdapter, $virtualSequence);
96 $objectivesList->loadObjectivesTitles();
97
98 require_once 'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php';
99 $testResultHeaderLabelBuilder = new ilTestResultHeaderLabelBuilder($this->lng, $this->objCache);
100
101 $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($testSession->getObjectiveOrientedContainerId());
102 $testResultHeaderLabelBuilder->setUserId($testSession->getUserId());
103 $testResultHeaderLabelBuilder->setTestObjId($this->object->getId());
104 $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId());
105 $testResultHeaderLabelBuilder->initObjectiveOrientedMode();
106
107 $tpl = new ilTemplate('tpl.il_as_tst_virtual_pass_details.html', false, false, 'Modules/Test');
108
109 $command_solution_details = "";
110 if ($this->object->getShowSolutionDetails()) {
111 $command_solution_details = "outCorrectSolution";
112 }
113
114 $questionAnchorNav = $listOfAnswers = $this->object->canShowSolutionPrintview();
115
116 if ($listOfAnswers) {
117 $list_of_answers = $this->getPassListOfAnswers(
118 $userResults,
119 $testSession->getActiveId(),
120 null,
121 $this->object->getShowSolutionListComparison(),
122 false,
123 false,
124 false,
125 true,
126 $objectivesList,
127 $testResultHeaderLabelBuilder
128 );
129 $tpl->setVariable("LIST_OF_ANSWERS", $list_of_answers);
130 }
131
132 foreach ($objectivesList->getObjectives() as $loId => $loTitle) {
133 $userResultsForLO = $objectivesList->filterResultsByObjective($userResults, $loId);
134
135 $overviewTableGUI = $this->getPassDetailsOverviewTableGUI(
136 $userResultsForLO,
137 $testSession->getActiveId(),
138 null,
139 $this,
140 "showVirtualPass",
141 $command_solution_details,
142 $questionAnchorNav,
143 $objectivesList,
144 false
145 );
146 $overviewTableGUI->setTitle(
147 $testResultHeaderLabelBuilder->getVirtualPassDetailsHeaderLabel(
148 $objectivesList->getObjectiveTitleById($loId)
149 )
150 );
151
152 require_once 'Modules/Test/classes/class.ilTestLearningObjectivesStatusGUI.php';
153 $loStatus = new ilTestLearningObjectivesStatusGUI($this->lng);
154 $loStatus->setCrsObjId($this->getObjectiveOrientedContainer()->getObjId());
155 $loStatus->setUsrId($testSession->getUserId());
156 $lostatus = $loStatus->getHTML($loId);
157
158 $tpl->setCurrentBlock('pass_details');
159 $tpl->setVariable("PASS_DETAILS", $overviewTableGUI->getHTML());
160 $tpl->setVariable("LO_STATUS", $lostatus);
161 $tpl->parseCurrentBlock();
162 }
163
164 $this->populateContent($this->ctrl->getHTML($toolbar) . $tpl->get());
165 }
166}
static getInstance(ilTestSession $a_test_session)
static prepareGenerationRequest(string $service, string $purpose)
Prepare the content processing for a PDF generation request This function should be called as in a re...
special template class to simplify handling of ITX/PEAR
Service GUI class for tests.
getPassDetailsOverviewTableGUI( $result_array, $active_id, $pass, $targetGUI, $targetCMD, $questionDetailsCMD, $questionAnchorNav, ilTestQuestionRelatedObjectivesList $objectivesList=null, $multipleObjectivesInvolved=true)
buildQuestionRelatedObjectivesList(ilLOTestQuestionAdapter $objectivesAdapter, ilTestQuestionSequence $testSequence)
getPassListOfAnswers(&$result_array, $active_id, $pass, $show_solutions=false, $only_answered_questions=false, $show_question_only=false, $show_reached_points=false, $anchorNav=false, ilTestQuestionRelatedObjectivesList $objectivesList=null, ilTestResultHeaderLabelBuilder $testResultHeaderLabelBuilder=null)
Returns the list of answers of a users test pass.
buildPassDetailsOverviewTableGUI($targetGUI, $targetCMD)
const PDF_USER_RESULT
PDF Purposes.