ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilExplorerBaseGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
16 abstract class ilExplorerBaseGUI
17 {
21  protected $log;
22 
26  protected $ctrl;
27 
31  protected $tpl;
32 
33  protected static $js_tree_path = "./node_modules/jstree/dist/jstree.js";
34  protected static $js_tree_path_css = "./node_modules/jstree/dist/themes/default/style.min.css";
35 
36  protected static $js_expl_path = "./Services/UIComponent/Explorer2/js/Explorer2.js";
37  protected $skip_root_node = false;
38  protected $ajax = false;
39  protected $custom_open_nodes = array();
40  protected $selected_nodes = array();
41  protected $select_postvar = "";
42  protected $offline_mode = false;
43  protected $sec_highl_nodes = array();
44  protected $enable_dnd = false;
45  protected $search_term = "";
46 
48  protected $open_nodes = [];
49 
51  protected $store;
52 
56  protected $parent_obj;
57 
61  protected $child_limit = 0;
62 
64 
66  protected $parent_cmd = '';
67 
71  public function __construct($a_expl_id, $a_parent_obj, $a_parent_cmd)
72  {
73  global $DIC;
74 
75  $this->log = $DIC["ilLog"];
76  $this->ctrl = $DIC->ctrl();
77  $this->tpl = $DIC["tpl"];
78  $this->id = $a_expl_id;
79  $this->parent_obj = $a_parent_obj;
80  $this->parent_cmd = $a_parent_cmd;
81  // get open nodes
82  include_once("./Services/Authentication/classes/class.ilSessionIStorage.php");
83  $this->store = new ilSessionIStorage("expl2");
84  $open_nodes = $this->store->get("on_" . $this->id);
85  $this->open_nodes = unserialize($open_nodes);
86  if (!is_array($this->open_nodes)) {
87  $this->open_nodes = array();
88  }
89 
90  $this->requested_node_id = $_GET["node_id"];
91 
92  $this->nodeOnclickEnabled = true;
94  }
95 
101  public function setChildLimit($a_val)
102  {
103  $this->child_limit = $a_val;
104  }
105 
111  public function getChildLimit()
112  {
113  return $this->child_limit;
114  }
115 
121  public function setSearchTerm($a_val)
122  {
123  $this->search_term = $a_val;
124  }
125 
131  public function getSearchTerm()
132  {
133  return $this->search_term;
134  }
135 
136 
142  public function setMainTemplate($a_main_tpl = null)
143  {
144  $this->tpl = $a_main_tpl;
145  }
146 
147 
151  public static function getLocalExplorerJsPath()
152  {
153  return self::$js_expl_path;
154  }
155 
159  public static function getLocalJsTreeJsPath()
160  {
161  return self::$js_tree_path;
162  }
163 
167  public static function getLocalJsTreeCssPath()
168  {
169  return self::$js_tree_path_css;
170  }
171 
177  public static function createHTMLExportDirs($a_target_dir)
178  {
179  ilUtil::makeDirParents($a_target_dir . "/Services/UIComponent/Explorer2/lib/jstree-v.pre1.0");
180  ilUtil::makeDirParents($a_target_dir . "/Services/UIComponent/Explorer2/js");
181  }
182 
183 
184 
185  //
186  // Abstract functions that need to be overwritten in derived classes
187  //
188 
197  abstract public function getRootNode();
198 
205  abstract public function getChildsOfNode($a_parent_node_id);
206 
213  abstract public function getNodeContent($a_node);
214 
221  abstract public function getNodeId($a_node);
222 
223 
224  //
225  // Functions with standard implementations that may be overwritten
226  //
227 
234  public function getNodeHref($a_node)
235  {
236  return "#";
237  }
238 
248  public function nodeHasVisibleChilds($a_node)
249  {
250  $childs = $this->getChildsOfNode($this->getNodeId($a_node));
251 
252  foreach ($childs as $child) {
253  if ($this->isNodeVisible($child)) {
254  return true;
255  }
256  }
257  return false;
258  }
259 
268  public function sortChilds($a_childs, $a_parent_node_id)
269  {
270  return $a_childs;
271  }
272 
279  public function getNodeIcon($a_node)
280  {
281  return "";
282  }
283 
290  public function getNodeIconAlt($a_node)
291  {
292  return "";
293  }
294 
301  public function getNodeTarget($a_node)
302  {
303  return "";
304  }
305 
312  public function getNodeOnClick($a_node)
313  {
314  if ($this->select_postvar != "") {
315  return $this->getSelectOnClick($a_node);
316  }
317  return "";
318  }
319 
326  public function isNodeVisible($a_node)
327  {
328  return true;
329  }
330 
337  public function isNodeHighlighted($a_node)
338  {
339  return false;
340  }
341 
348  public function isNodeClickable($a_node)
349  {
350  return true;
351  }
352 
359  protected function isNodeSelectable($a_node)
360  {
361  return true;
362  }
363 
364 
365  //
366  // Basic configuration / setter/getter
367  //
368 
374  public function getId()
375  {
376  return $this->id;
377  }
378 
386  public function setSkipRootNode($a_val)
387  {
388  $this->skip_root_node = $a_val;
389  }
390 
396  public function getSkipRootNode()
397  {
398  return $this->skip_root_node;
399  }
400 
406  public function setAjax($a_val)
407  {
408  $this->ajax = $a_val;
409  }
410 
416  public function getAjax()
417  {
418  return $this->ajax;
419  }
420 
426  public function setSecondaryHighlightedNodes($a_val)
427  {
428  $this->sec_highl_nodes = $a_val;
429  }
430 
437  {
438  return $this->sec_highl_nodes;
439  }
440 
447  public function setNodeOpen($a_id)
448  {
449  if (!in_array($a_id, $this->custom_open_nodes)) {
450  $this->custom_open_nodes[] = $a_id;
451  }
452  }
453 
460  final protected function getNodeToggleOnClick($a_node)
461  {
462  return "$('#" . $this->getContainerId() . "').jstree('toggle_node' , '#" .
463  $this->getDomNodeIdForNodeId($this->getNodeId($a_node)) . "'); return false;";
464  }
465 
472  final protected function getSelectOnClick($a_node)
473  {
474  $dn_id = $this->getDomNodeIdForNodeId($this->getNodeId($a_node));
475  $oc = "il.Explorer2.selectOnClick(event, '" . $dn_id . "'); return false;";
476  return $oc;
477  }
478 
486  public function setSelectMode($a_postvar, $a_multi = false)
487  {
488  $this->select_postvar = $a_postvar;
489  $this->select_multi = $a_multi;
490  }
491 
498  public function setNodeSelected($a_id)
499  {
500  if (!in_array($a_id, $this->selected_nodes)) {
501  $this->selected_nodes[] = $a_id;
502  }
503  }
504 
510  public function setOfflineMode($a_val)
511  {
512  $this->offline_mode = $a_val;
513  }
514 
520  public function getOfflineMode()
521  {
522  return $this->offline_mode;
523  }
524 
525  //
526  // Standard functions that usually are not overwritten / internal use
527  //
528 
534  public function handleCommand()
535  {
536  if ($_GET["exp_cmd"] != "" &&
537  $_GET["exp_cont"] == $this->getContainerId()) {
538  $cmd = $_GET["exp_cmd"];
539  if (in_array($cmd, array("openNode", "closeNode", "getNodeAsync"))) {
540  $this->$cmd();
541  }
542 
543  return true;
544  }
545  return false;
546  }
547 
554  public function getContainerId()
555  {
556  return "il_expl2_jstree_cont_" . $this->getId();
557  }
558 
562  public function openNode()
563  {
564  $ilLog = $this->log;
565 
566  $id = $this->getNodeIdForDomNodeId($_GET["node_id"]);
567  if (!in_array($id, $this->open_nodes)) {
568  $this->open_nodes[] = $id;
569  }
570  $this->store->set("on_" . $this->id, serialize($this->open_nodes));
571  exit;
572  }
573 
577  public function closeNode()
578  {
579  $ilLog = $this->log;
580 
581  $id = $this->getNodeIdForDomNodeId($_GET["node_id"]);
582  if (in_array($id, $this->open_nodes)) {
583  $k = array_search($id, $this->open_nodes);
584  unset($this->open_nodes[$k]);
585  }
586  $this->store->set("on_" . $this->id, serialize($this->open_nodes));
587  exit;
588  }
589 
593  public function getNodeAsync()
594  {
595  $this->beforeRendering();
596 
597  $etpl = new ilTemplate("tpl.explorer2.html", true, true, "Services/UIComponent/Explorer2");
598 
599  $root = $this->getNodeId($this->getRootNode());
600  if (!in_array($root, $this->open_nodes)) {
601  $this->open_nodes[] = $root;
602  }
603 
604  if ($_GET["node_id"] != "") {
605  $id = $this->getNodeIdForDomNodeId($_GET["node_id"]);
606  $this->setSearchTerm(ilUtil::stripSlashes($_GET["searchterm"]));
607  $this->renderChilds($id, $etpl);
608  } else {
609  $id = $this->getNodeId($this->getRootNode());
610  $this->renderNode($this->getRootNode(), $etpl);
611  }
612  echo $etpl->get("tag");
613  exit;
614  }
615 
619  public function beforeRendering()
620  {
621  }
622 
629  protected function isNodeOpen($node_id)
630  {
631  return ($this->getNodeId($this->getRootNode()) == $node_id
632  || in_array($node_id, $this->open_nodes)
633  || in_array($node_id, $this->custom_open_nodes));
634  }
635 
636 
643  public function getOnLoadCode()
644  {
645  $ilCtrl = $this->ctrl;
646 
647  $container_id = $this->getContainerId();
648  $container_outer_id = "il_expl2_jstree_cont_out_" . $this->getId();
649 
650  // collect open nodes
651  $open_nodes = array($this->getDomNodeIdForNodeId($this->getNodeId($this->getRootNode())));
652  foreach ($this->open_nodes as $nid) {
653  $open_nodes[] = $this->getDomNodeIdForNodeId($nid);
654  }
655  foreach ($this->custom_open_nodes as $nid) {
656  $dnode = $this->getDomNodeIdForNodeId($nid);
657  if (!in_array($dnode, $open_nodes)) {
658  $open_nodes[] = $dnode;
659  }
660  }
661 
662  // ilias config options
663  $url = "";
664  if (!$this->getOfflineMode()) {
665  if (is_object($this->parent_obj)) {
666  $url = $ilCtrl->getLinkTarget($this->parent_obj, $this->parent_cmd, "", true);
667  } else {
668  $url = $ilCtrl->getLinkTargetByClass($this->parent_obj, $this->parent_cmd, "", true);
669  }
670  }
671 
672  // secondary highlighted nodes
673  $shn = array();
674  foreach ($this->sec_highl_nodes as $sh) {
675  $shn[] = $this->getDomNodeIdForNodeId($sh);
676  }
677  $config = array(
678  "container_id" => $container_id,
679  "container_outer_id" => $container_outer_id,
680  "url" => $url,
681  "second_hnodes" => $shn,
682  "ajax" => $this->getAjax(),
683  );
684 
685 
686  // jstree config options
687  $js_tree_config = array(
688  "core" => array(
689  "animation" => 0,
690  "initially_open" => $open_nodes,
691  "open_parents" => false,
692  "strings" => array("loading" => "Loading ...", "new_node" => "New node"),
693  "themes" => array("dots" => false, "icons" => false, "theme" => "")
694  ),
695  "plugins" => $this->getJSTreePlugins(),
696  "html_data" => array()
697  );
698 
699  return 'il.Explorer2.init(' . json_encode($config) . ', ' . json_encode($js_tree_config) . ');';
700  }
701 
702  protected function getJSTreePlugins()
703  {
704  $plugins = array("html_data", "themes", "json_data");
705  if ($this->isEnableDnd()) {
706  $plugins[] = "dnd";
707  }
708  return $plugins;
709  }
710 
711 
715  public static function init($a_main_tpl = null)
716  {
717  global $DIC;
718 
719  if ($a_main_tpl == null) {
720  $tpl = $DIC["tpl"];
721  } else {
722  $tpl = $a_main_tpl;
723  }
724 
725  include_once("./Services/jQuery/classes/class.iljQueryUtil.php");
727 
728  $tpl->addJavascript(self::getLocalExplorerJsPath());
729  $tpl->addJavascript(self::getLocalJsTreeJsPath());
730  $tpl->addCss(self::getLocalJsTreeCssPath());
731  }
732 
733 
737  public function getHTML()
738  {
739  $tpl = $this->tpl;
740  $ilCtrl = $this->ctrl;
741 
742  $root = $this->getNodeId($this->getRootNode());
743  if (!in_array($root, $this->open_nodes)) {
744  $this->open_nodes[] = $root;
745  }
746 
747  $this->beforeRendering();
748 
749  self::init($tpl);
750  $container_id = $this->getContainerId();
751  $container_outer_id = "il_expl2_jstree_cont_out_" . $this->getId();
752 
753  if (!$ilCtrl->isAsynch()) {
754  $tpl->addOnLoadCode($this->getOnLoadCode());
755  }
756 
757  $etpl = new ilTemplate("tpl.explorer2.html", true, true, "Services/UIComponent/Explorer2");
758 
759  if (!$this->ajax) {
760  // render childs
761  $root_node = $this->getRootNode();
762 
763  if (!$this->getSkipRootNode() &&
764  $this->isNodeVisible($this->getRootNode())) {
765  $this->listStart($etpl);
766  $this->renderNode($this->getRootNode(), $etpl);
767  $this->listEnd($etpl);
768  } else {
769  $childs = $this->getChildsOfNode($this->getNodeId($root_node));
770  $childs = $this->sortChilds($childs, $this->getNodeId($root_node));
771  $any = false;
772  foreach ($childs as $child_node) {
773  if ($this->isNodeVisible($child_node)) {
774  if (!$any) {
775  $this->listStart($etpl);
776  $any = true;
777  }
778  $this->renderNode($child_node, $etpl);
779  }
780  }
781  if ($any) {
782  $this->listEnd($etpl);
783  }
784  }
785  }
786 
787  $etpl->setVariable("CONTAINER_ID", $container_id);
788  $etpl->setVariable("CONTAINER_OUTER_ID", $container_outer_id);
789 
790  $add = "";
791  if ($ilCtrl->isAsynch()) {
792  $add = "<script>" . $this->getOnLoadCode() . "</script>";
793  }
794 
795  $content = $etpl->get();
796  //echo $content.$add; exit;
797  return $content . $add;
798  }
799 
806  public function renderNode($a_node, $tpl)
807  {
808  $skip = ($this->getSkipRootNode()
809  && $this->getNodeId($this->getRootNode()) == $this->getNodeId($a_node));
810  if (!$skip) {
811  $this->listItemStart($tpl, $a_node);
812 
813  // select mode?
814  if ($this->select_postvar != "" && $this->isNodeSelectable($a_node)) {
815  if ($this->select_multi) {
816  $tpl->setCurrentBlock("cb");
817  if (in_array($this->getNodeId($a_node), $this->selected_nodes)) {
818  $tpl->setVariable("CHECKED", 'checked="checked"');
819  }
820  $tpl->setVariable("CB_VAL", $this->getNodeId($a_node));
821  $tpl->setVariable("CB_NAME", $this->select_postvar . "[]");
822  $tpl->parseCurrentBlock();
823  } else {
824  $tpl->setCurrentBlock("rd");
825  if (in_array($this->getNodeId($a_node), $this->selected_nodes)) {
826  $tpl->setVariable("SELECTED", 'checked="checked"');
827  }
828  $tpl->setVariable("RD_VAL", $this->getNodeId($a_node));
829  $tpl->setVariable("RD_NAME", $this->select_postvar);
830  $tpl->parseCurrentBlock();
831  }
832  }
833 
834 
835  if ($this->isNodeHighlighted($a_node)) {
836  $tpl->touchBlock("hl");
837  }
838  $tpl->setCurrentBlock("content");
839  if ($this->getNodeIcon($a_node) != "") {
840  $tpl->setVariable("ICON", ilUtil::img($this->getNodeIcon($a_node), $this->getNodeIconAlt($a_node)) . " ");
841  }
842  $tpl->setVariable("CONTENT", $this->getNodeContent($a_node));
843  if ($this->isNodeClickable($a_node)) {
844  $tpl->setVariable("HREF", $this->getNodeHref($a_node));
845  }
846  $target = $this->getNodeTarget($a_node);
847  if ($target != "") {
848  $targetRelatedParams = array(
849  'target="' . $target . '"'
850  );
851 
852  if ('_blank' === $target) {
853  $targetRelatedParams[] = 'rel="noopener"';
854  }
855 
856  $tpl->setVariable('TARGET', implode(' ', $targetRelatedParams));
857  }
858  if (!$this->isNodeOnclickEnabled() || !$this->isNodeClickable($a_node)) {
859  $tpl->setVariable("ONCLICK", 'onclick="return false;"');
860  $tpl->setVariable("A_CLASS", 'class="disabled"');
861  } else {
862  $onclick = $this->getNodeOnClick($a_node);
863  if ($onclick != "") {
864  $tpl->setVariable("ONCLICK", 'onclick="' . $onclick . '"');
865  }
866  }
867  $tpl->parseCurrentBlock();
868 
869  $tpl->touchBlock("tag");
870  }
871 
872  if (!$this->getAjax() || in_array($this->getNodeId($a_node), $this->open_nodes)
873  || in_array($this->getNodeId($a_node), $this->custom_open_nodes)) {
874  $this->renderChilds($this->getNodeId($a_node), $tpl);
875  }
876 
877  if (!$skip) {
878  $this->listItemEnd($tpl);
879  }
880  }
881 
888  final public function renderChilds($a_node_id, $tpl)
889  {
890  $childs = $this->getChildsOfNode($a_node_id);
891  $childs = $this->sortChilds($childs, $a_node_id);
892 
893  if (count($childs) > 0 || ($this->getSearchTerm() != "" && $this->requested_node_id == $this->getDomNodeIdForNodeId($a_node_id))) {
894  // collect visible childs
895 
896  $visible_childs = [];
897  $cnt_child = 0;
898 
899  foreach ($childs as $child) {
900  $cnt_child++;
901  if ($this->getChildLimit() > 0 && $this->getChildLimit() < $cnt_child) {
902  continue;
903  }
904 
905  if ($this->isNodeVisible($child)) {
906  $visible_childs[] = $child;
907  }
908  }
909 
910  // search field, if too many childs
911  $any = false;
912  if ($this->getChildLimit() > 0 && $this->getChildLimit() < $cnt_child
913  || ($this->getSearchTerm() != "")) {
914  if (!$any) {
915  $this->listStart($tpl);
916  $any = true;
917  }
918  $tpl->setCurrentBlock("list_search");
919  $tpl->setVariable("SEARCH_CONTAINER_ID", $a_node_id);
920  if ($this->requested_node_id == $this->getDomNodeIdForNodeId($a_node_id)) {
921  $tpl->setVariable("SEARCH_VAL", $this->getSearchTerm());
922  }
923  $tpl->parseCurrentBlock();
924  $tpl->touchBlock("tag");
925  }
926 
927  // render visible childs
928  foreach ($visible_childs as $child) {
929  // check child limit
930  $cnt_child++;
931 
932  if ($this->isNodeVisible($child)) {
933  if (!$any) {
934  $this->listStart($tpl);
935  $any = true;
936  }
937  $this->renderNode($child, $tpl);
938  }
939  }
940  if ($any) {
941  $this->listEnd($tpl);
942  }
943  }
944  }
945 
952  public function getDomNodeIdForNodeId($a_node_id)
953  {
954  return "exp_node_" . $this->getId() . "_" . $a_node_id;
955  }
956 
963  public function getNodeIdForDomNodeId($a_dom_node_id)
964  {
965  $i = strlen("exp_node_" . $this->getId() . "_");
966  return substr($a_dom_node_id, $i);
967  }
968 
975  public function listItemStart($tpl, $a_node)
976  {
977  $tpl->setCurrentBlock("list_item_start");
978  if ($this->getAjax() && $this->nodeHasVisibleChilds($a_node) && !$this->isNodeOpen($this->getNodeId($a_node))) {
979  $tpl->touchBlock("li_closed");
980  }
981  if ($this->isNodeOpen($this->getNodeId($a_node))) {
982  $tpl->touchBlock("li_opened");
983  }
984 
985  $tpl->setVariable(
986  "DOM_NODE_ID",
987  $this->getDomNodeIdForNodeId($this->getNodeId($a_node))
988  );
989  $tpl->parseCurrentBlock();
990  $tpl->touchBlock("tag");
991  }
992 
999  public function listItemEnd($tpl)
1000  {
1001  $tpl->touchBlock("list_item_end");
1002  $tpl->touchBlock("tag");
1003  }
1004 
1011  public function listStart($tpl)
1012  {
1013  $tpl->touchBlock("list_start");
1014  $tpl->touchBlock("tag");
1015  }
1016 
1023  public function listEnd($tpl)
1024  {
1025  $tpl->touchBlock("list_end");
1026  $tpl->touchBlock("tag");
1027  }
1028 
1032  public function isNodeOnclickEnabled()
1033  {
1035  }
1036 
1041  {
1042  $this->nodeOnclickEnabled = $nodeOnclickEnabled;
1043  }
1044 
1045  public function isEnableDnd()
1046  {
1047  return $this->enable_dnd;
1048  }
1049 
1054  public function setEnableDnd($enable_dnd)
1055  {
1056  $this->enable_dnd = $enable_dnd;
1057  }
1058 }
static makeDirParents($a_dir)
Create a new directory and all parent directories.
exit
Definition: login.php:29
setOfflineMode($a_val)
Set offline mode.
$_GET["client_id"]
getNodeOnClick($a_node)
Get node onclick attribute.
isNodeClickable($a_node)
Is node clickable?
renderChilds($a_node_id, $tpl)
Render childs.
getNodeIcon($a_node)
Get node icon path.
getNodeIconAlt($a_node)
Get node icon alt attribute.
setSkipRootNode($a_val)
Set skip root node.
setSelectMode($a_postvar, $a_multi=false)
Set select mode (to deactivate, pass an empty string as postvar)
if(!array_key_exists('PATH_INFO', $_SERVER)) $config
Definition: metadata.php:68
getSearchTerm()
Get search term.
getNodeToggleOnClick($a_node)
Get onclick attribute for node toggling.
static initConnection(ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI Connection module.
getChildLimit()
Get child limit.
__construct($a_expl_id, $a_parent_obj, $a_parent_cmd)
Constructor.
renderNode($a_node, $tpl)
Render node.
static init($a_main_tpl=null)
Init JS.
setNodeOpen($a_id)
Set node to be opened (additional custom opened node, not standard expand behaviour) ...
isNodeSelectable($a_node)
Is node selectable?
isNodeHighlighted($a_node)
Is node highlighted?
isNodeVisible($a_node)
Is node visible?
handleCommand()
Handle explorer internal command.
setSecondaryHighlightedNodes($a_val)
Set secondary (background) highlighted nodes.
static getLocalJsTreeJsPath()
Get local path of jsTree js.
sortChilds($a_childs, $a_parent_node_id)
Sort childs.
getSkipRootNode()
Get skip root node.
setNodeSelected($a_id)
Set node to be opened (additional custom opened node, not standard expand behaviour) ...
setEnableDnd($enable_dnd)
Enable Drag & Drop functionality.
getSecondaryHighlightedNodes()
Get secondary (background) highlighted nodes.
static createHTMLExportDirs($a_target_dir)
Create html export directories.
getOnLoadCode()
Get on load code.
Explorer base GUI class.
getRootNode()
Get root node.
static getLocalExplorerJsPath()
Get local path of explorer js.
getNodeId($a_node)
Get id of a node.
global $DIC
Definition: goto.php:24
beforeRendering()
Before rendering.
getNodeAsync()
Get node asynchronously.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static img($a_src, $a_alt=null, $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
getOfflineMode()
Get offline mode.
getNodeContent($a_node)
Get content of a node.
setMainTemplate($a_main_tpl=null)
Set main template (that is responsible for adding js/css)
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
getSelectOnClick($a_node)
Get onclick attribute for selecting radio/checkbox.
getNodeTarget($a_node)
Get node target (frame) attribute.
getChildsOfNode($a_parent_node_id)
Get childs of node.
Session based immediate storage.
listItemStart($tpl, $a_node)
List item start.
$url
isNodeOpen($node_id)
Get all open nodes.
setSearchTerm($a_val)
Set search term.
getDomNodeIdForNodeId($a_node_id)
Get DOM node id for node id.
nodeHasVisibleChilds($a_node)
Node has childs?
static getLocalJsTreeCssPath()
Get local path of jsTree js.
listItemEnd($tpl)
List item end.
setNodeOnclickEnabled($nodeOnclickEnabled)
setChildLimit($a_val)
Set child limit.
getNodeIdForDomNodeId($a_dom_node_id)
Get node id for dom node id.
getNodeHref($a_node)
Get href for node.
getId()
Get id of explorer element.
$i
Definition: metadata.php:24
getContainerId()
Get container id.