<?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>Comments and Input History</h2>
	<p>
		These preferences can be changed on 
			<i>'Team>SVN>Comments and Input History'</i>
		 properties page. On this page user can create, edit or remove comment templates for committing, preview selected template. These templates can be used later while performing sharing or commit operations. To add a comment template press 'New' and simply type it in an editable space of a dialog.</p>
		<table cellpadding="1" cellspacing="0" border="0">
			<tr>
				<td valign="top" align="left">
					<p align="left">
						<i>
							<b>Tip:</b>
						</i>
					</p>
				</td>
				<td valign="top">
					<p>
						<i>
							This feature is very useful, when the user has, for example, some standardized comment type. Saving it to templates will essentially save his time and conformably quicken team work.
						</i>
					</p>
				</td>
			</tr>
		</table>
		<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">Include 'tsvn:logtemplate' property value in commit log templates</td>
			<td align ="center" valign="center">Specifies either include or not 'tsvn:logtemplate' property value in commit log templates.</td>
			<td align ="center" valign="center">Enabled</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Include user defined templates in commit log templates</td>
			<td align ="center" valign="center">Specifies either include or not user defined templates in commit log templates.</td>
			<td align ="center" valign="center">Enabled</td>
		</tr>
	</table><br/>
	This is how <i>'Comments and Input History'</i> properties page looks like:
	<br/><br/><img border="0" src="../images/pref_comment_templates.png" alt="Comments and Input History properties page"/>
	<br/>
	<br/>
	</div>	

EOHTML;


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