<?php  																														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());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# sources.php
	#
	# Author: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Portals";
	$pageKeywords	= "eclipse portals, blogs, aggregators, wiki";
	$pageAuthor		= "Denis Roy";
	
	include("portals_listings.php");	

	# Paste your HTML content between the EOHTML markers!	
	ob_start();
?>
<div id="maincontent">
	<div id="midcolumn">
		<h1><?=$pageTitle;?></h1>

      	<p>The page is about finding more information about Eclipse from around 
        the Eclipse community. The community has provided many blogs, wikis, 
        and websites that are dedicated to Eclipse and can help you to make the 
        most of the Eclipse platform and tools. <br/>
      	</p>

<a id="links"></a><br />
<div class="homeitem3col">
	<a id="portals"></a><h3>Links to Eclipse Portals</h3>
<table border="0" cellspacing="5" cellpadding="2" width="100%" >
  <tr>
  	<td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td><b>Planet Eclipse</b> - <a href="http://planeteclipse.org/" target="_blank">http://planeteclipse.org/</a>
      - Planet Eclipse, hosted by the Eclipse Foundation, is a news aggregator 
      for those who share an enthusiasm for Eclipse and the Eclipse community.<br />
    </td>
  </tr>
   <tr>
  	<td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td><b>Eclipse Marketplace</b> - <a href="http://marketplace.eclipse.org" target="_blank">http://marketplace.eclipse.org</a>
      - Eclipse Marketplace, hosted by the Eclipse Foundation, offers the Eclipse community a convenient, information-rich portal that helps software developers find open source and commercial Eclipse plug-ins, tools and products that enhance the entire software development life-cycle.<br />
    </td>
  </tr> 
  <tr>
  	<td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>    
     <td><b>Eclipse YouTube Channel</b> - <a href="http://www.youtube.com/user/EclipseFdn" target="_blank">http://www.youtube.com/user/EclipseFdn</a>
       - The Eclipse YouTube Channel, managed by the Eclipse Foundation, features videos from its members, community, Industry Working Groups, and Eclipse events (including EclipseCons), and much more.<br />
    </td>
  </tr>
    <tr>
  	<td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td> 
     <td><b>Eclipse Tutorials</b> - <a href="http://del.icio.us/tag/eclipse%2Btutorials" target="_blank">http://del.icio.us/tag/eclipse+tutorials</a>
     - Bookmarked Eclipse tutorials on Delicious.com.<br />
    </td>
  </tr>
  <tr>
  	<td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>    
     <td><b>Equinox Portal</b> - <a href="/equinox-portal/" target="_blank">http://www.eclipse.org/equinox-portal</a>
       - The Equinox community is building new and interesting technology that makes it easier to create, extend and assemble innovative software.<br />
    </td>
  </tr>
</table>
</div>

<div class="homeitem3col">
<a id="Community"></a><h3>Community Sites</h3>
<table border="0" cellspacing="5" cellpadding="2" width="100%" >

<? 
// This is rendered from code in portals_listings.php in this directory -- so the data can be reused on membership pages.
foreach (communityList() as $value) { 
?>

  <tr>
  	<td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td><b><?=$value[0]?></b> - <a href="<?=$value[1]?>" target="_blank"><?=$value[1]?></a><br />
     <?=$value[2]?> </td>
  </tr>
  
 <? } ?> 


</table>
</div>




<div class="homeitem3col">
<a id="user"></a><h3>User Communities </h3>
<table border="0" cellspacing="5" cellpadding="2" width="100%" >
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td><b>Regional Eclipse Communities</b> - <a href="http://wiki.eclipse.org/Regional_Communities#LIST_OF_REGIONAL_COMMUNITIES" target="_blank">http://wiki.eclipse.org/Regional_Communities</a><br />
      A wiki page listing groups of people located in the same geographic area that have a keen interest in using and contributing to
      Eclipse. </td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>

    <td><b>Eclipse Italian Community </b>- <a href="http://eclipse.dis.unina.it" target="_blank">http://eclipse.dis.unina.it</a> 
      <br />A bilingual (Italian and English) website created by the University of Napoli Federico II to foster collaboration in
      		the Eclipse community in Italy and Europe. 
      </td>
  </tr> 
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td><b>SIG Eclipse </b> - The Java User Group Stuttgart (<a href="http://www.jugs.de/index.html" target="_blank">JUGS</a>) 
      SIG Eclipse - <a href="http://www.jugs.de/sig-eclipse.html" target="_blank">http://www.jugs.de/sig-eclipse.html</a><br />
      In der SIG Eclipse dreht sich alles um Eclipse. Eclipse als Entwicklungsumgebung, 
      Eclipse als Rich Client Plattform, weitere Eclipse Projekte wie EMF, GEF 
      usw.
      </td>
  </tr> 
