| <?php |
| |
| /******************************************************************************* |
| * Copyright (c) 2006 Eclipse Foundation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Denis Roy (Eclipse Foundation)- initial API and implementation |
| *******************************************************************************/ |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/link.class.php"); |
| |
| class Nav { |
| |
| #***************************************************************************** |
| # |
| # nav.class.php |
| # |
| # Author: Denis Roy |
| # Date 2004-09-11 |
| # |
| # Description: Functions and modules related to Navbar objects |
| # |
| # HISTORY: |
| # |
| #***************************************************************************** |
| |
| private $LinkList = array(); |
| |
| private $HTMLBlock = ""; |
| |
| |
| function getLinkList() { |
| return $this->LinkList; |
| } |
| |
| function setLinkList($_LinkList) { |
| $this->LinkList = $_LinkList; |
| } |
| |
| function getHTMLBlock () { |
| return $this->HTMLBlock; |
| } |
| |
| function setHTMLBlock ($html) { |
| $this->HTMLBlock = $html; |
| } |
| |
| |
| |
| # Main constructor |
| function Nav() { |
| |
| $www_prefix = ""; |
| |
| global $App; |
| |
| if(isset($App)) { |
| $www_prefix = $App->getWWWPrefix(); |
| } |
| |
| } |
| |
| function addCustomNav($_Text, $_URL, $_Target, $_Level, $_CSS=NULL) { |
| if($_Level == "") { |
| $_Level = 0; |
| } |
| $Link = new Link($_Text, $_URL, $_Target, $_Level, $_CSS); |
| |
| # Add incoming Nav Item |
| $this->LinkList[count($this->LinkList)] = $Link; |
| } |
| |
| function addNavSeparator($_Text, $_URL) { |
| $Link = new Link($_Text, $_URL, "__SEPARATOR", 1); |
| |
| # Add incoming Nav Item |
| $this->LinkList[count($this->LinkList)] = $Link; |
| } |
| |
| function addMetaNav($_Project){ |
| if (!class_exists("projectInfoList")) { |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/projects/projectInfoList.class.php"); |
| } |
| |
| #set the default depth |
| $depth = 1; |
| #New info data instance |
| $MetaNav = new projectInfoList; |
| #get the data |
| $MetaNav->selectProjectInfoList($_Project,"projectleftnav"); |
| #sort the data & extract the data, which in this case should always be at 0 |
| $MetaLeftNav = $this->orderNavList($MetaNav->list[0]->projectleftnav); |
| #is there something there? |
| if ( $MetaLeftNav != NULL ) { |
| #loop through the leftnav items and add them to the output array |
| foreach( $MetaLeftNav as $item ) { |
| #the url has to start with http(s):// and be an eclipse.org site, or we'll ignore it |
| if ( preg_match("/^http[s]{0,1}:\/\/(\S.+eclipse.org(\/|$)|eclipseplugincentral.com)/i",$item->url) >= 1 ) { |
| if ( $item->separator == 1 ){ |
| $this->addNavSeparator($item->title, $item->url); |
| } else { |
| $this->addCustomNav($item->title, $item->url, "", $depth+$item->indent); |
| $depth = 1; |
| } |
| } |
| } |
| } |
| } |
| |
| #remove list function from projectInfoList class, and put it here where it really belongs |
| function orderNavList ($_InfoList) { |
| if (!function_exists("cmp_navobj")) { |
| function cmp_navobj($a, $b) { |
| $al = $a->order; |
| $bl = $b->order; |
| if ($al == $bl) { |
| return 0; |
| } |
| return ($al > $bl) ? +1 : -1; |
| } |
| } |
| usort($_InfoList, "cmp_navobj"); |
| return $_InfoList; |
| } |
| |
| function getLinkCount() { |
| return count($this->LinkList); |
| } |
| |
| function getLinkAt($_Pos) { |
| if($_Pos < $this->getLinkCount()) { |
| return $this->LinkList[$_Pos]; |
| } |
| } |
| |
| |
| |
| } |
| ?> |