I've been hacking away at phpicalendar for quite a few months, fixing numerous bugs and even adding a few features here and there. Jim Hu expressed interest in the work when I briefly discussed it with him some time ago. Today, I decided to commit the full patchset (CVS patchset 1260) so that it can be better tested.
This update contains some big changes to templates. Specifically, most of the duplicate *.tpl files between templates have been deleted. This just means any required files will be pulled out of the templates/default/ directory. There is a new CSS class within default.css (one file in each template directory) called "maintable" You can style this class with a width of 100% (as an example) to make all pages variable-width, instead of the default of ~1000 static pixels. These template changes may cause issues when upgrading if your calendar templates have been modified.
The first noticeable change is the formation of tables. Almost all tables are now using the CSS2 table-layout attribute, with a value of "fixed". This forces compliant browsers to render table cells with exactly equal widths/spacing. This has been tested successfully in: Internet Explorer 7, Internet Explorer 8, Firefox 3.0, Firefox 3.5, and Safari 4.
The next noticeable difference is the addition of "Nice-Titles" http://www.kryogenix.org/code/browser/nicetitle/ The current implementation puts the CSS and background image into the root directory, instead of making these template-dependent. This could probably be changed, with some testing. Nice-Title works as a JavaScript that creates a partially transparent floating division when you hover your cursor over a link element with a title attribute. PHPicalendar puts event descriptions/additional information into link titles. With JavaScript enabled, you will get HTML/CSS-ized titles with pretty styling. Some CSS3 is used in this feature to add round borders and text-shadow. These two CSS3 features only work in (as mentioned tested above) Firefox 3.5 and Safari 4.
Nice-Title has some "configurable" options, too. Open nicetitle.js and you will find available configurable variables at the top of the script. The defaults are OK for more installations, but some might prefer to disable FOLLOW_MOUSE, for example.
Several other important XSS fixes have also been integrated with the changes required for Nice-Title. HTML tags should now be fully stripped, and special characters (tab, line break) should be properly converted for HTML output.
Additional changes are listed in the README.
This is a very large patch (several changes made to 60 files) so it needs a lot of testing. Anyone willing to help with testing can pull the latest revision from CVS and give it a go.
