Changes for page Calendar Application
Last modified by Ecaterina Valica on 2014/01/15 13:50
From version 22.1
edited by Vlad Merticariu
on 2011/07/06 17:23
on 2011/07/06 17:23
Change comment:
There is no comment for this version
To version 5.1
edited by Oana Tabaranu
on 2011/06/16 12:04
on 2011/06/16 12:04
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 6 removed)
-
Objects (0 modified, 0 added, 2 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. vladm1 +XWiki.OanaTabaranu - Content
-
... ... @@ -1,256 +1,63 @@ 1 1 {{toc/}} 2 2 3 -= 3 +=Main objective= 4 4 5 5 This application aims to allow end users to create calendars for which they can define and manage events. 6 6 7 7 8 -= 8 +=Description= 9 9 10 10 The functionality of the application is similar to Google Calendar. 11 11 The user defines event objects for a specific calendar and the events are visible in different views (day/week/month/year?). 12 12 13 -= 13 +=Functionality= 14 14 15 -* 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 //16 -* 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)//17 -* Import/export: // tbd - ical feeds //18 -* Microformats support: // tbd //19 -* 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 //20 -* RSS notifications: // a documentto generate RSS feed willbe created//21 -* Email notifications: // emails with information about the event are sent to the calendar creator and to the selected users (when?) //22 -* 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 //15 +* 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 16 +* 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) 17 +* Import/export: // tbd 18 +* Microformats support: // tbd 19 +* 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 20 +* RSS notifications: // tbd 21 +* Email notifications: // emails with information about the event are sent to the calendar creator and to the selected users (when?) 22 +* 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 23 23 * Privacy settings on calendar 24 -* Display events on categories: // the viewer can select a category and only events from that category will be displayed in the calendar event// 25 -* 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// 26 -* Comment on events: // users have the ability to comment on events// 27 -* Yearly view of the calendar, where days with events in them are highlighted 28 -* Monthly view of the calendar, with links to the previous and next months 29 -* Weekly view of the calendar, with links to the previous and next weeks 30 -* Daily view of the calendar, listing all the events in that day 31 -* Have an API for accessing events 32 -* Each event must be stored in its own document 33 -* Each calendar is stored in its own space (only 1 calendar/space) 24 +* Display events on categories: // the viewer can select a category and only events from that category will be displayed in the calendar event 25 +* 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 34 34 35 -= Alternatives27 +=Technicalities= 36 36 37 -**Calendar aggregator** 38 - 39 -The WebHome of the application is an aggregated calendar which displays the events from all the calendars of a user. 40 -The user creates several calendars (e.g. Personal, Work) which can be visualized both individually and together, on the main page of the application. 41 -This is very similar to Google Calendar, following the same approach. The main advantage of this is the ease of interaction between users' calendars (e.g. sharing a calendar with another user means displaying the specific calendar among his own calendars, inside the WebHome). 42 - 43 - 44 -**Individual calendars with categories** 45 - 46 -The users creates calendars which are individual entities and each event is assigned a category when added. 47 -When the user is invited to other events he can choose to view those events in one or more of his calendars while when another user shares a calendar with him he can only view that calendar, on a separate page. 48 -The current technicalities are meant for this alternative. 49 - 50 -**Unique calendar/user** 51 - 52 -Every user has only one calendar. Events can be categorized just as above. 53 -For sharing the user has 2 options: share the entire calendar or share a category, which, as functionality, makes it similar to the Calendar aggregator alternative. 54 - 55 -= Detailed Functionality = 56 - 57 -== Adding events == 58 - 59 -You may add an event by: 60 - 61 -1. Clicking a button which opens a modal window, allowing the user to insert details and save 62 -1. Filling in a form on the event page. The user enters all the details and, after submission, he is redirected back to the calendar in view mode 63 - 64 -Each calendar will be stored in a space. A space can only contain one calendar. Each event must be stored in its own document and should have: 65 - 66 -* **Name** 67 -* **Date**: User should be able to mark an event as **recurring**. 68 -* **Location**: Link to Google Maps 69 -* **Description** 70 -* **Category** (e.g. Personal, Work) 71 -* **Color**: The event will have a default color and event creators may select a different color for the new event from a given list 72 -* **Notifications**: Email notifications may be sent to the event creator and the users he selects (10 minutes, 30 minutes, 1 hour, 1 day, 1 week) 73 -* **Privacy options**: Default, Private, Public 74 -* The possibility to **add guests**. Guests can appear in the form of wiki users or email addresses. Suggestions should be available if the event creator starts typing in a user's name. Guests will be notified by email they have been invited to the event and they should be able to RSVP (confirm their presence) via email 75 -* **Set rights for guests**. The event creator can grant users one, some or all of the following rights: modify the event, invite other guests to the event, see the guest list 76 -* **Attachments**: Documents can be attached to an event. An icon will indicate in the daily and weekly view modes that the event has attachments 77 -* **Comments**: Users have the ability to comment on an event. An icon will indicate in daily and weekly view modes that the event has comments 78 - 79 -**More actions:** 80 - 81 -* **Change owner** 82 -* **RSVP for guests**: Users who are not event owners, but see an event to which they are invited in a calendar, should be able to click the "RSVP" link and confirm their presence 83 -* **Delete event** 84 -* **Duplicate event**: Copy an event inside the calendar 85 -* **Copy event to a different calendar**: Copy an event from the current calendar to a different calendar 86 - 87 -== Viewing events == 88 - 89 -**View calendar:** 90 - 91 -* Tabbed day, week, month, yearly view 92 -* **Year view**: 93 -** There should be 12 cells representing the 12 different months 94 -** When users click on a month (e.g. //June 2011//) they should be directed to that specific month in the "Month" tab 95 -** When users click on a day (e.g. //1//) they should be directed to that specific day in the "Day" tab 96 -** Days that have events associated should be marked with bold 97 -** The current day should be highlighted with a distinct color or frame 98 -** Arrows will be available to go to the previous/next year 99 -* **Month view**: 100 -** Table view; each column represents a day of the week (Monday, Tuesday...); each cell represents a specific date (1, 2...) 101 -** When users click on a day (e.g. //1// in the cell header) they should be directed to that specific day in the "Day" tab 102 -** Events should be displayed chronologically inside each cell. The starting hour of the event should be displayed, the name of the event and an icon indicating if notifications have been set. Clicking or hovering (TBD) on the event will bring up a pop-up with more details and links to edit and delete the event 103 -** The current day should be highlighted with a distinct color (same as the one used for the "Year" view) 104 -** Arrows will be available to go to the previous/next month 105 -* **Week view** 106 -** Table view; each column represents a day of the week (Monday, Tuesday...); each row represents an hour of the day 107 -** When users click on a day (e.g. //Fri 6/17// in the table header) they should be directed to that specific day in the "Day" tab 108 -** Events should be displayed chronologically in each column and occupy the number of cells corresponding to the number of hours the event is scheduled to last. An alert icon should be displayed when a notification is set, an attachment icon when an attachment is present, a comment icon when comments have been added. Clicking or hovering (TBD) on the event will bring up a pop-up with more details and links to edit and delete the event 109 -** The current day should be highlighted with a distinct color (same as the one used for the other views) 110 -** Arrows will be available to go to the previous/next week 111 -* **Day view** 112 -** Table view; one column representing one day; each row represents an hour of the day 113 -** Events should be displayed chronologically and occupy the number of cells corresponding to the number of hours the event is scheduled to last. An alert icon should be displayed when a notification is set, an attachment icon when an attachment is present, a comment icon when comments have been added. Clicking or hovering (TBD) on the event will bring up a pop-up with more details and links to edit and delete the event 114 -** The current day should be highlighted with a distinct color (same as the one used for the other views) 115 -** Arrows will be available to go to the previous/next day 116 - 117 -* **Display events by category**: users can select a category and only events from that category will be displayed in the calendar 118 -* **Jump to a specific date** 119 - 120 -* **Viewing events you are invited to in your calendar**: Calendar owners will have view right by default for their own calendar (space). View rights should also be granted for events he is invited to. This means having view rights on event pages that are located in other calendars (spaces). Other rights, such as edit and comment can also be granted, depending on the settings established by the the owner when creating the event. 121 - 122 -**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) // ? Do we need this once the events can be viewed in calendar table? // 123 - 124 -== Settings == 125 - 126 -=== General === 127 - 128 -* Calendar **name** 129 -* **Owner** 130 -* **Description** 131 -* **Location** 132 - 133 -* Week starts on Sunday/Monday/Saturday ? //should this be done automatically depending on the user's location?// 134 -* Show events you have declined: Yes/No 135 -* Automatically add invitations to my calendar: Yes/No 136 - 137 -=== Privacy === 138 - 139 -**Privacy settings for calendar** 140 -The calendar can be: 141 - 142 -* Public 143 -* Visible for specific wiki users -> Share calendar 144 -* Private 145 - 146 -**Privacy settings for the categories** 147 -Each category can be: 148 - 149 -* Public 150 -* Visible for specific wiki users -> Share category 151 -* Private 152 - 153 -**Default privacy settings for events** 154 -Events can be 155 - 156 -* Public: visible to everyone specified in the calendar settings 157 -* Private: visible only to the event creator 158 - 159 -=== Notifications === 160 - 161 -A calendar owner may choose to receive notifications for: 162 - 163 -|=Events he is invited to |=Events he owns 164 -|((( 165 -* New invitations 166 -* Changed invitations 167 -* Canceled invitations 168 -* Invitation replies 169 -)))|((( 170 -* RSVPs from guests (attending, canceling presence) 171 -* Attachments being added 172 -* Comments being added 173 -))) 174 - 175 -In addition, **reminders** can be **sent by default to the calendar owner** via email: 10 minutes, 30 minutes, 1 hour, 1 day, 1 week 176 - 177 -== Search == 178 - 179 -The "View event list" livetable can be used to filter events by date, location, and even to do searches within the event descriptions. 180 - 181 -== Suggestions == 182 - 183 -* Ability to print calendar 184 -* Keyboard shortcuts 185 -* Tips or link to documentation 186 -* Notifications by SMS could be interesting 187 -* Gadget integration 188 - 189 -== Further work == 190 - 191 -* Select language? 192 -* Select from different time zones? 193 -* Select date format? 194 -* Select time format? 195 -* Similarly to Google Calendar, event recurrence should be customizable 196 - 197 -= Technicalities = 198 - 199 199 The event-calendar part of the application will be implemented in the following way: 200 - 201 201 * 2 classes will be used: EventClass and CalendarClass 202 202 * an event represents a document with an object of EventClass attached 203 203 * 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. 204 204 205 205 Event class properties: 35 +* title (Title: text): // the title of the event 36 +* description (Description: text): // a short description of the event 37 +* location (Location: text): // the location where the event will take place 38 +* startDate (Start date: date(dd/MM/yyy)): // the date when the event starts 39 +* startTime (Start time: time? (HH/mm)): // the hour when the event starts 40 +* endDate (End date: date(dd/MM/yyyy)): // the date when the event ends 41 +* endTime (End time: time? (HH/mm)): //the hour when the event ends 42 +* calendar(Calendar: text): // the calendar to which the event belongs (its space) 43 +* category(Category: text): // the category of the event 44 +* privacySettings(Privacy Settings: text): // set the event to be public (visible to everyone) or private (visible only to the user) 45 +* emailNotifications(Email Notifications: bool): // indicates if the notifications are activated or not 46 +* userNotifiationList(Users to receive notifications: ?): // the list of users to be notified about the event 206 206 207 -* name (Name: text): // the title of the event// 208 -* startDate (Start date: date(dd/MM/yyy)): // the date when the event starts// 209 -* startTime (Start time: static list): // the hour when the event starts// 210 -* endDate (End date: date(dd/MM/yyyy)): // the date when the event ends// 211 -* endTime (End time: static list): //the hour when the event ends// 212 -* allDay (All day: bool): //checkbox which indicates that startTime is 00:00 of the startDate and endTime is 00:00 of the day after endDate// 213 -* repeats (Repeats: static list (daily, weekly, monthly, yearly)): // how often the event repeats // 214 -* repeatsUntil (Until: date(dd/MM/yyyy)): // the date when the recursion of the event ends// 215 -* description (Description: text): // a short description of the event// 216 -* location (Location: text): // the location where the event will take place// 217 -* category (Category: database list): // the category of the event// 218 -* color (Color: static list): // the color of the event// 219 -* privacy(Privacy: static list): // set the event to be default, public (visible to everyone) or private (visible only to the user)// 220 -* emailNotifications (Email Notifications: static list): // indicates when the reminders for the event should be sent to the creator and to the guest list// 221 -* guestViewList (Guest View List: database list): // the list of users invited to the event, having view rights, waiting for confirmation// 222 -* guestEditList (Guest Edit List: database list): // the list of users invited to the event, having edit rights, waiting for confirmation// 223 -* attendingGuests (Attending guests: database list): // the list of users who have confirmed their attendance to the event// 224 -* nonattendingGuests (Non-attending guests: database list): // the list of users who have declined their attendance to the event// 225 -* notifiedGuests (Notified Guests: database list): // the list of guests who have received notifications about their event invitation // 226 - 227 -XWikiRights objects will be added to event documents in the following way: 228 - 229 -* default events: //**edit** object for guestEditList and owner, **delete** object for owner// 230 -* public events: //**view** object for XWikiAll group, edit object for guestEditList and owner, delete object for owner// 231 -* private events: //**view** object for guestEditList, guestViewList and owner, **edit** object for guestEditList and **owner**, delete object for owner// 232 - 233 233 Calendar class properties: 49 +* title (Title: text): // the title of the calendar 50 +* description(Description: text): // a short description of the calendar 234 234 235 -* name (Name: text): // the name of the calendar// 236 -* description(Description: text): // a short description of the calendar// 237 -* privacy(Privacy: static list): // set the calendar to be public(visible to everyone), visible to specific users or private(visisble only to the user)// 238 -* shareList(Share calendar: user list): // if privacy is set to visible for specific users, this list will contain the users who can view it// 239 -* owner(Owner: user): // the user who owns the calendar// 240 -* weekStart(Week starts on: static list): // The day when the week starts (Sunday, Monday or Saturday) ? should this be done automatically depending on the user's location?// 241 -* showDeclinedEvents(Show Events you have declined: bool): // Indicates if events which have been declined should be added to the calendar// 242 -* addInvitations(Automatically add invitations to the calendar: bool): // Indicates if the events to which the user has been invited should be added to the calendar// 243 - 244 244 Calendar class sheets: 53 +* CalendarViewDaySheet: // contains the display of the calendar table in "day" view 54 +* CalendarViewWeekSheet: // contains the display of the calendar table in "week" view 55 +* CalendarViewMonthSheet: // contains the display of the calendar table in "month" view 56 +* CalendarViewYearSheet? 57 +* CalendarFormSheet: // contains the form for adding new events 58 +* CalendarEventListSheet: // contains the list of events for the specific calendar, with edit and delete links if the user has editing rights 245 245 246 -* CalendarViewDaySheet: // contains the display of the calendar table in "day" view// 247 -* CalendarViewWeekSheet: // contains the display of the calendar table in "week" view// 248 -* CalendarViewMonthSheet: // contains the display of the calendar table in "month" view// 249 -* CalendarViewYearSheet: // contains the display of the calendar table in "year" view// 250 -* CreateCalendarEvent: // contains the form for adding new events// 251 -* CalendarEventListSheet: // contains the list of events for the specific calendar, with edit and delete links if the user has editing rights// 252 - 253 253 Category class properties: 61 +* title(Title: text): // the title of the category 62 +* description(Description: text): // a short description of the category 254 254 255 -* title(Title: text): // the title of the category// 256 -* description(Description: text): // a short description of the category//
- actions.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Size
-
... ... @@ -1,1 +1,0 @@ 1 -70.2 KB - Content
- addMenu.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Size
-
... ... @@ -1,1 +1,0 @@ 1 -18.1 KB - Content
- eventFields.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Size
-
... ... @@ -1,1 +1,0 @@ 1 -73.9 KB - Content
- monthView.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Size
-
... ... @@ -1,1 +1,0 @@ 1 -87.5 KB - Content
- weekView.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Size
-
... ... @@ -1,1 +1,0 @@ 1 -62.2 KB - Content
- yearView.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Size
-
... ... @@ -1,1 +1,0 @@ 1 -75.8 KB - Content
- XWiki.XWikiComments[0]
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.evalica - Comment
-
... ... @@ -1,3 +1,0 @@ 1 -I don't think we will need a livetable to list all the events since you can see/delete/edit all events in the year/month/week views. The calendar events are much powerful when they are in a timeline than seeing them in a list. 2 - 3 -Also I don't think is necessary the concept of categories when you can have multiple calendars. Right now in Google Calendar you can create multiple calendars and attribute each calendar a goal (have a personal one, a xwiki one, a birthday, etc). In this use case the concept of categories is replaced by multiple calendars. - Date
-
... ... @@ -1,1 +1,0 @@ 1 -2011-06-22 11:59:17.0
- XWiki.XWikiComments[1]
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -xwiki:XWiki.Enygma - Comment
-
... ... @@ -1,7 +1,0 @@ 1 -I agree with this. 2 - 3 -We should have a 2 views: 4 -1. Individual calendar view, that should be available on each calendar's space WebHome 5 -2. Aggregated calendar view for all the calendars and events that are visible to the current user. This could be a new tab in the user's profile (harder for an application to extend right now) or, alternatively, in the Calendar application's space WebHome (easier and makes the Calendar application space useful). 6 - 7 -The event livetable might be useful for an 'advanced search' functionality, allowing to filter events nicely. - Date
-
... ... @@ -1,1 +1,0 @@ 1 -2011-06-22 12:35:20.0 - Reply To
-
... ... @@ -1,1 +1,0 @@ 1 -0