コード例 #1
0
 /**
  * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doFirstVisit()
  *
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  * @param integer &$index Holds the visitation index of treewalker
  * @param integer &$level Holds level of visitation in tree, starting at 1
  */
 public function doFirstVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level)
 {
     $nodeUid = $node->getUid();
     $metadata = '';
     $arrayForNode = array('data' => $node->getLabel(), 'attr' => array('id' => $node->getUid(), 'data-meta' => trim($metadata), 'disabled' => !$node->isAccessible()), 'children' => array());
     $this->nodeStack->push($arrayForNode);
 }
コード例 #2
0
 /**
  * Updates a given node if it has already been added to repository or adds it.
  *
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  */
 public function updateOrAdd(Tx_PtExtbase_Tree_NodeInterface $node)
 {
     if ($node->getUid() === null || $node->getUid() < 0) {
         // UID of node < 0 means, node has not yet been persisted!
         $node->markAsNew();
         $this->add($node);
     } else {
         // UID of node > 0 means, node has been persisted before!
         $this->update($node);
     }
 }
コード例 #3
0
 /**
  * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doFirstVisit()
  *
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  * @param integer &$index Holds the visitation index of treeWalker
  * @param integer &$level Holds level of visitation in tree, starting at 1
  * @throws Exception
  */
 public function doFirstVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level)
 {
     $arrayForNode = array('id' => $node->getUid(), 'text' => $node->getLabel(), 'children' => array(), 'leaf' => !$node->hasChildren(), 'cls' => $node->isAccessible() ? '' : 'disabled');
     $this->setSelectionOnNodeArray($node, $arrayForNode);
     if ($this->firstVisitCallback) {
         $return = call_user_func(array($this->firstVisitCallback['target'], $this->firstVisitCallback['method']), $node, $arrayForNode);
         if ($return === false) {
             throw new Exception('It was not possible to call ' . get_class($this->firstVisitCallback['target']) . '::' . $this->firstVisitCallback['method'], 1328468070);
         } else {
             $arrayForNode = $return;
         }
     }
     $this->nodeStack->push($arrayForNode);
 }
コード例 #4
0
 /**
  * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doFirstVisit()
  *
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  * @param integer &$index Holds the visitation index of treewalker
  * @param integer &$level Holds level of visitation in tree, starting at 1
  */
 public function doFirstVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level)
 {
     $arrayForNode = array('uid' => $node->getUid(), 'label' => $node->getLabel(), 'children' => array(), 'disabled' => !$node->isAccessible());
     $this->nodeStack->push($arrayForNode);
 }
コード例 #5
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;
     }
 }
コード例 #6
0
 /**
  * Sets namespace of given tree on given node
  *
  * @param Tx_PtExtbase_Tree_NestedSetTreeInterface $tree
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  * @throws Exception
  */
 protected function setTreeNamespaceOnNode(Tx_PtExtbase_Tree_NestedSetTreeInterface $tree, Tx_PtExtbase_Tree_NodeInterface $node)
 {
     $namespace = $tree->getNamespace();
     if ($namespace !== null && $namespace !== '') {
         $node->setNamespace($namespace);
     } else {
         throw new Exception('Trying to store a node of a tree that has no namespace set! Namespace is required on a tree to be stored! 1327756309');
     }
 }
コード例 #7
0
 /**
  * @see Tx_PtExtbase_Tree_TreeWalkerVisitorInterface::doLastVisit()
  *
  * @param Tx_PtExtbase_Tree_NodeInterface $node
  * @param integer &$index Holds the visitation index of treewalker
  * @param integer &$level Holds level of visitation in tree, starting at 1
  */
 public function doLastVisit(Tx_PtExtbase_Tree_NodeInterface $node, &$index, &$level)
 {
     $node->setRgt($index);
     $this->visitedNodes[] = $node;
 }