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

if (!isset($Theme)) {
  $Theme = $App->getThemeClass();
}
$Theme->setThemeVariables(array(
  'sharethis' => TRUE
));

// Set the theme for your project's web pages.
// See the Committer Tools "How Do I" for list of themes
// https://dev.eclipse.org/committers/
$theme = NULL;

// Define your project-wide Nav bars here.
// Format is Link text, link URL (can be http://www.someothersite.com/), target
// (_self, _blank)

if (!isset($Nav)) {
  require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
  $Nav = new Nav();
}

$Nav->addNavSeparator("Related Links", "");
$Nav->addCustomNav("2001-2005 Archives", "main.html", "_self", 1);
$Nav->addCustomNav("2006 Archive", "2006archive.php", "_self", 1);
$Nav->addCustomNav("Press Release Guidelines", "pressrelease_guidelines.php", "_self", 1);

$Nav->addNavSeparator("About Us", "../");
$Nav->addCustomNav("Foundation", "../foundation/", "_self", 1);
$Nav->addCustomNav("Governance", "../documents/", "_self", 1);
$Nav->addCustomNav("Legal Resources", "../../legal/", "_self", 1);
$Nav->addCustomNav("Contact Us", "../foundation/contact.php", "_self", 1);
$Theme->setNav($Nav);