<?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 and Refactoring Tool 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>
    
<img align="right" hspace="20" vspace="20" style="width: 382px; height: 300px;"
  alt="Screenshot of Photran 3.1 Beta 2"
  src="images/screenshot.png">
Photran is an IDE and refactoring tool for Fortran 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>.
<a href="download.php">Photran 9.1</a> was released with Eclipse 4.5 (Mars) on June 24, 2015.

<p>
      Photran supports Fortran 77-2008.  It includes 39 refactorings
      (including Rename, Extract Procedure, and loop transformations), as
      well as the following IDE features:<br>
            <ul>
              <li>Syntax-highlighting editor</li>
              <li>Outline view</li>
              <li>Content assist*</li>
              <li>Open declaration*</li>
              <li>Declaration view and hover tips*</li>
              <li>Fortran language-based searching*</li>
              <li>Interactive debugger (<span style="font-style: italic;">gdb</span> GUI)</li>
              <li>Makefile-based compilation</li>
              <li>Optional Makefile generation</li>
              <li>Recognition of error messages from most popular Fortran compilers</li>
            </ul>

            <p><small><small><i>* A project must explicitly have analysis support
            enabled for these features to work.  See the Photran documentation for
            more information.</i></small></small></p>
            
            <p>Photran is a component of the
            <a target="_blank" href="http://www.eclipse.org/ptp">Eclipse Parallel Tools Platform (PTP)</a>.
  </div>
 </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);
?>
