<?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              = "WTP Incubator Proposals";
        $pageKeywords   = "Eclipse WTP webtools XSL XML IDE";
        $pageAuthor             = "David Williams";

        # 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>Proposals for WTP Incubator Project Components</h1>
          <p>The following are proposals under consideration</p> 
          <ul>
          <li><a href="XSLTools_proposal.html">XSLTools_proposal</a> (See comments in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=206826">206826)</a></li>
          <li><a href="TLDTools_proposal.html">TLDTools_proposal</a> (See comments in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=196418">196418)</a></li>
          <li><a href="JSF Facelets Tools Proposal.html">JSF Facelets Tools Proposal</a> (See comments in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=214949">214949)</a></li>
          </ul>
        </div>
        
        <div id="rightcolumn">
        <div class="sideitem">
			<h6>Incubation</h6>
   			<div align="center"><a href="/projects/what-is-incubation.php"><img 
        		align="center" src="/images/egg-incubation.png" 
        		border="0" alt="Incubation" /></a></div>
		</div>
		</div>

EOHTML;


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

