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

$pageTitle 		= "Projects";
$pageKeywords	= "projects";
$pageAuthor		= "Bjorn Freeman-Benson Nov 20/05";

$extraHtmlHeaders = "<link rel=\"alternate\" type=\"application/rss+xml\"
	title=\"Eclipse Reviews and Proposals\" href=\"/projects/reviews-rss.php\">
	";
$App->AddExtraHtmlHeader($extraHtmlHeaders);

	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/projects/projectList.class.php");
	$Nav->addNavSeparator("Projects", 	"");
	$ProjectList = new ProjectList();
	$ProjectList->selectProjectList("", "", "1", "", "", "PRJ.sort_order");
	#for($i = 0; $i < $ProjectList->getCount(); $i++) {
	#	$Project = $ProjectList->getItemAt($i);
	#	$projectName = $Project->getName();
	#    $url = $Project->getUrlIndex();
    #	$Nav->addCustomNav( $projectName, $url, "_self", 1);
	#}
	# this code is taken from /fragments/project-list
	# because I seem unable to make it work as an include
	for($i = 0; $i < $ProjectList->getCount(); $i++) {
		$Project = $ProjectList->getItemAt($i);
		if( $Project->getProjectID() == "foundation-internal" ) {
			continue;
		}
		$projectName = $Project->getName();
		$url = $Project->getUrlIndex();
		if( substr($url,-1,1) != "/" )
			$url .= "/";
		$filename = "home-page-one-liner.html";
		#
		# First look in the project's project-info directory
		#
		$localfile = str_replace("http://www.eclipse.org/", $_SERVER['DOCUMENT_ROOT'] . "/", $url);
		$localfile = str_replace("http://eclipse.org/", $_SERVER['DOCUMENT_ROOT'] . "/", $localfile);
		if( substr($localfile,-1,1) != "/" )
			$localfile .= "/";
		$localfile .= "project-info/" . $filename;
		#
		# Second look in the project's home directory (the old location)
		#
		if( !file_exists($localfile) ) {
			$localfile = str_replace("http://www.eclipse.org/", $_SERVER['DOCUMENT_ROOT'] . "/", $url);
			$localfile = str_replace("http://eclipse.org/", $_SERVER['DOCUMENT_ROOT'] . "/", $localfile);
			if( substr($localfile,-1,1) != "/" )
				$localfile .= "/";
			$localfile .= $filename;
		}
		#
		# Third if the project does not have the file, then use our temporary version
		#   eventually all the projects should have their own files and these
		#   temporary versions can be deleted
		#
		if( !file_exists($localfile) ) {
			$localfile = str_replace("http://www.eclipse.org/", $_SERVER['DOCUMENT_ROOT'] . "/projects/temporary/", $url);
			$localfile = str_replace("http://eclipse.org/", $_SERVER['DOCUMENT_ROOT'] . "/projects/temporary/", $localfile);
			if( substr($localfile,-1,1) != "/" )
				$localfile .= "/";
			$localfile .= $filename;
		}
		#
		# Fourth if there just isn't a file anywhere, then show only the project name.
		#
	    if (!file_exists($localfile)){
		    $url = $Project->getUrlIndex();
	    	$Nav->addCustomNav( $projectName, $url, "_self", 1);
	    } else {
		    $url = $Project->getUrlIndex();
		    $listhtml = file_get_contents( $localfile );
			if( preg_match( "/^(.*?)<a href=\"(.*?)\">(.*?)<\/a>(.*)/", $listhtml, $matches ) ) {
				$url = $matches[2];
				$listhtml = $matches[1] . $matches[3] . $matches[4];
			}
			$Nav->addCustomNav( $listhtml, $url, "_self", 1);
	    }
	}


ob_start();
?>
    <div id="maincontent">
	<div id="midcolumn">
        <h1><?= $pageTitle ?></h1>
        
        <p>All work at Eclipse is done in sub-projects and components organized
        under top-level projects. The top-level projects are managed by PMCs
        (project management committees).</p>
        
        <!--
        <h2><a name="Who"></a>Who are the committers and project leaders?</h2>
        <p>
            See the lists of all the <a href="committers.php"> Eclipse
            committers</a>, <a href="project-leads.php">sub-project leads</a>, <a href="project-leads.php">PMC
            members</a>, and <a href="project-leads.php">PMC leads</a>.</p>
        -->        
        
        <div class="homeitem3col">
        <h3><a href="/projects/reviews-rss.php"><img src="images/rss.gif" align="right" border="0"></a></a><a name="When"></a>When are the major releases scheduled from each project?</h3>
        <p>
            <a href="/projects/timeline/">The Summarized Timeline</a>
            lists all the planned and pending major releases. Each major release
            is preceded by a Release Review announced here and via 
            RSS (call-in number on the <a href="/proposals/">proposals page</a>).
        The slides and IP logs of previous releases are <a href="/projects/previous-release-reviews.php">available
        for inspection</a>.</p>
            <div align="center">
