<?php 
	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";
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn" style="width:95%">

		<h1>Subversive User Guide</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.
		</p>
		<p>In this guide you can find almost everything that you expect to find while facing some problems during Subversive usage.</p>
		<p>In the first part of this guide, which is called <a href="gettingStarted.php">"Getting started"</a> you can get acquainted
		with SVN&reg;, Subversive and there basic concepts. The "Subversion (SVN)" part is recommended to read to everyone who has no experience
		in working with Subversion&reg; or even other version control systems. In the "About Subversive" part you'll find how to install,
		update, manage and integrate with other compatible plugins. Also you can get a closer look on plug-in itself, its architecture and
		extension points.</p>
		<p>In the <a href="prefs.php">Preferences</a> part you can get an information on configuring preferences, referred to Subversive
		plug-in.</p>
		<p>The last, the biggest and the most filled with useful information part is the <a href="teamSupport.php">Team support with SVN</a> one. You'll find there
		the quick tour through the Subversion&reg; usage in team programming, a lot of information on Subversive views, perspectives, dialogs, wizards, supported
		actions, repository layouts and other features with tips from the specialist in this branch.</p>
		<ul>
		<li><a href="overview.php">Subversive overview</a></li>
		<li><a href="gettingStarted.php">Getting started</a>

		<ul>
		<li><a href="gettingStarted/subversion/svn_intro.php">Subversion (SVN)</a></li>
		<li><a href="gettingStarted/subversive.php">About Subversive and Subversive User Guide</a>
		</li>
		</ul>
		</li>
		<li><a href="prefs.php">Preferences</a>
		<ul>
		<li><a href="preferences/pref_svn.php">SVN</a></li>
		<li><a href="preferences/pref_annotate.php">Annotate</a></li>
		<li><a href="preferences/pref_comments.php">Comment Templates</a></li>
		<li><a href="preferences/pref_console.php">Console</a></li>
		<li><a href="preferences/pref_label_decors.php">Label Decorations</a></li>
		<li><a href="preferences/pref_pass.php">Password Management</a></li>
		<li><a href="preferences/pref_performance.php">Performance</a></li>
		<li><a href="preferences/pref_autoprops.php">Properties Configuration</a></li>
		</ul>

		</li>
		<li><a href="teamSupport.php">Team support with SVN</a>
		<ul>
		<li><a href="teamSupport/repos_persp.php">SVN Repository Exploring Perspective</a></li>
		<li><a href="teamSupport/new_location_wiz.php">SVN Repository Location Wizard</a></li>
		<li><a href="teamSupport/sharing_wiz.php">SVN Sharing Wizard</a></li>
		<li><a href="teamSupport/find_check_wiz.php">SVN Find/Check Out As Wizard</a></li>
		<li><a href="teamSupport/console.php">SVN Console</a></li>

		<li><a href="teamSupport/repos_view.php">SVN Repository View</a></li>
		<li><a href="teamSupport/repos_browser_view.php">SVN Repository Browser View</a></li>
		<li><a href="teamSupport/history_view.php">SVN History View</a></li>
		<li><a href="teamSupport/workspace_synch.php">SVN Workspace Synchronization</a></li>
		<li><a href="teamSupport/merge_dialog.php">SVN Merge Dialog</a></li>
		<li><a href="teamSupport/props_view.php">SVN Properties View</a></li>

		<li><a href="teamSupport/annotation_view.php">SVN Annotation View</a></li>
		<li><a href="teamSupport/svn_info.php">SVN Info</a></li>
		<li><a href="teamSupport/svn_toolbar.php">SVN Toolbar</a></li>
		<li><a href="teamSupport/svn_label_decor.php">SVN Label Decorations</a></li>
		<li><a href="teamSupport/svn_main_menu.php">SVN main menu group</a></li>
		<li><a href="teamSupport/actions.php">SVN actions</a></li>	
		<li><a href="teamSupport/compare.php">Working with Compare Editor</a></li>
		<li><a href="teamSupport/refactor.php">Refactoring</a></li>
		<li><a href="teamSupport/layouts.php">Repository Layouts</a></li>
		<li><a href="teamSupport/keys.php">Hot Keys</a></li>

		</ul>
		</li>
		<li><a href="install_migrate.php">Installation and migration</a></li>
		<li><a href="faq.php">FAQ</a></li>
		<li><a href="thanks.php">Special Thanks</a></li>
		<li><a href="notices.php">Legal</a></li>
		</ul>
		<br/>
	<br/>
	</div>	

EOHTML;


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