<?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 Sharing Wizard</h2>
	<p>
	<i>'SVN Sharing Wizard'</i> provides a probability to configure sharing settings. Appears when <i>'Team>Share Project...'</i>, <i>'Team>Share Projects...'</i> menu items are clicked or while auto sharing import.</p>
	<p>The first page of this wizard allows you to choose the type of repository you would like to share you project with. (SVN in our instance). If the user activated sharing with 'Share Projects...' menu item this page will be the second one and the first one will be the page that allows to view projects group to share.</p>
	<img border = "0"  src="../images/share_select.png" alt="Select projects to share..."/>
	<p>The second page of the wizard allows to choose a repository location to share to or to create a new one.</p>
	<img border = "0"  src="../images/share_repos.png" alt="Choose repository..."/>
	<p>The next page of <i>'Sharing Wizard'</i> offers the user to choose repository name and project repository layout with preview.</p>
	<img border = "0"  src="../images/share_pr_name.png" alt="Choose repository name and layout..."/>
	<p>And the last page of this wizard will provide the user the editable space to enter his comments there or to choose some from templates.</p>
	<img border = "0"  src="../images/share_comment.png" alt="Comments..."/>
	<br/>
	<br/>
	<table cellpadding="5" cellspacing="0" border="1" width="100%">
		<tr>
			<td class="header" align ="center" valign="center">Option</td>
			<td class="header" align ="center" valign="center">Description</td>
			<td class="header" align ="center" valign="center">Default</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Launch the commit dialog for selected resources</td>
			<td align ="center" valign="center">Specifies if the Subversion&reg; should commit the shared resources to the repository location at once while the user can continue his work.</td>
			<td align ="center" valign="center">Enabled</td>
		</tr>
	</table>
	<p>If the project the user wants to share has the SVN&reg; meta information the following window appears to help the user to share the project using existent information.</p>
	<img border = "0"  src="../images/share_exists.png" alt="Your project has SVN meta info..."/>
	<br/>
	<img border="0" src="../images/rel_tops.png" alt="Related topics"/>
	<br/>
	<a href="../teamSupport/new_location_wiz.php">SVN Repository Location Wizard</a>
	<br/>
	<a href="../teamSupport/SVNaction/share.php">Sharing</a>
	<br/>
	<a href="../teamSupport/SVNaction/commit.php">Committing</a>
	<br/>
	<a href="../preferences/pref_comments.php">Comment templates</a>
	<br/>
	<br/>
	</div>	

EOHTML;


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