Calendar/Schedule Plugin

Functionality description

Description

The calendar/schedule plugin enables the display of items from Campsite within an interactive calendar format that will be published within the templating framework. Allows Campsite items to be displayed according to time and date information as input in article fields, including a mechanism for displaying and updating events on a schedule, such as automatically-updated "on air" listings from a radio station schedule. Allows for repeating events such as regularly-scheduled radio programs, as well as for one-time events such as a live broadcast from a remote location.

Use cases

Use case 1 A radio station wants to display the programs that are planned in its schedule for its website, with automatic updating of the items that are "on air." An example of the functionality desired can be found here: http://kpsu.org/schedule

Use case 2 A website wants to publish entertainment listings by day, week and month. An example of the functionality desired can be found here: http://affiliate.zap2it.com/movies/mvtheatersearch.do?location=90210&aid=lat or here: http://dokina.tiscali.cz/programy/program.asp?city=1&where_search=movie1&movie=&term=2&order=cinema&filtr=0&multikino=true

Use case 3 A website wants to publish television listings by day, week and month with a user-defined selection of channel listings. An example of this functionality can be found here: http://tv.seznam.cz/

Use case 4 A website making use of online interviews displays those events on a calendar. An example of this functionality can be found here: http://www.washingtonpost.com/wp-srv/liveonline/schedule/front.html

Use case 5 A website wants to publish a plan of upcoming news events. Examples would be press conferences and special events. An example from Reuters is here: http://news.alibaba.com/article/detail/markets/100103099-1-reuters-business-news-schedule-0830.html

Importing

Imports calendar items from other sources via XML-RPC and direct file upload in predefined standard formats. This is especially useful for:

  • stations using Campcaster's scheduler function
  • entertainment listings that are provided by movie theater chains or other sources
  • TV program listings from TV stations or other sources

The import function should support industry-standard formats such as vCalendar. Other XML-based formats, such as RSS and EventsML G2 should be considered.

Exporting

Allows item listings to be exported for site visitors in common formats such as vCalendar and to other calendaring services such as Google Calendar, Yahoo Calendar and mobile devices. This will allow editors to provide reminders to site visitors that a radio program is on, for example, in their own calendar environment.

The export function would also be used to determine time slices for recordings of a radio station's output, which would then be later used to be made available automatically on the site according to the individual programs scheduled. The export function should also export the calendar information as a formatted text file for use in articles or other text documents.

Working with Campsite content

Content can be input into the Calendar/Schedule in three main ways:

  • Web admin interface
  • Input of preformatted files via the web admin interface
  • XML-RPC interface

Through the web admin interface, users would navigate to the Plugins -> Calendar drop down, which would then enable items to be input. Items could be input in three main ways in the admin interface: 1) By clicking on a calendar's date and time, which would bring up a form for the item 2) By inputting an item through its form directly 3) By uploading a pre-formatted file.

The display of items should be handled through a set of Campsite templating directives that would allow the printing of items within a date and time range specified within the directive. Examples of this would include:

  • now
  • today
  • this week
  • this month
  • from <time/date> to <time/date>

Calendar Entry Form

The calendar entry form would have the following required fields:

  • Event name
  • Start date/time

The following fields would be optional, but should follow accepted Electronic Program Guide (EPG) standards:

Radio schedule

  • Program name
  • Presenter name(s)
  • Program description (should allow for inline graphics, links and embeds)
  • Program duration
  • Program type (news, sports, children's, music, etc.)
  • Repeating program (daily, weekdays, weekends, user-selected days)
  • Topics

Television listings

  • Program name
  • Channel name
  • Program duration
  • Program type (news, sports, children's, music, etc.)
  • Program description (should allow inline graphics, links and embeds)
  • Stars
  • Repeating program (daily, weekdays, weekends, user-selected days)
  • Closed captioning
  • Language
  • Topics

Entertainment listings

  • Event name
  • Event location (address)
  • Event location coordinates (possibly for use with an external maps service such as Google Maps or OpenStreetMaps?)
  • Event description (should allow inline graphics, links and embeds)
  • Event price
  • Event type (movie, dance, concert, DJ, etc.)
  • Topics
  • Event language

News events

  • Event name
  • Event organization
  • Event description
  • Event location (address)
  • Event location coordinates (possibly for use with an external maps service such as Google Maps or OpenStreetMaps?)
  • Event type (press conference, sporting event, ceremony, speech, etc.)
  • Topics

The interface should contain buttons:

  • Create Next (or Next) - opens the next time slot to be filled (e.g. if the current is 10:00-11:00, the next one has the start time set to 11:00 -- this should be configurable, see below)
  • Previous
  • Save and close

Field defaults:

  • Time: Default interval (e.g. pre-fill the time slot with "n to n+T", where T is the default interval)
  • Typeahead: similar to the Author Field, look into previous values in the DB and offer autocompletion)

Administering Calendar Types

A new mechanism, calendar types, would allow site administrators to pre-define the types of fields that would appear when a new calendar entry is created. The module would ship with pre-defined calendar types which take into account the use cases listed above, so that there would be a list with the default Calendar Type options that would appear.

Concurrence and scheduling conflicts

Concurrence handling will vary according to the calendar types - it makes sense that different TV channels would have different items on at the same time, but a radio station only has one output on their broadcast (we won't get into digital broadcasting on multiple channels yet ;-))

The system should return an error message in the event that there is a scheduling conflict that enables the user to reschedule the event or to overwrite the current event.

Multiple calendars on a single instance

The plugin should allow the creation of multiple calendars on a single instance. For example, the culture section may have an arts and entertainment calendar, the TV section may have the TV listings, the sports section may have a sporting events calendar and the news department may have a separate news events calendar. The admin interface will have to be allow site administrators to easily switch between these calendars.

Appearance

The calendars themselves should be interactive and make use of an AJAX method of display as provided by the YUI framework. The appearance of the Google Calendars service could be another inspiration, as could Campcaster's scheduler in the web interface.

Notes

The calendar functions should exist within the Smarty templating framework, so that template directives can call the calendar functions on a page and display information within it.

The Drupal Station module should also be considered as a model and source of inspiration for this functionality. A working example of their functionality can be found at http://kpsu.org/schedule.