<?php
/*******************************************************************************
 * Copyright (c) 2014 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Anne Haugommard (Atos) - Initial implementation
 *******************************************************************************/

	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());	
	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/gendoc/public/css/pages.css" media="screen"/><link rel="shortcut icon" href="/gendoc/public/images/favicon.ico" />');
#	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="styles.css"/>' . "\n\t");
#	$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="_styles.css"/>' . "\n\t");

  $variables['hide_breadcrumbs'] = true;
  $App->setThemeVariables($variables);
	
	#### Project dependant variables ####
	$projectTitle = "Gendoc";
	$pageTitle = "Gendoc";
	$pageAuthor = "Anne Haugommard";
	$pageKeywords = "Gendoc, documentation, tutorial";

	
	$html = <<<EOHTML
			<div id="midcolumn">
			<h2> Documentation </h2>
			</br>
			<ul>
			<li> <b>Getting started</b> : see dedicated section in <a href='https://wiki.eclipse.org/gendoc'>Wiki</a> </li>
			<li> Download <a href="Gendoc_v0.7_tutorial.pdf"> Gendoc v0.7 tutorial as PDF.</a></li>
			<li> Download <a href="Gendoc_v0.6_tutorial.pdf"> Gendoc v0.6 tutorial as PDF.</a></li>
			<li> Download <a href="Gendoc_v0.5_tutorial.pdf"> Gendoc v0.5 tutorial as PDF.</a></li>
			<li> Gendoc scripts are written in  <a href="http://eclipse.org/acceleo/">Acceleo </a> language  and use <a href="http://www.omg.org/spec/OCL/">OCL</a>. </li>
	</ul>
			<br/>
			<h3>Useful links </h3>
			<ul>
			<li><a href="http://wiki.eclipse.org/Acceleo/Acceleo_Operations_Reference">Acceleo operations reference</a> </li>
			</ul>
			</div>
      <div id="rightcolumn">				                  
        <div style="height:100px">				 				                  
        </div>				                  
        <div class="sideitem">					                      
          <h6><center>Incubation Phase</center>                      
          </h6>					                      
          <center>					                          
            <a href="http://www.eclipse.org/projects/what-is-incubation.php">					                              
              <img width="70" border="0" alt="Incubation" src="http://www.eclipse.org/images/egg-incubation.png">					</a>					                      
          </center>				                  
        </div>
      </div>	
EOHTML;
	
	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
