//-- //-- Macro definitions //-- function invokeMacro(place,macro,params,wikifier,tiddler) { try { var m = config.macros[macro]; if(m && m.handler) { var tiddlerElem = story.findContainingTiddler(place); //# Provide context for evaluated macro parameters (eg <>) window.tiddler = tiddlerElem ? store.getTiddler(tiddlerElem.getAttribute("tiddler")) : null; window.place = place; var allowEval = true; if(config.evaluateMacroParameters=="system") { if(!tiddler || tiddler.tags.indexOf("systemAllowEval") == -1) { allowEval = false; } } m.handler(place,macro,m.noPreParse?null:params.readMacroParams(!allowEval),wikifier,params,tiddler); } else { createTiddlyError(place,config.messages.macroError.format([macro]),config.messages.macroErrorDetails.format([macro,config.messages.missingMacro])); } } catch(ex) { createTiddlyError(place,config.messages.macroError.format([macro]),config.messages.macroErrorDetails.format([macro,ex.toString()])); } } config.macros.version.handler = function(place) { jQuery("").text(formatVersion()).appendTo(place); }; config.macros.today.handler = function(place,macroName,params) { var now = new Date(); var text = params[0] ? now.formatString(params[0].trim()) : now.toLocaleString(); jQuery("").text(text).appendTo(place); }; config.macros.list.template = "<>"; config.macros.list.handler = function(place,macroName,params,wikifier,paramString) { var list = document.createElement("ul"); jQuery(list).attr({ refresh: "macro", macroName: macroName }).data("params", paramString); place.appendChild(list); this.refresh(list); }; config.macros.list.refresh = function(list) { var paramString = jQuery(list).data("params"); var params = paramString.readMacroParams(); var args = paramString.parseParams("anon", null, null)[0]; var type = args.anon ? args.anon[0] : "all"; jQuery(list).empty().addClass("list list-" + type); var template = args.template ? store.getTiddlerText(args.template[0]) : false; if(!template) { template = config.macros.list.template; } if(this[type].prompt) createTiddlyElement(list,"li",null,"listTitle",this[type].prompt); var results; if(this[type].handler) results = this[type].handler(params); var t; for(t = 0; t < results.length; t++) { var li = document.createElement("li"); list.appendChild(li); var tiddler = results[t]; if(typeof(tiddler) == 'string') { // deal with missing etc.. tiddler = store.getTiddler(tiddler) || new Tiddler(tiddler); } wikify(template, li, null, tiddler); } if(results.length === 0 && args.emptyMessage) { jQuery(list).addClass("emptyList"); jQuery("
  • ").text(args.emptyMessage[0]).appendTo(list); } }; config.macros.list.all.handler = function(params) { return store.reverseLookup("tags","excludeLists",false,"title"); }; config.macros.list.missing.handler = function(params) { return store.getMissingLinks(); }; config.macros.list.orphans.handler = function(params) { return store.getOrphans(); }; config.macros.list.shadowed.handler = function(params) { return store.getShadowed(); }; config.macros.list.touched.handler = function(params) { return store.getTouched(); }; config.macros.list.filter.handler = function(params) { var filter = params[1]; var results = []; if(filter) { var tiddlers = store.filterTiddlers(filter); var t; for(t=0; t").attr("params", paramString). attr("macroName", macroName).appendTo(place)[0]; macro.refresh(container); }, refresh: function(container) { jQuery(container).attr("refresh", "macro").empty(); var paramString = jQuery(container).attr("params"); var args = paramString.parseParams("anon", null, null)[0]; var params = args.anon || []; var field = params[0] || "modified"; var dateFormat = params[2] || this.dateFormat; var groupTemplate = macro.groupTemplate.format(field, dateFormat); groupTemplate = args.groupTemplate ? store.getTiddlerText(args.groupTemplate[0]) || groupTemplate : groupTemplate; var itemTemplate = macro.itemTemplate; itemTemplate = args.template ? store.getTiddlerText(args.template[0]) || itemTemplate : itemTemplate; var tiddlers = args.filter ? store.sortTiddlers(store.filterTiddlers(args.filter[0]), field) : store.reverseLookup("tags", "excludeLists", false, field); var lastGroup = "", ul; var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1],10)) : 0; var t; for(t=tiddlers.length-1; t>=last; t--) { var tiddler = tiddlers[t]; var theGroup = wikifyPlainText(groupTemplate,0,tiddler); if(typeof(ul) == "undefined" || theGroup != lastGroup) { ul = document.createElement("ul"); jQuery(ul).addClass("timeline"); container.appendChild(ul); createTiddlyElement(ul,"li",null,"listTitle",theGroup); lastGroup = theGroup; } var item = createTiddlyElement(ul,"li",null,"listLink"); wikify(itemTemplate,item,null,tiddler); } }, groupTemplate: "<>", itemTemplate: "<>" }); config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) { var allowEval = true; var stack = config.macros.tiddler.tiddlerStack; if(stack.length > 0 && config.evaluateMacroParameters == "system") { // included tiddler and "system" evaluation required, so check tiddler tagged appropriately var title = stack[stack.length-1]; var pos = title.indexOf(config.textPrimitives.sectionSeparator); if(pos != -1) { title = title.substr(0,pos); // get the base tiddler title } var t = store.getTiddler(title); if(!t || t.tags.indexOf("systemAllowEval") == -1) { allowEval = false; } } params = paramString.parseParams("name",null,allowEval,false,true); var names = params[0]["name"]; var tiddlerName = names[0]; var className = names[1] || null; var args = params[0]["with"]; var wrapper = createTiddlyElement(place,"span",null,className,null,{ refresh: "content", tiddler: tiddlerName }); if(args!==undefined) wrapper.setAttribute("args","[["+args.join("]] [[")+"]]"); this.transclude(wrapper,tiddlerName,args); }; config.macros.tiddler.transclude = function(wrapper,tiddlerName,args) { var text = store.getTiddlerText(tiddlerName); if(!text) return; var stack = config.macros.tiddler.tiddlerStack; if(stack.indexOf(tiddlerName) !== -1) return; stack.push(tiddlerName); try { if(typeof args == "string") args = args.readBracketedList(); var n = args ? Math.min(args.length,9) : 0; var i; for(i=0; i> config.macros.gradient.handler = function(place,macroName,params,wikifier,paramString,tiddler) { var panel = wikifier ? createTiddlyElement(place,"div",null,"gradient") : place; panel.style.position = "relative"; panel.style.overflow = "hidden"; panel.style.zIndex = "0"; if(wikifier) { var styles = config.formatterHelpers.inlineCssHelper(wikifier); config.formatterHelpers.applyCssHelper(panel,styles); } params = paramString.parseParams("color"); var locolors = [], hicolors = []; var t; for(t=2; t>"); if(document.all) { panel.style.height = "100%"; panel.style.width = "100%"; } }; config.macros.message.handler = function(place,macroName,params) { if(params[0]) { var names = params[0].split("."); var lookupMessage = function(root,nameIndex) { if(root[names[nameIndex]]) { if(nameIndex < names.length-1) return (lookupMessage(root[names[nameIndex]],nameIndex+1)); else return root[names[nameIndex]]; } else return null; }; var m = lookupMessage(config,0); if(m == null) m = lookupMessage(window,0); createTiddlyText(place,m.toString().format(params.splice(1))); } }; config.macros.view.depth = 0; config.macros.view.values = []; config.macros.view.views = { text: function(value,place,params,wikifier,paramString,tiddler) { highlightify(value,place,highlightHack,tiddler); }, link: function(value,place,params,wikifier,paramString,tiddler) { createTiddlyLink(place,value,true); }, wikified: function(value,place,params,wikifier,paramString,tiddler) { if(config.macros.view.depth>50) return; if(config.macros.view.depth>0) { if (value==config.macros.view.values[config.macros.view.depth-1]) { return; } } config.macros.view.values[config.macros.view.depth] = value; config.macros.view.depth++; if(params[2]) value=params[2].unescapeLineBreaks().format([value]); wikify(value,place,highlightHack,tiddler); config.macros.view.depth--; config.macros.view.values[config.macros.view.depth] = null; }, date: function(value,place,params,wikifier,paramString,tiddler) { value = Date.convertFromYYYYMMDDHHMM(value); createTiddlyText(place,value.formatString(params[2] || config.views.wikified.dateFormat)); } }; config.macros.view.handler = function(place,macroName,params,wikifier,paramString,tiddler) { if((tiddler instanceof Tiddler) && params[0]) { var value = store.getValue(tiddler,params[0]); if(value) { var type = params[1] || config.macros.view.defaultView; var handler = config.macros.view.views[type]; if(handler) handler(value,place,params,wikifier,paramString,tiddler); } } }; config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) { var field = params[0]; var rows = params[1] || 0; var defVal = params[2] || ''; if((tiddler instanceof Tiddler) && field) { story.setDirty(tiddler.title,true); var e,v; if(field != "text" && !rows) { e = createTiddlyElement(null,"input",null,null,null,{ type: "text", edit: field, size: "40", autocomplete: "off" }); e.value = store.getValue(tiddler,field) || defVal; place.appendChild(e); } else { var wrapper1 = createTiddlyElement(null,"fieldset",null,"fieldsetFix"); var wrapper2 = createTiddlyElement(wrapper1,"div"); e = createTiddlyElement(wrapper2,"textarea"); e.value = v = store.getValue(tiddler,field) || defVal; rows = rows || 10; var lines = v.match(/\n/mg); var maxLines = Math.max(parseInt(config.options.txtMaxEditRows,10),5); if(lines != null && lines.length > rows) rows = lines.length + 5; rows = Math.min(rows,maxLines); e.setAttribute("rows",rows); e.setAttribute("edit",field); place.appendChild(wrapper1); } if(tiddler.isReadOnly()) { e.setAttribute("readOnly","readOnly"); jQuery(e).addClass("readOnly"); } return e; } }; config.macros.tagChooser.onClick = function(ev) { var e = ev || window.event; var lingo = config.views.editor.tagChooser; var popup = Popup.create(this); var tags = store.getTags(this.getAttribute("tags")); if(tags.length == 0) jQuery("
  • ").text(lingo.popupNone).appendTo(popup); var t; for(t=0; t