Index: openacs-4/packages/calendar/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/doc/requirements.adp,v diff -u -N -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/calendar/www/doc/requirements.adp 20 Aug 2015 17:35:00 -0000 1.1.2.1 +++ openacs-4/packages/calendar/www/doc/requirements.adp 25 Aug 2015 18:02:20 -0000 1.1.2.2 @@ -2,16 +2,19 @@ {/doc/calendar {Calendar}} {Calendar Package Requirements} Calendar Package Requirements - -

Calendar Package Requirements

-by Gary Jin and W. Scott Meeks

I. Introduction

+ +by Gary Jin + and W. Scott Meeks +

I. Introduction

+ A calendar is an aggregate of events which fall within a given time interval, e.g., on a particular day, week, or month. The ArsDigita Calendar application provides users with a tool which allows them to add, view, edit and organize these events at both the personal and party/group levels.

II. Vision Statement

+ The ArsDigita Calendar application is a Web based calendar system that can be accessed through any browser. The application allows people to keep track of events as they normally would on a paper @@ -30,10 +33,14 @@ particular ACS parties where each party member can see events associated with that particular party. Events from the various parties of which one is a member can also be shown on a party -member's personal calendar.

This package could be used for any application where event +member's personal calendar.

+

This package could be used for any application where event tracking is important. This would include many business, -educational, club, and other community scenarios.

III. System/Application Overview

-In our system, a party-specific event is an event associated +educational, club, and other community scenarios.

+

III. System/Application Overview

+ +In our system, a party-specific event + is an event associated with a particular party, typically of the sort scheduled by that party or of particular interest to members of that party. For example, a reading group may wish to associate an upcoming book @@ -48,30 +55,42 @@ which they do not wish to have appear on their calendars. Since in our system, groups are parties and parties can have calendars, this account of a user's calendar generalizes to cover a party's -calendar.

The Calendar Package is built on top of the ACS Event service -package and performs the following three high-level functions:

+Event Management + covers those aspects of the application which pertain to events, such as adding, editing, viewing, deleting -events, and setting up recurring events. An event is defined -as an activity associated with one or more time intervals. +events, and setting up recurring events. An event + is defined +as an activity + associated with one or more time intervals. For instance, "participating in an ACS bootcamp" is an activity, but "participating in the ACS bootcamp during the upcoming week" is an event. Therefore, the Event Management portion would also needs to deal with scheduling issues associated with adding a temporal -aspect to activities . +aspect to activities + .

Calendar Views covers those aspects of the application which pertain to the display of calendar events for a particular -span of time.

+span of time.

+

Navigation covers those aspects of the application which pertain to ways in which the end-user can change the timespan -currently being displayed.

IV. Use-cases and User-scenarios

+currently being displayed.

+

IV. Use-cases and User-scenarios

+ There are three main classes of users for the Calendar: -The individual is primarily interested in having a personal + +The individual + is primarily interested in having a personal Web based calendar. The calendar needs to support the manipulation of basic calendar event components, among these: times, titles, and possibly descriptions. Example: Irwin Individual wants to be able @@ -93,7 +112,8 @@ functionality, the calendars for groups and parties would need to support all the event managment and calendar views had by individual calendars, and in addition, the role of calendar -administrator must be assigned to handle event managment.

+administrator must be assigned to handle event managment.

+

Administrators for a group and party wide calendar are given create, read, and write permissions on each individual item on the calendar. He or she also has the privilege to change the @@ -104,282 +124,419 @@ bootcamps is scheduled to take place this month is incorrect. He has the permission to change it. He also can grant Jane Bootcamp write permission on that particular event, so that Jane can make -changes on her own.

V. Related Links

+

VI.A Requirements: Private Calendar

+10 Private Calendar +

10.0 User Interface

+

10.0.10 The calendar page should indicate whether or not -private, public or party-specific events are to be displayed.

+private, public or party-specific events are to be displayed.

+

10.0.20 The calendar should support navigation to view -different dates in a simple manner.

+different dates in a simple manner.

+

10.0.30 Links to different calendar functions should be -clear and obvious.

+clear and obvious.

+

10.0.40 Each calendar item should be displayed with its -subject and time span as the basic information.

10.10 Views

-10.10.0 Different views should be easily selectable.

+subject and time span as the basic information.

+

10.10 Views

+

+10.10.0 Different views should be easily selectable.

+

10.10.0 Different views should also be indicated in a -clear and noticeable location

10.10.10 List View

+clear and noticeable location

+

10.10.10 List View

+

10.10.10.10 The calendar should support a view showing -selected items in a tabular list format.

+selected items in a tabular list format.

+

10.10.10.20 Columns should include date, time, and other -relevant information.

-10.10.10.30 The columns should be sortable.

+relevant information.

+

+10.10.10.30 The columns should be sortable.

