In starting this project, we encountered a series of problems that many web designers run into:
To deal with these problems, we adopted a system that specifies the content of the web-site in a set of input files, and a number of scripts and utilities to create the actual web-site's different views with a consistent style throughout.
This is the tree for the OLIVE web-site. The tree contains the input files, the scripts and programs to massage the input files into final HTML, and the final HTML pages for each of the different views. For brevity, we have included the input files and scripts below (and not the final HTML files, you can see those by following the links within the site):
Olive/ -- Top level directory, all 'makes' done here
Build_Index -- Script to build index.html
Build_Indexes -- Script to build the index input files (Author, Cite, Project, Product, and Video)
Build_Page -- Script to build the individual pages
Cite.head -- Input file for Cite.html
Cite.midl -- Input file for Cite.html
Class/ -- Directory containing the other class files
bullet.gif -- Graphical element used by index.html
index.html -- Original class homepage
umcp.gif -- Graphical element used by index.html
Frames/ -- Directory containing the Frames interface
Build_Index -- Script to build Navigate.html and Contents.html
Build_Indexes -- Script to build the index input files (Author, Cite, Project, Product, and Video)
Build_Page -- Script to build the individual pages
Cite.head -- Input file for Cite.html
Cite.midl -- Input file for Cite.html
Contents.head -- Input file for Contents.html
Contents.tail -- Input file for Contents.html
Makefile -- Makefile for the Frames directory
Navigate.head -- Input file for Navigate.html
Navigate.tail -- Input file for Navigate.html
Product.head -- Input file for Product.html
Product.midl -- Input file for Product.html
Project.head -- Input file for Project.html
Project.midl -- Input file for Project.html
Tail -- Input file used by Build_Indexes
Tail2 -- Input file used by Build_Indexes
Video.head -- Input file for Video.html
Video.midl -- Input file for Video.html
parse.awk -- AWK script used by Build_Index
Images/ -- Directory containing all graphical elements and their control files
Background -- Color information for HTML pages
Background_Page -- Color information for HTML pages
Button01.jpg -- 'Workspace' button
Button02.jpg -- 'Network' button
Button03.jpg -- 'Tree' button
Button04.jpg -- 'Multi-D' button
Button05.jpg -- '3-D' button
Button06.jpg -- '2-D' button
Button07.jpg -- '1-D' button
Button08.jpg -- 'Temporal' button
Button09.jpg -- 'Introduction' button
Button10.jpg -- 'All Citations' button
Button11.jpg -- 'All Projects' button
Button12.jpg -- 'All Products' button
Button13.jpg -- 'Text Only' button
Button14.jpg -- 'Graphics' button
Button15.jpg -- 'WebTOC' button
Button16.jpg -- 'Frames' button
Button17.jpg -- 'All Videos' button
Header.jpg -- Large 'Olive' logo
Header85x30.jpg -- Small 'Olive' logo
Mapping3 -- Page/Background color mapping
Mapping4 -- Page/Button mapping
UMCP-small.jpg -- Small 'UMCP' logo
UMCP.jpg -- Large 'UMCP' logo
left.gif -- 'Left' button
oil.jpg -- 'Olive Oil' picture
Input/ -- Directory containing all of the input files
1-D.input -- 1-D input file
2-D.input -- 2-D input file
3-D.input -- 3-D input file
Build_Index -- Script to build the index input files (Author, Cite, Project, Product, and Video)
Makefile -- Makefile for the Input directory
Multi-D.input -- Multi-D input file
Network.input -- Network input file
Temporal.input -- Temporal input file
Tree.input -- Tree intput file
Workspace.input -- Workspace input file
parse.awk -- AWK script used by Build_Index
Makefile -- Top level Makefile; all 'makes' initiated here
Product.head -- Input file for Product.html
Product.midl -- Input file for Product.html
Project.head -- Input file for Project.html
Project.midl -- Input file for Project.html
Tail -- Input file used by Build_Indexes
Tail2 -- Input file used by Build_Indexes
Text/ -- Directory containing the Text Only interface
Build_Indexes -- Script to build the index input files (Author, Cite, Project, Product, and Video)
Build_Page -- Script to build the individual pages
Cite.head -- Input file for Cite.html
Makefile -- Makefile for the Text Only directory
Product.head -- Input file for Product.html
Project.head -- Input file for Project.html
Tail -- Input file used by Build_Indexes
Tail2 -- Input file used by Build_Indexes
Video.head -- Input file for Video.html
index.html -- Input file for index.html
Video.head -- Input file for Video.html
Video.midl -- Input file for Video.html
WebTOC/ -- Directory containing the WebTOC interface
Build_Index -- Script to build Navigate.html
HdirMain.class -- Part of the WebTOC Applet
Legend.class -- Part of the WebTOC Applet
Makefile -- Makefile for the WebTOC directory
Navigate.head -- Input file for Navigate.html
Navigate.tail -- Input file for Navigate.html
Olive.hdir -- Input file for the WebTOC Applet
Record.class -- Part of the WebTOC Applet
Util.class -- Part of the WebTOC Applet
bleftb.class -- Part of the WebTOC Applet
botb.class -- Part of the WebTOC Applet
brightb.class -- Part of the WebTOC Applet
buttonBar.class -- Part of the WebTOC Applet
hdir.class -- Part of the WebTOC Applet
index.html -- Top level HTML page for this directory
leftb.class -- Part of the WebTOC Applet
locapplet.class -- Part of the WebTOC Applet
rightb.class -- Part of the WebTOC Applet
topb.class -- Part of the WebTOC Applet
index.head -- Input file for index.html
index.tail -- Input file for index.html
parse.awk -- AWK script used by Build_Index
src/ -- Directory containing the parser source code and executable
Makefile -- Makefile for the parsers
parser.y -- Parser #1 YACC input
scanner.l -- Parser #1 LEX input
parser2.y -- Parser #2 YACC input
scanner2.l -- Parser #2 LEX input
The input files contain tags of the form "#SOMETHING#" to delineate the start of a data entry and "#SOMETHING_END#" to mark the end of that data entry. Legal types include:
Some of these types were later removed from the presented pages, and most of the types can be repeated multiple times (ie, there can be more than one author for a page). Each data type is handled differently by the processing scripts to generate the final HTML files.
While this input format and auto-generated pages was deemed too constricting by a number of the students participating in the development of OLIVE, overall it has produced nice, clean results and a harmonious site. Some argued for using the templates up until a point at which time the site could devolve into chaos as each group added their own touch to a page, but the editors thought a consistent style was more desirable.
This was a mammoth job to undertake, and while we have made a great effort to include as many different citations/projects/products/videos as possible, it is obvious that we have missed some. We strongly encourage people to give us feedback (either directly to the page maintainers, or to the editors who will forward it to the page maintainers) and comments. Thanks for taking a look!
-Michael Reed (reed@cs.umd.edu) & Dan Heller (djheller@wam.umd.edu), Editors.