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

// 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)
$Nav->addNavSeparator("About Us", "../index.php");
$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);

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

// remove last crumb since it represents this _projectCommon page.
$Breadcrumb->removeCrumb($Breadcrumb->getCrumbCount() - 1);
$Breadcrumb->addCrumb("Eclipse Foundation", "/org/foundation/", "_self");
$Breadcrumb->addCrumb("Elections", "/org/elections/", "_self");
?>
