似乎不支持CalDav事件着色 - 同一日历的所有事件都具有相同的颜色 - 日历的主要颜色!
我正在寻找一种替代方法来在"主日历"中获得彩色事件。没有在我的服务器上创建尽可能多的日历,因为我有颜色。
我的第一个想法:创建不同颜色的不同日历。这里有两个问题 1.我可以通过CalDav设置日历的颜色吗?
我希望获得类似内容的原因是,我希望避免为每个子日历创建多个帐户,这反过来会迫使用户单独注册日历(好吧,我可以使用自动检测功能,但是在我的案例研究中,它会让事情变得更加复杂)。
有人对此提出建议吗?
答案 0 :(得分:2)
没有关于如何在日历或事件上进行颜色的RFC标准。
iOS和OSX日历客户端仅支持单一日历颜色,它们无法为单个事件着色(与Outlook不同,后者具有额外的“颜色类别”功能)。
您可以通过WebDAV设置日历的Apple颜色。它是(当前未记录的)Apple特定扩展,是日历集合上的属性。样品:
<calendar-color xmlns="http://apple.com/ns/ical/">#2952A3</calendar-color>
使用常规PROPPATCH在现有日历上(或在创建集合时在MKCOL中)设置颜色:
PROPPATCH /your/calendar/url/ HTTP/1.1
...
<propertyupdate xmlns="DAV:">
<set>
<prop>
<calendar-color xmlns="http://apple.com/ns/ical/">#2952A3</calendar-color>
</prop>
</set>
</propertyupdate>
不幸的是,无法在CalDAV的其他日历中嵌入日历:“日历集合中包含的集合不得包含任何深度的日历集合,即不允许在任何深度的其他日历集合中”嵌套“日历集合“。 RFC 4791
更糟糕的是,大多数客户甚至不允许在任意DAV集合层次结构中使用日历(也就是说,他们只将日历主页看作平面列表而不遍历非日历子集合。)
摘要:没有“合理”的方式来支持每种事件的颜色,主要是因为Apple客户端根本没有这种功能。
P.S。:其他CalDAV客户端可能具有该功能(例如BusyCal),并通过iCalendar X属性将颜色嵌入到事件中,或者再次使用自定义DAV属性。
答案 1 :(得分:0)
似乎有一个更新的RFC,用于指定日历和事件级别的颜色。
https://tools.ietf.org/html/rfc7986
- 醇>
对日历组件的修改
本节详细介绍了对iCalendar中定义的语法的更改 [RFC5545]。新元素在后续章节中定义。
calprops = / *( ; ;以下是可选的, ;但绝不能多次出现。 ; uid / last-mod / url / 刷新/来源/ 颜色 ; ;以下是可选的, ;并且可能不止一次发生。 ; 名称/描述/类别/ 图片 ; )
eventprop = / *( ; ;以下是可选的, ;但绝不能多次出现。 ; 颜色 / ; ;以下是可选的, ;并且可能不止一次发生。 ; 会议/图像 ; )
...
5.9。颜色属性
描述:此属性指定客户端可以使用的颜色 在向用户呈现相关数据时。通常,这 将显示为事件或任务的“背景”颜色。该 value是一个取自CSS3集的不区分大小写的颜色名称 名称,在[W3C.REC-css3-color-20110607]第4.3节中定义。
但我无法使用Mac日历和iOS在事件级别上运行,但我怀疑这些客户最早提出了RFC扩展实现,因为作者来自Apple。
也很遗憾只支持CSS3颜色名称;(