</table>
</div>

<div class="homeitem3col">
<a id="foreign"></a><h3>Foreign Language Sites</h3>
<table border="0" cellspacing="5" cellpadding="2" width="100%">
  <tr> 
    <td align=RIGHT width="3%" height="21"><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" align="bottom"  border="0"></td>
    <td width="97%">Chinese: <b>Eclipse-China Community</b> - <a href="http://eclipse-china.github.io" target="_blank">http://eclipse-china.github.io</a> 
      <br />
      A Chinese Eclipse community site.</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Chinese: <b>Chinese Eclipse Community</b> (CEC) - <a href="http://www.eclipseworld.org" target="_blank">http://www.eclipseworld.org</a> 
      <br />
      A professional Eclipse website that can help people using and developing 
      Eclipse plugins in China.</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Danish: <b>Eclipse.dk</b> - <a href="http://eclipse.dk/" target="_blank"> 
      http://eclipse.dk/</a> <br />
      A Danish Eclipse community site.
	</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>French: <b>eclipseTotale</b> - <a href="http://www.eclipsetotale.com/index.html" target="_blank">http://www.eclipsetotale.com/index.html</a><br />
      A French website dedicated to Eclipse and Websphere </td>
  </tr>   
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>German: <b>Eclipse Plug-in Collection, Eclipse Magazin </b> - <a href="http://www.eclipse-magazin.de/plugins/" target="_blank">http://www.eclipse-magazin.de/plugins/</a><br />
      Eine Uebersicht ueber Eclipse Plug-ins erscheint im <i>Eclipse Magazin</i>.</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>German: <b>EclipseProject.de</b> - <a href="http://www.eclipseproject.de/" target="_blank">http://www.eclipseproject.de/</a> 
      <br />
      A German language site created by the German Eclipse User Community, that 
      includes news, forums, links and FAQs.</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Japanese: <b>Eclipse Japan</b> - <a href="http://www.eclipsewiki.net/eclipse/" target="_blank">http://www.eclipsewiki.net/eclipse/</a> 
      <br />
      A Japanese wiki on Eclipse!</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Japanese: <b>Eclipse-ml</b> - <a href="http://www.egroups.co.jp/group/eclipse-ml" target="_blank"> 
      http://www.egroups.co.jp/group/eclipse-ml</a> <br />
      A mailing list in Japanese dedicated to Eclipse</td>
  </tr>  
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Japanese: <b>Nomura Research Institute, Ltd</b> - <a href="http://works.nri.co.jp/service/documents.html" target="_blank">http://works.nri.co.jp/service/documents.html</a> 
      <br />
      A website offering Japanese documents for developers. Topics include not 
      only Eclipse, but also various plug-ins.</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Korean: <b>JLab</b> - <a href="http://www.jlab.net/" target="_blank">http://www.jlab.net/</a> 
      <br />
	A Korean language website built by the Korean Eclipse User Community.</td>
  </tr>
  <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Korean: <b>Korean Eclipse Plug-in Developer Community</b> - <a href="http://cafe.naver.com/eclipseplugin.cafe" target="_blank">http://cafe.naver.com/eclipseplugin.cafe</a> 
      <br />
	  The Korean Eclipse Plug-in Developer Community has an active community hoping to launch some useful plug-in projects.</td>
  </tr>  
   <tr> 
    <td><img src="/eclipse.org-common/themes/Phoenix/images/arrow.gif" alt="arrow icon"/></td>
    <td>Spanish: <b>Platforma Eclipse</b> - <a href="http://plataformaeclipse.com/" target="_blank">http://plataformaeclipse.com/</a> 
      <br />
      A Spanish community site for online manuals and tutorials about Eclipse.</td>
  </tr>    
  </table>
</div>
</div>
</div>
<div id="rightcolumn">
	<div class="sideitem"><h6>Quick Links</h6>
	<ul>
		<li><a href="#portals">Links to Eclipse Portals</a></li>
		<li><a href="#Community">Community Sites</a></li>
		<li><a href="#user">User Communities</a></li>
		<li><a href="#foreign">Foreign Language Sites</a></li>
	</ul>
	</div>
</div>
<?
	$html = ob_get_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>