<?php include("fragments/processes-page-table.php") ?>
<br></a></div><!-- center -->

	<p>The <a href="europa.php">Europa Simultaneous Release</a> will release the major Eclipse
		projects at the same time at the end of June 2007. The <a href="europa.php">Europa planning and status page</a> has
		more details.</p>

</div><!-- homeitem3col -->
       <div class="homeitem3col">
        <h3>How can I change the meta-information about my project?</h3>
        <p><a href="http://portal.eclipse.org/"><img align="right" src="/projects/images/checkmark.jpg" border="0"></a>The <a href="http://portal.eclipse.org/">MyFoundation</a> portal to the Eclipse Foundation
        is the easiest way to change the meta-information (committers, project phase, release dates, ...) about your project.
        Committers, project leads, and PMC members can use the portal for tasks such as
        electing new committers, (soon) scheduling release reviews, (soon) updating the required project info, etc.
        </p>
</div><!-- homeitem3col -->

        <div class="homeitem3col">
            <h3><a name="What"></a>What are the top-level projects?</h3>
            <ul class="midlist">
				<?php 
				require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/fragments/project-list.php"); 
				?>
              <?= project_list_as_html( "project-page-paragraph.html", "" ) ?>
            </ul>
        </div><!-- homeitem3col -->

        <div class="homeitem3col">
        <h3><a name="Where"></a>Where are the projects going?</h3>
        <ul class="midlist">
          <!-- <li>
            The <a href="dashboard/">project dashboard</a>
            visualizes the current &quot;liveness&quot; of the projects.</li> -->
          <li>
            The <a href="/org/councils/roadmap.php">Eclipse Roadmap</a>
            describes where the existing projects are concentrating their
            efforts.&nbsp;</li>
          <li>New project proposals for new technical directions are on the <a href="/proposals/">proposals
            page</a>.</li>
        </ul>
        <div align="center">
        <br></a><?php include("fragments/proposals-page-proposals-table.php") ?>
            <br></a></div><!-- center -->
        </div><!-- homeitem3col -->
        
        <div class="homeitem3col">
        <h3><a name="How"></a>How do the projects operate?</h3>
        <p>
            The projects follow the <a href="/projects/dev_process/">Eclipse
            Development Process</a>. Each PMC defines a top-level
            project-specific development process that interacts with the overall
            Eclipse Development Process.</p>
        <p>At irregular times, there are inter-project <a href="committers/">committer gatherings</a>.</p>
        </div><!-- homeitem3col -->
       
      </div><!-- midcolumn -->
      
      	<div id="rightcolumn">
		<div class="sideitem">
			<h6>Five Questions</h6>
			<ul>
			<li><a href="#Who">Who?</a></li>
			<li><a href="#What">What?</a></li>
			<li><a href="#Where">Where?</a></li>
			<li><a href="#When">When?</a></li>
			<li><a href="#How">How?</a></li>
			</ul>
		</div><!-- sideitem -->
		
		<?php
		include($_SERVER['DOCUMENT_ROOT'] . "/projects/_project-right-nav-box.php");
		?>

		<div class="sideitem">
			<h6>Useful Links</h6>
			<ul>
			<li><a href="/projects/dev_process/">Development Process</a></li>
			<li><a href="/projects/dev_process/release-review.php">How to: Release Review</a></li>
			<li><a href="/projects/dev_process/proposal-phase.php">How to: Creation Review</a></li>
			<li><a href="/projects/dev_process/project-status-infrastructure.php">Project Status Infrastructure</a></li>
			<br>
			<li><a href="/legal/EclipseLegalProcessPoster.pdf">IP Process Flowchart</a></li>
			<li><a href="/legal/ContributionQuestionnairePart1-v1.0.php">Contribution Questionnaire</a></li>
			<br>
			<li><a href="/legal/newcommitter.php">New Committer Process</a></li>
			<li><a href="/legal/committerguidelines.php">Committer Guidelines</a></li>
			<br>
			<!-- <li><a href="/projects/dashboard/">Dashboard</a></li>-->
			<li><a href="/projects/timeline/">Timeline</a></li>
			</ul>
		</div><!-- sideitem -->
		
  </div><!-- rightcolumn -->
</div><!-- maincontent -->
<?php
	# Paste your HTML content between the EOHTML markers!	
	$html = ob_get_contents();
	ob_end_clean();

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