HISTORY.txt CalendarX 0.6.6(stable) January 03 2006 (last modified for CalendarX 0.6.6) by +lupa+ (lupaz on sf.net, lupa at zurven dot com) Released under the GPL (see LICENSE.txt) CalendarX by Lupa Zurven (lupa at zurven dot com) A metacalendar for Plone. History: v0.6.6(stable) Code base: v0.6.5(stable) Status: Stable release, no known bugs, tests as valid XHTML Transitional 1.0 at w3c. Four small bugfixes from 0.6.5: (1) error using restrictToThisListOfSubjects, (2) repeated event icons shown for some events with multiple Subjects selected, (3) unnecessary span tags within certain CSS spans in some views, and (4) CSS for rollover highlighting not properly set in calendar.js. Bugfix #4 also required addition of one new property in the CX_props_css and some changes to the calendar.js file so that it reads properties for highlighting cells properly (see below). mod: getEventsBetweenZC.py: changed q_xsub initialization to an empty list ([]) instead of zero (0) to avoid error on restrictToThisListOfSubjects. mod: getEventsBeforeZC.py: changed q_xsub initialization to an empty list ([]) instead of zero (0) to avoid error on restrictToThisListOfSubjects. mod: CX_props_macros.pt: Eventlister and MMEventlister macros: removed the offensive tal:repeat="subject event/Subject" command that was in place for useEventTypeIcons option. Bug caused multiple showing of the EventTypeIcon if an event had multiple Subjects selected... which is only appropriate for use with the useSubjectIcons property. mod: CX_props_macros.pt: prevnextcurrentlinks: added tal:omit-tag="" to join all the i18n components into the control of one class="center" span. mod: weekbyday.pt: added tal:omit-tag="" to join all the i18n components into the control of one class="day" span. mod: weekbyhour.pt: added tal:omit-tag="" to join all the i18n components into the control of one class="day" span. mod: CX_props_css.props: added calTableDataEventHighlightBackgroundColor property to allow changing the highlighted color of the table cell when user mouseovers an event. mod: calendar.js has been renamed calendar.065.js new: calendar.js.dtml: this is the old calendar.js file, but converted to a Filesystem DTML Method so that it can read in values from the CX_props_css property sheet. In the skins, it still looks like it is named calendar.js (and it is), but on the filesystem it is called calendar.js.dtml. This now reads the following properties in from CX_props_css.props: calTableDataEventHighlightBackgroundColor for rollover highlighting color calTableDataNoEventBackgroundColor for empty calendar cells calTableDataEventBackgroundColor for non-empty calendar cells calTableDataOutOfMonthBackgroundColor for out of month calendar cells NOTE: by default, the new calendar.js.dtml will be used instead of the older calendar.js (renamed to calendar.065.js). To use the old calendar.js, without reading values from the property sheet, change each of the view templates in the header information from reading "calendar.js" to reading "calendar.065.js" and everything should work fine, just as in version 0.6.5 of this software. History: v0.6.5(stable) Code base: v0.6.4(RC1) Status: Stable release, no known bugs, tests as valid XHTML Transitional 1.0 at w3c. Very few changes from RC1. BUGNOTE: Plone 2.1.1, ATContentTypes, event.py has a bug that needs to be patched in order for the Resource Calendar tutorial to work. Bug report is here: http://trac.plone.org/plone/ticket/5037 , and it is described in the updated Manual for CalendarX. I don't know whether the fix will be applied to Plone 2.1.2, due out soon. mod: fix several i18n po files that had DOS carriage returns. mod: minor French translation changes. mod: fix Japanese translation that accidentally included fallback instructions that covered English. This had no effect on earlier versions, but on some installs of Plone 2.1.1 this caused the Japanese translations to appear on browsers set to English. mod: refresh.txt: slight change in text wording. mod: removed DOS carriage returns from several scripts. These caused errors (!) on systems running Python v2.4, but simply were an annoyance on earlier Python systems. Affected: getDictMonth.py, getEventsBetweenZC.py, getMonthName.py, getNameOfPeriods.py. mod: calendar.css.dtml: added a definition for a generic tag to force text-decoration: none; This was not needed in Plone 2.0.5 but is needed with the CSS changes that accompany Plone 2.1.x. docs: mods to CX_props_addeventlink_text.txt to provide proper WARNINGS about the possibility of misconfiguring these options. docs: mods to CX_props_calendar_text.txt to provide more info about limitations of the earlyHour (late night) events processing. docs: CUSTOM.txt to improve directions and sync with the revised Manual. docs: revised Manual (CalendarXManual-065-draft06.pdf). mod: CX_props_macros.pt: minor changes in the prevnextcurrentlinks macro so that XHTML validation is preserved when the JumpToDate widget is not used. mod: CX_props_macros.pt: prevnextcurrentlinks_nojump macro added and is called instead of prevnextcurrentlinks macro at the BOTTOM of each view to avoid the longstanding IE bug where info windows are obscured by the JumpToDate widget. Now that widget will no longer be displayed at the bottom of the view. IF THE PREVIOUS BEHAVIOR IS DESIRED, simply change the views so that they call the prevnextcurrentlinks macro instead of this _nojump version. mod: all the views, changed the call to prevnextcurrentlink macro at the bottom of the page to call the new _nojump macro instead. Read above. mod: getAddNewEventURL.py: added a check on the getHomeURL() call used. Now if there is no Home folder (/Members/username, typically) for the user, and the option is selected to use the Home folder, then CalendarX will set the portal root as the expected folder. Not great, but not an error. MAKE SURE YOU configure your AddNewEventURL settings appropriately for your users and check to make sure that it works. mod: CX_props_calendar.pt: changed default for the earlyDayEventHour property to 0 (midnight) to match earlier calendar behavior. Just set this to 3 (for 3am) or some appropriate value to get it working again for the day and weekbyhour views. History: v0.6.4(RC1) Code base: v0.6.3(beta) Status (first RC): Works great! No known bugs, tests as valid XHTML Transitional 1.0 at w3c. Bugfix release with one new property and one new script. Many small changes/bugfixes in the handling of later and earlier events on the Day and Weekbyhour views, making it much better/smarter than the 0.4 branch behavior. mod: day.pt and weekbyhour.pt: Bug reported that displays events starting in the second half-hour as starting in the first half hour. This bug was introduced by supposed fixes in the 0.6.3 release. Now it tests for both onTheHour and useHalfHours when calculating the "end" DateTime object in the main calendar view area (for each cell). And it works. mod: getDictMonth.py: bugfix in startForContinuing events that caused some events that crossed month boundaries to either not show properly or misbehave in other ways. startForContinuing was improperly defined. mod: month.pt: Bugfix in eventsBefore with showHighlightFullEvent for events not in the month [changes in the main calendar area]. This couples with the getDictMonth changes. Old bug, never reported, probably exists in 0.4 branch as well, but affects just a few special events. mod: getEventDictWeekbyhour.py: changed the calculation of jsStart so that the exact date of start is the one highlighted, rather than adjusting so that wee hour events (early morning) showed up on the previous day. that makes sense sometimes, but is more often confusing. problem: early morning events (like a 6:30 Meeting) don't show up on the proper day unless the startHour is set before that time. Should be a property to set so that you can control when late events for the previous day stop and early events for the next day begin (earlyDayEventHour: default = 3am). new: earlyDayEventHour property to fix problem mod: CX_props_calendar.props: earlyDayEventHour added mod: getDictDay.py: add startForEarly as a DateTime set to the startdate adjusted to earlyDayEventHour. changed eveEnd to equal startForEarly of the next day minus one minute. mod: day.pt: change continuing events list comprehensions to use new startForEarly, and added bigQE query to make it work. no change needed for later events since we modded eveEnd in getDictDay.py. mod: getContLaterEventsWBH.py: changes to continuing events and later events to use the startForEarly property so that early events are included in the continuing events block, and are sorted by new listSortByStart.py problem: changes to continuing events behavior yields some unsorted lists of events in continuing new: listSortByStart.py: sorts a list of events. used in day and weekbyhour views when gathering the continuing events add the new early events. mod: getEventDictDay.py: changed the behavior of jsStart so that Early events highlight the continuingEvents block. mod: day.pt: changed id of continuingEvents block to dayviewstarthour to multiply it by periodFactor. made no difference before, but now that we are highlighting this block, it needs a proper id. mod: weekbyhour.pt: set id of TH tags for each day so that it can be highlighted by the early events someday (previously not highlighted for any events, and not implementing this right now). also changed id of continuingEvents block to weekviewstarthour to multiply it by periodFactor. made no difference before, but now that we are highlighting this block, it needs a proper id. mod: getEventDictWeekbyhour.py: changed to use earlyHour so that early events highlight the continuing events block. mod: getEventDictMMonth.py: Fixed a bug where events that crossed over a month into the month AFTER the last month still were trying to highlight into that month, yielding a list out of range error. now tests for that situation to exclude those events from the crossover highlighting calculations in the jsCrossoverFlag flag. mod: multimonth.pt: add nummonths to the parameters sent to getEventDictMMonth.py for use in the bugfix above. mod: weekbyhour.pt: change definitions for stForQuery, enForQuery so that the bigQ query will recover ALL the events of the week from midnight to midnight, not just from startHour to endHour. changes defined in getDictWeekbyhour. mod: getDictWeekbyhour.py: added stForQuery and enForQuery so that the query goes from midnight at the beginning of the week until earlyHour in the wee hours of the first day of the following week, to catch those pesky trailing late late events. History: v0.6.3(beta) Code base: v0.6.2(alpha) Status (first beta): Works great! No known bugs, tests as valid XHTML Transitional 1.0 at w3c. Several bugfixes (all known ones, and a couple minor, unreported ones discovered en route). Includes three new translations and a UI enhancement: Javascript controller added to the Category chooser checkboxes for sensible handling of the "View All" choice. All views now work well, this is a very usable release. new: po files for Czech, Danish and Dutch translations. mod: ALL po files modified by +lupa+ to enable proper usage of the month of May in languages where "May" has more than three characters. In the 0.6.2 release, any attempt to use a 3-char abbreviated month name came out as the full month name because of this. mod: CX_props_macros.pt: prevnextcurrentlinks: modded the getMonthName function call in the JumpToDate widget to properly handle use of 3-char month abbreviations (see po file mods above). mod: weekbyhour.pt: mod to the Day listings across the top of the calendar view to properly handle 3-char month names (see po file mods above). mod: CX_props_macros.pt: subjectlinks: added code to use an onclick JS method (fixCategories) to add better UI experience when clicking on View All. Now the behavior is that View All toggles all the other category choices on and off, and if View All is selected and one of the other Categories is clicked, the View All choice becomes unchecked immediately. This has been a requested feature since the Multiple Selection widget was first introduced, but I never knew enough Javascript to want to learn to do this (and no one else offered code for it). Now I do know enough, and here we are. mod: calendar.js: added a new "fixCategories" function that is used by the subjectlinks macro to control the UI enhancement mentioned above. mod: all view templates (day, weekbyhour, weekbyday, month, multimonth, help): added a line: context python:here; which fixes a possible Name Error when installing CalendarX on older Zope (like 2.6.x ish). mod: day.pt: squashed a bug on line 161 that caused problems with events not showing up for the half-hour views. mod: day.pt: added tal:omit-tag="" to a span around the eventlisting to fix a minor XHTML validation problem. mod: CX_props_calendar.pt: useHalfHours default value changed to blank (false) so that half-hour periods are NOT the default style for Day and WeekByHour views. Using half-hours is not necessary for most installations and it slows view rendering down somewhat. mod: getEventDictWeekbyhour.py: fixed the value of periodsInView by subtracting 1. Also changed a misspelling of the script name in the parameter block at the top of the script. mod: getEventDictDay.py: fixed the value of periodsInView by subtracting 1. mod: getEventDictMMonth.py: several lines of code added to fix the rollover highlighting bug where events that span a month boundary failed to highlight properly into the trailing month. Now it works fine, although the highlighting extends only into a second month... any events that span portions of three months will only show highlighting in the first two months. mod: getNumOfDays.py: changes to fix code comments. No code changes. mod: getDictCommon.py: removed some cruft and a couple of fairly naked Try/Except clauses, and some sloppy coding, thanks to an eagle-eyed user (yes you, Johannes). There is still cruft around, but at least it's a start. mod: day.pt, weekbyday.pt, weekbyhour.py, getEventDictWeekbyday.py, getEventDictWeekbyhour.py, getEventDictDay.py: a bugfix for day and week views: we now pass the currentDate as a parameter from the view templates into the getEventDictXXX scripts. This fixes the "birthday bug" reported by Johannes Ammon, where the Jump To Date widget value was not being read by the script. It shouldn't be; we already have determined that value, and now we pass it in. The bug only seemed to affect the day view, but it could well have impacted the week views as well, so it is now moot. Month and multimonth views are unaffected. History: v0.6.2(alpha) Code base: v0.6.1(alpha) Status (third alpha): Works well, with one known minor display bug in the multimonth view documented below. Several bugfixes, plus i18n extended to include seven language po files with the addition of two (es and ca, Spanish and Catalan), and a re-translation of parts of the German po file. Please create more po files and submit your translations to us! I hope to make another release with this bug fixed soon so that I can make a beta release of the 0.6 branch as soon as possible. Meanwhile, this is a really usable i18n version of CalendarX. new: po files for calendarx-es.po and calendarx-ca.po. mod: calendarx-de.po re-translated by Johann. bugfix: getDictCommon.py bug: day.pt isn't showing next day properly. changed lines 101-103 appropriately (copy-paste helmet malfunction, sorry). And cleaned out unnecessary comments here and there. bugfix: getDictDay.py bug: continuing events show ones that start at the beginning of the day (ex. 8am events show as both continuing and normal events with default config). this bug also present in 0.4.15 (just noticed this). fix is use startDate, instead of ADDING one minute. also some cleaning of remarks, etc. mod: getNumOfPeriods.py cleaned up some variable names for clarity. bugfix: getEventDictDay.py bug: continuing events didn't calculate rollover parameters jsStart and jsEnd correctly. now they seem to. also a change for later events (multiply by periodsFactor). finally, fixed the regular events jsStart and jsEnd too. bugfix: day.pt added bigQL query for later events, mods to make it work. and fixed the handling of halfhours in the start, end datetimes so that it actually DOES query on the half hours and not just on the hours. Sheesh! My lysdexia gets in the way timesomes. Ok, now the day view WORKS. bugfix: day.pt later events in the day view SHOULD be those that start in the late evening (after 8pm in the default configuration) and wee hours of the next day... as long as they end before the start of the next day, so that they would NOT be considered continuing events of the next day. But currently that's the not quite the behavior... so I'm changing this in query for laterevents to only call events that (1) start after end of this viewable day and (2) start before the next viewable day and (3) end before the beginning of the next viewable day. NOTE: this means that wee hour events (like a party on July 8 from 1am to 3am) will show up on the Later Events section of the day before (July 7) and not on July 8, unless July 8 has very early start time set in the CX_props_calendar property sheet. bugfix: weekbyhour.pt Needed a couple more changes to handle halfhours properly. Now it seems to. bugfix: getEventDictWeekbyhour.py Several changes to continuing, regular and later events to calculate jsStart, jsEnd properly to fix rollover highlighting. BUG: multimonth view: Events that extend across month boundaries ONLY show the rollover highlighting in the month where they start, and NOT in the following months as they should. This bug will be fixed in a future release of CalendarX (0.6.3 hopefully). bugfix: multimonth.pt. Minor changes to help fix rollover highlighting. Now calls a different eventlisting macro (mMeventlisting). bugfix: calendar.js Created several new functions to handle passing of arrays of td ids to highlight and unhighlight. The old versions just used jsStart and jsEnd to control highlighting, which limits you to one contiguous block of integers. Now you can send an array of as many start, end pairs as you like. The multimonth view uses this now, but I only am sending it one pair (so it could be used in the other views too). But in the upcoming fix, I will use it to handle multiple highlighting blocks that are not necessarily contiguous (the BUG described above). bugfix: CX_props_macros.pt: new macro called mMeventlisting which replaces the eventlisting macro for the multimonth view only. This version is only different in that it uses a specially modified mMmouseOverEvent and mMmouseOutEvent call in calendar.js, and sends jsArray instead of jsStart and jsEnd. new: getEventDictMMonth.py 0.6.1 used the month version of this script, but there was definitely a need for an independent version, hence this addition. In particular, it sends jsArray to the calendar.js library, rather than jsStart and jsEnd that the other views use. bugfix: getDictMultimonth.py Just a little bit of code cleanup, nothing major. puzzle: I didn't fix the multimonth rollover completely because it would have been an ugly hack to do so. Instead I am releasing 0.6.2 with the bug still in place, but restricted to only events that overlap two or more months, and it is only a minor display bug... the multimonth view is usable otherwise. I'm pursuing a new approach toward fixing this bug that may help ALL the views become faster and have better separation of logic and content. History: v0.6.1(alpha) Code base: v0.6.0(alpha) Status (second alpha): i18n extended to include five language po files with more entries and more comments (de,en,fr,it,jp). Please create more po files and submit your translations to us! Changed behavior of xsub from that of the 0.4 branch. New multimonth view to allow multiple months (up to 12) to be shown on one page. Modded the weekbyhour and day views to allow use of half-hour increments as well as one-hour increments. Modded the arrangement of calheader so that JumpToDate widget is out of the way, and changed some CSS settings to help with that. Couple of small bugfixes and maybe a few other things here and there that I changed and didn't document... new: multimonth.pt: minor tweaks to a month view to now show several months at one time, in sequence. Next/Prev months still move it forward one month at a time. Default is 3 months... if you want to change its name in the tabs from "3 months" to something else, then change the language files, where it is called "label_multimonth". Then reindex the language files for CalendarX or else you won't see your label change (or just restart Zope to reindex ALL your po translation files). new: multimonth.css.html, getDictMultimonth.py, getEventDictMultimonth.py: all in support of multimonth.pt view. Validates as proper XHTML format too (glad I checked, it didn't at first). new: getNumPeriods.py, getNumWeeksInMonthToShow.py to support halfhours and multimonths. new: getContLaterEventsWBH.py: this is a script that is backported from 0.5 branch to help optimize the WeekByHour view queries. new: calendarx-it.po: mostly complete. needs a few mod translations. new: calendarx-jp.po: mostly complete. needs a few mod translations. mod: calendarx-fr.po: mostly complete. needs a few mod translations. mod: calendarx-de.po: mostly complete. needs a few mod translations. mod: calendarx-en.po: complete. slightly redone in several places, so all other translations should be re-examined for completeness and tested. mod: CX_props_macros.pt for translation changes, and some other changes, including new macros. See change notes within that file. mod: getEventsBetweenZC.py, getEventsBeforeZC.py, getEventsBetweenAQ.py, getEventsBeforeAQ.py: Changed the behavior of xsub so that choosing a subject in addition to the 'View All' will override the 'View All' choice and show only the selected subjects. This makes more sense to the user, and should be a bit less frustrating. Would be nice to have some JScript logic that shows this (uncheck 'View All' when another selection is made). mod: day.pt, weekbyhour.pt, getDictCommon.py, getDictDay.py, getEventDictDay.py, getEventDictWeekbyhour.py, getDictWeekbyhour.py, to support halfhours. mod: calendar.css.html, CX_props_calendar.props, CX_props_css.props, to support changes in the header, looks better now, some comments added, and one new property: headerPadding. mod: CX_props_calendar.props: new properties added: useHalfHours, numMonthsForMultiMonthView, and showHeaderTitleAndIcons. mod: speedups in all views and corresponding getDictViewname.py scripts. For each one, I now call the getEventsBefore query only once (because it is expensive to call in every single cell of the calendar) and instead use a much faster list comprehension to parse for events. This is a backported strategy from the 0.5 branch to speed this up a good bit. bugfix: getEventIcons.py: mod to trap AttributeError for bad icon name, and cause it to return icon = '', thereby showing NO icon instead of error msg bugfix: calendar.css.html: mods to the calinfo and inforow divs so that switching to LARGE TEXT mode doesn't cause text blocks to override each other... all it really took was changing the box width to "20em" instead of "250px" because em is relative to the font-size, instead of being fixed. bugfix: CX_props_macros.pt: popuptextbox macro: changed the Subject so that it puts a space between each subject. So now it shows "This, That, Other" instead of "This,That,Other"... this way the subject line will use the whitespace to wrap appropriately within the popup box. History: v0.6.0(alpha) Code base: v0.4.15b(stable) Status (first alpha): i18n folder added and basic i18n features added to macros as a first step toward full i18n of the stable 0.4 branch. Addition of these changes to the 0.5 branch will follow. new: i18n folder new: calendarx.pot: Listing of all the msgids. The msgstrs mostly blank to allow default values from the page templates to come through. Beginning to use format strings for the date-time strings because it's a good idea, formatting of date-time strings is not uniform across boundaries. Also added a lot of comments to help explain them all. new: calendarx-fr.po: French translation. Added comments in too. new: calendarx-de.po: German translation. Added comments in too. new: calendarx-en.po: (headers, but empty so that English passes through to the calendarx.pot defaults) mod: CX_props_macros.pt: many small changes to accomodate i18n, in nearly every macro. mod: weekbyhour.pt: some i18n changes for day headings and "Continuing" and "Later events" labels. Probably not complete. mod: weekbyday.pt: some i18n changes for day headings and "Continuing" and "Later events" labels. Probably not complete. mod: day.pt: some i18n changes for event headings and "Continuing" and "Later events" labels. Probably not complete. mod: month.pt: some i18n changes for "Continuing" and "Later events" labels. Probably not complete. mod: getEventsBeforeZC.py, and the other three such scripts. Added a three line mod that shows "private" events for group members who have been given appropriate privilege to see them. This improves the Group calendar functionality. mod: CX_props_calendar.pt: new property "showPrivateEventsToGroupMembers" (default=False) that when turned on will allow private group events to be shown. To use, share your private events (with the Sharing tab) with one of your groups by making them proxy owner of the event. Then the events they are proxy owners of can show up on the calendar. mod: getDictCommon.py: i18n change for allEventsChangeString (return a label instead of the string, then get the string from the po file, even for English). todo: a few more i8n mods, especially formats for dates, times. [for pre v0.6.0 History, see HISTORY.txt files with those releases.]