Overview

Solspace Calendar is the original and premier event and calendaring add-on for ExpressionEngine!

Calendar offers up both power and simplicity, giving you all kinds of options to satisfy your calendar needs. Need a simple display of daily activities? How about a monthly calendar? Need to fully control every table, div, and class that makes up the HTML that will become your calendar? Calendar can do all that and more.

Calendar utilizes the power of ExpressionEngine’s Channel module. Every event is created in an intuitive fieldtype as part of a channel entry. Therefore, you can take advantage of any and as many custom fields and field types, categories, etc to go along with your calendar event data. If you can do it to an entry in EE, you can do it to a Calendar event.

Events in Calendar allow you to make recurrences and exclude dates. Need weekly events? Have a group that meets on the 3rd Tuesday of every month? How about a monthly meeting that does not meet during the summer? Calendar can do all that.

Last but not least, Calendar allows you to export your events as ICS data, allowing your users to import your event data directly into other calendar applications like Google Calendar, Apple Calendar, Microsfot Outlook, and more.

  Compatibility

The latest version of Calendar is 2.2.0. The chart below shows the current technical requirements and compatibility for the latest version of Calendar.

  What People Are Saying

We've applied Calendar to a number of challenging projects, including a major University to a well-known movie theater in NYC, and it has come through every single time. We recommend it highly!

ejaeDesign

My client was looking for a calendar on their directory site after a lot of searching around and trying to build our own in house, we settled on Calendar from Solspace.

Insignia Creative

The output is really customizable making it look really streamlined on your site, and not just another 3rd party solution that’s plugged into your site with no thought whatsoever.

bcw

Perfect for a church website, this add-on saved a ton of time in getting a church calendar up and running. The .ics integration worked fine, and hooking up multiple calendars was easy.

devrsw

Very pleased with results we got from @solspace calendar working in harmony with @objectivehtml Google Maps http://t.co/7fkq9kqJxY #eecms

Working with @solspace calendar today, love how much I can do with it…took me 20 minutes to convert from native #eecms calendar!!!

If you haven't used @solspace's Calendar lately for #eecms, you're missing out on a truly great add-on. It's come a loooong way from v1.0 <3

  Changelog

For updating instructions, please visit the documentation.

  Documentation     Updates

Updates

Updating Instructions #

IMPORTANT: If you're upgrading from Calendar 1.x on ExpressionEngine 2.x, it's recommended that you upload the new Calendar files to your new ExpressionEngine 3.x site directory just before running the EE2 -> EE3 upgrade. Please see Calendar 1.x to 2.x Upgrade Guide before considering upgrading.

  1. Within your sites ./system/user/addons/ directory, delete the calendar folder and upload the new one from the /system/user/addons/ directory in your download package.
  2. Within your sites ./themes/user/ directory, delete the calendar folder and upload the new one from the /themes/user/ directory in your download package.
  3. Go to the Add-On Manager area in the ExpressionEngine control panel, scroll to down to the Third Party Add-Ons section, and find Calendar in the list, and click Update.
  4. Upgrading from Calendar 1.x (if applicable):

Changelog #

2.2.0 (August 24, 2016) #

  • Added 'calendar:event_is_past', 'calendar:event_is_current', and 'calendar:event_is_future' conditionals for Calendar:Events tag.
  • Added 'calendar:event_start_date_timestamp', 'calendar:event_end_date_timestamp', 'calendar:event_start_date_timestamp_utc' and 'calendar:event_end_date_timestamp_utc' variables to Calendar:Events tag and custom field display in Channel:Entries. The former of the two versions are a localized adjustment to the timestamp so you can compare it correctly with EE's 'current_time' variable, etc.
  • Fixed a bug where ICS exporting recurring events would result in an error.

2.1.1 (June 22, 2016) #

  • Updated for compatibility with ExpressionEngine 3.4.
  • Fixed a bug where Calendar would not display a custom field if there was another MSM site with a custom field with the same short name.

2.1.0 (May 27, 2016) #

  • Updated fieldtype interface for a cleaner look and feel. Requires EE 3.2+.
  • Greatly improved control panel performance for loading a large number of events.
  • Added single variable support for uploaded file parsing in Calendar:Events tag.
  • Fixed a bug where unknown timezones could cause errors in Calendar control panel and template tags. Now defaults to UTC.
  • Fixed a bug where filtering by 'not' category ID and using 'uncategorized_entries' parameter would kill all other parameter filtering for the template tag.

