<?php
	$projectShortName = "bpel";
	require_once($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/_boot.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 = "Nova";

	# 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", 	"/$projectShortName/index.php");
	$Nav->addCustomNav("About This Project", 		"http://www.eclipse.org/projects/project_summary.php?projectid=soa.bpel",	"_self", 1);
	$Nav->addCustomNav("Downloads", 		"/$projectShortName/downloads.php", 	"_self", 2);
	$Nav->addCustomNav("Installation", 		"/$projectShortName/install.php", 		"_self", 2);
	$Nav->addCustomNav("New & Noteworthy", 		"/$projectShortName/whatsnew.php", 		"_self", 2);
	$Nav->addCustomNav("Developers", 		"/$projectShortName/developers.php", "_self", 2);
	$Nav->addCustomNav("Users", 			"/$projectShortName/users.php", "_self", 2);
	
	function get_include_contents($filename) {
	    if (is_file($filename)) {
	        ob_start();
	        include $filename;
	        $contents = ob_get_contents();
	        ob_end_clean();
	        return $contents;
	    }
	    return false;
	}
	
	# Incubation logo and interesting links
	$rightcolumn_links=get_include_contents($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/items/rightcolumn_links.html");
	
	# update site
	$update_site="http://download.eclipse.org/bpel/site";
	$nightly_build_site="http://download.eclipse.org/bpel/site/nightly";
	
?>
