<?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());
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Dynamic Languages Toolkit Sources";
	$pageKeywords	= "dltk, tcl, ruby, python, javascript, languages, eclipse, ide";
	$pageAuthor		= "Alex Panchenko";
	# End: page-specific settings
	# 
		
	ob_start();
?>

<div id="maincontent">
	<div id="midcolumn">
		<h1><?=$pageTitle?></h1>
<h2>Source Repositories</h2>
<p>All DLTK development is carried out in these <a href="http://git.eclipse.org/c/dltk">git repositories</a>.</p>

<p>See <a href="http://wiki.eclipse.org/Git">Eclipse Git</a> page for information how to use Eclipse Git repositories.</p>

<p>Also, DLTK repositories are mirrored at GitHub:
<ul>
<?
$GitHubRepos = array("core", "javascript", "tcl", "ruby", "python");
foreach ($GitHubRepos as $repo) {
	$name = "dltk.".$repo;
	$link = "https://github.com/eclipse/".$name;
	print "<li><a href=\"$link\">$name</a></li>";
}
?>
</ul>
</p>

<hr class="clearer" />
</div>
<? include("_rightColumn.php"); ?>
</div>
<?
	$html = ob_get_contents();
	ob_end_clean();
	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
