<?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:
 *    Christopher Guindon (Eclipse Foundation)
 *    Denis Roy (Eclipse Foundation)
 *******************************************************************************/

  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());

  $pageTitle = "Eclipse Membership";
  $pageKeywords = "eclipse membership, become a member, membership faq, membership explre";
  $pageAuthor = "Christopher Guindon";

  // Custom theme variables
  $variables = array();
  $show_modal = TRUE;
  $hide_tips = TRUE;
  $hide_membership = TRUE;
  $hide_become = TRUE;

  // Place your html content in a file called content/en_pagename.php
  ob_start();
  include("content/en_" . $App->getScriptName());
  $html = ob_get_clean();

  # Generate the web page
  $App->PageRSS = "/projects/reviews-rss.php";
  $App->AddExtraHtmlHeader('<link type="text/css" href="assets/css/becomemember.min.css" rel="stylesheet"/>');
  $App->generatePage($theme, $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
