/**
  * Loads tree for a given namespace
  *
  * @param string $namespace Namespace to build tree for
  * @return Tx_PtExtbase_Tree_Tree Tree build for given namespace
  */
 public function loadTreeByNamespace($namespace)
 {
     if ($this->treeContext->respectEnableFields()) {
         return $this->treeBuilder->buildTreeForNamespaceWithoutInaccessibleSubtrees($namespace);
     } else {
         return $this->treeBuilder->buildTreeForNamespace($namespace);
     }
 }
 /**
  * @return void
  */
 public function initFilter()
 {
     $this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     /** @var \TYPO3\CMS\Extbase\Object\ObjectManager $objectManager */
     $this->treeContext = $this->objectManager->get('Tx_PtExtbase_Tree_TreeContext');
     $this->treeContext->setRespectEnableFields($this->treeRespectEnableFields);
     $this->buildTree();
 }
 /**
  * @todo If several tree widgets are needed on the same page, provide an identifier and select the right repo from session
  *
  * Restore the repository settings from namespace
  */
 public function restoreTreeSettingsFromSession()
 {
     $settings = Tx_PtExtbase_State_Session_Storage_SessionAdapter::getInstance()->read('Tx_PtExtbase_Tree_Configuration');
     $settings = array('repository' => 'Tx_PtCertification_Domain_Repository_CategoryRepository', 'namespace' => 'tx_ptcertification_domain_model_category', 'respectEnableFields' => $this->treeContext->respectEnableFields());
     if (array_key_exists('repository', $settings)) {
         $nodeRepositoryClassName = $settings['repository'];
         if ($nodeRepositoryClassName && class_exists($nodeRepositoryClassName)) {
             $this->nodeRepositoryClassName = $nodeRepositoryClassName;
         }
     }
     if (array_key_exists('namespace', $settings)) {
         $this->treeNameSpace = $settings['namespace'];
     }
 }
Example #4
0
 /**
  * Helper method for doing a depth-first search on a node
  *
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  * @param integer &$index Referenced value of visitation index. Will be increased with every node visitation.
  * @param integer &$level Current level of visit in the tree starting at 1
  */
 protected function dfs(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level = 1)
 {
     if ($node->isAccessible() || $this->treeContext->isWritable()) {
         $this->doFirstVisit($node, $index, $level);
         $index = $index + 1;
         if ($node->getChildrenCount() > 0) {
             $level = $level + 1;
             if ($this->restrictedDepth === -1 || $level <= $this->restrictedDepth) {
                 foreach ($node->getChildren() as $child) {
                     /* @var $child Tx_PtExtbase_Tree_NodeInterface */
                     $this->dfs($child, $index, $level);
                 }
             }
             $level = $level - 1;
         }
         $this->doLastVisit($node, $index, $level);
         $index = $index + 1;
     }
 }
 /**
  * Get Tree nodes as JSON array
  *
  * @return string JSON array
  */
 protected function getTreeNodes()
 {
     $treeRepositoryBuilder = Tx_PtExtbase_Tree_TreeRepositoryBuilder::getInstance();
     $treeRepositoryBuilder->setNodeRepositoryClassName($this->arguments['repository']);
     $treeRepository = $treeRepositoryBuilder->buildTreeRepository();
     if ($this->arguments['respectEnableFields']) {
         $this->treeContext->setRespectEnableFields(true);
     } else {
         $this->treeContext->setRespectEnableFields(false);
     }
     $tree = $treeRepository->loadTreeByNamespace($this->arguments['namespace']);
     if (isset($this->arguments['restrictedDepth'])) {
         $tree->setRestrictedDepth($this->arguments['restrictedDepth']);
         $tree->setRespectRestrictedDepth(true);
     }
     $arrayWriterVisitor = $this->objectManager->get('Tx_PtExtbase_Tree_ExtJsJsonWriterVisitor');
     $arrayWriterVisitor->setMultipleSelect($this->arguments['multiple']);
     $arrayWriterVisitor->setSelection($this->getSelection());
     $jsonTreeWriter = $this->objectManager->get('Tx_PtExtbase_Tree_JsonTreeWriter', array($arrayWriterVisitor), $arrayWriterVisitor);
     return $jsonTreeWriter->writeTree($tree);
 }