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

require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");

// Eclipse IDE theme
$Theme = $App->getThemeClass("eclipse_ide");

# Define your project-wide Nav bars here.
# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
# these are optional
$Nav = new Nav();
$Nav->setLinkList(array());
$Nav->addNavSeparator("Vex", "/vex/");
$Nav->addCustomNav("Download", "/vex/download/", "_self", 3);
$Nav->addCustomNav("Documentation", "https://wiki.eclipse.org/Vex#Documentation", "_self", 3);
$Nav->addCustomNav("Support", "https://wiki.eclipse.org/Vex#Support", "_self", 3);
$Nav->addCustomNav("Getting Involved", "https://wiki.eclipse.org/Vex#Contributing", "_self", 3);
$Theme->setNav($Nav);

$Theme->setPageKeywords("eclipse, IDE, project, vex, DITA, DocBook, DTD, CSS");
$Theme->setPageAuthor("Holger Voormann");
$Theme->setPageTitle("Vex - A Visual Editor for XML");

$Menu = new Menu();
$Menu->setMenuItemList(array());
$Menu->addMenuItem("Home", "/vex/", "_self");
$Menu->addMenuItem("Download", "/vex/download/", "_self");
$Menu->addMenuItem("Documentation", "https://wiki.eclipse.org/Vex#Documentation", "_self");
$Menu->addMenuItem("Support", "https://wiki.eclipse.org/Vex#Support", "_self");
$Menu->addMenuItem("Getting Involved", "https://wiki.eclipse.org/Vex#Contributing", "_self");
$Theme->setMenu($Menu);

// Disable occasional Eclipse Foundation Promotion banners (EclipseCon, etc.)
$App->Promotion = FALSE;