ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilObjMediaPoolGUI.php
Go to the documentation of this file.
1<?php
2
29
43{
44 protected \ILIAS\MediaPool\InternalDomainService $domain;
45 protected \ILIAS\COPage\Xsl\XslManager $xsl;
49 protected string $mode;
50 protected int $mep_item_id = 0;
52 protected ilTabsGUI $tabs;
53 protected ilHelpGUI $help;
56 protected ilLogger $mep_log;
57 protected ilDBInterface $db;
58 public bool $output_prepared;
59
60 public function __construct(
61 int $a_id = 0,
62 int $a_id_type = self::REPOSITORY_NODE_ID,
63 int $a_parent_node_id = 0
64 ) {
65 global $DIC;
66
67 $this->mep_request = $DIC->mediaPool()
68 ->internal()
69 ->gui()
70 ->standardRequest();
71 $this->mep_item_id = $this->mep_request->getItemId();
72
73 parent::__construct($a_id, $a_id_type, $a_parent_node_id);
74
75 $this->tabs = $DIC->tabs();
76 $this->locator = $DIC["ilLocator"];
77 $this->help = $DIC["ilHelp"];
78
79 $this->main_tpl = $DIC->ui()->mainTemplate();
80
81 $this->upload = $DIC->upload();
82
83 $this->mep_log = ilLoggerFactory::getLogger("mep");
84
85 $this->db = $DIC->database();
86
87 $this->mode = ($this->mep_request->getMode() !== "")
88 ? $this->mep_request->getMode()
89 : "listMedia";
90 $this->gui = $DIC->mediaPool()->internal()->gui();
91 $this->domain = $DIC->mediaPool()->internal()->domain();
92 $this->xsl = $DIC->copage()->internal()->domain()->xsl();
93 }
94
95 protected function getMediaPool(): ilObjMediaPool
96 {
98 $mp = $this->object;
99 return $mp;
100 }
101
105 protected function afterConstructor(): void
106 {
108 if ($this->mep_item_id == 0 && !$this->getCreationMode()) {
109 $tree = $this->object->getTree();
110 $this->mep_item_id = $tree->readRootId();
111 }
112
113 $lng->loadLanguageModule("mep");
114
115 if ($this->ctrl->getCmd() === "explorer") {
116 $this->ctrl->saveParameter($this, array("ref_id"));
117 } else {
118 $this->ctrl->saveParameter($this, array("ref_id", "mepitem_id"));
119 }
120 $this->ctrl->saveParameter($this, array("mep_mode"));
121
122 $lng->loadLanguageModule("content");
123 }
124
125 final public function getType(): string
126 {
127 return "mep";
128 }
129
135 public function executeCommand(): void
136 {
137 $ilTabs = $this->tabs;
139 $ilAccess = $this->access;
141 $ilCtrl = $this->ctrl;
142
143 $tree = null;
144 if ($this->object) {
145 $tree = $this->object->getTree();
146 }
147
148 $next_class = $this->ctrl->getNextClass($this);
149 $cmd = $this->ctrl->getCmd();
150 $new_type = $this->mep_request->getNewType();
151
152
153
154 if ($new_type !== "" && ($cmd !== "confirmRemove" && $cmd !== "copyToClipboard"
155 && $cmd !== "pasteFromClipboard")) {
156 $this->tpl->setPermanentLink("mep", $this->ref_id);
157 $this->setCreationMode(true);
158 }
159
160 if ($cmd === "create") {
161 switch ($this->mep_request->getNewType()) {
162 case "mob":
163 $this->ctrl->redirectByClass("ilobjmediaobjectgui", "create");
164 break;
165
166 case "fold":
167 $this->ctrl->redirectByClass("ilobjfoldergui", "create");
168 break;
169 }
170 }
171
172 switch ($next_class) {
173 case 'ilobjectmetadatagui':
174 $this->checkPermission("write");
175
176 $this->prepareOutput();
177 $this->addHeaderAction();
178
179 $this->tabs_gui->activateTab('meta_data');
180 $md_gui = new ilObjectMetaDataGUI($this->object, ['mob', "mpg"]);
181 $this->ctrl->forwardCommand($md_gui);
182 $this->tpl->printToStdout();
183 break;
184
185 case strtolower(ilRepoStandardUploadHandlerGUI::class):
186 $this->checkPermission("write");
187 $form = $this->getBulkUploadForm();
188 $gui = $form->getRepoStandardUploadHandlerGUI("media_files");
189 $this->ctrl->forwardCommand($gui);
190 break;
191
192 case 'ilmediapoolpagegui':
193 $this->checkPermission("write");
194 $this->prepareOutput();
195 //$this->addHeaderAction();
196 $ilTabs->clearTargets();
197 $ilCtrl->setReturn($this, "returnFromItem");
198 $mep_page_gui = new ilMediaPoolPageGUI(
199 $this->mep_item_id,
200 $this->mep_request->getOldNr()
201 );
202 $mep_page_gui->setPoolGUI($this);
203 $mep_page_gui->setAdvMdRecordObject($this->object->getRefId(), "mep", "mpg");
204
205 if (!$ilAccess->checkAccess("write", "", $this->object->getRefId())) {
206 $mep_page_gui->setEnableEditing(false);
207 }
208 $ret = $this->ctrl->forwardCommand($mep_page_gui);
209 if ($ret != "") {
210 $tpl->setContent($ret);
211 }
212 $this->tpl->printToStdout();
213 break;
214
215 case "ilobjmediaobjectgui":
216 $this->checkPermission("write");
217 if ($cmd === "create" || $cmd === "save" || $cmd === "cancel") {
218 $ret_obj = $this->mep_item_id;
219 $ilObjMediaObjectGUI = new ilObjMediaObjectGUI("", 0, false, false);
220 $ilObjMediaObjectGUI->setWidthPreset((int) $this->getMediaPool()->getDefaultWidth());
221 $ilObjMediaObjectGUI->setHeightPreset((int) $this->getMediaPool()->getDefaultHeight());
222 } else {
223 $ret_obj = $tree->getParentId($this->mep_item_id);
224 $ilObjMediaObjectGUI = new ilObjMediaObjectGUI("", ilMediaPoolItem::lookupForeignId($this->mep_item_id), false, false);
225 $this->ctrl->setParameter($this, "mepitem_id", $this->getParentFolderId());
226 $ilTabs->setBackTarget(
227 $lng->txt("back"),
228 $this->ctrl->getLinkTarget(
229 $this,
230 $this->mode
231 )
232 );
233 }
234 if ($this->ctrl->getCmdClass() === "ilinternallinkgui") {
235 $this->ctrl->setReturn($this, "explorer");
236 } else {
237 $this->ctrl->setParameter($this, "mepitem_id", $ret_obj);
238 $this->ctrl->setReturn(
239 $this,
240 $this->mode
241 );
242 $this->ctrl->setParameter($this, "mepitem_id", $this->mep_item_id);
243 }
244 $this->getTemplate();
245 $ilObjMediaObjectGUI->setTabs();
246 $this->setLocator();
247
248 // set adv metadata record dobject
249 $ilObjMediaObjectGUI->setAdvMdRecordObject($this->object->getRefId(), "mep", "mob");
250
251 $ret = $this->ctrl->forwardCommand($ilObjMediaObjectGUI);
252 if ($cmd === "save") {
253 $object = $ilObjMediaObjectGUI->getObject();
254 if (!is_null($object)) {
255 $mep_item = new ilMediaPoolItem();
256 $mep_item->setTitle($object->getTitle());
257 $mep_item->setType("mob");
258 $mep_item->setForeignId($object->getId());
259 $mep_item->create();
260
261 $parent = $this->mep_item_id;
262 $tree->insertNode($mep_item->getId(), $parent);
264 "ilias.php?baseClass=ilMediaPoolPresentationGUI&cmd=listMedia&ref_id=" .
265 $this->requested_ref_id . "&mepitem_id=" . $this->mep_item_id
266 );
267 }
268 }
269 $this->tpl->printToStdout();
270 break;
271
272 case "ilmediacreationgui":
273 $this->checkPermission("write");
274 $this->prepareOutput();
275 $this->ctrl->setReturn($this, "listMedia");
276 //$ilTabs->activateTab("content");
277 //$this->addContentSubTabs("manage");
278 $med_type = [];
279 $creation = new ilMediaCreationGUI([ilMediaCreationGUI::TYPE_ALL], function ($mob_id) {
280 $this->afterUpload($mob_id);
281 }, function ($mob_id, $long_desc) {
282 $this->afterUrlSaving($mob_id, $long_desc);
283 }, function ($mob_ids) {
284 $this->afterPoolInsert($mob_ids);
285 }, function ($mob_id) {
286 $this->finishSingleUpload($mob_id);
287 }, function ($mob_id) {
288 $this->onMobUpdate($mob_id);
289 });
290 $this->ctrl->forwardCommand($creation);
291 $this->tpl->printToStdout();
292 break;
293
294
295 case "ilobjfoldergui":
296 $this->checkPermission("write");
297 $this->addHeaderAction();
298 $folder_gui = new ilObjFolderGUI("", 0, false, false);
299 $this->ctrl->setReturn($this, "listMedia");
300 $cmd .= "Object";
301 switch ($cmd) {
302 case "createObject":
303 $this->prepareOutput();
304 $folder_gui = new ilObjFolderGUI("", 0, false, false);
305 $folder_gui->setFormAction(
306 "save",
307 $this->ctrl->getFormActionByClass("ilobjfoldergui")
308 );
309 $folder_gui->createObject();
310 $this->tpl->printToStdout();
311 break;
312
313 case "saveObject":
314 $parent = $this->mep_item_id;
315 $folder_gui->setFolderTree($tree);
316 $folder_gui->saveObject();
317 break;
318
319 case "editObject":
320 $this->prepareOutput();
321 $folder_gui = new ilObjFolderGUI(
322 "",
323 ilMediaPoolItem::lookupForeignId($this->mep_item_id),
324 false,
325 false
326 );
327 $this->ctrl->setParameter($this, "foldereditmode", "1");
328 $folder_gui->setFormAction("update", $this->ctrl->getFormActionByClass("ilobjfoldergui"));
329 $folder_gui->editObject();
330 $this->tpl->printToStdout();
331 break;
332
333 case "updateObject":
334 $folder_gui = new ilObjFolderGUI(
335 "",
336 ilMediaPoolItem::lookupForeignId($this->mep_item_id),
337 false,
338 false
339 );
340 $this->ctrl->setParameter($this, "mepitem_id", $this->getParentFolderId());
341 $this->ctrl->setReturn($this, "listMedia");
342 $folder_gui->updateObject(); // this returns to parent
343 break;
344
345 case "cancelObject":
346 if ($this->mep_request->getFolderEditMode()) {
347 $this->ctrl->setParameter($this, "mepitem_id", $this->getParentFolderId());
348 }
349 $this->ctrl->redirect($this, "listMedia");
350 break;
351 }
352 break;
353
354 case "ileditclipboardgui":
355 $this->prepareOutput();
356 $this->addHeaderAction();
357 $this->ctrl->setReturn($this, $this->mode);
358 $clip_gui = new ilEditClipboardGUI();
359 $clip_gui->setMultipleSelections(true);
360 $clip_gui->setInsertButtonTitle($lng->txt("mep_copy_to_mep"));
361 $ilTabs->setTabActive("clipboard");
362 $this->ctrl->forwardCommand($clip_gui);
363 $this->tpl->printToStdout();
364 break;
365
366 case 'ilinfoscreengui':
367 $this->prepareOutput();
368 $this->addHeaderAction();
369 $this->infoScreen();
370 $this->tpl->printToStdout();
371 break;
372
373 case 'ilpermissiongui':
374 $this->checkPermission("edit_permission");
375 $this->prepareOutput();
376 $this->addHeaderAction();
377 $perm_gui = new ilPermissionGUI($this);
378 $ilTabs->activateTab("perm_settings");
379 $this->ctrl->forwardCommand($perm_gui);
380 $this->tpl->printToStdout();
381 break;
382
383 case "ilexportgui":
384 $this->checkPermission("write");
385 $this->prepareOutput();
386 $this->addHeaderAction();
387 $ilTabs->activateTab("export");
388 $exp_gui = new ilExportGUI($this);
389 $this->ctrl->forwardCommand($exp_gui);
390 $this->tpl->printToStdout();
391 break;
392
393 case "ilcommonactiondispatchergui":
395 $this->ctrl->forwardCommand($gui);
396 break;
397
398 case strtolower(TranslationGUI::class):
399 $this->prepareOutput();
400 $this->addHeaderAction();
401 //$this->setTabs("settings");
402 $ilTabs->activateTab("settings");
403 $this->setSettingsSubTabs("obj_multilinguality");
404 $transgui = new TranslationGUI(
405 $this->getObject(),
406 $this->lng,
407 $this->access,
408 $this->user,
409 $this->ctrl,
410 $this->tpl,
411 $this->ui_factory,
412 $this->ui_renderer,
413 $this->http,
414 $this->refinery,
415 $this->toolbar
416 );
417 $transgui->forceContentTranslation();
418 $this->ctrl->forwardCommand($transgui);
419 $this->tpl->printToStdout();
420 break;
421
422 case "ilmediapoolimportgui":
423 $this->prepareOutput();
424 $this->addHeaderAction();
425 $this->checkPermission("write");
426 $ilTabs->activateTab("import");
427 $gui = new ilMediaPoolImportGUI($this->getMediaPool());
428 $this->ctrl->forwardCommand($gui);
429 $this->tpl->printToStdout();
430 break;
431
432 case "ilmobmultisrtuploadgui":
433 $this->checkPermission("write");
434 $this->prepareOutput();
435 $this->addHeaderAction();
436 $this->setContentSubTabs("srt_files");
437 $gui = new ilMobMultiSrtUploadGUI(new ilMepMultiSrt($this->getMediaPool()));
438 $this->ctrl->forwardCommand($gui);
439 $this->tpl->printToStdout();
440 break;
441
442 case strtolower(ilObjectMetaDataGUI::class):
443 $this->checkPermission("write");
444 $this->prepareOutput();
445 $this->addHeaderAction();
446 $ilTabs->activateTab("meta_data");
447 $gui = new ilObjectMetaDataGUI($this->object);
448 $this->ctrl->forwardCommand($gui);
449 break;
450
451 case strtolower(SettingsGUI::class):
452 $this->checkPermission("write");
453 $this->prepareOutput();
454 $this->addHeaderAction();
455 $this->setSettingsSubTabs("settings");
456 $ilTabs->activateTab("settings");
457 $gui = $this->gui->settings()->settingsGUI(
458 $this->object->getId()
459 );
460 $this->ctrl->forwardCommand($gui);
461 $this->tpl->printToStdout();
462 break;
463
464 default:
465 $this->prepareOutput();
466 $this->addHeaderAction();
467 $cmd = $this->ctrl->getCmd("listMedia") ?: "listMedia";
468 $this->$cmd();
469 if (!$this->getCreationMode()) {
470 $this->tpl->printToStdout();
471 }
472 break;
473 }
474 }
475
479 protected function returnFromItem(): void
480 {
482
483 $type = ilMediaPoolItem::lookupType($this->mep_item_id);
484 if ($type !== "fold") {
485 $tree = $this->object->getTree();
486 $fold_id = $tree->getParentId($this->mep_item_id);
487 if ($fold_id > 0) {
488 $ctrl->setParameter($this, "mepitem_id", $fold_id);
489 $ctrl->redirect($this, "listMedia");
490 }
491 }
492 $this->listMedia();
493 }
494
495 public function createMediaObject(): void
496 {
497 $this->ctrl->redirectByClass("ilobjmediaobjectgui", "create");
498 }
499
500 protected function afterSave(ilObject $new_object): void
501 {
502 // always send a message
503 $this->main_tpl->setOnScreenMessage('success', $this->lng->txt("object_added"), true);
504
505 //ilUtil::redirect($this->getReturnLocation("save","adm_object.php?".$this->link_params));
506 ilUtil::redirect("ilias.php?baseClass=ilMediaPoolPresentationGUI&ref_id=" . $new_object->getRefId() . "&cmd=listMedia");
507 }
508
509 public function edit(): void
510 {
511 $this->ctrl->redirectByClass(SettingsGUI::class);
512 }
513
514
518 public function listMedia(): void
519 {
520 $ilAccess = $this->access;
522 $ilTabs = $this->tabs;
523 $ilCtrl = $this->ctrl;
524 $ilToolbar = $this->toolbar;
526
527 $ilCtrl->setParameter($this, "mep_mode", "listMedia");
528
529 $this->checkPermission("read");
530
531 $ilTabs->setTabActive("content");
532 $this->setContentSubTabs("content");
533
534 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
535 $ilToolbar->addButton(
536 $lng->txt("mep_create_mob"),
537 $ilCtrl->getLinkTargetByClass("ilMediaCreationGUI", "")
538 );
539
540 $mset = new ilSetting("mobs");
541 if ($mset->get("mep_activate_pages")) {
542 $ilToolbar->addButton(
543 $lng->txt("mep_create_content_snippet"),
544 $ilCtrl->getLinkTargetByClass(["ilobjmediapoolgui", "ilmediapoolpagegui"], "createMediaPoolPage")
545 );
546 }
547
548 $ilToolbar->addButton(
549 $lng->txt("mep_create_folder"),
550 $ilCtrl->getLinkTarget($this, "createFolderForm")
551 );
552
553 $ilToolbar->addButton(
554 $lng->txt("mep_bulk_upload"),
555 $ilCtrl->getLinkTarget($this, "bulkUpload")
556 );
557
558 $move_ids = ilSession::get("mep_move_ids");
559 if (is_array($move_ids) && count($move_ids) > 0) {
560 $ilToolbar->addSeparator();
561 $ilToolbar->addButton(
562 $lng->txt("paste"),
563 $ilCtrl->getLinkTarget($this, "paste")
564 );
565 }
566 }
567
568 $mep_table_gui = new ilMediaPoolTableGUI($this, "listMedia", $this->getMediaPool(), "mepitem_id");
569 $tpl->setContent($mep_table_gui->getHTML());
570 }
571
572 protected function toggleExplorerNodeState(): void
573 {
574 $exp = new ilMediaPoolExplorerGUI($this, "listMedia", $this->getMediaPool());
575 $exp->toggleExplorerNodeState();
576 }
577
581 public function allMedia(): void
582 {
584 $ilTabs = $this->tabs;
585 $ilCtrl = $this->ctrl;
586 $ilUser = $this->user;
587
588 $ilCtrl->setParameter($this, "mep_mode", "allMedia");
589
590 $this->checkPermission("read");
591 $ilTabs->setTabActive("content");
592 $this->setContentSubTabs("mep_all_mobs");
593
594 $mep_table_gui = new ilMediaPoolTableGUI(
595 $this,
596 "allMedia",
597 $this->getMediaPool(),
598 "mepitem_id",
600 true
601 );
602
603 if ($this->mep_request->getForceFilter() > 0) {
604 $mep_table_gui->setTitleFilter(
605 ilMediaPoolItem::lookupTitle($this->mep_request->getForceFilter())
606 );
607
608 // Read again
609 $mep_table_gui = new ilMediaPoolTableGUI(
610 $this,
611 "allMedia",
612 $this->getMediaPool(),
613 "mepitem_id",
615 true
616 );
617 }
618
619 $tpl->setContent($mep_table_gui->getHTML());
620 }
621
625 public function applyFilter(): void
626 {
627 $mtab = new ilMediaPoolTableGUI(
628 $this,
629 "allMedia",
630 $this->getMediaPool(),
631 "mepitem_id",
633 true
634 );
635 $mtab->writeFilterToSession();
636 $mtab->resetOffset();
637 $this->allMedia();
638 }
639
640 public function resetFilter(): void
641 {
642 $mtab = new ilMediaPoolTableGUI(
643 $this,
644 "allMedia",
645 $this->getMediaPool(),
646 "mepitem_id",
648 true
649 );
650 $mtab->resetFilter();
651 $mtab->resetOffset();
652 $this->allMedia();
653 }
654
658 public function getTemplate(): void
659 {
660 $this->tpl->loadStandardTemplate();
661 }
662
663
667 public function getParentFolderId(): ?int
668 {
669 if ($this->mep_item_id == 0) {
670 return null;
671 }
672 $par_id = $this->object->getPoolTree()->getParentId($this->mep_item_id);
673 if ($par_id != $this->object->getPoolTree()->getRootId()) {
674 return (int) $par_id;
675 }
676
677 return null;
678 }
679
683 protected function showMedia(): void
684 {
685 $this->checkPermission("read");
686 $link_xml = "";
687 $pg_frame = "";
688
689 $item = new ilMediaPoolItem($this->mep_item_id);
690 $mob_id = $item->getForeignId();
691
692 $this->tpl = new ilGlobalTemplate("tpl.fullscreen.html", true, true, "components/ILIAS/COPage");
693 $this->tpl->setVariable("LOCATION_STYLESHEET", ilUtil::getStyleSheetLocation());
694 $this->tpl->setVariable(
695 "LOCATION_CONTENT_STYLESHEET",
697 );
698
699
701 $media_obj = new ilObjMediaObject($mob_id);
702
703
704 $this->tpl->setVariable("TITLE", " - " . $media_obj->getTitle());
705
706 $xml = "<dummy>";
707 // todo: we get always the first alias now (problem if mob is used multiple
708 // times in page)
709 $xml .= $media_obj->getXML(IL_MODE_ALIAS);
710 $xml .= $media_obj->getXML(IL_MODE_OUTPUT);
711 $xml .= $link_xml;
712 $xml .= "</dummy>";
713 $wb_path = ilFileUtils::getWebspaceDir("output") . "/";
714
715 $mode = ($this->ctrl->getCmd() !== "showPreview")
716 ? "fullscreen"
717 : "media";
718 $enlarge_path = ilUtil::getImagePath("media/enlarge.svg", false, "output");
719 $fullscreen_link =
720 $this->ctrl->getLinkTarget($this, "showFullscreen", "", false, false);
721 $params = array('mode' => $mode, 'enlarge_path' => $enlarge_path,
722 'link_params' => "ref_id=" . $this->requested_ref_id,'fullscreen_link' => $fullscreen_link,
723 'enable_html_mob' => ilObjMediaObject::isTypeAllowed("html") ? "y" : "n",
724 'ref_id' => $this->requested_ref_id, 'pg_frame' => $pg_frame, 'webspace_path' => $wb_path);
725 $output = $this->xsl->process($xml, $params);
726
727 // unmask user html
728 $this->tpl->setVariable("MEDIA_CONTENT", $output);
729 }
730
737 public function showPage(): void
738 {
739 //$tpl = new \ilGlobalPageTemplate($DIC->globalScreen(), $DIC->ui(), $DIC->http());
740 $tpl = new ilGlobalTemplate("tpl.fullscreen.html", true, true, "components/ILIAS/COPage");
741
745
746 // get page object
747 $page_gui = $this->getMediaPoolPageGUI($this->mep_item_id);
748 $page_gui->setTemplate($tpl);
749
750 $page_gui->setTemplateOutput(false);
751 $page_gui->setHeader("");
752 $ret = $page_gui->showPage(true);
753
754 //$tpl->setBodyClass("ilMediaPoolPagePreviewBody");
755 $tpl->setVariable("MEDIA_CONTENT", "<div>" . $ret . "</div>");
756
757
759 exit;
760 }
761
767 protected function getMediaPoolPageGUI($mep_item_id, $old_nr = 0)
768 {
769 $page_gui = new ilMediaPoolPageGUI($mep_item_id, $old_nr);
770 $page_gui->setPoolGUI($this);
771
772 return $page_gui;
773 }
774
775
779 public function showPreview(): void
780 {
781 $this->checkPermission("read");
782
783 $item = new ilMediaPoolItem($this->mep_item_id);
784
785 switch ($item->getType()) {
786 case "mob":
787 $this->showMedia();
788 break;
789
790 case "pg":
791 $this->showPage();
792 break;
793 }
794 }
795
796
800 public function showFullscreen(): void
801 {
802 $this->showMedia();
803 }
804
808 public function confirmRemove(): void
809 {
810 $ilCtrl = $this->ctrl;
812
813 $this->checkPermission("write");
814
815 $ids = $this->mep_request->getItemIds();
816 if (count($ids) === 0) {
817 $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt("no_checkbox"), true);
818 $ilCtrl->redirect($this, "");
819 }
820
821 // display confirmation message
822 $cgui = new ilConfirmationGUI();
823 $cgui->setFormAction($this->ctrl->getFormAction($this));
824 $cgui->setHeaderText($this->lng->txt("info_remove_sure"));
825 $cgui->setCancel($this->lng->txt("cancel"), "cancelRemove");
826 $cgui->setConfirm($this->lng->txt("confirm"), "remove");
827
828 foreach ($ids as $obj_id) {
831
832 // check whether page can be removed
833 $add = "";
834 if ($type === "pg") {
835 $usages = ilPageContentUsage::getUsages("incl", $obj_id, false);
836 if (count($usages) > 0) {
837 $this->main_tpl->setOnScreenMessage('failure', sprintf($lng->txt("mep_content_snippet_in_use"), $title), true);
838 $ilCtrl->redirect($this, "listMedia");
839 } else {
840 // check whether the snippet is used in older versions of pages
841 $usages = ilPageContentUsage::getUsages("incl", $obj_id, true);
842 if (count($usages) > 0) {
843 $add = "<div class='small'>" . $lng->txt("mep_content_snippet_used_in_older_versions") . "</div>";
844 }
845 }
846 }
847
848 $caption =
849 " " . $title . $add;
850
851 $cgui->addItem("id[]", $obj_id, $caption);
852 }
853
854 $this->tpl->setContent($cgui->getHTML());
855 }
856
860 public function openClipboard(): void
861 {
862 $ilCtrl = $this->ctrl;
863
864 $this->checkPermission("write");
865
866 $ilCtrl->setParameterByClass(
867 "ileditclipboardgui",
868 "returnCommand",
869 rawurlencode($ilCtrl->getLinkTarget(
870 $this,
871 "insertFromClipboard",
872 "",
873 false,
874 false
875 ))
876 );
877 $ilCtrl->redirectByClass("ilEditClipboardGUI", "getObject");
878 }
879
880
884 public function insertFromClipboard(): void
885 {
886 $this->checkPermission("write");
887
888 $this->domain->mediapool($this->object->getId())
889 ->copySelectedFromEditClipboard($this->mep_item_id);
890
891 /*
892 if (count($not_inserted) > 0) {
893 $this->main_tpl->setOnScreenMessage('info', $this->lng->txt("mep_not_insert_already_exist") . "<br>" .
894 implode("<br>", $not_inserted), true);
895 }*/
896 $this->ctrl->redirect($this, $this->mode);
897 }
898
899
903 public function cancelRemove(): void
904 {
905 $this->ctrl->redirect($this, $this->mode);
906 }
907
908 public function remove(): void
909 {
910 $this->checkPermission("write");
911
912 $ids = $this->mep_request->getItemIds();
913 foreach ($ids as $obj_id) {
914 $this->object->deleteChild($obj_id);
915 }
916
917 $this->main_tpl->setOnScreenMessage('success', $this->lng->txt("cont_obj_removed"), true);
918 $this->ctrl->redirect($this, $this->mode);
919 }
920
921
925 public function copyToClipboard(): void
926 {
927 $ilUser = $this->user;
928
929 $this->checkPermission("write");
930
931 $ids = $this->mep_request->getItemIds();
932 if (count($ids) === 0) {
933 $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt("no_checkbox"), true);
934 $this->ctrl->redirect($this, $this->mode);
935 }
936
937 foreach ($ids as $obj_id) {
939 if ($type === "fold") {
940 $this->main_tpl->setOnScreenMessage('failure', $this->lng->txt("cont_cant_copy_folders"), true);
941 $this->ctrl->redirect($this, $this->mode);
942 }
943 }
944 foreach ($ids as $obj_id) {
947 if ($type === "mob") {
948 $ilUser->addObjectToClipboard($fid, "mob", "");
949 }
950 if ($type === "pg") {
951 $ilUser->addObjectToClipboard($obj_id, "incl", "");
952 }
953 }
954 $this->main_tpl->setOnScreenMessage('success', $this->lng->txt("copied_to_clipboard"), true);
955 $this->ctrl->redirect($this, $this->mode);
956 }
957
961 protected function addLocatorItems(): void
962 {
963 $ilLocator = $this->locator;
964 $ilAccess = $this->access;
965 if (!$this->getCreationMode() && $this->ctrl->getCmd() !== "explorer") {
966 $tree = $this->object->getTree();
969 foreach ($path as $node) {
970 if ($node["child"] == $tree->getRootId()) {
971 $this->ctrl->setParameter($this, "mepitem_id", "");
972 $link = "";
973 if ($ilAccess->checkAccess("read", "", $this->object->getRefId())) {
974 $link = $this->ctrl->getLinkTarget($this, "listMedia");
975 } elseif ($ilAccess->checkAccess("visible", "", $this->object->getRefId())) {
976 $link = $this->ctrl->getLinkTarget($this, "infoScreen");
977 }
978 $title = $this->object->getTitle();
979 $this->ctrl->setParameter($this, "mepitem_id", $this->mep_item_id);
980 $ilLocator->addItem($title, $link, "", $this->requested_ref_id);
981 }
982 }
983 }
984 }
985
989
990 public function createFolderForm(): void
991 {
993
994 $this->checkPermission("write");
995
996 $this->initFolderForm("create");
997 $tpl->setContent($this->form->getHTML());
998 }
999
1000 public function editFolder(): void
1001 {
1002 $tpl = $this->tpl;
1003
1004 $this->checkPermission("write");
1005
1006 $this->initFolderForm();
1007 $this->getFolderValues();
1008 $tpl->setContent($this->form->getHTML());
1009 }
1010
1014 public function getFolderValues(): void
1015 {
1016 $values = array();
1017
1018 $values["title"] = ilMediaPoolItem::lookupTitle($this->mep_item_id);
1019
1020 $this->form->setValuesByArray($values);
1021 }
1022
1026 public function saveFolder(): void
1027 {
1028 $tpl = $this->tpl;
1029 $lng = $this->lng;
1030 $ilCtrl = $this->ctrl;
1031
1032 $this->checkPermission("write");
1033
1034 $this->initFolderForm("create");
1035 if ($this->form->checkInput()) {
1036 if ($this->object->createFolder($this->form->getInput("title"), $this->mep_item_id)) {
1037 $this->main_tpl->setOnScreenMessage('success', $lng->txt("mep_folder_created"), true);
1038 }
1039 $ilCtrl->redirect($this, "listMedia");
1040 }
1041
1042 $this->form->setValuesByPost();
1043 $tpl->setContent($this->form->getHTML());
1044 }
1045
1046 public function updateFolder(): void
1047 {
1048 $lng = $this->lng;
1049 $ilCtrl = $this->ctrl;
1050 $tpl = $this->tpl;
1051
1052 $this->checkPermission("write");
1053
1054 $this->initFolderForm("edit");
1055 if ($this->form->checkInput()) {
1056 $item = new ilMediaPoolItem($this->mep_item_id);
1057 $item->setTitle($this->form->getInput("title"));
1058 $item->update();
1059 $this->main_tpl->setOnScreenMessage('success', $lng->txt("msg_obj_modified"), true);
1060 $ilCtrl->setParameter(
1061 $this,
1062 "mepitem_id",
1063 $this->object->getTree()->getParentId($this->mep_item_id)
1064 );
1065 $ilCtrl->redirect($this, "listMedia");
1066 }
1067
1068 $this->form->setValuesByPost();
1069 $tpl->setContent($this->form->getHTML());
1070 }
1071
1076 public function initFolderForm(string $a_mode = "edit"): void
1077 {
1078 $lng = $this->lng;
1079 $ilCtrl = $this->ctrl;
1080
1081 $this->form = new ilPropertyFormGUI();
1082
1083 // desc
1084 $ti = new ilTextInputGUI($lng->txt("title"), "title");
1085 $ti->setMaxLength(128);
1086 $ti->setRequired(true);
1087 $this->form->addItem($ti);
1088
1089 // save and cancel commands
1090 if ($a_mode === "create") {
1091 $this->form->addCommandButton("saveFolder", $lng->txt("save"));
1092 $this->form->addCommandButton("cancelSave", $lng->txt("cancel"));
1093 $this->form->setTitle($lng->txt("mep_new_folder"));
1094 } else {
1095 $this->form->addCommandButton("updateFolder", $lng->txt("save"));
1096 $this->form->addCommandButton("cancelFolderUpdate", $lng->txt("cancel"));
1097 $this->form->setTitle($lng->txt("mep_edit_folder"));
1098 }
1099
1100 $this->form->setFormAction($ilCtrl->getFormAction($this));
1101 }
1102
1103 public function cancelFolderUpdate(): void
1104 {
1105 $ilCtrl = $this->ctrl;
1106 $ilCtrl->setParameter(
1107 $this,
1108 "mepitem_id",
1109 $this->object->getTree()->getParentId($this->mep_item_id)
1110 );
1111 $ilCtrl->redirect($this, "listMedia");
1112 }
1113
1114 public function cancelSave(): void
1115 {
1116 $ilCtrl = $this->ctrl;
1117 $ilCtrl->redirect($this, "listMedia");
1118 }
1119
1123
1127 public function setContentSubTabs(
1128 string $a_active
1129 ): void {
1130 $ilAccess = $this->access;
1131 $ilTabs = $this->tabs;
1132 $ilCtrl = $this->ctrl;
1133
1134 $ilTabs->addSubTab("content", $this->lng->txt("objs_fold"), $this->ctrl->getLinkTarget($this, ""));
1135
1136 $ilCtrl->setParameter($this, "mepitem_id", "");
1137 $ilTabs->addSubTab("mep_all_mobs", $this->lng->txt("mep_all_mobs"), $this->ctrl->getLinkTarget($this, "allMedia"));
1138 $ilCtrl->setParameter($this, "mepitem_id", $this->mep_item_id);
1139
1140 if ($ilAccess->checkAccess('write', '', $this->ref_id)) {
1141 $ilTabs->addSubTab(
1142 "srt_files",
1143 $this->lng->txt("mep_media_subtitles"),
1144 $ilCtrl->getLinkTargetByClass("ilmobmultisrtuploadgui", "")
1145 );
1146 }
1147
1148 $ilTabs->activateSubTab($a_active);
1149 }
1150
1151 protected function setTabs(): void
1152 {
1153 $ilAccess = $this->access;
1154 $ilTabs = $this->tabs;
1155 $ilHelp = $this->help;
1156
1157 $ilHelp->setScreenIdComponent("mep");
1158
1159 if ($ilAccess->checkAccess('read', '', $this->ref_id) ||
1160 $ilAccess->checkAccess('write', '', $this->ref_id)) {
1161 $ilTabs->addTab("content", $this->lng->txt("mep_content"), $this->ctrl->getLinkTarget($this, ""));
1162 }
1163
1164 // info tab
1165 if ($ilAccess->checkAccess('visible', '', $this->ref_id) ||
1166 $ilAccess->checkAccess('read', '', $this->ref_id) ||
1167 $ilAccess->checkAccess('write', '', $this->ref_id)) {
1168 $ilTabs->addTab(
1169 "info_short",
1170 $this->lng->txt("info_short"),
1171 $this->ctrl->getLinkTargetByClass(
1172 array("ilobjmediapoolgui", "ilinfoscreengui"),
1173 "showSummary"
1174 )
1175 );
1176 }
1177
1178 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
1179 $ilTabs->addTab(
1180 "settings",
1181 $this->lng->txt("settings"),
1182 $this->ctrl->getLinkTargetByClass(SettingsGUI::class)
1183 );
1184 }
1185 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
1186 $ilTabs->addTab(
1187 "clipboard",
1188 $this->lng->txt("clipboard"),
1189 $this->ctrl->getLinkTarget($this, "openClipboard")
1190 );
1191 }
1192
1193 // properties
1194 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
1195 // meta data
1196 $mdgui = new ilObjectMetaDataGUI($this->object, ['mob', "mpg"]);
1197 $mdtab = $mdgui->getTab();
1198 if ($mdtab) {
1199 $ilTabs->addTab(
1200 "meta_data",
1201 $this->lng->txt("meta_data"),
1202 $mdtab
1203 );
1204 }
1205 }
1206
1207 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
1208 $ilTabs->addTab(
1209 "export",
1210 $this->lng->txt("export"),
1211 $this->ctrl->getLinkTargetByClass("ilexportgui", "")
1212 );
1213
1214 $ilTabs->addTab(
1215 "import",
1216 $this->lng->txt("import"),
1217 $this->ctrl->getLinkTargetByClass("ilmediapoolimportgui", "")
1218 );
1219 }
1220
1221 if ($ilAccess->checkAccess("edit_permission", "", $this->object->getRefId())) {
1222 $ilTabs->addTab(
1223 "perm_settings",
1224 $this->lng->txt("perm_settings"),
1225 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm")
1226 );
1227 }
1228 }
1229
1230 public function setSettingsSubTabs(
1231 string $a_active
1232 ): void {
1233 $ilTabs = $this->tabs;
1234 $lng = $this->lng;
1235 $ilAccess = $this->access;
1236
1237 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
1238 $ilTabs->addSubTab(
1239 "settings",
1240 $lng->txt("settings"),
1241 $this->ctrl->getLinkTarget($this, "edit")
1242 );
1243
1244 $mset = new ilSetting("mobs");
1245 if ($mset->get("mep_activate_pages")) {
1246 $ilTabs->addSubTabTarget(
1247 "obj_multilinguality",
1248 $this->ctrl->getLinkTargetByClass(TranslationGUI::class, "")
1249 );
1250 }
1251 }
1252
1253 $ilTabs->setSubTabActive($a_active);
1254 }
1255
1256
1257 public static function _goto(string $a_target): void
1258 {
1259 global $DIC;
1260 $main_tpl = $DIC->ui()->mainTemplate();
1261
1262 $ilAccess = $DIC->access();
1263 $lng = $DIC->language();
1264 $ctrl = $DIC->ctrl();
1265
1266 $subitem_id = "";
1267 $targets = explode('_', $a_target);
1268 $ref_id = $targets[0];
1269 if (count((array) $targets) > 1) {
1270 $subitem_id = $targets[1];
1271 }
1272
1273 $ctrl->setParameterByClass("ilMediaPoolPresentationGUI", "ref_id", $ref_id);
1274 if ($ilAccess->checkAccess("read", "", $ref_id)) {
1275 $ctrl->setParameterByClass("ilMediaPoolPresentationGUI", "mepitem_id", $subitem_id);
1276 $ctrl->redirectByClass("ilMediaPoolPresentationGUI", "");
1277 } elseif ($ilAccess->checkAccess("visible", "", $ref_id)) {
1278 $ctrl->redirectByClass("ilMediaPoolPresentationGUI", "infoScreen");
1279 } elseif ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
1280 $main_tpl->setOnScreenMessage('failure', sprintf(
1281 $lng->txt("msg_no_perm_read_item"),
1283 ), true);
1285 }
1286
1287 throw new ilPermissionException($lng->txt("msg_no_perm_read"));
1288 }
1289
1293 public function infoScreenObject(): void
1294 {
1295 $this->ctrl->redirectByClass(ilInfoScreenGUI::class, "showSummary");
1296 }
1297
1303 public function infoScreen(): void
1304 {
1305 $this->tabs->activateTab("info_short");
1306 $ilAccess = $this->access;
1307
1308 if (!$ilAccess->checkAccess("visible", "", $this->ref_id) &&
1309 !$ilAccess->checkAccess("read", "", $this->ref_id) &&
1310 !$ilAccess->checkAccess("write", "", $this->ref_id)) {
1311 throw new ilPermissionException($this->lng->txt("msg_no_perm_read"));
1312 }
1313
1314 if ($this->ctrl->getCmd() === "infoScreen") {
1315 $this->ctrl->redirectByClass(ilInfoScreenGUI::class, "showSummary");
1316 }
1317
1318 $info = new ilInfoScreenGUI($this);
1319
1320 $info->enablePrivateNotes();
1321
1322
1323 // standard meta data
1324 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
1325
1326 // forward the command
1327 $this->ctrl->forwardCommand($info);
1328 }
1329
1330
1334
1338 public function selectUploadDirFiles(
1339 ?array $a_files = null
1340 ): void {
1341 $tpl = $this->tpl;
1342 $ilTabs = $this->tabs;
1343 $lng = $this->lng;
1344 $ilCtrl = $this->ctrl;
1345 $ilToolbar = $this->toolbar;
1346
1347
1348 if (!$a_files) {
1349 $a_files = $this->mep_request->getFiles();
1350 }
1351
1352 $ilTabs->clearTargets();
1353 $ilTabs->setBackTarget(
1354 $lng->txt("back"),
1355 $ilCtrl->getLinkTarget($this, "listMedia")
1356 );
1357
1358 $this->checkPermission("write");
1359
1360 if ($this->rbac_system->checkAccess("visible", SYSTEM_FOLDER_ID)) {
1361 $tb = new ilToolbarGUI();
1362 // action type
1363 $options = array(
1364 "rename" => $lng->txt("mep_up_dir_move"),
1365 "copy" => $lng->txt("mep_up_dir_copy"),
1366 );
1367 $si = new ilSelectInputGUI("", "action");
1368 $si->setOptions($options);
1369 $tb->addInputItem($si);
1370 $tb->setCloseFormTag(false);
1371 $tb->setFormAction($ilCtrl->getFormAction($this));
1372 $tb->setFormName("mep_up_form");
1373
1374 $tab = new ilUploadDirFilesTableGUI(
1375 $this,
1376 "selectUploadDirFiles",
1377 $a_files
1378 );
1379 $tab->setFormName("mep_up_form");
1380 $tpl->setContent($tb->getHTML() . $tab->getHTML());
1381 }
1382 }
1383
1387 public static function getPreviewModalHTML(
1388 int $a_mpool_ref_id,
1390 ): string {
1391 global $DIC;
1392
1393 $tpl = $DIC["tpl"];
1394 $ilCtrl = $DIC->ctrl();
1395 $lng = $DIC->language();
1396 $internal_gui = $DIC->mediaPool()
1397 ->internal()
1398 ->gui();
1399 $request = $internal_gui
1400 ->standardRequest();
1401
1403
1404 $tpl->addJavaScript("assets/js/ilMediaPool.js");
1405
1406 $ilCtrl->setParameterByClass("ilobjmediapoolgui", "mepitem_id", "");
1407 $ilCtrl->setParameterByClass("ilobjmediapoolgui", "ref_id", $a_mpool_ref_id);
1408 $tpl->addOnloadCode("il.MediaPool.setPreviewUrl('" . $ilCtrl->getLinkTargetByClass(array("ilmediapoolpresentationgui", "ilobjmediapoolgui"), "showPreview", "", false, false) . "');");
1409 $ilCtrl->setParameterByClass("ilobjmediapoolgui", "mepitem_id", $request->getItemId());
1410 $ilCtrl->setParameterByClass(
1411 "ilobjmediapoolgui",
1412 "ref_id",
1413 $request->getRefId()
1414 );
1415
1416 $modal = $internal_gui->ui()->factory()->modal()->roundtrip(
1417 $lng->txt("preview"),
1418 $internal_gui->ui()->factory()->legacy()->content("<iframe id='ilMepPreviewContent'></iframe>")
1419 );
1420 $html = $internal_gui->ui()->renderer()->render($modal);
1421 $html = str_replace(
1422 "<iframe id='ilMepPreviewContent'",
1423 "<iframe data-signal='" . $modal->getShowSignal()->getId() . "' id='ilMepPreviewContent'",
1424 $html
1425 );
1426
1427 return $html;
1428 }
1429
1430 public function export(): void
1431 {
1432 $ot = $this->object->getObjectProperties()->getPropertyTranslations();
1433 $opt = "";
1434 if ($ot->getContentTranslationActivated()) {
1435 $format = explode("_", $this->mep_request->getExportFormat());
1436 $opt = ilUtil::stripSlashes($format[1]);
1437 }
1438
1439 $this->object->exportXML($opt);
1440 }
1441
1442 //
1443 // BULK UPLOAD
1444 //
1445
1446 protected function bulkUpload(): void
1447 {
1448 $this->checkPermission("write");
1449
1450 $main_tpl = $this->main_tpl;
1451
1452 $form = $this->getBulkUploadForm();
1453 $main_tpl->setContent($form->render());
1454 }
1455
1456 protected function getBulkUploadForm(): FormAdapterGUI
1457 {
1458 if (is_null($this->bulk_upload_form)) {
1459 $mep_hash = uniqid();
1460 $this->ctrl->setParameter($this, "mep_hash", $mep_hash);
1461 $this->bulk_upload_form = $this->gui
1462 ->form(self::class, 'performBulkUpload')
1463 ->section("props", $this->lng->txt('mep_bulk_upload'))
1464 ->file(
1465 "media_files",
1466 $this->lng->txt("mep_media_files"),
1467 \Closure::fromCallable([$this, 'handleUploadResult']),
1468 "mep_id",
1469 "",
1470 20
1471 );
1472 // ->meta()->text()->meta()->textarea()
1473 }
1474 return $this->bulk_upload_form;
1475 }
1476
1477 protected function handleUploadResult(
1478 FileUpload $upload,
1479 UploadResult $result
1481 $title = $result->getName();
1482
1483 $mob = new ilObjMediaObject();
1484 $mob->setTitle($title);
1485 $mob->setDescription("");
1486 $mob->create();
1487
1488 $media_item = $mob->addMediaItemFromUpload(
1489 "Standard",
1490 $result,
1491 $this->mep_request->getUploadHash()
1492 );
1493
1494 $mob->update();
1495
1496 /*
1497 $mob->createDirectory();
1498 $media_item = new ilMediaItem();
1499 $mob->addMediaItem($media_item);
1500 $media_item->setPurpose("Standard");
1501
1502 $mob_dir = ilObjMediaObject::_getRelativeDirectory($mob->getId());
1503 $file_name = ilObjMediaObject::fixFilename($title);
1504 $file = $mob_dir . "/" . $file_name;
1505
1506 $upload->moveOneFileTo(
1507 $result,
1508 $mob_dir,
1509 Location::WEB,
1510 $file_name,
1511 true
1512 );*/
1513
1514 // duration
1515 $med_item = $mob->getMediaItem("Standard");
1516 $med_item->determineDuration();
1517 $med_item->update();
1518
1519
1520 $mep_item = new ilMediaPoolItem();
1521 $mep_item->setTitle($title);
1522 $mep_item->setType("mob");
1523 $mep_item->setForeignId($mob->getId());
1524 $mep_item->create();
1525
1526 $tree = $this->object->getTree();
1527 $parent = $this->mep_item_id;
1528 $tree->insertNode($mep_item->getId(), $parent);
1529
1530 // get mime type
1531 /*
1532 $format = ilObjMediaObject::getMimeType($file);
1533 $location = $file_name;
1534
1535 // set real meta and object data
1536 $media_item->setFormat($format);
1537 $media_item->setLocation($location);
1538 $media_item->setLocationType("LocalFile");
1539 $media_item->setUploadHash($this->mep_request->getUploadHash());
1540 $mob->update();*/
1541
1542 $item_ids[] = $mob->getId();
1543
1544 /*
1545 $mob = new ilObjMediaObject($mob->getId());
1546 $mob->generatePreviewPic(320, 240);*/
1547
1548 // duration
1549 /*
1550 $med_item = $mob->getMediaItem("Standard");
1551 $med_item->determineDuration();
1552 $med_item->update();*/
1553
1554 return new BasicHandlerResult(
1555 "mep_id",
1556 HandlerResult::STATUS_OK,
1557 $med_item->getId(),
1558 ''
1559 );
1560 }
1561
1565 public function performBulkUpload(): void
1566 {
1567 $this->checkPermission("write");
1568 $this->ctrl->setParameter($this, "mep_hash", $this->mep_request->getUploadHash());
1569 $this->ctrl->redirect($this, "editTitlesAndDescriptions");
1570 }
1571
1572 protected function editTitlesAndDescriptions(): void
1573 {
1574 $ctrl = $this->ctrl;
1575 $lng = $this->lng;
1576
1577 $this->checkPermission("write");
1578 $ctrl->saveParameter($this, "mep_hash");
1579
1580 $main_tpl = $this->main_tpl;
1581
1583 $this->mep_request->getUploadHash()
1584 );
1585
1586 $tb = new ilToolbarGUI();
1587 $tb->setFormAction($ctrl->getFormAction($this));
1588 $tb->addFormButton($lng->txt("save"), "saveTitlesAndDescriptions");
1589 $tb->setOpenFormTag(true);
1590 $tb->setCloseFormTag(false);
1591 $tb->setId("tb_top");
1592
1593 $html = $tb->getHTML();
1594 foreach ($media_items as $mi) {
1595 $acc = new ilAccordionGUI();
1596 $acc->setBehaviour(ilAccordionGUI::ALL_CLOSED);
1597 $acc->setId("acc_" . $mi["mob_id"]);
1598
1599 $mob = new ilObjMediaObject($mi["mob_id"]);
1600 $form = $this->initMediaBulkForm($mi["mob_id"], $mob->getTitle());
1601 $acc->addItem($mob->getTitle(), $form->getHTML());
1602
1603 $html .= $acc->getHTML();
1604 }
1605
1606 $html .= $tb->getHTML();
1607 $tb->setOpenFormTag(false);
1608 $tb->setCloseFormTag(true);
1609 $tb->setId("tb_bottom");
1610
1611 $main_tpl->setContent($html);
1612 }
1613
1617 public function initMediaBulkForm(
1618 int $a_id,
1619 string $a_title
1621 $lng = $this->lng;
1622
1623 $form = new ilPropertyFormGUI();
1624 $form->setOpenTag(false);
1625 $form->setCloseTag(false);
1626
1627 // title
1628 $ti = new ilTextInputGUI($lng->txt("title"), "title_" . $a_id);
1629 $ti->setValue($a_title);
1630 $form->addItem($ti);
1631
1632 // description
1633 $ti = new ilTextAreaInputGUI($lng->txt("description"), "description_" . $a_id);
1634 $form->addItem($ti);
1635
1636 return $form;
1637 }
1638
1639 protected function saveTitlesAndDescriptions(): void
1640 {
1641 $lng = $this->lng;
1642 $ctrl = $this->ctrl;
1643
1644 $this->checkPermission("write");
1646 $this->mep_request->getUploadHash()
1647 );
1648
1649 foreach ($media_items as $mi) {
1650 $mob = new ilObjMediaObject($mi["mob_id"]);
1651 $form = $this->initMediaBulkForm($mi["mob_id"], $mob->getTitle());
1652 $form->checkInput();
1653 $title = $form->getInput("title_" . $mi["mob_id"]);
1654 $desc = $form->getInput("description_" . $mi["mob_id"]);
1655 if (trim($title) !== "") {
1656 $mob->setTitle($title);
1657 }
1658 $mob->setDescription($desc);
1659 $mob->update();
1660 }
1661 $this->main_tpl->setOnScreenMessage('success', $lng->txt("msg_obj_modified"), true);
1662 $ctrl->redirect($this, "listMedia");
1663 }
1664
1665 protected function move(): void
1666 {
1667 ilSession::set("mep_move_ids", $this->mep_request->getItemIds());
1668 $this->main_tpl->setOnScreenMessage('info', $this->lng->txt("mep_move_select_insert"), true);
1669 $this->ctrl->redirect($this, "listMedia");
1670 }
1671
1672 protected function paste(): void
1673 {
1674 $target_folder_id = $this->mep_request->getItemId();
1675 $target_tree = $this->domain->tree($this->object->getId());
1676 if (ilMediaPoolItem::lookupType($target_folder_id) !== "fold") {
1677 $target_folder_id = $target_tree->readRootId();
1678 }
1679
1680 try {
1681 $this->domain->mediapool($this->object->getId())->pasteFromClipboard($target_folder_id);
1682 } catch (Exception $e) {
1683 $this->main_tpl->setOnScreenMessage(
1684 'failure',
1685 $this->lng->txt("mep_target_in_source_not_allowed") . " " . $e->getMessage(),
1686 true
1687 );
1688 }
1689
1690 $this->ctrl->redirect($this, "listMedia");
1691 }
1692
1693 protected function afterUpload($mob_ids): void
1694 {
1695 $this->addMobsToPool($mob_ids, "", false);
1696 }
1697
1698 protected function afterUrlSaving(int $mob_id, string $long_desc): void
1699 {
1700 $this->addMobsToPool([$mob_id], $long_desc);
1701 }
1702
1703 protected function addMobsToPool(
1704 array $mob_ids,
1705 string $long_desc = "",
1706 bool $redirect = true,
1707 bool $extract = false
1708 ): void {
1709 $ctrl = $this->ctrl;
1710 $user = $this->user;
1711
1712 $item_ids = [];
1713 foreach ($mob_ids as $mob_id) {
1714 $object = new ilObjMediaObject($mob_id);
1715 if (!is_null($object)) {
1716 $mep_item = new ilMediaPoolItem();
1717 $mep_item->setTitle($object->getTitle());
1718 $mep_item->setType("mob");
1719 $mep_item->setForeignId($object->getId());
1720 $mep_item->create();
1721
1722 $parent = $this->mep_item_id;
1723 $tree = $this->object->getTree();
1724 $tree->insertNode($mep_item->getId(), $parent);
1725 }
1726 }
1727
1728 if ($redirect) {
1729 $ctrl->redirect($this, "listMedia");
1730 }
1731 }
1732
1733 protected function afterPoolInsert(array $mob_ids): void
1734 {
1735 $this->addMobsToPool($mob_ids, "", true, true);
1736 }
1737
1738 public function finishSingleUpload(int $mob_id): void
1739 {
1740 $this->ctrl->redirect($this, "listMedia");
1741 }
1742
1743 protected function onMobUpdate(int $mob_id): void
1744 {
1745 }
1746
1747}
const IL_MODE_ALIAS
const IL_MODE_OUTPUT
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setParameter(object $a_gui_obj, string $a_parameter, $a_value)
@inheritDoc
redirect(object $a_gui_obj, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Export User Interface Class.
static getWebspaceDir(string $mode="filesystem")
get webspace directory
setCloseTag(bool $a_val)
setOpenTag(bool $a_open)
special template class to simplify handling of ITX/PEAR
Help GUI class.
Class ilInfoScreenGUI.
loadLanguageModule(string $a_module)
Load language module.
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...
static getLogger(string $a_component_id)
Get component logger.
Component logger with individual log levels by component id.
static getMediaItemsForUploadHash(string $a_hash)
Get media items for upload hash.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Import related features for media pools (currently used for translation imports)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static lookupTitle(int $a_id)
static lookupForeignId(int $a_id)
static lookupType(int $a_id)
Class ilMediaPoolPage GUI class.
TableGUI class for recent changes in wiki.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilObjFolderGUI.
Editing User Interface for MediaObjects within LMs (see ILIAS DTD)
static includePresentationJS(?ilGlobalTemplateInterface $a_tpl=null)
Include media object presentation JS.
static isTypeAllowed(string $a_type)
User Interface class for media pool objects.
afterSave(ilObject $new_object)
Post (successful) object creation hook.
StandardGUIRequest $mep_request
initMediaBulkForm(int $a_id, string $a_title)
Init media bulk form.
cancelRemove()
cancel deletion of media objects/folders
performBulkUpload()
Save bulk upload form.
getTemplate()
Get standard template.
showMedia()
show media object
setTabs()
create tabs (repository/workspace switch)
addLocatorItems()
add locator items for media pool
getFolderValues()
Get current values for folder from.
showFullscreen()
show media fullscreen
allMedia()
list all media objects
openClipboard()
paste from clipboard
selectUploadDirFiles(?array $a_files=null)
Select files from upload directory.
__construct(int $a_id=0, int $a_id_type=self::REPOSITORY_NODE_ID, int $a_parent_node_id=0)
setSettingsSubTabs(string $a_active)
getParentFolderId()
Get folder parent ID.
getMediaPoolPageGUI($mep_item_id, $old_nr=0)
Get media pool page.
handleUploadResult(FileUpload $upload, UploadResult $result)
confirmRemove()
confirm remove of mobs
static getPreviewModalHTML(int $a_mpool_ref_id, ilGlobalTemplateInterface $a_tpl)
Get preview modal html.
FormAdapterGUI $bulk_upload_form
infoScreenObject()
this one is called from the info button in the repository
ilGlobalTemplateInterface $main_tpl
showPreview()
Show content snippet.
saveFolder()
Save folder form.
static _goto(string $a_target)
ILIAS COPage Xsl XslManager $xsl
infoScreen()
show information screen
addMobsToPool(array $mob_ids, string $long_desc="", bool $redirect=true, bool $extract=false)
ILIAS MediaPool InternalDomainService $domain
returnFromItem()
Return from item editing.
insertFromClipboard()
insert media object from clipboard
afterUrlSaving(int $mob_id, string $long_desc)
copyToClipboard()
copy media objects to clipboard
setContentSubTabs(string $a_active)
Set sub tabs for content tab.
listMedia()
list media objects
getType()
Functions that must be overwritten.
initFolderForm(string $a_mode="edit")
InternalGUIService $gui
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
New implementation of ilObjectGUI.
ilAccessHandler $access
ilGlobalTemplateInterface $tpl
setCreationMode(bool $mode=true)
If true, a creation screen is displayed the current [ref_id] does belong to the parent class The mode...
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
ilLocatorGUI $locator
setLocator()
set Locator
prepareOutput(bool $show_sub_objects=true)
ilToolbarGUI $toolbar
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
addHeaderAction()
Add header action menu.
Class ilObjectMetaDataGUI.
Class ilObject Basic functions for all objects.
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
static getUsages(string $a_pc_type, int $a_pc_id, bool $a_incl_hist=true)
Get usages.
This class represents a property form user interface.
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
This class represents a selection list property in a property form.
static get(string $a_var)
static set(string $a_var, $a_val)
Set a value.
ILIAS Setting Class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text area property in a property form.
This class represents a text property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getPathFull(int $a_endnode_id, int $a_startnode_id=0)
get path from a given startnode to a given endnode if startnode is not given the rootnode is startnod...
insertNode(int $a_node_id, int $a_parent_id, int $a_pos=self::POS_LAST_NODE, bool $a_reset_deletion_date=false)
insert new node with node_id under parent node with parent_id
getParentId(int $a_node_id)
get parent id of given node
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static getStyleSheetLocation(string $mode="output", string $a_css_name="")
get full style sheet file name (path inclusive) of current user
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static redirect(string $a_script)
const SYSTEM_FOLDER_ID
Definition: constants.php:35
const ROOT_FOLDER_ID
Definition: constants.php:32
exit
$info
Definition: entry_point.php:21
Interface Location.
Definition: Location.php:33
setVariable(string $variable, $value='')
Sets the given variable to the given value.
addCss(string $a_css_file, string $media="screen")
Add a css file that should be included in the header.
setOnScreenMessage(string $type, string $a_txt, bool $a_keep=false)
Set a message to be displayed to the user.
printToStdout(string $part=self::DEFAULT_BLOCK, bool $has_tabs=true, bool $skip_main_menu=false)
setContent(string $a_html)
Sets content for standard template.
Interface ilDBInterface.
$ref_id
Definition: ltiauth.php:66
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31
$path
Definition: ltiservices.php:30
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
form( $class_path, string $cmd, string $submit_caption="")
global $lng
Definition: privfeed.php:31
global $DIC
Definition: shib_login.php:26