<?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
	#
	#
	#****************************************************************************
	$documentRoot = $_SERVER['DOCUMENT_ROOT'];
	//require_once ($documentRoot .'/europa/scripts/projectsTable.php');
	//require_once ($documentRoot . '/resources/scripts/resources_html.php');	
	require_once ($documentRoot . '/europa/scripts/whatsnew.php');
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Europa Release News";
	$pageKeywords	= "Eclipse Europa Simultaneous Release";
	$pageAuthor		= "Nathan Gervais";
	
	# 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("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);

	# End: page-specific settings
	#
	// This file is linked to from lots of different places.
	// Use absolute paths to make sure that we can actually test
	// that the file renders properly (i.e. testing using) "/index.php",
	// and "/home/index.php" both work.
	# Paste your HTML content between the EOHTML markers!
	
	
	//$whatsnew = rss_to_sideitem_html('/community/news/2005inthenewsarchive', 10000, "europa");	
	$whatsnew = rss_to_html_verbose('/community/news/2005inthenewsarchive', 10000, "europa");
	ob_start();
	?>
	<map name="developerBarMap">
		<area shape="rect" alt="" coords="537,0,670,58" href="/downloads/moreinfo/custom.php">
		<area shape="rect" alt="" coords="396,0,537,58" href="/downloads/moreinfo/rcp.php">
		<area shape="rect" alt="" coords="263,0,396,58" href="/downloads/moreinfo/c.php">
		<area shape="rect" alt="" coords="125,0,263,58" href="/downloads/moreinfo/jee.php">
		<area shape="rect" alt="" coords="0,0,125,58" href="/downloads/moreinfo/java.php">
	</map>		
	<link rel="stylesheet" type="text/css" href="layout.css" media="screen" />
	<style>
		.homeitem { width:90%; }
	</style>
	<div id="midcolumn">
		<div id="headerBG">
			<table cellspacing=0 class="headerBar release">
	        	<tr>
	        		<td align="right"></td>
				</tr>				
			</table>
		</div>
		<div class="homeitem3col">
		<?=$whatsnew;?>		
		</div>
	</div>

<? 
$html = ob_get_contents();
ob_end_clean();

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

<?php
/*
 * Created on Jun 28, 2007
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
?>
