<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

require_once("functions.php");
$meta_tags = get_meta_tags_from_html_document("proposal.html");

$proposal_title = $meta_tags['proposal-name']; 
$container_name = $meta_tags['container-name'];
$communication_channel_url = $meta_tags['communication-channel-url'];
$communication_channel_name = $meta_tags['communication-channel-name'];

$pageTitle 		= $proposal_title;
$pageKeywords	= "Eclipse, proposal, <?= $proposal_title ?>";
$pageAuthor		= "";

ob_start();
?>
<div id="maincontent">
	<div id="midcolumn">
		<?php
			include_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/proposal-page-header.php");
			generate_header($proposal_title);
		?>
		
		<h1><?= $proposal_title ?></h1>
	
		<p>The <?= $proposal_title ?> project is a proposed open source project under the 
		<?= $container_name ?> Project</a>.</p>
		
		<p>This proposal is in the Project Proposal Phase (as defined in the
		Eclipse Development Process) and is written to declare its intent and
		scope. We solicit additional participation and input from the Eclipse
		community. Please send all feedback to 
		<a href="<?= $communication_channel_url ?>"><?= $communication_channel_name ?></a>.</p>
		
		<?php include("proposal.html"); ?>
	</div>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();

# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
