view release on metacpan or search on metacpan
2425262728293031323334353637383940414243
$calendar
->as_string;
DESCRIPTION
A Data::ICal object represents a
"VCALENDAR"
object as
defined
in the
iCalendar protocol (RFC 2445, MIME type
"text/calendar"
), as implemented
in many popular calendaring programs such as Apple's iCal.
Each Data::ICal object is a collection of
"entries"
, which are objects
of a subclass of Data::ICal::Entry. The types of entries
defined
by
iCalendar (which refers to them as
"components"
) include events, to-
do
items, journal entries, free/busy
time
indicators, and
time
zone
descriptors; in addition, events and to-
do
items can contain
alarm
entries. (Currently, Data::ICal only implements to-
do
items and events.)
Data::ICal is a subclass of Data::ICal::Entry; see its manpage
for
more
methods applicable to Data::ICal.
METHODS
new [
data
=>
$data
, ] [
filename
=>
$file
], [
vcal10
=>
$bool
]
Creates a new Data::ICal object.
doc/rfc2445.txt view on Meta::CPAN
394041424344454647484950515253545556575859
This memo is formatted as a registration
for
a MIME media type per
[RFC 2048]. However, the
format
in this memo is equally applicable
The proposed media type value is
'text/calendar'
. This string would
label a media type containing calendaring and scheduling information
encoded as text characters formatted in a manner outlined below.
This MIME media type provides a standard content type
for
capturing
calendar event, to-
do
and journal entry information. It also can be
used to convey free/busy
time
information. The content type is
suitable as a MIME message entity that can be transferred over MIME
based email systems, using HTTP or some other Internet transport. In
Dawson & Stenerson Standards Track [Page 1]
doc/rfc2445.txt view on Meta::CPAN
697071727374757677787980818283848586878889
In order to avoid confusion
with
this referenced work, this memo is
to be known as the iCalendar specification.
This memo defines the
format
for
specifying iCalendar object methods.
An iCalendar object method is a set of usage constraints
for
the
iCalendar object. For example, these methods might define scheduling
messages that request an event be scheduled, reply to an event
request,
send
a cancellation notice
for
an event, modify or replace
the definition of an event, provide a counter proposal
for
an
original event request, delegate an event request to another
individual, request free or busy
time
, reply to a free or busy
time
request, or provide similar scheduling messages
for
a to-
do
or
journal entry calendar component. The iCalendar Transport-indendent
Interoperability Protocol (iTIP)
defined
in [ITIP] is one such
scheduling protocol.
Table of Contents
1 Introduction.....................................................5
2 Basic Grammar and Conventions....................................6
2.1 Formatting Conventions .......................................7
doc/rfc2445.txt view on Meta::CPAN
285286287288289290291292293294295296297298299300301302303304305
unwired transport such as infrared might also be used.
The memo also provides
for
the definition of iCalendar object methods
that will
map
this content type to a set of messages
for
supporting
calendaring and scheduling operations such as requesting, replying
to, modifying, and canceling meetings or appointments, to-dos and
journal entries. The iCalendar object methods can be used to define
other calendaring and scheduling operations such a requesting
for
and
replying
with
free/busy
time
data. Such a scheduling protocol is
defined
in the iCalendar Transport-independent Interoperability
Protocol (iTIP)
defined
in [ITIP].
The memo also includes a formal grammar
for
the content type based on
the Internet ABNF
defined
in [RFC 2234]. This ABNF is required
for
the implementation of parsers and to serve as the definitive
reference
when
ambiguities or questions arise in interpreting the
descriptive prose definition of the memo.
2 Basic Grammar and Conventions
doc/rfc2445.txt view on Meta::CPAN
614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643Dawson & Stenerson Standards Track [Page 11]
RFC 2445 iCalendar November 1998
The file extension of
"ifb"
is to be used to designate a file
containing free or busy
time
information consistent
with
this MIME
content type.
Macintosh file type codes: The file type code of
"iCal"
is to be used
in Apple MacIntosh operating
system
environments to designate a file
containing calendaring and scheduling information consistent
with
this MIME media type.
The file type code of
"iFBf"
is to be used in Apple MacIntosh
operating
system
environments to designate a file containing free or
busy
time
information consistent
with
this MIME media type.
3.11 Contact
for
Further Information:
Frank Dawson
6544 Battleford Drive
Raleigh, NC 27613-3502
919-676-9515 (Telephone)
919-676-9564 (Data/Facsimile)
Frank_Dawson
@Lotus
.com (Internet Mail)
doc/rfc2445.txt view on Meta::CPAN
966967968969970971972973974975976977978979980981982983984985986the following notation:
parameter = altrepparam ; Alternate text representation
/ cnparam ; Common name
/ cutypeparam ; Calendar user type
/ delfromparam ; Delegator
/ deltoparam ; Delegatee
/ dirparam ; Directory entry
/ encodingparam ; Inline encoding
/ fmttypeparam ; Format type
/ fbtypeparam ; Free/busy
time
type
/ languageparam ; Language
for
text
/ memberparam ; Group or list membership
/ partstatparam ; Participation status
/ rangeparam ; Recurrence identifier range
/ trigrelparam ; Alarm trigger relationship
/ reltypeparam ; Relationship type
/ roleparam ; Participation role
/ rsvpparam ; RSVP expectation
/ sentbyparam ; Sent by
/ tzidparam ; Reference to
time
zone object
doc/rfc2445.txt view on Meta::CPAN
1267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312
Example:
ATTACH;FMTTYPE=application/binary:ftp://domain.com/pub/docs/
agenda.doc
4.2.9 Free/Busy Time Type
Parameter Name: FBTYPE
Purpose: To specify the free or busy
time
type.
Format Definition: The property parameter is
defined
by the following
notation:
fbtypeparam =
"FBTYPE"
"="
(
"FREE"
/
"BUSY"
/
"BUSY-UNAVAILABLE"
/
"BUSY-TENTATIVE"
/ x-name
; Some experimental iCalendar data type.
/ iana-token)
Dawson & Stenerson Standards Track [Page 23]
RFC 2445 iCalendar November 1998
; Some other IANA registered iCalendar data type.
Description: The parameter specifies the free or busy
time
type. The
value FREE indicates that the
time
interval is free
for
scheduling.
The value BUSY indicates that the
time
interval is busy because one
or more events have been scheduled
for
that interval. The value
BUSY-UNAVAILABLE indicates that the
time
interval is busy and that
the interval can not be scheduled. The value BUSY-TENTATIVE indicates
that the
time
interval is busy because one or more events have been
tentatively scheduled
for
that interval. If not specified on a
property that allows this parameter, the
default
is BUSY.
Example: The following is an example of this parameter on a FREEBUSY
property.
FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z
4.2.10 Language
doc/rfc2445.txt view on Meta::CPAN
19711972197319741975197619771978197919801981198219831984198519861987198819891990The date
with
local
time
form is simply a date-
time
value that does
not contain the UTC designator nor does it reference a
time
zone. For
example, the following represents Janurary 18, 1998, at 11 PM:
DTSTART:19980118T230000
Date-
time
values
of this type are said to be
"floating"
and are not
bound to any
time
zone in particular. They are used to represent the
same hour, minute, and second value regardless of which
time
zone is
currently being observed. For example, an event can be
defined
that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day,
no
matter which
time
zone the person is in. In these
cases, a
local
time
can be specified. The recipient of an iCalendar
object
with
a property value consisting of a
local
time
, without any
relative
time
zone information, SHOULD interpret the value as being
fixed to whatever
time
zone the ATTENDEE is in at any
given
moment.
This means that two ATTENDEEs, in different
time
zones, receiving the
same event definition as a floating
time
, may be participating in the
event at different actual
times
. Floating
time
SHOULD only be used
where that is the reasonable behavior.
doc/rfc2445.txt view on Meta::CPAN
263326342635263626372638263926402641264226432644264526462647264826492650265126522653Dawson & Stenerson Standards Track [Page 47]
RFC 2445 iCalendar November 1998
Time
values
of this type are said to be
"floating"
and are not bound
to any
time
zone in particular. They are used to represent the same
hour, minute, and second value regardless of which
time
zone is
currently being observed. For example, an event can be
defined
that
indicates that an individual will be busy from 11:00 AM to 1:00 PM
every day,
no
matter which
time
zone the person is in. In these
cases, a
local
time
can be specified. The recipient of an iCalendar
object
with
a property value consisting of a
local
time
, without any
relative
time
zone information, SHOULD interpret the value as being
fixed to whatever
time
zone the ATTENDEE is in at any
given
moment.
This means that two ATTENDEEs may participate in the same event at
different UTC
times
; floating
time
SHOULD only be used where that is
reasonable behavior.
In most cases, a fixed
time
is desired. To properly communicate a
doc/rfc2445.txt view on Meta::CPAN
282328242825282628272828282928302831283228332834283528362837283828392840284128422843
as DtStart;TzID=US-Eastern:19980714T120000.
4.6 Calendar Components
The body of the iCalendar object consists of a sequence of calendar
properties and one or more calendar components. The calendar
properties are attributes that apply to the calendar as a whole. The
calendar components are collections of properties that express a
particular calendar semantic. For example, the calendar component can
specify an event, a to-
do
, a journal entry,
time
zone information, or
free/busy
time
information, or an
alarm
.
The body of the iCalendar object is
defined
by the following
notation:
icalbody = calprops component
calprops = 2*(
;
'prodid'
and
'version'
are both REQUIRED,
; but MUST NOT occur more than once
doc/rfc2445.txt view on Meta::CPAN
285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893Dawson & Stenerson Standards Track [Page 51]
RFC 2445 iCalendar November 1998
)
component = 1*(eventc / todoc / journalc / freebusyc /
/ timezonec / iana-comp / x-comp)
iana-comp =
"BEGIN"
":"
iana-token CRLF
1
*contentline
"END"
":"
iana-token CRLF
x-comp =
"BEGIN"
":"
x-name CRLF
1
*contentline
"END"
":"
x-name CRLF
An iCalendar object MUST include the
"PRODID"
and
"VERSION"
calendar
properties. In addition, it MUST include at least one calendar
component. Special forms of iCalendar objects are possible to publish
just busy
time
(i.e., only a
"VFREEBUSY"
calendar component) or
time
zone (i.e., only a
"VTIMEZONE"
calendar component) information. In
addition, a complex iCalendar object is possible that is used to
capture a complete snapshot of the contents of a calendar (e.g.,
composite of many different calendar components). More commonly, an
iCalendar object will consist of just a single
"VEVENT"
,
"VTODO"
or
"VJOURNAL"
calendar component.
4.6.1 Event Component
Component Name:
"VEVENT"
doc/rfc2445.txt view on Meta::CPAN
29342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956
resources / rdate / rrule / x-prop
)
Description: A
"VEVENT"
calendar component is a grouping of component
properties, and possibly including
"VALARM"
calendar components, that
represents a scheduled amount of
time
on a calendar. For example, it
can be an activity; such as a one-hour long, department meeting from
8:00 AM to 9:00 AM, tomorrow. Generally, an event will take up
time
on an individual calendar. Hence, the event will appear as an opaque
interval in a search
for
busy
time
. Alternately, the event can have
its Time Transparency set to
"TRANSPARENT"
in order to prevent
blocking of the event in searches
for
busy
time
.
The
"VEVENT"
is also the calendar component used to specify an
anniversary or daily reminder within a calendar. These events have a
DATE value type
for
the
"DTSTART"
property instead of the
default
data type of DATE-TIME. If such a
"VEVENT"
has
a
"DTEND"
property, it
MUST be specified as a DATE value also. The anniversary type of
"VEVENT"
can span more than one date (i.e,
"DTEND"
property value is
set to a calendar date
after
the
"DTSTART"
property value).
The
"DTSTART"
property
for
a
"VEVENT"
specifies the inclusive start
doc/rfc2445.txt view on Meta::CPAN
29722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021RFC 2445 iCalendar November 1998
The
"VEVENT"
calendar component cannot be nested within another
calendar component. However,
"VEVENT"
calendar components can be
related to
each
other or to a
"VTODO"
or to a
"VJOURNAL"
calendar
component
with
the
"RELATED-TO"
property.
Example: The following is an example of the
"VEVENT"
calendar
component used to represent a meeting that will also be opaque to
searches
for
busy
time
:
BEGIN:VEVENT
UID:19970901T130000Z-123401
@host
.com
DTSTAMP:19970901T1300Z
DTSTART:19970903T163000Z
DTEND:19970903T190000Z
SUMMARY:Annual Employee Review
CLASS:PRIVATE
CATEGORIES:BUSINESS,HUMAN RESOURCES
END:VEVENT
The following is an example of the
"VEVENT"
calendar component used
to represent a reminder that will not be opaque, but rather
transparent, to searches
for
busy
time
:
BEGIN:VEVENT
UID:19970901T130000Z-123402
@host
.com
DTSTAMP:19970901T1300Z
DTSTART:19970401T163000Z
DTEND:19970402T010000Z
SUMMARY:Laurel is in sensitivity awareness class.
CLASS:PUBLIC
CATEGORIES:BUSINESS,HUMAN RESOURCES
TRANSP:TRANSPARENT
END:VEVENT
The following is an example of the
"VEVENT"
calendar component used
to represent an anniversary that will occur annually. Since it takes
up
no
time
, it will not appear as opaque in a search
for
busy
time
;
no
matter what the value of the
"TRANSP"
property indicates:
BEGIN:VEVENT
UID:19970901T130000Z-123403
@host
.com
DTSTAMP:19970901T1300Z
DTSTART:19971102
SUMMARY:Our Blissful Anniversary
CLASS:CONFIDENTIAL
CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
RRULE:FREQ=YEARLY
doc/rfc2445.txt view on Meta::CPAN
314831493150315131523153315431553156315731583159316031613162316331643165316631673168property is used to specify the calendar date that the journal entry
is associated
with
. Generally, it will have a DATE value data type,
but it can also be used to specify a DATE-TIME value data type.
Examples of a journal entry include a daily record of a legislative
body or a journal entry of individual telephone contacts
for
the day
or an ordered list of accomplishments
for
the day. The
"VJOURNAL"
calendar component can also be used to associate a document
with
a
calendar date.
The
"VJOURNAL"
calendar component does not take up
time
on a
calendar. Hence, it does not play a role in free or busy
time
searches - - it is as though it
has
a
time
transparency value of
TRANSPARENT. It is transparent to any such searches.
The
"VJOURNAL"
calendar component cannot be nested within another
calendar component. However,
"VJOURNAL"
calendar components can be
related to
each
other or to a
"VEVENT"
or to a
"VTODO"
calendar
component,
with
the
"RELATED-TO"
property.
Example: The following is an example of the
"VJOURNAL"
calendar
component:
doc/rfc2445.txt view on Meta::CPAN
31943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345Dawson & Stenerson Standards Track [Page 57]
RFC 2445 iCalendar November 1998
4.6.4 Free/Busy Component
Component Name: VFREEBUSY
Purpose: Provide a grouping of component properties that describe
either a request
for
free/busy
time
, describe a response to a request
for
free/busy
time
or describe a published set of busy
time
.
Formal Definition: A
"VFREEBUSY"
calendar component is
defined
by the
following notation:
freebusyc =
"BEGIN"
":"
"VFREEBUSY"
CRLF
fbprop
"END"
":"
"VFREEBUSY"
CRLF
fbprop = *(
; the following are optional,
; but MUST NOT occur more than once
contact / dtstart / dtend / duration / dtstamp /
organizer / uid / url /
; the following are optional,
; and MAY occur more than once
attendee / comment / freebusy / rstatus / x-prop
)
Description: A
"VFREEBUSY"
calendar component is a grouping of
component properties that represents either a request
for
, a reply to
a request
for
free or busy
time
information or a published set of
busy
time
information.
When used to request free/busy
time
information, the
"ATTENDEE"
property specifies the calendar users whose free/busy
time
is being
requested; the
"ORGANIZER"
property specifies the calendar user who
is requesting the free/busy
time
; the
"DTSTART"
and
"DTEND"
properties specify the window of
time
for
which the free/busy
time
is
being requested; the
"UID"
and
"DTSTAMP"
properties are specified to
assist in proper sequencing of multiple free/busy
time
requests.
When used to reply to a request
for
free/busy
time
, the
"ATTENDEE"
property specifies the calendar user responding to the free/busy
time
request; the
"ORGANIZER"
property specifies the calendar user that
originally requested the free/busy
time
; the
"FREEBUSY"
property
specifies the free/busy
time
information (
if
it
exists
); and the
Dawson & Stenerson Standards Track [Page 58]
RFC 2445 iCalendar November 1998
"UID"
and
"DTSTAMP"
properties are specified to assist in proper
sequencing of multiple free/busy
time
replies.
When used to publish busy
time
, the
"ORGANIZER"
property specifies
the calendar user associated
with
the published busy
time
; the
"DTSTART"
and
"DTEND"
properties specify an inclusive
time
window
that surrounds the busy
time
information; the
"FREEBUSY"
property
specifies the published busy
time
information; and the
"DTSTAMP"
property specifies the date/
time
that iCalendar object was created.
The
"VFREEBUSY"
calendar component cannot be nested within another
calendar component. Multiple
"VFREEBUSY"
calendar components can be
specified within an iCalendar object. This permits the grouping of
Free/Busy information into logical collections, such as monthly
groups of busy
time
information.
object methods involving requests
for
free
time
, requests
for
busy
time
, requests
for
both free and busy, and the associated replies.
Free/Busy information is represented
with
the
"FREEBUSY"
property.
This property provides a terse representation of
time
periods. One or
more
"FREEBUSY"
properties can be specified in the
"VFREEBUSY"
calendar component.
When present in a
"VFREEBUSY"
calendar component, the
"DTSTART"
and
"DTEND"
properties SHOULD be specified prior to any
"FREEBUSY"
properties. In a free
time
request, these properties can be used in
combination
with
the
"DURATION"
property to represent a request
for
a
duration of free
time
within a specified window of
time
.
The recurrence properties (
"RRULE"
,
"EXRULE"
,
"RDATE"
,
"EXDATE"
) are
not permitted within a
"VFREEBUSY"
calendar component. Any recurring
events are resolved into their individual busy
time
periods using the
"FREEBUSY"
property.
Example: The following is an example of a
"VFREEBUSY"
calendar
component used to request free or busy
time
information:
BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jane_doe
@host1
.com
ATTENDEE:MAILTO:john_public
@host2
.com
DTSTART:19971015T050000Z
DTEND:19971016T050000Z
DTSTAMP:19970901T083000Z
END:VFREEBUSY
Dawson & Stenerson Standards Track [Page 59]
RFC 2445 iCalendar November 1998
The following is an example of a
"VFREEBUSY"
calendar component used
to reply to the request
with
busy
time
information:
BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jane_doe
@host1
.com
ATTENDEE:MAILTO:john_public
@host2
.com
DTSTAMP:19970901T100000Z
FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
COMMENT:This iCalendar file contains busy
time
information
for
the
next
three months.
END:VFREEBUSY
The following is an example of a
"VFREEBUSY"
calendar component used
to publish busy
time
information.
BEGIN:VFREEBUSY
ORGANIZER:jsmith
@host
.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
END:VFREEBUSY
4.6.5 Time Zone Component
Component Name: VTIMEZONE
Purpose: Provide a grouping of component properties that defines a
time
zone.
Formal Definition: A
"VTIMEZONE"
calendar component is
defined
by the
doc/rfc2445.txt view on Meta::CPAN
506450655066506750685069507050715072507350745075507650775078507950805081508250835084identifier property parameters can be specified on this property.
Conformance: This property can be specified in
"VEVENT"
or
"VFREEBUSY"
calendar components.
Description: Within the
"VEVENT"
calendar component, this property
defines the date and
time
by which the event ends. The value MUST be
later in
time
than the value of the
"DTSTART"
property.
Within the
"VFREEBUSY"
calendar component, this property defines the
end date and
time
for
the free or busy
time
information. The
time
MUST be specified in the UTC
time
format
. The value MUST be later in
time
than the value of the
"DTSTART"
property.
Format Definition: The property is
defined
by the following notation:
dtend =
"DTEND"
dtendparam
":"
dtendval CRLF
dtendparam = *(
; the following are optional,
doc/rfc2445.txt view on Meta::CPAN
51855186518751885189519051915192519351945195519651975198519952005201520252035204Conformance: This property can be specified in the
"VEVENT"
,
"VTODO"
,
"VFREEBUSY"
, or
"VTIMEZONE"
calendar components.
Description: Within the
"VEVENT"
calendar component, this property
defines the start date and
time
for
the event. The property is
REQUIRED in
"VEVENT"
calendar components. Events can have a start
date/
time
but
no
end date/
time
. In that case, the event does not take
up any
time
.
Within the
"VFREEBUSY"
calendar component, this property defines the
start date and
time
for
the free or busy
time
information. The
time
MUST be specified in UTC
time
.
Within the
"VTIMEZONE"
calendar component, this property defines the
effective start date and
time
for
a
time
zone specification. This
property is REQUIRED within
each
STANDARD and DAYLIGHT part included
in
"VTIMEZONE"
calendar components and MUST be specified as a
local
DATE-TIME without the
"TZID"
property parameter.
Format Definition: The property is
defined
by the following notation:
doc/rfc2445.txt view on Meta::CPAN
528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306
The following is an example of this property that specifies an
interval of
time
of 15 minutes.
DURATION:PT15M
4.8.2.6 Free/Busy Time
Property Name: FREEBUSY
Purpose: The property defines one or more free or busy
time
intervals.
Value Type: PERIOD. The date and
time
values
MUST be in an UTC
time
format
.
Property Parameters: Non-standard or free/busy
time
type property
parameters can be specified on this property.
Conformance: The property can be specified in a
"VFREEBUSY"
calendar
component.
Property Parameter:
"FBTYPE"
and non-standard parameters can be
specified on this property.
Description: These
time
periods can be specified as either a start
and end date-
time
or a start date-
time
and duration. The date and
doc/rfc2445.txt view on Meta::CPAN
531953205321532253235324532553265327532853295330533153325333533453355336533753385339Dawson & Stenerson Standards Track [Page 95]
RFC 2445 iCalendar November 1998
Format Definition: The property is
defined
by the following notation:
freebusy =
"FREEBUSY"
fbparam
":"
fbvalue
CRLF
fbparam = *(
; the following is optional,
; but MUST NOT occur more than once
(
";"
fbtypeparam) /
; the following is optional,
; and MAY occur more than once
doc/rfc2445.txt view on Meta::CPAN
535253535354535553565357535853595360536153625363536453655366536753685369537053715372
FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H,
19970308T230000Z/19970309T000000Z
4.8.2.7 Time Transparency
Property Name: TRANSP
Purpose: This property defines whether an event is transparent or not
to busy
time
searches.
Value Type: TEXT
Property Parameters: Non-standard property parameters can be
specified on this property.
Conformance: This property can be specified once in a
"VEVENT"
calendar component.
Description: Time Transparency is the characteristic of an event that
doc/rfc2445.txt view on Meta::CPAN
53745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414
that consume actual
time
for
the individual or resource associated
Dawson & Stenerson Standards Track [Page 96]
RFC 2445 iCalendar November 1998
with
the calendar SHOULD be recorded as OPAQUE, allowing them to be
detected by free-busy
time
searches. Other events, which
do
not take
up the individual
's (or resource'
s)
time
SHOULD be recorded as
TRANSPARENT, making them invisible to free-busy
time
searches.
Format Definition: The property is specified by the following
notation:
transp =
"TRANSP"
tranparam
":"
transvalue CRLF
tranparam = *(
";"
xparam)
transvalue =
"OPAQUE"
;Blocks or opaque on busy
time
searches.
/
"TRANSPARENT"
;Transparent on busy
time
searches.
;Default value is OPAQUE
Example: The following is an example of this property
for
an event
that is transparent or does not block on free/busy
time
searches:
TRANSP:TRANSPARENT
The following is an example of this property
for
an event that is
opaque or blocks on free/busy
time
searches:
TRANSP:OPAQUE
4.8.3 Time Zone Component Properties
The following properties specify
time
zone information in calendar
components.
4.8.3.1 Time Zone Identifier
doc/rfc2445.txt view on Meta::CPAN
567756785679568056815682568356845685568656875688568956905691569256935694569556965697Property Parameters: Non-standard, language, calendar user type,
group or list membership, participation role, participation status,
RSVP expectation, delegatee, delegator, sent by, common name or
directory entry reference property parameters can be specified on
this property.
Conformance: This property MUST be specified in an iCalendar object
that specifies a group scheduled calendar entity. This property MUST
NOT be specified in an iCalendar object
when
publishing the calendar
information (e.g., NOT in an iCalendar object that specifies the
publication of a calendar user's busy
time
, event, to-
do
or journal).
This property is not specified in an iCalendar object that specifies
only a
time
zone definition or that defines calendar entities that
are not group scheduled entities, but are entities only on a single
user's calendar.
Description: The property MUST only be specified within calendar
components to specify participants, non-participants and the chair of
a group scheduled calendar entity. The property is specified within
an
"EMAIL"
category of the
"VALARM"
calendar component to specify an
email address that is to receive the email type of iCalendar
alarm
.
doc/rfc2445.txt view on Meta::CPAN
5895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925Value Type: CAL-ADDRESS
Property Parameters: Non-standard, language, common name, directory
entry reference, sent by property parameters can be specified on this
property.
Conformance: This property MUST be specified in an iCalendar object
that specifies a group scheduled calendar entity. This property MUST
be specified in an iCalendar object that specifies the publication of
a calendar user's busy
time
. This property MUST NOT be specified in
an iCalendar object that specifies only a
time
zone definition or
that defines calendar entities that are not group scheduled entities,
but are entities only on a single user's calendar.
Description: The property is specified within the
"VEVENT"
,
"VTODO"
,
"VJOURNAL calendar components to specify the organizer of a group
scheduled calendar entity. The property is specified within the
"VFREEBUSY"
calendar component to specify the calendar user
requesting the free or busy
time
. When publishing a
"VFREEBUSY"
calendar component, the property is used to specify the calendar that
the published busy
time
came from.
The property
has
the property parameters CN,
for
specifying the
common or display name associated
with
the
"Organizer"
, DIR,
for
specifying a pointer to the directory information associated
with
the
"Organizer"
, SENT-BY,
for
specifying another calendar user that is
acting on behalf of the
"Organizer"
. The non-standard parameters may
also be specified on this property. If the LANGUAGE property
parameter is specified, the identified language applies to the CN
parameter value.
doc/rfc2445.txt view on Meta::CPAN
758775887589759075917592759375947595759675977598759976007601760276037604760576067607
The COMMA and SEMICOLON separator characters in the property value
are BACKSLASH character escaped because they appear in a text value.
REQUEST-STATUS:2.0;Success
REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01
REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled
as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2
REQUEST-STATUS:4.1;Event conflict. Date/
time
is busy.
REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE:
MAILTO:jsmith
@host
.com
5 iCalendar Object Examples
The following examples are provided as an informational source of
illustrative iCalendar objects consistent
with
this content type.
The following example specifies a three-day conference that begins at
doc/rfc2445.txt view on Meta::CPAN
7765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822
Participants: John Smith, Jane Doe, Jim Dandy\n-It was
decided that the requirements need to be signed off by
product marketing.\n-Project processes were accepted.\n
-Project schedule needs to account
for
scheduled holidays
and employee vacation
time
. Check
with
HR
for
specific
dates.\n-New schedule will be distributed by Friday.\n-
Next weeks meeting is cancelled. No meeting
until
3/23.
END:VJOURNAL
END:VCALENDAR
The following is an example of published busy
time
information. The
iCalendar object might be placed in the network resource
www.host.com/calendar/busytime/jsmith.ifb.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
Dawson & Stenerson Standards Track [Page 139]
RFC 2445 iCalendar November 1998
ORGANIZER:MAILTO:jsmith
@host
.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
END:VFREEBUSY
END:VCALENDAR
6 Recommended Practices
These recommended practices should be followed in order to assure
consistent handling of the following cases
for
an iCalendar object.
1. Content lines longer than 75 octets SHOULD be folded.
2. A calendar entry
with
a
"DTSTART"
property but
no
"DTEND"
property does not take up any
time
. It is intended to represent
an event that is associated
with
a
given
calendar date and
time
of day, such as an anniversary. Since the event does not take up
any
time
, it MUST NOT be used to record busy
time
no
matter what
the value
for
the
"TRANSP"
property.
3. When the
"DTSTART"
and
"DTEND"
,
for
"VEVENT"
,
"VJOURNAL"
and
"VFREEBUSY"
calendar components, and
"DTSTART"
and
"DUE"
,
for
"VTODO"
calendar components, have the same value data type (e.g.,
DATE-TIME), they SHOULD specify
values
in the same
time
format
(e.g., UTC
time
format
).
4. When the combination of the
"RRULE"
and
"RDATE"
properties on an
iCalendar object produces multiple instances having the same
lib/Data/ICal.pm view on Meta::CPAN
3435363738394041424344454647484950515253=head1 DESCRIPTION
A L<Data::ICal> object represents a C<VCALENDAR> object as defined in the
iCalendar protocol (RFC 2445, MIME type "text/calendar"), as implemented in many
popular calendaring programs such as Apple's iCal.
Each L<Data::ICal> object is a collection of "entries", which are objects of a
subclass of L<Data::ICal::Entry>. The types of entries defined by iCalendar
(which refers to them as "components") include events, to-do items, journal
entries, free/busy time indicators, and time zone descriptors; in addition,
events and to-do items can contain alarm entries. (Currently, L<Data::ICal>
only implements to-do items and events.)
L<Data::ICal> is a subclass of L<Data::ICal::Entry>; see its manpage for more
methods applicable to L<Data::ICal>.
=head1 METHODS
=cut
lib/Data/ICal/Entry.pm view on Meta::CPAN
137138139140141142143144145146147148149150151152153154155156157
$output
.=
$self
->footer(
%args
);
return
$output
;
}
=head2 add_entry $entry
Adds an entry to this entry. (According to the standard, this should
only be called on either a to-do or event entry with an alarm entry,
or on a calendar entry (L<Data::ICal>) with a to-do, event, journal,
timezone, or free/busy entry.)
Returns true if the entry was successfully added, and false otherwise
(perhaps because you tried to add an entry of an invalid type, but
this check hasn't been implemented yet).
=cut
sub
add_entry {
my
$self
=
shift
;
my
$entry
=
shift
;
lib/Data/ICal/Entry.pm view on Meta::CPAN
485486487488489490491492493494495496497498499500501502503504
@_
);
return
'END:'
.
$self
->ical_entry_type .
$args
{crlf};
}
# mapping of event types to class (under the Data::Ical::Event namespace)
my
%_generic
= (
vevent
=>
'Event'
,
vtodo
=>
'Todo'
,
vjournal
=>
'Journal'
,
vfreebusy
=>
'FreeBusy'
,
vtimezone
=>
'TimeZone'
,
standard
=>
'TimeZone::Standard'
,
daylight
=>
'TimeZone::Daylight'
,
);
=head2 parse_object
Translate a L<Text::vFile::asData> sub object into the appropriate
L<Data::iCal::Event> subtype.
lib/Data/ICal/Entry/FreeBusy.pm view on Meta::CPAN
1234567891011121314151617181920212223242526272829303132333435use
warnings;
use
strict;
package
Data::ICal::Entry::FreeBusy;
=head1 NAME
Data::ICal::Entry::FreeBusy - Represents blocks of free and busy time in an iCalendar file
=head1 SYNOPSIS
my $vfreebusy = Data::ICal::Entry::FreeBusy->new();
$vfreebusy->add_properties(
organizer => 'MAILTO:jsmith@host.com',
# Dat*e*::ICal is not a typo here
freebusy => Date::ICal->new( epoch => ... )->ical . '/' . Date::ICal->new( epoch => ... )->ical,
);
$calendar->add_entry($vfreebusy);
=head1 DESCRIPTION
A L<Data::ICal::Entry::FreeBusy> object represents a request for
information about free and busy time or a reponse to such a request,
in an iCalendar file. (Note that the iCalendar RFC refers to entries
as "components".) It is a subclass of L<Data::ICal::Entry> and
accepts all of its methods.
=head1 METHODS
=cut
=head2 ical_entry_type
lib/Data/ICal/Entry/FreeBusy.pm view on Meta::CPAN
48495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596=cut
sub mandatory_unique_properties {
my $self = shift;
return $self->rfc_strict ? ("uid") : ()
}
=head2 optional_unique_properties
According to the iCalendar standard, the following properties may be
specified at most one time for a free/busy entry:
contact dtstart dtend duration dtstamp
organizer uid url
=cut
sub
optional_unique_properties {
my
$self
=
shift
;
my
@ret
=
qw(
contact dtstart dtend duration dtstamp
organizer url
)
;
push
@ret
,
"uid"
unless
$self
->rfc_strict;
return
@ret
;
}
=head2 optional_repeatable_properties
According to the iCalendar standard, the following properties may be
specified any number of times for free/busy entry:
attendee comment freebusy request-status
=cut
sub
optional_repeatable_properties {
qw(
attendee comment freebusy request-status
)
;
}
=head1 AUTHOR
Best Practical Solutions, LLC E<lt>modules@bestpractical.comE<gt>
=head1 LICENCE AND COPYRIGHT
Copyright (c) 2005 - 2020, Best Practical Solutions, LLC. All rights reserved.