TimelineSnippet

Timeline Snippet

This snippets allows you to generate a timeline of the recent changes made on your wiki. It's using Simile Timeline.

Prerequisites

You must add this line:

<script src="http://simile.mit.edu/timeline/api/timeline-api.js" type="text/javascript"></script>

At the bottom of the "HTTP Meta Information" field in Administration > Presentation.

Code

Main.Timeline

#set($changesNb="200")
#if("$!request.changesNb" != "")
  #set($changesNb=$request.changesNb)
#end
#if("$!request.action" == "xml")
  <data>
    #set ($hqlQuery = ", XWikiRCSNodeInfo as ni where doc.id=ni.id.docId and ni.id.version2=1 group by doc.space, doc.name order by max(ni.date) desc")
    #set($recentlyChangedDocuments = $xwiki.searchDocuments($hqlQuery, $util.parseInt($request.changesNb), 0))
    #set($openLi = $xwiki.getXMLEncoded("<li>"))
    #set($closeLi = $xwiki.getXMLEncoded("<li>"))
    #foreach($rcName in $recentlyChangedDocuments)
      #set($rcDoc = $xwiki.getDocument($rcName))      
      <event start="$rcDoc.date.toGMTString()" end="$rcDoc.date.toGMTString()" isDuration="false" title="${rcDoc.getDisplayTitle()}">
        $xwiki.getXMLEncoded("<ul>")
        ${openLi}Last modification: $xwiki.formatDate($rcDoc.date, "MMMM dd, hh:mm")${closeLi}
        ${openLi}Author: $xwiki.getLocalUserName($rcDoc.author, false)${closeLi}
        $xwiki.getXMLEncoded("</ul>")
      </event>
    #end
  </data>
#else
<div id="wiki-timeline" style="height: 200px; border: 1px solid #aaa"></div>
<script type="text/javascript">
var tl;
function onLoad() {
  var today = new Date();
  var eventSource = new Timeline.DefaultEventSource();
  var bandInfos = [
    Timeline.createBandInfo({
        eventSource:    eventSource,
        date:           today.toUTCString(),
        width:          "70%", 
        intervalUnit:   Timeline.DateTime.DAY, 
        intervalPixels: 100
    }),
    Timeline.createBandInfo({
        eventSource:    eventSource,
        showEventText:  false,
        trackHeight:    0.5,
        trackGap:       0.2,
        date:           today.toUTCString(),
        width:          "30%", 
        intervalUnit:   Timeline.DateTime.MONTH, 
        intervalPixels: 200
    })
  ];
  bandInfos[1].syncWith = 0;
  bandInfos[1].highlight = true;
  bandInfos[1].eventPainter.setLayout(bandInfos[0].eventPainter.getLayout());

tl = Timeline.create(document.getElementById("wiki-timeline"), bandInfos); Timeline.loadXML("$doc.getURL("view", "action=xml&xpage=rdf&changesNb=${changesNb}")", function(xml, url) { eventSource.loadXML(xml, url); }); } var resizeTimerID = null; function onResize() { if (resizeTimerID == null) { resizeTimerID = window.setTimeout(function() { resizeTimerID = null; tl.layout(); }, 500); } } Event.observe(window, "load", onLoad); Event.observe($('wiki-timeline'), "resize", onResize); </script> #end

Tags:
Created by Jean-Vincent Drean on 2009/01/22 22:38
Last modified by Sergiu Dumitriu on 2009/06/04 18:50

This wiki is licensed under a Creative Commons license
2.3.28624