<?php
	set_include_path($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common" . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . "/projects" . PATH_SEPARATOR . get_include_path());
																												
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	
	$App = new App();	
	$Nav = new Nav();	
	$Menu = new Menu();		
	include($App->getProjectCommon());    
	# All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# integrations.php
	#
	# Author: 		Igor Vinnykov
	# Date:			2008-03-17
	#
	# Description: Information about integrations
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Integrations - Eclipse Subversive";
	$pageKeywords	= "subversive, integrations, svn, subversion";
	$pageAuthor		= "Igor Vinnykov";
	
	include("_projectCommon.php");    # All on the same line to unclutter the user's desktop'
	
	$sidebar = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/subversive/sidebars/main.php");	
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Integrations</h1>
		<p>
			Do you like to integrate Subversive with your Eclipse project? Below you can find a list of current integrations and Subversive API specification.
		</p>
		<h2>List of Existing Integrations</h2>
		<ul>
		    <li>Mylyn</li>
		    <li>Buckminster</li>
		    <li>M2Eclipse</li>
		    <li>FastTrack</li>
		    <li>Project Set</li>
		    <li>Zend Studio</li>
		</ul>
		<h2>Documentation</h2>
		<ul>
		    <li><a href="/subversive/Subversive_Architecture_Overview.doc">Subversive Architecture and API</a></li>
		</ul>
	</div>	

	<div id="rightcolumn">
        $sidebar		
	</div>

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
