<?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("../_projectCommon.php");    # All on the same line to unclutter the user's desktop'

$pageTitle 		= "Login to Member Only Content";


ob_start();
?>
    <div id="maincontent">
	<div id="midcolumn">

<h1><?=$pageTitle;?></h1>

<p>You must login to the <a href="http://portal.eclipse.org/">Eclipse Foundation Portal</a> to access
<a href="https://dev.eclipse.org/members-only/index.php">members only content</a>. If you were redirected here,
it means you need to login!</p>

<p> If you are
a committer or company representative of some kind, and already have a portal account - simply go to the
<a href="http://portal.eclipse.org/">Eclipse Foundation Portal Login Page</a> and login.  If you have a portal account
but forget your user ID or password, you can <a href="./resetPortalPassword.php">reset your portal password</a>.
</p>

<p>If you do not have a Portal Account, you have two options:
</p>

<p>If you are a committer or a company representative, delegate, marketing contact or should have some other relationship with the
Eclipse Foundation, please <a href="./resetPortalPassword.php">request a Portal Account</a>.
</p>

<p>In any other case, if you work for a member company or are a full-time-equivalent of a member company,
you can login to the <a href="http://portal.eclipse.org/">Eclipse Foundation Portal</a> using an Eclipse.org
username and password!  Simply <a href="https://dev.eclipse.org/site_login/createaccount.php">create a new account</a> -
and your account will automatically be authenticated as a member based on your email address (please
use your work based email account).
<ul>
<li>Step 1 - <a href="https://dev.eclipse.org/site_login/createaccount.php">Create an Eclipse.org account</a></li>
<li>Step 2 - Go to the <a href="http://portal.eclipse.org/">Eclipse Foundation Portal</a> login page. </li>
<li>Step 3 - Enter your email address and password</li>
<li>Step 4 - Access the <a href="https://dev.eclipse.org/members-only/index.php">members only content</a> page.</li>
</ul>
</p>

</div> <!-- midcolumn -->
</div> <!-- maincontent -->

<?php
	# Paste your HTML content between the EOHTML markers!
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage(NULL, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>