ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
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 }
const PDF_USER_RESULT
PDF Purposes.
buildQuestionRelatedObjectivesList(ilLOTestQuestionAdapter $objectivesAdapter, ilTestQuestionSequence $testSequence)
static getInstance(ilTestSession $a_test_session)
buildPassDetailsOverviewTableGUI($targetGUI, $targetCMD)
Service GUI class for tests.
static prepareGenerationRequest(string $service, string $purpose)
Prepare the content processing for a PDF generation request This function should be called as in a re...
getPassDetailsOverviewTableGUI( $result_array, $active_id, $pass, $targetGUI, $targetCMD, $questionDetailsCMD, $questionAnchorNav, ilTestQuestionRelatedObjectivesList $objectivesList=null, $multipleObjectivesInvolved=true)
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.