ILIAS  release_8 Revision v8.24
class.ilExplorerBaseGUI.php
Go to the documentation of this file.
1<?php
2
26abstract class ilExplorerBaseGUI
27{
28 protected string $node_parameter_name;
29 protected ilLogger $log;
30 protected ilCtrl $ctrl;
32
33 protected static string $js_tree_path = "./node_modules/jstree/dist/jstree.js";
34 protected static string $js_tree_path_css = "./node_modules/jstree/dist/themes/default/style.min.css";
35
36 protected static string $js_expl_path = "./Services/UIComponent/Explorer2/js/Explorer2.js";
37 protected bool $skip_root_node = false;
38 protected bool $ajax = false;
39 protected array $custom_open_nodes = array();
40 protected array $selected_nodes = array();
41 protected string $select_postvar = "";
42 protected bool $offline_mode = false;
43 protected array $sec_highl_nodes = array();
44 protected bool $enable_dnd = false;
45 protected string $search_term = "";
46 protected array $open_nodes = [];
48 protected bool $select_multi = false;
49
53 protected $parent_obj;
54 protected int $child_limit = 0;
55 private bool $nodeOnclickEnabled;
56 protected string $parent_cmd = '';
57
58 protected string $requested_exp_cmd = "";
59 protected string $requested_exp_cont = "";
60 protected string $requested_searchterm = "";
61 protected string $requested_node_id = "";
62 protected string $id;
63
64 public function __construct(
65 string $a_expl_id,
66 $a_parent_obj,
67 string $a_parent_cmd,
68 string $a_node_parameter_name = "node_id"
69 ) {
71 global $DIC;
72 $this->log = $DIC["ilLog"];
73 $this->ctrl = $DIC->ctrl();
74 $this->tpl = $DIC["tpl"];
75 $this->id = $a_expl_id;
76 $this->parent_obj = $a_parent_obj;
77 $this->parent_cmd = $a_parent_cmd;
78 $this->node_parameter_name = $a_node_parameter_name;
79 // get open nodes
80 $this->store = new ilSessionIStorage("expl2");
81 $open_nodes = $this->store->get("on_" . $this->id);
82 $this->open_nodes = unserialize($open_nodes, ['allowed_classes' => false]) ?: [];
83 if (!is_array($this->open_nodes)) {
84 $this->open_nodes = array();
85 }
86
87 $params = $DIC->http()->request()->getQueryParams();
88 $this->requested_node_id = ($params[$a_node_parameter_name] ?? "");
89 $this->requested_exp_cmd = ($params["exp_cmd"] ?? "");
90 $this->requested_exp_cont = ($params["exp_cont"] ?? "");
91 $this->requested_searchterm = ($params["searchterm"] ?? "");
92
93 $this->nodeOnclickEnabled = true;
95 }
96
97 public function setChildLimit(int $a_val): void
98 {
99 $this->child_limit = $a_val;
100 }
101
102 public function getChildLimit(): int
103 {
104 return $this->child_limit;
105 }
106
107 public function setSearchTerm(string $a_val): void
108 {
109 $this->search_term = $a_val;
110 }
111
112 public function getSearchTerm(): string
113 {
114 return $this->search_term;
115 }
116
117 public function setMainTemplate(ilGlobalTemplateInterface $a_main_tpl = null): void
118 {
119 $this->tpl = $a_main_tpl;
120 }
121
122 public static function getLocalExplorerJsPath(): string
123 {
124 return self::$js_expl_path;
125 }
126
127 public static function getLocalJsTreeJsPath(): string
128 {
129 return self::$js_tree_path;
130 }
131
132 public static function getLocalJsTreeCssPath(): string
133 {
135 }
136
137 public static function createHTMLExportDirs(string $a_target_dir): void
138 {
139 ilFileUtils::makeDirParents($a_target_dir . "/Services/UIComponent/Explorer2/lib/jstree-v.pre1.0");
140 ilFileUtils::makeDirParents($a_target_dir . "/Services/UIComponent/Explorer2/js");
141 }
142
143
144 //
145 // Abstract functions that need to be overwritten in derived classes
146 //
147
156 abstract public function getRootNode();
157
163 abstract public function getChildsOfNode($a_parent_node_id): array;
164
170 abstract public function getNodeContent($a_node): string;
171
177 abstract public function getNodeId($a_node);
178
179
180 //
181 // Functions with standard implementations that may be overwritten
182 //
183
189 public function getNodeHref($a_node): string
190 {
191 return "#";
192 }
193
201 public function nodeHasVisibleChilds($a_node): bool
202 {
203 $childs = $this->getChildsOfNode($this->getNodeId($a_node));
204
205 foreach ($childs as $child) {
206 if ($this->isNodeVisible($child)) {
207 return true;
208 }
209 }
210 return false;
211 }
212
219 public function sortChilds(array $a_childs, $a_parent_node_id): array
220 {
221 return $a_childs;
222 }
223
229 public function getNodeIcon($a_node): string
230 {
231 return "";
232 }
233
239 public function getNodeIconAlt($a_node): string
240 {
241 return "";
242 }
243
249 public function getNodeTarget($a_node): string
250 {
251 return "";
252 }
253
259 public function getNodeOnClick($a_node): string
260 {
261 if ($this->select_postvar !== "") {
262 return $this->getSelectOnClick($a_node);
263 }
264 return "";
265 }
266
272 public function isNodeVisible($a_node): bool
273 {
274 return true;
275 }
276
282 public function isNodeHighlighted($a_node): bool
283 {
284 return false;
285 }
286
292 public function isNodeClickable($a_node): bool
293 {
294 return true;
295 }
296
302 protected function isNodeSelectable($a_node): bool
303 {
304 return true;
305 }
306
307
308 //
309 // Basic configuration / setter/getter
310 //
311
316 public function getId(): string
317 {
318 return $this->id;
319 }
320
321 public function setSkipRootNode(bool $a_val): void
322 {
323 $this->skip_root_node = $a_val;
324 }
325
326 public function getSkipRootNode(): bool
327 {
329 }
330
331 public function setAjax(bool $a_val): void
332 {
333 $this->ajax = $a_val;
334 }
335
336 public function getAjax(): bool
337 {
338 return $this->ajax;
339 }
340
344 public function setSecondaryHighlightedNodes(array $a_val): void
345 {
346 $this->sec_highl_nodes = $a_val;
347 }
348
352 public function getSecondaryHighlightedNodes(): array
353 {
355 }
356
361 public function setNodeOpen($a_id): void
362 {
363 if (!in_array($a_id, $this->custom_open_nodes)) {
364 $this->custom_open_nodes[] = $a_id;
365 }
366 }
367
372 final protected function getNodeToggleOnClick($a_node): string
373 {
374 return "$('#" . $this->getContainerId() . "').jstree('toggle_node' , '#" .
375 $this->getDomNodeIdForNodeId($this->getNodeId($a_node)) . "'); return false;";
376 }
377
382 final protected function getSelectOnClick($a_node): string
383 {
384 $dn_id = $this->getDomNodeIdForNodeId($this->getNodeId($a_node));
385 $oc = "il.Explorer2.selectOnClick(event, '" . $dn_id . "'); return false;";
386 return $oc;
387 }
388
394 public function setSelectMode(string $a_postvar, bool $a_multi = false): void
395 {
396 $this->select_postvar = $a_postvar;
397 $this->select_multi = $a_multi;
398 }
399
404 public function setNodeSelected($a_id): void
405 {
406 if (!in_array($a_id, $this->selected_nodes)) {
407 $this->selected_nodes[] = $a_id;
408 }
409 }
410
411 public function setOfflineMode(bool $a_val): void
412 {
413 $this->offline_mode = $a_val;
414 }
415
416 public function getOfflineMode(): bool
417 {
418 return $this->offline_mode;
419 }
420
421 //
422 // Standard functions that usually are not overwritten / internal use
423 //
424
428 public function handleCommand(): bool
429 {
430 if ($this->requested_exp_cmd !== "" &&
431 $this->requested_exp_cont === $this->getContainerId()) {
433 if (in_array($cmd, array("openNode", "closeNode", "getNodeAsync"))) {
434 $this->$cmd();
435 }
436
437 return true;
438 }
439 return false;
440 }
441
442 public function getContainerId(): string
443 {
444 return "il_expl2_jstree_cont_" . $this->getId();
445 }
446
450 public function openNode(): void
451 {
452 $id = $this->getNodeIdForDomNodeId($this->requested_node_id);
453 if (!in_array($id, $this->open_nodes)) {
454 $this->open_nodes[] = $id;
455 }
456 $this->store->set("on_" . $this->id, serialize($this->open_nodes));
457 exit;
458 }
459
463 public function closeNode(): void
464 {
465 $id = $this->getNodeIdForDomNodeId($this->requested_node_id);
466 if (in_array($id, $this->open_nodes)) {
467 $k = array_search($id, $this->open_nodes);
468 unset($this->open_nodes[$k]);
469 }
470 $this->store->set("on_" . $this->id, serialize($this->open_nodes));
471 exit;
472 }
473
477 public function getNodeAsync(): string
478 {
479 $this->beforeRendering();
480
481 $etpl = new ilTemplate("tpl.explorer2.html", true, true, "Services/UIComponent/Explorer2");
482
483 $root = $this->getNodeId($this->getRootNode());
484 if (!in_array($root, $this->open_nodes)) {
485 $this->open_nodes[] = $root;
486 }
487 $this->setSearchTerm(ilUtil::stripSlashes($this->requested_searchterm));
488 if ($this->requested_node_id !== "") {
489 $id = $this->getNodeIdForDomNodeId($this->requested_node_id);
490 $this->renderChilds($id, $etpl);
491 } else {
492 $this->getNodeId($this->getRootNode());
493 $this->renderNode($this->getRootNode(), $etpl);
494 }
495 echo $etpl->get("tag");
496 exit;
497 }
498
502 public function beforeRendering(): void
503 {
504 }
505
510 protected function isNodeOpen($node_id): bool
511 {
512 return ($this->getNodeId($this->getRootNode()) == $node_id
513 || in_array($node_id, $this->open_nodes)
514 || in_array($node_id, $this->custom_open_nodes));
515 }
516
517
521 public function getOnLoadCode(): string
522 {
523 $ilCtrl = $this->ctrl;
524
525 $container_id = $this->getContainerId();
526 $container_outer_id = "il_expl2_jstree_cont_out_" . $this->getId();
527
528 // collect open nodes
529 $open_nodes = array($this->getDomNodeIdForNodeId($this->getNodeId($this->getRootNode())));
530 foreach ($this->open_nodes as $nid) {
531 $open_nodes[] = $this->getDomNodeIdForNodeId($nid);
532 }
533 foreach ($this->custom_open_nodes as $nid) {
534 $dnode = $this->getDomNodeIdForNodeId($nid);
535 if (!in_array($dnode, $open_nodes)) {
536 $open_nodes[] = $dnode;
537 }
538 }
539 // ilias config options
540 $url = "";
541 if (!$this->getOfflineMode()) {
542 if (is_object($this->parent_obj)) {
543 $url = $ilCtrl->getLinkTarget($this->parent_obj, $this->parent_cmd, "", true);
544 } else {
545 if (!is_null($this->parent_obj)) {
546 $url = $ilCtrl->getLinkTargetByClass($this->parent_obj, $this->parent_cmd, "", true);
547 }
548 }
549 }
550
551 // secondary highlighted nodes
552 $shn = array();
553 foreach ($this->sec_highl_nodes as $sh) {
554 $shn[] = $this->getDomNodeIdForNodeId($sh);
555 }
556 $config = array(
557 "container_id" => $container_id,
558 "container_outer_id" => $container_outer_id,
559 "url" => $url,
560 "second_hnodes" => $shn,
561 "ajax" => $this->getAjax(),
562 "node_par_name" => $this->node_parameter_name
563 );
564
565
566 // jstree config options
567 $js_tree_config = array(
568 "core" => array(
569 "animation" => 0,
570 "initially_open" => $open_nodes,
571 "open_parents" => false,
572 "strings" => array("loading" => "Loading ...", "new_node" => "New node"),
573 "themes" => array("dots" => false, "icons" => false, "theme" => "")
574 ),
575 "plugins" => $this->getJSTreePlugins(),
576 "html_data" => array()
577 );
578 return (
579 'il.Explorer2.init(' .
580 json_encode($config, JSON_THROW_ON_ERROR) . ', ' .
581 json_encode($js_tree_config, JSON_THROW_ON_ERROR) . ');'
582 );
583 }
584
585 protected function getJSTreePlugins(): array
586 {
587 $plugins = array("html_data", "themes", "json_data");
588 if ($this->isEnableDnd()) {
589 $plugins[] = "dnd";
590 }
591 return $plugins;
592 }
593
594
595 // Init JS/CSS
596 public static function init(ilGlobalTemplateInterface $a_main_tpl = null): void
597 {
598 global $DIC;
599
600 $tpl = $a_main_tpl ?? $DIC["tpl"];
601
604
605 $tpl->addJavaScript(self::getLocalExplorerJsPath());
606 $tpl->addJavaScript(self::getLocalJsTreeJsPath());
607 $tpl->addCss(self::getLocalJsTreeCssPath());
608 }
609
610
611 public function getHTML(): string
612 {
614 $ilCtrl = $this->ctrl;
615
616 $root = $this->getNodeId($this->getRootNode());
617 if (!in_array($root, $this->open_nodes)) {
618 $this->open_nodes[] = $root;
619 }
620
621 $this->beforeRendering();
622
623 self::init($tpl);
624 $container_id = $this->getContainerId();
625 $container_outer_id = "il_expl2_jstree_cont_out_" . $this->getId();
626
627 if (!$ilCtrl->isAsynch()) {
629 }
630
631 $etpl = new ilTemplate("tpl.explorer2.html", true, true, "Services/UIComponent/Explorer2");
632
633 if (!$this->ajax) {
634 // render childs
635 $root_node = $this->getRootNode();
636
637 if (!$this->getSkipRootNode() &&
638 $this->isNodeVisible($this->getRootNode())) {
639 $this->listStart($etpl);
640 $this->renderNode($this->getRootNode(), $etpl);
641 $this->listEnd($etpl);
642 } else {
643 $childs = $this->getChildsOfNode($this->getNodeId($root_node));
644 $childs = $this->sortChilds($childs, $this->getNodeId($root_node));
645 $any = false;
646 foreach ($childs as $child_node) {
647 if ($this->isNodeVisible($child_node)) {
648 if (!$any) {
649 $this->listStart($etpl);
650 $any = true;
651 }
652 $this->renderNode($child_node, $etpl);
653 }
654 }
655 if ($any) {
656 $this->listEnd($etpl);
657 }
658 }
659 }
660
661 $etpl->setVariable("CONTAINER_ID", $container_id);
662 $etpl->setVariable("CONTAINER_OUTER_ID", $container_outer_id);
663
664 $add = "";
665 if ($ilCtrl->isAsynch()) {
666 $add = "<script>" . $this->getOnLoadCode() . "</script>";
667 }
668
669 $content = $etpl->get();
670 //echo $content.$add; exit;
671 return $content . $add;
672 }
673
678 public function renderNode($a_node, ilTemplate $tpl): void
679 {
680 $skip = ($this->getSkipRootNode()
681 && $this->getNodeId($this->getRootNode()) == $this->getNodeId($a_node));
682 if (!$skip) {
683 $this->listItemStart($tpl, $a_node);
684
685 // select mode?
686 if ($this->select_postvar !== "" && $this->isNodeSelectable($a_node)) {
687 if ($this->select_multi) {
688 $tpl->setCurrentBlock("cb");
689 if (in_array($this->getNodeId($a_node), $this->selected_nodes)) {
690 $tpl->setVariable("CHECKED", 'checked="checked"');
691 }
692 $tpl->setVariable("CB_VAL", $this->getNodeId($a_node));
693 $tpl->setVariable("CB_NAME", $this->select_postvar . "[]");
694 } else {
695 $tpl->setCurrentBlock("rd");
696 if (in_array($this->getNodeId($a_node), $this->selected_nodes)) {
697 $tpl->setVariable("SELECTED", 'checked="checked"');
698 }
699 $tpl->setVariable("RD_VAL", $this->getNodeId($a_node));
700 $tpl->setVariable("RD_NAME", $this->select_postvar);
701 }
703 }
704
705
706 if ($this->isNodeHighlighted($a_node)) {
707 $tpl->touchBlock("hl");
708 }
709 $tpl->setCurrentBlock("content");
710 if ($this->getNodeIcon($a_node) !== "") {
711 $tpl->setVariable("ICON", ilUtil::img($this->getNodeIcon($a_node), $this->getNodeIconAlt($a_node)) . " ");
712 }
713 $tpl->setVariable("CONTENT", $this->getNodeContent($a_node));
714 if ($this->isNodeClickable($a_node)) {
715 $tpl->setVariable("HREF", $this->getNodeHref($a_node));
716 }
717 $target = $this->getNodeTarget($a_node);
718 if ($target !== "") {
719 $targetRelatedParams = array(
720 'target="' . $target . '"'
721 );
722
723 if ('_blank' === $target) {
724 $targetRelatedParams[] = 'rel="noopener"';
725 }
726
727 $tpl->setVariable('TARGET', implode(' ', $targetRelatedParams));
728 }
729 if (!$this->isNodeOnclickEnabled() || !$this->isNodeClickable($a_node)) {
730 $tpl->setVariable("ONCLICK", 'onclick="return false;"');
731 $tpl->setVariable("A_CLASS", 'class="disabled"');
732 } else {
733 $onclick = $this->getNodeOnClick($a_node);
734 if ($onclick !== "") {
735 $tpl->setVariable("ONCLICK", 'onclick="' . $onclick . '"');
736 }
737 }
739
740 $tpl->touchBlock("tag");
741 }
742
743 if (!$this->getAjax() || in_array($this->getNodeId($a_node), $this->open_nodes)
744 || in_array($this->getNodeId($a_node), $this->custom_open_nodes)) {
745 $this->renderChilds($this->getNodeId($a_node), $tpl);
746 }
747
748 if (!$skip) {
749 $this->listItemEnd($tpl);
750 }
751 }
752
757 final public function renderChilds($a_node_id, ilTemplate $tpl): void
758 {
759 $childs = $this->getChildsOfNode($a_node_id);
760 $childs = $this->sortChilds($childs, $a_node_id);
761
762 if (count($childs) > 0 || ($this->getSearchTerm() !== "" && $this->isNodeRequested($a_node_id))) {
763 // collect visible childs
764
765 $visible_childs = [];
766 $cnt_child = 0;
767
768 foreach ($childs as $child) {
769 $cnt_child++;
770 if ($this->getChildLimit() > 0 && $this->getChildLimit() < $cnt_child) {
771 continue;
772 }
773
774 if ($this->isNodeVisible($child)) {
775 $visible_childs[] = $child;
776 }
777 }
778
779 // search field, if too many childs
780 $any = false;
781 if (($this->getChildLimit() > 0 && $this->getChildLimit() < $cnt_child) || ($this->getSearchTerm() !== "" && $this->isNodeRequested($a_node_id))) {
782 $this->listStart($tpl);
783 $any = true;
784
785 $tpl->setCurrentBlock("list_search");
786 $tpl->setVariable("SEARCH_CONTAINER_ID", $a_node_id);
787 if ($this->isNodeRequested($a_node_id)) {
788 $tpl->setVariable("SEARCH_VAL", $this->getSearchTerm());
789 }
790 $tpl->parseCurrentBlock();
791 $tpl->touchBlock("tag");
792 }
793
794 // render visible childs
795 foreach ($visible_childs as $child) {
796 // check child limit
797 $cnt_child++;
798
799 if ($this->isNodeVisible($child)) {
800 if (!$any) {
801 $this->listStart($tpl);
802 $any = true;
803 }
804 $this->renderNode($child, $tpl);
805 }
806 }
807 if ($any) {
808 $this->listEnd($tpl);
809 }
810 }
811 }
812
813 protected function isNodeRequested(string $a_node_id): bool
814 {
815 return ($this->requested_node_id === $this->getDomNodeIdForNodeId($a_node_id) ||
816 ($this->requested_node_id === "" && $a_node_id == $this->getNodeId($this->getRootNode())));
817 }
818
823 public function getDomNodeIdForNodeId($a_node_id): string
824 {
825 return "exp_node_" . $this->getId() . "_" . $a_node_id;
826 }
827
831 public function getNodeIdForDomNodeId(string $a_dom_node_id): string
832 {
833 $i = strlen("exp_node_" . $this->getId() . "_");
834 return substr($a_dom_node_id, $i);
835 }
836
841 public function listItemStart(ilTemplate $tpl, $a_node): void
842 {
843 $tpl->setCurrentBlock("list_item_start");
844 if ($this->getAjax() && $this->nodeHasVisibleChilds($a_node) && !$this->isNodeOpen($this->getNodeId($a_node))) {
845 $tpl->touchBlock("li_closed");
846 }
847 if ($this->isNodeOpen($this->getNodeId($a_node))) {
848 $tpl->touchBlock("li_opened");
849 }
850
852 "DOM_NODE_ID",
853 $this->getDomNodeIdForNodeId($this->getNodeId($a_node))
854 );
856 $tpl->touchBlock("tag");
857 }
858
859 public function listItemEnd(ilTemplate $tpl): void
860 {
861 $tpl->touchBlock("list_item_end");
862 $tpl->touchBlock("tag");
863 }
864
865 public function listStart(ilTemplate $tpl): void
866 {
867 $tpl->touchBlock("list_start");
868 $tpl->touchBlock("tag");
869 }
870
871 public function listEnd(ilTemplate $tpl): void
872 {
873 $tpl->touchBlock("list_end");
874 $tpl->touchBlock("tag");
875 }
876
877 public function isNodeOnclickEnabled(): bool
878 {
880 }
881
882 public function setNodeOnclickEnabled(bool $nodeOnclickEnabled): void
883 {
884 $this->nodeOnclickEnabled = $nodeOnclickEnabled;
885 }
886
887 public function isEnableDnd(): bool
888 {
889 return $this->enable_dnd;
890 }
891
892 // Enable Drag & Drop functionality
893 public function setEnableDnd(bool $enable_dnd): void
894 {
895 $this->enable_dnd = $enable_dnd;
896 }
897}
Class ilCtrl provides processing control methods.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setNodeSelected($a_id)
Set node to be opened (additional custom opened node, not standard expand behaviour)
sortChilds(array $a_childs, $a_parent_node_id)
Sort childs.
getNodeIcon($a_node)
Get node icon path.
getNodeContent($a_node)
Get content of a node.
getId()
Get id of explorer element.
isNodeSelectable($a_node)
Is node selectable?
getNodeIconAlt($a_node)
Get node icon alt attribute.
getNodeAsync()
Get node asynchronously.
setSelectMode(string $a_postvar, bool $a_multi=false)
Set select mode (to deactivate, pass an empty string as postvar)
getNodeOnClick($a_node)
Get node onclick attribute.
renderNode($a_node, ilTemplate $tpl)
Render node.
beforeRendering()
Before rendering.
getOnLoadCode()
Get on load code.
static init(ilGlobalTemplateInterface $a_main_tpl=null)
getNodeIdForDomNodeId(string $a_dom_node_id)
Get node id for dom node id.
getChildsOfNode($a_parent_node_id)
Get children of node.
isNodeClickable($a_node)
Is node clickable?
getDomNodeIdForNodeId($a_node_id)
Get DOM node id for node id.
getNodeTarget($a_node)
Get node target (frame) attribute.
listItemStart(ilTemplate $tpl, $a_node)
List item start.
setSecondaryHighlightedNodes(array $a_val)
Set secondary (background) highlighted nodes.
handleCommand()
Handle explorer internal command.
nodeHasVisibleChilds($a_node)
Node has children Please note that this standard method may not be optimal depending on what a derive...
getSecondaryHighlightedNodes()
Get secondary (background) highlighted nodes.
getNodeId($a_node)
Get id of a node.
getNodeToggleOnClick($a_node)
Get onclick attribute for node toggling.
ilSessionIStorage $store
setNodeOpen($a_id)
Set node to be opened (additional custom opened node, not standard expand behaviour)
getNodeHref($a_node)
Get href for node.
isNodeHighlighted($a_node)
Is node highlighted?
setNodeOnclickEnabled(bool $nodeOnclickEnabled)
static createHTMLExportDirs(string $a_target_dir)
isNodeOpen($node_id)
Get all open nodes.
isNodeRequested(string $a_node_id)
renderChilds($a_node_id, ilTemplate $tpl)
Render childs.
getRootNode()
Get root node.
isNodeVisible($a_node)
Is node visible?
ilGlobalTemplateInterface $tpl
listItemEnd(ilTemplate $tpl)
setEnableDnd(bool $enable_dnd)
getSelectOnClick($a_node)
Get onclick attribute for selecting radio/checkbox.
setMainTemplate(ilGlobalTemplateInterface $a_main_tpl=null)
static makeDirParents(string $a_dir)
Create a new directory and all parent directories.
Component logger with individual log levels by component id.
Session based immediate storage.
special template class to simplify handling of ITX/PEAR
parseCurrentBlock(string $part=ilGlobalTemplateInterface::DEFAULT_BLOCK)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static img(string $a_src, ?string $a_alt=null, $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
static initConnection(?ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI Connection module.
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
global $DIC
Definition: feed.php:28
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
addJavaScript(string $a_js_file, bool $a_add_version_parameter=true, int $a_batch=2)
Add a javascript file that should be included in the header.
touchBlock(string $block)
overwrites ITX::touchBlock.
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
addOnLoadCode(string $a_code, int $a_batch=2)
Add on load code.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
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.
exit
Definition: login.php:28
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:33
if(!array_key_exists('PATH_INFO', $_SERVER)) $config
Definition: metadata.php:85
$i
Definition: metadata.php:41
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$url