Example #1
0
 public function itBuildsATreeInline()
 {
     $root = new TreeNode();
     $node_1 = new TreeNode();
     $node_1_1 = new TreeNode();
     $node_1_1_1 = new TreeNode();
     $node_1_2 = new TreeNode();
     $node_2 = new TreeNode();
     $root->addChildren($node_1->addChildren($node_1_1->addChildren($node_1_1_1), $node_1_2), $node_2);
     $this->assertEqual($node_1, $root->getChild(0));
     $this->assertEqual($node_1_1, $root->getChild(0)->getChild(0));
     $this->assertEqual($node_1_1_1, $root->getChild(0)->getChild(0)->getChild(0));
     $this->assertEqual($node_1_2, $root->getChild(0)->getChild(1));
     $this->assertEqual($node_2, $root->getChild(1));
 }
 function outerTabs($params)
 {
     global $Language, $sys_use_trove, $sys_use_snippet;
     $selected_top_tab = '';
     if (isset($params['selected_top_tab'])) {
         $selected_top_tab = $params['selected_top_tab'];
     }
     $menuTree = new TreeNode();
     $sthSelected = false;
     $menuTree->addChild(new TreeNode(array('link' => '/', 'title' => $Language->getText('menu', 'home'))));
     // We need to keep a reference on this node in order to set the
     // selected value in the data. See bottom of this function.
     $homeNode =& $menuTree->getChild(0);
     if (user_isloggedin()) {
         $selected = isset($params['selected_top_tab']) && $params['selected_top_tab'] == '/my/' || strstr(getStringFromServer('REQUEST_URI'), '/my/') || strstr(getStringFromServer('REQUEST_URI'), '/account/');
         $sthSelected = $sthSelected || $selected;
         $mynode = new TreeNode(array('link' => '/my/', 'title' => $Language->getText('menu', 'my_personal_page'), 'selected' => $selected));
         if ($selected) {
             $selected = isset($params['selected_top_tab']) && $params['selected_top_tab'] == '/my/' || (bool) strstr(getStringFromServer('REQUEST_URI'), '/my/');
             $mynode->addChild(new TreeNode(array('link' => '/my/', 'title' => $Language->getText('my_index', 'my_dashboard'), 'selected' => $selected)));
             $selected = (bool) strstr(getStringFromServer('REQUEST_URI'), '/account/');
             $mynode->addChild(new TreeNode(array('link' => '/account/', 'title' => $Language->getText('my_index', 'account_maintenance'), 'selected' => $selected)));
         }
         $menuTree->addChild($mynode);
     } else {
         $selected = (bool) strstr(getStringFromServer('REQUEST_URI'), '/my/');
         $sthSelected = $sthSelected || $selected;
         $menuTree->addChild(new TreeNode(array('link' => '/my/', 'title' => $Language->getText('menu', 'my_personal_page'), 'selected' => $selected)));
     }
     if ($GLOBALS['sys_use_trove'] != 0 || isset($params['group']) && $params['group']) {
         $selected = false;
         if (isset($params['group']) && $params['group']) {
             // get group info using the common result set
             $pm = ProjectManager::instance();
             $project = $pm->getProject($params['group']);
             if ($project && is_object($project)) {
                 if ($project->isError()) {
                     die('is error');
                 } else {
                     $sthSelected = true;
                     $projTree = $this->project_tabs($params['toptab'], $params['group']);
                     $projTree->setData(array('link' => '/softwaremap/', 'title' => $Language->getText('menu', 'projectree'), 'selected' => true));
                     //'link'=>'/projects/'.$project->getUnixName().'/'
                     //,'title'=>$project->getPublicName()
                     //,'selected' => true));
                     $menuTree->addChild($projTree);
                 }
             }
         } else {
             $selected = (bool) strstr(getStringFromServer('REQUEST_URI'), 'softwaremap');
             $sthSelected = $sthSelected || $selected;
             $menuTree->addChild(new TreeNode(array('link' => '/softwaremap/', 'title' => $Language->getText('menu', 'projectree'), 'selected' => $selected)));
         }
     }
     if ($GLOBALS['sys_use_snippet'] != 0) {
         $selected = (bool) strstr(getStringFromServer('REQUEST_URI'), '/snippet/');
         $sthSelected = $sthSelected || $selected;
         $menuTree->addChild(new TreeNode(array('link' => '/snippet/', 'title' => $Language->getText('menu', 'code_snippet'), 'selected' => $selected)));
     }
     if (user_ismember(1, 'A')) {
         $selected = strpos(getStringFromServer('REQUEST_URI'), '/admin/') === 0 || $selected_top_tab === 'admin';
         $sthSelected = $sthSelected || $selected;
         $menuTree->addChild(new TreeNode(array('link' => '/admin/', 'title' => $Language->getText('menu', 'admin'), 'selected' => $selected)));
     }
     $selected = (bool) (strstr(getStringFromServer('REQUEST_URI'), '/site/') || $selected_top_tab === 'site');
     $sthSelected = $sthSelected || $selected;
     $menuTree->addChild(new TreeNode(array('link' => '/site/', 'title' => $Language->getText('include_layout', 'Help'), 'selected' => $selected)));
     $additional_tabs = array();
     include $GLOBALS['Language']->getContent('layout/extra_tabs', null, null, '.php');
     foreach ($additional_tabs as $t) {
         $sthSelected = $sthSelected || $t['selected'];
         $menuTree->addChild(new TreeNode($t));
     }
     // Set selected value for 'home' link (this is the selected tab
     // if no other was previously selected)
     $homeNodeData =& $homeNode->getData();
     $homeNodeData['selected'] = !$sthSelected;
     $buildMenuVisitor = new BuildMenuVisitor();
     $menuTree->accept($buildMenuVisitor);
     echo $buildMenuVisitor->getHtml();
 }