<?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 M1 information";
	$pageKeywords	= "M1,BPEL,info";
	$pageAuthor		= "Michal Chmielewski";
	
	# 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");
	include($_SERVER['DOCUMENT_ROOT'] . "/$projectShortName/items/milestones_menu.php");
		
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML
	
<STYLE type="text/css">
span.feature {
	font-size: 18pt;
	font-weight: bold;
}

span.feature:before {
   content: counter(featureId) ". " ;
   counter-increment: featureId;
}
</STYLE>
	
<div id="maincontent">
	<div id="midcolumn" style="counter-reset: featureId;">
		<h1>$pageTitle</h1>
		<h2>What's in M1 ?</h2>
		
		<p>
		M1 consists essentially of the code that was initially contributed by IBM 
		with some minor changes to allow for BPEL source authoring (as opposed to just editing the 
		provided samples).		
		</p>
		It is indended to be marginally useful because most of the key functionality will not be 
		there yet.
		
		<p>
		<span class="feature"></span>
		You can create a new BPEL process file in any project by choosing 
		<tt>New -> Other ... ---> BPEL Process File.</tt>. 
		</p>
		
		<ul style="margin-left: 20px;">
		  <li> Wizard <a href="javascript:void(setImage('wizard','img/new-wizard-1.gif'))">Step 1</a> - 
		     Pick the BPEL 2.0 file wizard. 
		  </li>
		  <li> Wizard <a href="javascript:void(setImage('wizard','img/new-wizard-2.gif'))">Step 2</a> - 
		     Specify process name, pick namespace, and template to start with.
		  </li>
		  <li> Wizard <a href="javascript:void(setImage('wizard','img/new-wizard-3.gif'))">Step 3</a> - 
		     The process goes into the currently selected container. This last step allows
		     you to place it anywhere in your workspace that you want.
		  </li>
		</ul>
		
		<div class="screenshot">
		   <img id="wizard" alt="New Wizard" src="img/new-wizard-1.gif" />
		</div>		
				
		<p>
		<span class="feature"></span>
		Some BPEL specific activities were added to the palette, such as the 
		Repeat Until loop.
		</p>
		 		
		<div class="screenshot">
		   <img alt="Repeat Until" src="img/repeat-until.gif"/>
		</div>

		<p>
		<span class="feature"></span>
		A few bug fixes to stabilize the build.
		</p>
       		
	</div>
</div>

EOHTML;


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