Help:Recurring events

From Linux Web Expert
Recurring events
Silently set recurring semantic data in a wiki page
Further Information
Provided by: Semantic MediaWiki
Minimum version: 1.5.0
Maximum version: still supported
Function: yes
Tag: no
Name: #set_recurring_event
Table of Contents

A recurring event is any event that occurs more than once, according to a pre-defined rule: examples are weekly meetings, anniversaries and birthdays as well as events that span across multiple days or other units of time, such as SMWCon.

In Semantic MediaWiki, the dates for a recurring event are defined using the #set_recurring_event parser function, which is placed on the page that represents the event. All property-value pairs that are created using this function are assigned to a special subobject. This means that the functionality described for subobjects applies to this special form of subobject too. This function additionally takes the following arguments, in any order:

Parameter Usage Description
(after :) mandatory Name of the property linking the subobject to the current page, e.g. "Event", "Birthday", etc. See the examples below. It is placed directly after the colon of the parser function.
property mandatory of datatype "Date"Holds particular points in time that is being set to all the values
start mandatory the first date of the series (can include time)
end optional the last date of the series (can include time)
unit optional the time unit for the event's frequency; options are 'year', 'month', 'week' and 'day' (default is 'day')
period optional the number of time units between one occurrence and the next (default is '1')
limit optional the number of recurring events that will be created. Note that this parameter will be ignored if the end parameter is defined (default is 100 according to configuration parameter $smwgDefaultNumRecurringEventsNo description was provided.)
week number optional if the unit is set to 'month', this parameter indicates that the event happens on a certain numbered day of the week in each month (anything from '1' to '4') , like the 1st Thursday of every month. A negative value (anything from '-1' to '-4') indicates that the event happens on the nth last such day of the month, such as the 2nd-to-last Monday. The actual day of the week is defined by the start date.
include optional any additional dates to include in the series, separated by semicolons (;)
exclude optional any dates to exclude from the series, separated by semicolons
- optional Custom property-value pairs may be added as in any subobject.

Notes

General

Using dates with times

#set_recurring_event will set a date only if no times are specified. You can however specify times in the recurring event as well. Two important items to note:

  • Exclude parameters must also specify the time. When #set_recurring_event evaluates it will compare the excluded times array to the calculated recurrences, and is specific to the time. If you specify a start value with a time of 7:00 pm, the exclude must also reference this. If you are working with forms it is convenient to request the time in a separate field and then automatically add it to the start as well as exclude parameters for the user. You may also consider adding it to the include parameters.
  • The end parameter will also honor a time value, and the recurrences will end at that time, instead of at midnight of the date specified.
  • Internationalization of dates is incomplete, i.e. "BC", "AD", "PM", "AM" are fixed for all languages.
  • If no time is set, e.g. "January 17, 2019" then "January 17, 2019 00:00" is assumed, i.e. internally the default time is "00:00".2

Examples

Event series

Create recurring event

The following call would create subobjects with an Event property linking to the current page, and set the Has date property for each subobject to Mondays at 7:00 pm between January 4, 2010 and June 8, 2011, with the exception of March 15, 2010 and March 22, 2010, both of which are replaced by the following Tuesday at different times:

{{#set_recurring_event: Event
 |property=Has date
 |start=January 4, 2010 7:00 pm
 |end=June 8, 2011
 |unit=week
 |period=1
 |include=March 16, 2010 6:00 pm;March 23, 2010 5:00 pm
 |exclude=March 15, 2010 7:00 pm;March 22, 2010 7:00 pm
}}
Query recurring event

The following query would display the recurring events in a calendar using result format "Eventcalendar"An event calendar with different views of displaying days and events on the same page where you created the recurring events.

{{#ask:
 [[Event::{{PAGENAME}}]]
 |?Has date
 |format=eventcalendar
}}

Birthday series

Create recurring event

The following call creates subobjects with a Birthday property linking to the current page, and a Has birthday property for all birthdays of a person, starting with his or her date of birth; it is done by picking up the date entered on a page for the defined "Property:Has date of birth":

{{#set_recurring_event: Birthday
 |property=Has birthday
 |start={{#show: {{PAGENAME}} |?Has date of birth }}
 |unit=month
 |period=12
}}

If such a call were placed in a template, and the date of birth were entered as a template field, the code could be made even simpler:

{{#set_recurring_event: Birthday
 |property=Has birthday
 |start={{{Date of birth|}}}
 |unit=month
 |period=12
}}
Query recurring event

The following query would display the recurring events in an ordered list using result format "Ol"Outputs results as a numbered list, with additional outputs shown in parentheses. on the same page where you created the recurring events.

{{#ask:
 [[Birthday::{{PAGENAME}}]]
 |?Has birthday=
 |format=ol
 |sort=Has birthday
 |order=ascending
 |mainlabel=
}}

More examples

See also

#scite could not render a citation text for reference "gh:smw:3619" because type "issue" was not assigned to a template.
#scite could not render a citation text for reference "gh:smw:3619:455249224" because type "issuecomment" was not assigned to a template.

References

  1. ^ gh:smw:3619 
  2. ^ gh:smw:3619:455249224