<?php
/*******************************************************************************
 * Copyright (c) 2007 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
 *******************************************************************************/

	#*****************************************************************************
	#
	# article.php
	#
	# Author: 		Wayne Beaton
	# Date:			2005-11-16
	#
	# Description: This page provides a frame for articles.
	#
	#
	#****************************************************************************
	
	require_once("parts/functions.php"); 
	
	$root = $_SERVER['DOCUMENT_ROOT'] . '/articles';
	$file = $_GET['file'];
	
	// If the requested article does not exist, redirect to a warning page.
	if (!is_valid_article_file($file)) $file = "nosucharticle.html";
	
	$host = $_SERVER['HTTP_HOST'];
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Corner Articles";
	// TODO Should be able to extract the title from the XML data.
	$pageKeywords	= "article, articles, tutorial, tutorials, how-to, howto, whitepaper, whitepapers, white, paper";
	$pageAuthor		= "Wayne Beaton";
	
	# End: page-specific settings
	#
	
?>
<html>
<head>
	<base href="http://<?= $host ?>/articles/<?= $file ?>"/>
	<title>Eclipse Corner Article</title>
</head>
<body onLoad="window.print();">
	<?php readfile("$root/$file"); ?>	
</body>