2.0.5 (April 29, 2016) #

  • Added support for PHP7.
  • Fixed a bug in Migration where events that used the Select Dates option only would migrate incorrectly, causing errors.

2.0.4 (April 18, 2016) #

  • Updated Calendar for compatibility with ExpressionEngine 3.3's new icon set in the control panel.
  • Updated demo templates to handle multi-day event times better.

2.0.3 (March 18, 2016) #

  • Fixed a bug where the Calendar:Date template tag would not always be accurate for output date.
  • Fixed a bug where Calendar could error when custom channel fields were named with MySQL reserved names.
  • Fixed a bug where Calendar would not install on Windows based machines.

2.0.2 (March 3, 2016) #

  • Fixed a bug where 'CURRENT_USER' option did not work in the author_id="" parameter of Calendar tags.
  • Fixed a bug where date_range_start="today" and date_range_end="today" parameters in Calendar:Events tag would not correctly show all events for that given day.
  • Fixed a bug where the {if current_day/week/month/year} conditionals were not correctly localized to the users preferences.
  • Fixed a bug where the default EE datepicker language file would not load when Calendar is installed because it is also named 'calendar'.
  • Fixed a bug where submitting invalid date values into date_range_start="" and date_range_end="" parameters would trigger an error instead of failing gracefully. Will now default to 'today' when an incorrect value is passed.

2.0.1 (February 25, 2016) #

  • Fixed a bug where Calendar could error on install in some cases.
  • Fixed a bug where the Calendar fieldtype was triggering a deprecation notice.

2.0.0 (February 15, 2016) #

  • Updated Calendar to be compatible with ExpressionEngine 3+ (only). Calendar 1.x is required for ExpressionEngine 2.x.
  • Completely rewrote Calendar from the ground up. Added migration utility for Calendar 1.x users to upgrade.
  • Calendar field is now a full fieldtype that can be used in any channel and as many times as you wish.
  • Added support for EE Multiple Site Manager (MSM)
  • Added Low Events 1.5+ migration path.
  • Updated Calendar:Events template tag to show a chronological list of all recurrences (like Calendar:Cal in Calendar 1.x used to behave). To achieve old Calendar:Events tag (in Calendar 1.x) behavior, simply use the Calendar fieldtype variable pair and variables inside of a Channel:Entries tag, or for lists specify the show_recurrences="no" parameter in Calendar:Events tag.
  • Renamed Calendar:iCalendar template tag to Calendar:ICS_Export.
  • Removed ability to create additional occurrence rules.
  • Removed ability to make one-off occurrence manipulations (sometimes referred to as Custom Edited Occurrences in Calendar 1.x).
  • Removed ability to import Calendar data with ICS. May be added back in a future release.
  • Removed Calendar:ICS_Update template tag, as ICS import is currently not available.
  • Removed Calendar:Year_List template tag.
  • Removed Calendar:Mini calendar template tag, as this can be achieved with Calendar:Month tag.
  • Removed Calendar:Occurrences template tag loop in favor of {calendar:recurrences} variable pair.
  • Removed Calendar:Cal template tag in favor of Calendar:Events and using the functionality broken down into Calendar:Month, Calendar:Week, and Calendar:Day template tags. Removed the hidden auto-formatting functionality from these template tags as well.
  • Removed {rules}{/rules} variable pair and variables from Calendar:Events template tag.
  • Removed ability to repeat events forever (must have a specified end date).
  • Removed show_RANGE="" parameters. This is generally already available with the easy-to-use text date formatting options for date_range_end="" parameter.
  • Removed ability to filter event results by time (full days allowed only now).
  • Removed per calendar time formatting controls.
  • Removed timezone settings and localization.

