<?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>CVS Repository</h2>
<p>All DLTK development is carried out in this repository:</p>
<ul>
<li><code>:pserver:dev.eclipse.org:/cvsroot/technology</code></li>
<li><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.dltk/?root=Technology_Project">Web interface</a></li>
</ul>
<p>See also Eclipse <a href="http://wiki.eclipse.org/index.php/CVS_Howto">CVS Howto</a>.</p>

<h2>Modules</h2>
<table class="dltk-sourcecontrol-modules">

<tr>
<th>Core</th>
<td><ul>
<li>/org.eclipse.dltk/core/plugins/*</li>
</ul></td>
</tr>

<tr>
<th>Ruby</th>
<td><ul>
<li>/org.eclipse.dltk/ruby/plugins/*</li>
</ul></td>
</tr>

<tr>
<th>Tcl</th>
<td><ul>
<li>/org.eclipse.dltk/tcl/plugins/*</li>
<li>/org.eclipse.dltk/itcl/plugins/*</li>
<li>/org.eclipse.dltk/xotcl/plugins/*</li>
</ul></td>
</tr>

<tr>
<th>JavaScript</th>
<td><ul>
<li>/org.eclipse.dltk/javascript/plugins/*</li>
</ul></td>
</tr>

<tr>
<th>Python</th>
<td><ul>
<li>/org.eclipse.dltk/python/plugins/*</li>
</ul></td>
</tr>

</table>
 
<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);
?>
