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

	#*****************************************************************************
	#
	# index.php
	#
	# Author: 		Markus Knauer
	# Date:			2007-02-20
	#
	# Description: Entry page of the Eclipse Packaging Project
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Packaging Project (EPP)";
	$pageKeywords	= "eclipse, download, packages, packaging, udc";
	$pageAuthor		= "Markus Knauer";
	
	# 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="maincontent">


<!-- MIDCOLUMN START -->
<div id="midcolumn">

<h1>$pageTitle</h1>

<h2>Project Scope</h2>

<ul>
	<li><b>Create entry level downloads based on defined user
	profiles.</b> The project defined and created the EPP downloads of
  Java Developer,	Java EE Developer, C/C++ Developer and RCP Developer.
  These downloads are available from the main Eclipse download page.
  Please follow 
  <a href="http://wiki.eclipse.org/EPP/How_to_create_a_package">this</a> 
  description if you want to be a package maintainer.</li>

  <li>Provide the <a href="https://wiki.eclipse.org/EPP/Logging">logging component</a>
  that aims to host various utility bundles related to logging in the Eclipse IDE.
  At the moment, logging contains the <b>Automated Error Reporting utility</b> but will
  likely offer a utility plugin that offers an Eclipse-wide configuration for Logback and
  maybe Apache Log4J in the future.</li>
	
	<li><b>Provide and integrate the EPP Usage Data Collector.</b> (deprecated)
	The <a href="usagedata">Usage Data Collector</a> collects information about how individuals 
	are using the Eclipse platform. The intent is to use this data to help 
	committers and organizations better understand how developers are 
	using Eclipse.</li>

	<li><b>Provide a platform that allows the creation of packages
	(zip/tar downloads) from an update site.</b> The core technology of the
	project will enable the creation of download packages that are created
	by bundling Eclipse features from one or multiple Eclipse update sites.</li>
</ul>

<hr class="clearer" />

<table border="0" width="100%">
  <tr>
    <td align="center" valign="middle" width="33%">
      <a class="btn btn-primary btn-lg" href="http://www.eclipse.org/downloads/">Download Release</a>
    </td>
    <td align="center" valign="middle" width="33%">
    <a class="btn btn-primary btn-lg" href="http://www.eclipse.org/downloads/index-developer.php">Download Milestones</a>
    </td>
    <td align="center" valign="middle" width="33%">
      <a class="btn btn-primary btn-lg" href="https://ci.eclipse.org/packaging/job/simrel.epp-tycho-build/lastSuccessfulBuild//artifact/org.eclipse.epp.packages/archive/">Download CI Build</a>
    </td>
  </tr>
</table>

<hr class="clearer" />
</div>
<!-- MIDCOLUMN END -->

<!-- RIGHTCOLUMN START -->
<div id="rightcolumn">
<div class="sideitem">
<h6>Project Links</h6>
<ul>
	<li><a href="/proposals/packaging/">Project Proposal</a></li>
</ul>
</div>
<div class="sideitem">
<h6>Active Contributors</h6>
<ul>
	<li><a href="http://www.eclipsesource.com">EclipseSource</a></li>
	<li><a href="http://www.codetrails.com">Codetrails</a></li>
</ul>
</div>
</div>
<!-- RIGHTCOLUMN END -->

</div>

EOHTML;


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