<?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       = "Information for Contributors";
    $pageKeywords    = "photran, contributing";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
    <p>These links are primarily of interest to Photran
    committers and contributors.</p>

    <div class="homeitem3col">
      <h3>Photran Developer Resources</h3>
      <ul>
        <li><a href="newcontributors.php">Suggestions for New Contributors</a></li>
        <li><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.ptp/photran/org.eclipse.photran-dev-docs/dev-guide/cvs-instructions.pdf?cvsroot=Tools_Project">How
            to Check Out Photran from CVS and Compile It</a></li>
        <li><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.ptp/photran/org.eclipse.photran-dev-docs/dev-guide/dev-guide.pdf?cvsroot=Tools_Project">Photran
            4.0 Developer's Guide</a></li>
        <li><a href="https://dev.eclipse.org/mailman/listinfo/photran-dev">Contributor
            Mailing List</a></li>
        <li><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ptp/photran/?cvsroot=Tools_Project">View
            Current Sources in CVS (Web Interface)</a></li>
        <li><a href="http://dev.eclipse.org/newslists/news.eclipse.technology.photran/maillist.html"><font color="#808080">Archive
            of Now-Defunct Photran Newsgroup</font></a></li>
      </ul>
    </div>
    
    <div class="homeitem3col">
      <h3>Eclipse Foundation Resources</h3>
      <ul>
        <li><a href="https://dev.eclipse.org/committers/">Committer Login</a></li>
        <li><a href="http://www.eclipse.org/articles/Article-UI-Guidelines/Index.html">Eclipse User Interface Guidelines</a></li>
        <li><a href="http://dev.eclipse.org/conventions.html">Eclipse Naming, Coding, and JavaDoc Conventions</a></li>
        <li><a href="http://www.eclipse.org/tools/docs/project-guide.html">Eclipse.org Infrastructure&nbsp;for Tools Projects</a></li>
        <!--li><a href="http://www.eclipse.org/articles/Article-UI-Guidelines/Index.html">Technology Project Charter</a></li-->
        <li><a href="http://www.eclipse.org/legal/newcommitter.php">New Committer Form</a></li>
      </ul>
    </div>

  </div>
</div>    
EOHTML;

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