ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilObjSAHSLearningModuleGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2016 ILIAS open source, Extended GPL, see docs/LICENSE */
3require_once "./Services/Object/classes/class.ilObjectGUI.php";
4require_once("./Services/FileSystem/classes/class.ilFileSystemGUI.php");
5
18{
24 public function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output = true)
25 {
26 global $DIC;
27 $lng = $DIC['lng'];
28
29 $lng->loadLanguageModule("content");
30 $this->type = "sahs";
31 parent::__construct($a_data, $a_id, $a_call_by_reference, false);
32 }
33
37 public function executeCommand()
38 {
39 global $DIC;
40 $ilAccess = $DIC['ilAccess'];
41 $ilTabs = $DIC['ilTabs'];
42 $ilErr = $DIC['ilErr'];
43
44 $GLOBALS['DIC']["ilLog"]->write("bc:" . $_GET["baseClass"] . "; nc:" . $this->ctrl->getNextClass($this) . "; cmd:" . $this->ctrl->getCmd());
45 if (strtolower($_GET["baseClass"]) == "iladministrationgui" ||
46 strtolower($_GET["baseClass"]) == "ilsahspresentationgui" ||
47 $this->getCreationMode() == true) {
48 $this->prepareOutput();
49 } else {
50 $this->getTemplate();
51 $this->setLocator();
52 $this->setTabs();
53 $this->tpl->setTitleIcon(ilUtil::getImagePath("icon_lm.svg"));
54 $this->tpl->setTitle($this->object->getTitle());
55 }
56
57 $next_class = $this->ctrl->getNextClass($this);
58 $cmd = $this->ctrl->getCmd();
59
60 switch ($next_class) {
61 case 'illtiproviderobjectsettinggui':
62 $this->setSettingsSubTabs();
63 $ilTabs->setSubTabActive('lti_provider');
64 $lti_gui = new ilLTIProviderObjectSettingGUI($this->object->getRefId());
65 $lti_gui->setCustomRolesForSelection($GLOBALS['DIC']->rbac()->review()->getLocalRoles($this->object->getRefId()));
66 $lti_gui->offerLTIRolesForSelection(false);
67 $this->ctrl->forwardCommand($lti_gui);
68 break;
69
70
71 case 'ilobjectmetadatagui':
72 if (!$ilAccess->checkAccess('write', '', $this->object->getRefId())) {
73 $ilErr->raiseError($this->lng->txt('permission_denied'), $ilErr->WARNING);
74 }
75 include_once 'Services/Object/classes/class.ilObjectMetaDataGUI.php';
76 $md_gui = new ilObjectMetaDataGUI($this->object);
77 $this->ctrl->forwardCommand($md_gui);
78 break;
79
80 case 'ilexportgui':
81 case 'ilpermissiongui':
82 include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
83 $perm_gui = new ilPermissionGUI($this);
84 $ret = $this->ctrl->forwardCommand($perm_gui);
85 break;
86
87 case "ilfilesystemgui":
88 $this->fs_gui = new ilFileSystemGUI($this->object->getDataDirectory());
89 $this->fs_gui->setUseUploadDirectory(true);
90 $this->fs_gui->setTableId("sahsfs" . $this->object->getId());
91 $ret = $this->ctrl->forwardCommand($this->fs_gui);
92 break;
93
94 case "ilcertificategui":
95 $this->setSettingsSubTabs();
96 $ilTabs->setSubTabActive('certificate');
97
98 $guiFactory = new ilCertificateGUIFactory();
99 $output_gui = $guiFactory->create($this->object);
100
101 $ret = $this->ctrl->forwardCommand($output_gui);
102 break;
103
104 case "illearningprogressgui":
105 include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php';
106
107 $new_gui = new ilLearningProgressGUI(ilLearningProgressGUI::LP_CONTEXT_REPOSITORY, $this->object->getRefId());
108 $this->ctrl->forwardCommand($new_gui);
109
110 break;
111
112 case "ilinfoscreengui":
113 include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
114
115 $info = new ilInfoScreenGUI($this);
116 $info->enablePrivateNotes();
117 $info->enableLearningProgress();
118
119 // add read / back button
120 if ($ilAccess->checkAccess("read", "", $_GET["ref_id"])) {
121 if (!$this->object->getEditable()) {
122 $ilToolbar = $GLOBALS['DIC']->toolbar();
123 $ilToolbar->addButtonInstance($this->object->getViewButton());
124 }
125 }
126
127 $info->enableNews();
128 if ($ilAccess->checkAccess("write", "", $_GET["ref_id"])) {
129 $info->enableNewsEditing();
130 $news_set = new ilSetting("news");
131 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
132 if ($enable_internal_rss) {
133 $info->setBlockProperty("news", "settings", true);
134 }
135 }
136 // show standard meta data section
137 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
138
139 // forward the command
140 $this->ctrl->forwardCommand($info);
141 break;
142
143 case "ilcommonactiondispatchergui":
144 include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
146 $this->ctrl->forwardCommand($gui);
147 break;
148
149 case "ilobjstylesheetgui":
150 //$this->addLocations();
151 $this->ctrl->setReturn($this, "properties");
152 $ilTabs->clearTargets();
153 $style_gui = new ilObjStyleSheetGUI("", $this->object->getStyleSheetId(), false, false);
154 $style_gui->omitLocator();
155 if ($cmd == "create" || $_GET["new_type"] == "sty") {
156 $style_gui->setCreationMode(true);
157 }
158 //$ret =& $style_gui->executeCommand();
159
160 if ($cmd == "confirmedDelete") {
161 $this->object->setStyleSheetId(0);
162 $this->object->update();
163 }
164 $ret = $this->ctrl->forwardCommand($style_gui);
165 if ($cmd == "save" || $cmd == "copyStyle" || $cmd == "importStyle") {
166 $style_id = $ret;
167 $this->object->setStyleSheetId($style_id);
168 $this->object->update();
169 $this->ctrl->redirectByClass("ilobjstylesheetgui", "edit");
170 }
171 break;
172
173
174 case 'ilobjectcopygui':
175 $this->prepareOutput();
176 include_once './Services/Object/classes/class.ilObjectCopyGUI.php';
177 $cp = new ilObjectCopyGUI($this);
178 $cp->setType('sahs');
179 $this->ctrl->forwardCommand($cp);
180 break;
181
182 default:
183 if ($this->object && !$this->object->getEditable()) {
184 $cmd = $this->ctrl->getCmd("properties");
185 } else {
186 $cmd = $this->ctrl->getCmd("frameset");
187 }
188 if ((strtolower($_GET["baseClass"]) == "iladministrationgui" ||
189 $this->getCreationMode() == true) &&
190 $cmd != "frameset") {
191 $cmd .= "Object";
192 }
193
194 // #9225
195 if ($cmd == "redrawHeaderAction") {
196 $cmd .= "Object";
197 }
198
199 $ret = $this->$cmd();
200 break;
201 }
202 }
203
204
205 public function viewObject()
206 {
207 if (strtolower($_GET["baseClass"]) == "iladministrationgui") {
208 parent::viewObject();
209 } else {
210 }
211 }
212
216 public function properties()
217 {
218 }
219
223 public function saveProperties()
224 {
225 }
226
230
234 public function initCreationForms($a_new_type)
235 {
236 $forms = array();
237
238 $this->initUploadForm();
240
241 $this->initCreationForm();
243
244 $forms[self::CFORM_CLONE] = $this->fillCloneTemplate(null, $a_new_type);
245
246 return $forms;
247 }
248
254 public function initCreationForm()
255 {
256 global $DIC;
257 $lng = $DIC['lng'];
258 $ilCtrl = $DIC['ilCtrl'];
259
260 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
261 $this->form = new ilPropertyFormGUI();
262
263 // title
264 $ti = new ilTextInputGUI($this->lng->txt("title"), "title");
265 $ti->setSize(min(40, ilObject::TITLE_LENGTH));
266 $ti->setMaxLength(ilObject::TITLE_LENGTH);
267 $ti->setRequired(true);
268 $this->form->addItem($ti);
269
270 // text area
271 $ta = new ilTextAreaInputGUI($this->lng->txt("description"), "desc");
272 $ta->setCols(40);
273 $ta->setRows(2);
274 $this->form->addItem($ta);
275
276
277 $this->form->addCommandButton("save", $lng->txt("sahs_add"));
278 $this->form->addCommandButton("cancel", $lng->txt("cancel"));
279
280 $this->form->setTitle($lng->txt("scorm_new"));
281 $this->form->setFormAction($ilCtrl->getFormAction($this));
282 $this->form->setTarget(ilFrameTargetInfo::_getFrame("MainContent"));
283 }
284
288 public function initUploadForm()
289 {
290 global $DIC;
291 $lng = $DIC['lng'];
292 $ilCtrl = $DIC['ilCtrl'];
293
294 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
295 $this->form = new ilPropertyFormGUI();
296
297 // type selection
298 $options = array(
299 "scorm2004" => $lng->txt("lm_type_scorm2004"),
300 "scorm" => $lng->txt("lm_type_scorm"),
301 "exportFile" => $lng->txt("sahs_export_file")
302 );
303 $si = new ilSelectInputGUI($this->lng->txt("type"), "sub_type");
304 $si->setOptions($options);
305 $this->form->addItem($si);
306
307
308 // todo wysiwyg editor removement
309
310 $options = array();
311 include_once 'Services/FileSystem/classes/class.ilUploadFiles.php';
313 $options[""] = $this->lng->txt("cont_select_from_upload_dir");
315 foreach ($files as $file) {
316 $file = htmlspecialchars($file, ENT_QUOTES, "utf-8");
317 $options[$file] = $file;
318 }
319 }
320 if (count($options) > 1) {
321 // choose upload directory
322 $radg = new ilRadioGroupInputGUI($lng->txt("cont_choose_file_source"), "file_source");
323 $op0 = new ilRadioOption($this->lng->txt("cont_choose_local"), "local");
324 $radg->addOption($op0);
325 $op1 = new ilRadioOption($this->lng->txt("cont_choose_upload_dir"), "upload_dir");
326 $radg->addOption($op1);
327 $radg->setValue("local");
328
329 $fi = new ilFileInputGUI($this->lng->txt("select_file"), "scormfile");
330 $fi->setRequired(true);
331 $op0->addSubItem($fi);
332
333 $si = new ilSelectInputGUI($this->lng->txt("cont_uploaded_file"), "uploaded_file");
334 $si->setOptions($options);
335 $op1->addSubItem($si);
336
337 $this->form->addItem($radg);
338 } else {
339 $fi = new ilFileInputGUI($this->lng->txt("select_file"), "scormfile");
340 $fi->setRequired(true);
341 $this->form->addItem($fi);
342 }
343
344 // validate file
345 $cb = new ilCheckboxInputGUI($this->lng->txt("cont_validate_file"), "validate");
346 $cb->setValue("y");
347 //$cb->setChecked(true);
348 $this->form->addItem($cb);
349
350 // import for editing
351 $cb = new ilCheckboxInputGUI($this->lng->txt("sahs_authoring_mode"), "editable");
352 $cb->setValue("y");
353 $cb->setInfo($this->lng->txt("sahs_authoring_mode_info"));
354 $this->form->addItem($cb);
355
356 //
357 $radg = new ilRadioGroupInputGUI($lng->txt("sahs_sequencing"), "import_sequencing");
358 $radg->setValue(0);
359 $op1 = new ilRadioOption($lng->txt("sahs_std_sequencing"), 0, $lng->txt("sahs_std_sequencing_info"));
360 $radg->addOption($op1);
361 $op1 = new ilRadioOption($lng->txt("sahs_import_sequencing"), 1, $lng->txt("sahs_import_sequencing_info"));
362 $radg->addOption($op1);
363 $cb->addSubItem($radg);
364
365
366 $this->form->addCommandButton("upload", $lng->txt("import"));
367 $this->form->addCommandButton("cancel", $lng->txt("cancel"));
368
369 $this->form->setTitle($lng->txt("import_sahs"));
370 $this->form->setFormAction($ilCtrl->getFormAction($this, "upload"));
371 $this->form->setTarget(ilFrameTargetInfo::_getFrame("MainContent"));
372 }
373
380 public function uploadObject()
381 {
382 global $DIC;
383 $rbacsystem = $DIC['rbacsystem'];
384
385 include_once 'Services/FileSystem/classes/class.ilUploadFiles.php';
386
387 // check create permission
388 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], "sahs")) {
389 $this->ilias->raiseError($this->lng->txt("no_create_permission"), $this->ilias->error_obj->WARNING);
390 } elseif ($_FILES["scormfile"]["name"]) {
391 // check if file was uploaded
392 $source = $_FILES["scormfile"]["tmp_name"];
393 if (($source == 'none') || (!$source)) {
394 $this->ilias->raiseError($this->lng->txt("msg_no_file"), $this->ilias->error_obj->MESSAGE);
395 }
396 // get_cfg_var("upload_max_filesize"); // get the may filesize form t he php.ini
397 switch ($_FILES["scormfile"]["error"]) {
398 case UPLOAD_ERR_INI_SIZE:
399 $this->ilias->raiseError($this->lng->txt("err_max_file_size_exceeds"), $this->ilias->error_obj->MESSAGE);
400 break;
401
402 case UPLOAD_ERR_FORM_SIZE:
403 $this->ilias->raiseError($this->lng->txt("err_max_file_size_exceeds"), $this->ilias->error_obj->MESSAGE);
404 break;
405
406 case UPLOAD_ERR_PARTIAL:
407 $this->ilias->raiseError($this->lng->txt("err_partial_file_upload"), $this->ilias->error_obj->MESSAGE);
408 break;
409
410 case UPLOAD_ERR_NO_FILE:
411 $this->ilias->raiseError($this->lng->txt("err_no_file_uploaded"), $this->ilias->error_obj->MESSAGE);
412 break;
413 }
414
415 $file = pathinfo($_FILES["scormfile"]["name"]);
416 } elseif ($_POST["uploaded_file"]) {
417 // check if the file is in the upload directory and readable
418 if (!ilUploadFiles::_checkUploadFile($_POST["uploaded_file"])) {
419 $this->ilias->raiseError($this->lng->txt("upload_error_file_not_found"), $this->ilias->error_obj->MESSAGE);
420 }
421
422 $file = pathinfo($_POST["uploaded_file"]);
423 } else {
424 $this->ilias->raiseError($this->lng->txt("msg_no_file"), $this->ilias->error_obj->MESSAGE);
425 }
426
427 $name = substr($file["basename"], 0, strlen($file["basename"]) - strlen($file["extension"]) - 1);
428 if ($name == "") {
429 $name = $this->lng->txt("no_title");
430 }
431
432 $subType = $_POST["sub_type"];
433 // create and insert object in objecttree
434 switch ($subType) {
435 case "scorm2004":
436 include_once("./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php");
437 $newObj = new ilObjSCORM2004LearningModule();
438 $newObj->setEditable($_POST["editable"] == 'y');
439 $newObj->setImportSequencing($_POST["import_sequencing"]);
440 $newObj->setSequencingExpertMode($_POST["import_sequencing"]);
441 break;
442
443 case "scorm":
444 include_once("./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php");
445 $newObj = new ilObjSCORMLearningModule();
446 break;
447
448 case "exportFile":
449 $sFile = $_FILES["scormfile"];
450 $fType = $sFile["type"];
451 $cFileTypes = ["application/zip", "application/x-compressed","application/x-zip-compressed"];
452 if (in_array($fType, $cFileTypes)) {
453 $timeStamp = time();
454 $tempFile = $sFile["tmp_name"];
455 $lmDir = ilUtil::getWebspaceDir("filesystem") . "/lm_data/";
456 $lmTempDir = $lmDir . $timeStamp;
457 if (!file_exists($lmTempDir)) {
458 mkdir($lmTempDir, 0755, true);
459 }
460 $zar = new ZipArchive();
461 $zar->open($tempFile);
462 $zar->extractTo($lmTempDir);
463 $zar->close();
464 require_once "./Modules/ScormAicc/classes/class.ilScormAiccImporter.php";
465 $importer = new ilScormAiccImporter();
466 $import_dirname = $lmTempDir . '/' . substr($_FILES["scormfile"]["name"], 0, strlen($a_filename) - 4);
467 if ($importer->importXmlRepresentation("sahs", null, $import_dirname, "") == true) {
468 $importFromXml = true;
469 }
470 $mprops = [];
471 $mprops = $importer->moduleProperties;
472 $subType = $mprops["SubType"][0];
473 if ($subType == "scorm") {
474 include_once("./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php");
475 $newObj = new ilObjSCORMLearningModule();
476 } else {
477 include_once("./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php");
478 $newObj = new ilObjSCORM2004LearningModule();
479 // $newObj->setEditable($_POST["editable"]=='y');
480// $newObj->setImportSequencing($_POST["import_sequencing"]);
481// $newObj->setSequencingExpertMode($_POST["import_sequencing"]);
482 }
483 }
484 break;
485 }
486
487 $newObj->setTitle($name);
488 $newObj->setSubType($subType);
489 $newObj->setDescription("");
490 $newObj->setOfflineStatus(true);
491 $newObj->create(true);
492 $newObj->createReference();
493 $newObj->putInTree($_GET["ref_id"]);
494 $newObj->setPermissions($_GET["ref_id"]);
495
496 // create data directory, copy file to directory
497 $newObj->createDataDirectory();
498
499 if ($_FILES["scormfile"]["name"]) {
500 if ($importFromXml) {
501 $scormFile = "content.zip";
502 $scormFilePath = $import_dirname . "/" . $scormFile;
503 $file_path = $newObj->getDataDirectory() . "/" . $scormFile;
504 ilFileUtils::rename($scormFilePath, $file_path);
505 ilUtil::unzip($file_path);
506 unlink($file_path);
507 ilUtil::delDir($lmTempDir, false);
508 } else {
509 // copy uploaded file to data directory
510 $file_path = $newObj->getDataDirectory() . "/" . $_FILES["scormfile"]["name"];
511 ilUtil::moveUploadedFile(
512 $_FILES["scormfile"]["tmp_name"],
513 $_FILES["scormfile"]["name"],
514 $file_path
515 );
516 ilUtil::unzip($file_path);
517 }
518 } else {
519 // copy uploaded file to data directory
520 $file_path = $newObj->getDataDirectory() . "/" . $_POST["uploaded_file"];
521 ilUploadFiles::_copyUploadFile($_POST["uploaded_file"], $file_path);
522 ilUtil::unzip($file_path);
523 }
524 ilUtil::renameExecutables($newObj->getDataDirectory());
525
526 $title = $newObj->readObject();
527 if ($title != "") {
528 ilObject::_writeTitle($newObj->getId(), $title);
529 }
530
531 //auto set learning progress settings
532 $newObj->setLearningProgressSettingsAtUpload();
533
534 if ($importFromXml) {
535 $importer->writeData("sahs", "5.1.0", $newObj->getId());
536 }
537
538 ilUtil::sendInfo($this->lng->txt($newObj->getType() . "_added"), true);
539 ilUtil::redirect("ilias.php?baseClass=ilSAHSEditGUI&ref_id=" . $newObj->getRefId());
540 }
541
542 public function upload()
543 {
544 $this->uploadObject();
545 }
546
547
548
552 public function saveObject()
553 {
554 if (trim($_POST["title"]) == "") {
555 $this->ilias->raiseError($this->lng->txt("msg_no_title"), $this->ilias->error_obj->MESSAGE);
556 }
557
558 include_once("./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php");
559 $newObj = new ilObjSCORM2004LearningModule();
560 $newObj->setTitle(ilUtil::stripSlashes($_POST["title"]));
561 $newObj->setSubType("scorm2004");
562 $newObj->setEditable(true);
563 $newObj->setDescription(ilUtil::stripSlashes($_POST["desc"]));
564 $newObj->create();
565 $newObj->createReference();
566 $newObj->putInTree($_GET["ref_id"]);
567 $newObj->setPermissions($_GET["ref_id"]);
568 $newObj->createDataDirectory();
569 $newObj->createScorm2004Tree();
570 ilUtil::sendInfo($this->lng->txt($newObj->getType() . "_added"), true);
571
572 // #7375
573 $this->ctrl->setParameterByClass("ilObjSCORM2004LearningModuleGUI", "ref_id", $newObj->getRefId());
574 $this->ctrl->redirectByClass(array("ilSAHSEditGUI", "ilObjSCORM2004LearningModuleGUI"), "showOrganization");
575 }
576
577
581 public function info()
582 {
583 $this->infoObject();
584 }
585
589 public function owner()
590 {
591 $this->ownerObject();
592 }
593
597 public function getTemplate()
598 {
599 global $DIC;
600 $lng = $DIC['lng'];
601
602 $this->tpl->getStandardTemplate();
603 }
604
608 public function setTabs()
609 {
610 $this->tpl->setTitleIcon(ilUtil::getImagePath("icon_lm.svg"));
611 $this->tpl->setTitle($this->object->getTitle());
612 if (strtolower($_GET["baseClass"]) == "ilsahseditgui") {
613 $this->getTabs($this->tabs_gui);
614 }
615 //if(strtolower($_GET["baseClass"]) == "ilsahseditgui") $this->getTabs();
616 }
617
621 public function certificate()
622 {
623 $guiFactory = new ilCertificateGUIFactory();
624 $output_gui = $guiFactory->create($this->object);
625
626 $output_gui->certificateEditor();
627 }
628
634 public function getTabs()
635 {
636 global $DIC;
637 $ilCtrl = $DIC['ilCtrl'];
638 $ilHelp = $DIC['ilHelp'];
639 $ilAccess = $DIC->access();
640
641 if ($this->ctrl->getCmd() == "delete") {
642 return;
643 }
644
645 switch ($this->object->getSubType()) {
646 case "scorm2004":
647 $ilHelp->setScreenIdComponent("sahs13");
648 break;
649
650 case "scorm":
651 $ilHelp->setScreenIdComponent("sahs12");
652 break;
653 }
654
655 // file system gui tabs
656 // properties
657 $ilCtrl->setParameterByClass("ilfilesystemgui", "resetoffset", 1);
658 $this->tabs_gui->addTarget(
659 "cont_list_files",
660 $this->ctrl->getLinkTargetByClass("ilfilesystemgui", "listFiles"),
661 "",
662 "ilfilesystemgui"
663 );
664 $ilCtrl->setParameterByClass("ilfilesystemgui", "resetoffset", "");
665
666 // info screen
667 $force_active = ($this->ctrl->getNextClass() == "ilinfoscreengui")
668 ? true
669 : false;
670 $this->tabs_gui->addTarget(
671 "info_short",
672 $this->ctrl->getLinkTargetByClass("ilinfoscreengui", "showSummary"),
673 "",
674 "ilinfoscreengui",
675 "",
676 $force_active
677 );
678
679 // properties
680 $this->tabs_gui->addTarget(
681 "settings",
682 $this->ctrl->getLinkTarget($this, "properties"),
683 array("", "properties"),
684 get_class($this)
685 );
686
687 // learning progress and offline mode
688 include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
689 if (ilLearningProgressAccess::checkAccess($this->object->getRefId()) || $ilAccess->checkAccess("write", "", $this->object->getRefId())) {
690 //if scorm && offline_mode activated
691 if ($this->object->getSubType() == "scorm2004" || $this->object->getSubType() == "scorm") {
692 if ($this->object->getOfflineMode() == true) {
693 $this->tabs_gui->addTarget(
694 "offline_mode_manager",
695 $this->ctrl->getLinkTarget($this, "offlineModeManager"),
696 "offlineModeManager",
697 "ilobjscormlearningmodulegui"
698 );
699 }
700 }
701 }
702 if (ilLearningProgressAccess::checkAccess($this->object->getRefId())) {
703 $this->tabs_gui->addTarget(
704 'learning_progress',
705 $this->ctrl->getLinkTargetByClass(array('illearningprogressgui'), ''),
706 '',
707 array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui','illplistofprogressgui')
708 );
709 }
710
711 // tracking data
712 if ($ilAccess->checkAccess("read_learning_progress", '', $this->object->getRefId()) || $ilAccess->checkAccess("edit_learning_progress", '', $this->object->getRefId())) {
713 if ($this->object->getSubType() == "scorm2004" || $this->object->getSubType() == "scorm") {
714 include_once('./Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
716 if ($privacy->enabledSahsProtocolData()) {
717 $this->tabs_gui->addTarget(
718 "cont_tracking_data",
719 $this->ctrl->getLinkTarget($this, "showTrackingItems"),
720 "showTrackingItems",
721 get_class($this)
722 );
723 }
724 }
725 }
726
727 // edit meta
728 include_once "Services/Object/classes/class.ilObjectMetaDataGUI.php";
729 $mdgui = new ilObjectMetaDataGUI($this->object);
730 $mdtab = $mdgui->getTab();
731 if ($mdtab) {
732 $this->tabs_gui->addTarget(
733 "meta_data",
734 $mdtab,
735 "",
736 "ilmdeditorgui"
737 );
738 }
739
740 // export
741 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
742 $this->tabs_gui->addTarget(
743 "export",
744 $this->ctrl->getLinkTarget($this, "export"),
745 array("", "export"),
746 get_class($this)
747 );
748 }
749
750 // perm
751 if ($ilAccess->checkAccess('edit_permission', '', $this->object->getRefId())) {
752 $this->tabs_gui->addTarget(
753 "perm_settings",
754 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
755 array("perm","info","owner"),
756 'ilpermissiongui'
757 );
758 }
759 }
760
764 public static function _goto($a_target)
765 {
766 global $DIC;
767 $ilAccess = $DIC['ilAccess'];
768 $ilErr = $DIC['ilErr'];
769 $lng = $DIC['lng'];
770
771 $parts = explode("_", $a_target);
772
773 if ($ilAccess->checkAccess("write", "", $parts[0])) {
774 $_GET["cmd"] = "";
775 $_GET["baseClass"] = "ilSAHSEditGUI";
776 $_GET["ref_id"] = $parts[0];
777 $_GET["obj_id"] = $parts[1];
778 include("ilias.php");
779 exit;
780 }
781 if ($ilAccess->checkAccess("visible", "", $parts[0]) || $ilAccess->checkAccess("read", "", $parts[0])) {
782 $_GET["cmd"] = "infoScreen";
783 $_GET["baseClass"] = "ilSAHSPresentationGUI";
784 $_GET["ref_id"] = $parts[0];
785 include("ilias.php");
786 exit;
787 } else {
788 if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
789 ilUtil::sendInfo(sprintf(
790 $lng->txt("msg_no_perm_read_item"),
792 ), true);
794 }
795 }
796
797 $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
798 }
799
800 public function addLocatorItems()
801 {
802 global $DIC;
803 $ilLocator = $DIC['ilLocator'];
804
805 if (is_object($this->object)) {
806 $ilLocator->addItem(
807 $this->object->getTitle(),
808 $this->ctrl->getLinkTargetByClass("ilinfoscreengui", "showSummary"),
809 "",
810 $_GET["ref_id"]
811 );
812 }
813 }
814
821 public function editContent()
822 {
823 global $DIC;
824 $ilCtrl = $DIC['ilCtrl'];
825
826 if (!$this->object->getEditable()) {
827 $ilCtrl->redirectByClass("ilfilesystemgui", "listFiles");
828 } else {
829 $ilCtrl->redirectByClass("ilobjscorm2004learningmodulegui", "editOrganization");
830 }
831 }
832
836 public function setSettingsSubTabs()
837 {
838 global $DIC;
839 $lng = $DIC['lng'];
840 $ilTabs = $DIC['ilTabs'];
841 $ilCtrl = $DIC['ilCtrl'];
842
843 $ilTabs->addSubTabTarget(
844 "cont_settings",
845 $this->ctrl->getLinkTarget($this, "properties"),
846 array("edit", ""),
847 get_class($this)
848 );
849
850 $ilTabs->addSubTabTarget(
851 "cont_sc_new_version",
852 $this->ctrl->getLinkTarget($this, "newModuleVersion"),
853 array("edit", ""),
854 get_class($this)
855 );
856
857 include_once "Services/Certificate/classes/class.ilCertificate.php";
859 // // create and insert object in objecttree
860 // $ilTabs->addSubTabTarget("certificate",
861 // $this->ctrl->getLinkTarget($this, "certificate"),
862 // array("certificate", "certificateEditor", "certificateRemoveBackground", "certificateSave",
863 // "certificatePreview", "certificateDelete", "certificateUpload", "certificateImport")
864 // );
865 $ilTabs->addSubTabTarget(
866 "certificate",
867 $this->ctrl->getLinkTargetByClass("ilcertificategui", "certificateeditor"),
868 "",
869 "ilcertificategui"
870 );
871 }
872
873 $lti_settings = new ilLTIProviderObjectSettingGUI($this->object->getRefId());
874 if ($lti_settings->hasSettingsAccess()) {
875 $ilTabs->addSubTabTarget(
876 'lti_provider',
877 $this->ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
878 );
879 }
880
881 $ilTabs->setTabActive('settings');
882 }
883
884 public function export()
885 {
886 global $DIC;
887 $lng = $DIC['lng'];
888 $ilTabs = $DIC['ilTabs'];
889 $ilCtrl = $DIC['ilCtrl'];
890 $tpl = $DIC['tpl'];
891 $ilTabs->activateTab("export");
892 include_once("./Services/Export/classes/class.ilExportGUI.php");
893 $exp_gui = new ilExportGUI($this);
894 $ilCtrl->setCmd("");
895 $exp_gui->addFormat("xml");
896 $ret = $this->ctrl->forwardCommand($exp_gui);
897 return $ret;
898 }
899
900 public function exportModule()
901 {
902 global $DIC;
903 $ilDB = $DIC['ilDB'];
904
905 $moduleId = ilObject::_lookupObjectId($_GET["ref_id"]);
906 require_once "./Modules/ScormAicc/classes/class.ilScormAiccExporter.php";
907 $exporter = new ilScormAiccExporter();
908 $xml = $exporter->getXmlRepresentation("sahs", "5.1.0", $moduleId);
909 }
910
911 public function getType()
912 {
913 return "sahs";
914 }
915} // END class.ilObjSAHSLearningModule
$source
Definition: linkback.php:22
exit
Definition: backend.php:16
$_GET["client_id"]
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
This class represents a checkbox property in a property form.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
Export User Interface Class.
This class represents a file property in a property form.
File System Explorer GUI class.
static rename($a_source, $a_target)
Rename a file.
static _getFrame($a_class, $a_type='')
Get content frame name.
Class ilInfoScreenGUI.
GUI class for LTI provider object settings.
static checkAccess($a_ref_id, $a_allow_only_read=true)
check access to learning progress
Class ilObjUserTrackingGUI.
addLocatorItems()
should be overwritten to add object specific items (repository items are preloaded)
saveObject()
save new learning module to db
static _goto($a_target)
goto target course
__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
Constructor.
viewObject()
list childs of current object
initCreationForms($a_new_type)
no manual SCORM creation, only import at the time
certificate()
Shows the certificate editor.
owner()
show owner of learning module
getTemplate()
output main header (title and locator)
uploadObject()
display status information or report errors messages in case of error
Class ilObjSCORM2004LearningModule.
Class ilObjSCORMLearningModule.
Class ilObjStyleSheetGUI.
GUI class for the workflow of copying objects.
Class ilObjectGUI Basic methods of all Output classes.
prepareOutput($a_show_subobjects=true)
prepare output
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
fillCloneTemplate($a_tpl_varname, $a_type)
Fill object clone template This method can be called from any object GUI class that wants to offer ob...
getCreationMode()
get creation mode
setLocator()
set Locator
Class ilObjectMetaDataGUI.
static _lookupObjId($a_id)
const TITLE_LENGTH
max length of object title
static _lookupTitle($a_id)
lookup object title
static _lookupObjectId($a_ref_id)
lookup object id
static _writeTitle($a_obj_id, $a_title)
write title to db (static)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
static _getInstance()
Get instance of ilPrivacySettings.
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
This class represents a selection list property in a property form.
ILIAS Setting Class.
This class represents a text area property in a property form.
This class represents a text property in a property form.
static _getUploadFiles()
Get a list of readable files in the upload directory.
static _copyUploadFile($a_file, $a_target, $a_raise_errors=true)
copy an uploaded file to the target directory (including virus check)
static _checkUploadFile($a_file)
Check if a file exists in the upload directory and is readable.
static _getUploadDirectory()
Get the directory with uploaded files.
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static getWebspaceDir($mode="filesystem")
get webspace directory
static redirect($a_script)
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 renameExecutables($a_dir)
Rename uploaded executables for security reasons.
global $ilCtrl
Definition: ilias.php:18
$info
Definition: index.php:5
$files
Definition: metarefresh.php:49
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
redirection script todo: (a better solution should control the processing via a xml file)
$ret
Definition: parser.php:6
if(isset($_POST['submit'])) $form
global $DIC
Definition: saml.php:7
global $ilDB