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

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Nathan Gervais
	# Date:			2007-12-05
	#
	# Description: DTP Website
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "DTP Model Base Project";
	$pageKeywords	= "eclipse, data tools, dtp, datatools, modelbase, model base";
	$pageAuthor		= "Nathan Gervais";
	
	ob_start();
	?>
	<div id="midcolumn">
		<h1><?=$pageTitle; ?></h1>
		<div class="homeitem3col">
			<h3>Project Overview</h3>
		      <p>The Model Base project provides a structural foundation for DTP. Using industry best practices such as model-driven development with UML, and 
		      taking advantage of the <a href="http://www.eclipse.org/emf/" target="top">Eclipse Modeling Framework (EMF)</a>, initially included are models listed in the <b>Components</b> section below.</p>
		      <p>Key features supported and benefits provided include:</p>
			  <ul>
			  <li><p>Extensible and database-agnostic models.
			  <li><p>Broad editing support: Visual and other means of model editing, integrated with EMF, enabling 
              seamless editing and EMF model generation.
			  <li><p>Support for change management: Models can be version controlled through Eclipse team support.
			  <li><p>Published models with documentation (Java Doc) to support DTP consumers.
			  <li><p>Complies with the industry standards, such as SQL and JDBC.
			  <li><p>Provides sample code, demonstrating model usage.
			  </ul>
		</div>
		<hr class="clearer">
		<div class="homeitem3col">
			<h3>What's New</h3>
			<ul>
			</ul>				
		</div>
		
		<div class="homeitem3col">
			<h3>Model Components</h3>
			<h4>Current Version</h4>
			  <ul>
			  <li><p>SQL model (<a href="modelbase_doc/umlJan2009/SQLModel/root.html" target="_blank">UML Documentation</a>)
			  <li><p>Database definition model (<a href="modelbase_doc/umlJan2009/DatabaseDefinitionModel/root.html" target="_blank">UML Documentation</a>)
			  <li><p>SQL Query model (<a href="modelbase_doc/SQL_SQLQuery_ModelWebPub/root.html" target="_blank">UML Documentation</a>)
			  <li><p>SQL XML Query model (<a href="modelbase_doc/SQL_SQLQuery_ModelWebPub/root.html" target="_blank">UML Documentation</a>)
			  </ul>
			<h4>Older Versions</h4>
			  <ul>
			  <li><p>SQL model (<a href="modelbase_doc/uml/SQLModel/root.html" target="_blank">UML Documentation</a>)
			  <li><p>Database definition model (<a href="modelbase_doc/uml/DatabaseDefinitionModel/root.html" target="_blank">UML Documentation</a>)
			  </ul>
		</div>
	</div>
<?

	$html = ob_get_clean();
	
	# Configure the left navigator area.  In particular, we need to set the "About this Project" link.
    $Nav->setLinkList( array() );
    $Nav->addNavSeparator( "DTP Modelbase", "/datatools" );
    $Nav->addCustomNav( "About This Project",
        "/projects/project_summary.php?projectid=datatools.modelbase", "", 1  );
    # Can add more custom left navigator links here.    
	
	
	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>