4require_once
'./Services/Object/classes/class.ilObjectGUI.php';
5require_once
'./Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
6require_once
'./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php';
7require_once
'./Modules/TestQuestionPool/exceptions/class.ilTestQuestionPoolException.php';
8require_once
'./Modules/Test/classes/inc.AssessmentConstants.php';
9require_once
'./Modules/Test/classes/class.ilObjAssessmentFolder.php';
10require_once
'./Modules/Test/classes/class.ilObjTest.php';
48 $lng->loadLanguageModule(
"assessment");
52 $this->ctrl->saveParameter($this, array(
53 "ref_id",
"test_ref_id",
"calling_test",
"test_express_mode",
"q_id",
'tax_node',
'calling_consumer',
'consumer_context'
55 $this->ctrl->saveParameter($this,
"calling_consumer");
56 $this->ctrl->saveParameterByClass(
'ilAssQuestionPageGUI',
'calling_consumer');
57 $this->ctrl->saveParameterByClass(
'ilAssQuestionPageGUI',
'consumer_context');
58 $this->ctrl->saveParameterByClass(
'ilobjquestionpoolgui',
'calling_consumer');
59 $this->ctrl->saveParameterByClass(
'ilobjquestionpoolgui',
'consumer_context');
78 global
$ilUser, $ilLocator, $ilAccess, $ilNavigationHistory,
$tpl,
$ilCtrl,
$ilErr, $ilTabs,
$lng,
$ilDB, $ilPluginAdmin;
80 if ((!$ilAccess->checkAccess(
"read",
"",
$_GET[
"ref_id"])) && (!$ilAccess->checkAccess(
"visible",
"",
$_GET[
"ref_id"])))
83 $ilias->raiseError($this->lng->txt(
"permission_denied"),
$ilias->error_obj->MESSAGE);
88 $ilAccess->checkAccess(
"read",
"",
$_GET[
"ref_id"]))
90 if(
'qpl' == $this->object->getType())
92 $ilNavigationHistory->addItem(
$_GET[
"ref_id"],
93 "ilias.php?baseClass=ilObjQuestionPoolGUI&cmd=questions&ref_id=".
$_GET[
"ref_id"],
"qpl");
97 $cmd = $this->ctrl->getCmd(
"questions");
98 $next_class = $this->ctrl->getNextClass($this);
100 if( in_array($next_class, array(
'',
'ilobjquestionpoolgui')) &&
$cmd ==
'questions' )
107 $this->ctrl->setReturn($this,
"questions");
112 if (
$_GET[
"q_id"] < 1)
114 $q_type = (
$_POST[
"sel_question_types"] !=
"")
115 ?
$_POST[
"sel_question_types"]
116 :
$_GET[
"sel_question_types"];
118 if (
$cmd !=
"createQuestion" &&
$cmd !=
"createQuestionForTest"
119 && $next_class !=
"ilassquestionpagegui")
121 if ((
$_GET[
"test_ref_id"] !=
"") or (
$_GET[
"calling_test"]))
132 case "ilcommonactiondispatchergui":
133 include_once(
"Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
135 $this->ctrl->forwardCommand($gui);
138 case 'ilmdeditorgui':
139 if(!$ilAccess->checkAccess(
'write',
'',$this->object->getRefId()))
141 $ilErr->raiseError($this->lng->txt(
'permission_denied'),
$ilErr->WARNING);
144 include_once
'Services/MetaData/classes/class.ilMDEditorGUI.php';
146 $md_gui =
new ilMDEditorGUI($this->object->getId(), 0, $this->object->getType());
147 $md_gui->addObserver($this->
object,
'MDUpdateListener',
'General');
148 $this->ctrl->forwardCommand($md_gui);
151 case 'ilassquestionpreviewgui':
153 $this->ctrl->saveParameter($this,
"q_id");
155 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionPreviewGUI.php';
158 $gui->initQuestion((
int)
$_GET[
'q_id'], $this->object->getId());
159 $gui->initPreviewSettings($this->object->getRefId());
160 $gui->initPreviewSession(
$ilUser->getId(), (
int)
$_GET[
'q_id']);
161 $gui->initHintTracking();
162 $gui->initStyleSheets();
165 $ilHelp->setScreenIdComponent(
"qpl");
167 $this->ctrl->forwardCommand($gui);
170 case "ilassquestionpagegui":
171 include_once(
"./Services/Style/classes/class.ilObjStyleSheet.php");
172 $this->tpl->setCurrentBlock(
"ContentStyle");
174 $this->tpl->parseCurrentBlock();
177 $this->tpl->setCurrentBlock(
"SyntaxStyle");
179 $this->tpl->parseCurrentBlock();
181 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
183 $q_gui->setQuestionTabs();
184 $q_gui->outAdditionalOutput();
185 $q_gui->object->setObjId($this->object->getId());
187 $q_gui->setTargetGuiClass(
null);
188 $q_gui->setQuestionActionCmd(
null);
190 $question = $q_gui->object;
191 $this->ctrl->saveParameter($this,
"q_id");
192 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php");
193 $this->lng->loadLanguageModule(
"content");
194 $this->ctrl->setReturnByClass(
"ilAssQuestionPageGUI",
"view");
195 $this->ctrl->setReturn($this,
"questions");
197 $page_gui->setEditPreview(
true);
198 $page_gui->setEnabledTabs(
false);
199 if (strlen($this->ctrl->getCmd()) == 0 && !isset(
$_POST[
"editImagemapForward_x"]))
201 $this->ctrl->setCmdClass(get_class($page_gui));
202 $this->ctrl->setCmd(
"preview");
204 $page_gui->setQuestionHTML(array($q_gui->object->getId() => $q_gui->getPreview(TRUE)));
205 $page_gui->setTemplateTargetVar(
"ADM_CONTENT");
206 $page_gui->setOutputMode(
"edit");
207 $page_gui->setHeader($question->getTitle());
208 $page_gui->setPresentationTitle($question->getTitle());
209 $ret = $this->ctrl->forwardCommand($page_gui);
213 case 'ilpermissiongui':
214 include_once(
"Services/AccessControl/classes/class.ilPermissionGUI.php");
216 $ret = $this->ctrl->forwardCommand($perm_gui);
219 case 'ilobjectcopygui':
220 include_once
'./Services/Object/classes/class.ilObjectCopyGUI.php';
223 $this->ctrl->forwardCommand($cp);
226 case "ilquestionpoolexportgui":
227 require_once
'Modules/TestQuestionPool/classes/class.ilQuestionPoolExportGUI.php';
229 $exp_gui->addFormat(
'zip', $this->lng->txt(
'qpl_export_xml'), $this,
'createExportQTI');
230 $exp_gui->addFormat(
'xls', $this->lng->txt(
'qpl_export_excel'), $this,
'createExportExcel');
231 $ret = $this->ctrl->forwardCommand($exp_gui);
234 case "ilinfoscreengui":
238 case 'ilassquestionhintsgui':
241 $this->ctrl->setReturn($this,
"questions");
244 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
246 $questionGUI->object->setObjId($this->object->getId());
247 $questionGUI->setQuestionTabs();
249 $ilHelp->setScreenIdComponent(
"qpl");
252 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionHintsGUI.php';
258 case 'illocalunitconfigurationgui':
259 if(!$ilAccess->checkAccess(
'write',
'',$this->object->getRefId()))
261 $ilErr->raiseError($this->lng->txt(
'permission_denied'),
$ilErr->WARNING);
264 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
266 $questionGUI->object->setObjId($this->object->getId());
267 $questionGUI->setQuestionTabs();
269 $this->ctrl->setReturn($this,
'questions');
271 require_once
'Modules/TestQuestionPool/classes/class.ilLocalUnitConfigurationGUI.php';
272 require_once
'Modules/TestQuestionPool/classes/class.ilUnitConfigurationRepository.php';
279 case 'ilassquestionfeedbackeditinggui':
282 $this->ctrl->setReturn($this,
"questions");
285 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
287 $questionGUI->object->setObjId($this->object->getId());
288 $questionGUI->setQuestionTabs();
290 $ilHelp->setScreenIdComponent(
"qpl");
293 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionFeedbackEditingGUI.php';
299 case 'ilobjquestionpoolsettingsgeneralgui':
300 require_once
'Modules/TestQuestionPool/classes/class.ilObjQuestionPoolSettingsGeneralGUI.php';
302 $this->ctrl->forwardCommand($gui);
305 case "ilobjtaxonomygui":
307 require_once
'Modules/TestQuestionPool/classes/class.ilObjQuestionPoolTaxonomyEditingCommandForwarder.php';
309 $this->
object, $ilDB, $ilPluginAdmin,
$ilCtrl, $ilTabs,
$lng
312 $forwarder->forward();
316 case 'ilquestionbrowsertablegui':
320 case "ilobjquestionpoolgui":
323 if(
$cmd ==
'questions' )
325 $this->ctrl->setParameter($this,
'q_id',
'');
333 $this->ctrl->setReturn($this,
"questions");
334 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
336 $q_gui->object->setObjId($this->object->getId());
337 if($this->object->getType() ==
'qpl')
339 $q_gui->setTaxonomyIds($this->object->getTaxonomyIds());
340 $this->
object->addQuestionChangeListeners($q_gui->object);
342 $q_gui->setQuestionTabs();
344 $ilHelp->setScreenIdComponent(
"qpl");
345 $ret = $this->ctrl->forwardCommand($q_gui);
349 if ( !(strtolower(
$_GET[
"baseClass"]) ==
"iladministrationgui"
350 || strtolower(
$_GET[
'baseClass']) ==
'ilrepositorygui')
363 include_once(
"./Modules/File/classes/class.ilObjFile.php");
365 $fileObj->sendFile();
374 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php");
376 $page_gui->showMediaFullscreen();
393 $_POST[
"filter_text"] =
"";
394 $_POST[
"sel_filter_type"] =
"";
403 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
405 $pg_obj->send_paragraph (
$_GET[
"par_id"],
$_GET[
"downloadtitle"]);
414 $this->ctrl->setParameter($this,
'new_type',
$_REQUEST[
'new_type']);
415 if ($_FILES[
"xmldoc"][
"error"] > UPLOAD_ERR_OK)
420 $this->ctrl->redirect($this,
'create');
425 include_once
"./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
429 $file = pathinfo($_FILES[
"xmldoc"][
"name"]);
430 $full_path = $basedir.
"/".$_FILES[
"xmldoc"][
"name"];
431 $GLOBALS[
'ilLog']->write(__METHOD__.
": full path " . $full_path);
432 include_once
"./Services/Utilities/classes/class.ilUtil.php";
434 $GLOBALS[
'ilLog']->write(__METHOD__.
": full path " . $full_path);
435 if (strcmp($_FILES[
"xmldoc"][
"type"],
"text/xml") == 0)
437 $qti_file = $full_path;
446 $subdir = basename(
$file[
"basename"],
".".
$file[
"extension"]);
453 include_once
"./Services/QTI/classes/class.ilQTIParser.php";
455 $result = $qtiParser->startParsing();
456 $founditems =& $qtiParser->getFoundItems();
457 if (count($founditems) == 0)
467 $this->ctrl->redirect($this,
'create');
474 foreach ($founditems as $item)
476 if (strlen($item[
"type"]))
494 $this->ctrl->redirect($this,
'create');
499 $_SESSION[
"qpl_import_xml_file"] = $xml_file;
500 $_SESSION[
"qpl_import_qti_file"] = $qti_file;
501 $_SESSION[
"qpl_import_subdir"] = $subdir;
503 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.qpl_import_verification.html",
504 "Modules/TestQuestionPool");
505 $row_class = array(
"tblrow1",
"tblrow2");
507 foreach ($founditems as $item)
509 $this->tpl->setCurrentBlock(
"verification_row");
510 $this->tpl->setVariable(
"ROW_CLASS", $row_class[$counter++ % 2]);
511 $this->tpl->setVariable(
"QUESTION_TITLE", $item[
"title"]);
512 $this->tpl->setVariable(
"QUESTION_IDENT", $item[
"ident"]);
513 include_once
"./Services/QTI/classes/class.ilQTIItem.php";
514 switch ($item[
"type"])
517 $type = $this->lng->txt(
"assClozeTest");
520 $type = $this->lng->txt(
"assImagemapQuestion");
523 $type = $this->lng->txt(
"assJavaApplet");
526 $type = $this->lng->txt(
"assMatchingQuestion");
529 $type = $this->lng->txt(
"assMultipleChoice");
532 $type = $this->lng->txt(
"assKprimChoice");
535 $type = $this->lng->txt(
"assSingleChoice");
538 $type = $this->lng->txt(
"assOrderingQuestion");
541 $type = $this->lng->txt(
"assTextQuestion");
544 $type = $this->lng->txt(
"assNumeric");
547 $type = $this->lng->txt(
"assTextSubset");
550 $type = $this->lng->txt($item[
"type"]);
554 if (strcmp($type,
"-" . $item[
"type"] .
"-") == 0)
556 global $ilPluginAdmin;
557 $pl_names = $ilPluginAdmin->getActivePluginsForSlot(
IL_COMP_MODULE,
"TestQuestionPool",
"qst");
558 foreach ($pl_names as $pl_name)
561 if (strcmp($pl->getQuestionType(), $item[
"type"]) == 0)
563 $type = $pl->getQuestionTypeTranslation();
567 $this->tpl->setVariable(
"QUESTION_TYPE", $type);
568 $this->tpl->parseCurrentBlock();
571 $this->tpl->setCurrentBlock(
"import_qpl");
572 if (is_file($xml_file))
575 $fh = @fopen($xml_file,
"r") or die(
"");
576 $xml = @fread($fh, filesize($xml_file));
578 if (preg_match(
"/<ContentObject.*?MetaData.*?General.*?Title[^>]*?>([^<]*?)</", $xml, $matches))
580 $this->tpl->setVariable(
"VALUE_NEW_QUESTIONPOOL", $matches[1]);
583 $this->tpl->setVariable(
"TEXT_CREATE_NEW_QUESTIONPOOL", $this->lng->txt(
"qpl_import_create_new_qpl"));
584 $this->tpl->parseCurrentBlock();
586 $this->tpl->setCurrentBlock(
"adm_content");
587 $this->tpl->setVariable(
"TEXT_TYPE", $this->lng->txt(
"question_type"));
588 $this->tpl->setVariable(
"TEXT_TITLE", $this->lng->txt(
"question_title"));
589 $this->tpl->setVariable(
"FOUND_QUESTIONS_INTRODUCTION", $this->lng->txt(
"qpl_import_verify_found_questions"));
592 $this->tpl->setVariable(
"VERIFICATION_HEADING", $this->lng->txt(
"import_questions_into_qpl"));
593 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
597 $this->tpl->setVariable(
"VERIFICATION_HEADING", $this->lng->txt(
"import_qpl"));
599 $this->ctrl->setParameter($this,
"new_type", $this->type);
600 $this->tpl->setVariable(
"FORMACTION", $this->ctrl->getFormAction($this));
605 $this->tpl->setVariable(
"VALUE_IMPORT", $this->lng->txt(
"import"));
606 $this->tpl->setVariable(
"VALUE_CANCEL", $this->lng->txt(
"cancel"));
607 $value_questions_only = 0;
608 if ($questions_only) $value_questions_only = 1;
609 $this->tpl->setVariable(
"VALUE_QUESTIONS_ONLY", $value_questions_only);
611 $this->tpl->parseCurrentBlock();
621 if (
$_POST[
"questions_only"] == 1)
627 include_once(
"./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php");
631 $newObj->setType(
$_GET[
"new_type"]);
633 $newObj->setTitle(
"dummy");
635 $newObj->setDescription(
"questionpool import");
637 $newObj->create(
true);
639 $newObj->createReference();
641 $newObj->putInTree(
$_GET[
"ref_id"]);
643 $newObj->setPermissions(
$_GET[
"ref_id"]);
645 $newObj->notify(
"new",
$_GET[
"ref_id"],
$_GET[
"parent_non_rbac_id"],
$_GET[
"ref_id"],$newObj->getRefId());
649 include_once
"./Services/QTI/classes/class.ilQTIParser.php";
651 $result = $qtiParser->startParsing();
654 if (strlen(
$_SESSION[
"qpl_import_xml_file"]))
656 include_once (
"./Modules/LearningModule/classes/class.ilContObjParser.php");
658 $contParser->setQuestionMapping($qtiParser->getImportMapping());
659 $contParser->startParsing();
663 $qpl_name =
$_POST[
"qpl_new"];
664 if ((strcmp($qpl_name, $newObj->getTitle()) != 0) && (strlen($qpl_name) > 0))
666 $newObj->setTitle($qpl_name);
671 include_once
"./Services/Utilities/classes/class.ilUtil.php";
674 if (
$_POST[
"questions_only"] == 1)
676 $this->ctrl->redirect($this,
"questions");
682 "&baseClass=ilObjQuestionPoolGUI");
688 if (
$_POST[
"questions_only"] == 1)
690 $this->ctrl->redirect($this,
"questions");
694 $this->ctrl->redirect($this,
"cancel");
703 $upload_valid =
true;
705 if($form->checkInput())
709 $form->setValuesByPost();
715 $form->setValuesByPost();
730 $this->tpl->setContent($form->getHtml());
738 require_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
740 $form->setTitle($this->lng->txt(
'import_question'));
741 $form->setFormAction($this->ctrl->getFormAction($this,
'upload'));
744 $file->setRequired(
true);
745 $form->addItem(
$file);
747 $form->addCommandButton(
'upload', $this->lng->txt(
'upload'));
748 $form->addCommandButton(
'questions', $this->lng->txt(
'cancel'));
760 $addContEditMode =
$_POST[
'add_quest_cont_edit_mode'];
767 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
769 $this->
object->addQuestionChangeListeners($q_gui->object);
770 $q_gui->object->setObjId($this->object->getId());
771 $q_gui->object->setAdditionalContentEditingMode($addContEditMode);
772 $q_gui->object->createNewQuestion();
773 $this->ctrl->setParameterByClass(get_class($q_gui),
"q_id", $q_gui->object->getId());
774 $this->ctrl->setParameterByClass(get_class($q_gui),
"sel_question_types",
$_POST[
"sel_question_types"]);
775 $this->ctrl->redirectByClass(get_class($q_gui),
"editQuestion");
785 require_once
'Modules/Test/classes/class.ilObjAssessmentFolder.php';
788 $addContEditMode =
$_REQUEST[
'add_quest_cont_edit_mode'];
795 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
797 $q_gui->object->setObjId($this->object->getId());
798 $q_gui->object->setAdditionalContentEditingMode($addContEditMode);
799 $q_gui->object->createNewQuestion();
801 $class = get_class($q_gui);
802 $qId = $q_gui->object->getId();
806 $class =
$_GET[
"sel_question_types"] .
'gui';
810 $this->ctrl->setParameterByClass($class,
"q_id", $qId);
811 $this->ctrl->setParameterByClass($class,
"sel_question_types",
$_REQUEST[
"sel_question_types"]);
812 $this->ctrl->setParameterByClass($class,
"prev_qid",
$_REQUEST[
"prev_qid"]);
814 $this->ctrl->redirectByClass($class,
"editQuestion");
827 "&baseClass=ilObjQuestionPoolGUI");
833 $type =
$_GET[
"sel_question_types"];
834 $this->editQuestionForm($type);
844 if (count(
$_POST[
"q_id"]) < 1)
847 $this->ctrl->redirect($this,
"questions");
851 $deleteable_questions =& $this->
object->getDeleteableQuestionDetails(
$_POST[
"q_id"]);
852 include_once
"./Modules/TestQuestionPool/classes/tables/class.ilQuestionBrowserTableGUI.php";
854 $table_gui->setEditable($rbacsystem->checkAccess(
'write',
$_GET[
'ref_id']));
855 $table_gui->setData($deleteable_questions);
856 $this->tpl->setVariable(
'ADM_CONTENT', $table_gui->getHTML());
866 foreach (
$_POST[
"q_id"] as $key => $value)
868 $this->
object->deleteQuestion($value);
869 $this->
object->cleanupClipboard($value);
873 $this->ctrl->setParameter($this,
'q_id',
'');
875 $this->ctrl->redirect($this,
"questions");
883 $this->ctrl->redirect($this,
"questions");
892 if (count(
$_POST[
"q_id"]) > 0)
894 include_once(
"./Modules/TestQuestionPool/classes/class.ilQuestionpoolExport.php");
896 $export_file = $qpl_exp->buildExportFile();
899 include_once
"./Services/Utilities/classes/class.ilUtil.php";
907 $this->ctrl->redirect($this,
"questions");
912 require_once
'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
915 include_once
"./Modules/TestQuestionPool/classes/tables/class.ilQuestionBrowserTableGUI.php";
917 $table_gui->resetOffset();
918 $table_gui->writeFilterToSession();
924 require_once
'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
927 include_once
"./Modules/TestQuestionPool/classes/tables/class.ilQuestionBrowserTableGUI.php";
929 $table_gui->resetOffset();
930 $table_gui->resetFilter();
941 if(get_class($this->
object) ==
"ilObjTest")
943 if (
$_GET[
"calling_test"] > 0)
946 $q_id =
$_GET[
"q_id"];
950 ilUtil::redirect(
"ilias.php?ref_id=".
$ref_id.
"&q_id=".$q_id.
"&test_express_mode=1&cmd=showPage&cmdClass=iltestexpresspageobjectgui&baseClass=ilObjTestGUI");
952 ilUtil::redirect(
"ilias.php?ref_id=".
$ref_id.
"&test_express_mode=1&cmd=showPage&cmdClass=iltestexpresspageobjectgui&baseClass=ilObjTestGUI");
959 else if(isset(
$_GET[
'calling_consumer']) && (
int)
$_GET[
'calling_consumer'])
967 require_once
'Services/Link/classes/class.ilLink.php';
971 $this->
object->purgeQuestions();
975 require_once
'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
979 $table_gui->setPreventDoubleSubmission(
false);
981 if( $rbacsystem->checkAccess(
'write',
$_GET[
'ref_id']) )
986 $this->lng->txt(
"ass_create_question"),
987 $this->ctrl->getLinkTarget($this,
'createQuestionForm')
990 $this->tpl->setContent(
991 $this->ctrl->getHTML($toolbar) . $this->ctrl->getHTML($table_gui)
996 $this->tpl->setContent( $this->ctrl->getHTML($table_gui) );
999 if( $this->object->getShowTaxonomies() )
1001 $this->lng->loadLanguageModule(
'tax');
1003 require_once
'Services/Taxonomy/classes/class.ilTaxonomyExplorerGUI.php';
1005 foreach($taxIds as $taxId)
1007 if( $taxId != $this->object->getNavTaxonomyId() )
1013 $this,
'showNavTaxonomy', $taxId,
'ilobjquestionpoolgui',
'questions'
1016 if( !$taxExp->handleCommand() )
1018 $this->tpl->setLeftContent($taxExp->getHTML().
" ");
1030 $this->tpl->setContent( $this->ctrl->getHTML($form) );
1039 require_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
1041 $form->setTitle($this->lng->txt(
'ass_create_question'));
1042 $form->setFormAction($this->ctrl->getFormAction($this));
1047 foreach( $this->object->getQuestionTypes(
false,
true) as $translation =>
$data )
1052 require_once(
"Services/Form/classes/class.ilSelectInputGUI.php");
1057 $form->addItem(
$si);
1063 $ri =
new ilRadioGroupInputGUI($this->lng->txt(
"tst_add_quest_cont_edit_mode"),
"add_quest_cont_edit_mode");
1066 $this->lng->txt(
'tst_add_quest_cont_edit_mode_default'),
1071 $this->lng->txt(
'tst_add_quest_cont_edit_mode_page_object'),
1077 $form->addItem($ri,
true);
1083 $form->addItem($hi,
true);
1088 $form->addCommandButton(
'createQuestion', $this->lng->txt(
'create'));
1089 $form->addCommandButton(
'questions', $this->lng->txt(
'cancel'));
1097 public function printObject()
1104 $ilToolbar->setFormAction($this->ctrl->getFormAction($this,
'print'));
1105 require_once
'Services/Form/classes/class.ilSelectInputGUI.php';
1107 $mode->setOptions(array(
1108 'overview' => $this->lng->txt(
'overview'),
1109 'detailed' => $this->lng->txt(
'detailed_output_solutions'),
1110 'detailed_printview' => $this->lng->txt(
'detailed_output_printview')
1114 $ilToolbar->setFormName(
'printviewOptions');
1115 $ilToolbar->addInputItem($mode,
true);
1116 $ilToolbar->addFormButton($this->lng->txt(
'submit'),
'print');
1118 include_once
"./Modules/TestQuestionPool/classes/tables/class.ilQuestionPoolPrintViewTableGUI.php";
1120 $data = $this->
object->getPrintviewQuestions();
1124 $totalPoints +=
$d[
'points'];
1126 $table_gui->setTotalPoints($totalPoints);
1127 $table_gui->initColumns();
1128 $table_gui->setData(
$data);
1129 $this->tpl->setContent($table_gui->getHTML());
1135 $this->update = $this->
object->update();
1144 if (array_key_exists(
"qpl_clipboard",
$_SESSION))
1146 if($this->object->pasteFromClipboard())
1159 $this->ctrl->redirect($this,
"questions");
1167 if (count(
$_POST[
"q_id"]) > 0)
1169 foreach (
$_POST[
"q_id"] as $key => $value)
1171 $this->
object->copyToClipboard($value);
1179 $this->ctrl->redirect($this,
"questions");
1187 if (count(
$_POST[
"q_id"]) > 0)
1189 foreach (
$_POST[
"q_id"] as $key => $value)
1191 $this->
object->moveToClipboard($value);
1199 $this->ctrl->redirect($this,
"questions");
1208 if ($rbacsystem->checkAccess(
"write",
$_GET[
'ref_id']))
1210 include_once(
"./Modules/TestQuestionPool/classes/class.ilQuestionpoolExport.php");
1211 $question_ids =& $this->
object->getAllQuestionIds();
1213 $qpl_exp->buildExportFile();
1214 $this->ctrl->redirectByClass(
"ilquestionpoolexportgui",
"");
1221 if ($rbacsystem->checkAccess(
"write",
$_GET[
'ref_id']))
1223 include_once(
"./Modules/TestQuestionPool/classes/class.ilQuestionpoolExport.php");
1224 $question_ids =& $this->
object->getAllQuestionIds();
1226 $qpl_exp->buildExportFile();
1227 $this->ctrl->redirectByClass(
"ilquestionpoolexportgui",
"");
1236 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
1238 $this->ctrl->redirectByClass(get_class($q_gui),
"editQuestion");
1243 include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
1245 $form->setTarget(
"_top");
1246 $form->setFormAction($this->ctrl->getFormAction($this));
1247 $form->setTitle($this->lng->txt(
"import_qpl"));
1249 include_once(
"./Services/Form/classes/class.ilFileInputGUI.php");
1250 $fi =
new ilFileInputGUI($this->lng->txt(
"import_file"),
"xmldoc");
1251 $fi->setSuffixes(array(
"zip"));
1252 $fi->setRequired(
true);
1253 $form->addItem($fi);
1255 $form->addCommandButton(
"importFile", $this->lng->txt(
"import"));
1256 $form->addCommandButton(
"cancel", $this->lng->txt(
"cancel"));
1267 if($form->checkInput())
1273 $this->tpl->setContent($form->getHTML());
1279 switch ($this->ctrl->getCmd())
1286 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this,
""),
"",
$_GET[
"ref_id"]);
1289 if (
$_GET[
"q_id"] > 0)
1291 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
1295 $q_gui->object->setObjId($this->object->getId());
1296 $title = $q_gui->object->getTitle();
1301 $ilLocator->addItem($title, $this->ctrl->getLinkTargetByClass(get_class($q_gui),
"editQuestion"));
1306 $this->ctrl->setParameter($this,
'q_id',
'');
1307 $this->ctrl->redirect($this);
1317 parent::setTitleAndDescription();
1318 if (
$_GET[
"q_id"] > 0)
1320 include_once
"./Modules/TestQuestionPool/classes/class.assQuestionGUI.php";
1324 $q_gui->object->setObjId($this->object->getId());
1325 $title = $q_gui->object->getTitle();
1330 $this->tpl->setTitle($title);
1331 $this->tpl->setDescription($q_gui->object->getComment());
1334 $this->tpl->setTitleIcon($this->object->plugin->getImagePath(
"icon_".$this->object->getType().
".svg"), $this->lng->txt(
"obj_" . $this->object->getType()));
1344 $this->ctrl->setParameter($this,
'q_id',
'');
1345 $this->ctrl->redirect($this);
1350 $this->tpl->setTitle($this->object->getTitle());
1351 $this->tpl->setDescription($this->object->getLongDescription());
1363 global $ilAccess, $ilHelp;
1365 $currentUserHasWriteAccess = $ilAccess->checkAccess(
"write",
"", $this->object->getRefId());
1367 $ilHelp->setScreenIdComponent(
"qpl");
1369 $next_class = strtolower($this->ctrl->getNextClass());
1370 switch ($next_class)
1373 case "ilpermissiongui":
1374 case "ilmdeditorgui":
1375 case "ilquestionpoolexportgui":
1378 case 'ilobjtaxonomygui':
1379 case 'ilobjquestionpoolsettingsgeneralgui':
1381 if( $currentUserHasWriteAccess )
1393 $force_active =
false;
1394 $commands =
$_POST[
"cmd"];
1395 if (is_array($commands))
1397 foreach ($commands as $key => $value)
1399 if (preg_match(
"/^delete_.*/", $key, $matches) ||
1400 preg_match(
"/^addSelectGap_.*/", $key, $matches) ||
1401 preg_match(
"/^addTextGap_.*/", $key, $matches) ||
1402 preg_match(
"/^deleteImage_.*/", $key, $matches) ||
1403 preg_match(
"/^upload_.*/", $key, $matches) ||
1404 preg_match(
"/^addSuggestedSolution_.*/", $key, $matches)
1407 $force_active =
true;
1411 if (array_key_exists(
"imagemap_x",
$_POST))
1413 $force_active =
true;
1417 $force_active = ((strtolower($this->ctrl->getCmdClass()) == strtolower(get_class($this)) || strlen($this->ctrl->getCmdClass()) == 0) &&
1418 $this->ctrl->getCmd() ==
"")
1422 $tabs_gui->addTarget(
"assQuestions",
1423 $this->ctrl->getLinkTarget($this,
"questions"),
1424 array(
"questions",
"filter",
"resetFilter",
"createQuestion",
1425 "importQuestions",
"deleteQuestions",
"filterQuestionBrowser",
1426 "view",
"preview",
"editQuestion",
"exec_pg",
1427 "addItem",
"upload",
"save",
"cancel",
"addSuggestedSolution",
1428 "cancelExplorer",
"linkChilds",
"removeSuggestedSolution",
1429 "add",
"addYesNo",
"addTrueFalse",
"createGaps",
"saveEdit",
1430 "setMediaMode",
"uploadingImage",
"uploadingImagemap",
"addArea",
1431 "deletearea",
"saveShape",
"back",
"addPair",
"uploadingJavaapplet",
1432 "addParameter",
"assessment",
"addGIT",
"addST",
"addPG",
"delete",
1433 "toggleGraphicalAnswers",
"deleteAnswer",
"deleteImage",
"removeJavaapplet"),
1434 "",
"", $force_active);
1436 if ($ilAccess->checkAccess(
"visible",
"", $this->ref_id))
1438 $tabs_gui->addTarget(
"info_short",
1439 $this->ctrl->getLinkTarget($this,
"infoScreen"),
1440 array(
"infoScreen",
"showSummary"));
1443 if ($ilAccess->checkAccess(
"write",
"",
$_GET[
'ref_id']))
1446 $tabs_gui->addTarget(
1447 'settings', $this->ctrl->getLinkTargetByClass(
'ilObjQuestionPoolSettingsGeneralGUI'),
1448 array(), array(
'ilObjQuestionPoolSettingsGeneralGUI',
'ilObjTaxonomyGUI')
1453 $tabs_gui->addTarget(
"print_view",
1454 $this->ctrl->getLinkTarget($this,
'print'),
1458 if ($ilAccess->checkAccess(
"write",
"", $this->object->getRefId()))
1461 $tabs_gui->addTarget(
"meta_data",
1462 $this->ctrl->getLinkTargetByClass(
'ilmdeditorgui',
'listSection'),
1463 "",
"ilmdeditorgui");
1471 if( $currentUserHasWriteAccess )
1473 $tabs_gui->addTarget(
"export",
1474 $this->ctrl->getLinkTargetByClass(
"ilquestionpoolexportgui",
""),
1475 "",
"ilquestionpoolexportgui");
1478 if ($ilAccess->checkAccess(
"edit_permission",
"", $this->object->getRefId()))
1480 $tabs_gui->addTarget(
"perm_settings",
1481 $this->ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm"), array(
"perm",
"info",
"owner"),
'ilpermissiongui');
1488 'qpl_settings_subtab_general',
1489 $this->ctrl->getLinkTargetByClass(
'ilObjQuestionPoolSettingsGeneralGUI'),
1490 '',
'ilObjQuestionPoolSettingsGeneralGUI'
1494 'qpl_settings_subtab_taxonomies',
1495 $this->ctrl->getLinkTargetByClass(
'ilObjTaxonomyGUI',
'editAOTaxonomySettings'),
1496 '',
'ilObjTaxonomyGUI'
1507 $this->ctrl->setCmd(
"showSummary");
1508 $this->ctrl->setCmdClass(
"ilinfoscreengui");
1517 global
$ilErr, $ilAccess;
1519 if(!$ilAccess->checkAccess(
"visible",
"", $this->ref_id))
1521 $ilErr->raiseError($this->lng->txt(
"msg_no_perm_read"));
1524 include_once(
"./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
1526 $info->enablePrivateNotes();
1529 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
1531 $this->ctrl->forwardCommand($info);
1546 if ($ilAccess->checkAccess(
"write",
"", $a_target))
1548 $_GET[
"baseClass"] =
"ilObjQuestionPoolGUI";
1549 $_GET[
"cmd"] =
"questions";
1550 $_GET[
"ref_id"] = $a_target;
1551 include_once(
"ilias.php");
1554 else if ($ilAccess->checkAccess(
"read",
"", ROOT_FOLDER_ID))
1573 global $rbacsystem,
$ilDB,
$lng, $ilPluginAdmin;
1575 include_once
"./Modules/TestQuestionPool/classes/tables/class.ilQuestionBrowserTableGUI.php";
1576 $table_gui =
new ilQuestionBrowserTableGUI($this,
'questions', (($rbacsystem->checkAccess(
'write',
$_GET[
'ref_id']) ?
true :
false)),
false, $taxIds);
1577 $table_gui->setEditable($rbacsystem->checkAccess(
'write',
$_GET[
'ref_id']));
1579 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php';
1582 foreach ($table_gui->getFilterItems() as $item)
1584 if( substr($item->getPostVar(), 0, strlen(
'tax_')) ==
'tax_' )
1586 $v = $item->getValue();
1588 if( is_array($v) && count($v) && !(
int)$v[0] )
1593 $taxId = substr($item->getPostVar(), strlen(
'tax_'));
1594 $questionList->addTaxonomyFilter($taxId, $item->getValue());
1596 elseif( $item->getValue() !==
false )
1598 $questionList->addFieldFilter($item->getPostVar(), $item->getValue());
1602 if( $this->object->isNavTaxonomyActive() && (
int)
$_GET[
'tax_node'] )
1604 $questionList->addTaxonomyFilter( $this->object->getNavTaxonomyId(), array((
int)
$_GET[
'tax_node']) );
1607 $questionList->load();
1608 $data = $questionList->getQuestionDataArray();
1610 $table_gui->setData(
$data);
& _getQuestionGUI($question_type, $question_id=-1)
Creates a question gui representation and returns the alias to the question gui note: please do not u...
Abstract basic class which is to be extended by the concrete assessment question type classes.
const ADDITIONAL_CONTENT_EDITING_MODE_DEFAULT
constant for additional content editing mode "default"
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
const ADDITIONAL_CONTENT_EDITING_MODE_PAGE_OBJECT
constant for additional content editing mode "pageobject"
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static _getLink($a_ref_id, $a_type='', $a_params=array(), $append="")
Class ilLocalUnitConfigurationGUI.
static isAdditionalQuestionContentEditingModePageObjectEnabled()
returns the fact wether content editing with ilias page editor is enabled for questions or not
Class ilObjQuestionPoolGUI.
ilObjQuestionPoolGUI()
Constructor @access public.
addSettingsSubTabs(ilTabsGUI $tabs)
filterQuestionBrowserObject()
uploadQplObject($questions_only=false)
imports question(s) into the questionpool
confirmDeleteQuestionsObject()
delete questions
afterSave(ilObject $a_new_object)
save object @access public
updateObject()
updates object entry in object_data
download_paragraphObject()
download source code paragraph
deleteQuestionsObject()
delete questions confirmation screen
& createQuestionForTestObject()
create new question
filterObject()
set question list filter
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
questionsObject()
list questions of question pool
addLocatorItems()
should be overwritten to add object specific items (repository items are preloaded)
importVerifiedFileObject()
imports question(s) into the questionpool (after verification)
uploadObject()
imports question(s) into the questionpool
moveObject()
mark one or more question objects for moving
& createQuestionObject()
create new question
buildCreateQuestionForm()
pasteObject()
paste questios from the clipboard into the question pool
resetQuestionBrowserObject()
initImportForm($a_new_type)
Init object import form.
importFileObject()
form for new questionpool object import
cancelDeleteQuestionsObject()
Cancel question deletion.
& editQuestionForTestObject()
edit question
setTitleAndDescription()
called by prepare output
exportQuestionObject()
export question
infoScreenForward()
show information screen
executeCommand()
execute command
createExportQTI()
create export file
static _goto($a_target)
Redirect script to call a test with the question pool reference id.
buildQuestionBrowserTableGUI($taxIds)
createQuestionFormObject()
copyObject()
copy one or more question objects to the clipboard
downloadFileObject()
download file
resetFilterObject()
resets filter
importQuestionsObject(ilPropertyFormGUI $form=null)
display the import form to import questions into the questionpool
fullscreenObject()
show fullscreen view
getTabs(&$tabs_gui)
adds tabs to tab gui object
_getImportDirectory()
get import directory of lm
static _createImportDirectory()
creates data directory for import files (data_dir/qpl_data/qpl_<id>/import, depending on data directo...
_setImportDirectory($a_import_dir=null)
set import directory
getContentStylePath($a_style_id)
get content style path
getSyntaxStylePath()
get syntax style path
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
_setImportDirectory($a_import_dir=null)
set import directory
GUI class for the workflow of copying objects.
getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Class ilObjectGUI Basic methods of all Output classes.
ilObjectGUI($a_data, $a_id=0, $a_call_by_reference=true, $a_prepare_output=true)
Constructor @access public.
prepareOutput()
prepare output
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
getCreationMode()
get creation mode
Class ilObject Basic functions for all objects.
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
getRefId()
get reference id @access public
static _getIcon($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
Export User Interface Class.
Export class for questionpools.
This class represents an option in a radio group.
addSubTabTarget($a_text, $a_link, $a_cmd="", $a_cmdClass="", $a_frame="", $a_activate=false, $a_dir_text=false)
DEPRECATED.
Taxonomy explorer GUI class.
Class ilUnitConfigurationRepository.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static sendQuestion($a_info="", $a_keep=false)
Send Question to Screen.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static redirect($a_script)
http redirect to other script
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static unzip($a_file, $overwrite=false, $a_flat=false)
unzip file
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static deliverFile($a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
const CLOZE_TEST_IDENTIFIER
Question identifier constants.
const IMAGEMAP_QUESTION_IDENTIFIER
const SINGLE_CHOICE_QUESTION_IDENTIFIER
const TEXTSUBSET_QUESTION_IDENTIFIER
const NUMERIC_QUESTION_IDENTIFIER
const JAVAAPPLET_QUESTION_IDENTIFIER
const TEXT_QUESTION_IDENTIFIER
const KPRIM_CHOICE_QUESTION_IDENTIFIER
const MATCHING_QUESTION_IDENTIFIER
const MULTIPLE_CHOICE_QUESTION_IDENTIFIER
const ORDERING_QUESTION_IDENTIFIER
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
if(!is_array($argv)) $options