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

      <p class=bar>Documents</p>
        <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>

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

      <p class=bar>Related Documents</p>
        <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);
?>
