<?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       = "Photran - An Integrated Development Environment for Fortran";
    $pageKeywords    = "photran, fortran, ide, eclipse";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
      <table style="text-align: left; width: 100%;" border="0"
 cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <td style="text-align: justify;" valign="top">Photran
is an IDE for Fortran 77, 90, and 95 based on <a href="http://www.eclipse.org/"
 target="_blank">Eclipse</a> and
the <a href="http://www.eclipse.org/cdt/" target="_blank">CDT</a>.<br>
It includes:<br>
            <ul>
              <li>Syntax-highlighting editor</li>
              <li>CVS support</li>
              <li>GUI interface to <span style="font-style: italic;">gdb</span></li>
              <li>Makefile-based compilation</li>
              <li>Compiler error extraction</li>
              <li>Basic refactorings</li>
            </ul>
            <p> <span style="font-weight: bold;">June 13, 2007</span> &bull;
Photran 4.0 beta 1, for CDT 3.1.2 and Eclipse 3.2.1, is <a href="download.php">now
available</a>.  This is the first release to include basic
<a href="refactoring.php">refactoring support</a> for Fortran.</p>
            <p><small><small><i>Photran
is being developed at the University of Illinois at
Urbana-Champaign and Los Alamos National Laboratory and is closely
involved with the <a href="http://www.eclipse.org/ptp">Parallel Tools
Platform</a>.  For further information, contact&nbsp;<a
 href="http://st-www.cs.uiuc.edu/users/johnson" target="_blank">Ralph
Johnson</a> or <a href="http://www.laputan.org/"
 target="_blank"></a><a href="http://jeff.over.bz/"
 target="_blank">Jeff Overbey</a>&nbsp;at UIUC, or
contact Craig Rasmussen at LANL.
If you have technical questions, please do <b>not</b>
send them to us directly; instead, post them to the
<a href="mailinglists.php">mailing list</a>.</i></small></small></p>
            </td>
            <td align="right" nowrap="nowrap"
 valign="top">&nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<img style="width: 382px; height: 300px;"
 alt="Screenshot of Photran 3.1 Beta 2"
 src="images/screenshot.png"><!--img
 src="http://brain.cs.uiuc.edu/photran/photran-eclipse-org-access.gif"--></td>
          </tr>
        </tbody>
      </table>

  </div>
</div>    
EOHTML;

    # Generate the web page
    #require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/common/project-info.class.php");
    #$projectInfo = new ProjectInfo("technology.photran");
    #$projectInfo->generate_common_nav( $Nav );

    $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
