Tiddler 'ListByTag' in Namespace 'iTW'

list | new | edit | delete | .html | .tw | .txt | .js

ListByTag

BidiX - 2008-08-15 11:13:00  (created: 2008-08-14 08:44:00 ) 
tags: iTW systemConfig excludeLists excludeSearch

//{{{
/*
 * ListByTag
 */

Array.prototype.tiddlerList = function(listFormat,max) {
		var output = "";
		if (!listFormat) 
			listFormat = "'\\n{{tiddlerListItem{{{tiddlerListItemTitle{[[' + tiddler.title + ']]}}} - ' + tiddler.created.formatString('0DD/0MM/YY') + ' - ' + tiddler.modifier + '\\n{{tiddlerExcerpt{' + text + ' ... \\n}}}}}}'";        
		if (!max) 
			max = this.length;
		if (this.length > 0 && this[0] instanceof Tiddler) {
			for (var i=0;i<max;i++) {
				var tiddler = this[i];
				var text = "{{{"+wikifyPlain(tiddler.title, store, 100)+"}}}";
				output += eval(listFormat);
			}
		}
		output += "\n----\n";
		return output;
	};

// tag, sorted, listformat, max(0), noReverse(true)
config.macros.listByTag = {};
config.macros.listByTag.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
    	params[0]  = (params[0] ? params[0] : tiddler.title);
    	var tiddlers = store.getTaggedTiddlers(params[0],params[1]);
    	if (params[3] == 0) params[3] = null;
    	if (! params[4])
    	    	tiddlers = tiddlers.reverse();
 	wikify(tiddlers.tiddlerList(params[2],params[3]),place,null,tiddler.tiddler);

	var tiddlerElem = document.getElementById(story.idPrefix + tiddler.title);
	var e = null;
	if(tiddlerElem != null) {
		var children = tiddlerElem.getElementsByTagName("span");
		for(var t=0; t<children.length; t++) {
			var c = children[t];
			if(c.className == 'tiddlerListItem') {
				c.addEventListener('mousedown', function(event) {
					var tiddlyLink = event.currentTarget.firstChild.firstChild;
					var tiddlerTitle = tiddlyLink.getAttribute("tiddlyLink");
					story.displayTiddler(null, tiddlerTitle);
					event.preventDefault();
				}, true);
			}
		}
	}
	
};
//}}}