<?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 		= "Latest 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>Latest Releases</h1>
		<p>
			This page includes information about the latest stable release of Subversive and the Early Access Build with all the latest features.
			
			** Please take a note that as of now the JDT Ignore feature is deprecated and will be removed from the Subversive project update sites. 
			Also please note, that it could be uninstalled without any harmful consequences, which in turn will reduce performance overhead. 
		</p>
		$notes
		<h2>Neon (Eclipse 4.6) Release</h2>
		<p>
			This is the stable Subversive plug-in release that is a part of Eclipse Neon Simultaneous Release. The Subversive plug-in is included into Neon Update Site, so you can install Subversive directly from Eclipse Neon.
		</p>
		<p>
			<b>Release Date:</b> 02 September 2016<br/>
			<b>Version:</b> 4.0.2.I20160902-1700 (<a href="/subversive/changelogs/releasenotes.txt">Release notes</a>)		
		</p>
		<p>
			<b>Update Site:</b><br/>
			The Subversive plug-in is an integral part of the Eclipse Neon update site. To install Subversive, select the Neon 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/4.0/builds/neon/Subversive-4.0.2.I20160902-1700.zip">Subversive-4.0.2.I20160902-1700.zip</a>
		</p>
		<h2>Latest Stable Build</h2>
		<p>
			This is the most up-to-date version of the Subversive plug-in. It's aimed to provide you with access to the latest Subversive features before they become available in the Subversive build included into the yearly Eclipse Simultaneous Release.
		</p>
		<p>
			<b>Release Date:</b> 02 September 2016<br/>
			<b>Version:</b> 4.0.2.I20160902-1700 (<a href="/subversive/changelogs/changelog.txt">Change log</a>)		
		</p>
		<p>
			<b>Update Site:</b><br/>	
			<a href="http://download.eclipse.org/technology/subversive/4.0/update-site/">http://download.eclipse.org/technology/subversive/4.0/update-site/</a>		
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/4.0/builds/Subversive-4.0.2.I20160902-1700.zip">Subversive-4.0.2.I20160902-1700.zip</a>
		</p>	
		<p>
			<b>Previous Release:</b> 01 July 2016<br/>
			<b>Version:</b> 3.0.5.I20160701-1700 (<a href="/subversive/changelogs/changelog.txt">Change log</a>)		
		</p>
		<p>
			<b>Update Site:</b><br/>	
			<a href="http://download.eclipse.org/technology/subversive/3.0/update-site/">http://download.eclipse.org/technology/subversive/3.0/update-site/</a>		
		</p>
		<p>
			<b>Archived Update Site:</b><br/>
			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/3.0/builds/Subversive-3.0.5.I20160701-1700.zip">Subversive-3.0.5.I20160701-1700.zip</a>
		</p>	
		<h2>Requirements</h2>
		<p>
			The latest version of Subversive is compatible with JDK 1.6, Eclipse 4.4 and later versions. It supports SVN versions 1.8-1.9 and migration from SVN 1.1-1.6. Subversive SVN Connectors are available for different platforms. For Windows x86/x64, you can install the JavaHL with corresponding binaries or SVNKit connectors. For other platforms, you have to install the SVNKit connector or if you're installing JavaHL, additionally install a package that contains JavaHL binaries for the platform (check the <a href="/subversive/installation-instructions.php">installation instructions</a>).
		</p>
	</div>
	
	<div id="rightcolumn">
		$sidebar	
	</div>	

EOHTML;
		
/*
		<h2>Early Access</h2>
		<p>
			This is the most up-to-date version of the Subversive plug-in. It's aimed to the integration developers and provides you with access to the latest Subversive features before they become available in the Subversive build included into the yearly Eclipse Simultaneous Release.
		</p>
*/
	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>