Several weeks ago, I wrote a Tech Tip called "Validating HTML Forms with Message Subfiles" in which I described how to manage errors in HTML forms.
This time, I will expand the HTML form by adding a date picker using a very cool DHTML/JavaScript calendar that is published as open source on the Web. If you have not read the previous tip and installed the code, fear not. This tip includes a zip file that contains some simple HTML documents that show the calendar in use.
If you go to Google and enter "JavaScript Calendar," you get about 88,500,000 hits (which are not all calendars), so to find the best calendar can be a tremendous task. I think Dynarch.com publishes one of the best calendars on the Web, and it's open source, so I decided that this is the one I will show you how to implement.
A few features make this calendar stand out:
- Multilingual
- Easy to implement and change
- Shows week numbers
- Different skins
- Easy to navigate
- And much more
The documentation for all the different functions and methods can be quite overwhelming at first for RPG programmers, because this is quite different from what we normally work with. So to save you some reading and digging into the unknown, I have compiled a zip file that contains just the files you need to get started.
Note: Because there are quite a lot of links and downloads in this Tech Tip, I have listed them all at the end of this tip.
Now, let's get to work.
Once again, I expect a few things from you:
- Your i5 must be able to run and execute CGI programs.
- A little knowledge about HTML forms, JavaScript, and CSS would help.
- You must know where your Web server document root is.
- You have installed the programs in "Validating HTML Forms with Message Subfiles" (if not, just read on and download the simple HTML example at the end of the tip).
When the calendar is installed, your HTML form will look like the figure below.
Figure 1: Here's your basic calendar. (Click images to enlarge.)
The calendar uses a lot of sophisticated JavaScript and CSS and works like a plug-in on your Web site. This means that you do not have to understand what actually happens inside the scripts; you just pass some parameters and include the files on your page. Like magic, it works!
Follow these steps to make it all work:
On your i5 Web server, create a directory in your document root called "calendar" (without the quotes) and FTP the folders called css and javascript to it. When you're done, the directory structure should look like this:
Figure 2: Your directory should now have this structure.
The figures in the parentheses show how many objects there should be in the various directories.
This might be the hardest part if you are unfamiliar with the configuration of the Web server, but to give you a hint, look for your start page, which normally is called index.htm or index.html, and work your way out from there.
Remember member FORM002H from the previous tip? Open it in your editor of choice and add the following lines:
Figure 3: Add some code to FORM002H.
This code identifies where all the JavaScript and CSS definitions are placed. Please note the /calendar/javascript/lang/calendar-en.js line; this is where you define which language the calendar should use. I have included nine languages in the calander.zip file. But you can download a lot more from the original calendar zip file.
I have found that some of the language files contain errors, so you might have to dig into that in order to make it work. Look for the variable Calendar._FD = 0; if it is not in the language file, the calendar will not work. Then look at calendar-en.js, compare it to the language file in error, and add the missing variables.
Also note the calendar-win2k-1.css file. This includes the CSS descriptions that define the look and feel of the calendar. The calendar.zip file includes six skins.
Figure 4: This section defines the "show calendar" button.
Figure 5: This section sets up the parameters passed to the calendar. By changing these, you can easily change the calendar's look and feel.
The inputField is the ID of the HTML form field where you want the date to be parsed into. (Note that uppercase and lowercase letters do matter.)
The ifFormat controls the date format. To change it to mm/dd/yyyy plus the abbreviated weekday name, change the line to "%m/%d/%Y %a". The date passed back to the inputField will now be in mm/dd/yyyy format.
The "button" is the name of the "show calendar" button.
If you want the calendar not to show week numbers, add the following line before the button:
weekNumbers : false,
Also have a look at the reference document, which explains all that can be done with this great piece of software.
Done! That's all you need to get started. Now try loading the page by entering the following URL in your browser: http://yourserver/cgi-bin/form002. You should see the following:
Figure 6: Your page is loaded!
You should now be able to press the button to see the calendar and select a date.
Note that you can use the following keys to navigate the calendar:
Figure 7: Use these keys to navigate the calendar.
Downloads
- FTP all the files in calendar.zip to your i5 Web server root (calendar.zip)
- Restore the HTML skeleton source file to your cgilib in QRPGSRC (FORM002H.zip)
- Calendar reference document (doc.zip)
- Full calendar from Dynarch.com (click here)
Whether you have installed everything or not, please download the simple-example.zip file, which contains both a pop-up calendar example and a flat calendar example.
In this tip, I have only scratched the surface of all the features in the calendar, so once you are up and running, I encourage you to visit the Dynarch calendar site and read and download the whole calendar package. There is even a commercial version with a lot more features if you should ever need it.
This completes the TechTip for this time, but in the future, I will add more functions to the HTML form (such as more prompting and more nice JavaScript features), so please stay tuned.
Jan Jorgensen is a programmer at Electrolux Laundry Systems Denmark. He works with stuff like RPG, HTML, JavaScript, and Perl. You can reach him at
LATEST COMMENTS
MC Press Online