Calendar Application

Version 8.1 by Vlad Merticariu on 2011/06/17 10:15

Main objective

This application aims to allow end users to create calendars for which they can define and manage events.

Description

The functionality of the application is similar to Google Calendar.
The user defines event objects for a specific calendar and the events are visible in different views (day/week/month/year?).

Functionality

  • Add events:  1. Button which opens a modal window, allowing the user to insert details and save || 2. Complete form on the page. The users enters all the details and, after submission, he is redirected back to the calendar in view mode
  • View event list:  A page (modal window) with the list of all the events in the calendar is displayed, using LiveTable, were the user can filter and edit/delete events (if he has the right to do it, additional view to administrate events)
  • Import/export:  tbd - ical feeds 
  • Microformats support:  tbd
  • JS drag & drop on the calendar table for changing the dates/hours of the events ?:  an event can be dragged from one slot of the calendar table to another slot
  • RSS notifications:  tbd
  • Email notifications:  emails with information about the event are sent to the calendar creator and to the selected users (when?)
  • Privacy settings on events:  events can be public or private, public events are visible to everyone, private events are visible only to the calendar creator
  • Privacy settings on calendar  
  • Display events on categories:  the viewer can select a category and only events from that category will be displayed in the calendar event
  • Event details on hover:  when the user moves the mouse over an event in the calendar table details about the event (startin&ending time, location, description) are displayed
  • Comment on events:  users have the ability to comment on events
  • Yearly view of the calendar, where days with events in them are highlighted
  • Monthly view of the calendar, with links to the previous and next months
  • Weekly view of the calendar, with  links to the previous and next weeks
  • Daily view of the calendar, listing all the events in that day
  • Have an API for accessing events
  • Each event must be stored in its own document
  • Have different calendars for each space

Technicalities

The event-calendar part of the application will be implemented in the following way:

  • 2 classes will be used: EventClass and CalendarClass
  • an event represents a document with an object of EventClass attached
  • a calendar represents a document with an object of CalendarClass attached. When a calendar is added, a space is also created. This space will contain the calendar document and the event documents associated with the calendar.

Event class properties:

  • title (Title: text):  the title of the event
  • description (Description: text):  a short description of the event
  • location (Location: text):  the location where the event will take place
  • startDate (Start date: date(dd/MM/yyy)):  the date when the event starts
  • startTime (Start time: time? (HH/mm)):  the hour when the event starts
  • endDate (End date: date(dd/MM/yyyy)):  the date when the event ends
  • endTime (End time: time? (HH/mm)): the hour when the event ends
  • calendar(Calendar: text):  the calendar to which the event belongs (its space)
  • category(Category: text):  the category of the event
  • privacySettings(Privacy: text):  set the event to be public (visible to everyone) or private (visible only to the user)
  • emailNotifications(Email Notifications: bool):  indicates if the notifications are activated or not
  • userNotifiationList(Users to receive notifications: ?):  the list of users to be notified about the event

Calendar class properties:

  • title (Title: text):  the title of the calendar
  • description(Description: text):  a short description of the calendar
  • privacySettings(Privacy: static list):  set the calendar to be public(visible to everyone) or private(visisble only to the user)
  • owner(Owner: user):  the user who owns the calendar

Calendar class sheets:

  • CalendarViewDaySheet:  contains the display of the calendar table in "day" view
  • CalendarViewWeekSheet:  contains the display of the calendar table in "week" view
  • CalendarViewMonthSheet:  contains the display of the calendar table in "month" view
  • CalendarViewYearSheet?
  • CalendarFormSheet:  contains the form for adding new events
  • CalendarEventListSheet:  contains the list of events for the specific calendar, with edit and delete links if the user has editing rights

Category class properties:

  • title(Title: text):  the title of the category
  • description(Description: text):  a short description of the category