<?php
/**
 * Copyright (c) 2014, 2018 Eclipse Foundation.
 *
 * 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:
 *   Christopher Guindon (Eclipse Foundation) - Initial implementation
 *   Mike Milinkovich (Eclipse Foundation)
 *   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());

$Nav->addNavSeparator("Related Links", "");
$Nav->addCustomNav("Working Group Process Document", "/org/workinggroups/industry_wg_process.php", "_self", 1);
$Nav->addCustomNav("Working Group Participation Agreement", "/org/workinggroups/IWG_Participation_Agreement.pdf", "_self", 1);
$Nav->addCustomNav("Enabling Industry Collaborations", "http://www.slideshare.net/IanSkerrett/eclipse-open-innovation-v3", "_self", 1);
$Nav->addCustomNav("Member Funded Initiatives Program", "/org/workinggroups/mfi_program.php", "_self", 1);
$Theme->setNav($Nav);

$pageTitle = "About Eclipse Working Groups";
$Theme->setPageTitle($pageTitle);
$Theme->setPageKeywords("eclipse, working, groups");
$Theme->setPageAuthor("Christopher Guindon");

ob_start();
include ("content/en_" . $App->getScriptName());
$html = ob_get_clean();

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