|
|
About this Website
The website is actually a small suite of applications. It consists of the files that make up the
site, a Data Generator application, support services for the monthly email, and a newsletter
generator. All parts of the system that are usable via a web browser and are routinely tested in
Microsoft Internet Explorer, Mozilla FireFox.
The website is a collection of files that are connected via links. Currently the site hosted on
homestead.com. The servers are at Homestead Technologies in Menlo Park, CA, and the site address
is http://capitalcitycorvette.homestead.com.
The site is written in HTML, Javascript, and Cascading Style Sheets. This breaks down
as follows:
- 24 Permanent HTML pages, plus between 1 and 15 (depending on the time of the
year) HTML pages to support the paginating events page. Total code is approximately 3750 permanent
lines and between 10 to 200 lines for event flyers.
- Dynamic features of the site (cascading menus, paginating Driveline
and events, the popup windows on the picture page, etc.), require executable code.
Approximately 3000 lines of Javascript code make these features work.
- Display of text (size, alignment, bolding, underlining, etc.) is controlled by Cascading
Style Sheet (CSS) code. All of the style classes are contained in a single file that is about
500 lines of definitions. Each event typically has its own set of styles. These are
typically 20 - 30 lines of definitions.
- Each of the images on the site, is supported by a graphics file.
These can be .gif, .jpg, or .png files. Currently the site uses 87 permanent images that
consume approximately 2.7MB of disk space.
- The remainder of the site's 150MB capacity is used by event pictures. As of August 2008
there are 180 pictures using approximately 87MB of space. Currently we have 59MB of free
space.
Membership as of May 2008 would require sending 87 newletters. Of those, 32 members get the hard
copy newsletter, and 55 members receive just the email. For the May 2008 newsletter, production
and mailing costs amount to $61.42. Projecting over an entire year, the newletter should cost
approximately $737. If all members were to opt for the paper newsletter, these costs would amount
to $1733 annually.
Homestead charges $100 to per year to host the site. The savings to the club, due to members
opting not to receive the paper newsletter amount to approximately $1000 per year. This gives
an ROI for the website of less than 1.2 months.
Hardcopy Cost Breakdown
This breakdown is taken from the May 2008 edition. This edition
required 32 newsletters. Each newletter was 12 pages (6 sheets) long.
Total copying costs were $37.92.
|
Copy 12 pages (6 sheets, duplex) & staple
|
$1.185
|
|
Label
|
$0.014
|
|
2 Sealers
|
$0.041
|
|
Stamp
|
$0.42
|
|
Total
|
$1.66
|
This utility allows the President's Page (PP) and Secretary's Report (SR) to be formatted
for the website. The articles are stored on the website as a Javascript array. The
utility reads the text of the article, and performs some preformatting (italic the word
Driveline, insert Javascript escape sequences for single and double quotes, place HTML
superscripts on ordering suffixes - 1st becomes 1st, etc.)
The user can then add bolding, underlines, and other formatting to the text. Finally the
user can automatically generate the ecapsulating Javascript code. The article is now ready
to be copied and pasted into the file (articles.js) on the website that holds the PP and SR.
To insure that the PP and SR are processed correctly, the responsible officer should submit
the report in any one of the following formats: Word (.doc), Rich Text Format (.rtf, use
Wordpad, free with Windows), or plain text (.txt).
The Data Generator is the application that reads the membership list, birthdays and Treasurer's
Report and organizes that data such that it can be read by the people that receive the monthly
email.
The email generator performs a number of steps.
- Load membership list, birthdays, and Treasurer's Report data into the
program.
- Combine all data into a website storable form.
- Generate a 512 bit key, and encrypt the data from the previous step by
combining the key and the data using an XOR function.
- Save the encrypted data to a file.
- Upload the encrypted data to the web server.
- Generate an email that contains the encryption key, and send that email to
the membership.
After the monthly updates are made to the website, and the email has been sent to the membership,
the Data Extrator is used to pull the data that will make up the content of the printed newsletter.
The following data is downloaded: Date of the issue, officer list, next meeting information,
President's Page, Secretary's Report, committee chairs, Treasurer's Report, birthdays, calendar,
membership list, list of event flyers, and headlines.
The President's Page, Secretary's Report, headlines, and next meeting information are stored as HTML
files. All other data is stored in XML files.
The Data Generator/Extractor is a full three-tier intranet style application.
- The back-end or data layer consists of an Excel spreadsheet. Each worksheet in the
Excel file represents a data table. Currently these are Members, Birthdays, Officers
(a list of club officers, and comittee chairs), and the Calendar. All data is accessed
using Structured Query Language (SQL) via ODBC.
- The middle tier consists of 32 Java classes that contain approximately 7200 lines of
code. Ten of these classes are servlets that support the front end via AJAX operations.
All operations listed in the operational steps, above, are performed by these Java classes.
- The front end or user interface consists of six Java Server Pages (JSP, an HTML file
that contains Java code executed by the server before the page is sent to the browser) that
are made up of 1250 lines of HTML, and Java code. The JSP pages are supported by 3000 lines
of Javascript and CSS code.
- All of the code runs on an Apache webserver using Tomcat as it's servlet runner.
If your email client supports HTML email, then you will see a one line email that contains a
link to a web page. If your client does not support HTML you will see additional text that
explains how to copy and paste an included URL into your web browser.
In either case the encryption key (discussed above) will be sent to the referenced web page, and
that web page will send the key back to your browser, where it will be stored as a cookie on your
hard drive.
When the Membership List, Birthdays, or Treasurer's Report are viewed in a web browser, the
Javascript checks for the presence of the key. If no key is present, or the key is expired,
then instructions about how to obtain a key will be displayed to the user. If a valid key is
found, then the data will be downloaded, decrypted via the same process used to encrypt it, and
displayed on the appropriate page.
This is a Visual Basic (VB) application. The move to VB was necessary because this part of the
suite must interact directly with Microsoft Word.
The program is designed with the operational components in a DLL that is separate from the user
interface. This will support a possible move to a web based front end in the future. The DLL
consists of 26 VB classes totalling approximately 5400 lines of code. The front end consists of
two forms (screens), and two classes, and comprises approximately 1000 lines of code. There are
four support files that the generators uses: newsletter template, mailer template, mailing label
template, and a publication checklist template. Operations are as follows:
- NewsLetter Generation - The user picks the dataset (previously created by the Data Extractor)
for the month of the newsletter. The flyers that are to be included in the newsletter are
picked from the list of all events, and the generation is kicked off. The newsletter template is
loaded, and the various articles and information are loaded into the appropriate positions. The
mailer page is then attached to the end of the newsletter, and the headlines filled in. At this
point the newletter is ready for finish editing and printing. The entire process takes about two
minutes.
- Label Generator - This function allows the user to generate a mailing label for each
member that has requested a paper newsletter. In order to avoid waste, the user can enter
coordinates of the starting label. Example: Row 5, column 2. The program will then fill
in address information for each member from the starting location. The labels are immediately
ready for printing.
- Checklist Generator - This generates a production checklist based on the newsletter that was
created, and the labels that were generated. The page count determines the postage, and the
label count determines the number of copies to print. Complete copier instructions are
included as is a list of supplies that will be needed.
- Finally there is a settings screen so that the generator program knows how to find the
properties file used by other parts of the suite.
- Cascading menus
- Reorganized the site structure to improve maintainability of the site
- Add the table of contents, and pagination to the events page
- Data Generator modification to add content to the monthly email for
those users that cannot receive an active HTML email.
- Separating content from the page structure to support future projects.
- Data Extractor
- Newsletter Generator
- Website Image Reporter - Allows unused images to be reliably deleted.
- Add pagination to the Extra (clubNews.htm) page. This will allow these articles to be used with the Newsletter Generator.
- Modify the Membership Application to be a printable web page instead of a PDF file.
- Add table generation to the Article Generator.
- Move the event flyers to a Wiki so that the event sponsors can maintain them.
- Upgrade the look and feel of the site. Make sure all pages are W3C verified.
- Picture formatter and loader
- Move data from a spreadsheet to an Access or My-SQL database.
|