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

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>

    <div class="homeitem3col">
      <h3>Photran 5.0</h3>

      <p>Photran 5.0 was released alongside <a target="_blank" href="http://wiki.eclipse.org/PTP/release_notes/3.0">PTP 3.0</a> on December 5, 2009, and requires Eclipse 3.5 (Galileo) and CDT 6.0.
      A list of new features is available in the <a target="_blank" href="http://wiki.eclipse.org/PTP/new_and_noteworthy/3.0.0#Photran">New &amp; Noteworthy</a>,
      and comprehensive <a target="_blank" href="http://wiki.eclipse.org/PTP/photran/documentation">documentation</a>
      is available.

      <ul>
         <li>If you have not installed Photran before, or if you run into any problems during installation, please read the
             <a href="http://wiki.eclipse.org/PTP/photran/documentation/photran5#Installing_Photran">installation instructions</a>
             from the Photran User's Guide.</a>
         <li>If you are familiar with the installation procedure, Photran is installed from the remote update site<br>
             <b>http://download.eclipse.org/tools/ptp/releases/galileo</b>
      </ul>

      <p>Please also join the <b><a href="https://dev.eclipse.org/mailman/listinfo/photran">Photran mailing list</a></b>;
      if you have any problems installing or using Photran, that is a great place to ask for help.
    </div>

    <p>&nbsp;
    <p><small>Old versions are available in the <a href="download-archive.php">Photran Download Archive</a>.</small></p>
 </div>
</div>    
EOHTML;

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