<?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'

$branding = <<<EOBRANDING
<div id="branding">
<img src="images/projectdash.gif" alt="Dash"/>
</div>
EOBRANDING;
$Menu->setProjectBranding($branding);

$pageTitle = "Dash";

ob_start();
?>
<div id="maincontent">
	<div id="midcolumn">

<h2>What is Project Dash?</h2><p>
Project Dash is a place where the community itself cancollaborate on tools for community awareness and collaboration in support of ourultimate objective of committer quality and cooperation.
This is very much a research project as we are notentirely sure what these tools will be. </p>

<center><table width="100%"><tr>
<td valign="top" align="center"><a href="http://wiki.eclipse.org/Athena_Common_Build"><img src="images/Athena-CBI-Hudson_th.png" border="0"><br>Athena Common Build</a></td>
<td valign="top" align="center"><a href="http://portal.eclipse.org/"><img src="images/portal.png" border="0"><br>
Foundation Portal</a></td>
<td valign="top" align="center"><a href="http://dash.eclipse.org/dash/commits/web-app/"><img src="images/summary.png" border="0"><br>
Commits Explorer</a></td>
</td></table></center>

<!-- <h2>New &amp; Noteworthy</h2>
<ul>
<?php
$files = glob('new-and-noteworthy/M*.htm');
foreach( $files as $filename ) {
	if( preg_match( "/(M\d+)\./", $filename, $matches ) ) {
		?><li><a href="<?= $filename ?>"><?= $matches[1] ?></a> - <?= date('F j, Y', filemtime($filename)) ?>
		</li><?php
	}
}
?>
</ul> -->

<h2>The Rest of The Story</h2>
<p>See our <a href="http://wiki.eclipse.org/Dash_Project">wiki pages</a> for
discussions, directions, plans, accomplishments, and all the rest.
</p>

	</div>
	
</div>

<div id="rightcolumn">
 <div class="sideitem">
   <h6>Incubation</h6>
   <div style="text-align: center">
   <a href="/projects/what-is-incubation.php"><img src="/images/egg-incubation.png" alt="Incubation"/></a>
   </div>
 </div>
</div>

<?php
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
