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