<?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 		= "Top Reviews for Galileo in 2009";
	$pageKeywords	= "eclipse, helios, release, review, contest";
	$pageAuthor		= "Lynn Gayowski";
	
	# 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!	
	$html = <<<EOHTML
<div id="maincontent">
	<div id="midcolumn">
		<h1>$pageTitle</h1>

		<p>
		For those considering participation in the Helios blogathon, here are the 2009 award-winning reviews of
		Galileo to give you an idea of what we're looking for:
		</p>
		
		<ul>
			<li><a href="http://eclipsesource.com/blogs/2009/06/24/eclipse-galileo-feature-top-10-list-number-1/" target="blank">Eclipse Galileo Feature Top 10 List</a> - Ian Bull</li>
			<li><a href="http://blog.zvikico.com/2009/07/eclipse-35-hidden-treasures.html" target="blank">Eclipse 3.5 Hidden Treasures</a> - Zviki Cohen</li>
			<li><a href="http://ekkescorner.wordpress.com/blog-series/pde-and-targetplatform/" target="blank">pde + target</a> - Ekke Gentz</li>		
			<li><a href="http://blog.miracki.net/2009/07/24/eclipse-w-nowej-odslonie-galileo/" target="blank">The New Version of Eclipse - Galileo</a> - Mateusz Miracki</li>
		</ul>
		<br><br>
				
	</div>

	<!-- remove the entire <div> tag to omit the right column!  -->
	<div id="rightcolumn">
		<div class="sideitem">
			<h6>Related Links</h6>
			<ul>
				<li><a href="guidelines.php">Blogathon Guidelines</a></li>			
				<li><a href="reviews.php">Submitted Reviews</a></li>
			</ul>
		</div>
	</div>	
	
</div>

	
EOHTML;


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