-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Agenda uses FullCalendar, a free open source jQuery plugin by Adam Arshaw which generates an awesome calendar populated with your events.
This plugin combines the power of FullCalendar and glFusion to present your events in a calendar format, which can be organized by custom categories with full drag and drop capabilities.
Agenda is built by bringing together several Open Source projects into a full event management system. The following Open Source tools were used to create Agenda:
- Full Calendar - A JavaScript event calendar. Customizable and open source. Displays a full-size drag-n-drop event calendar.
- Moments.js - Parse, validate, manipulate, and display dates and times in JavaScript.
- qTip 2 - Pretty Powerful tooltips
- RRULE for PHP - Lightweight and fast implementation of recurrence rules for PHP (RRULE from RFC 5545) by Rémi Lanvin
- jQuery UI - User interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library
Without these awesome Open Source tools - we could not have made Agenda for glFusion.
The Agenda Plugin has the following system requirements:
- PHP 5.6.0 and higher.
- glFusion v1.7.0 or newer
- Must be using a UIKIT based theme - will not work with Vintage or Nouveau themes
Agenda is a full featured event management system that supports the following features:
- AJAX powered
- Month/Week/Day/List views
- Event summaries when you click on your calendar items using jQuery qTips
- Recurring Event Support
- Localized - supports all glFusion supported languages
- Full RTL support
- Upcoming Events block
Agenda's primary user interface is the calendar. Here you can create new events, edit existing events, change the calendar view and navigate the calendar months.
The default view is the Month View (the default can be changed in the Configuration settings). All published events (not in the Submission Queue) will display on the calendar. Color coding is handled by the event category.
Agenda's header area contains the buttons to navigate from month to month, or to change to another view.
To return to the current date, use the today button.
To see more details on the event, click the event. This will open a small window that shows all the event details:
If you have the proper permissions, the event details pop-up will have a button in the bottom left hand corner to allow you to edit the event.
To create a new event, click on the calendar in the day you wish to create the event (month view). For weekly or day views, you can click on the day / time slot for the the event. This will open the New Event pop-up where you can fill in the event details.
All submitted events are run through glFusion's spam filters. Recurring Events
Agenda has a very powerful and flexible recurring event engine. To create a recurring event, select the Recurring Event drop down (labeled No Repeat on the initial entry screen).
You can select from the following types of recurring events:
- Daily
- Weekly
- Monthly
- Yearly
Each recurring event type has a set of rules you can define to further refine when the event repeats.
Daily is very simple, you can select to have an event repeat every day or every X days. For example, to repeat an event every other day, enter 2 in the every X day(s) box.
Weekly allows you to repeat an event every X weeks (for example, if you enter 2 in the every X weeks(s) box, the event will repeat every 2 weeks. You can also select the days of the weeks to repeat. For example, if you wish to have your event repeat every Tuesday and Thursday, click on Tue and Thu in the day select area. This will highlight Tue and Thu in green to show they are selected.
Monthly events can be set to repeat on the same day each month, or allow you to select special rules on when they repeat. Monthly events provide a lot of flexibility in how they can repeat.
Using a combination of First, Second, Third, Forth, or Last with the day of the week, or weekday or weekend, you can have an event repeat consistently each month. Here are some examples to help illustrate how this works.
To have an event repeat on the First Monday of each month, we would select First and Monday in the drop down lists.
To have an event repeat on the Last weekday of a month, we would select Last and Weekday from the drop down lists.
To have an event repeat on the Second Weekend of each month, we would select Second and Weekend from the drop down lists.
To have an event repeat on the First Workday of each Quarter, you would enter 3 in the every X month(s) box and then select First and Weekday from the drop down lists.
Yearly events also provide a lot of flexibility in how they can be setup. You can repeat an event on the same day every year, or use advanced rules to repeat events on special days.
For example, Thanksgiving in the US is always on the 4th Thursday of the month. To have an event repeat every Thanksgiving, we would enter Forth and Thursday in the drop down lists.
To have an event repeat only on February 29th of every Leap Year, enter Feb and 29 in the month / day drop downs.
To have an event repeat on the Last Workday of the Year, enter Last, Weekday and Dec in the drop downs.
How Long Does an Event Repeat
Agenda allows you to select one of the following:
- Repeat for XX occurrences
- Repeat until a specific date
Special Notes on Recurrence
Per RFC section 3.3.10, recurrence instances falling on invalid dates and times are ignored rather than corrected: Recurrence rules may generate recurrence instances with an invalid date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM on a day where the local time is moved forward by an hour at 1:00 AM). Such recurrence instances MUST be ignored and MUST NOT be counted as part of the recurrence set.
This means recurring events that have an event that would occur on an invalid date is simply ignored. For example, every month on the 29th would skip February 29 on years that are not leap years. Editing Events
To edit an existing event, click on the event to open the Event Details pop-up, select the Edit button in the bottom left hand corner of the window.
When editing a specific event that is part of a series, you have the option to do the following:
- Edit the Individual Event
- Edit the entire series
When editing a single event in a series, you can change any attribute about the event, including dates and times. The event will marked as an exception, meaning any series edits will not apply this single event in the series.
Dragging a single event in a series to a new date or resizing the time window will mark the event as an exception, making it exempt from series edits.
If you delete the entire series, this event will be deleted as well. Editing a Series
When editing the entire series, you can change the following data items:
- Location
- Description
- Category
Note that any individually edited events in the series will not be updated.
If you select Edit Recurrence, you can modify the start / end dates and times and the recurrence rules for the event.
If you select Edit Recurrence, any exception events will be removed. The entire event series will be deleted and re-created with the new dates, times and recurrence rules.
To delete an event, or an event series, in the Edit Screen, there will be a Delete button or a Delete Series button. Select the button and a confirmation pop-up will appear to confirm you really want to delete the event or event series. Dragging and Dropping Events
Events can be moved from one day to another simply by dragging them on the calendar.
In the Day View or Week View, you can also drag the size of an event to change the time.
NOTE: If you drag an event that is part of a series, only the event being moved will be affected by the change. For example, if you have monthly recurring event and move the event for November, only that one single event will have its date changed.
You can create different categories for events, where each category has its own defined background / foreground color. By using color coded categories, events are easier to identify.
To create / edit categories, navigate to Command & Control → Agenda. From here you can add and modify categories that will appear in the Event Editor.
The following controls are implemented to control access to the Agenda calendar and events:
You can enable or disable anonymous user access to the calendar. Logged-in users will have access to the calendar.
Agenda supports limiting who can add new events to the calendar. You can restrict to Admin users only, allow Admins and Logged-In users, or allow anyone (including non-logged in users) to add events.
Members of the Agenda Admin group have full read / write capabilities. agenda.view Right
Anyone, with the agenda.view feature assigned to a group they belong to will be able to view the Agenda Calendar. Note, you can override the Configuration Setting of Allow Anonymous View by assigning the agenda.view feature to the Non-Logged-in Users group.
Anyone with the agenda.noqueue feature assigned to a group they belong to will be able to submit new events and bypass the submission queue (if enabled).
For more information on glFusion Groups / Rights - please see the Permissions Overview Wiki Page.
Allow Anonymous View
If set to TRUE - anonymous (non-logged-in-users) will be able to view the calendar. If set to FALSE, anonymous users will not be able to access the calendar. See the Security Exit option below to control how glFusion responds to a user without access.
Security Exit
If Allow Anonymous View is FALSE, this option controls how glFusion responds to an anonymous user. The user can receive a Page Not Found error or be redirected to the login to access the calendar.
Who can enter Events
This setting controls who can enter new events on the calendar. Options include No One (only admins), Logged-in-users or anyone. See the Submission Queue setting to enable / disable submission queuing of user submitted events.
Submission Queue
Controls what events are queued for review prior to publishing. Options include Disabled - all submissions are immediately published, Anonymous Only - only non-logged-in users will have their submissions queued, All - all user submitted events will be queued. Note: Admin users are exempt from the submission queue.
Display Blocks
Which glFusion blocks to display when viewing the Agenda Calendar.
Show Upcoming Events Block
If set to TRUE - the Upcoming Events block will be enabled.
Days to Include in Upcoming Events Block
Number of days into the future to list upcoming events.
How Often to Purge Old Events
Number of days between the purge old events maintenance task. The purge old events maintenance task will run automatically every XX days. This task will purge old events from the Agenda database tables.
How Many Years of Old Events to Keep
How many Years of old events to keep.
Default View
Select the default calendar view when calendar is initially displayed. Options are Month, Week, Day or List view.
Auto Height
Determines how the calendar sizes in the browser window. Auto will use as much 'height' as needed to display the select view without adding scroll bars to the view. Auto also compresses the month view to take only the space needed. Fit will take as much space as available and add scroll bars to the view if additional vertical space is needed.
Header Left Items
Select what to display in the Center header area of the calendar.
Header Right Items
Select what to display in the Right header area of the calendar.
First Day of Week
Select the first day of the week for your location.
Display Week Numbers
If TRUE, the week number will be displayed on the Month, Week and Day views.
Print Enabled
If TRUE, a print button will be displayed in the Agenda header to allow printing the current view.
Month View :: Event Limit
Limits the number of events displayed on a day. When there are too many events, a link that looks like “+2 more” is displayed.
Month View :: Time Format
Determines the time-text that will be displayed on each event. For example, 'hh:mm a' will display 12:25 am. See Date / Time Format Guide for details on different formats.
Month View :: Column Format
Determines the text that will be displayed on the calendar's column headings. For example, 'ddd' will display 'Mon', 'ddd M/D' will display 'Mon 9/7'.
-
MM
displays month as ## -
MMM
displays month as abbreviation (i.e.; Jan, Feb, etc.) -
MMMM
displays the full month name (i.e.; January, February, etc.)
Month View :: Title Format
Determines the text that will be displayed in the header's title. For example, MMMM YYYY' will display September 2009
, MMM D YYYY
will display Sep 13 2009
, MMMM D YYYY
will display September 8 2009
.
Month View :: Display Event Time
If TRUE, the Event Start Time will display next to the event (All Day events DO NOT display a start time).
Month View :: Display Event End Time
If TRUE, the Event End Time will also display next to the event (All Day events DO NOT display a end time).
Week View :: Event Limit
Limits the number of events displayed on a day. When there are too many events, a link that looks like +2 more
is displayed.
Week View :: Time Format
Determines the time-text that will be displayed on each event. For example, hh:mm a
will display 12:25 am. See Date / Time Format Guide for details on different formats.
Week View :: Column Format
Determines the text that will be displayed on the calendar's column headings. For example, ddd
will display 'Mon', ddd M/D
will display 'Mon 9/7'.
Week View :: Title Format
Determines the text that will be displayed in the header's title. For example, MMMM YYYY
will display September 2009, MMM D YYYY
will display Sep 13 2009, MMMM D YYYY
will display September 8 2009.
Week View :: Display Event Time
If TRUE, the Event Start Time will display next to the event (All Day events DO NOT display a start time).
Week View :: Display Event End Time
If TRUE, the Event End Time will also display next to the event (All Day events DO NOT display a end time).
Day View :: Event Limit
Limits the number of events displayed on a day. When there are too many events, a link that looks like “+2 more” is displayed.
Day View :: Time Format
Determines the time-text that will be displayed on each event. For example, 'hh:mm a' will display 12:25 am. See Date / Time Format Guide for details on different formats.formats.
Day View :: Column Format
Determines the text that will be displayed on the calendar's column headings. For example, 'ddd' will display 'Mon', 'ddd M/D' will display 'Mon 9/7'.
-
MM
displays month as ## -
MMM
displays month as abbreviation (i.e.; Jan, Feb, etc.) -
MMMM
displays the full month name (i.e.; January, February, etc.)
Day View :: Title Format
Determines the text that will be displayed in the header's title. For example, MMMM YYYY' will display 'September 2009', 'MMM D YYYY' will display 'Sep 13 2009', 'MMMM D YYYY' will display 'September 8 2009'.
Day View :: Display Event Time
If TRUE, the Event Start Time will display next to the event (All Day events DO NOT display a start time).
Day View :: Display Event End Time
If TRUE, the Event End Time will also display next to the event (All Day events DO NOT display a end time).
List View :: Time Format
Determines the time-text that will be displayed on each event. For example, 'hh:mm a' will display 12:25 am. See Date / Time Format Guide for details on different formats.
List View :: Display Event Time
If TRUE, the Event Start Time will display next to the event (All Day events DO NOT display a start time).
List View :: Display Event End Time
If TRUE, the Event End Time will also display next to the event (All Day events DO NOT display a end time).
The following characters are recognized in the format parameter string format character Description Example returned values Day
Day | Description | Example |
---|---|---|
d | Day of the month, 2 digits with leading zeros | 01 to 31 |
D | A textual representation of a day, three letters | Mon through Sun |
j | Day of the month without leading zeros | 1 to 31 |
l (lowercase 'L') | A full textual representation of the day of the week | Sunday through Saturday |
N | ISO-8601 numeric representation of the day of the week | 1 (for Monday) through 7 (for Sunday) |
S | English ordinal suffix for the day of the month, 2 characters | st, nd, rd or th. Works well with j |
w | Numeric representation of the day of the week | 0 (for Sunday) through 6 (for Saturday) |
z | The day of the year (starting from 0) | 0 through 365 |
W | ISO-8601 week number of year, weeks starting on Monday Example: 42 | (the 42nd week in the year) |
Month | ||
F | A full textual representation of a month, such as January or March | January through December |
m | Numeric representation of a month, with leading zeros | 01 through 12 |
M | A short textual representation of a month, three letters | Jan through Dec |
n | Numeric representation of a month, without leading zeros | 1 through 12 |
t | Number of days in the given month | 28 through 31 |
Year | ||
L | Whether it's a leap year | 1 if it is a leap year, 0 otherwise. |
o | ISO-8601 week-numbering year. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in PHP 5.1.0) | Examples: 1999 or 2003 |
Y | A full numeric representation of a year, 4 digits | Examples: 1999 or 2003 |
y | A two digit representation of a year | Examples: 99 or 03 |
Time | ||
a | Lowercase Ante meridiem and Post meridiem | am or pm |
A | Uppercase Ante meridiem and Post meridiem | AM or PM |
B | Swatch Internet time | 000 through 999 |
g | 12-hour format of an hour without leading zeros | 1 through 12 |
G | 24-hour format of an hour without leading zeros | 0 through 23 |
h | 12-hour format of an hour with leading zeros | 01 through 12 |
H | 24-hour format of an hour with leading zeros | 00 through 23 |
i | Minutes with leading zeros | 00 to 59 |
s | Seconds, with leading zeros | 00 through 59 |
u | Microseconds (added in PHP 5.2.2). Note that date() will always generate 000000 since it takes an integer parameter, whereas DateTime::format() does support microseconds if DateTime was created with microseconds. | Example: 654321 |
v | Milliseconds (added in PHP 7.0.0). Same note applies as for u. | Example: 654 |
Timezone | ||
e | Timezone identifier (added in PHP 5.1.0) | Examples: UTC, GMT, Atlantic/Azores |
I (capital i) | Whether or not the date is in daylight saving time | 1 if Daylight Saving Time, 0 otherwise. |
O | Difference to Greenwich time (GMT) in hours | Example: +0200 |
P | Difference to Greenwich time (GMT) with colon between hours and minutes | Example: +02:00 |
T | Timezone abbreviation | Examples: EST, MDT … |
Z | Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive. | -43200 through 50400 |
Full Date/Time | ||
c | ISO 8601 date | 2004-02-12T15:19:21+00:00 |
r | » RFC 2822 formatted date | Example: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) | |
Source: | PHP.net strftime |
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This plugin utilizes several other Open Source projects and would not be possible without their awesome work!
- FullCalendar - Copyright © Adam Shaw - MIT License
- Moments.js - Copyright © JS Foundation and other contributors - MIT License
- qTip2 - Copyright © Craig Michael Thompson - MIT License
- RRULE for PHP - Copyright © Rémi Lanvin - MIT License