+

10.10.10.40 There should be at least two lists of items. One list should consist of items whose dates occur within a user-specified number of days of the currently viewed date. One list should consist of items that have been added within a -user-specified number of days of the current date.

10.10.20 Day View

+user-specified number of days of the current date.

+

10.10.20 Day View

+

10.10.20.10 The calendar should support a view showing -all the events for a particular day.

+all the events for a particular day.

+

10.10.20.20 This view should show the events arranged -chronologically with a time guide along one side.

+chronologically with a time guide along one side.

+

10.10.20.30 The range of the time guide should be -user-specifiable.

+user-specifiable.

+

10.10.20.40 The user should have the option of compressing the time guide so that only those time intervals upon -which fall selected calendar events are shown.

+which fall selected calendar events are shown.

+

10.10.20.50 Overlapping events should be displayed in an -easy to understand fashion.

+easy to understand fashion.

+

10.10.20.60 There should be a simple mechanism for adding -events which start at a particular hour.

+events which start at a particular hour.

+

10.10.20.70 The day view should support events that don't have a specified start and end time, and the time guide should -include a slot for these items.

10.10.30 Week View

+include a slot for these items.

+

10.10.30 Week View

+

10.10.30.10 The calendar should support a view showing -all the events for a particular week.

+all the events for a particular week.

+

10.10.30.20 The events for a particular day should be -grouped together.

+grouped together.

+

10.10.30.30 There should be a simple mechanism for adding -an event for a particular day.

+an event for a particular day.

+

10.10.30.40 The currently selected day should be -highlighted or otherwise clearly indicated to the user.

+highlighted or otherwise clearly indicated to the user.

+

10.10.30.50 There should some way to move to the next and -previous week from this particular view.

10.10.40 Month View

+previous week from this particular view.

+

10.10.40 Month View

+

10.10.40.10 The calendar should support a view showing -all the items for a particular month.

+all the items for a particular month.

+

10.10.40.20 The events for a particular day should be -grouped together.

+grouped together.

+

10.10.40.30 There should be a simple mechanism for adding -an event for a particular day.

+an event for a particular day.

+

10.10.40.40 The currently selected day should be -indicated.

+indicated.

+

10.10.40.50 The application should display only some of the events per day on the month calendar as oppose to every -item.

+item.

+

10.10.40.60 There should some way to move to the next and -previous week from this particular view.

+previous week from this particular view.

+

10.10.40.70 For each day, there should be a link to the -day view for that day.

10.10.50 Year View

+day view for that day.

+

10.10.50 Year View

+

10.10.50.10 As a navigational mechanism, the calendar should support a view that shows all months and days in a particular year but not necessarily with any information on items -for the days displayed.

+for the days displayed.

+

10.10.50.20 For each month, there should be a link to the -month view of that month.

+month view of that month.

+

10.10.50.30 For each day, there should be a link to the -day view of that day.

10.20 Navigation

10.20.10 Navigation Widget

+day view of that day.

+

10.20 Navigation

+

10.20.10 Navigation Widget

+

10.20.10.10 The calendar should provide a widget for collecting together related navigation links. This should be -similar to the widget provided by Yahoo Calendar and Excite Planner.

+similar to the widget provided by Yahoo Calendar and Excite Planner.

+

10.20.10.20 Navigation to a different date should -maintain the same view.

+maintain the same view.

+

10.20.10.30 In the list, day, and week views, the widget should display a mini calendar of the days of the current month. Each day should be a link except for the currently viewed day which -should not be a link and should be highlighted in some manner.

+should not be a link and should be highlighted in some manner.

+

10.20.10.40 In the month view, the widget should contain a list of the months of the year. Each month should be a link except for the month containing the currently viewed day which -should not be a link and should be highlighted in some manner.

+should not be a link and should be highlighted in some manner.

+

10.20.10.50 In the year view, the widget should contain a short list of years before and after the current year. Each year should be a link except for the year containing the currently viewed day which should not be a link and should be highlighted in -some manner.

+some manner.

+

10.20.10.60 The widget should contain some mechanism for entering an arbitrary date using a clearly defined format, such as -that employed by Yahoo Calendar.

+that employed by Yahoo Calendar.

+

10.20.10.70 The widget should clearly display today's -date along with some mechanism for navigating to that date.

+date along with some mechanism for navigating to that date.

+

10.20.10.80 In the list, day, and week views there should be a mechanism for jumping forwards or backwards by a whole month -at a time.

+at a time.

+

10.20.10.90 In the month and year views, there should be a mechanism for jumping forwards or backwards by a year at a -time.

10.20.20 View Specific Navigation

+time.

+

10.20.20 View Specific Navigation

+

10.20.20.10 Each view except for 'list' should have some easy mechanism for jumping forward or backward by the interval -being viewed.

