<?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: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Riena";
	$pageKeywords	= "Riena, Distributed Components, Platform, Runtime, Security, Eclipse";
	$pageAuthor		= "Christian Campo";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
	  <h1>Riena Platform Project</h1>
	  <h2>What is Riena?</h2>
	  <p>The Riena platform is the foundation for building multi-tier enterprise client/server
 applications. As such Riena is broadening the usage of the service oriented architecture of OSGi/Equinox
  by providing access to local and remote services in a transparent way. Using this uniform programming
   model, the components of Riena and the business components of the enterprise application can be
    developed regardless of their target location. Components are later easily placed on client or
     server depending on the business requirements.</p>
     <p>As an example the Riena user interface components will support a business process oriented user
 interface visualization and navigation metaphor which can be used as alternative to the default
  workbench layout.</p>
  <p>For more information about Riena, its component and the plan checkout our <a href="http://wiki.eclipse.org/Riena_Project">wiki</a>
	  
	  <div class="homeitem3col">
			<h3>News</h3>
			<h4>Riena Milestone 4.0.0.RC1 is available for download as part of Juno (21 May 2012)</h4>
			<p>The Wiki page <a href="http://wiki.eclipse.org/Riena_Getting_started">Getting Started</a> contains the download links and all that.
			   </p>
			<h4>Riena Release 3.0.0 as part of Indigo (16 June 2011)</h4>
			<p>The Wiki page <a href="http://wiki.eclipse.org/Riena_Getting_started">Getting Started</a> contains the download links and all that.
			    This is the first version that supplies a Riena on RCP and a Riena on RAP version. There are many more new features and bug fixes in this major release. You can find
			    a list and description in <a href="http://wiki.eclipse.org/Riena_New_And_Noteworthy#3.0.0.0">New and Noteworthy</a>
			   </p>
			<h4>Riena Release 2.0.0 as part of Helios (26 June 2010)</h4>
			<h4>Riena Release 1.2.0 (15 Dezember 2009)</h4>
			<h4>Riena Release 1.1.0 as part of Galileo (24 June 2009)</h4>
			<h4>Riena Release 1.0.0 (30 January 2009)</h4>
		</div>
	</div>
	
	<div id="rightcolumn">
	    <div class="sideitem">
	    	<h6>Active Contributors</h6>
	    	<div align="left">
	    	<ul>
	    		<li><a href="http://www.compeople.de" target="_blank">Compeople</a></li>
	    		<li><a href="http://eclipsesource.com" target="_blank">EclipseSource</a></li>
	    	</ul>
	    	</div>
	    </div>
    	<div class="sideitem">
			<h6>Links</h6>
			<ul>
				<li><a href="http://www.eclipse.org/proposals/riena" target="_blank">Riena Proposal</a></li>
			</ul>
		</div>
	</div>	

EOHTML;


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