<?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'
/*******************************************************************************
 * Copyright (c) 2009-2010 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors: Christopher Guindon (Eclipse Foundation)
 * Nathan Gervais (Eclipse Foundation)
 *    
 *******************************************************************************/

	#
	# Begin: page-specific settings.  Change these. 
	$page           = "Highlights";
	$pageTitle 		= "Eclipse.org - Kepler Simultaneous Release : " . $page;
	$pageKeywords	= "eclipse kepler, release, simultaneous, release train, kepler";
	$pageAuthor		= "Christopher Guindon";
	
	# Paste your HTML content between the EOHTML markers!	
	ob_start();	
	?>
	<div id="fullcolumn" class="kepler subpage highlights">
		<?php include_once('includes/nav.php');?>
		<div id="mini-hightlights">
			<h2 id="h2_highlights">Highlights</h2>
				<ul class="ul_highlights">
					<li><a title="Eclipse Web Tools Platform Project website" href="http://www.eclipse.org/webtools/">Eclipse Web Tools Platform (WTP) 3.5</a> now supports the development of Java EE 7 applications.</li>			
					<li><a title="Stardust website" href="http://www.eclipse.org/stardust/">Stardust 1.0</a> provides a complete Business Process Management (BPM) suite of tools and runtimes.</li>
					<li><a title="Orion website" href="http://www.eclipse.org/orion">Orion 3.0</a> includes significant usability features and easier deployment to Java applications servers.</li>
					<li><a title="Business Intelligence and Reporting Tools (BIRT) website" href="http://www.eclipse.org/birt/">Business Intelligence and Reporting Tools (BIRT)</a> support for big data reporting now includes support for MongoDB and Cassandra.</li>
					<!--  <li><a title="Hudson website" href="http://www.eclipse.org/hudson/">Hudson 3.1</a> feature improvements focused on scalability for large deployments, including multi-tenancy for Hudson jobs.</li>-->
					<li><a title="Mylyn website" href="http://www.eclipse.org/mylyn/">Mylyn</a> now includes better support for code reviews through a navigator view and integration with Gerrit.</li>
					<li><a title="Maven Integration for Web Tools Platform website" href="http://www.eclipse.org/m2e-wtp/">Maven Integration for WTP</a> now makes it easier to use Maven for Java EE projects in Eclipse.</li>
				
				</ul>
		</div>
	</div>
	<?
	$html = ob_get_clean();
	# Generate the web page
	$App->Promotion = TRUE;
	$App->AddExtraHtmlHeader('<link href="http://fonts.googleapis.com/css?family=EB+Garamond" rel="stylesheet" type="text/css"/>');
	$App->AddExtraHtmlHeader('<link type="text/css" href="/kepler/css/styles.min.css?chrisguindon-eclipse" rel="stylesheet"/>');	
	$App->AddExtraHtmlHeader('<!--[if IE 7]><link rel="stylesheet" type="text/css" href="/home/content/ie7_nova.css" media="screen"/><![endif]-->');
	$App->generatePage('Nova', $Menu, NULL , $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
