<?php

/*******************************************************************************
 * Copyright (c) 2010,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:
 *    Nathan Gervais (Eclipse Foundation)- Ganymede Landing Page
 *******************************************************************************/

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();
$theme = "Phoenix";
include ($App->getProjectCommon()); // All

$pageTitle = "Pulsar - Eclipse Mobile Tools Platform";
$pageKeywords = "eclipse pulsar, mobile, working group";
$pageAuthor = "Eclipse Foundation, Inc.";

// Add page-specific Nav bars here
// Format is Link text, link URL (can be http://www.someothersite.com/), target
// (_self, _blank)
// $Nav->addCustomNav("My Link", "mypage.php", "_self");
// $Nav->addCustomNav("Google", "http://www.google.com/", "_blank");

// End: page-specific settings
//
include ('newsfeeds.php');
$nokia = rss_to_small_news_html("/home/data/httpd/writable/community/pulsar/nokia.rss", 2);
// $nokia = @ rss_to_small_news_html("nokia.rss",2);
$motorola = rss_to_small_news_html("/home/data/httpd/writable/community/pulsar/motodev.rss", 2);
// Place your html content in a file called content/en_pagename.php
ob_start();
?>
<div id="fullcolumn" class="galileo">

  <div id="midcolumn">
    <div id="banner">
      <img src='devices.png' />
    </div>
    <p class="description">Pulsar is a tools integration platform for the
      mobile developer. It makes it easy to get the tools and handset SDKs
      you need for developing mobile applications.</P>
    <div class="homeitem">
      <div class="block">
        <div class="image">
          <a href="quickinstall/"><img
            src="http://dev.eclipse.org/huge_icons/emblems/emblem-symbolic-link.png" /></a>
        </div>
        <div class="text">
          <h4>
            <a href="quickinstall/">Getting Started</a>
          </h4>
          <p>Look here to get up to speed on Pulsar</p>
        </div>
      </div>
      <div class="block">
        <div class="image">
          <a
            href="http://www.eclipse.org/downloads/packages/pulsar-mobile-developers/heliossr1"><img
            src="http://dev.eclipse.org/huge_icons/actions/go-bottom.png" /></a>
        </div>
        <div class="text">
          <h4>
            <a
              href="http://www.eclipse.org/downloads/packages/pulsar-mobile-developers/heliossr1">Download
              Pulsar</a>
          </h4>
          <p>Download the Pulsar Package</p>
        </div>
      </div>
      <div class="block">
        <div class="image">
          <a href="http://live.eclipse.org/node/682"><img
            src="http://dev.eclipse.org/huge_icons/mimetypes/x-office-presentation.png" /></a>
        </div>
        <div class="text">
          <h4>
            <a href="http://live.eclipse.org/node/682">Webinars</a>
          </h4>
          <p>Check out the MTJ Webinar</p>
        </div>
      </div>
      <div class="block">
        <div class="image">
          <a href="./support.php"><img
            src="http://dev.eclipse.org/huge_icons/apps/system-users.png" /></a>
        </div>
        <div class="text">
          <h4>
            <a href="./support.php">Pulsar Support</a>
          </h4>
          <p>Looking for help with Pulsar?</p>
        </div>
      </div>

    </div>
  </div>
  <div id="rightcolumn">

    <div class="sideitem">
      <a href="http://developer.motorola.com/"><img src="motodev.png" /></a>
      <div class="modal noBG">
          <?=$motorola;?>
        </div>
    </div>
    <div class="sideitem">
      <a href="http://www.blackberry.com/developers"><img
        src="blackberry.gif" /></a>
      <div class="modal noBG">
        <ul>
          <li class=""><a
            href="http://na.blackberry.com/eng/developers/resources/"
            class="link">Resources</a><br /> <span class="posted">2009/04/30</span>
          </li>
          <li class=""><a
            href="http://na.blackberry.com/eng/developers/javaappdev/ "
            class="link">Java Application Development</a><br /> <span
            class="posted">2009/04/30</span></li>
        </ul>
      </div>
    </div>
    <div class="sideitem">
      <a href="http://www.forum.nokia.com/"><img src="forumnokia.gif" /></a>
      <div class="modal noBG">
          <?=$nokia;?>
        </div>
    </div>
  </div>
</div>
<?
$html = ob_get_clean();
// Generate the web page
$App->Promotion = TRUE;
$App->AddExtraHtmlHeader('<link type="text/css" href="style.css" rel="stylesheet"/>');
$App->generatePage("Nova", $Menu, NULL, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>