ILIAS  trunk Revision v11.0_alpha-1851-ga8564da6fed
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilForumExplorerGUI Class Reference

Class ilForumExplorerGUI. More...

+ Inheritance diagram for ilForumExplorerGUI:
+ Collaboration diagram for ilForumExplorerGUI:

Public Member Functions

 __construct (string $a_expl_id, object $a_parent_obj, string $a_parent_cmd, private readonly ilForumTopic $thread, private readonly ilForumPost $root_node)
 
 getChildsOfNode ($a_parent_node_id)
 
 getChildren ($record, $environment=null)
 Get a list of records (that list can also be empty). More...
 
 getTreeLabel ()
 
 getTreeComponent ()
 
 getNodeId ($a_node)
 
 getNodeIcon ($a_node)
 
 getNodeHref ($a_node)
 
 getNodeContent ($a_node)
 
- Public Member Functions inherited from ilTreeExplorerGUI
 __construct (string $a_expl_id, $a_parent_obj, string $a_parent_cmd, ilTree $a_tree, string $a_node_parameter_name="node_id")
 
 getTree ()
 
 setOrderField (string $a_val, bool $a_numeric=false)
 
 getOrderField ()
 
 setTypeWhiteList (array $a_val)
 Set type white list. More...
 
 getTypeWhiteList ()
 Get type white list. More...
 
 setTypeBlackList (array $a_val)
 Set type black list. More...
 
 getTypeBlackList ()
 Get type black list. More...
 
 setPreloadChilds (bool $a_val)
 
 getPreloadChilds ()
 
 getSuccessorNode ( $a_node_id, string $a_type="")
 Get successor node (currently only(!) based on lft/rgt tree values) More...
 
 getChildsOfNode ($a_parent_node_id)
 Get childs of node. More...
 
 getNodeId ($a_node)
 Get id for node. More...
 
 getNodeIconAlt ($a_node)
 Get node icon alt attribute. More...
 
 getRootNode ()
 Get root node. More...
 
 setRootId ($a_root)
 
 setPathOpen ($a_id)
 Set node path to be opened. More...
 
 getHTML ($new=false)
 Get HTML. More...
 
 getChildren ($record, $environment=null)
 Get a list of records (that list can also be empty). More...
 
 build (\ILIAS\UI\Component\Tree\Node\Factory $factory, $record, $environment=null)
 
 getTreeLabel ()
 
 getTreeComponent ()
 
 toggleExplorerNodeState ()
 Should be called by an ilCtrl-enabled command class if a tree node toggle action should be processed. More...
 
