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