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

	<h2>Comment Templates</h2>
	<p>
		These preferences can be changed on 
			<i>'Team>SVN>Comment Templates'</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>'Comment Templates'</i> properties page looks like:
	<br/><br/><img border="0" src="../images/pref_comment_templates.png" alt="Comment Templates properties page"/>
	<br/>
	<br/>
	</div>	

EOHTML;


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