<?php
/**
 * Copyright (c) 2014, 2018 Eclipse Foundation.
 *
 * 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:
 *   Christopher Guindon (Eclipse Foundation) - Initial implementation
 *   Mike Milinkovich (Eclipse Foundation)
 *   Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */

require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");

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

$pageTitle  = "Explore our Working Groups";
$Theme->setPageTitle($pageTitle);
$Theme->setTitle("Explore Our Working Groups");
$Theme->setPageKeywords("eclipse, working, groups");
$Theme->setPageAuthor("Christopher Guindon");

include_once 'assets/inc/app.php';

ob_start();
?>
<div class="jumbotron featured-jumbotron margin-bottom-0">
  <div class="container">
    <div class="row">
      <div class="col-md-22 col-md-offset-1 col-sm-20 col-sm-offset-2">
        <h1><?php print $pageTitle; ?></h1>
        <p>Eclipse Working Groups allow organizations to combine the best practices of open source development with a set of services required for open innovation, enabling organizations to foster industry collaborations.</p>
        <ul class="hidden-xs list-inline margin-top-30">
          <li><a class="btn btn-primary" href="https://accounts.eclipse.org/contact/membership">Become a Member</a></li>
          <li><a class="btn btn-primary" href="/org/workinggroups/about.php">About Working groups</a></li>
        </ul>
        <ul class="visible-xs list-inline margin-top-30">
          <li class="col-xs-20 col-xs-offset-2"><a class="btn btn-primary btn-wide" href="https://accounts.eclipse.org/contact/membership">Become a Member</a></li>
          <li class="col-xs-20 col-xs-offset-2"><a class="btn btn-primary btn-wide" href="/org/workinggroups/about.php">About Working Groups</a></li>
        </ul>
      </div>
    </div>
  </div>
</div>
<?php
$extra_header_html = ob_get_clean();
$Theme->setExtraHeaderHtml($extra_header_html);

ob_start();
include("content/en_" . $App->getScriptName());
$html = ob_get_clean();

$Theme->setHtml($html);
$Theme->setAttributes('header-wrapper', 'header-default-bg-img');
$App->AddExtraJSFooter('<script type="text/javascript" src="/org/workinggroups/assets/js/workinggroup.js"></script>');
$Theme->generatePage();