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

<h2>SVN Toolbar</h2>
	<p><i>'SVN Toolbar'</i> contains shortcuts to most recent used SVN facilities. To activate this toolbar refer to <i>'Window>Customize perspective...'</i> menu item and on the <i>'Commands'</i> tab check the <i>'SVN'</i> group.</p>
	<p>This is how <i>'SVN Toolbar'</i> looks like:</p>
	<img border = "0" src="../images/svn_toolbar.png" alt="SVN Toolbar"/>
	<p><b>Commit the resources to version control</b> - activates the commit action for the selected resources.</p>
	<p><b>Update the resources to version control</b> - activates the update action for the selected resources.</p>
	<p><b>Restore pristine working copy file</b>  - undoes all local changes.</p>
	<p><b>Create tag</b>  - creates a tag.</p>
	<p><b>Create branch</b>  - creates a branch.</p>
	<p><b>Merge branches</b>  - opens merge wizard.</p>
	<p><b>Switch project to a new URL</b> - associates project with another repository location.</p>
	<br/>
	<br/>
	</div>	

EOHTML;


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