<?php
/**
 * Copyright (c) 2015, 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:
 *   Eric Poirier (Eclipse Foundation) - Initial implementation
 *
 * SPDX-License-Identifier: EPL-2.0
 */
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");

$App = new App();
$Theme = $App->getThemeClass();

$pageTitle = "Mars Eclipse";
$Theme->setPageTitle($pageTitle);
$Theme->setPageKeywords("eclipse Mars, release, simultaneous, release train, mars");
$Theme->setPageAuthor("Eric Poirier");

// Custom theme variables
$variables = array();
$variables['main_container_classes'] = 'container-full footer-offset breadcrumbs-offset padding-top';
$App->setThemeVariables($variables);

ob_start();
include ("content/en_" . $App->getScriptName());
$html = ob_get_clean();

$App->AddExtraHtmlHeader('<link href="//fonts.googleapis.com/css?family=Raleway:100,300,500,400,700" rel="stylesheet" type="text/css">');
$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/mars/assets/public/stylesheets/styles.min.css" media="screen" />');
$App->AddExtraJSFooter('<script type="text/javascript" src="/mars/assets/public/javascript/scripts.min.js"></script>');
$Theme->setHtml($html);
$Theme->removeAttributes('breadcrumbs', 'breadcrumbs-default-margin');
$Theme->generatePage();