CalDav事件着色:现有的替代品?

时间:2015-06-16 07:37:50

标签: synchronization caldav vcalendar

似乎不支持CalDav事件着色 - 同一日历的所有事件都具有相同的颜色 - 日历的主要颜色!

我正在寻找一种替代方法来在"主日历"中获得彩色事件。没有在我的服务器上创建尽可能多的日历,因为我有颜色。

我的第一个想法:创建不同颜色的不同日历。这里有两个问题 1.我可以通过CalDav设置日历的颜色吗?

  1. 是否可以"嵌入"一个"主日历"中的不同日历,每个子日历有一种颜色?
  2. 我希望获得类似内容的原因是,我希望避免为每个子日历创建多个帐户,这反过来会迫使用户单独注册日历(好吧,我可以使用自动检测功能,但是在我的案例研究中,它会让事情变得更加复杂)。

    有人对此提出建议吗?

2 个答案:

答案 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

  
      
  1. 对日历组件的修改

         

    本节详细介绍了对iCalendar中定义的语法的更改   [RFC5545]。新元素在后续章节中定义。

         

    calprops = / *(               ;               ;以下是可选的,               ;但绝不能多次出现。               ;               uid / last-mod / url /               刷新/来源/ 颜色               ;               ;以下是可选的,               ;并且可能不止一次发生。               ;               名称/描述/类别/               图片               ;               )

         

    eventprop = / *(                ;                ;以下是可选的,                ;但绝不能多次出现。                ;                颜色 /                ;                ;以下是可选的,                ;并且可能不止一次发生。                ;                会议/图像                ;                )

  2.   

...

  

5.9。颜色属性

     

描述:此属性指定客户端可以使用的颜色         在向用户呈现相关数据时。通常,这         将显示为事件或任务的“背景”颜色。该         value是一个取自CSS3集的不区分大小写的颜色名称         名称,在[W3C.REC-css3-color-20110607]第4.3节中定义。

但我无法使用Mac日历和iOS在事件级别上运行,但我怀疑这些客户最早提出了RFC扩展实现,因为作者来自Apple。

也很遗憾只支持CSS3颜色名称;(