• 上述のように、タスク、マイルストーン、プロジェクト、予定(イベント)で時刻を指定できるようになったのに伴い、標準 (standard) の date を定義し、カレンダー画面の表示方法に変更を加えました。
An Entry may have any number of standard dates. Each standard date has a logical name, and a definition, which is implemented by the Entry's associated EntryClass.
An Entry may have a single calendar date range, also defined by its EntryClass.
The default definitions of both standard named dates and calendar date range are in terms of entry properties, whose names are in turn specified in EntryClass configuration properties. (See, e.g., config/entry/classes/task.properties). But developers may create subclasses of EntryClass that implement custom behaviors by overriding one or more methods defined in EntryClass, e.g., getStandardDate(Entry entry, String standardDateName).
Standard named dates are represented by instances of the new interface com.traction.sdk.UTCDisplayDate, and calendar date ranges are represented by instances of the new interface com.traction.sdk.UTCCalendarDateRange. The new methods getStandardDate(String name) and getStandardCalendarDateRange(boolean forIcal) may be used to access these values. The implementations of those methods will defer to the EntryClass methods described above.
The new SDL tag entry.standarddate may be used to render a formatted date string (using any valid attributes for a date tag) for a named standard date. The tag entry.standarddate.allday is a boolean tag that allows the SDL author to distinguish between a named standard date that represents an "all day" date (that is, a date that should be treated as appearing to users in any time zone as the day for a particular calendar date), versus one that represents a particular time (independent of time zone, meaning that it will appear differently to users in different time zones).
Tags like entry.duedate are now implemented in terms of the entry.standarddate tag, so that they can support being treated as an "all day" date or a date with a time, as appropriate. If your SDL code makes use of these tags, you may need or want to change them. In particular, there is no need to indicate whether a date being rendered is an "all day" date, and in fact the allday= attribute will be ignored. Instead, the UTCDisplayDate object used by the tag carries that information.
The new SDL tag family entry.calendar.daterange.* should be used when generating iCalendar formatted output. See src/com/traction/sdl/calendar/ical-pm.sdl for examples of how to use this, including the new datemode attribute value, "ical".