<?php
/*******************************************************************************
 * Copyright (c) 2014 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 implementation
 *******************************************************************************/

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

        #
        # Begin: page-specific settings.  Change these. 
        $pageTitle              = "Eclipse Safety Framework";
        $pageKeywords           = "Polarsys,ESF,Safety";
        $pageAuthor             = "Jonathan Dumont";


        $html = <<<EOF
        <h2>About ESF</h2>
        <p>This is simply a blank index, to start the website.</p>
EOF;

        $App->generatePage("polarsys", $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
