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(); }