From fa17eb1b9646c4816d6c7b44f4e93660887ffb60 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 20 Dec 2012 17:19:28 +0000 Subject: [PATCH] Fixed support for custom attributes, classes and tooltips on transclusions --- core/modules/widgets/transclude.js | 27 +++++++++++++++++++-------- core/templates/NewPageTemplate.tid | 2 +- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/core/modules/widgets/transclude.js b/core/modules/widgets/transclude.js index 8989604c0..100055261 100644 --- a/core/modules/widgets/transclude.js +++ b/core/modules/widgets/transclude.js @@ -77,25 +77,36 @@ exports.generateChildNodes = function() { templateParseTree = parser ? parser.tree : []; } } + // Create the wrapper node + var node = { + type: "element", + tag: this.renderer.parseTreeNode.isBlock ? "div" : "span", + children: templateParseTree + }; // Set up the attributes for the wrapper element var classes = []; + if(this.renderer.hasAttribute("class")) { + $tw.utils.pushTop(classes,this.renderer.getAttribute("class").split(" ")); + } if(!this.renderer.renderTree.wiki.tiddlerExists(this.targetTitle)) { $tw.utils.pushTop(classes,"tw-tiddler-missing"); } + if(classes.length > 0) { + $tw.utils.addClassToParseTreeNode(node,classes.join(" ")); + } + if(this.renderer.hasAttribute("style")) { + $tw.utils.addAttributeToParseTreeNode(node,"style",this.renderer.getAttribute("style")); + } + if(this.renderer.hasAttribute("tooltip")) { + $tw.utils.addAttributeToParseTreeNode(node,"title",this.renderer.getAttribute("tooltip")); + } // Create the renderers for the wrapper and the children var newRenderContext = { tiddlerTitle: this.targetTitle, templateTitle: this.templateTitle, parentContext: this.renderer.renderContext }; - this.children = this.renderer.renderTree.createRenderers(newRenderContext,[{ - type: "element", - tag: this.renderer.parseTreeNode.isBlock ? "div" : "span", - attributes: { - "class": {type: "string", value: classes.join(" ")} - }, - children: templateParseTree - }]); + this.children = this.renderer.renderTree.createRenderers(newRenderContext,[node]); }; exports.refreshInDom = function(changedAttributes,changedTiddlers) { diff --git a/core/templates/NewPageTemplate.tid b/core/templates/NewPageTemplate.tid index f0e344ed7..761568d1e 100644 --- a/core/templates/NewPageTemplate.tid +++ b/core/templates/NewPageTemplate.tid @@ -22,7 +22,7 @@ Inline macro call: <> | this | is | a | table | | yes | indeed |>| it is | -{{Acknowledgements}width:40;height:50;}.one +{{Acknowledgements|with a tooltip}width:40;height:50;background-color:red;}.one And this is an inline transclusion {{Acknowledgements}width:40;height:50;}.one