4 require_once
'./Modules/Test/exceptions/class.ilTestException.php';
5 require_once
'./Services/Object/classes/class.ilObjectGUI.php';
6 require_once
'./Modules/Test/classes/inc.AssessmentConstants.php';
7 require_once
'./Modules/Test/classes/class.ilObjAssessmentFolderGUI.php';
8 require_once
'./Modules/Test/classes/class.ilObjAssessmentFolder.php';
9 require_once
'./Modules/Test/classes/class.ilTestExpressPage.php';
10 require_once
'Modules/OrgUnit/classes/Positions/Operation/class.ilOrgUnitOperation.php';
11 require_once
'Modules/Test/classes/class.ilTestParticipantAccessFilter.php';
55 'ilpublicuserprofilegui',
'ilobjportfoliogui' 99 $ilPluginAdmin = $DIC[
'ilPluginAdmin'];
100 $tree = $DIC[
'tree'];
101 $lng->loadLanguageModule(
"assessment");
104 $this->ctrl->saveParameter($this, array(
"ref_id",
"test_ref_id",
"calling_test",
"test_express_mode",
"q_id"));
105 if (isset(
$_GET[
'ref_id']) && is_numeric(
$_GET[
'ref_id'])) {
106 $refId = (int)
$_GET[
'ref_id'];
108 parent::__construct(
"", (
int) $refId,
true,
false);
110 if ($this->
object instanceof
ilObjTest) {
111 require_once
'Modules/Test/classes/class.ilTestQuestionSetConfigFactory.php';
114 require_once
'Modules/Test/classes/class.ilTestPlayerFactory.php';
117 require_once
'Modules/Test/classes/class.ilTestSessionFactory.php';
120 require_once
'Modules/Test/classes/class.ilTestSequenceFactory.php';
123 require_once
'Modules/Test/classes/class.ilTestAccess.php';
127 require_once
'Modules/Test/classes/class.ilTestObjectiveOrientedContainer.php';
130 if ($this->
object instanceof ilObjTest) {
131 require_once
'Modules/Test/classes/class.ilTestTabsManager.php';
134 $tabsManager->setTestSession($this->testSessionFactory->getSession());
135 $tabsManager->setTestQuestionSetConfig($this->testQuestionSetConfigFactory->getQuestionSetConfig());
147 $ilAccess = $DIC[
'ilAccess'];
148 $ilNavigationHistory = $DIC[
'ilNavigationHistory'];
153 $ilTabs = $DIC[
'ilTabs'];
154 $ilPluginAdmin = $DIC[
'ilPluginAdmin'];
155 $ilDB = $DIC[
'ilDB'];
156 $tree = $DIC[
'tree'];
157 $ilias = $DIC[
'ilias'];
160 if ((!$ilAccess->checkAccess(
"read",
"",
$_GET[
"ref_id"]))) {
161 $ilias->raiseError($this->lng->txt(
"permission_denied"), $ilias->error_obj->MESSAGE);
164 $cmd = $this->ctrl->getCmd(
"infoScreen");
166 $cmdsDisabledDueToOfflineStatus = array(
167 'resumePlayer',
'resumePlayer',
'outUserResultsOverview',
'outUserListOfAnswerPasses' 170 if (!$this->
getCreationMode() && $this->object->getOfflineStatus() && in_array($cmd, $cmdsDisabledDueToOfflineStatus)) {
174 $next_class = $this->ctrl->getNextClass($this);
175 $this->ctrl->setReturn($this,
"infoScreen");
177 if (method_exists($this->
object,
"getTestStyleLocation")) {
178 $this->tpl->addCss($this->object->getTestStyleLocation(
"output"),
"screen");
183 $ilAccess->checkAccess(
"read",
"",
$_GET[
"ref_id"])
185 $ilNavigationHistory->addItem(
187 "ilias.php?baseClass=ilObjTestGUI&cmd=infoScreen&ref_id=" .
$_GET[
"ref_id"],
193 if ($_REQUEST[
'prev_qid']) {
194 global $___prev_question_id;
195 $___prev_question_id = $_REQUEST[
'prev_qid'];
196 $this->ctrl->setParameter($this,
'prev_qid', $_REQUEST[
'prev_qid']);
199 if (!$this->
getCreationMode() && $this->testQuestionSetConfigFactory->getQuestionSetConfig()->areDepenciesBroken()) {
200 if (!$this->testQuestionSetConfigFactory->getQuestionSetConfig()->isValidRequestOnBrokenQuestionSetDepencies($next_class, $cmd)) {
201 $this->ctrl->redirectByClass(
'ilObjTestGUI',
'infoScreen');
207 switch ($next_class) {
208 case 'illtiproviderobjectsettinggui':
211 $this->tabsManager->getSettingsSubTabs();
212 $GLOBALS[
'DIC']->tabs()->activateTab(
'settings');
213 $GLOBALS[
'DIC']->tabs()->activateSubTab(
'lti_provider');
216 $lti_gui->offerLTIRolesForSelection(
false);
217 $this->ctrl->forwardCommand($lti_gui);
221 case 'iltestexportgui':
222 if (!$ilAccess->checkAccess(
'write',
'', $this->ref_id)) {
223 $ilErr->raiseError($this->lng->txt(
'permission_denied'),
$ilErr->WARNING);
229 require_once
'Modules/Test/classes/class.ilTestExportGUI.php';
233 case "ilinfoscreengui":
238 case 'ilobjectmetadatagui':
239 if (!$ilAccess->checkAccess(
'write',
'', $this->object->getRefId())) {
240 $ilErr->raiseError($this->lng->txt(
'permission_denied'),
$ilErr->WARNING);
246 include_once
'Services/Object/classes/class.ilObjectMetaDataGUI.php';
248 $this->ctrl->forwardCommand($md_gui);
251 case 'iltestdashboardgui':
256 require_once
'Modules/Test/classes/class.ilTestDashboardGUI.php';
260 $this->testQuestionSetConfigFactory->getQuestionSetConfig()
267 $this->ctrl->forwardCommand($gui);
270 case 'iltestresultsgui':
275 require_once
'Modules/Test/classes/class.ilTestResultsGUI.php';
279 $this->testQuestionSetConfigFactory->getQuestionSetConfig()
283 $gui->setTestSession($this->testSessionFactory->getSession());
287 $this->ctrl->forwardCommand($gui);
290 case "iltestplayerfixedquestionsetgui":
292 require_once
"./Modules/Test/classes/class.ilTestPlayerFixedQuestionSetGUI.php";
293 if (!$this->object->getKioskMode()) {
298 $this->ctrl->forwardCommand($gui);
301 case "iltestplayerrandomquestionsetgui":
303 require_once
"./Modules/Test/classes/class.ilTestPlayerRandomQuestionSetGUI.php";
304 if (!$this->object->getKioskMode()) {
309 $this->ctrl->forwardCommand($gui);
312 case "iltestplayerdynamicquestionsetgui":
314 require_once
"./Modules/Test/classes/class.ilTestPlayerDynamicQuestionSetGUI.php";
315 if (!$this->object->getKioskMode()) {
320 $this->ctrl->forwardCommand($gui);
323 case "iltestevaluationgui":
327 case "iltestevalobjectiveorientedgui":
328 $this->forwardToEvalObjectiveOrientedGUI();
331 case "iltestservicegui":
334 require_once
"./Modules/Test/classes/class.ilTestServiceGUI.php";
336 $this->ctrl->forwardCommand($serviceGUI);
339 case 'ilpermissiongui':
343 include_once(
"Services/AccessControl/classes/class.ilPermissionGUI.php");
345 $ret = $this->ctrl->forwardCommand($perm_gui);
348 case "illearningprogressgui":
352 require_once
'./Services/Tracking/classes/class.ilLearningProgressGUI.php';
354 $this->ctrl->forwardCommand($new_gui);
358 case "ilcertificategui":
365 $output_gui = $guiFactory->create($this->
object);
367 $this->ctrl->forwardCommand($output_gui);
370 case "iltestscoringgui":
373 require_once
"./Modules/Test/classes/class.ilTestScoringGUI.php";
376 $this->ctrl->forwardCommand($output_gui);
379 case 'ilmarkschemagui':
380 if (!$ilAccess->checkAccess(
'write',
'', $this->object->getRefId())) {
382 $this->ctrl->redirect($this,
'infoScreen');
386 require_once
'Modules/Test/classes/class.ilMarkSchemaGUI.php';
388 $this->ctrl->forwardCommand($mark_schema_gui);
391 case 'iltestscoringbyquestionsgui':
394 include_once
'Modules/Test/classes/class.ilTestScoringByQuestionsGUI.php';
397 $this->ctrl->forwardCommand($output_gui);
400 case 'ilobjtestsettingsgeneralgui':
403 require_once
'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
415 $this->ctrl->forwardCommand($gui);
418 case 'ilobjtestsettingsscoringresultsgui':
421 require_once
'Modules/Test/classes/class.ilObjTestSettingsScoringResultsGUI.php';
432 $this->ctrl->forwardCommand($gui);
435 case 'ilobjtestfixedquestionsetconfiggui':
438 require_once
'Modules/Test/classes/class.ilTestFixedQuestionSetConfigGUI.php';
440 $this->ctrl->forwardCommand($gui);
443 case 'iltestrandomquestionsetconfiggui':
446 require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetConfigGUI.php';
448 $this->ctrl->forwardCommand($gui);
451 case 'ilobjtestdynamicquestionsetconfiggui':
454 require_once
'Modules/Test/classes/class.ilObjTestDynamicQuestionSetConfigGUI.php';
456 $this->ctrl->forwardCommand($gui);
459 case 'iltestquestionbrowsertablegui':
462 require_once
'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
464 $gui->setWriteAccess($ilAccess->checkAccess(
"write",
"", $this->ref_id));
466 $this->ctrl->forwardCommand($gui);
469 case 'iltestskilladministrationgui':
472 require_once
'Modules/Test/classes/class.ilTestSkillAdministrationGUI.php';
473 $gui =
new ilTestSkillAdministrationGUI($ilias, $this->ctrl, $ilAccess, $ilTabs, $this->tpl, $this->lng,
$ilDB,
$tree, $ilPluginAdmin, $this->
object, $this->ref_id);
474 $this->ctrl->forwardCommand($gui);
477 case 'ilobjectcopygui':
480 require_once
'./Services/Object/classes/class.ilObjectCopyGUI.php';
483 $this->ctrl->forwardCommand($cp);
486 case 'ilpageeditorgui':
487 case 'iltestexpresspageobjectgui':
492 require_once
'Modules/TestQuestionPool/classes/class.ilAssIncompleteQuestionPurger.php';
494 $incompleteQuestionPurger->setOwnerId(
$ilUser->getId());
495 $incompleteQuestionPurger->purge();
504 if (!in_array($cmd, array(
'addQuestion',
'browseForQuestions'))) {
508 if (!$qid || in_array($cmd, array(
'insertQuestions',
'browseForQuestions'))) {
509 require_once
"./Modules/Test/classes/class.ilTestExpressPageObjectGUI.php";
512 $ret = &$this->ctrl->forwardCommand($pageObject);
515 require_once
"./Services/Style/Content/classes/class.ilObjStyleSheet.php";
516 $this->tpl->setCurrentBlock(
"ContentStyle");
517 $this->tpl->setVariable(
518 "LOCATION_CONTENT_STYLESHEET",
521 $this->tpl->parseCurrentBlock();
524 $this->tpl->setCurrentBlock(
"SyntaxStyle");
525 $this->tpl->setVariable(
526 "LOCATION_SYNTAX_STYLESHEET",
529 $this->tpl->parseCurrentBlock();
530 require_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
534 $this->ctrl->setParameterByClass(
'iltestexpresspageobjectgui',
'q_id',
'');
535 $this->ctrl->redirectByClass(
'iltestexpresspageobjectgui', $this->ctrl->getCmd());
540 $q_gui->outAdditionalOutput();
541 $q_gui->object->setObjId($this->object->getId());
543 $q_gui->setTargetGuiClass(null);
544 $q_gui->setQuestionActionCmd(null);
546 $question = $q_gui->object;
547 $this->ctrl->saveParameter($this,
"q_id");
549 #$this->lng->loadLanguageModule("content"); 550 $this->ctrl->setReturnByClass(
"ilTestExpressPageObjectGUI",
"view");
551 $this->ctrl->setReturn($this,
"questions");
553 require_once
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php";
554 require_once
"./Modules/Test/classes/class.ilTestExpressPageObjectGUI.php";
558 $page_gui->setEditPreview(
true);
559 $page_gui->setEnabledTabs(
false);
560 if (strlen($this->ctrl->getCmd()) == 0) {
561 $this->ctrl->setCmdClass(get_class($page_gui));
562 $this->ctrl->setCmd(
"preview");
565 $page_gui->setQuestionHTML(array($q_gui->object->getId() => $q_gui->getPreview(
true)));
566 $page_gui->setTemplateTargetVar(
"ADM_CONTENT");
568 $page_gui->setOutputMode($this->object->evalTotalPersons() == 0 ?
"edit" :
'preview');
570 $page_gui->setHeader($question->getTitle());
571 $page_gui->setFileDownloadLink($this->ctrl->getLinkTarget($this,
"downloadFile"));
572 $page_gui->setFullscreenLink($this->ctrl->getLinkTarget($this,
"fullscreen"));
573 $page_gui->setSourcecodeDownloadScript($this->ctrl->getLinkTarget($this));
574 $page_gui->setPresentationTitle($question->getTitle() .
' [' . $this->lng->txt(
'question_id_short') .
': ' . $question->getId() .
']');
575 $ret = &$this->ctrl->forwardCommand($page_gui);
578 $ilTabs = $DIC[
'ilTabs'];
579 $ilTabs->activateTab(
'assQuestions');
581 $this->tpl->setContent(
$ret);
584 case 'ilassquestionpreviewgui':
588 $this->ctrl->saveParameter($this,
"q_id");
590 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionPreviewGUI.php';
594 $gui->initPreviewSettings($this->object->getRefId());
595 $gui->initPreviewSession(
$ilUser->getId(), (int)
$_GET[
'q_id']);
596 $gui->initHintTracking();
597 $gui->initStyleSheets();
599 $this->ctrl->forwardCommand($gui);
603 case 'ilassquestionpagegui':
606 require_once
'Modules/Test/classes/class.ilAssQuestionPageCommandForwarder.php';
608 $forwarder->setTestObj($this->
object);
609 $forwarder->forward();
612 case 'ilassspecfeedbackpagegui':
613 require_once
"./Modules/TestQuestionPool/classes/feedback/class.ilAssSpecFeedbackPageGUI.php";
615 $this->ctrl->forwardCommand($pg_gui);
618 case 'ilassgenfeedbackpagegui':
619 require_once
"./Modules/TestQuestionPool/classes/feedback/class.ilAssGenFeedbackPageGUI.php";
621 $this->ctrl->forwardCommand($pg_gui);
624 case 'illocalunitconfigurationgui':
628 $this->ctrl->setReturn($this,
"questions");
631 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
633 $questionGUI->object->setObjId($this->object->getId());
634 $questionGUI->setQuestionTabs();
636 require_once
'Modules/TestQuestionPool/classes/class.ilLocalUnitConfigurationGUI.php';
637 require_once
'Modules/TestQuestionPool/classes/class.ilUnitConfigurationRepository.php';
641 $this->ctrl->forwardCommand($gui);
644 case "ilcommonactiondispatchergui":
645 require_once
"Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
647 $this->ctrl->forwardCommand($gui);
650 case 'ilassquestionhintsgui':
655 $this->ctrl->setReturn($this,
"questions");
658 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
660 $questionGUI->object->setObjId($this->object->getId());
661 $questionGUI->setQuestionTabs();
664 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintsGUI.php';
667 $gui->setEditingEnabled(
668 $DIC->access()->checkAccess(
'write',
'', $this->object->getRefId())
675 case 'ilassquestionfeedbackeditinggui':
680 $this->ctrl->setReturn($this,
"questions");
683 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
685 $questionGUI->object->setObjId($this->object->getId());
686 $questionGUI->setQuestionTabs();
689 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionFeedbackEditingGUI.php';
695 case 'iltestcorrectionsgui':
697 require_once
'./Modules/Test/classes/class.ilTestCorrectionsGUI.php';
699 $this->ctrl->forwardCommand($gui);
706 if ((strcmp($cmd,
"properties") == 0) && ($_GET[
"browse"])) {
707 $this->questionBrowser();
710 if ((strcmp($cmd,
"properties") == 0) && ($_GET[
"up"] || $_GET[
"down"])) {
715 $ret = &$this->$cmd();
719 if ($_REQUEST[
'prev_qid']) {
720 global $___prev_question_id;
721 $___prev_question_id = $_REQUEST[
'prev_qid'];
722 $this->ctrl->setParameterByClass(
'ilassquestionpagegui',
'prev_qid', $_REQUEST[
'prev_qid']);
723 $this->ctrl->setParameterByClass($_GET[
'sel_question_types'] .
'gui',
'prev_qid', $_REQUEST[
'prev_qid']);
725 $this->create_question_mode =
true;
728 $this->ctrl->setReturn($this,
"questions");
729 require_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
732 $q_gui->object->setObjId($this->object->getId());
733 if (!$_GET[
'sel_question_types']) {
736 $qType = $_GET[
'sel_question_types'];
738 $this->ctrl->setParameterByClass($qType .
"GUI",
'prev_qid', $_REQUEST[
'prev_qid']);
739 $this->ctrl->setParameterByClass($qType .
"GUI",
'test_ref_id', $_REQUEST[
'ref_id']);
740 $this->ctrl->setParameterByClass($qType .
"GUI",
'q_id', $_REQUEST[
'q_id']);
741 if ($_REQUEST[
'test_express_mode']) {
742 $this->ctrl->setParameterByClass($qType .
"GUI",
'test_express_mode', 1);
745 #global $___test_express_mode; 746 #$___test_express_mode = true; 747 if (!$q_gui->isSaveCommand()) {
748 $_GET[
'calling_test'] = $this->
object->getRefId();
751 $q_gui->setQuestionTabs();
752 #unset($___test_express_mode); 753 $ret = &$this->ctrl->forwardCommand($q_gui);
756 if (!in_array(strtolower(
$_GET[
"baseClass"]), array(
'iladministrationgui',
'ilrepositorygui')) &&
766 require_once
'Services/Tracking/classes/class.ilChangeEvent.php';
769 $this->object->getType(),
770 $this->
object->getRefId(),
771 $this->
object->getId(),
772 $DIC->user()->getId()
783 $DIC->ctrl()->redirectByClass(
'ilTestExportGUI');
791 $qid = $_REQUEST[
'q_id'];
793 if (!$qid || $qid ==
'Array') {
794 $questions = $this->
object->getQuestionTitlesAndIndexes();
795 if (!is_array($questions)) {
796 $questions = array();
799 $keys = array_keys($questions);
802 $_REQUEST[
'q_id'] = $qid;
803 $_GET[
'q_id'] = $qid;
807 if ($this->object->checkQuestionParent($qid)) {
811 throw new ilTestException(
'question id does not relate to parent object!');
816 switch ($this->object->getQuestionSetType()) {
818 $this->ctrl->redirectByClass(
'ilTestExpressPageObjectGUI',
'showPage');
822 $this->ctrl->redirectByClass(
'ilTestRandomQuestionSetConfigGUI');
826 $this->ctrl->redirectByClass(
'ilObjTestDynamicQuestionSetConfigGUI');
832 $this->ctrl->setCmdClass(
'ilTestEvaluationGUI');
833 $this->ctrl->setCmd(
'outUserResultsOverview');
834 $this->tabs_gui->clearTargets();
876 require_once
'Modules/Test/classes/class.ilTestEvaluationGUI.php';
881 $this->ctrl->forwardCommand($gui);
886 require_once
'Modules/Test/classes/class.ilObjTestSettingsGeneralGUI.php';
903 $this->tpl->getStandardTemplate();
915 if (
$ilUser->getId() != ANONYMOUS_USER_ID) {
916 require_once(
'Services/WebDAV/classes/class.ilDAVActivationChecker.php');
926 $this->ctrl->redirect($this,
"infoScreen");
931 $this->ctrl->redirectByClass(
"iltestevaluationgui",
"outEvaluation");
940 if (
$form->checkInput()) {
941 $this->ctrl->setParameter($this,
"new_type", $this->type);
946 $form->setValuesByPost();
947 $this->tpl->setContent(
$form->getHTML());
952 include_once(
"./Modules/Test/classes/class.ilObjTest.php");
954 $defaults = $tst->getAvailableDefaults();
955 if (count($defaults)) {
956 foreach ($defaults as
$row) {
957 $a_options[
"tstdef_" . $row[
"test_defaults_id"]] = array($row[
"name"],
958 $this->lng->txt(
"tst_default_settings"));
963 include_once
"Services/Administration/classes/class.ilSettingsTemplate.php";
966 foreach ($templates as $item) {
967 $a_options[
"tsttpl_" . $item[
"id"]] = array($item[
"title"],
968 nl2br(trim($item[
"description"])));
981 $testDefaultsId = $tstdef;
983 $a_new_object->applyDefaults($testDefaults);
988 include_once
"Services/Administration/classes/class.ilSettingsTemplate.php";
991 $template_settings =
$template->getSettings();
992 if ($template_settings) {
999 $a_new_object->saveToDb();
1002 ilUtil::sendSuccess($this->lng->txt(
"object_added"),
true);
1003 $this->ctrl->setParameter($this,
'ref_id', $a_new_object->
getRefId());
1004 $this->ctrl->redirectByClass(
'ilObjTestSettingsGeneralGUI');
1009 include_once
"./Services/Utilities/classes/class.ilUtil.php";
1010 $path = $this->tree->getPathFull($this->object->getRefID());
1019 if ($_FILES[
"xmldoc"][
"error"] > UPLOAD_ERR_OK) {
1024 include_once(
"./Modules/Test/classes/class.ilObjTest.php");
1029 $file = pathinfo($_FILES[
"xmldoc"][
"name"]);
1030 $full_path = $basedir .
"/" . $_FILES[
"xmldoc"][
"name"];
1031 ilUtil::moveUploadedFile($_FILES[
"xmldoc"][
"tmp_name"], $_FILES[
"xmldoc"][
"name"], $full_path);
1037 $subdir = basename($file[
"basename"],
"." . $file[
"extension"]);
1043 if (!is_file($qti_file)) {
1051 include_once
"./Services/QTI/classes/class.ilQTIParser.php";
1053 $result = $qtiParser->startParsing();
1054 $founditems = &$qtiParser->getFoundItems();
1058 foreach ($founditems as $item) {
1059 if (strlen($item[
"type"])) {
1066 if (count($founditems) && $complete == 0) {
1075 $_SESSION[
"tst_import_results_file"] = $results_file;
1076 $_SESSION[
"tst_import_xml_file"] = $xml_file;
1077 $_SESSION[
"tst_import_qti_file"] = $qti_file;
1078 $_SESSION[
"tst_import_subdir"] = $subdir;
1086 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.tst_import_verification.html",
"Modules/Test");
1087 $row_class = array(
"tblrow1",
"tblrow2");
1089 foreach ($founditems as $item) {
1090 $this->tpl->setCurrentBlock(
"verification_row");
1091 $this->tpl->setVariable(
"ROW_CLASS", $row_class[$counter++ % 2]);
1092 $this->tpl->setVariable(
"QUESTION_TITLE", $item[
"title"]);
1093 $this->tpl->setVariable(
"QUESTION_IDENT", $item[
"ident"]);
1094 include_once
"./Services/QTI/classes/class.ilQTIItem.php";
1095 switch ($item[
"type"]) {
1098 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assMultipleChoice"));
1102 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assSingleChoice"));
1106 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assKprimChoice"));
1110 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assLongMenu"));
1114 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assNumeric"));
1118 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assFormulaQuestion"));
1122 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assTextSubset"));
1126 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assClozeTest"));
1130 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assErrorText"));
1134 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assImagemapQuestion"));
1138 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assJavaApplet"));
1142 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assFlashApplet"));
1146 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assMatchingQuestion"));
1150 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assOrderingQuestion"));
1154 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assOrderingHorizontal"));
1158 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assTextQuestion"));
1162 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"assFileUpload"));
1165 $this->tpl->parseCurrentBlock();
1172 $this->tpl->setCurrentBlock(
"adm_content");
1173 $this->tpl->setVariable(
"TEXT_TYPE", $this->lng->txt(
"question_type"));
1174 $this->tpl->setVariable(
"TEXT_TITLE", $this->lng->txt(
"question_title"));
1175 $this->tpl->setVariable(
"FOUND_QUESTIONS_INTRODUCTION", $this->lng->txt(
"tst_import_verify_found_questions"));
1176 $this->tpl->setVariable(
"VERIFICATION_HEADING", $this->lng->txt(
"import_tst"));
1177 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
1179 $this->tpl->setVariable(
"QUESTIONPOOL_ID", $QplOrTstID);
1180 $this->tpl->setVariable(
"VALUE_IMPORT", $this->lng->txt(
"import"));
1181 $this->tpl->setVariable(
"VALUE_CANCEL", $this->lng->txt(
"cancel"));
1182 $this->tpl->parseCurrentBlock();
1190 include_once
"./Modules/Test/classes/class.ilObjTest.php";
1194 $newObj->setType(
$_GET[
"new_type"]);
1196 $newObj->setTitle(
"dummy");
1198 $newObj->setDescription(
"test import");
1200 $newObj->create(
true);
1202 $newObj->createReference();
1204 $newObj->putInTree(
$_GET[
"ref_id"]);
1206 $newObj->setPermissions(
$_GET[
"ref_id"]);
1208 $newObj->mark_schema->flush();
1211 include_once
"./Services/QTI/classes/class.ilQTIParser.php";
1215 if (!isset(
$_POST[
"qpl"]) ||
"-1" === (
string)
$_POST[
"qpl"]) {
1216 $questionParentObjId = $newObj->getId();
1218 $questionParentObjId = $_POST[
"qpl"];
1221 if (is_file(
$_SESSION[
"tst_import_dir"] .
'/' .
$_SESSION[
"tst_import_subdir"] .
"/manifest.xml")) {
1222 $newObj->saveToDb();
1224 $_SESSION[
'tst_import_idents'] = $_POST[
'ident'];
1225 $_SESSION[
'tst_import_qst_parent'] = $questionParentObjId;
1227 $fileName = $_SESSION[
'tst_import_subdir'] .
'.zip';
1228 $fullPath = $_SESSION[
'tst_import_dir'] .
'/' . $fileName;
1230 include_once(
"./Services/Export/classes/class.ilImport.php");
1232 $map = $imp->getMapping();
1233 $map->addMapping(
'Modules/Test',
'tst',
'new_id', $newObj->getId());
1234 $imp->importObject($newObj, $fullPath, $fileName,
'tst',
'Modules/Test',
true);
1237 if (!isset($_POST[
"ident"]) || !is_array($_POST[
"ident"]) || !count($_POST[
"ident"])) {
1238 $qtiParser->setIgnoreItemsEnabled(
true);
1240 $qtiParser->setTestObject($newObj);
1241 $result = $qtiParser->startParsing();
1242 $newObj->saveToDb();
1245 include_once(
"./Modules/LearningModule/classes/class.ilContObjParser.php");
1246 $contParser =
new ilContObjParser($newObj, $_SESSION[
"tst_import_xml_file"], $_SESSION[
"tst_import_subdir"]);
1247 $contParser->setQuestionMapping($qtiParser->getImportMapping());
1248 $contParser->startParsing();
1250 if (isset($_POST[
"ident"]) && is_array($_POST[
"ident"]) && count($_POST[
"ident"]) == $qtiParser->getNumImportedItems()) {
1252 if (@file_exists($_SESSION[
"tst_import_results_file"])) {
1253 include_once(
"./Modules/Test/classes/class.ilTestResultsImportParser.php");
1255 $results->setQuestionIdMapping($qtiParser->getQuestionIdMapping());
1266 ilUtil::sendSuccess($this->lng->txt(
"object_imported"),
true);
1267 ilUtil::redirect(
"ilias.php?ref_id=" . $newObj->getRefId() .
"&baseClass=ilObjTestGUI");
1286 $file = explode(
"_",
$_GET[
"file_id"]);
1287 include_once(
"./Modules/File/classes/class.ilObjFile.php");
1288 $fileObj =
new ilObjFile($file[count($file) - 1],
false);
1289 $fileObj->sendFile();
1298 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php");
1300 $page_gui->showMediaFullscreen();
1308 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
1310 $pg_obj->send_paragraph(
$_GET[
"par_id"],
$_GET[
"downloadtitle"]);
1323 $this->questionBrowser();
1335 $this->questionBrowser();
1347 $this->ctrl->redirect($this,
"questions");
1361 $tree = $DIC[
'tree'];
1362 $parent_ref =
$tree->getParentId($this->object->getRefId());
1363 include_once
"./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
1365 $qpl->setType(
"qpl");
1366 $qpl->setTitle(
$name);
1369 $qpl->createReference();
1370 $qpl->putInTree($parent_ref);
1371 $qpl->setPermissions($parent_ref);
1374 return $qpl->getRefId();
1386 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_as_tst_random_select.html",
"Modules/Test");
1387 $questionpools = &$this->
object->getAvailableQuestionpools(
false,
false,
false,
true);
1388 $this->tpl->setCurrentBlock(
"option");
1389 $this->tpl->setVariable(
"VALUE_OPTION",
"0");
1390 $this->tpl->setVariable(
"TEXT_OPTION", $this->lng->txt(
"all_available_question_pools"));
1391 $this->tpl->parseCurrentBlock();
1392 foreach ($questionpools as
$key => $value) {
1393 $this->tpl->setCurrentBlock(
"option");
1394 $this->tpl->setVariable(
"VALUE_OPTION",
$key);
1395 $this->tpl->setVariable(
"TEXT_OPTION", $value[
"title"]);
1396 $this->tpl->parseCurrentBlock();
1398 $this->tpl->setCurrentBlock(
"hidden");
1399 $this->tpl->setVariable(
"HIDDEN_NAME",
"sel_question_types");
1400 $this->tpl->setVariable(
"HIDDEN_VALUE",
$_POST[
"sel_question_types"]);
1401 $this->tpl->parseCurrentBlock();
1402 $this->tpl->setCurrentBlock(
"adm_content");
1403 $this->tpl->setVariable(
"FORM_ACTION", $this->ctrl->getFormAction($this));
1404 $this->tpl->setVariable(
"TXT_QPL_SELECT", $this->lng->txt(
"tst_random_select_questionpool"));
1405 $this->tpl->setVariable(
"TXT_NR_OF_QUESTIONS", $this->lng->txt(
"tst_random_nr_of_questions"));
1406 $this->tpl->setVariable(
"BTN_SUBMIT", $this->lng->txt(
"submit"));
1407 $this->tpl->setVariable(
"BTN_CANCEL", $this->lng->txt(
"cancel"));
1408 $this->tpl->parseCurrentBlock();
1420 $this->ctrl->redirect($this,
"questions");
1434 $question_array = $this->
object->randomSelectQuestions(
$_POST[
"nr_of_questions"],
$_POST[
"sel_qpl"]);
1435 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_as_tst_random_question_offer.html",
"Modules/Test");
1436 $color_class = array(
"tblrow1",
"tblrow2");
1438 $questionpools = &$this->
object->getAvailableQuestionpools(
true);
1439 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
1440 foreach ($question_array as $question_id) {
1441 $dataset = $this->
object->getQuestionDataset($question_id);
1442 $this->tpl->setCurrentBlock(
"QTab");
1443 $this->tpl->setVariable(
"COLOR_CLASS", $color_class[$counter % 2]);
1444 $this->tpl->setVariable(
"QUESTION_TITLE", $dataset->title);
1445 $this->tpl->setVariable(
"QUESTION_COMMENT", $dataset->description);
1447 $this->tpl->setVariable(
"QUESTION_AUTHOR", $dataset->author);
1448 $this->tpl->setVariable(
"QUESTION_POOL", $questionpools[$dataset->obj_fi][
"title"]);
1449 $this->tpl->parseCurrentBlock();
1452 if (count($question_array) == 0) {
1453 $this->tpl->setCurrentBlock(
"Emptytable");
1454 $this->tpl->setVariable(
"TEXT_NO_QUESTIONS_AVAILABLE", $this->lng->txt(
"no_questions_available"));
1455 $this->tpl->parseCurrentBlock();
1457 $this->tpl->setCurrentBlock(
"Selectionbuttons");
1458 $this->tpl->setVariable(
"BTN_YES", $this->lng->txt(
"random_accept_sample"));
1459 $this->tpl->setVariable(
"BTN_NO", $this->lng->txt(
"random_another_sample"));
1460 $this->tpl->parseCurrentBlock();
1462 $chosen_questions = join($question_array,
",");
1463 $this->tpl->setCurrentBlock(
"adm_content");
1464 $this->tpl->setVariable(
"FORM_ACTION", $this->ctrl->getFormAction($this));
1465 $this->tpl->setVariable(
"QUESTION_TITLE", $this->lng->txt(
"tst_question_title"));
1466 $this->tpl->setVariable(
"QUESTION_COMMENT", $this->lng->txt(
"description"));
1467 $this->tpl->setVariable(
"QUESTION_TYPE", $this->lng->txt(
"tst_question_type"));
1468 $this->tpl->setVariable(
"QUESTION_AUTHOR", $this->lng->txt(
"author"));
1469 $this->tpl->setVariable(
"QUESTION_POOL", $this->lng->txt(
"qpl"));
1470 $this->tpl->setVariable(
"VALUE_CHOSEN_QUESTIONS", $chosen_questions);
1471 $this->tpl->setVariable(
"VALUE_QUESTIONPOOL_SELECTION",
$_POST[
"sel_qpl"]);
1472 $this->tpl->setVariable(
"VALUE_NR_OF_QUESTIONS",
$_POST[
"nr_of_questions"]);
1473 $this->tpl->setVariable(
"TEXT_QUESTION_OFFER", $this->lng->txt(
"tst_question_offer"));
1474 $this->tpl->setVariable(
"BTN_CANCEL", $this->lng->txt(
"cancel"));
1475 $this->tpl->parseCurrentBlock();
1487 $selected_array = explode(
",",
$_POST[
"chosen_questions"]);
1488 if (!count($selected_array)) {
1491 $total = $this->
object->evalTotalPersons();
1498 foreach ($selected_array as
$key => $value) {
1499 $this->
object->insertQuestion($this->testQuestionSetConfigFactory->getQuestionSetConfig(), $value);
1501 $this->
object->saveCompleteStatus($this->testQuestionSetConfigFactory->getQuestionSetConfig());
1502 ilUtil::sendSuccess($this->lng->txt(
"tst_questions_inserted"),
true);
1503 $this->ctrl->redirect($this,
"questions");
1510 $this->questionBrowser();
1522 $qpl_ref_id = $_REQUEST[
"sel_qpl"];
1524 $qpl_mode = $_REQUEST[
'usage'];
1526 if (isset($_REQUEST[
'qtype'])) {
1527 include_once
'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1529 } elseif (isset($_REQUEST[
'sel_question_types'])) {
1530 $sel_question_types = $_REQUEST[
"sel_question_types"];
1533 if (!$qpl_mode || ($qpl_mode == 2 && strcmp($_REQUEST[
"txt_qpl"],
"") == 0) || ($qpl_mode == 3 && strcmp($qpl_ref_id,
"") == 0)) {
1536 $_REQUEST[
'sel_question_types'] = $sel_question_types;
1541 $_SESSION[
"test_id"] = $this->
object->getRefId();
1542 if ($qpl_mode == 2 && strcmp($_REQUEST[
"txt_qpl"],
"") != 0) {
1545 } elseif ($qpl_mode == 1) {
1546 $qpl_ref_id =
$_GET[
"ref_id"];
1549 include_once
"./Modules/TestQuestionPool/classes/class.ilObjQuestionPoolGUI.php";
1550 $baselink =
"ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" . $qpl_ref_id .
"&cmd=createQuestionForTest&test_ref_id=" .
$_GET[
"ref_id"] .
"&calling_test=" .
$_GET[
"ref_id"] .
"&sel_question_types=" . $sel_question_types;
1552 if (isset($_REQUEST[
'prev_qid'])) {
1553 $baselink .=
'&prev_qid=' . $_REQUEST[
'prev_qid'];
1554 } elseif (isset($_REQUEST[
'position'])) {
1555 $baselink .=
'&prev_qid=' . $_REQUEST[
'position'];
1558 if ($_REQUEST[
'test_express_mode']) {
1559 $baselink .=
'&test_express_mode=1';
1562 if (isset($_REQUEST[
'add_quest_cont_edit_mode'])) {
1565 "add_quest_cont_edit_mode={$_REQUEST['add_quest_cont_edit_mode']}",
1570 #var_dump($_REQUEST['prev_qid']); 1586 $this->ctrl->redirect($this,
"questions");
1603 $questionpools = &$this->
object->getAvailableQuestionpools(
false,
false,
false,
true,
false,
"write");
1605 if ($this->object->getPoolUsage()) {
1611 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
1614 $form->setFormAction(
$ilCtrl->getFormAction($this,
"executeCreateQuestion"));
1615 $form->setTitle(
$lng->txt(
"ass_create_question"));
1616 include_once
'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1620 $hidden->setValue($_REQUEST[
"sel_question_types"]);
1621 $form->addItem($hidden);
1628 $lng->txt(
'tst_add_quest_cont_edit_mode_default'),
1633 $lng->txt(
'tst_add_quest_cont_edit_mode_page_object'),
1639 $form->addItem($ri,
true);
1643 $form->addItem($hi,
true);
1649 $no_pool =
new ilRadioOption($this->lng->txt(
"assessment_no_pool"), 1);
1650 $usage->addOption($no_pool);
1651 $existing_pool =
new ilRadioOption($this->lng->txt(
"assessment_existing_pool"), 3);
1652 $usage->addOption($existing_pool);
1653 $new_pool =
new ilRadioOption($this->lng->txt(
"assessment_new_pool"), 2);
1654 $usage->addOption($new_pool);
1655 $form->addItem($usage);
1657 $usage->setValue(1);
1660 $pools_data = array();
1661 foreach ($questionpools as
$key => $p) {
1662 $pools_data[
$key] = $p[
'title'];
1664 $pools =
new ilSelectInputGUI($this->lng->txt(
"select_questionpool"),
"sel_qpl");
1666 $existing_pool->addSubItem($pools);
1669 $this->lng->loadLanguageModule(
'rbac');
1672 $name->setMaxLength(50);
1673 $new_pool->addSubItem(
$name);
1675 $form->addCommandButton(
"executeCreateQuestion",
$lng->txt(
"submit"));
1676 $form->addCommandButton(
"cancelCreateQuestion",
$lng->txt(
"cancel"));
1678 return $this->tpl->setVariable(
'ADM_CONTENT',
$form->getHTML());
1683 $ilCtrl->setParameterByClass(
'iltestexpresspageobjectgui',
'sel_question_types', $_REQUEST[
"sel_question_types"]);
1684 $ilCtrl->setParameterByClass(
'iltestexpresspageobjectgui',
'add_quest_cont_edit_mode', $_REQUEST[
"add_quest_cont_edit_mode"]);
1685 $link =
$ilCtrl->getLinkTargetByClass(
'iltestexpresspageobjectgui',
'handleToolbarCommand',
'',
false,
false);
1695 $removeQuestionIds = (array)
$_POST[
"q_id"];
1697 $questions = $this->
object->getQuestionTitlesAndIndexes();
1699 $this->
object->removeQuestions($removeQuestionIds);
1701 $this->
object->saveCompleteStatus($this->testQuestionSetConfigFactory->getQuestionSetConfig());
1703 ilUtil::sendSuccess($this->lng->txt(
"tst_questions_removed"));
1705 if ($_REQUEST[
'test_express_mode']) {
1708 $deleted_tmp = $removeQuestionIds;
1709 $first = array_shift($deleted_tmp);
1710 foreach ((array) $questions as
$key => $value) {
1711 if (!in_array(
$key, $removeQuestionIds)) {
1719 } elseif (
$key == $first) {
1724 $first = array_shift($deleted_tmp);
1729 count($questions) == count($removeQuestionIds) ||
1732 $this->ctrl->setParameter($this,
'q_id',
'');
1733 $this->ctrl->redirect($this,
'showPage');
1736 $this->ctrl->setParameter($this,
'q_id', $return_to);
1737 $this->ctrl->redirect($this,
"showPage");
1739 $this->ctrl->setParameter($this,
'q_id',
'');
1740 $this->ctrl->redirect($this,
'questions');
1753 if ($_REQUEST[
'test_express_mode']) {
1754 $this->ctrl->setParameter($this,
'q_id', $_REQUEST[
'q_id']);
1755 $this->ctrl->redirect($this,
"showPage");
1757 $this->ctrl->redirect($this,
"questions");
1770 $total = $this->
object->evalTotalPersons();
1773 $question = sprintf($this->lng->txt(
"tst_remove_questions_and_results"),
$total);
1775 if (count($checked_questions) == 1) {
1776 $question = $this->lng->txt(
"tst_remove_question");
1778 $question = $this->lng->txt(
"tst_remove_questions");
1782 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
1784 $cgui->setHeaderText($question);
1786 $this->ctrl->saveParameter($this,
'test_express_mode');
1787 $this->ctrl->saveParameter($this,
'q_id');
1789 $cgui->setFormAction($this->ctrl->getFormAction($this));
1790 $cgui->setCancel($this->lng->txt(
"cancel"),
"cancelRemoveQuestions");
1791 $cgui->setConfirm($this->lng->txt(
"confirm"),
"confirmRemoveQuestions");
1793 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
1794 $removablequestions = &$this->
object->getTestQuestions();
1795 if (count($removablequestions)) {
1796 foreach ($removablequestions as
$data) {
1797 if (in_array($data[
"question_id"], $checked_questions)) {
1799 $txt .=
' [' . $this->lng->txt(
'question_id_short') .
': ' . $data[
'question_id'] .
']';
1801 if ($data[
"description"]) {
1802 $txt .=
"<div class=\"small\">" . $data[
"description"] .
"</div>";
1805 $cgui->addItem(
"q_id[]", $data[
"question_id"],
$txt);
1810 $this->tpl->setContent($cgui->getHTML());
1820 $checked_questions = $_REQUEST[
"q_id"];
1822 if (!is_array($checked_questions) && $checked_questions) {
1823 $checked_questions = array($checked_questions);
1826 if (!is_array($checked_questions)) {
1827 $checked_questions = [];
1830 if (count($checked_questions) > 0) {
1832 } elseif (0 === count($checked_questions)) {
1834 $this->ctrl->redirect($this,
"questions");
1843 $selected_questions = null;
1844 $selected_questions =
$_POST[
'q_id'];
1845 if (is_array($selected_questions)) {
1846 $_SESSION[
'tst_qst_move_' . $this->
object->getTestId()] =
$_POST[
'q_id'];
1847 ilUtil::sendSuccess($this->lng->txt(
"msg_selected_for_move"),
true);
1851 $this->ctrl->redirect($this,
'questions');
1860 $move_questions =
$_SESSION[
'tst_qst_move_' . $this->
object->getTestId()];
1862 if (!is_array(
$_POST[
'q_id']) || 0 === count(
$_POST[
'q_id'])) {
1864 $this->ctrl->redirect($this,
'questions');
1866 if (count(
$_POST[
'q_id']) > 1) {
1868 $this->ctrl->redirect($this,
'questions');
1871 $this->
object->moveQuestions(
$_SESSION[
'tst_qst_move_' . $this->object->getTestId()],
$_POST[
'q_id'][0], $insert_mode);
1872 ilUtil::sendSuccess($this->lng->txt(
"msg_questions_moved"),
true);
1873 unset(
$_SESSION[
'tst_qst_move_' . $this->object->getTestId()]);
1874 $this->ctrl->redirect($this,
"questions");
1883 $move_questions =
$_SESSION[
'tst_qst_move_' . $this->
object->getTestId()];
1884 if (!is_array(
$_POST[
'q_id']) || 0 === count(
$_POST[
'q_id'])) {
1886 $this->ctrl->redirect($this,
'questions');
1888 if (count(
$_POST[
'q_id']) > 1) {
1890 $this->ctrl->redirect($this,
'questions');
1893 $this->
object->moveQuestions(
$_SESSION[
'tst_qst_move_' . $this->object->getTestId()],
$_POST[
'q_id'][0], $insert_mode);
1894 ilUtil::sendSuccess($this->lng->txt(
"msg_questions_moved"),
true);
1895 unset(
$_SESSION[
'tst_qst_move_' . $this->object->getTestId()]);
1896 $this->ctrl->redirect($this,
"questions");
1906 $selected_array = (is_array(
$_POST[
'q_id'])) ?
$_POST[
'q_id'] : array();
1907 if (!count($selected_array)) {
1909 $this->ctrl->redirect($this,
"browseForQuestions");
1911 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
1912 $manscoring =
false;
1913 foreach ($selected_array as
$key => $value) {
1914 $this->
object->insertQuestion($this->testQuestionSetConfigFactory->getQuestionSetConfig(), $value);
1919 $this->
object->saveCompleteStatus($this->testQuestionSetConfigFactory->getQuestionSetConfig());
1923 ilUtil::sendSuccess($this->lng->txt(
"tst_questions_inserted"),
true);
1925 $this->ctrl->redirect($this,
"questions");
1937 $ilHelp = $DIC[
'ilHelp'];
1942 $subScreenId = array(
'createQuestion');
1944 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
1946 $ilCtrl->setParameter($this,
'qtype', $_REQUEST[
'qtype']);
1950 $form->setFormAction(
$ilCtrl->getFormAction($this,
"executeCreateQuestion"));
1951 $form->setTitle(
$lng->txt(
"ass_create_question"));
1952 include_once
'Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
1955 $questionTypes = $pool->getQuestionTypes(
false,
true,
false);
1959 foreach ($questionTypes as $label =>
$data) {
1963 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
1969 $questions = $this->
object->getQuestionTitlesAndIndexes();
1974 $options[
$key] =
$lng->txt(
'behind') .
' ' .
$title .
' [' . $this->lng->txt(
'question_id_short') .
': ' .
$key .
']';
1976 $si->setOptions($options);
1977 $si->setValue($_REQUEST[
'q_id']);
1983 $subScreenId[] =
'editMode';
1988 $lng->txt(
'tst_add_quest_cont_edit_mode_default'),
1993 $lng->txt(
'tst_add_quest_cont_edit_mode_page_object'),
1999 $form->addItem($ri,
true);
2003 $form->addItem($hi,
true);
2006 if ($this->object->getPoolUsage()) {
2007 $subScreenId[] =
'poolSelect';
2012 $no_pool =
new ilRadioOption($this->lng->txt(
"assessment_no_pool"), 1);
2013 $usage->addOption($no_pool);
2014 $existing_pool =
new ilRadioOption($this->lng->txt(
"assessment_existing_pool"), 3);
2015 $usage->addOption($existing_pool);
2016 $new_pool =
new ilRadioOption($this->lng->txt(
"assessment_new_pool"), 2);
2017 $usage->addOption($new_pool);
2018 $form->addItem($usage);
2020 $usage->setValue(1);
2023 $pools_data = array();
2024 foreach ($questionpools as
$key => $p) {
2025 $pools_data[
$key] = $p[
'title'];
2027 $pools =
new ilSelectInputGUI($this->lng->txt(
"select_questionpool"),
"sel_qpl");
2029 $existing_pool->addSubItem($pools);
2033 $name->setMaxLength(50);
2034 $new_pool->addSubItem(
$name);
2037 $form->addCommandButton(
"executeCreateQuestion",
$lng->txt(
"create"));
2038 $form->addCommandButton(
"questions",
$lng->txt(
"cancel"));
2040 $DIC->tabs()->activateTab(
'assQuestions');
2041 $ilHelp->setScreenId(
'assQuestions');
2042 $ilHelp->setSubScreenId(implode(
'_', $subScreenId));
2044 return $tpl->setContent(
$form->getHTML());
2050 $ilAccess = $DIC[
'ilAccess'];
2051 $ilTabs = $DIC[
'ilTabs'];
2054 $this->ctrl->setParameter($this,
'test_express_mode',
'');
2056 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
2059 $this->ctrl->redirect($this,
"infoScreen");
2062 if (
$_GET[
'browse']) {
2063 return $this->questionbrowser();
2070 $this->ctrl->setParameter($this,
'q_id',
'');
2073 ilUtil::redirect(
"ilias.php?baseClass=ilObjQuestionPoolGUI&ref_id=" .
$_GET[
"eqpl"] .
"&cmd=editQuestionForTest&calling_test=" .
$_GET[
"ref_id"] .
"&q_id=" .
$_GET[
"eqid"]);
2076 if (
$_GET[
"up"] > 0) {
2077 $this->
object->questionMoveUp(
$_GET[
"up"]);
2079 if (
$_GET[
"down"] > 0) {
2080 $this->
object->questionMoveDown(
$_GET[
"down"]);
2084 $selected_array = array();
2085 array_push($selected_array,
$_GET[
"add"]);
2086 $total = $this->
object->evalTotalPersons();
2093 $this->insertQuestions($selected_array);
2097 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_as_tst_questions.html",
"Modules/Test");
2099 $total = $this->
object->evalTotalPersons();
2100 if ($ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
2102 $link = $DIC->ui()->factory()->link()->standard(
2103 $DIC->language()->txt(
"test_has_datasets_warning_page_view_link"),
2104 $DIC->ctrl()->getLinkTargetByClass(array(
'ilTestResultsGUI',
'ilParticipantsTestResultsGUI'))
2107 $message = $DIC->language()->txt(
"test_has_datasets_warning_page_view");
2109 $msgBox = $DIC->ui()->factory()->messageBox()->info(
$message)->withLinks(array($link));
2111 $DIC->ui()->mainTemplate()->setCurrentBlock(
'mess');
2112 $DIC->ui()->mainTemplate()->setVariable(
2114 $DIC->ui()->renderer()->render($msgBox)
2116 $DIC->ui()->mainTemplate()->parseCurrentBlock();
2119 $ilToolbar = $DIC[
'ilToolbar'];
2121 $ilToolbar->addButton($this->lng->txt(
"ass_create_question"), $this->ctrl->getLinkTarget($this,
"addQuestion"));
2123 if ($this->object->getPoolUsage()) {
2124 $ilToolbar->addSeparator();
2126 require_once
'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
2131 $ilToolbar->addSeparator();
2132 $ilToolbar->addButton($this->lng->txt(
"random_selection"), $this->ctrl->getLinkTarget($this,
"randomselect"));
2136 $ilAccess = $DIC[
'ilAccess'];
2140 $online_access =
false;
2141 if ($this->object->getFixedParticipants()) {
2142 include_once
"./Modules/Test/classes/class.ilObjTestAccess.php";
2144 if ($online_access_result ===
true) {
2145 $online_access =
true;
2149 if (!$this->object->getOfflineStatus() && $this->
object->isComplete($this->testQuestionSetConfigFactory->getQuestionSetConfig())) {
2150 if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess(
"read",
"", $this->ref_id)) {
2151 $testSession = $this->testSessionFactory->getSession();
2152 $testSequence = $this->testSequenceFactory->getSequenceByTestSession($testSession);
2154 $testPlayerGUI = $this->testPlayerFactory->getPlayerGUI();
2156 $executable = $this->
object->isExecutable($testSession,
$ilUser->getId(), $allowPassIncrease =
true);
2158 if ($executable[
"executable"]) {
2159 if ($testSession->getActiveId() > 0) {
2162 if ($testSequence->hasStarted($testSession)) {
2163 $execTestLabel = $this->lng->txt(
"tst_resume_test");
2164 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI,
'resumePlayer');
2166 $execTestLabel = $this->
object->getStartTestLabel($testSession->getActiveId());
2167 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI,
'startPlayer');
2172 $execTestLabel = $this->
object->getStartTestLabel($testSession->getActiveId());
2173 $execTestLink = $this->ctrl->getLinkTarget($testPlayerGUI,
'startPlayer');
2176 $ilToolbar->addSeparator();
2177 $ilToolbar->addButton($execTestLabel, $execTestLink);
2187 $this->object->getRefId()
2191 is_array(
$_SESSION[
'tst_qst_move_' . $this->object->getTestId()])
2192 && count(
$_SESSION[
'tst_qst_move_' . $this->object->getTestId()])
2195 $table_gui->setQuestionTitleLinksEnabled(!
$total);
2196 $table_gui->setQuestionPositioningEnabled(!
$total);
2197 $table_gui->setQuestionManagingEnabled(!
$total);
2198 $table_gui->setObligatoryQuestionsHandlingEnabled($this->object->areObligationsEnabled());
2200 $table_gui->setTotalPoints($this->object->getFixedQuestionSetTotalPoints());
2201 $table_gui->setTotalWorkingTime($this->object->getFixedQuestionSetTotalWorkingTime());
2205 $table_gui->setData($this->object->getTestQuestions());
2207 $this->tpl->setCurrentBlock(
"adm_content");
2208 $this->tpl->setVariable(
"ACTION_QUESTION_FORM", $this->ctrl->getFormAction($this));
2209 $this->tpl->setVariable(
'QUESTIONBROWSER', $table_gui->getHTML());
2210 $this->tpl->parseCurrentBlock();
2219 require_once
'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
2249 include_once
"./Modules/Test/classes/tables/class.ilTestHistoryTableGUI.php";
2251 $table_gui->setTestObject($this->
object);
2252 include_once
"./Modules/Test/classes/class.ilObjAssessmentFolder.php";
2254 $table_gui->setData(
$log);
2255 $this->tpl->setVariable(
'ADM_CONTENT', $table_gui->getHTML());
2260 include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
2262 $form->setTarget(
"_top");
2264 $this->ctrl->setParameter($this,
"new_type", $new_type);
2265 $form->setFormAction($this->ctrl->getFormAction($this));
2266 $form->setTitle($this->lng->txt(
"import_tst"));
2269 include_once(
"./Services/Form/classes/class.ilFileInputGUI.php");
2270 $fi =
new ilFileInputGUI($this->lng->txt(
"import_file"),
"xmldoc");
2272 $fi->setRequired(
true);
2273 $form->addItem($fi);
2276 include_once(
"./Modules/Test/classes/class.ilObjTest.php");
2278 $questionpools = $tst->getAvailableQuestionpools(
true,
false,
true,
true);
2279 if (count($questionpools)) {
2280 $options = array(
"-1" => $this->lng->txt(
"dont_use_questionpool"));
2281 foreach ($questionpools as
$key => $value) {
2285 $pool =
new ilSelectInputGUI($this->lng->txt(
"select_questionpool"),
"qpl");
2286 $pool->
setInfo($this->lng->txt(
'select_question_pool_info'));
2288 $form->addItem($pool);
2291 $form->addCommandButton(
"importFile", $this->lng->txt(
"import"));
2292 $form->addCommandButton(
"cancel", $this->lng->txt(
"cancel"));
2304 $command =
$_POST[
"command"];
2305 if (strlen($command)) {
2306 $method = $command .
"Object";
2307 if (method_exists($this, $method)) {
2312 $this->ctrl->redirect($this,
"participants");
2325 $ilAccess = $DIC[
'ilAccess'];
2326 $ilias = $DIC[
'ilias'];
2327 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
2330 $this->ctrl->redirect($this,
"infoScreen");
2333 $isPdfDeliveryRequest = isset(
$_GET[
'pdf']) &&
$_GET[
'pdf'];
2336 $template =
new ilTemplate(
"tpl.il_as_tst_print_test_confirm.html",
true,
true,
"Modules/Test");
2338 if (!$isPdfDeliveryRequest) {
2339 $this->ctrl->setParameter($this,
"pdf",
"1");
2340 $template->setCurrentBlock(
"pdf_export");
2341 $template->setVariable(
"PDF_URL", $this->ctrl->getLinkTarget($this,
"print"));
2342 $this->ctrl->setParameter($this,
"pdf",
"");
2343 $template->setVariable(
"PDF_TEXT", $this->lng->txt(
"pdf_export"));
2346 $template->setCurrentBlock(
"navigation_buttons");
2347 $template->setVariable(
"BUTTON_PRINT", $this->lng->txt(
"print"));
2359 $print_date = mktime(date(
"H"), date(
"i"), date(
"s"), date(
"m"), date(
"d"), date(
"Y"));
2363 require_once
'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
2365 $questionHeaderBlockBuilder->setHeaderMode($this->object->getTitleOutput());
2367 if ($isPdfDeliveryRequest) {
2368 require_once
'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
2372 foreach ($this->object->questions as $question) {
2374 $question_gui = $this->
object->createQuestionGUI(
"", $question);
2376 if ($isPdfDeliveryRequest) {
2380 $questionHeaderBlockBuilder->setQuestionTitle($question_gui->object->getTitle());
2381 $questionHeaderBlockBuilder->setQuestionPoints($question_gui->object->getMaximumPoints());
2382 $questionHeaderBlockBuilder->setQuestionPosition($counter);
2383 $template->setVariable(
"QUESTION_HEADER", $questionHeaderBlockBuilder->getHTML());
2385 $template->setVariable(
"TXT_QUESTION_ID", $this->lng->txt(
'question_id_short'));
2386 $template->setVariable(
"QUESTION_ID", $question_gui->object->getId());
2387 $result_output = $question_gui->getSolutionOutput(
"", null,
false,
true,
false, $this->object->getShowSolutionFeedback());
2388 $template->setVariable(
"SOLUTION_OUTPUT", $result_output);
2389 $template->parseCurrentBlock(
"question");
2391 $max_points += $question_gui->object->getMaximumPoints();
2401 if ($isPdfDeliveryRequest) {
2402 require_once
'Modules/Test/classes/class.ilTestPDFGenerator.php';
2405 $this->tpl->setVariable(
"PRINT_CONTENT",
$template->get());
2419 $ilAccess = $DIC[
'ilAccess'];
2421 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
2424 $this->ctrl->redirect($this,
"infoScreen");
2427 $template =
new ilTemplate(
"tpl.il_as_tst_print_test_confirm.html",
true,
true,
"Modules/Test");
2431 $isPdfDeliveryRequest = isset(
$_GET[
'pdf']) &&
$_GET[
'pdf'];
2436 require_once
'Modules/Test/classes/class.ilTestQuestionHeaderBlockBuilder.php';
2438 $questionHeaderBlockBuilder->setHeaderMode($this->object->getTitleOutput());
2440 if ($isPdfDeliveryRequest) {
2441 require_once
'Services/WebAccessChecker/classes/class.ilWACSignedPath.php';
2448 foreach ($this->object->questions as $question) {
2450 $question_gui = $this->
object->createQuestionGUI(
"", $question);
2453 $questionHeaderBlockBuilder->setQuestionTitle($question_gui->object->getTitle());
2454 $questionHeaderBlockBuilder->setQuestionPoints($question_gui->object->getMaximumPoints());
2455 $questionHeaderBlockBuilder->setQuestionPosition($counter);
2456 $template->setVariable(
"QUESTION_HEADER", $questionHeaderBlockBuilder->getHTML());
2458 $template->setVariable(
"SOLUTION_OUTPUT", $question_gui->getPreview(
false));
2459 $template->parseCurrentBlock(
"question");
2461 $max_points += $question_gui->object->getMaximumPoints();
2477 if ($isPdfDeliveryRequest) {
2478 require_once
'Modules/Test/classes/class.ilTestPDFGenerator.php';
2481 $this->ctrl->setParameter($this,
"pdf",
"1");
2482 $template->setCurrentBlock(
"pdf_export");
2483 $template->setVariable(
"PDF_URL", $this->ctrl->getLinkTarget($this,
"review"));
2484 $this->ctrl->setParameter($this,
"pdf",
"");
2485 $template->setVariable(
"PDF_TEXT", $this->lng->txt(
"pdf_export"));
2488 $template->setCurrentBlock(
"navigation_buttons");
2489 $template->setVariable(
"BUTTON_PRINT", $this->lng->txt(
"print"));
2493 $this->tpl->setVariable(
"PRINT_CONTENT",
$template->get());
2500 public function defaultsObject()
2508 $ilAccess = $DIC[
'ilAccess'];
2509 $ilToolbar = $DIC[
'ilToolbar'];
2512 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
2514 $this->ctrl->redirect($this,
"infoScreen");
2521 $ilToolbar->setFormAction($this->ctrl->getFormAction($this,
'addDefaults'));
2522 $ilToolbar->addFormButton($this->lng->txt(
'add'),
'addDefaults');
2523 require_once
'Services/Form/classes/class.ilTextInputGUI.php';
2524 $ilToolbar->addInputItem(
new ilTextInputGUI($this->lng->txt(
'tst_defaults_defaults_of_test'),
'name'),
true);
2526 require_once
'Modules/Test/classes/tables/class.ilTestPersonalDefaultSettingsTableGUI.php';
2528 $defaults = $this->
object->getAvailableDefaults();
2529 $table->setData((array) $defaults);
2538 if (isset(
$_POST[
'chb_defaults']) && is_array(
$_POST[
'chb_defaults']) && count(
$_POST[
'chb_defaults'])) {
2539 foreach (
$_POST[
'chb_defaults'] as $test_default_id) {
2540 $this->
object->deleteDefaults($test_default_id);
2545 $this->defaultsObject();
2562 if (!is_array(
$_POST[
"chb_defaults"]) || 1 !== count(
$_POST[
"chb_defaults"])) {
2564 $this->lng->txt(
"tst_defaults_apply_select_one")
2567 return $this->defaultsObject();
2571 if ($this->object->evalTotalPersons() > 0) {
2573 $this->lng->txt(
"tst_defaults_apply_not_possible")
2576 return $this->defaultsObject();
2579 $defaults = &$this->
object->getTestDefaults(
$_POST[
"chb_defaults"][0]);
2580 $defaultSettings = unserialize($defaults[
"defaults"]);
2582 if (isset($defaultSettings[
'isRandomTest'])) {
2583 if ($defaultSettings[
'isRandomTest']) {
2590 } elseif (isset($defaultSettings[
'questionSetType'])) {
2591 $newQuestionSetType = $defaultSettings[
'questionSetType'];
2593 $oldQuestionSetType = $this->
object->getQuestionSetType();
2594 $questionSetTypeSettingSwitched = ($oldQuestionSetType != $newQuestionSetType);
2596 $oldQuestionSetConfig = $this->testQuestionSetConfigFactory->getQuestionSetConfigByType($oldQuestionSetType);
2599 case !$questionSetTypeSettingSwitched:
2600 case !$oldQuestionSetConfig->doesQuestionSetRelatedDataExist():
2607 require_once
'Modules/Test/classes/confirmations/class.ilTestSettingsChangeConfirmationGUI.php';
2610 $confirmation->setFormAction($this->ctrl->getFormAction($this));
2611 $confirmation->setCancel($this->lng->txt(
'cancel'),
'defaults');
2612 $confirmation->setConfirm($this->lng->txt(
'confirm'),
'confirmedApplyDefaults');
2614 $confirmation->setOldQuestionSetType($this->object->getQuestionSetType());
2615 $confirmation->setNewQuestionSetType($newQuestionSetType);
2616 $confirmation->setQuestionLossInfoEnabled(
false);
2617 $confirmation->build();
2619 $confirmation->populateParametersFromPost();
2621 $this->tpl->setContent($this->ctrl->getHTML($confirmation));
2626 if ($questionSetTypeSettingSwitched && !$this->object->getOfflineStatus()) {
2627 $this->
object->setOfflineStatus(
true);
2629 $info = $this->lng->txt(
"tst_set_offline_due_to_switched_question_set_type_setting");
2634 $this->
object->applyDefaults($defaults);
2636 ilUtil::sendSuccess($this->lng->txt(
"tst_defaults_applied"),
true);
2638 if ($questionSetTypeSettingSwitched && $oldQuestionSetConfig->doesQuestionSetRelatedDataExist()) {
2639 $oldQuestionSetConfig->removeQuestionSetRelatedData();
2642 $this->ctrl->redirect($this,
'defaults');
2650 if (strlen(
$_POST[
"name"]) > 0) {
2651 $this->
object->addDefaults(
$_POST[
'name']);
2655 $this->defaultsObject();
2660 if (in_array($this->ctrl->getCmdClass(), self::$infoScreenChildClasses)) {
2674 #if( !include 'competenzenRocker.php' ) exit; 2676 $this->ctrl->setCmd(
"showSummary");
2677 $this->ctrl->setCmdClass(
"ilinfoscreengui");
2678 $this->infoScreen();
2683 $this->ctrl->setCmd(
"showSummary");
2684 $this->ctrl->setCmdClass(
"ilinfoscreengui");
2685 $this->infoScreen(
$_GET[
'lock']);
2691 public function infoScreen($session_lock =
"")
2700 $ilAccess = $DIC[
'ilAccess'];
2702 $ilToolbar = $DIC[
'ilToolbar'];
2704 if (
$_GET[
'createRandomSolutions']) {
2708 $this->
object->createRandomSolutions(
$_GET[
'createRandomSolutions']);
2713 if (!$ilAccess->checkAccess(
"read",
"", $this->ref_id)) {
2714 $this->
ilias->raiseError($this->lng->txt(
"msg_no_perm_read"), $this->
ilias->error_obj->MESSAGE);
2721 include_once(
"./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
2723 $info->setOpenFormTag(
false);
2726 return $this->ctrl->forwardCommand(
$info);
2729 require_once
'Modules/Test/classes/class.ilTestInfoScreenToolbarFactory.php';
2731 $toolbarFactory->setTestOBJ($this->
object);
2732 $toolbar = $toolbarFactory->getToolbarInstance();
2737 $toolbar->setSessionLockString($session_lock);
2741 if ($this->object->getShowInfo()) {
2742 $info->enablePrivateNotes();
2745 if (strlen($this->object->getIntroduction())) {
2746 $info->addSection($this->lng->txt(
"tst_introduction"));
2747 $info->addProperty(
"", $this->object->prepareTextareaOutput($this->object->getIntroduction(),
true) .
2748 $info->getHiddenToggleButton());
2750 $info->addSection(
"");
2751 $info->addProperty(
"",
$info->getHiddenToggleButton());
2754 $info->addSection($this->lng->txt(
"tst_general_properties"));
2755 if ($this->object->getShowInfo()) {
2756 $info->addProperty($this->lng->txt(
"author"), $this->
object->getAuthor());
2757 $info->addProperty($this->lng->txt(
"title"), $this->
object->getTitle());
2759 if (!$this->object->getOfflineStatus() && $this->
object->isComplete($this->testQuestionSetConfigFactory->getQuestionSetConfig())) {
2761 if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess(
"read",
"", $this->ref_id)) {
2762 if ($this->object->getShowInfo() || !$this->
object->getForceJS()) {
2764 $checked_javascript =
false;
2765 if ($this->object->getJavaScriptOutput()) {
2766 $checked_javascript =
true;
2771 if ($this->object->getNrOfTries() != 1) {
2772 if ($this->object->getUsePreviousAnswers() == 0) {
2773 if ($this->object->getShowInfo()) {
2774 $info->addProperty($this->lng->txt(
"tst_use_previous_answers"), $this->lng->txt(
"tst_dont_use_previous_answers"));
2777 $use_previous_answers =
false;
2778 if (
$ilUser->prefs[
"tst_use_previous_answers"]) {
2779 $checked_previous_answers =
true;
2781 $info->addPropertyCheckbox($this->lng->txt(
"tst_use_previous_answers"),
"chb_use_previous_answers", 1, $this->lng->txt(
"tst_use_previous_answers_user"), $checked_previous_answers);
2788 $info->hideFurtherSections(
false);
2790 if ($this->object->getShowInfo()) {
2791 $info->addSection($this->lng->txt(
"tst_sequence_properties"));
2792 $info->addProperty($this->lng->txt(
"tst_sequence"), $this->lng->txt(($this->object->getSequenceSettings() ==
TEST_FIXED_SEQUENCE)?
"tst_sequence_fixed":
"tst_sequence_postpone"));
2794 $info->addSection($this->lng->txt(
"tst_heading_scoring"));
2795 $info->addProperty($this->lng->txt(
"tst_text_count_system"), $this->lng->txt(($this->object->getCountSystem() ==
COUNT_PARTIAL_SOLUTIONS)?
"tst_count_partial_solutions":
"tst_count_correct_solutions"));
2796 $info->addProperty($this->lng->txt(
"tst_score_mcmr_questions"), $this->lng->txt(($this->object->getMCScoring() ==
SCORE_ZERO_POINTS_WHEN_UNANSWERED)?
"tst_score_mcmr_zero_points_when_unanswered":
"tst_score_mcmr_use_scoring_system"));
2797 if ($this->object->isRandomTest()) {
2798 $info->addProperty($this->lng->txt(
"tst_pass_scoring"), $this->lng->txt(($this->object->getPassScoring() ==
SCORE_BEST_PASS)?
"tst_pass_best_pass":
"tst_pass_last_pass"));
2801 $info->addSection($this->lng->txt(
"tst_score_reporting"));
2802 $score_reporting_text =
"";
2803 switch ($this->object->getScoreReporting()) {
2805 $score_reporting_text = $this->lng->txt(
"tst_report_after_test");
2808 $score_reporting_text = $this->lng->txt(
"tst_report_after_first_question");
2811 $score_reporting_text = $this->lng->txt(
"tst_report_after_date");
2814 $score_reporting_text = $this->lng->txt(
"tst_report_after_passed");
2817 $score_reporting_text = $this->lng->txt(
"tst_report_never");
2820 $info->addProperty($this->lng->txt(
"tst_score_reporting"), $score_reporting_text);
2821 $reporting_date = $this->
object->getReportingDate();
2822 if ($reporting_date) {
2823 #preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $reporting_date, $matches); 2824 #$txt_reporting_date = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1])); 2825 #$info->addProperty($this->lng->txt("tst_score_reporting_date"), $txt_reporting_date); 2827 $this->lng->txt(
'tst_score_reporting_date'),
2832 $info->addSection($this->lng->txt(
"tst_session_settings"));
2833 $info->addProperty($this->lng->txt(
"tst_nr_of_tries"), ($this->
object->getNrOfTries() == 0)?$this->lng->txt(
"unlimited"):$this->
object->getNrOfTries());
2834 if ($this->object->getNrOfTries() != 1) {
2835 $info->addProperty($this->lng->txt(
"tst_nr_of_tries_of_user"), (
$toolbar->getTestSession()->getPass() ==
false)?$this->lng->txt(
"tst_no_tries"):
$toolbar->getTestSequence()->getPass());
2838 if ($this->object->getEnableProcessingTime()) {
2839 $info->addProperty($this->lng->txt(
"tst_processing_time"), $this->
object->getProcessingTime());
2841 if (strlen($this->object->getAllowedUsers()) && ($this->object->getAllowedUsersTimeGap())) {
2842 $info->addProperty($this->lng->txt(
"tst_allowed_users"), $this->
object->getAllowedUsers());
2845 $starting_time = $this->
object->getStartingTime();
2846 if ($this->object->isStartingTimeEnabled() && $starting_time != 0) {
2849 $ending_time = $this->
object->getEndingTime();
2850 if ($this->object->isEndingTimeEnabled() && $ending_time != 0) {
2853 $info->addMetaDataSections($this->object->getId(), 0, $this->
object->getType());
2857 $this->ctrl->forwardCommand(
$info);
2862 require_once
'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImportFails.php';
2866 require_once
'Modules/Test/classes/class.ilTestSkillLevelThresholdImportFails.php';
2870 $this->ctrl->redirect($this,
'infoScreen');
2876 $ilLocator = $DIC[
'ilLocator'];
2877 switch ($this->ctrl->getCmd()) {
2880 case "redirectToInfoScreen":
2887 case "outCorrectSolution":
2889 case "showAnswersOfUser":
2890 case "outUserResultsOverview":
2891 case "backFromSummary":
2892 case "show_answers":
2895 case "outTestSummary":
2896 case "outQuestionSummary":
2897 case "gotoQuestion":
2898 case "selectImagemapRegion":
2899 case "confirmSubmitAnswers":
2900 case "finalSubmission":
2902 case "outUserPassDetails":
2903 case "checkPassword":
2904 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this,
"infoScreen"),
"",
$_GET[
"ref_id"]);
2907 case "evalAllUsers":
2908 case "evalUserDetail":
2909 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this,
"eval_stat"),
"",
$_GET[
"ref_id"]);
2916 case "importVerifiedFile":
2917 case "cancelImport":
2920 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this,
""),
"",
$_GET[
"ref_id"]);
2939 $output_gui = $guiFactory->create($this->
object);
2941 $output_gui->certificateEditor();
2952 $help = $DIC[
'ilHelp'];
2953 $help->setScreenIdComponent(
"tst");
2956 require_once
'Services/Link/classes/class.ilLink.php';
2958 $this->
getTabsManager()->setParentBackLabel($this->lng->txt(
'back_to_objective_container'));
2970 $DIC->ctrl()->redirectByClass(
'ilObjTestGUI',
"infoScreen");
2984 $ilAccess = $DIC[
'ilAccess'];
2988 if ($ilAccess->checkAccess(
"read",
"", $a_target)) {
2990 $_GET[
"baseClass"] =
"ilObjTestGUI";
2991 $_GET[
"cmd"] =
"infoScreen";
2992 $_GET[
"ref_id"] = $a_target;
2993 include_once(
"ilias.php");
2996 } elseif ($ilAccess->checkAccess(
"read",
"", ROOT_FOLDER_ID)) {
2998 $lng->txt(
"msg_no_perm_read_item"),
3015 if ($this->create_question_mode) {
3020 $ilToolbar = $DIC[
'ilToolbar'];
3024 require_once
'Services/UIComponent/Button/classes/class.ilLinkButton.php';
3026 $ilCtrl->saveParameter($this,
'q_mode');
3028 $ilCtrl->setParameterByClass(
'iltestexpresspageobjectgui',
'test_express_mode', 1);
3029 $ilCtrl->setParameter($this,
'test_express_mode', 1);
3030 $ilCtrl->setParameterByClass(
'iltestexpresspageobjectgui',
'q_id', $_REQUEST[
'q_id']);
3031 $ilCtrl->setParameter($this,
'q_id', $_REQUEST[
'q_id']);
3032 $ilToolbar->setFormAction(
$ilCtrl->getFormActionByClass(
'iltestexpresspageobjectgui',
'edit'));
3034 if ($this->object->evalTotalPersons() == 0) {
3055 $ilToolbar->addFormButton(
$lng->txt(
"ass_create_question"),
"addQuestion");
3057 $ilToolbar->addSeparator();
3059 if ($this->object->getPoolUsage()) {
3060 require_once
'Modules/Test/classes/tables/class.ilTestQuestionBrowserTableGUI.php';
3064 $show_separator =
true;
3068 $questions = $this->
object->getQuestionTitlesAndIndexes();
3072 foreach ($questions as
$id => $label) {
3073 $options[
$id] = $label .
' [' . $this->lng->txt(
'question_id_short') .
': ' .
$id .
']';
3076 $optionKeys = array_keys(
$options);
3105 if (count($questions)) {
3106 if (isset($show_separator) && $show_separator) {
3107 $ilToolbar->addSeparator();
3111 $btn->setCaption(
"test_prev_question");
3112 $btn->setUrl(
$ilCtrl->getLinkTargetByClass(
'iltestexpresspageobjectgui',
'prevQuestion'));
3113 $ilToolbar->addButtonInstance($btn);
3115 if (count(
$options) <= 1 || $optionKeys[0] == $qid) {
3116 $btn->setDisabled(
true);
3120 $btn->setCaption(
"test_next_question");
3121 $btn->setUrl(
$ilCtrl->getLinkTargetByClass(
'iltestexpresspageobjectgui',
'nextQuestion'));
3122 $ilToolbar->addButtonInstance($btn);
3124 if (count(
$options) <= 1 || $optionKeys[count($optionKeys) - 1] == $qid) {
3125 $btn->setDisabled(
true);
3129 if (count($questions) > 1) {
3130 $ilToolbar->addSeparator();
3132 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
3134 $si->addCustomAttribute(
"onChange=\"forms['ilToolbar'].submit();\"");
3138 $si->setValue($qid);
3141 $ilToolbar->addInputItem(
$si,
true);
3144 $total = $this->
object->evalTotalPersons();
3159 if (count($questions) && !
$total) {
3160 $ilCtrl->setParameter($this,
'q_id', $_REQUEST[
'q_id']);
3161 $ilToolbar->addSeparator();
3162 $ilToolbar->addButton(
$lng->txt(
"test_delete_page"),
$ilCtrl->getLinkTarget($this,
"removeQuestions"));
3165 if (count($questions) > 1 && !
$total) {
3166 $ilToolbar->addSeparator();
3167 $ilToolbar->addButton(
$lng->txt(
"test_move_page"),
$ilCtrl->getLinkTarget($this,
"movePageForm"));
3171 $ilAccess = $DIC[
'ilAccess'];
3174 $online_access =
false;
3175 if ($this->object->getFixedParticipants()) {
3176 include_once
"./Modules/Test/classes/class.ilObjTestAccess.php";
3178 if ($online_access_result ===
true) {
3179 $online_access =
true;
3183 if (!$this->object->getOfflineStatus() && $this->
object->isComplete($this->testQuestionSetConfigFactory->getQuestionSetConfig())) {
3184 if ((!$this->object->getFixedParticipants() || $online_access) && $ilAccess->checkAccess(
"read",
"", $this->ref_id)) {
3185 $testSession = $this->testSessionFactory->getSession();
3187 $executable = $this->
object->isExecutable($testSession,
$ilUser->getId(), $allowPassIncrease =
true);
3189 if ($executable[
"executable"]) {
3191 $player_instance = $player_factory->getPlayerGUI();
3193 if ($testSession->getActiveId() > 0) {
3194 $ilToolbar->addSeparator();
3195 $ilToolbar->addButton(
$lng->txt(
'tst_resume_test'),
$ilCtrl->getLinkTarget($player_instance,
'resumePlayer'));
3197 $ilToolbar->addSeparator();
3198 $ilToolbar->addButton(
$lng->txt(
'tst_start_test'),
$ilCtrl->getLinkTarget($player_instance,
'startTest'));
3208 $this->ctrl->redirect($this,
'questions');
3214 foreach ($questionIds as $q_id) {
3216 $newIds[$q_id] = $newId;
3228 require_once
'Modules/TestQuestionPool/classes/class.assQuestion.php';
3231 $newtitle = $question_gui->object->getTitle();
3232 if ($question_gui->object->questionTitleExists($targetParentId, $question_gui->object->getTitle())) {
3234 while ($question_gui->object->questionTitleExists($targetParentId, $question_gui->object->getTitle() .
" ($counter)")) {
3237 $newtitle = $question_gui->object->getTitle() .
" ($counter)";
3240 return $question_gui->object->createNewOriginalFromThisDuplicate($targetParentId, $newtitle);
3249 $ilObjDataCache = $DIC[
'ilObjDataCache'];
3251 $qplId = $ilObjDataCache->lookupObjId($_REQUEST[
'sel_qpl']);
3254 foreach (
$result->ids as $oldId => $newId) {
3259 $oldOriginal->delete($oldOriginal->getId());
3262 $questionInstance->setNewOriginalId($newId);
3265 ilUtil::sendSuccess($this->lng->txt(
'tst_qst_added_to_pool_' . (count(
$result->ids) > 1 ?
'p' :
's')),
true);
3266 $this->ctrl->redirect($this,
'questions');
3273 include_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
3277 $title->setRequired(
true);
3283 $form->addCommandButton(
'createQuestionPoolAndCopy',
$lng->txt(
'create'));
3285 if (isset($_REQUEST[
'q_id']) && is_array($_REQUEST[
'q_id'])) {
3286 foreach ($_REQUEST[
'q_id'] as
$id) {
3288 $hidden->setValue($id);
3289 $form->addItem($hidden);
3306 require_once
'Modules/TestQuestionPool/classes/class.assQuestion.php';
3310 'copyAndLinkToQuestionpool' == $this->ctrl->getCmd() &&
3311 (!isset($_REQUEST[
'q_id']) || !is_array($_REQUEST[
'q_id']))
3314 $this->ctrl->redirect($this,
'questions');
3317 if (isset($_REQUEST[
'q_id']) && is_array($_REQUEST[
'q_id'])) {
3318 foreach ($_REQUEST[
'q_id'] as $q_id) {
3325 if (
$type !==
'tst') {
3327 $this->ctrl->redirect($this,
'questions');
3340 if ($_REQUEST[
'title']) {
3341 $title = $_REQUEST[
'title'];
3343 $title = $_REQUEST[
'txt_qpl'];
3352 $_REQUEST[
'sel_qpl'] =
$ref_id;
3374 $ilTabs = $DIC[
'ilTabs'];
3378 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.il_as_tst_qpl_select_copy.html",
"Modules/Test");
3379 $questionpools = &$this->
object->getAvailableQuestionpools(
false,
false,
false,
true,
false,
"write");
3380 if (count($questionpools) == 0) {
3381 $this->tpl->setCurrentBlock(
"option");
3382 $this->tpl->setVariable(
"VALUE_QPL",
"");
3383 $this->tpl->parseCurrentBlock();
3385 foreach ($questionpools as
$key => $value) {
3386 $this->tpl->setCurrentBlock(
"option");
3387 $this->tpl->setVariable(
"VALUE_OPTION",
$key);
3388 $this->tpl->setVariable(
"TEXT_OPTION", $value[
"title"]);
3389 $this->tpl->parseCurrentBlock();
3393 if (isset($_REQUEST[
'q_id']) && is_array($_REQUEST[
'q_id'])) {
3394 foreach ($_REQUEST[
'q_id'] as
$id) {
3395 $this->tpl->setCurrentBlock(
"hidden");
3396 $this->tpl->setVariable(
"HIDDEN_NAME",
"q_id[]");
3397 $this->tpl->setVariable(
"HIDDEN_VALUE", $id);
3398 $this->tpl->parseCurrentBlock();
3399 $this->tpl->setCurrentBlock(
"adm_content");
3402 $this->tpl->setVariable(
"FORM_ACTION", $this->ctrl->getFormAction($this));
3404 if (count($questionpools) == 0) {
3405 $this->tpl->setVariable(
"TXT_QPL_SELECT", $this->lng->txt(
"tst_enter_questionpool"));
3406 $cmd =
'createQuestionPoolAndCopy';
3408 $this->tpl->setVariable(
"TXT_QPL_SELECT", $this->lng->txt(
"tst_select_questionpool"));
3411 $this->tpl->setVariable(
"CMD_SUBMIT", $cmd);
3412 $this->tpl->setVariable(
"BTN_SUBMIT", $this->lng->txt(
"submit"));
3413 $this->tpl->setVariable(
"BTN_CANCEL", $this->lng->txt(
"cancel"));
3417 case 'copyAndLinkQuestionsToPool':
3419 $hidden->setValue(1);
3420 $createForm->addItem($hidden);
3422 case 'copyQuestionsToPool':
3425 $createForm->setFormAction($this->ctrl->getFormAction($this));
3427 $this->tpl->parseCurrentBlock();
3435 $simpleSetters = array(
3438 'use_pool' =>
'setPoolUsage',
3439 'question_set_type' =>
'setQuestionSetType',
3442 'intro_enabled' =>
'setIntroductionEnabled',
3443 'showinfo' =>
'setShowInfo',
3446 'chb_starting_time' =>
'setStartingTimeEnabled',
3447 'chb_ending_time' =>
'setEndingTimeEnabled',
3448 'password_enabled' =>
'setPasswordEnabled',
3449 'fixedparticipants' =>
'setFixedParticipants',
3450 'limitUsers' =>
'setLimitUsersEnabled',
3453 'nr_of_tries' =>
'setNrOfTries',
3454 'chb_processing_time' =>
'setEnableProcessingTime',
3455 'kiosk' =>
'setKiosk',
3456 'examid_in_test_pass' =>
'setShowExamIdInTestPassEnabled',
3459 'title_output' =>
'setTitleOutput',
3461 'chb_shuffle_questions' =>
'setShuffleQuestions',
3462 'offer_hints' =>
'setOfferingQuestionHintsEnabled',
3463 'instant_feedback_contents' =>
'setInstantFeedbackOptionsByArray',
3464 'instant_feedback_trigger' =>
'setForceInstantFeedbackEnabled',
3465 'answer_fixation_handling' => null,
3466 'obligations_enabled' =>
'setObligationsEnabled',
3469 'chb_use_previous_answers' =>
'setUsePreviousAnswers',
3470 'chb_show_cancel' =>
'setShowCancel',
3471 'chb_postpone' =>
'setPostponingEnabled',
3472 'list_of_questions' =>
'setListOfQuestionsSettings',
3473 'chb_show_marker' =>
'setShowMarker',
3476 'enable_examview' =>
'setEnableExamview',
3477 'showfinalstatement' =>
'setShowFinalStatement',
3478 'redirection_enabled' => null,
3479 'sign_submission' =>
'setSignSubmission',
3480 'mailnotification' =>
'setMailNotification',
3483 'count_system' =>
'setCountSystem',
3484 'mc_scoring' =>
'setMCScoring',
3485 'score_cutting' =>
'setScoreCutting',
3486 'pass_scoring' =>
'setPassScoring',
3487 'pass_deletion_allowed' =>
'setPassDeletionAllowed',
3490 'results_access_enabled' =>
'setScoreReporting',
3491 'grading_status' =>
'setShowGradingStatusEnabled',
3492 'grading_mark' =>
'setShowGradingMarkEnabled',
3495 'solution_details' =>
'setShowSolutionDetails',
3496 'solution_feedback' =>
'setShowSolutionFeedback',
3497 'solution_suggested' =>
'setShowSolutionSuggested',
3498 'solution_printview' =>
'setShowSolutionPrintview',
3499 'highscore_enabled' =>
'setHighscoreEnabled',
3500 'solution_signature' =>
'setShowSolutionSignature',
3501 'examid_in_test_res' =>
'setShowExamIdInTestResultsEnabled',
3502 'exp_sc_short' =>
'setExportSettingsSingleChoiceShort',
3505 'anonymity' =>
'setAnonymity',
3506 'enable_archiving' =>
'setEnableArchiving' 3509 if (!$templateData[
'results_presentation'][
'value']) {
3510 $templateData[
'results_presentation'][
'value'] = array();
3513 foreach ($simpleSetters as $field => $setter) {
3514 if ($templateData[$field] && strlen($setter)) {
3515 $object->$setter($templateData[$field][
'value']);
3521 if ($templateData[$field][
'value'] > 0) {
3529 case 'redirection_enabled':
3538 if (strlen($templateData[$field][
'value'])) {
3547 case 'answer_fixation_handling':
3548 switch ($templateData[$field][
'value']) {
3577 $ilAccess = $DIC[
'ilAccess'];
3578 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
3581 $this->ctrl->redirect($this,
"infoScreen");
3587 $orders = $obligations = array();
3589 foreach ((array) $_REQUEST[
'order'] as $qId => $order) {
3590 $id = (int) str_replace(
'q_',
'', $qId);
3592 $orders[
$id] = $order;
3595 if ($this->object->areObligationsEnabled() && isset($_REQUEST[
'obligatory']) && is_array($_REQUEST[
'obligatory'])) {
3596 foreach ($_REQUEST[
'obligatory'] as $qId => $obligation) {
3597 $id = (int) str_replace(
'q_',
'', $qId);
3600 $obligations[
$id] = $obligation;
3605 $this->
object->setQuestionOrderAndObligations(
3610 ilUtil::sendSuccess($this->lng->txt(
'saved_successfully'),
true);
3611 $ilCtrl->redirect($this,
'questions');
3624 include_once
"Services/Form/classes/class.ilPropertyFormGUI.php";
3626 $form->setFormAction(
$ilCtrl->getFormAction($this,
"movePage"));
3627 $form->setTitle(
$lng->txt(
"test_move_page"));
3630 $old_pos->setValue($_REQUEST[
'q_id']);
3631 $form->addItem($old_pos);
3633 $questions = $this->
object->getQuestionTitlesAndIndexes();
3634 if (!is_array($questions)) {
3635 $questions = array();
3638 foreach ($questions as $k => $q) {
3639 if ($k == $_REQUEST[
'q_id']) {
3640 unset($questions[$k]);
3643 $questions[$k] =
$lng->txt(
'behind') .
' ' . $q;
3645 #$questions['0'] = $lng->txt('first'); 3648 0 =>
$lng->txt(
'first')
3650 foreach ($questions as $k => $q) {
3651 $options[$k] = $q .
' [' . $this->lng->txt(
'question_id_short') .
': ' . $k .
']';
3656 $form->addItem($pos);
3658 $form->addCommandButton(
"movePage",
$lng->txt(
"submit"));
3659 $form->addCommandButton(
"showPage",
$lng->txt(
"cancel"));
3661 return $tpl->setContent(
$form->getHTML());
3667 $ilAccess = $DIC[
'ilAccess'];
3668 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
3671 $this->ctrl->redirect($this,
"infoScreen");
3674 $this->
object->moveQuestionAfter($_REQUEST[
'q_id'], $_REQUEST[
'position_after']);
3683 $ilCtrl->setParameterByClass(
'iltestexpresspageobjectgui',
'q_id', $_REQUEST[
'q_id']);
3684 $ilCtrl->redirectByClass(
'iltestexpresspageobjectgui',
'showPage');
3690 $ilAccess = $DIC[
'ilAccess'];
3691 if (!$ilAccess->checkAccess(
"write",
"", $this->ref_id)) {
3694 $this->ctrl->redirect($this,
"infoScreen");
3697 if ($_REQUEST[
'q_id'] && !is_array($_REQUEST[
'q_id'])) {
3698 $ids = array($_REQUEST[
'q_id']);
3699 } elseif ($_REQUEST[
'q_id']) {
3700 $ids = $_REQUEST[
'q_id'];
3703 $this->ctrl->redirect($this,
'questions');
3708 $questionTitles = $this->
object->getQuestionTitles();
3710 foreach ($ids as
$id) {
3711 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
3714 $title = $question->object->getTitle();
3716 while (in_array(
$title .
' (' .
$i .
')', $questionTitles)) {
3720 $title .=
' (' . $i .
')';
3722 $questionTitles[] =
$title;
3724 $new_id = $question->object->duplicate(
false,
$title);
3727 $clone->object->setObjId($this->object->getId());
3728 $clone->object->saveToDb();
3730 $this->
object->insertQuestion($this->testQuestionSetConfigFactory->getQuestionSetConfig(), $new_id,
true);
3736 ilUtil::sendSuccess($this->lng->txt(
'copy_questions_success'),
true);
3738 $this->ctrl->redirect($this,
'questions');
3743 require_once
'Modules/Course/classes/Objectives/class.ilLOSettings.php';
3748 $this->objectiveOrientedContainer->setObjId($containerObjId);
3749 $this->objectiveOrientedContainer->setRefId($containerRefId);
const MATCHING_QUESTION_IDENTIFIER
const MULTIPLE_CHOICE_QUESTION_IDENTIFIER
copyQuestionsToPoolObject()
static getSettingsTemplateConfig()
getQuestionpoolCreationForm()
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
setTestAccess($testAccess)
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
const PDF_PRINT_VIEW_QUESTIONS
This class represents an option in a radio group.
static _getAvailableQuestionpools($use_object_id=false, $equal_points=false, $could_be_offline=false, $showPath=false, $with_questioncount=false, $permission="read", $usr_id="")
Returns the available question pools for the active user.
static getAllSettingsTemplates($a_type, $a_include_auto_generated=false)
Get all settings templates of type.
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
static _getOriginalId($question_id)
Returns the original id of a question.
copyToQuestionpoolObject()
static getQuestionTypeFromDb($question_id)
get question type for question id
userResultsGatewayObject()
const ERROR_TEXT_IDENTIFIER
createQuestionObject()
Called when a new question should be created from a test.
setRedirectionMode($redirection_mode=0)
getTabs()
adds tabs to tab gui object
confirmedApplyDefaultsObject()
setTestAccess($testAccess)
Export User Interface Class.
trackTestObjectReadEvent()
reviewobject()
Review tab to create a print of all questions without points and solutions.
fullscreenObject()
show fullscreen view
GUI class for the workflow of copying objects.
static originalQuestionExists($questionId)
const QUESTION_SET_TYPE_RANDOM
type setting value for random question set
copyQuestionToPool($sourceQuestionId, $targetParentId)
$testQuestionSetConfigFactory
uploadObject($redirect=true)
display status information or report errors messages in case of error
const ADDITIONAL_CONTENT_EDITING_MODE_PAGE_OBJECT
constant for additional content editing mode "pageobject"
Class ilTestPersonalDefaultSettingsTableGUI.
Generic feedback page GUI class.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static _needsManualScoring($question_id)
cancelCreateQuestionObject()
Called when the creation of a new question is cancelled.
buildPageViewToolbar($qid=0)
Questions per page.
static getQuestionTypeByTypeId($type_id)
const SCORE_REPORTING_AFTER_PASSED
determineObjectiveOrientedContainer()
setTestAccess($testAccess)
static & _instanciateQuestionGUI($question_id)
Creates an instance of a question gui with a given question id.
insertQuestionsBeforeObject()
Insert checked questions before the actual selection.
const ANSWER_FIXATION_NONE
addDidacticTemplateOptions(array &$a_options)
const QT_ORDERING_HORIZONTAL
const KPRIM_CHOICE_QUESTION_IDENTIFIER
if(!array_key_exists('StateId', $_REQUEST)) $id
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
const LONG_MENU_QUESTION_IDENTIFIER
static isObjectiveTest($a_trst_ref_id)
Check if test ref_id is used in an objective course.
Class ilUnitConfigurationRepository.
const TEXTSUBSET_QUESTION_IDENTIFIER
static _goto($a_target)
Redirect script to call a test with the test reference id.
static setUseRelativeDates($a_status)
set use relative dates
static _lookupTitle($a_id)
lookup object title
const REDIRECT_NONE
Redirect after finishing test constants.
historyObject()
Creates the change history for a test.
downloadFileObject()
download file
createQuestionpoolTargetObject($cmd)
Called when a new question should be created from a test Important: $cmd may be overwritten if no que...
createObject()
create new object form
static _isActive()
Static getter.
insertRandomSelectionObject()
Inserts a random selection into the test.
redirectTo_ilObjTestSettingsGeneralGUI_showForm_Object()
const CMD_BROWSE_QUESTIONS
confirmRemoveQuestionsObject()
Remove questions from the test after confirmation.
static lookupParentObjId($questionId)
ilDBInterface $ilDB
static accessViolationRedirect()
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
static $infoScreenChildClasses
setRedirectionUrl($redirection_url=null)
static _getAllReferences($a_id)
get all reference ids of object
addDefaultsObject()
Adds the defaults of this test to the defaults.
Base Exception for all Exceptions relating to Modules/Test.
participantsActionObject()
Evaluates the actions on the participants page.
afterSave(ilObject $a_new_object)
save object public
static useRelativeDates()
check if relative dates are used
const FILE_UPLOAD_IDENTIFIER
const QT_MULTIPLE_CHOICE_SR
const JAVAAPPLET_QUESTION_IDENTIFIER
cancelRemoveQuestionsObject()
Cancels the removal of questions from the test.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
isCommandClassAnyInfoScreenChild()
prepareSubGuiOutput()
prepares ilias to get output rendered by sub gui class
saveOrderAndObligationsObject()
setCustomRolesForSelection($a_roles)
Set custom roles for mapping to LTI roles.
copyAndLinkQuestionsToPoolObject()
ilObjectDataCache $ilObjDataCache
const SCORE_REPORTING_IMMIDIATLY
static _lookupOnlineTestAccess($a_test_id, $a_user_id)
Checks if a user is allowd to run an online exam.
prepareOutput($a_show_subobjects=true)
prepare output
removeImportFailsObject()
questionsTabGatewayObject()
const ANSWER_FIXATION_ON_INSTANT_FEEDBACK
static appendUrlParameterString($a_url, $a_par, $xml_style=false)
append URL parameter string ("par1=value1&par2=value2...") to given URL string
copyAndLinkToQuestionpoolObject()
catch(Exception $e) $message
setAutosaveIval($autosave_ival)
deleteRegisteredImportFails()
const NUMERIC_QUESTION_IDENTIFIER
if(isset($_POST['submit'])) $form
GUI class for LTI provider object settings.
removeQuestionsObject()
Called when a selection of questions should be removed from the test.
setPositionInsertCommandsEnabled(bool $positionInsertCommandsEnabled)
$objectiveOrientedContainer
const ORDERING_HORIZONTAL_IDENTIFIER
const SCORE_ZERO_POINTS_WHEN_UNANSWERED
initImportForm($a_new_type)
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
const COUNT_PARTIAL_SOLUTIONS
applyDefaultsObject($confirmed=false)
Applies the selected test defaults.
static _getQuestionGUI($question_type, $question_id=-1)
Creates a question gui representation and returns the alias to the question gui note: please do not u...
download_paragraphObject()
download source code paragraph
fetchAuthoringQuestionIdParameter()
Class ilObjectGUI Basic methods of all Output classes.
static _lookupObjId($a_id)
const ORDERING_QUESTION_IDENTIFIER
insertQuestionsAfterObject()
Insert checked questions after the actual selection.
special template class to simplify handling of ITX/PEAR
createQuestionPool($name="dummy", $description="")
Creates a new questionpool and returns the reference id.
__construct($refId=null)
Constructor public.
This class represents a text property in a property form.
Output class for assessment test evaluation.
static infoPanel($a_keep=true)
redirection script todo: (a better solution should control the processing via a xml file) ...
setTitleAndDescription()
called by prepare output
static getSyntaxStylePath()
get syntax style path
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually...
static getContentStylePath($a_style_id, $add_random=true)
get content style path
const TEXT_QUESTION_IDENTIFIER
Basic GUI class for assessment questions.
static isQuestionObligationPossible($questionId)
checks wether the obligation for question with given id is possible or not
const EDIT_CONTEXT_AUTHORING
const TAB_ID_LEARNING_PROGRESS
static _lookupType($a_id, $a_reference=false)
lookup object type
filterObject()
Sets the filter for the question browser.
setTabsManager($tabsManager)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const SCORE_REPORTING_FINISHED
const FLASHAPPLET_QUESTION_IDENTIFIER
browseForQuestionsObject()
static _createImportDirectory()
creates data directory for import files (data_dir/tst_data/tst_<id>/import, depending on data directo...
const TEST_FIXED_SEQUENCE
Test constants.
const ADDITIONAL_CONTENT_EDITING_MODE_DEFAULT
constant for additional content editing mode "default"
executeCommand()
execute command
exportObject()
Gateway for exports initiated from workspace, as there is a generic forward to {objTypeMainGUI}::expo...
Test results import parser.
redirectToInfoScreenObject()
const SCORE_REPORTING_DATE
Specific feedback page GUI class.
createQuestionPoolAndCopyObject()
randomselectObject()
Creates a form for random selection of questions.
importVerifiedFileObject()
imports question(s) into the questionpool (after verification)
createRandomSelectionObject()
Offers a random selection for insertion in the test.
certificateObject()
Shows the certificate editor.
static _getLog($ts_from, $ts_to, $test_id, $test_only=false)
Retrieve assessment log datasets from the database.
cancelRandomSelectObject()
Cancels the form for random selection of questions.
applyTemplate($templateData, ilObjTest $object)
const LP_CONTEXT_REPOSITORY
This class represents a text area property in a property form.
importFileObject($parent_id=null, $a_catch_errors=true)
form for new test object import
executeCreateQuestionObject()
Called when a new question should be created from a test after confirmation.
static isAdditionalQuestionContentEditingModePageObjectEnabled()
returns the fact wether content editing with ilias page editor is enabled for questions or not ...
const QUESTION_SET_TYPE_FIXED
type setting value for fixed question set
setFollowupQuestionAnswerFixationEnabled($followupQuestionAnswerFixationEnabled)
getCreationMode()
get creation mode
movePageFormObject()
Move current page.
getRefId()
get reference id public
const RENDER_PURPOSE_PRINT_PDF
getObjectiveOrientedContainer()
Class ilLocalUnitConfigurationGUI.
getDidacticTemplateVar($a_type)
Get didactic template setting from creation screen.
moveQuestionsObject()
Marks selected questions for moving.
populateQuestionBrowserToolbarButtons(ilToolbarGUI $toolbar, $context)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
static setTokenMaxLifetimeInSeconds($token_max_lifetime_in_seconds)
Service GUI class for tests.
insertQuestionsObject()
Insert questions from the questionbrowser into the test.
printobject()
Print tab to create a print of all questions with points and solutions.
static generatePDF($pdf_output, $output_mode, $filename=null, $purpose=null)
if(empty($password)) $table
const QT_MULTIPLE_CHOICE_MR
uploadTstObject()
imports test and question(s)
deleteDefaultsObject()
Deletes selected test defaults.
const PDF_OUTPUT_DOWNLOAD
const ANSWER_FIXATION_ON_IFB_OR_FUQST
setInstantFeedbackAnswerFixationEnabled($instantFeedbackAnswerFixationEnabled)
backObject()
Called when the back button in the question browser was pressed.
static redirect($a_script)
const QUESTION_SET_TYPE_DYNAMIC
type setting value for dynamic question set (continues testing mode)
const SINGLE_CHOICE_QUESTION_IDENTIFIER
addHeaderAction()
Add header action menu.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
copyQuestionsToPool($questionIds, $qplId)
const RENDER_PURPOSE_PREVIEW
ilTestScoringByQuestionsGUI
ilTestExpressPageObjectGUI: assMultipleChoiceGUI, assClozeTestGUI, assMatchingQuestionGUI ilTestExpr...
Class ilObjUserTrackingGUI.
getReturnLocation($a_cmd, $a_location="")
get return location for command (command is method name without "Object", e.g.
const SUBTAB_ID_QST_PAGE_VIEW
static _getLink($a_ref_id, $a_type='', $a_params=array(), $append="")
Settings template application class.
const CLOZE_TEST_IDENTIFIER
Question identifier constants.
static instantiateQuestionGUI($a_question_id)
Creates an instance of a question gui with a given question id.
static _setImportDirectory($a_import_dir=null)
set import directory
static prepareGenerationRequest($service, $purpose)
Prepare the content processing for a PDF generation request This function should be called as in a re...
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static _getTestDefaults($test_defaults_id)
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
const ANSWER_FIXATION_ON_FOLLOWUP_QUESTION
static _getImportDirectory()
Get the import directory location of the test.
const CMD_SHOW_FORM
command constants
resetFilterObject()
Resets the filter for the question browser.
Confirmation screen class.
const IMAGEMAP_QUESTION_IDENTIFIER
deleteRegisteredImportFails()
const SUBTAB_ID_QST_LIST_VIEW
const FORMULA_QUESTION_IDENTIFIER
removeQuestionsForm($checked_questions)
Displays a form to confirm the removal of questions from the test.