<?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";
	$pageKeywords	= "dltk, tcl, ruby, python, javascript, languages, eclipse, ide";
	$pageAuthor		= "Andrey Platov";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	# 
		
	ob_start();
?>

<div id="maincontent">
	<div id="midcolumn">
<?/*
		<div style="float:right">
			<a href="http://download.eclipse.org/technology/dltk/downloads/drops/R1.0/S-1.0M7-200905061301/">1.0M7 Released!</b></a><img style="vertical-align:bottom" src="/images/updated.png"/>
		</div>
*/?>
		<h1><?=$pageTitle?></h1>
		<!--h2>Section title</h2-->
		    <p>Dynamic Languages Toolkit (DLTK) is a tool for vendors, researchers, and end-users who rely on dynamic languages. 
		     DLTK is comprised of a set of extensible frameworks designed to reduce the complexity of building full featured
		     development environments for dynamic languages such as PHP and Perl.</p>
		    <p>Besides a set of frameworks DLTK provides exemplary Tcl, Ruby, Javascript and Python development environments ready to use out of the box.</p>  		
		<div class="homeitem">
			<h3>Schedule</h3>
			<ul>
	            <li>June 26, 2009 - <b>DLTK 1.0</b></li>
			</ul>
			<h3>Quick Links</h3>
			<ul>
				<li><a href="http://wiki.eclipse.org/DLTK_Based_Projects">Products and Projects</a> built on DLTK</li>			
	            <li>See <a href="http://live.eclipse.org/node/548">DLTK 0.95 in action</a> (Video) on Eclipse Live.</li>
	            <li>Read <a href="http://wiki.eclipse.org/A_guide_to_building_a_DLTK-based_language_IDE">Building an IDE with DLTK</a> Guide.</li>
	            <li><a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.dltk/?root=Technology_Project">CVS Repository</a> web interface.
					All DLTK development is carried out in this repository.
					See also Eclipse CVS <a href="http://wiki.eclipse.org/index.php/CVS_Howto">Howto</a>.
				</li>
			</ul>
			<h3>Events</h3>
			<ul>
				<li>DLTK 0.95 released (June 23, 2008). Use <a href="http://download.eclipse.org/technology/dltk/downloads/drops/R0.95/R-0.95-200806230716/">DLTK 0.95 download page</a> or install as a part of <a href="http://www.eclipse.org/ganymede/">Ganymede</a>.</li>
				<li><a href="http://www.eclipsecon.org/2008/?page=sub/&id=270">DLTK Tutorial</a> at EclipseCon 2008, March 17-20, Santa Clara, USA.</li>
				<li>DLTK 0.9 released (June 29, 2007).</li>
				<li><a href="http://www.eclipsecon.org/2007/index.php?page=sub/&id=3721">DLTK Talk</a> at EclipseCon 2007, March 5-8, Santa Clara, USA.</li>
			</ul>
		</div>
		<!--div class="homeitem">
			<h3>News and Events</h3>
			<ul>
				<li>DLTK 0.95 released (June 23, 2008). Use <a href="http://download.eclipse.org/technology/dltk/downloads/drops/R0.95/R-0.95-200806230716/">DLTK 0.95 download page</a> or install as a part of <a href="http://www.eclipse.org/ganymede/">Ganymede</a>.</li>
				<li><a href="http://www.eclipsecon.org/2008/?page=sub/&id=270">DLTK Tutorial</a> at EclipseCon 2008, March 17-20, Santa Clara, USA.</li>
				<li>DLTK 0.9 released (June 29, 2007).</li>
				<li><a href="http://www.eclipsecon.org/2007/index.php?page=sub/&id=3721">DLTK Talk</a> at EclipseCon 2007, March 5-8, Santa Clara, USA.</li>
			</ul>
		</div-->
		<!--div class="homeitem3col">
			<h3>Screencasts. EclipseCon 2007, DLTK Long Talk</h3>
			<ul>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-ruby.mov">Ruby IDE</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-javascript.mov">experimental JavaScript IDE</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-mylar.mov">Mylar Integration</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-javascript-jdt.mov">JDT Integration</a></li>
				<li>Eclipse DLTK <a href="http://media.xored.com/eclipsecon2007/dltk-tcl-debug.wmv">Tcl Debugger and Interactive Console</a></li>
			</ul>
		</div-->
		<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);
?>
