<?php
/**
 * Copyright (c) 2019 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/
 *
 * Contributors:
 * Christopher Guindon (Eclipse Foundation) - Initial implementation
 *
 * SPDX-License-Identifier: EPL-2.0
 */

require_once (realpath(dirname(__FILE__) . "/../../../eclipse.org-common/system/app.class.php"));
require_once (realpath(dirname(__FILE__) . "/../../../eclipse.org-common/classes/releases/simultaneous_release.class.php"));
$App = new App();
$SimultaneousRelease = new SimultaneousRelease();
$SimultaneousRelease->setFilePath('/home/data/httpd/writable/community/sr-eclipse-2019-06.json');

$pageTitle = 'New &amp; Noteworthy';

include ($App->getProjectCommon());

$Theme->setPageKeywords("eclipse 2019-06, release, simultaneous, release train, 2019-06");
$Theme->setPageTitle($pageTitle . ' | Eclipse IDE 2019-06');

// Place your html content in a file called content/en_pagename.php
ob_start();
include ("content/en_" . $App->getScriptName());
$html = ob_get_clean();

$Theme->setHtml($html);
$Theme->generatePage();
