<?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: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "BPEL Designer Project";
	$pageKeywords	= "BPEL, SOA, WSDL, Eclipse";
	$pageAuthor		= "BPEL Team";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	include($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/items/users_menu.php");
		
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML


<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<h2>User Resources</h2>
		Some useful information to help you get started with the BPEL designer.
		<div class="homeitem3col">
			<h3>Guides, HowTos</h3>
			<ul>
			
				<li><a href="downloads.php">Install the Designer</a> <span class="dates">11/28/2006</span></li>
			
				<li><a href="users/howto/project.php">Create a New Project</a>  <span class="dates">11/28/2006</span></li>
				<li><a href="users/howto/wsdl.php">Add a WSDL</a>  <span class="dates">11/28/2006</span></li>
				<li><a href="users/howto/xsd.php">Add a Schema</a> <span class="dates">11/28/2006</span></li>	
				<li><a href="users/howto/extension.php">Write a custom extension Activity</a> <span class="dates">10/22/2008</span></li>
				<li><a href="users/howto/ode.php">Develop, deploy and run a Hello World Process with the BPEL Designer and Apache ODE</a> <span class="dates">10/22/2008</span></li>									
			</ul>
		</div>
		
		<div class="homeitem3col">
			<h3>What's new</h3>
			<ul>
                <li><a href="users/m6.php">M6 Information</a>  <span class="dates">04/12/2012</span></li>			
                <li><a href="users/m5.php">M5 Information</a>  <span class="dates">01/01/2011</span></li>			
                <li><a href="users/m4.php">M4 Information</a>  <span class="dates">09/01/2010</span></li>			
				<li><a href="users/m3.php">M3 Information</a>  <span class="dates">06/29/2007</span></li>			
				<li><a href="users/m2.php">M2 Information</a>  <span class="dates">11/28/2006</span></li>
				<li><a href="users/m1.php">M1 Information</a>  <span class="dates">11/15/2006</span></li>
			</ul>
		</div>
		<hr class="clearer" />
	</div>
		
	$rightcolumn_links
	
</div>

EOHTML;


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