<?php
/*******************************************************************************
 * Copyright (c) 2005,2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Eric Poirier (Eclipse Foundation) - initial API and implementation
 *
 *******************************************************************************/

  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");
  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/membership/editMembership.class.php");

  $App = new App();
  $Nav = new Nav();
  $Menu = new Menu();
  $EditMembership = New EditMembership();
  include($App->getProjectCommon());
  $App->preventCaching();

  # Begin: page-specific settings.  Change these.
  $pageTitle  = "Edit ". $EditMembership->getMemberName() ." Membership Page";
  $pageKeywords = "Edit Eclipse Membership profile page";
  $pageAuthor = "Eric Poirier";

  $include_file = $App->getScriptName();
  ob_start();
  print $EditMembership->outputPage();
  $html = ob_get_clean();

  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/breadcrumbs.class.php");
  $Breadcrumb = new Breadcrumb();
  # remove last crumb since it represents this _projectCommon page.
  $Breadcrumb->removeCrumb($Breadcrumb->getCrumbCount() -1);
  $Breadcrumb->addCrumb("Eclipse Membership", "/membership/exploreMembership.php", "_self");
  $Breadcrumb->addCrumb($EditMembership->getMemberName(), NULL, NULL);

  # Generate the web page
  $App->generatePage("solstice", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html, $Breadcrumb);