+being viewed.

+

10.20.20.20 Selecting a day in week, month, or year view -should take you to the day view for the that day.

+should take you to the day view for the that day.

+

10.20.20.30 Selecting a month in year view should take -you to the month view for that month.

10.30 Adding Events

+you to the month view for that month.

+

10.30 Adding Events

+

10.30.10 Adding an event should involve entering information for the event in a form and then submitting that form. Form should include title, start date and time, or an explicit indication that the event does not have a start time. Default values should already be entered with the correct time zone offset in place. Non-required fields should include end time or duration, type information, a description, to which party the event belongs, -and an indicator as to whether or not this event recurs.

+and an indicator as to whether or not this event recurs.

+

10.30.20 There should be a simple, clearly labeled link for adding an event. The date should default to the currently -viewed date and the present time.

+viewed date and the present time.

+

10.30.30 The time guide in the day view should have links -from each hour and from the slot for items with no start time.

+from each hour and from the slot for items with no start time.

+

10.30.40 Selecting the 'no start time' link should bring up the form with the date defaulting to the currently viewed date -and the 'no start time' indicator set.

+and the 'no start time' indicator set.

+

10.30.50 Selecting a link from a specific hour should bring up the form with the date defaulting to the currently viewed date, the start time to the hour selected, and the end time to one -hour later.

+hour later.

+

10.30.60 The week view should have a link for each day -for adding an item.

+for adding an item.

+

10.30.70 The month view should have a link for each day -for adding an item.

+for adding an item.

+

10.30.80 As in the Yahoo style calendar, there should be a 'quick add' box on the side of their calendar that allows user to add events quickly without having to click through on different -days and different views.

10.40 Viewing Events

+days and different views.

+

10.40 Viewing Events

+

10.40.10 Selecting an event's title from any view should display details for that event, including links to edit, add -attachment, and delete.

10.50 Editing Events

+attachment, and delete.

+

10.50 Editing Events

+

10.50.10 While viewing an event, select 'Edit'. You should get a form allowing you to edit the title, date, times, types, and description for the event. Non-recurring items should have a "Repeat?" field but not an "Update?" field. [need to clarify what this means] -

10.60 Adding Recurring Events

+

+

10.60 Adding Recurring Events

+

10.60.10 If the recurring events indicator is selected in the form for adding an item, then after submitting that form, a second form should be presented which summarizes the date and time -of the item and provides fields to set how the item recurs.

+of the item and provides fields to set how the item recurs.

+

10.60.20 The form should include fields to enter the type of interval, the number of intervals between recurrences, and any -specific information for the selected type of interval.

10.70 Editing Recurring Events

+specific information for the selected type of interval.

+

10.70 Editing Recurring Events

+

10.70.10 Selecting Edit when viewing a repeating item should add a field at the bottom of the form to specify whether any changes should be applied to only the current instance being edited -or to all instances of this recurring item.

10.80 Adding Attachments to Events

+or to all instances of this recurring item.

+

10.80 Adding Attachments to Events

+

10.80.10 When viewing an item, there should be a link to add an attachment to that item. Selecting that link should bring up -a form to add attachments of various types.

+a form to add attachments of various types.

+

10.80.20 The form should include a field for the title of -the attachment.

+the attachment.

+

10.80.30 One type of admissible attachment supported should be an uploaded file. This type should be handled in the -standard ACS manner.

+standard ACS manner.

+

10.80.40 One type of admissible attachment should be a -URL.

+URL.

+

10.80.50 One type of admissible attachment should be a block of text. The form should provide a text box for entering the -text and a way to indicate if the text is plaintext or HTML.

+text and a way to indicate if the text is plaintext or HTML.

+

10.80.60 After adding an attachment of any sort, the calendar should return to the view of the item which should have a -list of attachments including the attachment just added.

+list of attachments including the attachment just added.

+

10.80.70 For each attachment listed, there should be displayed -- when permissions admit -- the title of the attachment, a link to the content of the attachment, a link to manage the -attachment, and a link to edit it.

+attachment, and a link to edit it.

+

10.80.80 For a file attachment, the content link should -return the content of the file.

+return the content of the file.

+

10.80.90 For a URL attachment, the content link should -navigate to the URL.

+navigate to the URL.

+

10.80.100 For a text attachment, the content link should -display the entered text.

+display the entered text.

+

10.80.110 The manage link links to the management page of the corresponding file in the file-storage system. [file-storage or CR?] -

+

+

10.80.120 The edit link allows direct editing of the -content of the attachment.

10.90 Inviting other groups to view Events

+content of the attachment.

+

10.90 Inviting other groups to view Events

+

10.90.10 The application should have a link that lets the owner of the event to invite other groups, individual or parties to -add this event to their personal calendars.

10.100 Deleting events

+add this event to their personal calendars.

