<?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'

  #*****************************************************************************
  #
  #
  #****************************************************************************
  
  #
  # Begin: page-specific settings.  Change these. 
  $pageTitle     = "Orbit Documents";
  $pageKeywords  = "Orbit, bundles, documents";
  
  # Add page-specific Nav bars here
  # Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
  # $Nav->addNavSeparator("My Page Links",   "downloads.php");
  # $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
  # $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

  # End: page-specific settings
  #
    
  # Paste your HTML content between the markers!  
ob_start();
?>    

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

      <h2>Documents</h2>
        <ul>
          <li><a href="RCP_Chapter20.pdf"><i>Integrating Code Libraries</i></a> A chapter from the <a href="http://eclipsercp.org">Eclipse RCP book</a>.</li>
          <li><a href="http://eclipse.org/proposals/orbit/">The original Orbit project proposal.</a></li>
        </ul>

      <h2>Meeting Minutes</h2>
        <ul>
        <li> <a href="http://wiki.eclipse.org/index.php/Orbit#Meeting_minutes">Meeting Minutes are on the Orbit Wiki.</a></li>
      </ul>

      <h2>Related Documents</h2>
        <ul>
        <li> <a href="http://osgi.org/osgi_technology/download_specs.asp?section=2">OSGi specifications</a></li>
      </ul>
  </div>

<?php
  include $_SERVER['DOCUMENT_ROOT'] . "/orbit/global-links.html";
  include "dir-links.html";
?>

<?php
  $html = ob_get_contents();
  ob_end_clean();

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