calendarA Calendar Application supporting several Calendars
Developed by

Denis Gotthans, Clemens Robbenhaar, Thomas Mortagne

Active Installs376
8 Votes
LicenseGNU Lesser General Public License 2.1
Installable with the Extension Manager


You can also try the Pro version: Calendar Application (Pro).

Combines the Calendar Application application with the FullCalendar Application to provide an "out of the box" usable calendar within XWiki with the slick UI from the "FullCalendar" jQuery plugin.


After installing the extension you should have a "Calendar" in the applications panel; alternatively you can reach the application at http://<server>/xwiki/bin/view/MoccaCalendar/

The application maintains several calendars. One default calender is preinstalled.
The start page displays all events of all calendars in the current month.
Users can either add new events (which end up in the default calendar, unless specified differently) or new calendars.

Overview page

Calendars have a description and color. All events of a given calendar are displayed in the color of it's calendar.
Events, beside of being colored like their corresponding calendar, also have a short name, a description, a start and an end date. Events can be "all day" events or have a defined start and end time, too. 

Display of various events on the main calendar page

Creating events

Clicking on the "Create an Event" link opens a modal dialog which allows you to give the new event a title, start and end date and time and a description. (The description only shows up in the details view). "All day" events are supported, too (currently you have to give even "all day" a dummy time for start and end date, too, which will be ignored however.)
Recurring events are not yet supported.

Dialog to create a new event

Editing events

Clicking on an event in the calendar opens the detail view of the event. In this dialog you can edit the event or delete the event (you have to confirm the delete in the dialog.)

Detail view of an existing event

Editing an existing event

Alternatively you can view the Event as a wiki page by clicking on the "View" button in the dialog; on that page you can add attachments, look at the history, etc.
You can go back to the calendar you came from via the link at the bottom, or to the main calendar overview via the link in the breadcrumbs.

An event viewed as wiki page

Managing Calendars

At the bottom of the overview page you can find a table of all existing calendars, with options to view edit or delete them, and a link to add new calendars on top of it:

List of all existing calendars

If you click on the "Create a calendar" link you will be first led to the normal "add page" dialog, which then will create a new calendar and show it to you in edit mode. You can set up the title, color (via the convenient color picker) and description. The latter is shown in the detail view of the calendar.

Editing a calendar

iCalendar export

You can use Mocca Calendar iCal export to add iCalendar export.


If you find a bug or have a suggestion for improvement, please report it in the Issue Tracker. Please check if the issue has been reported there already.

Migration to Nested Pages

If you update this extension from a pre-2.6 version, you likely want to migrate all the calendars to become nested pages. For this you will need to run the Nested Pages Migrator again (or maybe for the first time, if you set up the wiki with a version of 7.2 or later).

In case you have placed some events in spaces different from their calendar, maybe to apply special access restrictions to them, be advised that they will afterwards be a sub page of their calendar and the access restriction from the original space will no longer apply. You might want to exclude these events from the migration, and preferably move them to a calendar of their own so they get their access restrictions back.

Update from the Extension Manager

When updating the extension the extension manager will ask you to remove the page under "MoccaCalendar.Events" (unless you have removed/renamed the pre-installed default calendar). Do not do that, but keep the calendar around. Instead you might want to remove the version installed in the new place at "MoccaCalendar.Events.WebHome" which will happen automatically when using the Nested Pages Migrator Application in the next step.

Migrate your content with the  Nested Pages Migrator

Especially if you already have used the Nested Pages Migrator there are a few things to be taken into account so rerunning does mess up your instance:

  • in the configuration section:
    • add MoccaCalendar.WebHome to the list of excluded pages
    • add MoccaiCalendar to the list of excluded spaces
    • probably disable the "Add Redirection" in the "Advanced Settings"


Then compute the plan; you will see something in "Main" wants to be migrated, too. You likely do not want that.

Expand the "Main" section, and click the "Exclude Space" button for every space listed there, unless it contains a calendar. After the plan is recomputed, continue with the next space until the "Main" space vanishes from the plan (or it only contains spaces with calendars). 

Afterwards your plan should look like this:


It is ok that the MoccaCalendar.Events.WebHome will be overwritten; this is the new place of the preinstalled "default" calendar and the migration will overwrite it with your version of the calendar. (You will not see this warning if you have removed that calendar; in that case you likely want to remove the new version of the default calendar as well after the migration step).

Press "Execute plan" and wait until the migration process finishes.

Afterwards all events should be placed under their corresponding calendars, and both calendars and events are now proper nested pages.

For MoccaCalendar Developers


The oldest supported XWiki version can be found in the root pom.xml as the version of the xwiki-commons-pom.
You can set up a barebone instance of that version by running: mvn clean process-test-resources in the directory application-mocca-calendar-tests. Start the instance with ./target/xwiki/ or .\target\xwiki\start_xwiki.bat.

