‪TYPO3CMS  ‪main
ArrayTreeRenderer.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
22 
27 {
33  protected ‪$recursionLevel = 0;
34 
41  public function ‪renderNode(‪TreeRepresentationNode $node, $recursive = true)
42  {
43  $nodeArray = [];
44  $nodeArray[] = $this->‪getNodeArray($node);
45  if ($recursive && $node->‪hasChildNodes()) {
46  $this->recursionLevel++;
47  $children = $this->‪renderNodeCollection($node->‪getChildNodes());
48  foreach ($children as $child) {
49  $nodeArray[] = $child;
50  }
51  $this->recursionLevel--;
52  }
53  return $nodeArray;
54  }
55 
62  protected function ‪getNodeArray(‪TreeRepresentationNode $node)
63  {
64  $overlayIconName = '';
65  if (is_object($node->‪getIcon())) {
66  $iconName = $node->‪getIcon()->‪getIdentifier();
67  if (is_object($node->‪getIcon()->‪getOverlayIcon())) {
68  $overlayIconName = $node->‪getIcon()->‪getOverlayIcon()->getIdentifier();
69  }
70  } else {
71  $iconName = $node->‪getIcon();
72  }
73  $nodeArray = [
74  'identifier' => htmlspecialchars($node->‪getId()),
75  // No need for htmlspecialchars() here as d3 is using 'textContent' property of the HTML DOM node
76  'name' => $node->‪getLabel(),
77  'icon' => $iconName,
78  'overlayIcon' => $overlayIconName,
79  'depth' => ‪$this->recursionLevel,
80  'hasChildren' => (bool)$node->‪hasChildNodes(),
81  'selectable' => true,
82  ];
83  if ($node instanceof ‪DatabaseTreeNode) {
84  $nodeArray['checked'] = (bool)$node->getSelected();
85  if (!$node->getSelectable()) {
86  $nodeArray['checked'] = false;
87  $nodeArray['selectable'] = false;
88  }
89  }
90  return $nodeArray;
91  }
92 
99  public function ‪renderTree(‪AbstractTree $tree, $recursive = true)
100  {
101  $this->recursionLevel = 0;
102  return $this->‪renderNode($tree->‪getRoot(), $recursive);
103  }
104 
111  public function ‪renderNodeCollection(‪TreeNodeCollection $collection, $recursive = true)
112  {
113  $treeItems = [];
114  foreach ($collection as $node) {
115  $allNodes = $this->‪renderNode($node, $recursive);
116  if ($allNodes[0]) {
117  $treeItems[] = $allNodes[0];
118  }
119  $nodeCount = count($allNodes);
120  if ($nodeCount > 1) {
121  for ($i = 1; $i < $nodeCount; $i++) {
122  $treeItems[] = $allNodes[$i];
123  }
124  }
125  }
126  return $treeItems;
127  }
128 }
‪TYPO3\CMS\Backend\Tree\TreeRepresentationNode\getLabel
‪string getLabel()
Definition: TreeRepresentationNode.php:98
‪TYPO3\CMS\Backend\Tree\TreeRepresentationNode
Definition: TreeRepresentationNode.php:24
‪TYPO3\CMS\Core\Tree\TableConfiguration\DatabaseTreeNode
Definition: DatabaseTreeNode.php:24
‪TYPO3\CMS\Core\Tree\TableConfiguration\ArrayTreeRenderer\renderNodeCollection
‪array renderNodeCollection(TreeNodeCollection $collection, $recursive=true)
Definition: ArrayTreeRenderer.php:110
‪TYPO3\CMS\Backend\Tree\TreeNode\hasChildNodes
‪bool hasChildNodes()
Definition: TreeNode.php:98
‪TYPO3\CMS\Backend\Tree\AbstractTree\getRoot
‪TYPO3 CMS Backend Tree TreeNode getRoot()
‪TYPO3\CMS\Backend\Tree\TreeNodeCollection
Definition: TreeNodeCollection.php:25
‪TYPO3\CMS\Core\Tree\TableConfiguration
Definition: AbstractTableConfigurationTreeDataProvider.php:16
‪TYPO3\CMS\Core\Imaging\Icon\getIdentifier
‪getIdentifier()
Definition: Icon.php:141
‪TYPO3\CMS\Backend\Tree\TreeNode\getId
‪string int getId()
Definition: TreeNode.php:121
‪TYPO3\CMS\Core\Imaging\Icon\getOverlayIcon
‪getOverlayIcon()
Definition: Icon.php:169
‪TYPO3\CMS\Core\Tree\TableConfiguration\ArrayTreeRenderer\$recursionLevel
‪int $recursionLevel
Definition: ArrayTreeRenderer.php:32
‪TYPO3\CMS\Core\Tree\TableConfiguration\ArrayTreeRenderer\renderNode
‪array renderNode(TreeRepresentationNode $node, $recursive=true)
Definition: ArrayTreeRenderer.php:40
‪TYPO3\CMS\Core\Tree\TableConfiguration\ArrayTreeRenderer\getNodeArray
‪array getNodeArray(TreeRepresentationNode $node)
Definition: ArrayTreeRenderer.php:61
‪TYPO3\CMS\Core\Tree\TableConfiguration\ArrayTreeRenderer\renderTree
‪array renderTree(AbstractTree $tree, $recursive=true)
Definition: ArrayTreeRenderer.php:98
‪TYPO3\CMS\Backend\Tree\Renderer\AbstractTreeRenderer
Definition: AbstractTreeRenderer.php:26
‪TYPO3\CMS\Backend\Tree\TreeRepresentationNode\getIcon
‪string Icon getIcon()
Definition: TreeRepresentationNode.php:82
‪TYPO3\CMS\Backend\Tree\AbstractTree
Definition: AbstractTree.php:24
‪TYPO3\CMS\Core\Tree\TableConfiguration\ArrayTreeRenderer
Definition: ArrayTreeRenderer.php:27
‪TYPO3\CMS\Backend\Tree\TreeNode\getChildNodes
‪TreeNodeCollection getChildNodes()
Definition: TreeNode.php:88