<?php
/*******************************************************************************
 * Copyright (c) 2014-2016 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Denis Roy (Eclipse Foundation) - initial API and implementation
 *    Christopher Guindon (Eclipse Foundation) - Solstice migration
 *******************************************************************************/
  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");

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

  //$LDAPPerson = new LDAPPerson();
  //$LDAPPerson = $LDAPPerson->redirectIfNotLoggedIn();

  //$Theme->setBreadcrumb($Breadcrumb);
  //$Theme->setNav($Nav);
  //$Theme->setMenu($Menu);
  $Theme->setPageAuthor('Eclipse Foundation');
  $Theme->setPageKeywords('eclipse, download, downloads, mirror, project, plug-ins, plugins, java, ide, swt, refactoring, free java ide, tools, platform, open source, development environment, development, ide');
  $Theme->setPageTitle('Eclipse infras status');

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

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