CCCC - ABOUT THIS SITE
Overview
The website is maintained by and is part of the Club Administrator and Publisher (CAP) suite.
CAP consists of the files that make up the website site, a Data Generator application and
support utilities. Most of the system is usable via a web browser. These components are
routinely tested in the latest versions of Microsoft Edge, Mozilla Firefox and Google Chrome.
Support for Internet Explorer (IE) 11 has been deprecated. Earlier versions of IE are no longer
supported. Some utilities run in Apache Open Office.
Website
The website is a collection of files that are connected via links. Currently the site is hosted
on a Linux cPanel server at GoDaddy.com, Inc. in Scottsdale, Arizona. The site address is
.
The site is written in HTML5, Javascript, and Cascading Style Sheets level 3. This breaks down
as follows:
- 50 Permanent HTML pages, plus between 1 and 30 (depending on the time of the year) HTML pages to support the paginating events and announcements pages. Total code is approximately 8000 permanent lines and between 10 to 200 lines for each event flyer.
- Dynamic features of the site (cascading menus, paginating Driveline and events, the popup windows on the picture page, etc.), require executable code. Approximately 16,250 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 take about 1500 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 are typically .png files, but can be .gif or .jpg files. Currently the site uses 45 permanent images that consume approximately 6MB of disk space.
- As of April 2022 there are 27,299 pictures using approximately 7.2GB of space.
The mobile website address is
and consists of the following code:
- Ten Permanent HTML pages totalling 950 lines.
- Menus and other dynamic features of the mobile site require 700 lines of JavaScript code.
- Formatting of the pages requires 325 lines of CSS.
Email Links
Because the site can only use client-side code, generating emails must be done with a mailto link.
If a typical email client (Outlook, Thunderbird, etc.) is installed and set as the system default
email application, clicking an email link will result in that client opening a new email that will
be populated with whatever data was passed by the clicked link. If no email client is available,
it is possble to setup a browser to use an online email service. Examples for Gmail and Yahoo!
on Chrome and Firefox are detailed below.
The following links on the CCCC website will attempt to open an email client:
- Home page, "CCCC via email" link.
- Driveline error message associated with the Treasurer Report, Membership List and Birthday pages.
- Membership Application.
- Name Tag Order Form.
Below are examples for setting up your browser to use to use an online service when no email client is installed on your laptop.
Setup Gmail to be the default email application in Google Chrome. This only works for the Chrome browser. It will not work for Firefox, Edge, Safari, etc.
- Click the menu icon in the upper right
. - Settings in the dropdown menu.
- On the left side of the Settings page, click Advanced.
- Click Privacy and Security.
- In the Privacy and Security section click Site Settings.
- Scroll down and click Handlers.
- In the Handlers window:
- Allow sites to ask to become default handlers for protocols (recommended) - make sure the slider is to the right (On).
- There should be a sub-section "email" with mail.google.com listed. Click the menu icon of the far right of that line.
- Select "Set as default" in the drop-down menu.
- mail.google.com should now have a label below it that says "Default".
- Close the Settings tab in Chrome.
- Now when an email link on the CCCC website is clicked, a new Gmail will appear in a new tab.
Set up Yahoo mail to work with Firefox:
- Click the menu icon in the upper right
. - Options in the dropdown menu.
- Scroll down to the Applications table in File and Applications section.
- Under the Content Type column, locate mailto.
- Click the value in the associated Action column to display the list of email services.
- Click Use Yahoo! Mail.
- Close the Firefox Options tab.
- Now when an email link on the CCCC website is clicked, a new Yahoo! mail will appear in a new tab.
Return on Investment (ROI)
Membership as of March 2023 would require sending 99 newletters per month. Of those, 14 members have
requested the hard copy newsletter, and 85 members receive just the email. For the March 2023 newsletter,
production and mailing costs amount to $41.67. Projecting over an entire year, newletter production
should cost approximately $500. If all members were to opt for the paper newsletter, these costs would
amount to $3365 annually.
Go Daddy charges $308 per year ($40 for .com domain, $168 for hosting and $100 for an SSL Certificate) to
host the site. The savings to the club, due to members opting not to receive the paper newsletter amount
to approximately $2865 per year. This gives an ROI for the website of approximately 75 days.
Hardcopy Cost Breakdown
This breakdown is for an individual newletter from the October 2023 edition. This edition
required 14 newsletters. Each newletter was 12 pages (6 sheets) long.
Total production costs were $35.95 for copying, $9.24 postage and $0.86 for other supplies.
Copy 12 pages (6 sheets, duplex) & staple | $2.77 |
Label | $0.011 |
2 Sealers | $0.055 |
Stamp | $0.66 |
|
|
Total | $3.99 |
Data Generator
This application is used to maintain and generate the data that ultimately appears on the website. There are
different sections that are used for handling different types of data. Examples include text for the President's
page, records for the membership list and graphics files for the picture pages.
Data Maintenance
Member, Officer, Treasurer's Report and Event Calendar data are maintained via
dedicated edit screens. These screens include validation mechanisms in order to
maintain data integrity.
Article Generator
This utility formats the President's Page (PP) and Secretary's Report (SR)
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. The article is then saved in the database
to be uploaded to the website.
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), OpenDocument (ApacheOpen or Libre Office) or plain text (.txt).
Email Generator
The Email Generator is the part of 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.
Newsletter Generator
The Newsletter Generator is the part of the application that creates the hard copy newsletter. Operations
are as follows:
- NewsLetter Generation - The user picks the dataset 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. At this point the newletter is ready for finish editing and printing. The generation process takes about 15 - 20 seconds.
- 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.
The Data Generator is a typical three-tier intranet style application.
- The back-end or data layer consists of an Apache Derby SQL database. Currently the tables are Member, Email, Phone, Office, Officer, Calendar, TR, TreasurerReport, HeadlineType, Headline, ArticleType, Article, ArticleText, ChecklistType, ChecklistItem, ChecklistDetail, BackupPathList, BackupJob and GlobalSignature. All data is accessed using Structured Query Language (SQL) via JDBC.
- The middle tier consists of 312 Java classes that contain approximately 42,600 lines of code and 16,925 lines of Javadoc comments. 36 of these classes are servlets that support the front end via AJAX operations. All operations listed in the steps, above, are performed by these Java classes.
- The front end or user interface consists of 165 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 11,600 lines of HTML, and Java code. The JSP pages are supported by 26,250 lines of JavaScript and CSS code.
- All of the code runs on a Tomcat 10 web server/servlet runner and Java OpenJDK 11.
Support Utilities
A number of client side support utilitites have been created to assist the creation of site content.
- Archives - Storage for past issues of the Driveline and original photos. Google Drive.
- OpenOffice Writer Save Macro - Handles setting the page count and saving the newsletter back to the server. OpenOffice Basic - 182 lines.
- Reports - Saved Reports - OpenOffice Calc.
- Secretary's Report Template - Saved Report - OpenOffice Writer.
Car Show Judging (Module 2)
The Car Show Judging (CSJ) module was created to speed the collection of registration data and scores
during a judged car show. The application allows for an arbitrary set of awards and vehicle groupings.
Security, in the form of user ids and passwords, insures against malicious altering of the scoring. Awards
can be assigned to a registration manually or automatically. There is also a group of special awards that
are independent of the scoring.
Registrations will be collected on laptops or tablets and scores will be collected via smartphone. If this is not possible, high speed data entry screens are available to allow data entry from paper.
A number of reports are available to allow the car show to be managed in real time. Two reports are the primary aid in this process. The Not Judged report will display any registrations where the judging is incomplete. The Awards Report will be run after all awards have been assigned and can be used as a script to announce and hand out the awards. Most reports provide a text only output to allow printing via portable ASCII printers.
CSJ is a typical three-tier intranet style application.
- The back-end or data layer consists of an Apache Derby SQL database. Currently the tables are AWARD, AWARDGROUP, CARSHOW, CARSHOWUSER, JUDGINGAREA, REGISTRATION, SCORE, SCORELOG and SPECIALAWARD. All data is accessed using Structured Query Language (SQL) via JDBC.
- The middle tier consists of 92 Java classes that contain approximately 17,000 lines of code and 6650 lines of Javadoc comments. 12 of these classes are servlets that support the front end via AJAX operations. All operations listed in the steps, above, are performed by these Java classes.
- The front end or user interface consists of 64 Java Server Pages that are made up of 3900 lines of HTML, and Java code. The JSP pages are supported by 7900 lines of JavaScript and CSS code.
- All of the code runs on the same Tomcat 10 web server/servlet runner and Java OpenJDK 11 instance as the Data Generator.
Club Elections (Module 3)
The Club Election (CE) module was created to manage the election of officers within an organization.
The application allows for member, non-member and write-in candidates to run for each office. Ballot
Issues, unrelated to the officer positions, are available for bylaw and rule changes. Security, in
the form of user ids and passwords, insures against malicious altering of the voting.
Votes can be entered on laptops or tablets. If this is not possible, voting can use paper ballots and the votes will be entered via a data entry screen.
A number of reports are available to allow the election to be managed in real time. Checklist, Voter Registration and Ballot are used for organizaing the election. Vote Tally and Vote Log are used during the election. Finally the Winner Report generates a script used to announce the election winners. Some reports provide a text only output to allow printing via portable ASCII printers.
CE is a typical three-tier intranet style application.
- The back-end or data layer consists of an Apache Derby SQL database. Currently the tables are ELECTION, OFFICE, NOMINATION, BALLOTISSUE, ELECTIONUSER and VOTELOG. All data is accessed using Structured Query Language (SQL) via JDBC.
- The middle tier consists of 51 Java classes that contain approximately 8300 lines of code and 3200 lines of Javadoc comments. 5 of these classes are servlets that support the front end via AJAX operations. All operations listed in the steps, above, are performed by these Java classes.
- The front end or user interface consists of 34 Java Server Pages that are made up of 1600 lines of HTML, and Java code. The JSP pages are supported by 4250 lines of JavaScript and CSS code.
- All of the code runs on the same Tomcat 10 web server/servlet runner and Java OpenJDK 11 instance as the Data Generator.
What happens when you open the monthly email.
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.
However, for the average user none of this complexity really matters. The normal user, who simply wants to see all of the club information, only needs to follow the steps below:
- When you receive the monthly email, open it
- Click the "Membership List, Treasurer's Report and Birthdays" link in the email
- The website will appear in your browser with a message "The <month> Driveline is now online. The Treasurer's Report, Member List and Birthday pages are available. Remember to refresh your browser if you don't see the latest data."
- Click the OK button
Downloading the Driveline
The newsletter is also being published to a PDF file (in addition to the paper version). The PDF
version is available to all members that supply an email address to the web master.
The Driveline PDF is password protected and encrypted with a 128-bit Data Encryption Standard (DES)
based encryption. This prevents non-members and web-spiders from reading the file. This
protection was necessary because the file contains the entire membership list, including names,
addresses and phone numbers.
To access the PDF Driveline, you must be receiving the monthly email from the web master. That
email contains the password for the current edition. You must also have clicked the link contained
in the email. For more details about this process see above. If everything
is in order, two links will appear on the in the Driveline menu: 1. Download this
month's Drivline, and 2. Driveline Download Instructions. The "Driveline Download Instructions" link takes you to these instructions.
A user that has not received the monthly email, will not see the links, and they will not be present
on the page at all, so the links will not be retrievable via a source code view.
Finally, the Adobe Reader will need to be installed as a browser plugin. To download the Adobe Reader
click here.
To open the PDF Driveline, execute the following steps:
- Click the "Download this month's Drivline" link. If you have pop-up blocking enabled, hold down Ctrl when clicking the link.
- A new window (or tab) will open
- You will be prompted to enter a password
- Enter the Driveline password provided in the monthly email
- If the correct password was entered, the newsletter will appear in the browser. Please note that the password is case-sensitive. So if the password is "Stingray", entering "stingray" will give an invalid password message, and the newsletter will not open.
- Once the Driveline appears, it can be read right on the screen, saved to your hard drive or printed using buttons on the Acrobat toolbar.
Recent Projects
- Java and Tomcat Upgrade
- Email Upgrades
- Car Show Management Module Upgrade
Future Projects
- No major changes are planned at this time.
- Maintenance and small enhancements.
History
- Version 1.0: 2001 - Andy Adams - Page layout that was the basis for the site until 2014. Written with Microsoft FrontPage
- Version 2.0: 2004 - Ed Swaneck - Site's look and feel remained the same. All HTML/CSS hand coded to reduce FrontPage overhead. Site moved to Homestead.com.
- Version 3.0: 2006 - Ed Swaneck - Site code reworked to integrate Excel based member list with the website. Driveline became a report generated from the website. This version introduced the monthly email and encrypted member, treasurer report and birthday setup.
- 3.1: 2008 - Added calendar, officer list to the Excel spreadsheet
- 3.2: 2010 - Added Treasurer's Report table to the Excel spreadsheet
- Version 4.0: 2014 - Removed dependency on Excel by moving all data to a Derby SQL database. Look and feel of the site completely overhauled to better interact with tablets. Code base updated to HTML5/CSS3. All JavaScript code reworked into object oriented structure. All code is now 64-bit.