<?php
/**
 * Copyright (c) 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:
 *    Donald Smith (Eclipse Foundation) - Initial implementation
 *    Christopher Guindon (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>

<div class="col-xs-24">
  <h1><?php print $pageTitle; ?></h1>
  <table class="table table-striped table-bordered table-hover">
    <tr>
      <th>Title</th>
      <th>Description</th>
      <th class="text-center">URL</th>
    </tr>
    <tr>
      <td>Eclipse News</td>
      <td>Press releases bulletins from the Eclipse Foundation</td>
      <td class="text-center small">
        <a href="//feeds.feedburner.com/eclipse/fnews"><i class="fa fa-rss-square fa-2x orange" aria-hidden="true"></i></a>
      </td>
    </tr>
    <tr>
      <td>Eclipse in the News</td>
      <td>Press Releases about Eclipse</td>
      <td class="text-center small">
        <a href="//feeds.feedburner.com/eclipse/cnews"><i class="fa fa-rss-square fa-2x orange" aria-hidden="true"></i></a>
      </td>
    </tr>
    <!--
    <tr>
      <td>Eclipse Downloads</td>
      <td>See the latest Eclipse Project Releases.</td>
      <td class="text-center small">
        <a href="/downloads/rss.php"><i class="fa fa-rss-square fa-2x orange" aria-hidden="true"></i></a>
      </td>
    </tr>
    -->
    <tr>
      <td>Eclipse Marketplace</td>
      <td>Eclipse Plugins, Bundles and Products Updates.</td>
      <td class="text-center small">
        <a href="https://marketplace.eclipse.org/rss.xml"><i class="fa fa-rss-square fa-2x orange" aria-hidden="true"></i></a>
      </td>
    </tr>
    <tr>
      <td>PlanetEclipse</td>
      <td>Feeds from Planet Eclipse Blogs</td>
      <td class="text-center small">
        <a href="http://planeteclipse.org/planet/rss20.xml"><i class="fa fa-rss-square fa-2x orange" aria-hidden="true"></i></a>
      </td>
    </tr>
    <tr>
      <td>Eclipse Projects</td>
      <td>Eclipse Proposals and Reviews</td>
      <td class="text-center small">
        <a href="/projects/reviews-rss.php"><i class="fa fa-rss-square fa-2x orange" aria-hidden="true"></i></a>
      </td>
    </tr>
  </table>
  <h3>New to RSS?</h3>
  <p>By subscribing to RSS feeds with an RSS reader, you can easily stay up to date with all things Eclipse.<br/>
    Here at Eclipse.org we have a series of RSS news feeds for you to stay updated with all the things happening in the Eclipse Ecosystem.
  </p>
  <p>Looking for a quick way to subscribe to all the feeds? This <a href="/community/news/eclipsefeeds_opml.xml">OPML file</a> can be used to subscribe to all the feeds listed above.</p>
</div>
