/** * Rendering the routing tree building tool * * -------------- //Actual Page * <request> * 'TreeId' //numberic * <view-assign> * 'NodeTypes' //struct $id => $label * 'CurrentTreeId' //numberic * 'CurrentTreeInfo' //struct * 'RootTreeInfo' //struct * 'SubTreeLists' //array(struct) * 'TreeNodes' //struct $nodeId => $nodeInfo * * @return void */ public function builderAction() { // set another layout for builder $this->getHelper('Layout')->setLayout('tree'); $request = $this->getRequest(); $treeId = $request->getParam('TreeId'); $nodeId = $request->getParam('NodeId'); if ($request->getParam('IsBuilding')) { if (is_null($nodeId) || in_array($nodeId, self::$_renderedNodeIds)) { Streamwide_Web_Log::debug('Rendering Stoped because NextNodeId is null or rendered.'); $this->getHelper('ViewRenderer')->setNoRender(); } else { Streamwide_Web_Log::debug('Rendering Tree Node on NodeId: ' . $nodeId); $this->view->assign(array('CurrentNodeId' => $nodeId, 'RenderedNodeIds' => self::$_renderedNodeIds)); $this->getHelper('ViewRenderer')->direct('building'); self::$_renderedNodeIds[] = $nodeId; } } else { Streamwide_Web_Log::debug('Rendering Routing Tree on TreeId: ' . $treeId); $nodeTypes = SwIRS_Web_Node_Abstract::getNodeTypes(); $currentTreeInfo = Streamwide_Web_Model::call('Tree.GetById', array($treeId)); $rootTreeId = $currentTreeInfo['ParentTreeId'] ? $currentTreeInfo['ParentTreeId'] : $treeId; $subTreeLists = Streamwide_Web_Model::call('Tree.GetSubTrees', array($rootTreeId)); $rootTreeInfo = $currentTreeInfo; if ($rootTreeId != $treeId) { $rootTreeInfo = Streamwide_Web_Model::call('Tree.GetById', array($rootTreeId)); } $treeNodes = Streamwide_Web_Model::call('Tree.GetNodes', array($treeId)); $treeNodes = $this->_formatTreeNodes($treeNodes); $this->view->assign(array('NodeTypes' => $nodeTypes, 'CurrentTreeId' => $treeId, 'CurrentTreeInfo' => $currentTreeInfo, 'RootTreeInfo' => $rootTreeInfo, 'SubTreeLists' => $subTreeLists, 'TreeNodes' => $treeNodes)); } }