<?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());
	
	$localVersion = false;
	
	# Define these here, or in _projectCommon.php for site-wide values
	$pageTitle 		= "Documentation - Eclipse Subversive";
	$pageKeywords	= "subversive, documentation, svn, subversion";
	$pageAuthor		= "Igor Vinnykov";
	
	$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>Documentation</h1>
		<p>
			Use the resources below to learn about Subversive project, its features and working with SVN repositories from the Eclipse environment.
		</p>
		<ul>
			<li><a href="/subversive/documentation/gettingStarted.php">Getting Started</a> - In this article you can find information about basic SVN concepts, general information on Subversive plug-in, integration instructions and answers for the common questions about Subversive.</li>		
			<li><a href="/subversive/documentation/index.php">User Guide</a> - Complete product manual, that describes all available Subversive features and explains how to use them on practice.</li>
			<li><a href="http://wiki.eclipse.org/Subversive_New_and_Noteworthy">New & Noteworthy</a> - Learn more about features introduced in the latest Subversive releases.</li>
			<li><a href="http://wiki.eclipse.org/index.php/Subversive">Wiki</a> - The hub page on Eclipse Wiki, that includes all Wiki pages about Subversive.</li>									
		</ul>
		<h2>Articles About Subversive</h2>
		<p>
			The articles below were written by Subversive community. If you wrote about Subversive and like to see your article it in this list, please contact the Subversive development team. We will be glad to share your experience with the Subversive community.
		</p>
		<ul>
			<li><a href="http://www.vogella.de/articles/EclipseSubversive/article.html">Subversive Installation in Eclipse 3.5, by Lars Vogel</a></li>
			<li><a href="http://www.vogella.de/blog/2009/07/08/modify-eclipse-code/">How to Create a Patch for Subversive, by Lars Vogel</a></li>
			<li><a href="http://wiki.eclipse.org/Subversive_PDE_Fetch">Subversive PDE Fetch, by Mickael Istria</a></li>						
		</ul>
		<iframe width="560" height="315" src="https://www.youtube.com/embed/Szgs3jmo2YU" frameborder="0" allowfullscreen></iframe>
		<h2>Integration API usage examples</h2>
		<p>
			This section provides a set of links to the source code of the integration API usage examples.
		</p>
		<ul>
			<li><a href="https://dev.eclipse.org/svnroot/technology/org.eclipse.subversive/trunk/SubveriveCommitIntegration">Commit dialog integration API usage example.</a></li>
		</ul>
	</div>
	
	<div id="rightcolumn">
        $sidebar		
	</div>	

EOHTML;
		

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