- From: Matthew Raymond <mattraymond@earthlink.net>
- Date: Wed, 02 Feb 2005 11:00:21 -0500
I like the idea of a calendar in Web Applications 1.0, but I really hate the way they're currently implemented. For one thing, if the |class| attribute contains the name of a calendar attribute, how do you style the element? What happens if you use |class| to style something, and the class happens to be the name of a calendar attribute? Does it style that attribute. Nope, I prefer to stick with good old-fashioned elements. Here's an example of what I'd like to see, minus the fallback content: | <calendar> | <cevent id="e036f260-39b4-11d9-ad3f-fc68600c1802"> | <csummary value="That thing we did that was so fun."></csummary> | <cattr type="status" value="CONFIRMED"></cattr> | <cattr type="class" value="PRIVATE"></cattr> | <cattr type="categories" value="Work"></cattr> | <cattr type="x-mozilla-alarm-default-length" value="0"></cattr> | <cattr type="dtstamp" value="2005-02-02T21:00Z"></cattr> | <cdatetime start="2005-02-30T19:00Z" end="2005-02-30T21:00Z"> | </cdatetime> | </cevent> | </calendar> Basic stuff like the summary and the start and end dates are defined specifically. The rest of the calendar event attributes are defined with <cattr type="attribute-name">. A WA1-compliant UA would then assign the |value| attribute as the value of the calendar event attribute. If |value| is not specified, the child contents are used. The <cdatetime> element is a special case in that it requires <datetime> elements to be in the child contents if |value| is undefined. All contents inside <calendar> that are not calendar-related elements or the contents of calendar-related elements are ignored. As a result, the following would provide proper fallback content: | <calendar> | <table> | <caption>Upcoming Events</caption> | <tr> | <th>Summary</th> | <th>Status</th> | <th>Class</th> | <th>Categories</th> | <th>Start Date</th> | <th>End Date</th> | </tr> | <cevent id="e036f260-39b4-11d9-ad3f-fc68600c1802"> | <tr> | <td><csummary> | That thing we did that was so fun. | </calsummary></td> | <td><cattr type="status">CONFIRMED</cattr></td> | <td><cattr type="class">PRIVATE</cattr></td> | <td><cattr type="categories">Work</cattr></td> | <cattr type="x-mozilla-alarm-default-length" value="0"></cattr> | <cattr type="dtstamp"> | <datetime value="2005-02-02T21:00Z"></datetime> | </cattr> | <cdatetime> | <td><datetime value="2005-02-30T21:00Z"> | 02/30/05 7:00 PM | </datetime></td> | <td><datetime value="2005-02-30T21:00Z"> | 02/30/05 9:00 PM | </datetime></td> | </cdatetime> | </tr> | </cevent> | </table> | </calendar> The above should render in legacy user agents as a table, with values unimportant to presentation not rendered. Yet, for a WA1 UA, it yields the same calendar as the first example. Note that in both examples, if the |type| of a <cattr> element is unknown to the user agent, the value can simply be ignored. The <cattr> would have a set of standardized |type| values that all user agents would support, then individual user agent vendors could implement extensions, with the recommended nomenclature being something like this: x-[company or organization]-[attribute name] This should give us a reasonable amount of flexibility and extensibility without creating a complicated markup scheme. If necessary, <cdatetime> and <csummary> could be rolled into <cattr>, but I'd prefer to have these separate, since they're likely to always be used. That's all for now. Thoughts welcome.
Received on Wednesday, 2 February 2005 08:00:21 UTC