<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation and others.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
require_once (dirname(__FILE__) . "/../eclipse.org-common/system/app.class.php");

$App = new App();
$Theme = $App->getThemeClass();

include ($App->getProjectCommon());

$pageTitle = "Eclipse.org Terms of Use";
$Theme->setPageTitle($pageTitle);
$Theme->setPageKeywords("terms, legal, website, terms of use");
$Theme->setPageAuthor("Mike Milinkovich");

ob_start();
include ("content/en_termsofuse.php");
$html = ob_get_clean();

$Theme->setHtml($html);
$Theme->setNav($Nav);
$Theme->generatePage();