<?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:
 *   Chris Aniszczyk - initial API and implementation
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */

require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
$App = new App();
$Nav = new Nav();

$Theme = $App->getThemeClass();
include ($App->getProjectCommon());

$pageTitle = "Eclipse Planning Council";
$Theme->setPageAuthor('David Williams');
$Theme->setPageKeywords("Eclipse Planning Council");
$Theme->setPageTitle($pageTitle);

// Paste your HTML content between the markers!
ob_start();
?>
<!-- include empty lef nav col for now -->
<div id="leftcol">
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div id="maincontent">
  <div id="midcolumn">
    <h1><?php print $pageTitle ?></h1>
    <h2>Purpose</h2>
    <p>
      This 'planning' directory at this URL is to hold Planning Council specific
      web pages and web apps. Most Planning Council information is available on
      the <a href="http://wiki.eclipse.org/Planning_Council">Eclipse Planning
        Council Wiki Pages</a>
    </p>
  </div>
</div>
<?php
$html = ob_get_clean();
$Theme->setHtml($html);
$Theme->generatePage();
