/*
 *	aegis - project change supervisor
 *	Copyright (C) 1997, 1998, 2000, 2002, 2003, 2005-2008 Peter Miller
 *
 *	This program is free software; you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation; either version 3 of the License, or
 *	(at your option) any later version.
 *
 *	This program is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU General Public License
 *	along with this program. If not, see
 *	<http://www.gnu.org/licenses/>.
 */

auto pn, p;
pn = project_name();
p = project[pn];

auto script_name;
script_name = getenv("SCRIPT_NAME");
if (script_name == "")
	script_name = "http://localhost/cgi-bin/aegis.cgi";

columns({width = 1000; });
print("Content-Type: text/html");
print("");
print("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\""
	## "\"http://www.w3.org/TR/REC-html40/loose.dtd\">");
print("<html><head>");
print("<meta name=\"ROBOTS\" content=\"NOINDEX, NOFOLLOW\">");
print("<meta name=\"GENERATOR\" content=\"" ## script_name ## "\">");
print("<meta http-equiv=\"Content-Type\" "
	## "content=\"text/html; charset=ISO-8859-1\">");
print("<style type=\"text/css\"> "
	## "tr.even-group { background-color: #CCCCCC; }"
	## "body { background-color: white; }"
	## "</style>");
/*
 * Netscape 4.x has numerous CSS bugs, two of which need mentioning.
 * 1. If a style sheet is not present Netscape says 404 Not found, when
 * it should silently ignore it.  2. Style sheets who's media is not
 * "screen" will be ignored.  Fortunately we can use (2) to get around (1).
 */
print("<link rel=\"stylesheet\" type=\"text/css\" href=\"/aedefault.css\" "
	## "media=\"all\">");
auto stack, depth, n;
depth=0;
stack[depth] = project[pn].state.name;
while ("" != ( n = project[stack[depth]].state.parent_name )) {
  stack[++depth] = n;
}
while ( depth >= 0) {
    print("<link rel=\"stylesheet\" type=\"text/css\" href=\"/" ##
      stack[depth--] ## ".css\" " ## "media=\"all\">");
}
print("<title>Project " ## quote_html(pn));
print("</title></head><body><h1 align=center>");

auto href;
print("<a href=\"" ## script_name ## "\">Project</a>");
auto long_project_name;
auto prj_name_parts;
prj_name_parts = split(pn, '.');
if (count(prj_name_parts) < 2)
    long_project_name = quote_html(pn);
else
{
    href = script_name ## "?file@proj_menu+project@"
	## quote_url(prj_name_parts[0]);
    long_project_name = "<a href=\"" ## href ## "\" >"
	## quote_html(prj_name_parts[0]) ## "</a>";
    auto j;
    for (j = 1; j < count(prj_name_parts) - 1; j++)
    {
	href ##= '.' ## prj_name_parts[j];
	long_project_name ##= ".<a href=\"" ## href ## "\" >"
	    ## quote_html(prj_name_parts[j]) ## "</a>";
    }
    long_project_name ##= "." ##
	quote_html(prj_name_parts[count(prj_name_parts) - 1]);
}
long_project_name = "&ldquo;" ## long_project_name ## "&rdquo;,<br>";
/* HTTP limits lines to 510 characters */
for (j in wrap(long_project_name, 510))
    print(j);
print("</h1>");

print("<div class=\"brief-description\">");
print("<h2>Brief Description</h2>");
auto part;
for (part in wrap_html(quote_html(p.state.brief_description), 80))
	print(part);
print("</div>");

print("<div class=\"description\">");
print("<h2>Description</h2>");
for (part in wrap_html(quote_html(p.state.description), 80))
	print(part);
print("</div>");

print("<div class=\"information\">");
print("<h2>Information Available</h2>");
print("<dl>");

/* Links to sub branches. */
auto sbr, sub_brs;
sub_brs = p.state.branch.sub_branch;
if (count(sub_brs) > 0)
{
    print("<dt>Branches<dd>");
    j = 1;
    for (sbr in sort(sub_brs))
    {
	href = script_name ## "?file@proj_menu+project@" ## pn ## "." ## sbr;
	print("<a href=\"" ## href ## "\">" ## pn ## "." ## sbr ## "</a>" ##
	    (j == count(sub_brs) ? "" : ","));
	++j;
    }
    print("<p>");
}

href = script_name ## "?file@changes+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Changes");
print("</a><dd>");
print("This item will provide you with a list of changes to this");
print("project, including those which have not yet commenced, those in");
print("progress, and those which have been completed.");
print("<p>");
print("Change lists are also available broken down by change state:");
print("<ul>");
href = script_name ## "?file@changes+state:awaiting_development+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">awaiting development</a>");
href = script_name ## "?file@changes+state:being_developed+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">being developed</a>");
href = script_name ## "?file@changes+state:awaiting_review+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">awaiting review</a>");
href = script_name ## "?file@changes+state:being_reviewed+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">being reviewed</a>");
href = script_name ## "?file@changes+state:being_reviewed+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">awaiting review</a>");
href = script_name ## "?file@changes+state:awaiting_review+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">awaiting integration</a>");
href = script_name ## "?file@changes+state:awaiting_integration+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">being integrated</a>");
href = script_name ## "?file@changes+state:-completed+project@"
	## quote_url(pn);
print("<li><a href=\"" ## href ## "\">not completed</a>");
href = script_name ## "?file@proj_hstry+project@" ## quote_url(pn);
print("<li><a href=\"" ## href ## "\">completed</a>");
print("</ul>");

href = script_name ## "?file@proj_staff+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Staff");
print("</a><dd>");
print("This item will provide you with a list of staff involved in");
print("the project, both past and present.  The list includes some");
print("statistics about the activities performed by the staff.");

href = script_name ## "?file@proj_stats+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Statistics");
print("</a><dd>");
print("This item will provide you with some statistics about changes");
print("within the project.  The statistics include change causes,");
print("file activity and file types.");

href = script_name ## "?file@file_list+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Files");
print("</a><dd>");
print("This item will provide you with a listing of the files which");
print("are the project master source.	Links are provided to individual");
print("file information.");

href = script_name ## "?file@proj_filme+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("File Metrics");
print("</a><dd>");
print("This item will provide you with a listing of the files with file");
print("metrics.  (Each project defines its own metrics, none by default.)");
print("Links are provided to individual file information.");

href = script_name ## "?file@file_activ+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("File Activity");
print("</a><dd>");
print("This item will provide you with a listing of files which are");
print("actively being modified.  The list includes who is working on");
print("the changes, and a brief description of each change.  Where a");
print("file is common to more than one change, all changes are listed");
print("against the file.");

print("<dt>");
href = script_name ## "?file@file_cflct";
href ##= "+project@" ## quote_url(pn);
print("<a href=\"" ## href ## "\">File Conflict</a>");
print("<dd>");
print("This item will provide you with a listing of changes which are");
print("actively modifying files <strong>if</strong> more than <em>one</em>");
print("change is modifying the file at the same time.");

href = script_name ## "?file@file_hstry+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("File History");
print("</a><dd>");
print("This item will provide you with a listing of files and the order");
print("in which all completed changes affected them.");
print("This report can take a long time to generate.");

href = script_name ## "?file@proj_hstry+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("History");
print("</a><dd>");
print("This item will provide you with a listing of completed changes");
print("in the order in which they were completed.");

href = script_name ## "?file@proj_hstgm+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Integration Histogram");
print("</a><dd>");
print("This item will provide you with a histogram of changes completed");
print("over time.");

href = script_name ## "?file@proj_prgr1+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Progress Histogram");
print("</a><dd>");
print("This item will provide you with a histogram of change state");
print("transitions over time.	This shows you work progressing through");
print("the process and contributing towards project progress.");

href = script_name ## "?file@proj_cch1+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Change Cause Histogram");
print("</a><dd>");
print("This item will provide you with a histogram of change causes");
print("over time.  Only completed changes are shown.");

href = script_name ## "?file@file_densi+project@" ## quote_url(pn);
print("<dt><a href=\"" ## href ## "\">");
print("Change Cause by File");
print("</a><dd>");
print("This item will provide you with a histogram of change causes");
print("against the files changed.  Only completed changes are shown.");

print("</dl>");
print("</div>");

print("<hr>");
print("<p align=center class=\"navbar\">[");
print("<a href=\"" ## script_name ## "\">Project List</a>");
print("]</p>");

print("<hr>");
print("This page was generated " ## now() ## ".");
print("</body></html>");
