<?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 M4 information";
	$pageKeywords	= "M4,BPEL,info";
	$pageAuthor		= "Bob Brodt";
	
	# 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)
	$Nav->addNavSeparator("Milestones", 	"");
	$Nav->addCustomNav("M1", "/$projectShortName/users/m1.php", "_blank", 1);
	$Nav->addCustomNav("M2", "/$projectShortName/users/m2.php", "_blank", 1);
	$Nav->addCustomNav("M3", "/$projectShortName/users/m3.php", "_blank", 1);
	$Nav->addCustomNav("M4", "/$projectShortName/users/m4.php", "_blank", 1);
	
	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn" style="counter-reset: featureId;" >
		<h1>$pageTitle</h1>
		<h2>What's in M4 ?</h2>
		
		<p>
		This is an interim release for a bunch of bug fixes and some new features.
		It includes most (if not all) of the bug fixes contributed by the
		<a href="http://community.jboss.org/en/jbosstools">JBoss Riftsaw and BPEL team</a> (thanks guys!) 
		</p>

	
		<!-- feature -->
		<p>
		<span class="feature"></span>
		Here is a <a href="https://bugs.eclipse.org/bugs/buglist.cgi?chfieldto=Now;query_format=advanced;chfieldfrom=2010-01-01;resolution=FIXED;product=BPEL;classification=Technology">
		complete list of bug fixes and features</a> that have been added since M3.					
		</p>
		
        <!-- feature -->
		<p>
		<span class="feature"></span>
		The BPEL "New File" Wizard has been enhanced to
		allow specification of a SOAP or HTTP service endpoint, which generates the
		&lt;service&gt; and &lt;binding&gt; elements in the WSDL artifact.
		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319216">See here</a> for details.
		</p>
		
		<div class="screenshot">
			<img src="img/NewFileWizard.png"/>
		</div>

        <!-- feature -->
		<p>
		<span class="feature"></span>
		A new Property Sheet Tab has been added for the Process and Activities. This tab displays a list of all
		namespaces and namespace prefixes that are in-scope. Missing namespace prefixes can also be assigned here.
		<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324162">See here</a> for details.
				
		<div class="screenshot">
		   <img width="800" id="palette" src="img/NamespacesPropertyTab.png" />
		</div>
		</p>


		
	</div>
</div>


EOHTML;


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