Skip to content
Mark R. Evans edited this page Sep 29, 2018 · 1 revision

Agenda Plugin for glFusion

Overview

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.

System Requirements

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

Features

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

Using Agenda

Navigating Agenda

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.

Changing the View

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.

Event Details

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.

Creating a New 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

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

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

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

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.

Repeating Event Editing

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

Editing an Individual Event

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.

Deleting Events or Event Series

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.

Categories / Color Coding

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.

Permissions

The following controls are implemented to control access to the Agenda calendar and events:

Anonymous User Access

You can enable or disable anonymous user access to the calendar. Logged-in users will have access to the calendar.

Event Submission

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.

glFusion Groups and Rights

Agenda Admin Group

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.

agenda.noqueue Right

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.

Configuration

General

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.

Global View Options

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 Options

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 Options

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 Options

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 Options

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).

Date / Time Format Guide

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

License

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