Always test changes at least against the oldest supported and the newest XWiki version. If a feature cannot be made to work in the oldest supported version, change the oldest supported version to a more recent one where that feature works.

Create a Release

Releases are created via the Contrib Release process, with some modifications:


Make sure the issue tracker has no open issues assigned to the to-be-released version - or move them to the next version.

Make sure you use a java version compatible with the oldest supported XWiki version - otherwise the integration tests might not be pleased.

To prevent any browser caching issues, update the version number manually in the src/main/resources/MoccaCalendar/Macro.xml.

$xwiki.jsx.use("MoccaCalendar.Macro", {'defer': false, 'v' : '2.3.1'})

Commit all changes so far and push the results.

Perform release

In the root directory:

# check you really have no local modifications and are up to date:
git push
git status
# prepare the release
mvn -Pintegration-tests -Darguments="-DskipTests" release:prepare
# create a maintenance branch - not needed for minor releases
git branch stable-X.Y application-mocca-calendar-X.Y
# perform the actual release
mvn -Darguments="-DskipTests -Dgpg.skip=true" -Pintegration-tests release:perform
# push the changes to github
git push origin master
git push origin stable-X.Y

Then push the release through
Before finishing the release, check the validity of the release by installing the pending release in a fresh XWiki instance for the extension manager, "extended search" > 'org.xwiki.contrib:application-mocca-calendar-ui' + version number.


  • Sync the release on this page via the button right to "Extension imported from repository".
  • Read this page and update the descriptions, if necessary
  • Especially update the release notes; open this page in the object editor and update the "Release notes" field of the corresponding ExtensionCode.ExtensionVersionClass; at least adding the jira issues:
    {{cache id="MOCCACAL-release--X.Y.Z" timeToLive="604800"}}
    {{jira url="" style="list" source="jql"}}
    project = MOCCACAL and fixVersion = "X.Y.Z"
    Of course feel free to add any other things worth noting.
  • Mark the version as released in jira and create the next version (if not already done).

Tested on

This extension has been tested with the following configurations.

Extension VersionXWiki FlavorNotes
2.1.8XWiki Enterprise 5.0.3, 5.3, 5.4.1, 6.0.1
2.1.9XWiki Enterprise 6.2.4, 6.4
2.4.4XWiki Enterprise 7.1.2
2.5.3XWiki Enterprise 9.1.2

2.5.4XWiki 9.8.1

Issues: , ,

Prerequisites & Installation Instructions

We recommend using the Extension Manager to install this extension (Make sure that the text "Installable with the Extension Manager" is displayed at the top right location on this page to know if this extension can be installed with the Extension Manager). Note that installing Extensions when being offline is currently not supported and you'd need to use some complex manual method.

You can also use the following manual method, which is useful if this extension cannot be installed with the Extension Manager or if you're using an old version of XWiki that doesn't have the Extension Manager:

  1. Log in the wiki with a user having Administration rights
  2. Go to the Administration page and select the Import category
  3. Follow the on-screen instructions to upload the downloaded XAR
  4. Click on the uploaded XAR and follow the instructions
  5. You'll also need to install all dependent Extensions that are not already installed in your wiki

Release Notes


This is mainly a "translation update" release.

The following translations have been updated with this release:

  • French
  • Polish
  • Latvian

Nevertheless, a few issues have been resolved with this release either:

  • Closed MOCCACAL-124 Create / Edit calendar entry dialog should stick to the top of the visible window
  • Closed MOCCACAL-123 Mark the preinstalled calendar "Other Events" as demo content


As this version is the first one to support nested pages, you might want to use the Nested Pages Migrator if you upgrade from an older version.

  • Closed MOCCACAL-122 Exceptions in the custom validator make event edit fail without user notice
  • Closed MOCCACAL-118 Allow to set the text color for calendars, too
  • Closed MOCCACAL-117 All events are created under MoccaCalendar.Webhome
  • Closed MOCCACAL-114 One day added each time you drag and drop an All Day event to another date
  • Closed MOCCACAL-111 CKEditor is broken in new event popup
  • Closed MOCCACAL-110 All day event is shown in agenda view of calendar only with start date
  • Closed MOCCACAL-109 Upgrade to ical4j 2.0.4
  • Closed MOCCACAL-108 Multi-day events do not work unless the time is entered
  • Closed MOCCACAL-107 Update to FullCalendar 2.0.4
  • Closed MOCCACAL-106 When event takes all day there can not be changed the end date
  • Closed MOCCACAL-102 Automatically uncheck "all day" if time of event given
  • Closed MOCCACAL-101 Missing <issueManagement>
  • Closed MOCCACAL-99 Ical Links not injected for non-terminal calendars
  • Closed MOCCACAL-97 Old events are not displayed in a renamed calendar
  • Closed MOCCACAL-96 Translation key "" in Datepicker
  • Closed MOCCACAL-95 Change Calendar's home page to be named "Calendar" instead of "Calendar overview"
  • Closed MOCCACAL-94 Do not show "app within minutes" editor when editing the event class
  • Closed MOCCACAL-93 Preinstalled "Other Events" Calendar should not be a terminal page
  • Closed MOCCACAL-91 Cannot create two events with the same title in the same calendar




  • Closed MOCCACAL-99 Ical Links not injected for non-terminal calendars
  • Closed MOCCACAL-97 Old events are not displayed in a renamed calendar
  • Closed MOCCACAL-95 Change Calendar's home page to be named "Calendar" instead of "Calendar overview"
  • Closed MOCCACAL-94 Do not show "app within minutes" editor when editing the event class


  • Closed MOCCACAL-92 If you get a validation error when creating a new event, the save button vanishes


  • Closed MOCCACAL-88 Agenda view of past events: sort newest first
  • Closed MOCCACAL-87 Events spanning several days are not displayed fully in the calendar
  • Closed MOCCACAL-84 Unmark MoccaCalendar.WebHome as hidden


  • Closed MOCCACAL-86 Daylight Saving Time is not properly handled in ical export
  • Closed MOCCACAL-83 Wrong all day date for positive time zone when start date time is 0h0m0s
  • Closed MOCCACAL-82 Event is created in the wrong space if the calendar is located in a non-terminal document


