<?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("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/update-site";
	$nightly_build_site="https://hudson.eclipse.org/hudson/job/bpel-0.5/";
	
?>
