<?php
/**
 * Copyright (c) 2015 Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 */

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();

ob_start();

$pageKeywords = "";
$pageTitle = "Great Fixes";
$pageAuthor = "Wayne Beaton";

$App->setOutDated();
?>

<div id="midcolumn">
	<div class="homeitem">
		<h1><?= $pageTitle ?></h1>
		<p>
			The <b><?= $pageTitle ?></b> Skills competition was a success!
		</p>
		<p>
			A <b>Great Fix</b> is a contribution provides a significant
			improvement in one or more projects participating in the
			<a href="http://projects.eclipse.org/releases">Eclipse Simultaneous Release</a>
			in general, and in the <b>Desktop IDE experience</b> in particular.
		</p>

		<p>Congratulations to our past winners!</p>
	</div>
</div>

<?php

$html = ob_get_contents();
ob_end_clean();
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html );
?>