+

10.100 Deleting events

+

10.100.10 When viewing an item, there should be a link to -delete that item.

+delete that item.

+

10.100.20 Selecting the delete link should bring up a -confirmation dialog.

+confirmation dialog.

+

10.100.30 If the item is not recurring, then the choice -button will simply be labeled 'OK'.

+button will simply be labeled 'OK'.

+

10.100.40 If the item is recurring, then in addition to the choice buttons, there should be a selection to indicate either -the current instance only or all occurrences.

+the current instance only or all occurrences.

+

10.100.50 Selecting 'Cancel' should return to the item -view.

+view.

+

10.100.60 Selecting 'OK' should delete the item in -question.

+question.

+

10.100.70 If the item was recurring and 'all occurrences' had been selected, then all other occurrences of the item should be -deleted as well.

+deleted as well.

+

10.100.80 Selecting OK should return to the view where -the item was originally selected.

VI.B Requirements: Party-Specific Events

20 Party-Specific Events

+the item was originally selected.

+

VI.B Requirements: Party-Specific Events

+20 Party-Specific Events +

20.10 The calendar should display a list of calendars to which the user has access. At a minimum, this will include the user's personal calendar and a public events calendar. If the user belongs to parties that have party-specific events associated with them, there should be additional links to these party-specific events as well as the calendar of the party to which the user -belongs.

+belongs.

+

20.30 On the personal calendar, there should also be a toggle for each such party that controls whether or not events from -that party appear on the personal calendar.

+that party appear on the personal calendar.

+

20.40 On a user's calendar, party-specific events should -indicate to which party they are specific.

+indicate to which party they are specific.

+

20.50 The link for adding an event should clearly indicate whether a party-specific item or a personal item will be -created.

VI.C Requirements: Managing Party-Specific Events

30 Managing Party-Specific Events

+created.

+

VI.C Requirements: Managing Party-Specific Events

+30 Managing Party-Specific Events +

30.10 If the user has write permission to any parties, when he chooses to add an event, the choice of which party to -associate with that event is given.

+associate with that event is given.

+

30.20 There should also be a page where permissions of read, write, approve, and delete can be given to different -parties

+parties

+

30.30 There should be a link to the admin page for the -group.

+group.

+

30.40 There should be a way to delete the calendar. This route should involve passing the user through a confirmation -dialog.

VI.D Requirements: Calendar Administration

40 Calendar Administration

40.10 Calendar User Privilege Administration

+dialog.

+

VI.D Requirements: Calendar Administration

+40 Calendar Administration +

40.10 Calendar User Privilege Administration

+

40.10.10 Cal Admin must have access to pages where -permissions can be set for different parties

+permissions can be set for different parties

+

40.10.20 Cal Admin can also add new user -party/groups/person to the entire calendar

+party/groups/person to the entire calendar

+

40.10.30 Cal Admin can also add new user -party/groups/person to indivdual calendar items

40.20 Calendar Items Administration

+party/groups/person to indivdual calendar items

+

40.20 Calendar Items Administration

+

40.20.10 Provides the funcationality to delete, add, edit -any item on the calendar

+any item on the calendar

+

40.20.20 Provides the funcatinality to allow Calendar -Administrator to change the permissions on each calendar item.

+Administrator to change the permissions on each calendar item.

+

40.20.20 Provides the funcatinality to allow Calendar Administrator to change the default permissions of the entire calendar
-

VI.E Requirements: API

50 API

50.10 Calendar Events Manipulation

+

+

VI.E Requirements: API

+50 API +

50.10 Calendar Events Manipulation

+

50.10.10 Provide a function to add a new item to a calendar. This function should support specifying all the values that can be specified in the 'add item' form. It should allow creating either a user or a party-specific item. Iit should support specifying a mapping between the new item and an arbitrary object -in the database.

50.20 Calendar Views

+in the database.

+

50.20 Calendar Views

+

50.20.10 Provide a function to generate the HTML for the -list view.

+list view.

+

50.20.20 Provide a function to generate the HTML for the -day view.

+day view.

+

50.20.30 Provide a function to generate the HTML for the -week view.

+week view.

+

50.20.40 Provide a function to generate the HTML for the -month view.

+month view.

+

50.20.50 Provide a function to generate the HTML for the -year view.

+year view.

+

50.20.60 Provide a function to generate the HTML for the -calendar navigation.

+calendar navigation.

+

50.20.70 Provide a function to generate the HTML for the -complete calendar.

VII. Revision History


+complete calendar.

+

VII. Revision History

+
+
@@ -399,8 +556,9 @@ -
Document Revision #Action Taken, NotesWhen?By Whom?
0.7Further Revisions2000/12/06Joshua Finkler and Gary Jin

+ +
+
gjin\@arsdigita.com and smeeks\@arsdigita.com
-