From 21cb1e233ef628369d3b29c3b3318345ba0f5af9 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sun, 10 Mar 2013 19:24:22 +0000 Subject: [PATCH] Add "info" widget for displaying information about tiddlers Currently only supports displaying the changecount of a tiddler --- core/modules/widgets/info.js | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 core/modules/widgets/info.js diff --git a/core/modules/widgets/info.js b/core/modules/widgets/info.js new file mode 100644 index 000000000..680c5bf26 --- /dev/null +++ b/core/modules/widgets/info.js @@ -0,0 +1,50 @@ +/*\ +title: $:/core/modules/widget/info.js +type: application/javascript +module-type: widget + +Implements the info widget that displays various information about a specified tiddler. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var InfoWidget = function(renderer) { + // Save state + this.renderer = renderer; + // Generate child nodes + this.generate(); +}; + +InfoWidget.types = { + changecount: function(options) {return options.wiki.getChangeCount(options.title);} +}; + +InfoWidget.prototype.generate = function() { + // Get attributes + this.tiddlerTitle = this.renderer.getAttribute("tiddler",this.renderer.getContextTiddlerTitle()); + this.type = this.renderer.getAttribute("type","changecount"); + // Get the appropriate value for the current tiddler + var value = "", + fn = InfoWidget.types[this.type]; + if(fn) { + value = fn({ + wiki: this.renderer.renderTree.wiki, + title: this.tiddlerTitle + }); + } + // Set the element + this.tag = "span"; + this.attributes = {}; + this.children = this.renderer.renderTree.createRenderers(this.renderer.renderContext,[{ + type: "text", + text: value + }]); +}; + +exports.info = InfoWidget; + +})();