<?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="images/Athena-CBI-Hudson.png"><img src="images/Athena-CBI-Hudson_th.png" border="0"></a><br><a href="http://wiki.eclipse.org/Athena_Common_Build">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);
?>
