<?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, process, designer, developer";
	$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/developers_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>Developer Resources</h2>
		<p>
		To get started, we suggest that <a class="www" href="/bpel/install.php">you install</a> the bits first. The installation instructions 
		should get you access to the right packages in the repository and allow you to build and run
		the editor in the Runtime Workbench.
		</p>
		
		<p>
		Help is needed and is welcome ! There are currently a few of areas where we could use some help.
		
		<ul class="midlist">
		 <li><span class="focus">QA</span> - if you are using the BPEL designer and found a bug <a class="www" href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=BPEL">report it.</a>
		 <li><span class="focus">Extension Points</span> - Some of you have extended the BPEL editor to do <b>X</b>.
		 Consider contributing this back or at least share that little nugget with us.  We'll add it to
		 the "interesting" links, "interesting" links side bar.
		 <li> <span class="focus">Runtimes</span> - Apache ODE integration - we are thinking about this,
		  but if you have some spare cycles perhaps you could write it.
		 <li> <span class="focus">Samples</span> - have you written your first HelloWorld BPEL process ? Perhaps it is Hello World 2.0 ? 
		      We'll gladly make it part of the samples that will ship out with this.		 
		  
		</ul>
		
		<p>
		If you are interested, just contact the <a class="www" href="/bpel/team.php">BPEL Team</a>.
		</p>
		
		
		<div class="homeitem3col">
			<h3>Design Documents</h3>
			<ul>
				<li><a class="www" href="developers/validator/">BPEL 2.0 Validator</a>  <span class="date">Mar 29<sup>th</sup>,2007</span></li>
				<li><a class="www" href="developers/model.php">BPEL Model</a>  <span class="date">Dec 12<sup>th</sup> 2005</span></li>
				<li><a class="www" href="developers/extension_points.php">Extension Points</a>  <span class="date">Dec 2<sup>nd</sup> 2005</span></li>
			</ul>
		</div>
		<div class="homeitem3col">
			<h3>Planning</h3>
			<ul>
				<li><a class="www" href="developers/milestone_plan.php">Milestone Plan</a>  <span class="date">Updated Sep 1<sup>st</sup>, 2010</span></li>
				<li><a class="www" href="users/m5.php">Next Milestone: M5</a>  <span class="date">Updated Sep 10<sup>th</sup>, 2010</span></li>
				<li><a class="www" href="developers/calls.php">Sync Up Calls</a> 
				  <div style="font-size: 8pt;"><?php include("developers/_next.php") ?></div></li>
				  				
				<li><a class="www" href="http://www.eclipse.org/proposals/bpel-designer/">Original Proposal</a>  
				     <span class="dates">07/05/2005</span></li>
			</ul>
		</div>
		<hr class="clearer" />
		<div class="homeitem3col">
			<h3>Other Misc</h3>
			<ul>
				<li><a class="www" href="developers/www.php">How to add web content</a> (w.e.o/bpel/)</li>
			</ul>
		</div>
		
	</div>
	
	$rightcolumn_links
	
</div>


EOHTML;


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