<?php
	# Set the theme for your project's web pages.
	# See http://eclipse.org/phoenix/
	$theme = "solstice";
	
	# Define your project-wide Navigation here
	# This appears on the left of the page if you define a left nav
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# these are optional
	
	# If you want to override the eclipse.org navigation, uncomment below.
	$Nav->setLinkList(array());
	
	# Break the navigation into sections
	$Nav->addNavSeparator("About Subversive", "http://www.eclipse.org/projects/project_summary.php?projectid=technology.subversive");
	$Nav->addNavSeparator("Subversive Home", "/subversive/index.php", "_self", 1);	
	
	$Nav->addNavSeparator("Downloads", "/subversive/downloads.php", "_self");
	$Nav->addCustomNav("Latest Releases", "/subversive/latest-releases.php", "_self", 1);
	$Nav->addCustomNav("Installation Instructions", "/subversive/installation-instructions.php", "_self", 1);
	$Nav->addCustomNav("Special Builds", "/subversive/special-builds.php", "_self", 1);
	$Nav->addCustomNav("Previous Releases", "/subversive/previous-releases.php", "_self", 1);		
	
	$Nav->addNavSeparator("Video Tutorials", "/subversive/videos.php");	
	
	$Nav->addNavSeparator("Documentation", "/subversive/documentation.php");
	$Nav->addCustomNav("Getting Started", "/subversive/documentation/gettingStarted.php", "_self", 1);
	$Nav->addCustomNav("User Guide", "/subversive/documentation/index.php", "_self", 1);	
	$Nav->addCustomNav("New & Noteworthy", "http://wiki.eclipse.org/Subversive_New_and_Noteworthy", "_self", 1);
	$Nav->addCustomNav("Wiki", "http://wiki.eclipse.org/index.php/Subversive", "_self", 1);		
	
	$Nav->addNavSeparator("Support", "/subversive/support.php");
	$Nav->addCustomNav("Community forum", "https://www.eclipse.org/forums/index.php/f/73/", "_self", 1);	
	$Nav->addCustomNav("Mailing Lists", "/subversive/mailinglists.php", "_self", 1);
	$Nav->addCustomNav("Issues (Bugzilla)", "https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Technology&product=Subversive&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED", "_self", 1);
	$Nav->addCustomNav("Report a Bug", "https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Subversive&rep_platform=All&op_sys=All", "_self", 1);	
	
	$Nav->addNavSeparator("Getting Involved", "/subversive/getting-involved.php");
	$Nav->addCustomNav("Repository", "http://dev.eclipse.org/viewcvs/viewvc.cgi/?root=Technology_SUBVERSIVE", "_self", 1);
	$Nav->addCustomNav("Integrations", "/subversive/integrations.php", "_self", 1);
	$Nav->addCustomNav("Project Plan", "http://www.eclipse.org/projects/project-plan.php?projectid=technology.subversive", "_self", 1);
	$Nav->addCustomNav("IP Log", "http://www.eclipse.org/projects/ip_log.php?projectid=technology.subversive", "_self", 1);

	# Define keywords, author and title here, or in each PHP page specifically
	# $pageKeywords	= "xtext, dsl, modeling, domain specific language, textual";
	# $pageAuthor		= "Your name";
	# $pageTitle 		= "Xtext";

	# top navigation bar
	# To override and replace the navigation with your own, uncomment the line below.
	$Menu->setMenuItemList(array());
	$Menu->addMenuItem("Subversive Home", "/subversive/index.php", "_self");
	$Menu->addMenuItem("Downloads", "/subversive/downloads.php", "_self");
	$Menu->addMenuItem("Documentation", "/subversive/documentation.php", "_self");
	$Menu->addMenuItem("Support", "/subversive/support.php", "_self");
	$Menu->addMenuItem("About", "http://www.eclipse.org/projects/project_summary.php?projectid=technology.subversive", "_self");			

	
	# To define additional CSS or other pre-body headers
	# $App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/subversive/css/style.css"/>');
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/subversive/css/default.css"/>');	
	
	# To enable occasional Eclipse Foundation Promotion banners on your pages (EclipseCon, etc)
	# $App->Promotion = TRUE;
	
	# If you have Google Analytics code, use it here
	$App->SetGoogleAnalyticsTrackingCode("UA-129970-16");
?>
