From version < 110.2 >
edited by Clemens Robbenhaar
on 2019/07/31 22:53
To version < 111.1 >
edited by Clemens Robbenhaar
on 2019/07/31 22:58
< >
Change comment: release 2.7



... ... @@ -58,10 +58,6 @@
58 58  
59 59  === Recurrent Events ===
60 60  
61 -{{error}}
62 -Recurrent events are **not yet implemented**. They will be available in version 2.7, which will be released soon.
63 -{{/error}}
64 -
65 65  When you create a new event, you will see a checkbox at the bottom of the form. If you check that box, new fields will become visible to define the recurrence information of the event:
66 66  
67 67  {{image reference="create-recurrent-event.png"/}}
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
... ... @@ -1,0 +1,1 @@
1 +No
Release Notes
... ... @@ -1,0 +1,9 @@
1 +This release introduces the feature of "recurrent events".
2 +
3 +Please be sure to read the [[migration notes>>||anchor="HMigrationto2.728recurrentevents29"]] if you update, because the update needs at least one manual step to fix up the macro "moccacalendar" that seems to be missing after the update.
4 +
5 +{{cache id="MOCCACAL-release--2.7" timeToLive="604800"}}
6 +{{jira url="" style="list" source="jql"}}
7 +project = MOCCACAL and fixVersion = "2.7"
8 +{{/jira}}
9 +{{/cache}}
calendarA Calendar Application supporting several Calendars
Developed by

Denis Gotthans, Clemens Robbenhaar, Thomas Mortagne

Active Installs392
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 https:///xwiki/bin/view/MoccaCalendar/

The application maintains several calendars. One default calendar 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

Recurrent Events

Recurrent events are not yet implemented. They will be available in version 2.7, which will be released soon.

When you create a new event, you will see a checkbox at the bottom of the form. If you check that box, new fields will become visible to define the recurrence information of the event:

Create a recurrent event

At the moment you can choose between daily, on workdays (except Sunday), weekly, biweekly, monthly, quarterly and yearly events.
You can leave the "first occurrence" field empty; it will by default set to the start date of the event.
If you leave the "last occurrence" field empty, the event will repeat indefinitely. To avoid an infinite loop for "upcoming events" in the "agenda" view of the calendar, only the first 100 repetitions are shown in that view.

Modify one instance of a recurrent event

If you edit one instance of a recurrent event, it will initially show you the entries for the current instance and lets you modify them. If you want to edit the settings for all instances, you can click on the "all instances" radio button at the top of the dialog.

Dialog to delete a recurrent event

If you delete one instance of a recurrent event, you will be asked if you want to delete all instances of the event (with a red alert button), or just the current instance (click the "yes" button or press "enter").


The current implementation has several limitations:

  • recurrent events cannot be moved via drag & drop on the calendar.
  • if an instance of an event is deleted, it cannot be restored via the UI. Go to the page view of the event and either roll back to the previous version via the page history, if the deletion was the last edit for that event, or open the page in the object editor and try to find out the MoccaCalendar.Code.MoccaCalendarEventDeletionClass object with the right date and delete this object.
  • if the start date for all events is edited, any local modifications or deletions to event instances are not moved with the new event date, and will thus disappear.
  • while it has always been the case that date pickers do not open at the place of the input form if one scrolls while editing an event, this issue will now show up more often with the somewhat longer edit dialogs. 

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 2.7 (recurrent events)

When upgrading from a version before 2.7 to a version of 2.7 and higher, the upgrade step in the extension manager might take a bit longer; also some pages have been moved, and you will be asked to delete several unused pages after the upgrade. Please really do delete these pages, or you might end up with two variants of the same UI code from both versions, which will break the UI.

If you have modified some pages like the Macro, JSONService or MoccaCalendarEventSheet, you will likely run into some conflicts when upgrading. Better save your modifications before you upgrade and overwrite with the new version, then reapply your modifications manually. Please note that most pages (including the first two examples) has been moved to a subspace MoccaCalendar.

Some issues that might happen after the upgrade:

Macro "moccacalendar" not found

Because the old page defining this macro is deleted only after the new version is installed, this might cause confusion as for a short time two macros with the same name are around. After removing the old version of the macro, the new version might not be active.

There are two workarounds to get rid of this error message:

  • restart the servlet container in which XWiki is running. This will find the new version of the macro while starting up.
  • go to the page https:///xwiki/bin/view/MoccaCalendar/Code/Macro and make a dummy edit to that page, like inserting a few spaces somewhere. This will make XWiki aware of the new macro definition, even if you roll back that dummy edit instantly via the history. You need to repeat this step for every subwiki where the MoccaCalendar is installed.

Some events are no longer shown in the calendars

This might happen if the migration of the events did not run to completion. (The migration needs to add a new property to all existing events so they are recognized as "non-recurrent".)

You can check if this is the case for some events by visiting the migration helper page at https:///xwiki/bin/view/MoccaCalendar/Code/RecurrentEventMigration.

To re-run the migration you have two options:

  • restart the servlet container while adding a setting like to the command line. (It does not matter if you use "on" or any other text as value of the system property.) Check the server logs if they contain error messages from the migration, or end with "INFO: migrated all events on wiki []" - which of course only appears if the log level is set to INFO. Add a line like
     <logger name="org.xwiki.contrib.moccacalendar" level="info"/>
    to the logback.xml file to make sure you see these messages.
  • the migration helper page also contains a button to start the migration. You can select the batch size for the migration and start the migration manually for the current wiki. The page might sometimes stop the migration even though there are still events to migrate, for reasons currently not investigated. In that case reload the page and try again, maybe even several times. For error messages keeping the migration from running you still need to read the server logs on the file system, however.

If none of these options help, please downgrade to the previous version and send a bug report.

If the migration helper page does not show any non-migrated events, then maybe some events have not been properly migrated to the "nested pages" structure. Please see the next section for remedies. 

Migration to Nested Pages  (for 2.6 and higher)

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.

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-ical' + 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 release introduces the feature of "recurrent events".

Please be sure to read the migration notes if you update, because the update needs at least one manual step to fix up the macro "moccacalendar" that seems to be missing after the update. 


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

Get Connected