JavaScriptAPI

Version 1.4 by Jerome on 2009/04/22

XWiki JavaScript API

Observable XWiki Events

This section documents a feature that is only available starting with XWiki Enterprise 1.9M2. This version is not released yet. You can stay in touch with the Roadmap or grab a snapshot.

Stay in touch with what happens in the wiki! XWiki will fire custom javascript events on certain moment and upon certain actions that occur in the navigation flow.

Events name are build on the following model: xwiki:modulename:eventname. Your JavaScript script or extension can get notified of such an event the following way:

document.observe("xwiki:modulename:eventname", function(event){
  // Here, do something that will be executed at the moment the event is fired
  doSomething();

  // The event can have an option memo object to pass to its observers some information:
  console.log(event.memo.somethingINeedToKnow);
});

Check out the real examples below, or read more about Prototype.js's event system

DOM Events

  • xwiki:dom:loaded

This event is similar to prototype's dom:loaded event, with the difference that in the time-lapse between those two events, XWiki may have transformed the DOM. Example of DOM transformations operated by XWiki is setting the right target of links that have rel="external" attribute so that the document can be XHTML valid and still have the desired effect. In the future there might be more transformations operated by XWiki upon DOM initialization. This event is meant for code to be notified of loading of the XWiki-transformed version of the initial DOM. As dom:loaded, it can be used as follow:

document.observe("xwiki:dom:loaded", function(){
  // Initialization that can rely on the fact the DOM is XWiki-tranformed goes here.
});

Action events

  • xwiki:actions:cancel

This event is saved after ther use clicks the "Cancel" button of an editor (Wiki, WYSIWYG, object, rights, etc.)

  • xwiki:actions:preview

This event is saved after ther use clicks the "Preview" button of an editor (Wiki, WYSIWYG, object, rights, etc.)

  • xwiki:actions:save

This event is saved after the user clicks the "Save" or "Save & Continue" button of an editor (Wiki, WYSIWYG, object, rights, etc.). A memo is available if you need to know if the intend is to continue after the save. You can use it as follow:

document.observe("xwiki:dom:loaded", function(event){
  var doContinue = event.memo.continue;
  if (doContinue) {
    // do something specific
   }
});

Document extra events

  • xwiki:docextra:loaded

This event is fired upon reception of the content of a document footer tab by AJAX. This event is useful if you need to operate transformations of the received content. You can filter on which tab content to operate (comments or attachment or information or ...) using the event memo. The DOM element in which the retrieved content has been injected is also passed to facilitate transformations.

document.observe("xwiki:docextra:loaded", function(event){
  var tabID = event.memo.id;
  if (tabID == "attachments") {
    // do something with the attachments tab retrieved content.
    doSomething(event.memo.element);
   }
});
  • xwiki:docextra:activated

This event is fired upon activation of a tab. It differs from the loaded event since tabs are loaded only once if the user clicks going back and forth between tabs. This event will notify of each tab activation, just after the tab content is actually made visible. The tab ID is passed in the memo as for xwiki:docextra:loaded

Tags:
   

Get Connected