<?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>Photran is an open source project.  We welcome code contributions (and research
    collaborations) from others.  Here are some starting points...</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
            Developer's Guide</a></li>
        <li><a href="https://dev.eclipse.org/mailman/listinfo/photran-dev">Contributor
            Mailing List (photran-dev)</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/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);
?>
