39 private \ILIAS\ResourceStorage\Services
$irss;
40 protected \ILIAS\HTMLLearningModule\InternalGUIService
$gui;
50 bool $a_call_by_reference =
true,
51 bool $a_prepare_output =
true 55 $this->irss = $DIC->resourceStorage();
56 $this->
lng = $DIC->language();
57 $this->
user = $DIC->user();
58 $this->
locator = $DIC[
"ilLocator"];
59 $this->
tabs = $DIC->tabs();
60 $this->tree = $DIC->repositoryTree();
61 $this->tpl = $DIC[
"tpl"];
62 $this->
access = $DIC->access();
63 $this->
toolbar = $DIC->toolbar();
64 $this->
help = $DIC[
"ilHelp"];
65 $lng = $DIC->language();
66 $ilCtrl = $DIC->ctrl();
68 $this->
ctrl = $ilCtrl;
69 $this->
ctrl->saveParameter($this, array(
"ref_id"));
71 $this->lm_request = $DIC->htmlLearningModule()
82 $this->output_prepared = $a_prepare_output;
83 $this->gui = $DIC->htmlLearningModule()->internal()->gui();
88 $next_class = $this->
ctrl->getNextClass($this);
89 $cmd = $this->
ctrl->getCmd();
93 strtolower($this->lm_request->getBaseClass()) ===
"iladministrationgui" 96 } elseif (!in_array($cmd, array(
"",
"framset")) || $next_class !=
"") {
97 $this->tpl->loadStandardTemplate();
102 switch ($next_class) {
103 case strtolower(ilContainerResourceGUI::class):
104 $this->
tabs->activateTab(
'id_list_files');
106 $check_access = $this->
access->checkAccess(
'write',
'', $this->
object->getRefId());
110 $this->
object->getResource(),
112 $this->
lng->txt(
'files'),
121 $this->
lng->txt(
'cont_set_start_file'),
132 $options[$file] = $file;
135 $modal = $this->ui_factory->modal()->roundtrip(
136 $this->
lng->txt(
'import_from_upload_dir'),
139 $this->ui_factory->input()->field()->select(
140 $this->
lng->txt(
'import_from_upload_dir_file_name'),
142 $this->
lng->txt(
'import_from_upload_dir_info'),
143 )->withRequired(
true)
145 $this->
ctrl->getFormActionByClass(
146 \ilObjFileBasedLMGUI::class,
152 $this->
lng->txt(
'import_from_upload_dir'),
153 $modal->getShowSignal()
155 $view_configuration = $view_configuration->withExternalTopAction(
156 'import_from_upload_dir',
167 $this->
ctrl->forwardCommand($container_gui);
169 case 'ilobjectmetadatagui':
171 $this->
tabs->activateTab(
'id_meta_data');
173 $this->
ctrl->forwardCommand($md_gui);
176 case "ilinfoscreengui":
180 case "illearningprogressgui":
181 $this->
tabs->activateTab(
'id_learning_progress');
182 $user_id = ($this->lm_request->getUserId() > 0)
183 ? $this->lm_request->getUserId()
184 : $this->
user->getId();
187 $this->
object->getRefId(),
190 $this->
ctrl->forwardCommand($new_gui);
193 case 'ilpermissiongui':
194 $this->
tabs->activateTab(
'id_permissions');
196 $ret = $this->
ctrl->forwardCommand($perm_gui);
200 $this->
tabs->activateTab(
"export");
202 $ret = $this->
ctrl->forwardCommand($exp_gui);
205 case "ilcommonactiondispatchergui":
207 $this->
ctrl->forwardCommand($gui);
211 $cmd = $this->
ctrl->getCmd(self::CMD_LIST_FILES);
214 strtolower($this->lm_request->getBaseClass()) ===
"iladministrationgui" 218 $ret = $this->$cmd();
227 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"frameset");
233 $this->error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
235 $this->
tabs->activateTab(
"id_settings");
239 $this->tpl->setContent($this->
form->getHTML());
252 $ti->setRequired(
true);
253 $this->
form->addItem($ti);
259 $this->
form->addItem($ta);
263 $cb->setOptionTitle($this->
lng->txt(
""));
265 $this->
form->addItem($cb);
271 if ($startfile !==
"") {
272 $ne->setValue(basename($startfile));
274 $ne->setValue(basename($this->
lng->txt(
"no_start_file")));
276 $this->
form->addItem($ne);
279 $pres->setTitle($this->
lng->txt(
'obj_presentation'));
280 $this->
form->addItem($pres);
283 $obj_service->commonSettings()->legacyForm($this->
form, $this->
object)->addTileImage();
285 $this->
form->addCommandButton(
"saveProperties", $this->
lng->txt(
"save"));
286 $this->
form->addCommandButton(
"toFilesystem", $this->
lng->txt(
"cont_set_start_file"));
288 $this->
form->setTitle($this->
lng->txt(
"cont_lm_properties"));
289 $this->
form->setFormAction($this->
ctrl->getFormAction($this,
"saveProperties"));
293 $section->setTitle($this->
lng->txt(
'obj_features'));
294 $this->
form->addItem($section);
310 $values[
'cobj_online'] = !$this->
object->getOfflineStatus();
311 if ($startfile !==
"") {
312 $startfile = basename($startfile);
314 $startfile = $this->
lng->txt(
"no_start_file");
317 $values[
"startfile"] = $startfile;
318 $values[
"title"] = $this->
object->getTitle();
319 $values[
"desc"] = $this->
object->getLongDescription();
320 $values[
"cont_show_info_tab"] = $this->
object->isInfoEnabled();
322 $this->
form->setValuesByArray($values);
329 if ($this->
object->getRID() !=
"") {
330 $this->
ctrl->redirectByClass(ilContainerResourceGUI::class);
332 $this->
ctrl->redirectByClass(static::class,
"properties");
339 $this->error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
345 if ($this->
form->checkInput()) {
346 $this->
object->setTitle($this->
form->getInput(
"title"));
347 $this->
object->setDescription($this->
form->getInput(
"desc"));
348 $this->
object->setOfflineStatus(!(
bool) $this->
form->getInput(
"cobj_online"));
350 $this->
object->update();
353 $obj_service->commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
364 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
365 $this->
ctrl->redirect($this,
"properties");
368 $this->
tabs->activateTab(
"id_settings");
369 $this->
form->setValuesByPost();
370 $this->tpl->setContent($this->
form->getHTML());
375 if (!$this->rbac_system->checkAccess(
"visible,write", $this->object->getRefId())) {
393 if (!$new_object->getStartFile()) {
394 $new_object->maybeDetermineStartFile();
398 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"object_added"),
true);
399 $this->
object = $new_object;
411 $this->error->raiseError($this->
lng->txt(
"permission_denied"), $this->error->MESSAGE);
415 $start_file = $this->
http->wrapper()->query()->has(
'lm_path')
416 ? $start_file = $this->
http->wrapper()->query()->retrieve(
424 $start_file = hex2bin($start_file);
429 if ($start_file ===
'') {
430 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'cont_no_start_file'),
true);
432 $this->
object->setStartFile($start_file);
433 $this->
object->update();
434 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cont_start_file_set'),
true);
437 $this->
ctrl->redirectByClass(ilContainerResourceGUI::class);
440 public function showLearningModule():
void 445 $this->
user->getId(),
446 $this->
object->getId(),
447 $this->
object->getRefId(),
455 $resource = $this->
object->getResource();
457 if ($resource !==
null) {
458 $startfile = $this->
object->getStartFile() ??
'index.html';
459 $uri = $this->irss->consume()->containerURI(
460 $resource->getIdentification(),
471 if ($startfile !==
"") {
482 $this->
ctrl->redirectByClass(ilInfoScreenGUI::class,
"showSummary");
487 $this->
tabs->activateTab(
'id_info');
489 $this->
lng->loadLanguageModule(
"meta");
492 $info->enablePrivateNotes();
493 $info->enableLearningProgress();
496 if ($this->
access->checkAccess(
"write",
"", $this->requested_ref_id)) {
497 $info->enableNewsEditing();
500 $enable_internal_rss = $news_set->get(
"enable_rss_for_internal");
501 if ($enable_internal_rss) {
502 $info->setBlockProperty(
"news",
"settings",
true);
507 if ($this->
access->checkAccess(
"read",
"", $this->requested_ref_id)) {
510 $this->
lng->txt(
"view"),
511 "ilias.php?baseClass=ilHTLMPresentationGUI&ref_id=" . $this->
object->getRefId(),
513 )->primary()->toToolbar();
517 $info->addMetaDataSections($this->
object->getId(), 0, $this->
object->getType());
536 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
542 $this->
ctrl->getLinkTarget($this, self::CMD_LIST_FILES)
546 if ($this->
access->checkAccess(
'visible',
'', $this->ref_id) && $this->
object->isInfoEnabled()) {
550 $this->
ctrl->getLinkTargetByClass([self::class, ilInfoScreenGUI::class],
"showSummary")
554 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
558 $this->
ctrl->getLinkTarget($this,
"properties")
564 "id_learning_progress",
565 $lng->
txt(
"learning_progress"),
566 $this->
ctrl->getLinkTargetByClass([self::class, ilLearningProgressGUI::class],
'')
570 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
572 $mdtab = $mdgui->getTab();
583 if ($this->
access->checkAccess(
"write",
"", $this->object->getRefId())) {
587 $this->
ctrl->getLinkTargetByClass(ilExportGUI::class,
"")
591 if ($this->
access->checkAccess(
'edit_permission',
'', $this->object->getRefId())) {
595 $this->
ctrl->getLinkTargetByClass([self::class, ilPermissionGUI::class],
"perm")
600 if ($startfile !==
"" && $this->
access->checkAccess(
'read',
'', $this->ref_id)) {
601 $this->
tabs->addNonTabbedLink(
603 $this->
lng->txt(
"glo_presentation_view"),
604 "ilias.php?baseClass=ilHTLMPresentationGUI&ref_id=" . $this->
object->getRefId(),
610 public static function _goto(
string $a_target): void
613 $main_tpl = $DIC->ui()->mainTemplate();
615 $lng = $DIC->language();
622 $main_tpl->setOnScreenMessage(
625 $lng->
txt(
"msg_no_perm_read_item"),
640 if (is_object($this->
object)) {
642 $this->
object->getTitle(),
643 $this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui",
"showSummary"),
653 $this->
ctrl->redirectByClass(ilContainerResourceGUI::class);
656 $this->
tabs->activateTab(
"id_list_files");
658 $message_box = $this->gui->ui()->factory()->messageBox()->info(
659 $this->
lng->txt(
"infobox_files_not_migrated")
662 $this->tpl->setContent(
663 $this->gui->ui()->renderer()->render([$message_box])
670 parent::importFileObject();
679 $this->
ctrl->setParameter($this,
"ref_id", $new_object->
getRefId());
680 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"object_added"),
true);
681 $this->
ctrl->redirect($this,
"properties");
694 $newObj->setDescription(
"");
696 $newObj->populateByDirectoy($a_dir,
$filename);
712 $this->
object->getType()
717 $this->
object->getType()
720 $subdir = $this->
object->getType() .
"_" . $this->
object->getId();
722 $target_dir = $export_dir .
"/" . $subdir;
727 $source_dir = $this->
object->getDataDirectory();
733 $zip_file = $export_dir .
"/" . $date .
"__" .
IL_INST_ID .
"__" .
734 $this->
object->getType() .
"_" . $this->
object->getId() .
".zip";
749 $this->
ctrl->redirectByClass(
"illearningprogressgui",
"");
761 $main_tpl = $DIC->ui()->mainTemplate();
763 $main_tpl->setOnScreenMessage(
766 $this->
lng->txt(
"msg_no_perm_write"),
773 $file = $this->lm_request->getString(
'form/input_0');
776 $DIC->ui()->mainTemplate()->setOnScreenMessage(
778 $this->
lng->txt(
'import_from_upload_dir_info'),
782 $this->irss->manageContainer()->addStreamToContainer(
783 $this->
object->getResource()->getIdentification(),
784 Streams::ofResource(fopen(
$path,
'rb')),
787 $DIC->ui()->mainTemplate()->setOnScreenMessage(
789 $this->
lng->txt(
'file_imported_from_upload_dir'),
793 $DIC->ui()->mainTemplate()->setOnScreenMessage(
795 $this->
lng->txt(
'file_import_from_upload_dir_failed'),
800 $this->
ctrl->setParameterByClass(
"ilObjFileBasedLMGUI",
"ref_id", $this->
object->getRefId());
801 $this->
ctrl->redirectByClass([
"ilrepositorygui",
"ilObjFileBasedLMGUI",
"ilContainerResourceGUI"]);
807 $upload_dir =
$lm_set->get(
"cont_upload_dir");
815 return $import_directory->getAbsolutePath();
825 $handle = opendir($upload_dir);
827 while (
false !== ($file = readdir($handle))) {
828 $full_path = $upload_dir .
"/" . $file;
829 if (is_file($full_path) and is_readable($full_path)) {
redrawHeaderActionObject()
Ajax call: redraw action header only.
__construct( $a_data, int $a_id=0, bool $a_call_by_reference=true, bool $a_prepare_output=true)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
cancelObject()
cancel action and go back to previous page
static _goto(string $a_target)
prepareOutput(bool $show_sub_objects=true)
createFromDirectory(string $a_dir)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
checkAccess(string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=null, ?int $a_tree_id=null)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
File Based Learning Module (HTML) object.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
setParameterByClass(string $a_class, string $a_parameter, $a_value)
static rCopy(string $a_sdir, string $a_tdir, bool $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
loadLanguageModule(string $a_module)
Load language module.
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
static _getExportDirectory(int $a_obj_id, string $a_type="xml", string $a_obj_type="", string $a_entity="")
Get export directory for an repository object
redirectByClass( $a_class, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false)
sort()
description: > Example for rendering a Sort Glyph.
infoScreen()
this one is called from the info button in the repository
static _lookupObjId(int $ref_id)
afterSave(ilObject $new_object)
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
withExternalAction(string $label, string $target_gui, string $target_cmd, string $parameter_namespace, string $path_parameter='path', bool $supports_directories=false, array $supported_mime_types=[' *'])
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
StandardGUIRequest $lm_request
ILIAS HTMLLearningModule InternalGUIService $gui
if($request_wrapper->has('ui_mainbar')) getURI()
afterImport(ilObject $new_object)
importFileObject(?int $parent_id=null)
static http()
Fetches the global http state from ILIAS.
static _lookupTitle(int $obj_id)
static signFolderOfStartFile(string $start_file_path)
ILIAS ResourceStorage Services $irss
const CMD_IMPORT_FROM_UPLOAD_DIR
setScreenIdComponent(string $a_comp)
static _createExportDirectory(int $a_obj_id, string $a_export_type="xml", string $a_obj_type="")
Class ilObjectGUI Basic methods of all Output classes.
static delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
manifest.xml file not found-exception for import
putObjectInTree(ilObject $obj, ?int $parent_node_id=null)
Add object to tree at given position.
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
static redirect(string $a_script)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
form( $class_path, string $cmd, string $submit_caption="")
__construct(Container $dic, ilPlugin $plugin)
const LP_CONTEXT_REPOSITORY
This class represents a text area property in a property form.
static zip(string $a_dir, string $a_file, bool $compress_content=false)
const INFO_TAB_VISIBILITY
User Interface class for file based learning modules (HTML)
updateObject()
updates object entry in object_data
static _determineStartUrl(int $a_id)
addHeaderAction()
Add header action menu.
Class ilObjUserTrackingGUI.
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static makeDir(string $a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)