<?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 7.0</h3>

      <p>Photran 7.0 is part of the Eclipse Indigo release train, along with <a target="_blank" href="http://wiki.eclipse.org/PTP/release_notes/5.0">PTP 5.0</a>.
      Eclipse 3.6 (Indigo) was released on June 23, 2010.
      A list of new features is available in the <a target="_blank" href="http://wiki.eclipse.org/PTP/new_and_noteworthy/5.0.0#Photran">New &amp; Noteworthy</a>,
      and comprehensive <a target="_blank" href="http://wiki.eclipse.org/PTP/photran/documentation">documentation</a>
      is available.
      
      <p><b>Photran 7 requires Eclipse 3.7 (Indigo) and CDT 8.0.</b>

      <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/photran7installation">installation instructions</a>.
         <li>If you are familiar with the installation procedure, Photran can be installed from the Eclipse Indigo update site:<br>
             <b>http://download.eclipse.org/releases/indigo</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);
?>