- Public Member Functions inherited from ilExplorerBaseGUI
 setChildLimit (int $a_val)
 
 getChildLimit ()
 
 setSearchTerm (string $a_val)
 
 getSearchTerm ()
 
 setMainTemplate (?ilGlobalTemplateInterface $a_main_tpl=null)
 
 getRootNode ()
 Get root node. More...
 
 getChildsOfNode ($a_parent_node_id)
 Get children of node. More...
 
 getNodeContent ($a_node)
 Get content of a node. More...
 
 getNodeId ($a_node)
 Get id of a node. More...
 
 getNodeHref ($a_node)
 Get href for node. More...
 
 nodeHasVisibleChilds ($a_node)
 Node has children Please note that this standard method may not be optimal depending on what a derived class does in isNodeVisible. More...
 
 sortChilds (array $a_childs, $a_parent_node_id)
 Sort childs. More...
 
 getNodeIcon ($a_node)
 Get node icon path. More...
 
 getNodeIconAlt ($a_node)
 Get node icon alt attribute. More...
 
 getNodeTarget ($a_node)
 Get node target (frame) attribute. More...
 
 getNodeOnClick ($a_node)
 Get node onclick attribute. More...
 
 isNodeVisible ($a_node)
 Is node visible? More...
 
 isNodeHighlighted ($a_node)
 Is node highlighted? More...
 
 isNodeClickable ($a_node)
 Is node clickable? More...
 
 getId ()
 Get id of explorer element. More...
 
 setSkipRootNode (bool $a_val)
 
 getSkipRootNode ()
 
 setAjax (bool $a_val)
 
 getAjax ()
 
 setSecondaryHighlightedNodes (array $a_val)
 Set secondary (background) highlighted nodes. More...
 
 getSecondaryHighlightedNodes ()
 Get secondary (background) highlighted nodes. More...
 
 setNodeOpen ($a_id)
 Set node to be opened (additional custom opened node, not standard expand behaviour) More...
 
 setSelectMode (string $a_postvar, bool $a_multi=false)
 Set select mode (to deactivate, pass an empty string as postvar) More...
 
 setNodeSelected ($a_id)
 Set node to be opened (additional custom opened node, not standard expand behaviour) More...
 
 setOfflineMode (bool $a_val)
 
 getOfflineMode ()
 
 handleCommand ()
 Handle explorer internal command. More...
 
 getContainerId ()
 
 openNode ()
 Open node. More...
 
 closeNode ()
 Close node. More...
 
 getNodeAsync ()
 Get node asynchronously. More...
 
 beforeRendering ()
 Before rendering. More...
 
 getOnLoadCode ()
 Get on load code. More...
 
 getHTML ()
 
 renderNode ($a_node, ilTemplate $tpl)
 Render node. More...
 
 renderChilds ($a_node_id, ilTemplate $tpl)
 Render childs. More...
 
 getDomNodeIdForNodeId ($a_node_id)
 Get DOM node id for node id. More...
 
 getNodeIdForDomNodeId (string $a_dom_node_id)
 Get node id for dom node id. More...
 
 listItemStart (ilTemplate $tpl, $a_node)
 List item start. More...
 
 listItemEnd (ilTemplate $tpl)
 
 listStart (ilTemplate $tpl)
 
 listEnd (ilTemplate $tpl)
 
 isNodeOnclickEnabled ()
 
 setNodeOnclickEnabled (bool $nodeOnclickEnabled)
 
 isEnableDnd ()
 
 setEnableDnd (bool $enable_dnd)
 
- Public Member Functions inherited from ILIAS\UI\Component\Tree\TreeRecursion
 build (Node\Factory $factory, $record, $environment=null)
 Build and return a Node. More...
 

Protected Member Functions

 preloadChilds ()
 
 createNode (\ILIAS\UI\Component\Tree\Node\Factory $factory, $record)
 
 getNodeStateToggleCmdClasses ($record)
 
- Protected Member Functions inherited from ilTreeExplorerGUI
 preloadChilds ()
 
 matches ($node)
 Does a node match a search term (or is search term empty) More...
 
 getRootId ()
 
 createNode (\ILIAS\UI\Component\Tree\Node\Factory $factory, $record)
 Creates at tree node, can be overwritten in derivatives if another node type should be used. More...
 
 getNodeStateToggleCmdClasses ($record)
 Should return an array of ilCtrl-enabled command classes which should be used to build the URL for the expand/collapse actions applied on a tree node. More...
 
 render ()
 
- Protected Member Functions inherited from ilExplorerBaseGUI
 isNodeSelectable ($a_node)
 Is node selectable? More...
 
 getNodeToggleOnClick ($a_node)
 Get onclick attribute for node toggling. More...
 
 getSelectOnClick ($a_node)
 Get onclick attribute for selecting radio/checkbox. More...
 
 isNodeOpen ($node_id)
 Get all open nodes. More...
 
 getJSTreePlugins ()
 
 isNodeRequested (string $a_node_id)
 

Private Member Functions

 getRootNodeId ()
 
 getAuthorInformationByNode (array $node)
 

Private Attributes

readonly int $max_entries
 
array $preloaded_children = []
 
array $authorInformation = []
 

Additional Inherited Members

- Static Public Member Functions inherited from ilExplorerBaseGUI
static getLocalExplorerJsPath ()
 
static getLocalJsTreeJsPath ()
 
static getLocalJsTreeCssPath ()
 
static createHTMLExportDirs (string $a_target_dir)
 
static init (?ilGlobalTemplateInterface $a_main_tpl=null)
 
- Protected Attributes inherited from ilTreeExplorerGUI
ilLanguage $lng
 
Psr Http Message ServerRequestInterface $httpRequest
 
ilTree $tree = null
 
string $tree_label = ""
 
string $order_field = ""
 
bool $order_field_numeric = false
 
array $type_white_list = array()
 
array $type_black_list = array()
 
array $childs = array()
 
bool $preloaded = false
 
