<?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'

	#*****************************************************************************
	#
	# sample_3col.php
	#
	# Author: 		Denis Roy
	# Date:			2005-11-07
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Community Plug-in Sites";
	$pageKeywords	= "plug-in, catalogue, site";
	$pageAuthor		= "Mike Milinkovich";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>$pageTitle</h1>
		<p>Here are some sites that have published listings of eclipse plug-ins.</p>
  		<div class="homeitem3col">
			<h3>Eclipse plug-in sites</h3>
			<blockquote>
			<ul>
				<li><a href="http://www.crionics.com/products/opensource/eclipse/eclipse.html" target="_blank">http://www.crionics.com/products/opensource/eclipse/eclipse.html</a> 
      				<br/>A commercial directory of eclipse plug-ins used by the Crionics Team.
      				</li>
				<li><a href="http://www.eclipse-plugins.info/eclipse/index.jsp" target="_blank">http://www.eclipse-plugins.info/eclipse/index.jsp</a> 
      				<br/>A categorized registry of eclipse plug-ins, created by Urbaan. 
      			</li>
      			<li><a href="http://www.eclipseplugincentral.com" target="_blank">http://www.eclipseplugincentral.com</a> 
      				<br/>An information portal and marketplace for the eclipse ecosystem.
      			</li>
      			<li><a href="http://www.eclipse-magazin.de/plugins/" target="_blank">http://www.eclipse-magazin.de/plugins/</a> 
      				<br/>An Eclipse Plug-in Collection from the publishers of Eclipse Magazin
      			</li>
				<li><a href="http://www.eclipse-workbench.com/jsp/plugins.jsp" target="_blank">http://www.eclipse-workbench.com/jsp/plugins.jsp</a> 
      				<br/>A directory of eclipse plug-ins, by eclipse-workbench.com.
      			</li>
      			<li><a href="http://www.improve-technologies.com/pages/Java/IDE/Eclipse/Plug-ins/index.html" target="_blank">http://www.improve-technologies.com/pages/Java/IDE/Eclipse/Plug-ins/index.html</a> 
      				<br/>A French language directory of eclipse plug-ins, by improve-technologies.
      			</li>
      			<li><a href="https://swww.uib.es/guia/tools/Branch.guide?w_dir_codigo=23e1a3824312961a0105a8c983bb0d69" target="_blank">Eclipse Plugins</a> 
      				<br/>The JavaTools Project Directory of Eclipse Plug-ins.
      			</li>
      			<li><a href="http://eclipse.jsurfer.org" target="_blank">http://eclipse.jsurfer.org</a> 
      				<br/>A community based website dedicated to Java and Java IDEs.
      			</li>      			
      			<li><a href="http://www.oneclipse.com" target="_blank">http://www.oneclipse.com</a>
      				<br/>OnEclipse includes forums, plugin listings and their first 'visual' tutorial 
      				<i>Essential Eclipse</i>. 
      			</li>
			</ul>
			</blockquote>
		</div>		
	</div>
		<div id="rightcolumn">
		<div class="sideitem">
			<h6>Related Links</h6>
			<ul>
				<li><a href="pluginsites.php">Community Plug-in Sites</a></li>
				<li><a href="commercialplugins.php">Commercial Projects and Plug-ins</a></li>
				<li><a href="osplugins.php">Open Source Projects and Plug-ins</a></li>
				<li><a href="team.php">Team Repository providers</a></li>
			</ul>
		</div>
	</div>
EOHTML;


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