Difference between revisions of "SoC calendar plugin"
(Initial Overview and Requriements.) |
m (added Vinny as the possible mentor) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
Geeklog's current calendar plugin is old and unmaintainable. It has no support for modern calendar standards and cannot support such basic functionality as recurring events. It's interface is antiquated and its sharing/group features are extremely limited. | Geeklog's current calendar plugin is old and unmaintainable. It has no support for modern calendar standards and cannot support such basic functionality as recurring events. It's interface is antiquated and its sharing/group features are extremely limited. | ||
− | A new Calendar plugin, written from scratch, could be designed from the | + | A new Calendar plugin, written from scratch, could be designed from the ground up to work with calendar standards and support a wide variety of use cases. |
== Requirements == | == Requirements == | ||
− | Listed below are an initial set of requirements. Students applying to complete this project can use the below list as a design outline. | + | Listed below are an initial set of requirements. Students applying to complete this project can use the below list as a design outline. Though, don't let the requirement set here limit you! |
+ | === Basic Requirements === | ||
* The calendar shall support events for individual users. | * The calendar shall support events for individual users. | ||
− | ** Individuals shall be able to create multiple calendars (limited to number defined by an administrator). | + | ** Individuals shall be able to create multiple calendars (possibly limited to a number defined by an administrator). |
− | ** The calendar owner shall be able to control the visibility of the calendar (private, shared to a group, public) | + | ** The calendar owner shall be able to control the visibility of the calendar (private, shared to a group, public). |
− | |||
* The calendar shall support site wide events. | * The calendar shall support site wide events. | ||
** Who can submit site wide events shall be controlled by the site administrator. | ** Who can submit site wide events shall be controlled by the site administrator. | ||
− | ** When given permission to submit site wide events, users can submit existing individual events to the site wide calendar. | + | ** When given permission to submit site wide events, users can submit a copy of an existing individual events to the site wide calendar. |
** The site administrator shall be able to moderate events submitted by non-admin users. | ** The site administrator shall be able to moderate events submitted by non-admin users. | ||
− | * | + | ** Only site administrators shall be able to modify existing events. |
− | |||
− | |||
* The calendar shall support recurring events. | * The calendar shall support recurring events. | ||
* The calendar shall have an efficient implementation (responsive). | * The calendar shall have an efficient implementation (responsive). | ||
** A smart design will be needed to support recurring events without causing a lack of responsiveness. | ** A smart design will be needed to support recurring events without causing a lack of responsiveness. | ||
+ | * The calendar shall implement Geeklog's [[Multilingual Support|Multi-language support]]. | ||
+ | * The calendar shall support "locales". | ||
+ | ** Configurable date and time format (e.g. 01/21/2010 vs 2010/01/21 vs 21/01/2010, 8:00pm vs 20:00h) | ||
+ | *** also for date and time entry | ||
+ | ** Configurable first day of week (e.g. Monday vs Sunday) | ||
+ | |||
+ | === Nice to Haves === | ||
+ | This is a set of items that would be nice for a calendar plugin to have. At the very least, a calendar plugin should be designed so that adding these features would not be difficult. | ||
+ | * The calendar shall support group events. | ||
+ | * The calendar shall have the ability to import, export and perhaps sync using the iCal ([http://tools.ietf.org/html/rfc5545 RFC5545]) format. | ||
+ | ** Ability to share with services like [http://upcoming.yahoo.com/ Upcoming], [http://www.dopplr.com/ Dopplr], or [http://www.google.com/calendar Google Calendar], so events only have to be entered once. | ||
+ | ** The calendar shall optionally support WebDAV ([http://tools.ietf.org/html/rfc2518 RFC2518]) for calendar and schedule sharing. | ||
+ | * The calendar shall be able to sync with MS Outlook (very difficult!). | ||
+ | * The calendar shall support [http://microformats.org/wiki/hcalendar HCalendar]. | ||
* The calendar shall support for event reminders. | * The calendar shall support for event reminders. | ||
* The calendar shall support sending event invitations and tracking responses. | * The calendar shall support sending event invitations and tracking responses. | ||
− | |||
− | == Bonus == | + | === Bonus Items === |
+ | Listed here are items that do not have a direct impact on the plugin design, but are features that would be nice to have if time permits. | ||
* A migration utility to convert existing Geeklog calendar tables to work with the new plugin. | * A migration utility to convert existing Geeklog calendar tables to work with the new plugin. | ||
+ | * Create a calendar block for display in Geeklog's left or right blocks. | ||
+ | |||
+ | |||
+ | == Notes == | ||
+ | If desired, a license compatible (Geeklog is licensed [http://www.gnu.org/licenses/gpl-2.0.html GPL 2.0]) PHP library/program can be used. However, this should definitely be researched and decided upon before an application is submitted. | ||
Line 35: | Line 52: | ||
''medium'' to ''difficult'' | ''medium'' to ''difficult'' | ||
− | The level of difficulty on this project will be dependent upon the | + | The level of difficulty on this project will be dependent upon the design and feature set chosen to be implemented. |
+ | '''Possible Mentor:''' [http://www.geeklog.net/users.php?mode=profile&uid=1461 Vincent Furia] | ||
== Further Reading == | == Further Reading == | ||
+ | ===References=== | ||
+ | * [http://en.wikipedia.org/wiki/ICalendar Wikipedia: iCalendar] | ||
+ | * [http://en.wikipedia.org/wiki/CalDAV Wikipedia: CalDAV] | ||
+ | |||
+ | ===Bug Tracker=== | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=974 0000974: Make order of day/month/year dropdowns configurable in editors (without template change)] | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=635 0000635: Required visual cues in Calendar Plugin's Event Editor v1.5b1] | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=993 0000993: calendar plugin: submit event's owner is not submit user.] | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=946 0000946: Issue about "Submit an Event" form of the Calendar plugin] | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=775 0000775: Mark links to future dates in calendar with rel="nofollow"] | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=674 0000674: Calender Event invitations] | ||
+ | * [http://project.geeklog.net/tracking/view.php?id=675 0000675: Calendar Event Reminder Email] | ||
+ | |||
[[Category:Summer of Code]] [[Category:Development]] | [[Category:Summer of Code]] [[Category:Development]] |
Latest revision as of 11:03, 6 March 2010
Contents
Overview
Geeklog's current calendar plugin is old and unmaintainable. It has no support for modern calendar standards and cannot support such basic functionality as recurring events. It's interface is antiquated and its sharing/group features are extremely limited.
A new Calendar plugin, written from scratch, could be designed from the ground up to work with calendar standards and support a wide variety of use cases.
Requirements
Listed below are an initial set of requirements. Students applying to complete this project can use the below list as a design outline. Though, don't let the requirement set here limit you!
Basic Requirements
- The calendar shall support events for individual users.
- Individuals shall be able to create multiple calendars (possibly limited to a number defined by an administrator).
- The calendar owner shall be able to control the visibility of the calendar (private, shared to a group, public).
- The calendar shall support site wide events.
- Who can submit site wide events shall be controlled by the site administrator.
- When given permission to submit site wide events, users can submit a copy of an existing individual events to the site wide calendar.
- The site administrator shall be able to moderate events submitted by non-admin users.
- Only site administrators shall be able to modify existing events.
- The calendar shall support recurring events.
- The calendar shall have an efficient implementation (responsive).
- A smart design will be needed to support recurring events without causing a lack of responsiveness.
- The calendar shall implement Geeklog's Multi-language support.
- The calendar shall support "locales".
- Configurable date and time format (e.g. 01/21/2010 vs 2010/01/21 vs 21/01/2010, 8:00pm vs 20:00h)
- also for date and time entry
- Configurable first day of week (e.g. Monday vs Sunday)
- Configurable date and time format (e.g. 01/21/2010 vs 2010/01/21 vs 21/01/2010, 8:00pm vs 20:00h)
Nice to Haves
This is a set of items that would be nice for a calendar plugin to have. At the very least, a calendar plugin should be designed so that adding these features would not be difficult.
- The calendar shall support group events.
- The calendar shall have the ability to import, export and perhaps sync using the iCal (RFC5545) format.
- Ability to share with services like Upcoming, Dopplr, or Google Calendar, so events only have to be entered once.
- The calendar shall optionally support WebDAV (RFC2518) for calendar and schedule sharing.
- The calendar shall be able to sync with MS Outlook (very difficult!).
- The calendar shall support HCalendar.
- The calendar shall support for event reminders.
- The calendar shall support sending event invitations and tracking responses.
Bonus Items
Listed here are items that do not have a direct impact on the plugin design, but are features that would be nice to have if time permits.
- A migration utility to convert existing Geeklog calendar tables to work with the new plugin.
- Create a calendar block for display in Geeklog's left or right blocks.
Notes
If desired, a license compatible (Geeklog is licensed GPL 2.0) PHP library/program can be used. However, this should definitely be researched and decided upon before an application is submitted.
Level of Difficulty
medium to difficult
The level of difficulty on this project will be dependent upon the design and feature set chosen to be implemented.
Possible Mentor: Vincent Furia
Further Reading
References
Bug Tracker
- 0000974: Make order of day/month/year dropdowns configurable in editors (without template change)
- 0000635: Required visual cues in Calendar Plugin's Event Editor v1.5b1
- 0000993: calendar plugin: submit event's owner is not submit user.
- 0000946: Issue about "Submit an Event" form of the Calendar plugin
- 0000775: Mark links to future dates in calendar with rel="nofollow"
- 0000674: Calender Event invitations
- 0000675: Calendar Event Reminder Email