bool $preload_childs = false
 
array $root_node_data = null
 
array $all_childs = array()
 
 $root_id = 0
 
ILIAS DI UIServices $ui
 
- Protected Attributes inherited from ilExplorerBaseGUI
string $node_parameter_name
 
ilLogger $log
 
ilCtrl $ctrl
 
ilGlobalTemplateInterface $tpl
 
bool $skip_root_node = false
 
bool $ajax = false
 
array $custom_open_nodes = array()
 
array $selected_nodes = array()
 
string $select_postvar = ""
 
bool $offline_mode = false
 
array $sec_highl_nodes = array()
 
bool $enable_dnd = false
 
string $search_term = ""
 
array $open_nodes = []
 
ilSessionIStorage $store
 
bool $select_multi = false
 
 $parent_obj
 
int $child_limit = 0
 
string $parent_cmd = ''
 
string $requested_exp_cmd = ""
 
string $requested_exp_cont = ""
 
string $requested_searchterm = ""
 
string $requested_node_id = ""
 
string $id
 
- Static Protected Attributes inherited from ilExplorerBaseGUI
static string $js_tree_path = "./node_modules/jstree/dist/jstree.js"
 
static string $js_tree_path_css = "./node_modules/jstree/dist/themes/default/style.min.css"
 
static string $js_expl_path = "assets/js/Explorer2.js"
 

Detailed Description

Class ilForumExplorerGUI.

Author
Michael Jansen mjans.nosp@m.en@d.nosp@m.ataba.nosp@m.y.de

Definition at line 27 of file class.ilForumExplorerGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilForumExplorerGUI::__construct ( string  $a_expl_id,
object  $a_parent_obj,
string  $a_parent_cmd,
private readonly ilForumTopic  $thread,
private readonly ilForumPost  $root_node 
)

Definition at line 36 of file class.ilForumExplorerGUI.php.

References $DIC, ILIAS\GlobalScreen\Provider\__construct(), ILIAS\Repository\ctrl(), ilExplorerBaseGUI\setAjax(), ilExplorerBaseGUI\setNodeOpen(), ilTreeExplorerGUI\setPreloadChilds(), and ilExplorerBaseGUI\setSkipRootNode().

42  {
43  global $DIC;
44 
45  parent::__construct($a_expl_id, $a_parent_obj, $a_parent_cmd, $DIC->repositoryTree());
46 
47  $this->setSkipRootNode(false);
48  $this->setAjax(false);
49  $this->setPreloadChilds(true);
50 
51  $this->ctrl->setParameter($this->parent_obj, 'thr_pk', $this->thread->getId());
52 
53  $frm = new ilForum();
54  $this->max_entries = $frm->getPageHits();
55 
56  $this->setNodeOpen($this->root_node->getId());
57  }
setNodeOpen($a_id)
Set node to be opened (additional custom opened node, not standard expand behaviour) ...
global $DIC
Definition: shib_login.php:22
__construct(Container $dic, ilPlugin $plugin)
+ Here is the call graph for this function:

Member Function Documentation

◆ createNode()

ilForumExplorerGUI::createNode ( \ILIAS\UI\Component\Tree\Node\Factory  $factory,
  $record 
)
protected

Definition at line 131 of file class.ilForumExplorerGUI.php.

References ilDatePresentation\formatDate(), getAuthorInformationByNode(), getNodeContent(), getNodeIcon(), ilTreeExplorerGUI\getNodeIconAlt(), IL_CAL_DATETIME, null, and ILIAS\Repository\ui().

134  : \ILIAS\UI\Component\Tree\Node\Node {
135  $nodeIconPath = $this->getNodeIcon($record);
136 
137  $icon = null;
138  if ($nodeIconPath !== '') {
139  $icon = $this->ui
140  ->factory()
141  ->symbol()
142  ->icon()
143  ->custom($nodeIconPath, $this->getNodeIconAlt($record));
144  }
145 
146  if ((int) $record['pos_pk'] === $this->root_node->getId()) {
147  $node = $factory->simple($this->getNodeContent($record), $icon);
148  } else {
149  $authorInfo = $this->getAuthorInformationByNode($record);
150  $creationDate = ilDatePresentation::formatDate(new ilDateTime($record['pos_date'], IL_CAL_DATETIME));
151  $bylineString = $authorInfo->getAuthorShortName() . ', ' . $creationDate;
152 
153  $node = $factory->bylined($this->getNodeContent($record), $bylineString, $icon);
154  }
155 
156  return $node;
157  }
const IL_CAL_DATETIME
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getNodeIconAlt($a_node)
Get node icon alt attribute.
getAuthorInformationByNode(array $node)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
+ Here is the call graph for this function:

◆ getAuthorInformationByNode()

ilForumExplorerGUI::getAuthorInformationByNode ( array  $node)
private

Definition at line 64 of file class.ilForumExplorerGUI.php.

References ILIAS\Repository\int().

Referenced by createNode(), and getNodeIcon().

65  {
66  return $this->authorInformation[(int) $node['pos_pk']] ?? ($this->authorInformation[(int) $node['pos_pk']] = new ilForumAuthorInformation(
67  (int) ($node['pos_author_id'] ?? 0),
68  (int) $node['pos_display_user_id'],
69  (string) $node['pos_usr_alias'],
70  (string) $node['import_name']
71  ));
72  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getChildren()

ilForumExplorerGUI::getChildren (   $record,
  $environment = null 
)

Get a list of records (that list can also be empty).

Each record will be relayed to $this->build to retrieve a Node. Also, each record will be asked for Sub-Nodes using this function.

Implements ILIAS\UI\Component\Tree\TreeRecursion.

Definition at line 100 of file class.ilForumExplorerGUI.php.

References getChildsOfNode().

100  : array
101  {
102  return $this->getChildsOfNode((int) $record['pos_pk']);
103  }
getChildsOfNode($a_parent_node_id)
+ Here is the call graph for this function:

◆ getChildsOfNode()

ilForumExplorerGUI::getChildsOfNode (   $a_parent_node_id)

Definition at line 74 of file class.ilForumExplorerGUI.php.

Referenced by getChildren().

74  : array
75  {
76  if ($this->preloaded) {
77  return $this->preloaded_children[$a_parent_node_id] ?? [];
78  }
79 
80  return $this->thread->getNestedSetPostChildren($a_parent_node_id, 1);
81  }
+ Here is the caller graph for this function:

◆ getNodeContent()

ilForumExplorerGUI::getNodeContent (   $a_node)

Definition at line 208 of file class.ilForumExplorerGUI.php.

Referenced by createNode().

208  : string
209  {
210  return $a_node['pos_subject'];
211  }
+ Here is the caller graph for this function:

◆ getNodeHref()

ilForumExplorerGUI::getNodeHref (   $a_node)

Definition at line 181 of file class.ilForumExplorerGUI.php.

References $max_entries, $url, ILIAS\Repository\ctrl(), getRootNodeId(), ILIAS\Repository\int(), and null.

181  : string
182  {
183  if ($this->getRootNodeId() === (int) $a_node['pos_pk']) {
184  return '';
185  }
186 
187  $this->ctrl->setParameter($this->parent_obj, 'backurl', null);
188 
189  if (isset($a_node['counter']) && $a_node['counter'] > 0) {
190  $page = (int) floor(($a_node['counter'] - 1) / $this->max_entries);
191  $this->ctrl->setParameter($this->parent_obj, 'page', $page);
192  }
193 
194  if (isset($a_node['post_read']) && $a_node['post_read']) {
195  $this->ctrl->setParameter($this->parent_obj, 'pos_pk', null);
196  $url = $this->ctrl->getLinkTarget($this->parent_obj, $this->parent_cmd, (string) $a_node['pos_pk']);
197  } else {
198  $this->ctrl->setParameter($this->parent_obj, 'pos_pk', $a_node['pos_pk']);
199  $url = $this->ctrl->getLinkTarget($this->parent_obj, 'markPostRead', (string) $a_node['pos_pk']);
200  $this->ctrl->setParameter($this->parent_obj, 'pos_pk', null);
201  }
202 
203  $this->ctrl->setParameter($this->parent_obj, 'page', null);
204 
205  return $url;
206  }
$url
Definition: shib_logout.php:66
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ getNodeIcon()

ilForumExplorerGUI::getNodeIcon (   $a_node)

Definition at line 172 of file class.ilForumExplorerGUI.php.

References ilObject\_getIcon(), getAuthorInformationByNode(), and getRootNodeId().

Referenced by createNode().

172  : string
173  {
174  if ($this->getRootNodeId() === (int) $a_node['pos_pk']) {
175  return ilObject::_getIcon(0, 'tiny', 'frm');
176  }
177 
178  return $this->getAuthorInformationByNode($a_node)->getProfilePicture();
179  }
static _getIcon(int $obj_id=0, string $size="big", string $type="", bool $offline=false)
Get icon for repository item.
getAuthorInformationByNode(array $node)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getNodeId()

ilForumExplorerGUI::getNodeId (   $a_node)

Definition at line 167 of file class.ilForumExplorerGUI.php.

167  : int
168  {
169  return (isset($a_node['pos_pk']) ? (int) $a_node['pos_pk'] : 0);
170  }

◆ getNodeStateToggleCmdClasses()

ilForumExplorerGUI::getNodeStateToggleCmdClasses (   $record)
protected

Definition at line 159 of file class.ilForumExplorerGUI.php.

159  : array
160  {
161  return [
162  ilRepositoryGUI::class,
163  ilObjForumGUI::class,
164  ];
165  }

◆ getRootNodeId()

ilForumExplorerGUI::getRootNodeId ( )
private

Definition at line 59 of file class.ilForumExplorerGUI.php.

Referenced by getNodeHref(), and getNodeIcon().

59  : int
60  {
61  return $this->root_node->getId();
62  }
+ Here is the caller graph for this function:

◆ getTreeComponent()

ilForumExplorerGUI::getTreeComponent ( )

Definition at line 110 of file class.ilForumExplorerGUI.php.

References getTreeLabel(), and ILIAS\Repository\ui().

110  : Tree
111  {
112  $rootNode = [
113  [
114  'pos_pk' => $this->root_node->getId(),
115  'pos_subject' => $this->root_node->getSubject(),
116  'pos_author_id' => $this->root_node->getPosAuthorId(),
117  'pos_display_user_id' => $this->root_node->getDisplayUserId(),
118  'pos_usr_alias' => $this->root_node->getUserAlias(),
119  'pos_date' => $this->root_node->getCreateDate(),
120  'import_name' => $this->root_node->getImportName(),
121  'post_read' => $this->root_node->isPostRead()
122  ]
123  ];
124 
125  return $this->ui->factory()->tree()
126  ->expandable($this->getTreeLabel(), $this)
127  ->withData($rootNode)
128  ->withHighlightOnNodeClick(false);
129  }
This describes a Tree Control.
Definition: Tree.php:28
+ Here is the call graph for this function:

◆ getTreeLabel()

ilForumExplorerGUI::getTreeLabel ( )

Definition at line 105 of file class.ilForumExplorerGUI.php.

References ILIAS\Repository\lng().

Referenced by getTreeComponent().

105  : string
106  {
107  return $this->lng->txt("frm_posts");
108  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ preloadChilds()

ilForumExplorerGUI::preloadChilds ( )
protected

Definition at line 83 of file class.ilForumExplorerGUI.php.

References ILIAS\Repository\int().

83  : void
84  {
85  $this->preloaded_children = [];
86 
87  $children = $this->thread->getNestedSetPostChildren($this->root_node->getId());
88 
89  array_walk($children, function ($node, $key): void {
90  if (!array_key_exists((int) $node['pos_pk'], $this->preloaded_children)) {
91  $this->preloaded_children[(int) $node['pos_pk']] = [];
92  }
93 
94  $this->preloaded_children[(int) $node['parent_pos']][$node['pos_pk']] = $node;
95  });
96 
97  $this->preloaded = true;
98  }
+ Here is the call graph for this function:

Field Documentation

◆ $authorInformation

array ilForumExplorerGUI::$authorInformation = []
private

Definition at line 34 of file class.ilForumExplorerGUI.php.

◆ $max_entries

readonly int ilForumExplorerGUI::$max_entries
private

Definition at line 29 of file class.ilForumExplorerGUI.php.

Referenced by getNodeHref().

◆ $preloaded_children

array ilForumExplorerGUI::$preloaded_children = []
private

Definition at line 31 of file class.ilForumExplorerGUI.php.


The documentation for this class was generated from the following file: