Calendar Application

Version 2.1 by Oana Tabaranu on 2011/06/16 12:02

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?).

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 Settings: 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

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

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)
  • Import/export:  tbd
  • 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