ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjSAHSLearningModuleGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once "./Services/Object/classes/class.ilObjectGUI.php";
5 require_once("./Services/FileSystem/classes/class.ilFileSystemGUI.php");
6 
19 {
25  function ilObjSAHSLearningModuleGUI($a_data,$a_id,$a_call_by_reference, $a_prepare_output = true)
26  {
27  global $lng;
28 
29  $lng->loadLanguageModule("content");
30  $this->type = "sahs";
31  $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,false);
32  }
33 
37  function &executeCommand()
38  {
39  global $ilAccess, $ilTabs, $ilErr;
40 
41  if (strtolower($_GET["baseClass"]) == "iladministrationgui" ||
42  $this->getCreationMode() == true)
43  {
44  $this->prepareOutput();
45  }
46  else
47  {
48  $this->getTemplate();
49  $this->setLocator();
50  $this->setTabs();
51  }
52 
53  $next_class = $this->ctrl->getNextClass($this);
54  $cmd = $this->ctrl->getCmd();
55 
56  switch($next_class)
57  {
58  case 'ilmdeditorgui':
59  if(!$ilAccess->checkAccess('write','',$this->object->getRefId()))
60  {
61  $ilErr->raiseError($this->lng->txt('permission_denied'),$ilErr->WARNING);
62  }
63 
64  include_once 'Services/MetaData/classes/class.ilMDEditorGUI.php';
65 
66  $md_gui =& new ilMDEditorGUI($this->object->getId(), 0, $this->object->getType());
67  $md_gui->addObserver($this->object,'MDUpdateListener','General');
68 
69  $this->ctrl->forwardCommand($md_gui);
70  break;
71 
72  case 'ilpermissiongui':
73  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
74  $perm_gui =& new ilPermissionGUI($this);
75  $ret =& $this->ctrl->forwardCommand($perm_gui);
76  break;
77 
78  case "ilfilesystemgui":
79  $this->fs_gui =& new ilFileSystemGUI($this->object->getDataDirectory());
80  $this->fs_gui->setTableId("sahsfs".$this->object->getId());
81  $ret =& $this->ctrl->forwardCommand($this->fs_gui);
82  break;
83 
84  case "ilcertificategui":
85  include_once "./Services/Certificate/classes/class.ilCertificateGUI.php";
86  include_once "./Modules/ScormAicc/classes/class.ilSCORMCertificateAdapter.php";
87  $output_gui = new ilCertificateGUI(new ilSCORMCertificateAdapter($this->object));
88  $ret =& $this->ctrl->forwardCommand($output_gui);
89  break;
90 
91  case "illearningprogressgui":
92  include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php';
93 
94  $new_gui =& new ilLearningProgressGUI(ilLearningProgressGUI::LP_CONTEXT_REPOSITORY,$this->object->getRefId());
95  $this->ctrl->forwardCommand($new_gui);
96 
97  break;
98 
99  case 'illicensegui':
100  include_once("./Services/License/classes/class.ilLicenseGUI.php");
101  $license_gui =& new ilLicenseGUI($this);
102  $ret =& $this->ctrl->forwardCommand($license_gui);
103  break;
104 
105  case "ilinfoscreengui":
106  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
107 
108  $info = new ilInfoScreenGUI($this);
109  $info->enablePrivateNotes();
110  $info->enableLearningProgress();
111 
112  // add read / back button
113  if ($ilAccess->checkAccess("read", "", $_GET["ref_id"]))
114  {
115  if (!$this->object->getEditable())
116  {
117  $info->addButton($this->lng->txt("view"),
118  "ilias.php?baseClass=ilSAHSPresentationGUI&amp;ref_id=".$this->object->getRefID(),
119  ' target="ilContObj'.$this->object->getId().'" ');
120  }
121  }
122 
123  $info->enableNews();
124  if ($ilAccess->checkAccess("write", "", $_GET["ref_id"]))
125  {
126  $info->enableNewsEditing();
127  $news_set = new ilSetting("news");
128  $enable_internal_rss = $news_set->get("enable_rss_for_internal");
129  if ($enable_internal_rss)
130  {
131  $info->setBlockProperty("news", "settings", true);
132  }
133  }
134  // show standard meta data section
135  $info->addMetaDataSections($this->object->getId(),0, $this->object->getType());
136 
137  // forward the command
138  $this->ctrl->forwardCommand($info);
139  break;
140 
141  case "ilcommonactiondispatchergui":
142  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
144  $this->ctrl->forwardCommand($gui);
145  break;
146 
147  case "ilobjstylesheetgui":
148  //$this->addLocations();
149  $this->ctrl->setReturn($this, "properties");
150  $ilTabs->clearTargets();
151  $style_gui =& new ilObjStyleSheetGUI("", $this->object->getStyleSheetId(), false, false);
152  $style_gui->omitLocator();
153  if ($cmd == "create" || $_GET["new_type"]=="sty")
154  {
155  $style_gui->setCreationMode(true);
156  }
157  //$ret =& $style_gui->executeCommand();
158 
159  if ($cmd == "confirmedDelete")
160  {
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  {
167  $style_id = $ret;
168  $this->object->setStyleSheetId($style_id);
169  $this->object->update();
170  $this->ctrl->redirectByClass("ilobjstylesheetgui", "edit");
171  }
172  break;
173  default:
174  if ($this->object && !$this->object->getEditable())
175  {
176  $cmd = $this->ctrl->getCmd("properties");
177  }
178  else
179  {
180  $cmd = $this->ctrl->getCmd("frameset");
181  }
182  if ((strtolower($_GET["baseClass"]) == "iladministrationgui" ||
183  $this->getCreationMode() == true) &&
184  $cmd != "frameset")
185  {
186  $cmd.= "Object";
187  }
188 
189  // #9225
190  if($cmd == "redrawHeaderAction")
191  {
192  $cmd .= "Object";
193  }
194 
195  $ret =& $this->$cmd();
196  break;
197  }
198  }
199 
200 
201  function viewObject()
202  {
203  if (strtolower($_GET["baseClass"]) == "iladministrationgui")
204  {
206  }
207  else
208  {
209  }
210  }
211 
215  function properties()
216  {
217  }
218 
222  function saveProperties()
223  {
224  }
225 
229 
233  function initCreationForms($a_new_type)
234  {
235  $forms = array();
236 
237  $this->initUploadForm();
238  $forms[self::CFORM_IMPORT] = $this->form;
239 
240  $this->initCreationForm();
241  $forms[self::CFORM_NEW] = $this->form;
242 
243  return $forms;
244  }
245 
251  public function initCreationForm()
252  {
253  global $lng, $ilCtrl;
254 
255  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
256  $this->form = new ilPropertyFormGUI();
257 
258  // title
259  $ti = new ilTextInputGUI($this->lng->txt("title"), "title");
260  $ti->setSize(min(40, ilObject::TITLE_LENGTH));
261  $ti->setMaxLength(ilObject::TITLE_LENGTH);
262  $ti->setRequired(true);
263  $this->form->addItem($ti);
264 
265  // text area
266  $ta = new ilTextAreaInputGUI($this->lng->txt("description"), "desc");
267  $ta->setCols(40);
268  $ta->setRows(2);
269  $this->form->addItem($ta);
270 
271 
272  $this->form->addCommandButton("save", $lng->txt("create"));
273  $this->form->addCommandButton("cancel", $lng->txt("cancel"));
274 
275  $this->form->setTitle($lng->txt("scorm_new"));
276  $this->form->setFormAction($ilCtrl->getFormAction($this));
277  $this->form->setTarget(ilFrameTargetInfo::_getFrame("MainContent"));
278  }
279 
283  public function initUploadForm()
284  {
285  global $lng, $ilCtrl;
286 
287  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
288  $this->form = new ilPropertyFormGUI();
289 
290  // type selection
291  $options = array(
292  "scorm2004" => $lng->txt("lm_type_scorm2004"),
293  "scorm" => $lng->txt("lm_type_scorm"),
294  "aicc" => $lng->txt("lm_type_aicc"),
295  "hacp" => $lng->txt("lm_type_hacp")
296  );
297  $si = new ilSelectInputGUI($this->lng->txt("type"), "sub_type");
298  $si->setOptions($options);
299  $this->form->addItem($si);
300 
301  // input file
302  $fi = new ilFileInputGUI($this->lng->txt("select_file"), "scormfile");
303  $fi->setRequired(true);
304  $this->form->addItem($fi);
305 
306  // todo "uploaded file"
307  // todo wysiwyg editor removement
308 
309  include_once 'Services/FileSystem/classes/class.ilUploadFiles.php';
311  {
312  $options = array();
313  $fi->setRequired(false);
315  $options[""] = $this->lng->txt("cont_select_from_upload_dir");
316  foreach($files as $file)
317  {
318  $file = htmlspecialchars($file, ENT_QUOTES, "utf-8");
319  $options[$file] = $file;
320  }
321  //
322  $si = new ilSelectInputGUI($this->lng->txt("cont_uploaded_file"), "uploaded_file");
323  $si->setOptions($options);
324  $this->form->addItem($si);
325  }
326 
327 
328  // validate file
329  $cb = new ilCheckboxInputGUI($this->lng->txt("cont_validate_file"), "validate");
330  $cb->setValue("y");
331  //$cb->setChecked(true);
332  $this->form->addItem($cb);
333 
334  // import for editing
335  $cb = new ilCheckboxInputGUI($this->lng->txt("sahs_authoring_mode"), "editable");
336  $cb->setValue("y");
337  $cb->setInfo($this->lng->txt("sahs_authoring_mode_info"));
338  $this->form->addItem($cb);
339 
340  //
341  $radg = new ilRadioGroupInputGUI($lng->txt("sahs_sequencing"), "import_sequencing");
342  $radg->setValue(0);
343  $op1 = new ilRadioOption($lng->txt("sahs_std_sequencing"), 0,$lng->txt("sahs_std_sequencing_info"));
344  $radg->addOption($op1);
345  $op1 = new ilRadioOption($lng->txt("sahs_import_sequencing"), 1,$lng->txt("sahs_import_sequencing_info"));
346  $radg->addOption($op1);
347  $cb->addSubItem($radg);
348 
349 
350  $this->form->addCommandButton("upload", $lng->txt("import"));
351  $this->form->addCommandButton("cancel", $lng->txt("cancel"));
352 
353  $this->form->setTitle($lng->txt("import_sahs"));
354  $this->form->setFormAction($ilCtrl->getFormAction($this, "upload"));
355  $this->form->setTarget(ilFrameTargetInfo::_getFrame("MainContent"));
356  }
357 
364  function uploadObject()
365  {
366  global $_FILES, $rbacsystem;
367 
368  include_once 'Services/FileSystem/classes/class.ilUploadFiles.php';
369 
370  // check create permission
371  if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], "sahs"))
372  {
373  $this->ilias->raiseError($this->lng->txt("no_create_permission"), $this->ilias->error_obj->WARNING);
374  }
375  elseif ($_FILES["scormfile"]["name"])
376  {
377  // check if file was uploaded
378  $source = $_FILES["scormfile"]["tmp_name"];
379  if (($source == 'none') || (!$source))
380  {
381  $this->ilias->raiseError($this->lng->txt("msg_no_file"),$this->ilias->error_obj->MESSAGE);
382  }
383  // get_cfg_var("upload_max_filesize"); // get the may filesize form t he php.ini
384  switch ($__FILES["scormfile"]["error"])
385  {
386  case UPLOAD_ERR_INI_SIZE:
387  $this->ilias->raiseError($this->lng->txt("err_max_file_size_exceeds"),$this->ilias->error_obj->MESSAGE);
388  break;
389 
390  case UPLOAD_ERR_FORM_SIZE:
391  $this->ilias->raiseError($this->lng->txt("err_max_file_size_exceeds"),$this->ilias->error_obj->MESSAGE);
392  break;
393 
394  case UPLOAD_ERR_PARTIAL:
395  $this->ilias->raiseError($this->lng->txt("err_partial_file_upload"),$this->ilias->error_obj->MESSAGE);
396  break;
397 
398  case UPLOAD_ERR_NO_FILE:
399  $this->ilias->raiseError($this->lng->txt("err_no_file_uploaded"),$this->ilias->error_obj->MESSAGE);
400  break;
401  }
402 
403  $file = pathinfo($_FILES["scormfile"]["name"]);
404  }
405  elseif ($_POST["uploaded_file"])
406  {
407  // check if the file is in the upload directory and readable
408  if (!ilUploadFiles::_checkUploadFile($_POST["uploaded_file"]))
409  {
410  $this->ilias->raiseError($this->lng->txt("upload_error_file_not_found"),$this->ilias->error_obj->MESSAGE);
411  }
412 
413  $file = pathinfo($_POST["uploaded_file"]);
414  }
415  else
416  {
417  $this->ilias->raiseError($this->lng->txt("msg_no_file"),$this->ilias->error_obj->MESSAGE);
418  }
419 
420  $name = substr($file["basename"], 0, strlen($file["basename"]) - strlen($file["extension"]) - 1);
421  if ($name == "")
422  {
423  $name = $this->lng->txt("no_title");
424  }
425 
426  // create and insert object in objecttree
427  switch ($_POST["sub_type"])
428  {
429 
430  case "scorm2004":
431  include_once("./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php");
432  $newObj = new ilObjSCORM2004LearningModule();
433  $newObj->setEditable($_POST["editable"]=='y');
434  $newObj->setImportSequencing($_POST["import_sequencing"]);
435  $newObj->setSequencingExpertMode($_POST["import_sequencing"]);
436  break;
437 
438  case "scorm":
439  include_once("./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php");
440  $newObj = new ilObjSCORMLearningModule();
441  break;
442 
443  case "aicc":
444  include_once("./Modules/ScormAicc/classes/class.ilObjAICCLearningModule.php");
445  $newObj = new ilObjAICCLearningModule();
446  break;
447 
448  case "hacp":
449  include_once("./Modules/ScormAicc/classes/class.ilObjHACPLearningModule.php");
450  $newObj = new ilObjHACPLearningModule();
451  break;
452  }
453 
454  $newObj->setTitle($name);
455  $newObj->setSubType($_POST["sub_type"]);
456  $newObj->setDescription("");
457  $newObj->create(true);
458  $newObj->createReference();
459  $newObj->putInTree($_GET["ref_id"]);
460  $newObj->setPermissions($_GET["ref_id"]);
461  $newObj->notify("new",$_GET["ref_id"],$_GET["parent_non_rbac_id"],$_GET["ref_id"],$newObj->getRefId());
462 
463  // create data directory, copy file to directory
464  $newObj->createDataDirectory();
465 
466  if ($_FILES["scormfile"]["name"])
467  {
468  // copy uploaded file to data directory
469  $file_path = $newObj->getDataDirectory()."/".$_FILES["scormfile"]["name"];
470 
471  ilUtil::moveUploadedFile($_FILES["scormfile"]["tmp_name"],
472  $_FILES["scormfile"]["name"], $file_path);
473  }
474  else
475  {
476  // copy uploaded file to data directory
477  $file_path = $newObj->getDataDirectory()."/". $_POST["uploaded_file"];
478 
479  ilUploadFiles::_copyUploadFile($_POST["uploaded_file"], $file_path);
480  }
481 
482  ilUtil::unzip($file_path);
483  ilUtil::renameExecutables($newObj->getDataDirectory());
484 
485  $title = $newObj->readObject();
486  if ($title != "")
487  {
488  ilObject::_writeTitle($newObj->getId(), $title);
489  /*$md = new ilMD($newObj->getId(),0, $newObj->getType());
490  if(is_object($md_gen = $md->getGeneral()))
491  {
492  $md_gen->setTitle($title);
493  $md_gen->update();
494  }*/
495  }
496 
497  ilUtil::sendInfo( $this->lng->txt($newObj->getType()."_added"), true);
498  ilUtil::redirect("ilias.php?baseClass=ilSAHSEditGUI&ref_id=".$newObj->getRefId());
499  }
500 
501  function upload()
502  {
503  $this->uploadObject();
504  }
505 
506 
507 
511  function saveObject()
512  {
513  if (trim($_POST["title"]) == "")
514  {
515  $this->ilias->raiseError($this->lng->txt("msg_no_title"),$this->ilias->error_obj->MESSAGE);
516  }
517 
518  include_once("./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php");
519  $newObj = new ilObjSCORM2004LearningModule();
520  $newObj->setTitle(ilUtil::stripSlashes($_POST["title"]));
521  $newObj->setSubType("scorm2004");
522  $newObj->setEditable(true);
523  $newObj->setDescription(ilUtil::stripSlashes($_POST["desc"]));
524  $newObj->create();
525  $newObj->createReference();
526  $newObj->putInTree($_GET["ref_id"]);
527  $newObj->setPermissions($_GET["ref_id"]);
528  $newObj->notify("new",$_GET["ref_id"],$_GET["parent_non_rbac_id"],$_GET["ref_id"],$newObj->getRefId());
529  $newObj->createDataDirectory();
530  $newObj->createScorm2004Tree();
531  ilUtil::sendInfo( $this->lng->txt($newObj->getType()."_added"), true);
532  ilUtil::redirect("ilias.php?baseClass=ilSAHSEditGUI&ref_id=".$newObj->getRefId());
533  }
534 
535 
539  function info()
540  {
541  $this->infoObject();
542  }
543 
547  function owner()
548  {
549  $this->ownerObject();
550  }
551 
555  function getTemplate()
556  {
557  global $lng;
558 
559  $this->tpl->getStandardTemplate();
560  }
561 
562 
568 /* function frameset()
569  {
570  $this->tpl = new ilTemplate("tpl.sahs_edit_frameset.html", false, false, "Modules/ScormAicc");
571  $this->tpl->setVariable("SRC",
572  $this->ctrl->getLinkTarget($this, "properties"));
573  $this->tpl->show("DEFAULT", false);
574  exit;
575  }*/
576 
580  function setTabs()
581  {
582  $this->tpl->setTitleIcon(ilUtil::getImagePath("icon_lm_b.png"));
583  $this->tpl->setTitle($this->object->getTitle());
584  $this->getTabs($this->tabs_gui);
585  }
586 
590  function certificate()
591  {
592  include_once "./Services/Certificate/classes/class.ilCertificateGUI.php";
593  include_once "./Modules/ScormAicc/classes/class.ilSCORMCertificateAdapter.php";
594  $output_gui = new ilCertificateGUI(new ilSCORMCertificateAdapter($this->object));
595  $output_gui->certificateEditor();
596  }
597 
603  function getTabs(&$tabs_gui)
604  {
605  global $rbacsystem, $ilUser, $ilCtrl, $ilHelp;
606 
607  if ($this->ctrl->getCmd() == "delete")
608  {
609  return;
610  }
611 
612  switch ($this->object->getSubType())
613  {
614  case "scorm2004":
615  $ilHelp->setScreenIdComponent("sahs13");
616  break;
617 
618  case "scorm":
619  $ilHelp->setScreenIdComponent("sahs12");
620  break;
621  }
622 
623  // file system gui tabs
624  // properties
625  $ilCtrl->setParameterByClass("ilfilesystemgui", "resetoffset", 1);
626  $tabs_gui->addTarget("cont_list_files",
627  $this->ctrl->getLinkTargetByClass("ilfilesystemgui", "listFiles"), "",
628  "ilfilesystemgui");
629  $ilCtrl->setParameterByClass("ilfilesystemgui", "resetoffset", "");
630 
631  // info screen
632  $force_active = ($this->ctrl->getNextClass() == "ilinfoscreengui")
633  ? true
634  : false;
635  $tabs_gui->addTarget("info_short",
636  $this->ctrl->getLinkTargetByClass("ilinfoscreengui", "showSummary"), "",
637  "ilinfoscreengui", "", $force_active);
638 
639  // properties
640  $tabs_gui->addTarget("settings",
641  $this->ctrl->getLinkTarget($this, "properties"), array("", "properties"),
642  get_class($this));
643 
644  // learning progress and ofline mode
645  include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php';
646  if(ilLearningProgressAccess::checkAccess($this->object->getRefId()))
647  {
648  //if scorm && offline_mode activated
649  if ($this->object->getSubType() == "scorm2004" || $this->object->getSubType() == "scorm") {
650  if ($this->object->getOfflineMode() == true) {
651  $tabs_gui->addTarget("offline_mode_manager",
652  $this->ctrl->getLinkTarget($this, "offlineModeManager"),
653  "offlineModeManager",
654  "ilobjscormlearningmodulegui");
655  }
656  }
657 
658  $tabs_gui->addTarget('learning_progress',
659  $this->ctrl->getLinkTargetByClass(array('illearningprogressgui'),''),
660  '',
661  array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui','illplistofprogressgui'));
662  }
663 
664  include_once('./Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
665  $privacy = ilPrivacySettings::_getInstance();
666  if($privacy->enabledSahsProtocolData())
667  {
668  // tracking data
669  $tabs_gui->addTarget("cont_tracking_data",
670  $this->ctrl->getLinkTarget($this, "showTrackingItems"), "showTrackingItems",
671  get_class($this));
672  }
673 
674  // certificate subtab
675  include_once "Services/Certificate/classes/class.ilCertificate.php";
677  {
678  // create and insert object in objecttree
679  switch ($this->object->getSubType())
680  {
681 
682  case "scorm2004":
683  case "scorm":
684  // certificate
685  $tabs_gui->addTarget("certificate",
686  $this->ctrl->getLinkTarget($this, "certificate"),
687  array("certificate", "certificateEditor", "certificateRemoveBackground", "certificateSave",
688  "certificatePreview", "certificateDelete", "certificateUpload", "certificateImport")
689  );
690  break;
691  }
692  }
693 
694  include_once("Services/License/classes/class.ilLicenseAccess.php");
695  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId())
697  {
698  $tabs_gui->addTarget("license",
699  $this->ctrl->getLinkTargetByClass('illicensegui', ''),
700  "", "illicensegui");
701  }
702 
703  // edit meta
704  $tabs_gui->addTarget("meta_data",
705  $this->ctrl->getLinkTargetByClass('ilmdeditorgui',''),
706  "", "ilmdeditorgui");
707 
708  // perm
709  if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
710  {
711  $tabs_gui->addTarget("perm_settings",
712  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
713  }
714  }
715 
719  function _goto($a_target)
720  {
721  global $ilAccess, $ilErr, $lng;
722 
723  $parts = explode("_", $a_target);
724 
725  if ($ilAccess->checkAccess("write", "", $parts[0]))
726  {
727  $_GET["cmd"] = "";
728  $_GET["baseClass"] = "ilSAHSEditGUI";
729  $_GET["ref_id"] = $parts[0];
730  $_GET["obj_id"] = $parts[1];
731  include("ilias.php");
732  exit;
733  }
734  if ($ilAccess->checkAccess("visible", "", $parts[0]))
735  {
736  $_GET["cmd"] = "infoScreen";
737  $_GET["baseClass"] = "ilSAHSPresentationGUI";
738  $_GET["ref_id"] = $parts[0];
739  include("ilias.php");
740  exit;
741  }
742  else
743  {
744  if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID))
745  {
746  ilUtil::sendInfo(sprintf($lng->txt("msg_no_perm_read_item"),
749  }
750  }
751 
752  $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
753  }
754 
755  function addLocatorItems()
756  {
757  global $ilLocator;
758 
759  if (is_object($this->object))
760  {
761  $ilLocator->addItem($this->object->getTitle(),
762  $this->ctrl->getLinkTargetByClass("ilinfoscreengui", "showSummary"), "", $_GET["ref_id"]);
763  }
764  }
765 
772  function editContent()
773  {
774  global $ilCtrl;
775 
776  if (!$this->object->getEditable())
777  {
778  $ilCtrl->redirectByClass("ilfilesystemgui", "listFiles");
779  }
780  else
781  {
782  $ilCtrl->redirectByClass("ilobjscorm2004learningmodulegui", "editOrganization");
783  }
784  }
785 
786 } // END class.ilObjSAHSLearningModule
787 ?>