Bug 408143 Migrate website to git (initial clone from query)
diff --git a/.project b/.project
new file mode 100644
index 0000000..5812651
--- /dev/null
+++ b/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>emf-validation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/_projectCommon.php b/_projectCommon.php
new file mode 100644
index 0000000..f0d0561
--- /dev/null
+++ b/_projectCommon.php
@@ -0,0 +1,77 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009, 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Eclipse Foundation - Initial version
+* Anthony Hunter - changes for EMF Query
+********************************************************************************/
+$Nav->setLinkList(null);
+
+$projectname = "emf-query";
+$projectdisplayname = "EMF Query";
+$modelingprojectname = "modeling";
+$topprojectname = "emf";
+$shortprojectname = "query";
+
+$debug = (isset ($_GET["debug"]) && preg_match("/^\d+$/", $_GET["debug"]) ? $_GET["debug"] : -1);
+
+include_once($_SERVER["DOCUMENT_ROOT"] . "/emf-query/downloads/scripts.php");
+
+$regs = null;
+$buildtypes = array(
+ "R" => "Release",
+ "S" => "Stable",
+ "I" => "Integration",
+ "M" => "Maintenance",
+ "N" => "Nightly"
+);
+
+# Set the theme for your project's web pages.
+# See http://eclipse.org/phoenix/
+$theme = "Nova";
+
+# Define your project-wide Navigation here
+# This appears on the left of the page if you define a left nav
+# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
+# these are optional
+
+# If you want to override the eclipse.org navigation, uncomment below.
+# $Nav->setLinkList(array());
+
+# Break the navigation into sections
+$Nav->addNavSeparator("EMF Query", "/emf-query");
+$Nav->addCustomNav("Downloads", "/emf-query/downloads.php", "_self", 3);
+$Nav->addCustomNav("Documentation", "/emf-query/documentation.php", "_self", 3);
+$Nav->addCustomNav("Wiki", "http://wiki.eclipse.org/EMF", "_self", 3);
+$Nav->addCustomNav("Support", "/emf-query/support.php", "_self", 3);
+$Nav->addCustomNav("Newsgroup", "http://dev.eclipse.org/newslists/news.eclipse.modeling.emf/maillist.html", "_self", 3);
+$Nav->addCustomNav("Mailing List", "https://dev.eclipse.org/mailman/listinfo/emf-dev", "_self", 3);
+$Nav->addCustomNav("Modeling Corner", "http://wiki.eclipse.org/Modeling_Corner", "_self", 3);
+
+# Define keywords, author and title here, or in each PHP page specifically
+$pageKeywords = "eclipse, emf, emf query";
+$pageAuthor = "Anthony Hunter";
+
+# top navigation bar
+# To override and replace the navigation with your own, uncomment the line below.
+$Menu->setMenuItemList(array());
+$Menu->addMenuItem("Eclipse", "/", "_self");
+$Menu->addMenuItem("EMF Query", "/emf-query", "_self");
+$Menu->addMenuItem("Downloads", "/emf-query/downloads.php", "_self");
+$Menu->addMenuItem("Documentation", "/emf-query/documentation.php", "_self");
+$Menu->addMenuItem("About", "http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emf.emf-query", "_self");
+
+# To define additional CSS or other pre-body headers
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/emf-query/style.css"/>');
+
+# To enable occasional Eclipse Foundation Promotion banners on your pages (EclipseCon, etc)
+$App->Promotion = TRUE;
+
+# If you have Google Analytics code, use it here
+# $App->SetGoogleAnalyticsTrackingCode("YOUR_CODE");
+?>
\ No newline at end of file
diff --git a/description.html b/description.html
deleted file mode 100644
index 10edabc..0000000
--- a/description.html
+++ /dev/null
@@ -1 +0,0 @@
-This project was just provisioned, so there isn't much to see here. You can find links to the propsal on this page. Stay tuned for great things.
\ No newline at end of file
diff --git a/documentation.php b/documentation.php
new file mode 100644
index 0000000..ef440ae
--- /dev/null
+++ b/documentation.php
@@ -0,0 +1,34 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009, 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Eclipse Foundation - Initial version
+* Anthony Hunter - changes for EMF Query
+********************************************************************************/
+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());
+
+$pageTitle = "EMF Query Documentation";
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/emf-query/style.css"/>');
+
+$html = <<<EOHTML
+<div id="midcolumn">
+<h2>$pageTitle</h2>
+<h3>Reference Documentation</h3>
+<p>Reference information can be found on the <a href="http://www.eclipse.org/modeling/emf/docs/">EMF Documentation</a> page.</p>
+</div>
+EOHTML;
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
diff --git a/downloads.php b/downloads.php
new file mode 100644
index 0000000..1d65d5f
--- /dev/null
+++ b/downloads.php
@@ -0,0 +1,53 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009, 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Eclipse Foundation - Initial version
+* Anthony Hunter - changes for EMF Query
+********************************************************************************/
+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());
+
+$pageTitle = "EMF Query Downloads";
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/emf-query/style.css"/>');
+
+$html = <<<EOHTML
+<div id="midcolumn">
+<h2>$pageTitle</h2>
+<p>All downloads are provided under the terms and conditions of the
+<a href="/legal/epl/notice.php">Eclipse Foundation Software User Agreement</a>
+unless otherwise specified.</p>
+
+<h3>Installation via Eclipse Update Manager</h3>
+<p>Using the Eclipse Update Manager (see <a href="http://help.eclipse.org/juno/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-129.htm">Eclipse Help</a> for detailed instructions) EMF Query can be installed from the following update sites:
+<ul>
+ <li>Releases: <a href="http://download.eclipse.org/modeling/emf/query/updates/releases/">http://download.eclipse.org/modeling/emf/query/updates/releases/</a></li>
+ <li>Milestones: <a href="http://download.eclipse.org/modeling/emf/query/updates/milestones/">http://download.eclipse.org/modeling/emf/query/updates/milestones/</a></li>
+ <li>Integration: <a href="http://download.eclipse.org/modeling/emf/query/updates/interim/">http://download.eclipse.org/modeling/emf/query/updates/interim/</a></li>
+</ul>
+
+<h3>Downloadable P2 Repositories and SDK dropins</h3>
+<p>If you prefer an update-site or an SDK archive, you can download it from <a href="downloads/index.php">here directly</a>.</p>
+
+<h3>Nightly Builds</h3>
+<p>The nightly builds can also be used as a P2 repository. The nightly builds for the Luna simultaneous release can be accessed from <a href="https://hudson.eclipse.org/query/job/emf-query-master/">Hudson</a>.</p>
+
+<h3>Translations</h3>
+<p>Translations packages can be downloaded from the <a href="http://www.eclipse.org/babel/downloads.php">Babel project downloads page</a>.</p>
+
+</div>
+EOHTML;
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
\ No newline at end of file
diff --git a/downloads/downloads-common.php b/downloads/downloads-common.php
new file mode 100644
index 0000000..20cbf08
--- /dev/null
+++ b/downloads/downloads-common.php
@@ -0,0 +1,128 @@
+<?php
+/******************************************************************************
+ * Copyright (c) 2013, 2014 IBM Corporation 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial implementation
+****************************************************************************/
+
+$deps = array(
+ "eclipse" => "<a href=\"http://www.eclipse.org/eclipse/\">Eclipse</a>",
+);
+
+require_once($_SERVER["DOCUMENT_ROOT"] . "/$projectname/downloads/downloads-scripts.php");
+
+$numzips = 0;
+if (isset($dls[$shortprojectname]) && is_array($dls[$shortprojectname]))
+{
+ foreach (array_keys($dls[$shortprojectname]) as $z)
+ {
+ $numzips += sizeof($dls[$shortprojectname][$z]);
+ }
+}
+
+# store an array of paths to hide
+$hiddenBuilds = is_readable($_SERVER["DOCUMENT_ROOT"] . "/$projectname/downloads/hidden.txt") ? file($_SERVER["DOCUMENT_ROOT"] . "/$projectname/downloads/hidden.txt") : array();
+
+// include extras-$projectname.php
+$extras = $_SERVER["DOCUMENT_ROOT"] . "/$projectname/downloads/extras-$projectname.php";
+if (file_exists($extras))
+{
+ include_once($extras);
+}
+
+$hadLoadDirSimpleError = 1; //have we echoed the loadDirSimple() error msg yet? if 1, omit error; if 0, echo at most 1 error
+$sortBy = (isset($_GET["sortBy"]) && preg_match("/^(date)$/", $_GET["sortBy"], $regs) ? $regs[1] : "");
+$showAll = (isset($_GET["showAll"]) && preg_match("/^(1)$/", $_GET["showAll"], $regs) ? $regs[1] : "0");
+$showMax = (isset($_GET["showMax"]) && preg_match("/^(\d+)$/", $_GET["showMax"], $regs) ? $regs[1] : ($sortBy == "date" ? "10" : "5"));
+
+$PWD = "/home/data2/httpd/download.eclipse.org/$modelingprojectname/$topprojectname/$shortprojectname/downloads/drops";
+
+$downloadScript = getdownloadScript();
+$downloadPre = "";
+
+print "<div id=\"midcolumn\">\n";
+print "<h2>$projectdisplayname P2 Repositories & SDK Dropins</h2>\n";
+print "<p>This page provides a bundled P2 repository and different SDK dropins (in runnable form) for each build.</p>";
+
+$branches = loadDirSimple($PWD, ".*", "d");
+rsort($branches);
+$buildTypes = getBuildTypes($branches, $buildtypes);
+
+$builds = getBuildsFromDirs();
+$releases = array();
+if ($sortBy != "date")
+{
+
+ $builds = reorderAndSplitArray($builds, $buildTypes);
+ $releases = $builds[1];
+ $builds = $builds[0];
+}
+else
+{
+ krsort($builds); reset($builds);
+}
+
+print "<div id=\"midcolumn\">\n";
+if (sizeof($builds) == 0 && sizeof($releases) == 0)
+{
+ print "<h2>Builds</h2>\n";
+ print "<ul>\n";
+ if (is_array($projectArray) && !in_array($shortprojectname, $projectArray))
+ {
+ print "<li><i><b>Sorry!</b></i> There are no builds yet available for this component.</li>";
+ }
+ else
+ {
+ print "<li><i><b>Error!</b></i> No builds found on this server!</li>";
+ }
+ print "</ul>\n";
+}
+
+if ($sortBy != "date")
+{
+ doLatest($releases, "Releases");
+
+ $c = 0;
+ foreach ($builds as $branch => $types)
+ {
+ foreach ($types as $type => $IDs)
+ {
+ print "<h3>" . $buildTypes[$branch][$type] . "s</h3>\n";
+ print "<ul>\n";
+ $i = 0;
+ foreach ($IDs as $ID)
+ {
+ print outputBuild($branch, $ID, $c++);
+ $i++;
+
+ if (!$showAll && $i == $showMax && $i < sizeof($IDs))
+ {
+ print showToggle($showAll, $showMax, $sortBy, sizeof($IDs));
+ break;
+ }
+ else if ($showAll && sizeof($IDs) > $showMax && $i == sizeof($IDs))
+ {
+ print showToggle($showAll, $showMax, $sortBy, sizeof($IDs));
+ }
+ }
+ print "</ul>\n";
+ }
+ }
+}
+else if ($sortBy == "date")
+{
+ doLatest($builds, "Builds");
+}
+
+if (isset($oldrels) && is_array($oldrels) && sizeof($oldrels) > 0)
+{
+ showArchived($oldrels);
+ showNotes();
+}
+print "</div>\n";
+?>
diff --git a/downloads/downloads-scripts.php b/downloads/downloads-scripts.php
new file mode 100644
index 0000000..5e3d6d5
--- /dev/null
+++ b/downloads/downloads-scripts.php
@@ -0,0 +1,429 @@
+<?php
+/******************************************************************************
+ * Copyright (c) 2013, 2014 IBM Corporation 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial implementation
+****************************************************************************/
+
+function doLatest($releases, $label = "Releases")
+{
+ #global $rssfeed, $showMax, $showAll, $sortBy;
+ global $showMax, $showAll, $sortBy;
+ if (sizeof($releases)>0)
+ {
+ print "<div class=\"homeitem3col\">\n";
+ #print "<a name=\"latest\"></a><h3>${rssfeed}Latest $label</h3>\n";
+ print "<a name=\"latest\"></a><h3>Latest $label</h3>\n";
+ print "<ul class=\"releases\">\n";
+ $c = 0;
+ foreach ($releases as $rID => $rbranch)
+ {
+ $ID = preg_replace("/^(\d{12})([IMNRS])$/", "$2$1", $rID);
+ $branch = preg_replace("/.$/", "", $rbranch);
+ print outputBuild($branch, $ID, $c++);
+ if (!$showAll && $c == $showMax && $c < sizeof($releases))
+ {
+ print showToggle($showAll, $showMax, $sortBy, sizeof($releases));
+ break;
+ }
+ else if ($showAll && sizeof($releases) > $showMax && $c == sizeof($releases))
+ {
+ print showToggle($showAll, $showMax, $sortBy, sizeof($releases));
+ }
+ }
+ print "</ul>\n";
+ print "</div>\n";
+ }
+}
+
+function reorderAndSplitArray($arr, $buildTypes)
+{
+ // the first dimension's order is preserved (kept as it is in the config file)
+ // sort the second dimension using the IMNRS order in $buildTypes
+ // rsort the third dimension
+
+ $new = array();
+ $rels = array();
+ foreach ($buildTypes as $br => $types)
+ {
+ foreach ($types as $bt => $names)
+ {
+ if ($bt == "R" && isset($arr[$br][$bt]))
+ {
+ $id = $arr[$br][$bt][0];
+ $rels[substr($id,1) . $bt] = $br . $bt;
+ }
+ else if (array_key_exists($br, $arr) && array_key_exists($bt, $arr[$br]) && is_array($arr[$br][$bt]))
+ {
+ $new[$br][$bt] = $arr[$br][$bt];
+ rsort($new[$br][$bt]);
+ }
+ }
+ }
+ return array($new,$rels);
+}
+
+function getBuildsFromDirs() // massage the builds into more useful structures
+{
+ global $PWD, $sortBy;
+
+ $branchDirs = loadDirSimple($PWD, ".*", "d");
+ $buildDirs = array();
+
+ foreach ($branchDirs as $branch)
+ {
+ if ($branch != "OLD")
+ {
+ $buildDirs[$branch] = loadDirSimple("$PWD/$branch", "[IMNRS]\d{12}", "d");
+ }
+ }
+
+ $builds_temp = array();
+ foreach ($buildDirs as $br => $dirList)
+ {
+ foreach ($dirList as $dir)
+ {
+ $ty = substr($dir, 0, 1); //first char
+
+ if ($sortBy != "date")
+ {
+ $builds_temp[$br][$ty][] = $dir;
+ }
+ else
+ {
+ $dttm = substr($dir, 1); // last 12 digits
+ $a = $dttm . $ty;
+ $b = $br . $ty;
+
+ $builds_temp[$a] = $b;
+ }
+ }
+ }
+
+ return $builds_temp;
+}
+
+function getBuildTypes($branches, $buildtypes)
+{
+ $arr = array();
+
+ foreach ($branches as $branch)
+ {
+ foreach (array_keys($buildtypes) as $z)
+ {
+ if (!array_key_exists($branch, $arr))
+ {
+ $arr[$branch] = array();
+ }
+
+ // [2.0][N]
+ $arr[$branch][$z] = "$branch {$buildtypes[$z]} Build";
+ }
+ }
+
+ return $arr;
+}
+
+function IDtoDateStamp($ID, $style) // given N200402121441, return date("D, j M Y -- H:i (O)")
+{
+ $styles = array('Y/m/d H:i', "D, j M Y -- H:i (O)", 'Y/m/d');
+ $m = null;
+ if (preg_match("/(\d{4})(\d\d)(\d\d)(?:_)?(\d\d)(\d\d)/", $ID, $m))
+ {
+ $ts = mktime($m[4], $m[5], 0, $m[2], $m[3], $m[1]);
+ return date($styles[$style], $ts);
+ }
+
+ return "";
+}
+
+function createFileLinks($dls, $PWD, $branch, $ID, $pre2, $filePreProj, $ziplabel = "") // the new way - use a ziplabel pregen'd from a dir list!
+{
+ global $projectname, $suf, $modelingprojectname, $shortprojectname, $filePreStatic;
+ $uu = 0;
+
+ if (!$ziplabel)
+ {
+ $zips_in_folder = loadDirSimple("$PWD/$branch/$ID/", "(\.zip|\.tar\.gz)", "f");
+ $ziplabel = preg_replace("/(.+)\-([^\-]+)(\.zip|\.tar\.gz)/", "$2", $zips_in_folder[0]); // grab first entry
+ }
+
+ $cnt=-1; // for use with static prefix list
+
+ $echo_out_all = "";
+
+ foreach (array_keys($dls[$shortprojectname]) as $z)
+ {
+ $echo_out = "";
+ foreach ($dls[$shortprojectname][$z] as $label => $u)
+ {
+ $cnt++;
+ if (!is_array($u))
+ {
+ $u = $u ? array("$u") : array("");
+ }
+
+ // support a page with three different valid prefixes which can
+ // overlap when searched using dynamic check below
+ if ($filePreStatic && is_array($filePreStatic) && array_key_exists($modelingprojectname,$filePreStatic))
+ {
+ $filePreProj = array($filePreStatic[$modelingprojectname][$cnt]); // just one value to check
+ }
+
+ $tries = array();
+ foreach ($u as $ux)
+ {
+ foreach ($filePreProj as $filePre)
+ {
+ $tries[] = "$branch/$ID/$pre2$filePre$ux-$ziplabel.zip";
+ $tries[] = "$branch/$ID/$filePre$ux-$ziplabel.zip";
+ $tries[] = "$branch/$ID/$pre2$filePre$ux-incubation-$ziplabel.zip";
+ $tries[] = "$branch/$ID/$filePre$ux-incubation-$ziplabel.zip";
+ $tries[] = "$branch/$ID/$ux-$ziplabel.zip";
+ }
+ }
+ $outNotFound = "<i><b>$pre2</b>$filePre";
+ if (sizeof($u) > 1 ) {
+ $outNotFound .= "</i>{"; foreach ($u as $ui => $ux) {
+ $outNotFound .= ($ui>0 ? "," : "") . $ux;
+ } $outNotFound .= "}<i>";
+ }
+ else
+ {
+ $outNotFound .= $u[0];
+ }
+ $outNotFound .= "-$ziplabel ...</i>";
+ $out = "";
+ foreach ($tries as $y)
+ {
+ if (is_file("$PWD/$y"))
+ {
+ $out = fileFound("$PWD/", $y, $label);
+ break;
+ }
+ }
+ if ($out)
+ {
+ $echo_out .= "<li class=\"separator\">\n";
+ $echo_out .= $out;
+ $echo_out .= "</li>\n";
+ }
+ else if (!isset($extraZips) || !is_array($extraZips) || !in_array($filePre . $u[0],$extraZips)) // $extraZips defined in downloads/index.php if necessary
+ {
+ $echo_out .= "<li>\n";
+ $echo_out .= $outNotFound;
+ $echo_out .= "</li>\n";
+ }
+ $uu++;
+ }
+ if ($echo_out) // if the whole category is empty, don't show it (eg., GEF)
+ {
+ $echo_out_all .= "<li><img src=\"/$projectname/images/dl.gif\" alt=\"Download\"/> $z\n<ul>\n" . $echo_out . "</ul>\n</li>\n";
+ }
+ }
+ return $echo_out_all;
+}
+
+function fileFound($PWD, $url, $label, $md5AlignRight = true, $icon = null)
+{
+ global $downloadScript, $downloadPre, $projectname, $modelingprojectname, $topprojectname, $shortprojectname;
+
+ $out = "";
+ $mid = "$downloadPre/$modelingprojectname/$topprojectname/$shortprojectname/downloads/drops/";
+ $md5files = array("$url.md5", preg_replace("#/([^/]+$)#", "/checksum/$1", $url) . ".md5");
+ foreach ($md5files as $md5file)
+ {
+ if (is_file($PWD.$md5file))
+ {
+ $out .= "<span style=\"float:right;\"> " . pretty_size(filesize("$PWD$url")) . " (<a href=\"" . "http://download.eclipse.org" .
+ "$mid$md5file\">md5</a>)</span>"; break;
+ }
+ }
+ #return $md5AlignRight ? $out . "<a href=\"$downloadScript$mid$url\">$label</a>" :
+ # "<a href=\"$downloadScript$mid$url\">$icon</a> <a href=\"$downloadScript$mid$url\">$label</a>" . $out;
+ return "<span style=\"float:left;clear:left;\"><a href=\"$downloadScript$mid$url\">$icon</a> <a href=\"$downloadScript$mid$url\">$label</a></span>" . $out;
+}
+
+function doNLSLinksList($packs, $cols, $subcols, $packSuf, $folder, $isArchive = false)
+{
+ global $downloadScript, $downloadPre, $projectname, $modelingprojectname, $shortprojectname;
+
+ foreach ($packs as $name => $packPre)
+ {
+ foreach ($cols as $alt => $packMid)
+ {
+ print "<li><img src=\"/$projectname/images/dl.gif\" alt=\"$alt\"/> $alt: ";
+ $ret = array();
+ if (sizeof($subcols) > 2)
+ {
+ print "<ul>\n";
+ $cnt = 0;
+ foreach ($subcols as $alt2 => $packMid2)
+ {
+ if ($cnt > 0 && $cnt % 2 == 0)
+ {
+ print "<li>" . join(", ", $ret) . "</li>\n";
+ $ret = array();
+ }
+ $ret[] = "<a href=\"" . ($isArchive ? "http://archive.eclipse.org" : $downloadScript) .
+ "$downloadPre/$projectname/$modelingprojectname/downloads/drops/$folder$packPre$packMid-$packMid2$packSuf\">$alt2</a>";
+ $cnt++;
+ }
+ if (sizeof($ret) > 0)
+ {
+ print "<li>" . join(", ", $ret) . "</li>\n";
+ }
+ print "</ul>\n";
+ }
+ else
+ {
+ foreach ($subcols as $alt2 => $packMid2)
+ {
+ $ret[] = "<a href=\"" . ($isArchive ? "http://archive.eclipse.org" : $downloadScript) .
+ "$downloadPre/$projectname/$modelingprojectname/downloads/drops/$folder$packPre$packMid-$packMid2$packSuf\">$alt2</a>";
+ }
+ print join(", ", $ret);
+ }
+ print "</li>\n";
+ }
+ }
+}
+
+function grep($pattern, $file, $file_cache = null)
+{
+ $filec = $file_cache ? $file_cache : loadFile($file);
+
+ foreach ($filec as $z)
+ {
+ if (preg_match($pattern, $z))
+ {
+ $filec = array();
+ return true;
+ }
+ }
+
+ $filec = array();
+ return false;
+}
+
+function loadFile($file)
+{
+ $maxfilesize = 64*1024; // 64K file limit
+ $filec = array();
+ if (is_file($file) && is_readable($file))
+ {
+ if (filesize($file) < ($maxfilesize))
+ {
+ $filec = file($file);
+ }
+ else
+ {
+ exec("tail -n50 $file", $filec); // just grab the last n lines
+ }
+ }
+
+ return $filec;
+}
+
+function outputBuild($branch, $ID, $c)
+{
+ global $PWD, $dls, $filePre, $modelingprojectname, $sortBy, $shortprojectname, $jdk14testsPWD, $jdk50testsPWD, $jdk60testsPWD, $testsPWD, $deps, $projectname, $hiddenBuilds;
+
+ # suppress hidden builds for public server
+ foreach ($hiddenBuilds as $hb) {
+ if (trim($hb) == "$projectname/$branch/$ID")
+ {
+ debug("Build $projectname/$branch/$ID is hidden, pending mirror replication.", 1);
+ return "";
+ }
+ }
+ $pre2 = (is_dir("$PWD/$branch/$ID/eclipse/$ID/") ? "eclipse/$branch/$ID/" : "");
+
+ $zips_in_folder = loadDirSimple("$PWD/$branch/$ID/", "(\.zip|\.tar\.gz)", "f");
+ $ziplabel = (sizeof($zips_in_folder) < 1) ? $ID :
+ preg_replace("/(.+)\-([^\-]+)(\.zip|\.tar\.gz)/", "$2", $zips_in_folder[0]); // grab first entry
+
+ // generalize for any relabelled build, thus 2.0.1/M200405061234/*-2.0.2.zip is possible; label = 2.0.2
+ $IDlabel = $ziplabel;
+
+ $ret = "<li>\n";
+ $ret .= "<a href=\"javascript:toggle('r$ID')\">" .
+ "<i>" . ($sortBy == "date" && $IDlabel != $branch ? "$branch / " : "") . "$IDlabel</i> " .
+ "(" . IDtoDateStamp($ID, 2) . ")" .
+ "</a>" .
+ "<a name=\"$ID\"></a> " .
+ "<a href=\"?showAll=1&hlbuild=$ID" .
+ ($sortBy == "date" ? "&sortBy=date" : "") .
+ "&project=$shortprojectname#$ID\">" .
+ "<img alt=\"Link to this build\" src=\"/$projectname/images/link.png\"/>" .
+ "</a>" .
+ ((isset($opts["noclean"]) && $opts["noclean"]) || is_dir("$PWD/$branch/$ID/eclipse/$ID") ? doNoclean("$PWD/$branch/$ID") : "");
+
+ $ret .= "<ul id=\"r$ID\"" . (($c == 0 && !isset($_GET["hlbuild"])) || isset($_GET["hlbuild"]) && $ID == $_GET["hlbuild"] ? "" : " style=\"display: none\"") . ">\n";
+
+ if (!isset($filePre[$modelingprojectname]) && isset($filePre["/"]))
+ {
+ $filePre[$modelingprojectname] = $filePre["/"];
+ }
+ if (!isset($filePre[$modelingprojectname]))
+ {
+ $topProj = preg_replace("#.+/(.+)#","$1", $projectname);
+ $filePre[$modelingprojectname] = array($shortprojectname);
+ }
+
+ $ret .= createFileLinks($dls, $PWD, $branch, $ID, $pre2, $filePre[$modelingprojectname], $ziplabel);
+
+ $ret .= "</ul>\n";
+ $ret .= "</li>\n";
+
+ return $ret;
+}
+
+function showToggle($showAll, $showMax, $sortBy, $count)
+{
+ global $shortprojectname;
+ $ret = "<li><a href=\"" . $_SERVER["PHP_SELF"] . "?project=".$shortprojectname."&showAll=" . ($showAll == "1" ? "" : "1") . "&showMax=$showMax&sortBy=$sortBy\">" . ($showAll != "1" ? "show all $count" : "show only $showMax") . "...</a></li>\n";
+ return $ret;
+}
+
+function showArchived($oldrels)
+{
+ global $projectname, $modelingprojectname, $projectdisplayname;
+
+ $thresh = sizeof($oldrels) > 5 ? ceil(sizeof($oldrels)/3) : 6;
+ print "<h3><a name=\"archives\"></a>Archived Releases</h3>\n";
+ print "<p>Older $projectdisplayname releases have been moved to archive.eclipse.org, and can be accessed here:</p>";
+ print '<table cellspacing="0" cellpadding="0" border="0" style="margin:0"><tr valign="top">'."\n";
+ print "<td><ul id=\"archives\">\n";
+ $cnt=-1;
+ foreach (array_keys($oldrels) as $z)
+ {
+ $cnt++;
+ if ($cnt % $thresh == 0)
+ {
+ print "</ul></td><td><ul id=\"archives\">\n";
+ }
+ if (!$z || $oldrels[$z] === null)
+ {
+ $cnt--; # spacer
+ }
+ else if (!is_array($oldrels[$z]))
+ {
+ print "<li style=''><a href=\"http://archive.eclipse.org/$projectname/$modelingprojectname/downloads/drops/$z/R$oldrels[$z]/\">$z</a> (" . IDtoDateStamp($oldrels[$z], 2) . ")</li>\n";
+ }
+ else
+ {
+ print "<li><a href=\"" . $oldrels[$z][1] . "\">$z</a> (" . $oldrels[$z][0] . ")</li>\n";
+ }
+ }
+ print "</ul>\n";
+ print "</td>";
+ print "</tr></table>\n";
+ #print "</div>\n";
+}
+?>
diff --git a/downloads/downloads.js b/downloads/downloads.js
new file mode 100644
index 0000000..8af1892
--- /dev/null
+++ b/downloads/downloads.js
@@ -0,0 +1,5 @@
+function toggle(id)
+{
+ e = document.getElementById(id);
+ e.style.display = (e.style.display == "" ? "none" : "");
+}
diff --git a/downloads/extras-emf-query.php b/downloads/extras-emf-query.php
new file mode 100644
index 0000000..84b77fa
--- /dev/null
+++ b/downloads/extras-emf-query.php
@@ -0,0 +1,28 @@
+<?php
+/******************************************************************************
+ * Copyright (c) 2013, 2014 IBM Corporation 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://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial implementation
+ ****************************************************************************/
+
+$oldrels = array(
+ "1.1.0" => array("2007/06/20","http://archive.eclipse.org/modeling/emf/query/downloads/drops/1.1.0/R200706201159"),
+ "1.0.2" => array("2006/11/16","http://archive.eclipse.org/modeling/emf/query/downloads/drops/1.0.2/R200611161603"),
+ "1.0.1" => array("2006/09/25","http://archive.eclipse.org/modeling/emf/query/downloads/drops/1.0.1/R200609250852"),
+ "1.0.0" => array("2006/06/26","http://archive.eclipse.org/modeling/emf/query/downloads/drops/1.0.0/R200606261130"),
+);
+
+function showNotes()
+{
+?>
+ <div class="homeitem3col">
+ <p>All downloads are provided under the terms and conditions of the <a href="http://www.eclipse.org/legal/epl/notice.html">Eclipse Foundation Software User Agreement</a> unless otherwise specified.</p>
+ </div>
+<?php
+}
+?>
diff --git a/downloads/hidden.txt b/downloads/hidden.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/downloads/hidden.txt
diff --git a/downloads/index.php b/downloads/index.php
new file mode 100644
index 0000000..b455bbc
--- /dev/null
+++ b/downloads/index.php
@@ -0,0 +1,67 @@
+<?php
+/******************************************************************************
+ * Copyright (c) 2013, 2014 IBM Corporation 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial implementation
+****************************************************************************/
+$defaultProj = "";
+unset($_GET["project"]); // gef has no subprojects, so this should be blank
+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());
+ob_start();
+
+/* $project => sections/Project Name => (prettyname => filename) */
+$dls = array(
+ /*"/newProj" => array(
+ "Project Name" => array(
+ "<acronym title=\"Click to download archived All-In-One p2 Repo Update Site\"><img alt=\"Click to download archived All-In-One p2 Repo Update Site\" src=\"/$projectname/images/dl-icon-update-zip.gif\"/> <b style=\"color:green\">All-In-One Update Site</b></acronym>" => "Update",
+ "SDK (Runtime, Source)" => "SDK",
+ "Runtime" => "runtime",
+ "Examples" => "examples",
+ "Automated Tests" => "automated-tests"
+ )
+ ),*/
+ "$shortprojectname" => array(
+ "$projectdisplayname" => array(
+ "<acronym title=\"Click to download archived All-In-One p2 Repo Update Site\"><img alt=\"Click to download archived All-In-One p2 Repo Update Site\" src=\"/$projectname/images/dl-icon-update-zip.gif\"/> <b style=\"color:green\">All-In-One Update Site</b></acronym>" => "$projectname-Update",
+ "SDK (Runtime, Source)" => "$projectname-SDK",
+ "Runtime" => "$projectname-runtime",
+ "Examples" => "$projectname-examples",
+ "Automated Tests" => "$projectname-automated-tests"
+ )
+ ),
+);
+
+/* list of valid file prefixes for projects who have been renamed; keys have leading / to match $modelingprojectname */
+/* only required if using something other than the default; otherwise will be generated */
+$filePre = array(
+ "/$projectname" => array("$topprojectname"),
+);
+
+/* define showNotes(), $oldrels, doLanguagePacks() in extras-$projectname.php if necessary, downloads-common.php will include them */
+/* end config */
+require_once($_SERVER["DOCUMENT_ROOT"] . "/$projectname/downloads/downloads-common.php");
+
+$html = ob_get_contents();
+ob_end_clean();
+
+$pageTitle = "$projectdisplayname P2 Repositories and Zip Downloads";
+$pageKeywords = "$topprojectname $projectname $shortprojectname";
+$pageAuthor = "Anthony Hunter";
+
+# Generate the web page
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/' . $projectname . '/style.css"/>' . "\n");
+$App->AddExtraHtmlHeader('<script src="/' . $projectname . '/downloads/downloads.js" type="text/javascript"></script>' . "\n"); //ie doesn't understand self closing script tags, and won't even try to render the page if you use one
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
+?>
diff --git a/downloads/scripts.php b/downloads/scripts.php
new file mode 100644
index 0000000..e13556f
--- /dev/null
+++ b/downloads/scripts.php
@@ -0,0 +1,237 @@
+<?php
+/******************************************************************************
+ * Copyright (c) 2013, 2014 IBM Corporation 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial implementation
+****************************************************************************/
+
+function loadDirSimple($dir, $ext, $type) // 1D array, not 2D
+{
+ $stuff = array();
+
+ if(is_dir($dir) && is_readable($dir))
+ {
+ $handle = opendir($dir);
+ while(($file = readdir($handle)) !== false)
+ {
+ if(preg_match("/$ext$/", $file) && !preg_match("/^\.{1,2}$/", $file))
+ {
+ if(($type == "d" && is_dir("$dir/$file")) ||($type == "f" && is_file("$dir/$file")))
+ {
+ $stuff[] = $file;
+ }
+ }
+ }
+ closedir($handle);
+ }
+ else
+ {
+ global $hadLoadDirSimpleError;
+ if(!$hadLoadDirSimpleError)
+ {
+ $issue =(!is_dir($dir) ? "NOT FOUND" :(!is_readable($dir) ? "NOT READABLE" : "PROBLEM"));
+ print "<p>Directory ($dir) <b>$issue</b> on mirror: <b>" . $_SERVER["HTTP_HOST"] . "</b>!</p>";
+ print "<p>Please report this error to <a href=\"mailto:webmaster@eclipse.org?Subject=Directory ($dir) $issue in scripts.php::loadDirSimple() on mirror " . $_SERVER["HTTP_HOST"] . "\">webmaster@eclipse.org</a>, or make directory readable.</p>";
+ $hadLoadDirSimpleError = 1;
+ }
+ }
+
+ return $stuff;
+}
+
+/* TODO: remove this when we upgrade php to >= 4.3.0 everywhere */
+if(!function_exists("file_get_contents"))
+{
+ function file_get_contents($file)
+ {
+ return(is_file($file) ? join("", file($file)) : "");
+ }
+}
+
+function debug($str, $level = 0)
+{
+ global $debug;
+
+ if($debug > $level)
+ {
+ print "<div class=\"debug\">$str</div>\n";
+ }
+}
+
+function debug_r($str, $header = "", $footer = "", $level = 0, $isPreformatted = false)
+{
+ global $debug;
+
+ if($debug > $level)
+ {
+ if($header)
+ {
+ print "<div class=\"debug\">";
+ print $header;
+ print "</div>\n";
+ }
+ print "<div class=\"debug\">";
+ print $isPreformatted ? "<pre><small>" : "";
+ print_r($str);
+ print $isPreformatted ? "</small></pre>" : "";
+ print "</div>\n";
+ if($footer)
+ {
+ print "<div class=\"debug\">";
+ print $footer;
+ print "</div>\n";
+ }
+ }
+}
+
+function domainSuffix($domain)
+{
+ return preg_replace("/.*([^\.]+\.[^\.]+)$/", "$1", $domain);
+}
+
+/* convert a wiki category page into a series of <li> items */
+function wikiCategoryToListItems($category)
+{
+ $wiki_contents = "";
+
+ // insert wiki content
+ $host = "wiki.eclipse.org";
+ $url = "/Category:" . $category;
+
+ $header = "Host: $host\r\n";
+ $header .= "User-Agent: PHP Script\r\n";
+ $header .= "Connection: close\r\n\r\n";
+
+ $fp = fsockopen($host, 80, $errno, $errstr, 30);
+ if(!$fp)
+ {
+ $out .= "<li><i>$errstr ($errno)</i></li>\n";
+ }
+ else
+ {
+ fputs($fp, "GET $url HTTP/1.1\r\n");
+ fputs($fp, $header);
+ while(!feof($fp))
+ {
+ $wiki_contents .= fgets($fp, 128);
+ }
+ fclose($fp);
+ }
+
+ $out = "";
+ if($wiki_contents)
+ {
+ $m = null;
+ if(preg_match("#<div id=\"mw-pages\">(.+)</div>[ \t\n]*<div class=\"printfooter\">#s", $wiki_contents, $m))
+ {
+ $links = null;
+ if(preg_match_all("#<a href=\"([^\"]+)\" title=\"([^\"]+)\">([^<]+)</a>#", $m[1], $links, PREG_SET_ORDER))
+ {
+ foreach($links as $z)
+ {
+ $out .= "<li><a href=\"http://wiki.eclipse.org/$z[1]\" title=\"$z[2]\">$z[3]</a></li>\n";
+ }
+ }
+ }
+ }
+ return $out;
+}
+
+function getProjectFromPath($projectname)
+{
+ $m = null;
+ return preg_match("#/" . $projectname . "/([^/]+)/build/.+#", $_SERVER["PHP_SELF"], $m) ? $m[1] :(preg_match("#/(" .
+ $projectname . ")/build/.+#", $_SERVER["PHP_SELF"], $m) ? $m[1] : "");
+}
+
+function cvsminus($rev)
+{
+ if(preg_match("/^1\.1$/", $rev)) // "1.10" == "1.1" returns true, curiously enough
+ {
+ return $rev;
+ }
+ else
+ {
+ if(preg_match("/\.1$/", $rev))
+ {
+ return preg_replace("/^(\d+\.\d+)\..+$/", "$1", $rev);
+ }
+ else
+ {
+ return preg_replace("/^(.+\.)(\d+)$/e", "\"$1\" . ($2 - 1);", $rev);
+ }
+ }
+}
+
+function getDownloadScript()
+{
+ global $projectname;
+ if(strstr($projectname, "/") !== false)
+ {
+ list($topProj, $parentProj) = explode("/", $projectname);
+ }
+ else
+ {
+ list($topProj, $parentProj) = array("NONE", $projectname);
+ }
+
+ # if this is a Modeling page, use /modeling/download.php;
+ # if this is a GEF page, use /gef/download.php
+ # if /foo/download.php doesn't exist, revert to /downloads/download.php
+ $dlScriptFile = $_SERVER["DOCUMENT_ROOT"] . "/" .($topProj == "NONE" ? $parentProj : $topProj) . "/download.php";
+ #print "[$dlScriptFile =? " . is_file($dlScriptFile) . "]<br>";
+ if(is_file($dlScriptFile))
+ {
+ $downloadScript = "http://www.eclipse.org/" .($topProj == "NONE" ? $parentProj : $topProj) . "/download.php?file=";
+ }
+ else
+ {
+ $downloadScript = "http://www.eclipse.org/downloads/download.php?file=";
+ }
+ return $downloadScript;
+}
+
+/* thanks to http://www.php.net/manual/en/function.filesize.php#80995 */
+function dirsize($path)
+{
+ $dirsize = exec("du -s $path");
+ if($dirsize)
+ {
+ $dirsize = explode(" ", $dirsize);
+ return($dirsize[0] - 0) * 1024;
+ }
+ if(!is_dir($path))
+ {
+ return filesize($path);
+ }
+ $size = 0;
+ foreach(scandir($path) as $file)
+ {
+ if($file != '.' && $file != '..')
+ {
+ $size += dirsize($path . '/' . $file);
+ }
+ }
+ return $size;
+}
+
+function pretty_size($bytes)
+{
+ $sufs = array("B", "K", "M", "G", "T", "P"); //we shouldn't be larger than 999.9 petabytes any time soon, hopefully
+ $suf = 0;
+
+ while($bytes >= 1000)
+ {
+ $bytes /= 1024;
+ $suf++;
+ }
+
+ return sprintf("%3.1f%s", $bytes, $sufs[$suf]);
+}
+
+?>
diff --git a/getting_involved.php b/getting_involved.php
new file mode 100644
index 0000000..596b6d6
--- /dev/null
+++ b/getting_involved.php
@@ -0,0 +1,45 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009, 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Eclipse Foundation - Initial version
+* Anthony Hunter - changes for EMF Query
+********************************************************************************/
+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());
+
+$pageTitle = "EMF Query Getting Involved";
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/emf-query/style.css"/>');
+
+$html = <<<EOHTML
+<div id="midcolumn">
+<h2>$pageTitle</h2>
+
+<p>As every Eclipse project, EMF Query is strongly dependent on active support by its community.
+You may become part of that community and get involved by reporting bugs or enhancement request,
+by contributing patches, by participation in discussions on the mailing list, or by supporting the
+maintaining of the EMF wiki.</p>
+
+<h3>Contributor Mailing List</h3>
+<p>Technical or organizational discussions (no help wanted questions) around the EMF project take place
+at the <a href="http://dev.eclipse.org/mailman/listinfo/emf-dev">EMF Developer Mailing List</a>.
+It is intended for use by developers actually working on or otherwise contributing to day-to-day
+development of the EMF project itself. Older discussions can be found in the
+<a href="http://dev.eclipse.org/mhonarc/lists/emf-dev/maillist.html">Mailing List Archive</a>.</p>
+
+</div>
+EOHTML;
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
\ No newline at end of file
diff --git a/images/backgroundMain.png b/images/backgroundMain.png
new file mode 100644
index 0000000..f06df02
--- /dev/null
+++ b/images/backgroundMain.png
Binary files differ
diff --git a/images/buttonDocumentation.png b/images/buttonDocumentation.png
new file mode 100644
index 0000000..bbfdde0
--- /dev/null
+++ b/images/buttonDocumentation.png
Binary files differ
diff --git a/images/buttonDocumentation_sel.png b/images/buttonDocumentation_sel.png
new file mode 100644
index 0000000..8affb93
--- /dev/null
+++ b/images/buttonDocumentation_sel.png
Binary files differ
diff --git a/images/buttonDownload.png b/images/buttonDownload.png
new file mode 100644
index 0000000..e620092
--- /dev/null
+++ b/images/buttonDownload.png
Binary files differ
diff --git a/images/buttonDownload_sel.png b/images/buttonDownload_sel.png
new file mode 100644
index 0000000..d3a0330
--- /dev/null
+++ b/images/buttonDownload_sel.png
Binary files differ
diff --git a/images/buttonInvolved.png b/images/buttonInvolved.png
new file mode 100644
index 0000000..b3e9a82
--- /dev/null
+++ b/images/buttonInvolved.png
Binary files differ
diff --git a/images/buttonInvolved_sel.png b/images/buttonInvolved_sel.png
new file mode 100644
index 0000000..346a452
--- /dev/null
+++ b/images/buttonInvolved_sel.png
Binary files differ
diff --git a/images/buttonSupport.png b/images/buttonSupport.png
new file mode 100644
index 0000000..bd36086
--- /dev/null
+++ b/images/buttonSupport.png
Binary files differ
diff --git a/images/buttonSupport_sel.png b/images/buttonSupport_sel.png
new file mode 100644
index 0000000..a535fe8
--- /dev/null
+++ b/images/buttonSupport_sel.png
Binary files differ
diff --git a/images/dl-icon-update-zip.gif b/images/dl-icon-update-zip.gif
new file mode 100644
index 0000000..a16254b
--- /dev/null
+++ b/images/dl-icon-update-zip.gif
Binary files differ
diff --git a/images/dl.gif b/images/dl.gif
new file mode 100644
index 0000000..9d2f23a
--- /dev/null
+++ b/images/dl.gif
Binary files differ
diff --git a/images/link.png b/images/link.png
new file mode 100644
index 0000000..8b624d9
--- /dev/null
+++ b/images/link.png
Binary files differ
diff --git a/index.php b/index.php
index c8992df..1d4a695 100644
--- a/index.php
+++ b/index.php
@@ -1 +1,82 @@
-<?php header('Location: http://www.eclipse.org/projects/project.php?id=modeling.emf.validation'); ?>
\ No newline at end of file
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009, 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Eclipse Foundation - Initial version
+* Anthony Hunter - changes for EMF Query
+********************************************************************************/
+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());
+
+$localVersion = false;
+
+$pageTitle = "Eclipse EMF Query";
+
+// # Paste your HTML content between the EOHTML markers!
+$html = <<<EOHTML
+<div id="bigbuttons">
+<h3>Primary Links</h3>
+<ul>
+<li><a id="buttonDownload" href="downloads.php" title="Download">
+ Downloads, Software Install Site</a></li>
+<li><a id="buttonDocumentation" href="documentation.php" title="Documentation">
+ Tutorials, Examples, Reference Documentation</a></li>
+<li><a id="buttonSupport" href="support.php" title="Support">
+ Bug Tracker, Newsgroup</a></li>
+<li><a id="buttonInvolved" href="getting_involved.php" title="Getting Involved">
+ git, Workspace Setup, Wiki, Committers</a></li>
+</ul>
+</div>
+
+<div id="midcolumn">
+<h3>Eclipse Modeling Framework (EMF) Model Query</h3>
+
+<div id="introText">
+
+<p>EMF model query facilitates the process of search and retrieval of model elements of interest in a flexible yet controlled and structured manner. Provides API support for the basic EObject based Condition objects that are used to formulate queries for EMF models.</p>
+<p>EMF model query provides the following classes/interfaces to support queries.</p>
+<p><ol>
+ <li>The IEObjectSource interface provides the search scope elements to be used in a query.</li>
+ <li>The SELECT class implements a template-function that does the iteration over model elements and applies the search condition on each; it collects the resulting elements into a QueryResultSet object and returns it to the caller.</li>
+ <li>The FROM class represents the elements to search. It is responsible of providing an appropriate iterator for the elements in the search space.</li>
+ <li>The WHERE class applies the search conditions over the elements in the search set.</li>
+ <li>The UPDATE class passes the elements who satisfy the search condition to a caller-supplied modification function. It collects the modified elements into a QueryResultSet object and returns it to the caller.</li>
+ <li>The QueryResultSet class represents the set of elements returned by a given query.</li>
+ <li>The EObjectCondition class is the abstract parent of all conditions that deal with model-elements (i.e., EObjects). It incorporates the services of a PruneHandler in order to answers whether or not to prune the element tree at a specific element and thus ignore its children.</li>
+ <li>The ConditionPolicy class is used to allow the user to decide how to apply a given condition on a collection of a model-element EAttributes or EReferences values. Supports both the: exists (ANY) and for-all (ALL) semantics.</li>
+ <li>The EObjectStructuralFeatureValueCondition class is the parent class for conditions that are responsible for checking the values held in model-elements attributes or references.</li>
+</ol></p>
+
+</div>
+
+</div>
+
+<div id="rightcolumn">
+
+<div>
+<h3>Current Status</h3>
+<p>Development is underway for the proposed EMF Query 1.8.0 release for Eclipse Luna, due June 2014.</p>
+</div>
+
+<div id="headlines">
+<h3>EMF Query 1.7.0 Now Available</h3>
+<p><i>June 26, 2013 -</i> EMF Query 1.7.0 for Eclipse Kepler has been released. Check the <a href="/emf-query/downloads.php">Download</a> page.</p>
+</div>
+
+</div>
+EOHTML;
+
+# Generate the web page
+$App->generatePage($theme, $Menu, null, $pageAuthor, $pageKeywords, $pageTitle, $html);
+
+?>
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..75d277a
--- /dev/null
+++ b/style.css
@@ -0,0 +1,181 @@
+@CHARSET "UTF-8";
+#novaContent {
+ background: url("images/backgroundMain.png") no-repeat;
+ padding-top: 210px;
+}
+
+#midcolumn {
+ width: 640px;
+ padding: 0 10px 10px 10px;
+}
+
+#rightcolumn {
+ width: 260px;
+}
+
+
+h3 {
+ clear: both;
+}
+
+h7 {
+ font-weight: bold;
+ padding: 5px;
+}
+
+a strong {
+ text-decoration: underline;
+}
+
+img.displayed {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+#novaContent {
+ background: url("images/backgroundMain.png") no-repeat white;
+ padding-top: 170px;
+}
+
+#introText p.left {
+ width: 48%;
+ float: left;
+}
+
+#introText p.right {
+ width: 48%;
+ float: right;
+}
+
+#feature_1 {
+ float: left;
+ width: 30%;
+ margin-right: 3%;
+}
+
+#feature_2 {
+ float: left;
+ width: 30%;
+ margin-right: 3%
+}
+
+#feature_3 {
+ float: left;
+ width: 30%;
+}
+
+#feature_4 {
+ clear: both;
+ float: left;
+ width: 63%;
+ margin-right: 3%;
+}
+
+#feature_more {
+ float: left;
+ width: 30%;
+}
+
+#bigbuttons {
+ position: relative;
+ left: 420px;
+ top: -170px;
+}
+#bigbuttons h3{
+ visibility: hidden;
+}
+
+#bigbuttons a {
+}
+
+#bigbuttons ul li {
+ display:block;
+ list-style-type:none;
+ background-color: red;
+ padding: 0;
+ margin: 0;
+}
+
+#bigbuttons a:hover {
+ text-decoration: none;
+}
+
+#bigbuttons a {
+ display: block;
+ height:77px; width:250px;
+ padding: 0;
+ margin: 20px;
+ text-indent: -9000px;
+ position: absolute;
+}
+
+#buttonDownload {
+ background:transparent url("images/buttonDownload.png") no-repeat 0 0;
+ top: 0px;
+ left: 0px;
+}
+
+#buttonDownload:hover {
+ background:transparent url("images/buttonDownload_sel.png") no-repeat 0 0;
+}
+
+
+#buttonDocumentation {
+ background:transparent url("images/buttonDocumentation.png") no-repeat 0 0;
+ top: 87px;
+ left: 0px;
+}
+
+#buttonDocumentation:hover {
+ background:transparent url("images/buttonDocumentation_sel.png") no-repeat 0 0;
+}
+
+#buttonSupport {
+ background:transparent url("images/buttonSupport.png") no-repeat 0 0;
+ top: 0px;
+ left: 280px;
+}
+
+#buttonSupport:hover {
+ background:transparent url("images/buttonSupport_sel.png") no-repeat 0 0;
+}
+
+#buttonInvolved {
+ background:transparent url("images/buttonInvolved.png") no-repeat 0 0;
+ top: 87px;
+ left: 280px;
+}
+
+#buttonInvolved:hover {
+ background:transparent url("images/buttonInvolved_sel.png") no-repeat 0 0;
+}
+
+#bigbuttons a * {
+ visibility: hidden;
+}
+
+#headlines {
+}
+
+#headlines ul li {
+ margin: 0 0;
+ list-style-type: none;
+ list-style-image: none;
+}
+
+
+#headlines div.title {
+ display: inline;
+ margin-right: 0.5em;
+}
+
+#headlines div.meta {
+ display: inline;
+ color: #444444;
+ font-size: smaller;
+}
+
+#headlines div.item {
+ display: block;
+}
\ No newline at end of file
diff --git a/support.php b/support.php
new file mode 100644
index 0000000..ae82c5b
--- /dev/null
+++ b/support.php
@@ -0,0 +1,48 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2009, 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://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Eclipse Foundation - Initial version
+* Anthony Hunter - changes for EMF Query
+********************************************************************************/
+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());
+
+$pageTitle = "EMF Query Support";
+$App->AddExtraHtmlHeader('<link rel="stylesheet" type="text/css" href="/emf-query/style.css"/>');
+
+$html = <<<EOHTML
+<div id="midcolumn">
+<h2>$pageTitle</h2>
+<p>EMF Query support is provided by the community on a volunteer basis. You may use the following means to reach this community.</p>
+
+<h3>Frequently Asked Questions (FAQs)</h3>
+<p>For frequently asked questions and known pitfalls please refer to the <a href="http://wiki.eclipse.org/EMF-Query-FAQ">EMF Query FAQ</a>. You might also consider the
+the <a href="http://wiki.eclipse.org/EMF/FAQ">EMF FAQ</a> or the <a href="http://wiki.eclipse.org/index.php/Eclipse_FAQs">Eclipse FAQs</a>.
+</p>
+
+<h3>Forum & Newsgroup</h3>
+<p>Ask questions on the <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=108">EMF Community Forum</a>
+or the <a href="news://news.eclipse.org/eclipse.tools.emf" target="_top">EMF newsgroup</a> (same contents).
+</p>
+
+<h3>Bugzilla</h3>
+<p>Report defects and ask for enhancements by creating a
+<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EMF">new bug entry</a> in the <a href="https://bugs.eclipse.org/bugs/">Eclipse Bugzilla</a>.
+</p>
+</div>
+EOHTML;
+
+# Generate the web page
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
+?>
\ No newline at end of file