<?php
/**
 * Copyright (c) 2014, 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 implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */

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

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

include ($App->getProjectCommon());

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

// Paste your HTML content between the markers!
ob_start();
?>
<!-- include empty lef nav col for now -->
<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_contents();
ob_end_clean();

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