<?php
/**
 * Copyright (c) 2017, 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:
 *   Wayne Beaton (Eclipse Foundation) - 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();

require_once ($App->getProjectCommon());

$pageTitle = "EPL-2.0 FAQ";

// FIXME Workaround because I can't get Asciidoctor to generate embeddable HTML
function getBodyContent($path)
{
    $DOMDocument = new DOMDocument();
    $DOMDocument->loadHTMLFile($path);
    $body = $DOMDocument->getElementsByTagName('body')->item(0);
    $content = "";
    foreach ($body->childNodes as $childNode) {
        $content .= $DOMDocument->saveHTML($childNode);
    }
    return $content;
}

ob_start();
?>

<div id="midcolumn">
<?php print getBodyContent(dirname(__FILE__) . '/../documents/html/epl-2.0-faq.html'); ?>
</div>

<?php
$html = ob_get_clean();

$Theme->setPageTitle($pageTitle);
$Theme->setPageKeywords("eclipse public license, epl");
$Theme->setPageAuthor("Wayne Beaton");

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

