<?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:			2008-04-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 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_comments.php">Comments and Input History</a></li>
		<li><a href="preferences/pref_console.php">Console</a></li>
		<li><a href="preferences/pref_diff_viewer.php">Diff Viewer</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>
		<li><a href="preferences/pref_graph.php">Revision Graph</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/create_repository.php">SVN Repository Dialog</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/locks_view.php">SVN Locks 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/tree_conflicts.php">SVN Tree Conflicts</a></li>
		<li><a href="teamSupport/connectors_discovery.php">SVN Connectors Discovery</a></li>
		<li><a href="teamSupport/revision_graph.php">SVN Revision Graph</a></li>
		<li><a href="teamSupport/actions.php">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);
?>