<?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
 * Eric Poirier (Eclipse Foundation)
 *
 * 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 2019-03';
$Theme->setPageKeywords("eclipse 2019-03, release, simultaneous, release train, 2019-03");
$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("20 March 2019")): ?>
          <a style="width:245px;" class="btn btn-white btn-lg margin-bottom-20" href="/downloads/packages/installer"><i class="fa fa-download"></i> Download 2019-03</a>
          <p><small><a class="white" href="/downloads/packages">Other Packages</a></small></p>
        <?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/2019-03/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();