<?php
/**
 * Copyright (c) 2018 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"));
$App = new App();
include ($App->getProjectCommon());

$pageTitle = 'Eclipse IDE 2018-12';
$Theme->setPageKeywords("eclipse 2018-12, release, simultaneous, release train, 2018-12");
$Theme->setPageTitle($pageTitle);

ob_start();
?>
<div class="jumbotron featured-jumbotron margin-bottom-0">
  <div class="container">
    <div class="row">
      <div class="col-md-20 col-md-offset-2 col-sm-18 col-sm-offset-3">
        <h1 class="jumbotron-title">Eclipse IDE</h1>
        <h2 class="h3 fw-600">The Leading Open Platform for Professional Developers</h2>
        <hr>
        <?php if(time() >= strtotime("19 December 2018")): ?>
          <a style="width:245px;" class="btn btn-white btn-lg margin-bottom-20" href="/downloads/packages/release/2018-12/r"><i class="fa fa-download"></i> Download 2018-12</a>
        <?php endif; ?>
      </div>
    </div>
  </div>
</div>
<?php
$extra_header_html = ob_get_clean();
$Theme->setExtraHeaderHtml($extra_header_html);

// Place your html content in a file called content/en_pagename.php
ob_start();
include ("content/en_index.html");
$html = ob_get_clean();

$Theme->setHtml($html);

$Theme->setExtraHeaders('<link href="/eclipseide/2018-12/style.css" media="screen" rel="stylesheet" type="text/css"/>');
$Theme->setAttributes('header-wrapper', 'header-eclipseide');
$Theme->setThemeVariables(array('hide_breadcrumbs' => TRUE, 'main_container_classes' => 'container-full footer-offset'));
$Theme->generatePage();