1.8.14 (August 26, 2015) #

  • Added a force_update="yes" parameter for Calendar:ICS_Update to allow the overriding of ICS_Update's checking for LAST-MODIFIED or DTSTAMP changes before upgrading an imported event from the icalendar format. Apple and Outlook (web) do not properly support the icalendar specification and thus do not update DTSTAMP or include LAST-MODIFIED on the VEVENT block when an event is updated.
  • Added back in erroneously removed debugging logs lines from within calendar tag processing (seen when EE's template debugging is enabled).
  • Added an allow_logged_out="yes" parameter to ICS_Update to allow updates to function when the user is logged out for easier use of cron jobs and remote fetching of the template. This is gated behind a parameter in case there are security concerns.
  • Fixed a bug where date comparisons within Calendar:ICS_Update were using an inaccurate date comparison method in MySQL which could result in false negatives for update intervals.
  • Fixed a bug where modern pagination was not functioning correctly and wasn't allowing the use of the {calendar_pagination_links} variable pair.
  • Fixed a bug where some combinations of recurring events could cause an infinite loop to occur during event building.
  • Fixed a bug where Calendar:ICS_Update could throw an error during update in some ExpressionEngine versions.

1.8.13 (April 28, 2015) #

  • Updated for compatibility with ExpressionEngine 2.10+.
  • Fixed a bug with Calendar:ICS_Update where interval comparisons might not correctly update.
  • Fixed a bug where an Assets field could trigger errors when used with a Calendar channel.

1.8.12 (February 2, 2015) #

  • Added an adjustment to the date format parameter "%U" that adjusts the timestamp against the offset of the calendar. This can be further adjusted with a timezone ID and a tz_id_my-calendar-url-title="America/New_York" parameter. Note that this ONLY affects the "%U" format on date params.
  • Made some minor adjustments and improvements to the Demo Templates.

1.8.11 (December 10, 2014) #

  • Updated and refreshed demo templates.

1.8.10 (November 21, 2014) #

  • Fixed a bug where Calendar could display errors in PHP 5.6.0.
  • Fixed a bug where caching of some data items could take up a lot of system memory.

1.8.9 (June 18, 2014) #

  • Fixed an issue with date conditionals in Occurrences tag and variable pairs that could occur in ExpressionEngine 2.9+.

1.8.8 (May 20, 2014) #

  • Fixed an issue with date conditionals that could occur in ExpressionEngine 2.9+.

1.8.7 (May 8, 2014) #

  • Fixed an issue with date conditionals that could occur in ExpressionEngine 2.8.2+.

1.8.6 (April 13, 2014) #

  • Updated for compatibility with EE 2.8.
  • Fixed a bug with ICS import where missing elements could possibly cause a PHP error.
  • Fixed a potential bug with permissions and incomplete channel data.
  • Fixed a bug where ICS imports/updates could malform 'end_by' rules on repeating events.

1.8.5 (September 12, 2013) #

  • Updated iCalendar class to 2.16.12.
  • Fixed a bug where ICS updates would error and not create entries due to an entry_date error.
  • Fixed a bug where new ICS imports in new Calendars could result in a PHP error on publish.
  • Verified compatibility with EE 2.7.

1.8.4 (May 14, 2013) #

  • Fixed a bug where pagination would fail to work in some situations.
  • Fixed a critical bug with installing Calendar on ExpressionEngine 2.6+.

1.8.3 (May 1, 2013) #

  • Added 'summary_field' parameter to Calendar:iCalendar to allow changing of the default {event_title} for export. [With thanks to Aaron Gustafson]
  • Added a preference for default behavior for deletion of events with the Calendar:ICS_Update tag.
  • Added delete_missing="yes" parameter to Calendar:ICS_Update to override 'ICS Update Default Delete Behavior' preference.
  • Updated for compatibility with ExpressionEngine 2.6.
  • Fixed a bug where PHP errors would occur in the CP on PHP 5.2.x.
  • Fixed a bug where large amounts of events (over 500) would have issues showing all events within a time range.
  • Fixed a bug where updated events from Calendar:ICS_Update would create new events instead of updating the older imported items with the same UUID.
  • Fixed a bug where Calendar permissions might not be able to load group data.

1.8.2 (March 8, 2013) #

  • Added internal Demo Templates tab in control panel (replaces older "code pack" approach).
  • Updates are now automatic and no longer require a manual update screen.
  • Fixed a bug where using the Calendar widget with SafeCracker and an alternate form ID would cause javascript errors.
  • Fixed a bug where after many many events were displayed on a page with Calendar:Cal, a PHP error could occur in some rare situations.

1.8.1 (December 29, 2012) #

  • Fixed a bug where Calendar would error on upgrades or new installs.

1.8.0 (December 11, 2012) #

  • Removed support for ExpressionEngine 1.x (Calendar is now EE2 only).
  • Added offline documentation files to download package.
  • Added two new hooks for manipulating pagination data: 'calendar_build_calendar_create_pagination' and 'calendar_events_create_pagination'.
  • Added {event_count} and {event_total} variables to {events} variable pair for use in Calendar:Cal tag.
  • Added extra instructions to the Calendar channel field 'ICS URL' to notate that all imported times are adjusted to that calendar's offset.
  • Updated the 'date_range_end' parameter to have a default value of end of the day instead of the current date and time as the 'date_range_start' parameter.
  • Fixed a bug where Calendar was incorrectly putting defaults on text type columns that aren't compatible with MySQL strict mode.
  • Fixed a bug where Calendar inserts on install were not MySQL Strict mode compliant.
  • Fixed a bug where imported entry titles would get auto-truncated in non-MySQL Strict mode silently, and error in MySQL Strict mode. Titles are all now restricted to 100 characters in length before sending to the database, as that is the column limit for channel entry titles.
  • Fixed a bug where some Calendar ICS imports running BYDAY rules could cause errors during the import stage of a new calendar.
  • Fixed a bug where imported events with no title were not receiving a default title value of "No Title".
  • Fixed a bug where events imported from ICS files would incorrectly adjust event times if the system was currently observing Daylight Savings Time.
  • Fixed a bug where the Calendar channel timezone field was not properly defaulting to the Default Timezone in Calendar Preferences.
  • Fixed a bug where pagination would attempt to run even when the limit parameter was not present and would throw PHP errors.
  • Fixed a bug where the default status group on install was '1' and could error if status group id '1' did not exist. Calendar now searches for the lowest status group ID as the default and uses '0' if none are present. This affects new installs only.
  • Fixed a bug where event data could be affected by third party addons hooking into the Channel module and result in missing event errors.
  • Fixed a bug where errors would occur when using the Calendar:Cal tag with PHP 5.4.x.
  • Fixed a bug where creating new event rules could cause errors to occur when using MySQL in strict mode.
  • Fixed a bug where setting the Calendar events 'Dates & Options' field to be required, and editing an event occurrence would result in the inability to submit the entry.
  • Fixed a bug where using '%I' in a date format could result in a PHP error being shown.
  • Fixed a bug where using '%F' in a date format could result in an invalid language line loaded.
  • Fixed a bug where iCalendar format export for Calendars with a timezone of GMT-0 would incorrectly set TZOFFSETTO to '0000' instead of '+0000' and cause imports into certain calendar software (including Google Calendar) to error and fail the import.
  • Fixed a bug where an infinite update loop could occur if Calendar extensions were disabled but the module ### number was up to date.
  • Fixed a bug where recurring events would not take into account 'date_range_start' and 'date_range_end' hours and minutes.
  • Fixed a bug where giving non-integer values to the 'event_id' or 'calendar_id' parameters could result in a MySQL error instead of gracefully falling back to default.
  • Fixed a bug where the 'event_offset' parameter in the Calendar:Events tag wouldn't function without the 'event_limit' parameter being set.
  • Fixed a bug where new rules added in the Calendar widget of the publish page would not use alternate languages set by the system.
  • Fixed some bugs that could occur when upgrading ExpressionEngine 1.x to 2.x with Calendar installed.
  • Fixed a bug where adding exceptions or occurrences could result in a MySQL error when MySQL was running in Strict mode.
  • Fixed a bug where 'Reply To' and 'Reply Name' were not being parsed for variables or sent through to hooks.
  • Fixed a bug where, given no start and end date ranges, the default date range would not end at the end of the last day.
  • Fixed a bug where 'pad_short_weeks' would lose the end time of time_range_end and would set it inadvertently to the beginning of the last day.
  • Fixed a bug where the rule removal button in the publish area would not function in some situations when editing events.
  • Fixed a bug where the text time parser would mistakenly consider 12:00 pm as 00:00 military time rather than 12:00 and conversely would consider 12:00 am as 12:00 military time rather than 00:00.
  • Fixed a bug where foreign language translation files would not load for Calendar unless the system default was set to the language desired and not just the current logged in users language preference.
  • Fixed some rendering bugs with the Calendar widget that could cause javascript errors when foreign languages were used.
  • Fixed a bug where pagination would not properly load foreign language lines for first and last link names.
  • Fixed a bug where EE 1.x would not properly alert users if an update failed because of extensions being disabled.
  • Fixed a bug where some date formats were too aggressively cached and would result in incorrect output.
  • Fixed a bug where Calendar was not compatible with EE 2.5.x's ability to move the third party themes folder.

  Pro Services

Need help with an implementation of Calendar? Need Calendar to do more? We're available for hire!

If you're interested in any of the above services, or have questions about them, fill out the form below to begin our conversation!

  EE Aftercare

Ongoing repairs, additions, and adjustments are a normal part of the life cycle of a web site. With EE Aftercare, you have someone on your team who you can trust to take care of your web site. Solspace brings years of experience in developing, refurbishing, and supporting EE web sites. With EE Aftercare, you have a high-end developer on your team, working with you to have the best and most effective possible web presence.

Learn more about EE Aftercare