<?php
	set_include_path($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common" . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . "/projects" . PATH_SEPARATOR . get_include_path());
	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());
	
	$localVersion = false;
	
	# Define these here, or in _projectCommon.php for site-wide values
	$pageTitle 		= "Previous Releases - Eclipse Subversive";
	$pageKeywords	= "subversive, download, svn, subversion";
	$pageAuthor		= "Igor Vinnykov";
	
	$sidebar = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/subversive/sidebars/download.php");	
	$notes = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/subversive/include/installation-notes.php");	
	
	// 	# Paste your HTML content between the EOHTML markers!
$html = <<<EOHTML

	<div id="midcolumn">
		<h1>Previous Releases</h1>
		<p>
			Here you can find a list of Subversive builds for previous Eclipse Simultaneous Releases.
		</p>
		$notes
		<h2>Subversive 1.x.x to 2.0.0 Upgrade Notes</h2>
		<p>
			If need to update Subversive from 1.x.x to the 2.0.0 version, uninstall the previously installed Subversive 1.x.x plug-in version first. Otherwise during the installation process you'll be blocked by the old connectors version that is incompatible with the 2.0.0 release and couldn't be installed simultaneously with the main plug-in due to the installation UI restrictions.
		</p>		
		<h2>Kepler (Eclipse 4.3) Release</h2>
		<p>
			This is the stable Subversive plug-in release that is a part of Eclipse Kepler Simultaneous Release. The Subversive plug-in is included into Kepler Update Site, so you can install Subversive directly from Eclipse Kepler.
		</p>
		<p>
			<b>Release Date:</b> 06 February 2014<br/>
			<b>Version:</b> 1.1.3.I20140206-1700 (<a href="/subversive/changelogs/releasenotes-kepler.txt">Release notes</a>)
		</p>
		<p>
			<b>Update Site:</b><br/>
			The Subversive plug-in is an integral part of the Eclipse Kepler update site. To install Subversive, select the Kepler update site in Eclipse Update Manager, then select the Subversive features under the Collaboration section of the update site (check the <a href="/subversive/installation-instructions.php">installation instructions</a>).
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/1.1/builds/juno/Subversive-1.1.3.I20140206-1700.zip">Subversive-1.1.3.I20140206-1700.zip</a>
		</p>
		<h2>Juno (Eclipse 3.8/4.2) Release</h2>
		<p>
			This is the stable Subversive plug-in release that is a part of Eclipse Juno Simultaneous Release. The Subversive plug-in is included into Juno Update Site, so you can install Subversive directly from Eclipse Juno.
		</p>
		<p>
			<b>Release Date:</b> 22 January 2013<br/>
			<b>Version:</b> 1.0.0.I20130122-1700 (<a href="/subversive/changelogs/releasenotes-juno.txt">Release notes</a>)
		</p>
		<p>
			<b>Update Site:</b><br/>
			The Subversive plug-in is an integral part of the Eclipse Juno update site. To install Subversive, select the Juno update site in Eclipse Update Manager, then select the Subversive features under the Collaboration section of the update site (check the <a href="/subversive/installation-instructions.php">installation instructions</a>).
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/1.0/builds/juno/Subversive-1.0.0.I20130122-1700.zip">Subversive-1.0.0.I20130122-1700.zip</a>
		</p>
	</div>
	
	<div id="rightcolumn">
        $sidebar		
	</div>	

EOHTML;
		

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