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 -r1.1.2.2 -r1.1.2.3 --- openacs-4/packages/calendar/www/doc/requirements.adp 25 Aug 2015 18:02:20 -0000 1.1.2.2 +++ openacs-4/packages/calendar/www/doc/requirements.adp 9 Jun 2016 13:03:12 -0000 1.1.2.3 @@ -39,14 +39,14 @@ educational, club, and other community scenarios.

III. System/Application Overview

-In our system, a party-specific event +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 signing event with their reading group party using the Calendar application. -

A user's calendar is the aggregate of the party-specific +

A user's calendar is the aggregate of the party-specific events which are associated with parties of which the user is a member and which have been specified by this user as desirable for calendar inclusion. Users will have the option to suppress the @@ -61,25 +61,25 @@

-Event Management +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 +events, and setting up recurring events. An event is defined -as an activity +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 +Calendar Views covers those aspects of the application which pertain to the display of calendar events for a particular span of time.

-Navigation covers those aspects of the application which +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

@@ -89,7 +89,7 @@
  • Individuals
  • Groups and Parties
  • Administrators
  • -The individual +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 @@ -101,7 +101,7 @@ clerical information regarding his upcoming commitments, and add local events which are specific to his travels.

    -Groups and Parties can have a collective calendar that +Groups and Parties can have a collective calendar that stands apart from the private individual calendar. This would be useful to display calendar events for the public, for whom there is no individual calendar. For example, ArsDigita can display a @@ -114,7 +114,7 @@ individual calendars, and in addition, the role of calendar administrator must be assigned to handle event managment.

    -Administrators for a group and party wide calendar are +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 permissions for each of these items and also individual's ability @@ -136,170 +136,170 @@ Tests

  • Yahoo Calendar
  • Excite Planner
  • VI.A Requirements: Private Calendar

    -10 Private Calendar -

    10.0 User Interface

    +10 Private Calendar +

    10.0 User Interface

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

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

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

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

    -

    10.10 Views

    +

    10.10 Views

    -10.10.0 Different views should be easily selectable.

    +10.10.0 Different views should be easily selectable.

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

    -

    10.10.10 List View

    +

    10.10.10 List View

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

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

    -10.10.10.30 The columns should be sortable.

    +10.10.10.30 The columns should be sortable.

    -10.10.10.40 There should be at least two lists of items. +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

    +

    10.10.20 Day View

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

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

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

    -10.10.20.40 The user should have the option of +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.

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

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

    -10.10.20.70 The day view should support events that don't +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

    +

    10.10.30 Week View

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

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

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

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

    -10.10.30.50 There should some way to move to the next and +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

    +

    10.10.40 Month View

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

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

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

    -10.10.40.40 The currently selected day should be +10.10.40.40 The currently selected day should be indicated.

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

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

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

    -

    10.10.50 Year View

    +

    10.10.50 Year View

    -10.10.50.10 As a navigational mechanism, the calendar +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.

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

    -10.10.50.30 For each day, there should be a link to the +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

    +

    10.20 Navigation

    +

    10.20.10 Navigation Widget

    -10.20.10.10 The calendar should provide a widget for +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.

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

    -10.20.10.30 In the list, day, and week views, the widget +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.

    -10.20.10.40 In the month view, the widget should contain +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.

    -10.20.10.50 In the year view, the widget should contain a +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.

    -10.20.10.60 The widget should contain some mechanism for +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.

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

    -10.20.10.80 In the list, day, and week views there should +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.

    -10.20.10.90 In the month and year views, there should be +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

    +

    10.20.20 View Specific Navigation

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

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

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

    -

    10.30 Adding Events

    +

    10.30 Adding Events

    -10.30.10 Adding an event should involve entering +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 @@ -308,231 +308,231 @@ type information, a description, to which party the event belongs, and an indicator as to whether or not this event recurs.

    -10.30.20 There should be a simple, clearly labeled link +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.

    -10.30.30 The time guide in the day view should have links +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.

    -10.30.40 Selecting the 'no start time' link should bring +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.

    -10.30.50 Selecting a link from a specific hour should +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.

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

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

    -10.30.80 As in the Yahoo style calendar, there should be +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

    +

    10.40 Viewing Events

    -10.40.10 Selecting an event's title from any view should +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

    +

    10.50 Editing Events

    -10.50.10 While viewing an event, select 'Edit'. You +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] +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 +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.

    -10.60.20 The form should include fields to enter the type +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

    +

    10.70 Editing Recurring Events

    -10.70.10 Selecting Edit when viewing a repeating item +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

    +

    10.80 Adding Attachments to Events

    -10.80.10 When viewing an item, there should be a link to +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.

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

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

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

    -10.80.50 One type of admissible attachment should be a +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.

    -10.80.60 After adding an attachment of any sort, the +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.

    -10.80.70 For each attachment listed, there should be +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.

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

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

    -10.80.100 For a text attachment, the content link should +10.80.100 For a text attachment, the content link should 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.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 +10.80.120 The edit link allows direct editing of the content of the attachment.

    -

    10.90 Inviting other groups to view Events

    +

    10.90 Inviting other groups to view Events

    -10.90.10 The application should have a link that lets the +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

    +

    10.100 Deleting events

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

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

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

    -10.100.40 If the item is recurring, then in addition to +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.

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

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

    -10.100.70 If the item was recurring and 'all occurrences' +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.

    -10.100.80 Selecting OK should return to the view where +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 +20 Party-Specific Events

    -20.10 The calendar should display a list of calendars to +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.

    -20.30 On the personal calendar, there should also be a +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.

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

    -20.50 The link for adding an event should clearly +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 +30 Managing Party-Specific Events

    -30.10 If the user has write permission to any parties, +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.

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

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

    -30.40 There should be a way to delete the calendar. This +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

    +40 Calendar Administration +

    40.10 Calendar User Privilege Administration

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

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

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

    -

    40.20 Calendar Items Administration

    +

    40.20 Calendar Items Administration

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

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

    -40.20.20 Provides the funcatinality to allow Calendar +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

    +50 API +

    50.10 Calendar Events Manipulation

    -50.10.10 Provide a function to add a new item to a +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

    +

    50.20 Calendar Views

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

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

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

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

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

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

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

    VII. Revision History