/* * 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 * . */ 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(""); print(""); print(""); print(""); print(""); print(""); /* * 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(""); 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(""); } print("Project " ## quote_html(pn)); print("

"); auto href; print("Project"); 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 = "" ## quote_html(prj_name_parts[0]) ## ""; auto j; for (j = 1; j < count(prj_name_parts) - 1; j++) { href ##= '.' ## prj_name_parts[j]; long_project_name ##= "." ## quote_html(prj_name_parts[j]) ## ""; } long_project_name ##= "." ## quote_html(prj_name_parts[count(prj_name_parts) - 1]); } long_project_name = "“" ## long_project_name ## "”,
"; /* HTTP limits lines to 510 characters */ for (j in wrap(long_project_name, 510)) print(j); print("

"); print("
"); print("

Brief Description

"); auto part; for (part in wrap_html(quote_html(p.state.brief_description), 80)) print(part); print("
"); print("
"); print("

Description

"); for (part in wrap_html(quote_html(p.state.description), 80)) print(part); print("
"); print("
"); print("

Information Available

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

"); } href = script_name ## "?file@changes+project@" ## quote_url(pn); print("

"); print("Changes"); print("
"); 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("

"); print("Change lists are also available broken down by change state:"); print("

    "); href = script_name ## "?file@changes+state:awaiting_development+project@" ## quote_url(pn); print("
  • awaiting development"); href = script_name ## "?file@changes+state:being_developed+project@" ## quote_url(pn); print("
  • being developed"); href = script_name ## "?file@changes+state:awaiting_review+project@" ## quote_url(pn); print("
  • awaiting review"); href = script_name ## "?file@changes+state:being_reviewed+project@" ## quote_url(pn); print("
  • being reviewed"); href = script_name ## "?file@changes+state:being_reviewed+project@" ## quote_url(pn); print("
  • awaiting review"); href = script_name ## "?file@changes+state:awaiting_review+project@" ## quote_url(pn); print("
  • awaiting integration"); href = script_name ## "?file@changes+state:awaiting_integration+project@" ## quote_url(pn); print("
  • being integrated"); href = script_name ## "?file@changes+state:-completed+project@" ## quote_url(pn); print("
  • not completed"); href = script_name ## "?file@proj_hstry+project@" ## quote_url(pn); print("
  • completed"); print("
"); href = script_name ## "?file@proj_staff+project@" ## quote_url(pn); print("
"); print("Staff"); print("
"); 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("
"); print("Statistics"); print("
"); 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("
"); print("Files"); print("
"); 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("
"); print("File Metrics"); print("
"); 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("
"); print("File Activity"); print("
"); 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("
"); href = script_name ## "?file@file_cflct"; href ##= "+project@" ## quote_url(pn); print("File Conflict"); print("
"); print("This item will provide you with a listing of changes which are"); print("actively modifying files if more than one"); print("change is modifying the file at the same time."); href = script_name ## "?file@file_hstry+project@" ## quote_url(pn); print("
"); print("File History"); print("
"); 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("
"); print("History"); print("
"); 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("
"); print("Integration Histogram"); print("
"); 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("
"); print("Progress Histogram"); print("
"); 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("
"); print("Change Cause Histogram"); print("
"); 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("
"); print("Change Cause by File"); print("
"); print("This item will provide you with a histogram of change causes"); print("against the files changed. Only completed changes are shown."); print("
"); print("
"); print("
"); print("

["); print("Project List"); print("]

"); print("
"); print("This page was generated " ## now() ## "."); print("");