예제 #1
0
파일: TreeController.php 프로젝트: cwcw/cms
 /**
  * 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));
     }
 }