<?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 Project (WTP) 3.5</a> now support 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 Web Tools Platform</a> now make 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" 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);
?>
