<?php
/*******************************************************************************
 * Copyright (c) 2014-2015 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://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Christopher Guindon (Eclipse Foundation) - Initial implementation
 *    Taylor Patterson (Eclipse ICE Committer) - Initial ICE content
 *******************************************************************************/

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

  # Define your project-wide Nav bars here.
  # Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank).
  $Nav->addNavSeparator("Eclipse ICE Home", "/ice");
  $Nav->addCustomNav("Information", "https://projects.eclipse.org/projects/technology.ice", "_self", NULL);
  $Nav->addCustomNav("Wiki", "https://wiki.eclipse.org/ICE", "_self", NULL);
  $Nav->addCustomNav("Downloads", "https://projects.eclipse.org/projects/technology.ice/downloads", "_self", NULL);
  $Nav->addCustomNav("Repository", "https://github.com/eclipse/ice", "_self", NULL);
  $Nav->addCustomNav("Bugs", "https://bugs.eclipse.org/bugs/describecomponents.cgi?product=Ice", "_self", NULL);
  $Nav->addCustomNav("Code Quality", "/ice/codequality.php", "_self", NULL);
  $Nav->addCustomNav("Contact Us", "https://projects.eclipse.org/projects/technology.ice/contact", "_self", NULL);
  