<?php 
/*******************************************************************************
 * Copyright (c) 2006 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://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
 *******************************************************************************/

	#*****************************************************************************
	#
	# header.php
	#
	# Author: 		Wayne Beaton
	# Date:			February 16, 2006
	#
	# Description:
	#    This file adds a header (with menu) to the page.
	#****************************************************************************
	
	include("../html/header.php");
	if (file_exists("/home/data/httpd/eclipse-php-classes/menu/menu.class.php")) {
		require_once("/home/data/httpd/eclipse-php-classes/menu/menu.class.php");
		$Menu = new Menu("en");
		$Menu->addMenuItem("List/edit resources", "/committers/resources/list_resources.php", "_self");
		$Menu->addMenuItem("Add resource", "/committers/resources/edit_resource.php", "_self");
		$Menu->addMenuItem("List/edit authors", "/committers/resources/edit_author.php", "_self");
		$Menu->addMenuItem("List/edit categories", "/committers/resources/edit_category.php", "_self");
		
		include("../modules/menu.php");
		echo "</tr></table>";
	}
	
?>
<link rel="stylesheet" type="text/css" href="./resources.css" title="rats" />
