<?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'

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Igor Vinnykov
	# Date:			2007-11-23
	#
	# Description: Autogenerated for eclipse.org site pages from Eclipse IDE help
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Subversive - Documentation";
	$pageKeywords	= "Subversive, Subversion, SVN, Team Provider, documentation, user guid";
	$pageAuthor		= "Igor Vinnykov";
		
	include("_projectCommon.php");    # All on the same line to unclutter the user's desktop'
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">

	
	<h1>Subversive overview</h1>
	<p>
	Subversive is a totally new Eclipse plug-in, that provides you a probability to use supported SVN&reg clients easily directly
	from your workbench. Friendly user interface of Subversive makes it much more comfortable to operate repositories. All
	SVN&reg operations are supported and there are no difficulties while working with command line from now on.<br/>
	For more information refer to the <a href="gettingStarted.php">Getting started</a> part of the documentation.</p>
	
	<h2>Getting SVN Connectors</h2>
	<p>In order to work with SVN the plug-in user should also install one of SVN connectors, which are distributed from different update-site
	through the legacy reasons. The plug-in won't work without SVN Connectors.
	So please pay special attention to this fact in the <a href="gettingStarted/aboutSubversive/install.php">Installation instruction</a>.</p>
		<br/>
	<br/>
	</div>	

EOHTML;


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