kopia lustrzana https://github.com/miklobit/TiddlyWiki5
Allow templating with the link widget
And add some documentationprint-window-tiddler
rodzic
79bb082b92
commit
fc79db53ab
|
@ -269,6 +269,20 @@ ElementRenderer.prototype.getContextScopeId = function() {
|
||||||
return guidBits.join("");
|
return guidBits.join("");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Find a named macro definition
|
||||||
|
*/
|
||||||
|
ElementRenderer.prototype.findMacroDefinition = function(name) {
|
||||||
|
var context = this.renderContext;
|
||||||
|
while(context) {
|
||||||
|
if(context.macroDefinitions && context.macroDefinitions[name]) {
|
||||||
|
return context.macroDefinitions[name];
|
||||||
|
}
|
||||||
|
context = context.parentContext;
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
};
|
||||||
|
|
||||||
exports.element = ElementRenderer
|
exports.element = ElementRenderer
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -28,7 +28,6 @@ LinkWidget.prototype.generate = function() {
|
||||||
// Get the parameters from the attributes
|
// Get the parameters from the attributes
|
||||||
this.to = this.renderer.getAttribute("to");
|
this.to = this.renderer.getAttribute("to");
|
||||||
this.hover = this.renderer.getAttribute("hover");
|
this.hover = this.renderer.getAttribute("hover");
|
||||||
this.qualifyHoverTitle = this.renderer.getAttribute("qualifyHoverTitle");
|
|
||||||
// Determine the default link characteristics
|
// Determine the default link characteristics
|
||||||
this.isExternal = isLinkExternal(this.to);
|
this.isExternal = isLinkExternal(this.to);
|
||||||
if(!this.isExternal) {
|
if(!this.isExternal) {
|
||||||
|
@ -52,15 +51,22 @@ LinkWidget.prototype.generate = function() {
|
||||||
events.push({name: "mouseout", handlerObject: this, handlerMethod: "handleMouseOverOrOutEvent"});
|
events.push({name: "mouseout", handlerObject: this, handlerMethod: "handleMouseOverOrOutEvent"});
|
||||||
}
|
}
|
||||||
// Get the value of the tw-wikilinks configuration macro
|
// Get the value of the tw-wikilinks configuration macro
|
||||||
var wikiLinksMacro = this.findMacroDefinition("tw-wikilinks"),
|
var wikiLinksMacro = this.renderer.findMacroDefinition("tw-wikilinks"),
|
||||||
useWikiLinks = wikiLinksMacro ? !(wikiLinksMacro.text.trim() === "no") : true;
|
useWikiLinks = wikiLinksMacro ? !(wikiLinksMacro.text.trim() === "no") : true;
|
||||||
// Set up the element
|
// Set up the element
|
||||||
if(useWikiLinks) {
|
if(useWikiLinks) {
|
||||||
this.tag = "a";
|
this.tag = "a";
|
||||||
this.attributes = {
|
this.attributes = {
|
||||||
href: this.isExternal ? this.to : encodeURIComponent(this.to),
|
|
||||||
"class": classes.join(" ")
|
"class": classes.join(" ")
|
||||||
};
|
};
|
||||||
|
if(this.isExternal) {
|
||||||
|
this.attributes.href = this.to;
|
||||||
|
} else {
|
||||||
|
var wikiLinkTemplateMacro = this.renderer.findMacroDefinition("tw-wikilink-template"),
|
||||||
|
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.text.trim() : "$uri_encoded$",
|
||||||
|
wikiLinkText = wikiLinkTemplate.replace("$uri_encoded$",encodeURIComponent(this.to));
|
||||||
|
this.attributes.href = wikiLinkText;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.tag = "span";
|
this.tag = "span";
|
||||||
}
|
}
|
||||||
|
@ -117,20 +123,6 @@ LinkWidget.prototype.refreshInDom = function(changedAttributes,changedTiddlers)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
Find a named macro definition
|
|
||||||
*/
|
|
||||||
LinkWidget.prototype.findMacroDefinition = function(name) {
|
|
||||||
var context = this.renderer.renderContext;
|
|
||||||
while(context) {
|
|
||||||
if(context.macroDefinitions && context.macroDefinitions[name]) {
|
|
||||||
return context.macroDefinitions[name];
|
|
||||||
}
|
|
||||||
context = context.parentContext;
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.link = LinkWidget;
|
exports.link = LinkWidget;
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
title: LinkWidget
|
||||||
|
tags: docs widget
|
||||||
|
|
||||||
|
The `link` widget generates links to tiddlers and external URIs.
|
||||||
|
|
||||||
|
! Attributes
|
||||||
|
|
||||||
|
* ```to``` - link target can be a URL
|
||||||
|
* ```hover``` - the title of a tiddler to display when hovering over the link
|
||||||
|
|
||||||
|
! CSS Classes
|
||||||
|
|
||||||
|
* ```tw-tiddlylink``` - applied to all links
|
||||||
|
* ```tw-tiddlylink-external``` - applied to external, non-tiddler links
|
||||||
|
* ```tw-tiddlylink-internal``` - applied to tiddler links
|
||||||
|
* ```tw-tiddlylink-missing``` - applied to tiddler links where the target tiddler doesn't exist
|
||||||
|
* ```tw-tiddlylink-resolves``` - applied to tiddler links when the target tiddler does exist
|
||||||
|
|
||||||
|
! Configuration macros
|
||||||
|
|
||||||
|
Configuration macros can be used to modify the behaviour of the link widget.
|
||||||
|
|
||||||
|
!! tw-wikilinks
|
||||||
|
|
||||||
|
Links are suppressed if the macro `tw-wikilinks` evaluates to the string `no`. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
\define tw-wikilinks() no
|
||||||
|
```
|
||||||
|
|
||||||
|
!! tw-wikilink-template
|
||||||
|
|
||||||
|
Link targets default to the URL encoded title of the tiddler. The `href` can be templated by defining the configuration macro `tw-wikilink-template`, and including within it the token `$uri_encoded$`. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
\define tw-wikilink-template() http://tiddlywiki.com/#$uri_encoded$
|
||||||
|
```
|
Ładowanie…
Reference in New Issue