added translations for lv and sk



added dependency missing from 2.4


  • Closed MOCCACAL-80 Introduce extension to add ical export support
  • Closed MOCCACAL-79 Change scope of translation pages from ON_DEMAND to WIKI
  • Closed MOCCACAL-78 Update dependency of FullCalendar macro to v2.0.2
  • Closed MOCCACAL-75 If the calendar macro is restricted to the current space, it should create new events in that space


  • Closed MOCCACAL-74 Validation that start date of event is before end date returnd badly layouted error page
  • Closed MOCCACAL-72 Calendar not displayed when the wiki is in French


  • Closed MOCCACAL-71 Drag & drop of events not disabled for anonymous user
  • Closed MOCCACAL-70 There is no Cancel button when you want to create a new event from the Calendar
  • Closed MOCCACAL-68 Do not display generated random name as title for new events
  • Closed MOCCACAL-66 Remove reading of undefined macro parameters
  • Closed MOCCACAL-65 Mocca Calendar's livetable is missing .controlPagination icons
  • Closed MOCCACAL-63 Integrate polish translation
  • Closed MOCCACAL-61 Remove tabbed information (comments, attachments, etc) from MoccaCalendar.WebHome and MoccaCalendar.MoccaCalendarSheet
  • Closed MOCCACAL-45 The Views order should be: Day, Week, Month, Agenda
  • Closed MOCCACAL-29 Selecting a color for the calendar should colorise the input
  • Closed MOCCACAL-24 Use FullCalendar app as dependency
  • Closed MOCCACAL-22 Get rid of the jQuery copy bundled with the MoccaCalendar app
  • Closed MOCCACAL-15 Be able to edit an event from the 'calendar view'
  • Closed MOCCACAL-14 Be able to delete an event from the 'calendar view'
  • Closed MOCCACAL-13 Being able to see an event details by clicking in the 'calendar view'


fixed bungled release number in 2.2.1



  • Closed MOCCACAL-62 Strange borders when viewing Calendar on Flamingo
  • Closed MOCCACAL-59 Add button for create an event and create a new calendar
  • Closed MOCCACAL-58 Creating Event in a different space fails if no page with that name exists in the calendar space
  • Closed MOCCACAL-55 Order parameter and add missing i18n keys for the "moccacalendar" macro
  • Closed MOCCACAL-47 Update MoccaCal translations / Add Spanish translation from
  • Closed MOCCACAL-39 When creating a new calendar the title gets lost
  • Closed MOCCACAL-37 Calendars list could be alphabetically sorted
  • Closed MOCCACAL-34 Use .xform standard when you're viewing/editing an event
  • Closed MOCCACAL-32 Bad position for the Date/Time selector in 'Create an event' modal when scrolling
  • Closed MOCCACAL-28 Remove 'Content' field when creating a new calendar


  • Closed MOCCACAL-57 Cannot have several calendars on one page
  • Closed MOCCACAL-56 Link to create new events is shown even if the user cannot add events
  • Closed MOCCACAL-53 Adding calendars with apostrophe in the name does not work
  • Closed MOCCACAL-52 Including a Mocca Calendar page via the display-macro crashes the WYSIWYG editor
  • Closed MOCCACAL-51 User which have rights to add events can select each calender
  • Closed MOCCACAL-49 Adding event with apostrophe in title causes other events to not display in Agenda, Month and Day view


  • Closed MOCCACAL-48 Deprecated calls to date.getYear etc in JSONService


Dependencies for this extension (org.xwiki.contrib:application-mocca-calendar-ui 2.6.1):

Created by Clemens Robbenhaar on 2013/12/04 15:14

Get Connected