<?php

	# Set the theme for your project's web pages.
	# See the Committer Tools "How Do I" for list of themes
	# https://dev.eclipse.org/committers/
	# Optional: defaults to system theme 
	$theme = "solstice";
	
    # see http://www.eclipse.org/projects/dev_process/project-status-infrastructure/left-menu.php
    require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/common/project-info.class.php");
    $projectInfo = new ProjectInfo("technology.packaging");
    $projectInfo->generate_common_nav( $Nav );


	# Define your project-wide Nav bars here.
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# these are optional
#	$Nav->addNavSeparator("Project Home", 	"index.php");
#	$Nav->addCustomNav("Downloads", 		"downloads.php", 	"_self", 2);
#	$Nav->addCustomNav("Installation", 		"install.php", 		"_self", 2);
#	$Nav->addCustomNav("FAQ / Known Issues","/epp/faq.php",          "_self", 2);
#	$Nav->addCustomNav("Members", "members.php", "_self", 2);
#	$Nav->addCustomNav("Bugs", "https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=EPP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED", "_self", 2);
#    $Nav->addCustomNav("Usage Data Collector", "/epp/usagedata/index.php", "_self", 2);
    $Nav->addCustomNav("Milestone Builds", "https://www.eclipse.org/downloads/index-developer.php", "_self", 2);
    $Nav->addCustomNav("Nightly Builds", "https://hudson.eclipse.org/packaging/job/mars.epp-tycho-build/lastSuccessfulBuild/artifact/org.eclipse.epp.packages/archive/", "_self", 2);
    $Nav->addCustomNav("Logging / AERI", "https://wiki.eclipse.org/EPP/Logging", "_self", 2);

?>
