mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-23 11:24:40 +00:00
Compare commits
29 Commits
genesis-wi
...
fully-rend
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af709e2662 | ||
|
|
c19d6d6328 | ||
|
|
941c09fae2 | ||
|
|
b531984f50 | ||
|
|
8f079e2d45 | ||
|
|
cfd894e6fb | ||
|
|
91327c1af0 | ||
|
|
6f98edd6bd | ||
|
|
23e0eeb556 | ||
|
|
f33c7e2aef | ||
|
|
fc586481a9 | ||
|
|
09179d2f62 | ||
|
|
d6ff38095b | ||
|
|
3bbbe77471 | ||
|
|
5657dfec0e | ||
|
|
31ab6dce77 | ||
|
|
4007610d52 | ||
|
|
fb34df84ed | ||
|
|
79e2e317cf | ||
|
|
36896c3db8 | ||
|
|
82de7c9b1a | ||
|
|
1841b0fa4f | ||
|
|
47f80339b2 | ||
|
|
db6abb9703 | ||
|
|
8d1e6b5d23 | ||
|
|
1df4c29d73 | ||
|
|
81e4745c56 | ||
|
|
87597ea273 | ||
|
|
4e9267ea58 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
.DS_Store
|
||||
.c9/
|
||||
.vscode/
|
||||
tmp/
|
||||
output/
|
||||
node_modules/
|
||||
|
||||
@@ -13,7 +13,7 @@ dependents: For a plugin, lists the dependent plugin titles
|
||||
description: The descriptive text for a plugin, or a modal dialogue
|
||||
draft.of: For draft tiddlers, contains the title of the tiddler of which this is a draft
|
||||
draft.title: For draft tiddlers, contains the proposed new title of the tiddler
|
||||
footer: The footer text for a wizard
|
||||
footer: The footer text for a modal
|
||||
hide-body: The view template will hide bodies of tiddlers if set to ''yes''
|
||||
icon: The title of the tiddler containing the icon associated with a tiddler
|
||||
library: Indicates that a tiddler should be saved as a JavaScript library if set to ''yes''
|
||||
@@ -28,7 +28,7 @@ plugin-type: The type of plugin in a plugin tiddler
|
||||
revision: The revision of the tiddler held at the server
|
||||
released: Date of a TiddlyWiki release
|
||||
source: The source URL associated with a tiddler
|
||||
subtitle: The subtitle text for a wizard
|
||||
subtitle: The subtitle text for a modal
|
||||
tags: A list of tags associated with a tiddler
|
||||
text: The body text of a tiddler
|
||||
throttle.refresh: If present, throttles refreshes of this tiddler
|
||||
|
||||
@@ -87,7 +87,7 @@ function FramedEngine(options) {
|
||||
$tw.utils.addEventListeners(this.domNode,[
|
||||
{name: "click",handlerObject: this,handlerMethod: "handleClickEvent"},
|
||||
{name: "input",handlerObject: this,handlerMethod: "handleInputEvent"},
|
||||
{name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"},
|
||||
{name: "keydown",handlerObject: this,handlerMethod: "handleKeydownEvent"},
|
||||
{name: "focus",handlerObject: this,handlerMethod: "handleFocusEvent"}
|
||||
]);
|
||||
// Add drag and drop event listeners if fileDrop is enabled
|
||||
@@ -192,6 +192,17 @@ FramedEngine.prototype.handleFocusEvent = function(event) {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Handle a keydown event
|
||||
*/
|
||||
FramedEngine.prototype.handleKeydownEvent = function(event) {
|
||||
if ($tw.keyboardManager.handleKeydownEvent(event, {onlyPriority: true})) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return this.widget.handleKeydownEvent(event);
|
||||
};
|
||||
|
||||
/*
|
||||
Handle a click
|
||||
*/
|
||||
|
||||
@@ -12,6 +12,9 @@ Adds tiddler filtering methods to the $tw.Wiki object.
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/* Maximum permitted filter recursion depth */
|
||||
var MAX_FILTER_DEPTH = 300;
|
||||
|
||||
/*
|
||||
Parses an operation (i.e. a run) within a filter string
|
||||
operators: Array of array of operator nodes into which results should be inserted
|
||||
@@ -328,7 +331,7 @@ exports.compileFilter = function(filterString) {
|
||||
})());
|
||||
});
|
||||
// Return a function that applies the operations to a source iterator of tiddler titles
|
||||
var compiled = $tw.perf.measure("filter: " + filterString,function filterFunction(source,widget) {
|
||||
var fnMeasured = $tw.perf.measure("filter: " + filterString,function filterFunction(source,widget) {
|
||||
if(!source) {
|
||||
source = self.each;
|
||||
} else if(typeof source === "object") { // Array or hashmap
|
||||
@@ -338,9 +341,15 @@ exports.compileFilter = function(filterString) {
|
||||
widget = $tw.rootWidget;
|
||||
}
|
||||
var results = new $tw.utils.LinkedList();
|
||||
$tw.utils.each(operationFunctions,function(operationFunction) {
|
||||
operationFunction(results,source,widget);
|
||||
});
|
||||
self.filterRecursionCount = (self.filterRecursionCount || 0) + 1;
|
||||
if(self.filterRecursionCount < MAX_FILTER_DEPTH) {
|
||||
$tw.utils.each(operationFunctions,function(operationFunction) {
|
||||
operationFunction(results,source,widget);
|
||||
});
|
||||
} else {
|
||||
results.push("/**-- Excessive filter recursion --**/");
|
||||
}
|
||||
self.filterRecursionCount = self.filterRecursionCount - 1;
|
||||
return results.toArray();
|
||||
});
|
||||
if(this.filterCacheCount >= 2000) {
|
||||
@@ -350,9 +359,9 @@ exports.compileFilter = function(filterString) {
|
||||
this.filterCache = Object.create(null);
|
||||
this.filterCacheCount = 0;
|
||||
}
|
||||
this.filterCache[filterString] = compiled;
|
||||
this.filterCache[filterString] = fnMeasured;
|
||||
this.filterCacheCount++;
|
||||
return compiled;
|
||||
return fnMeasured;
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
@@ -26,11 +26,23 @@ BacklinksIndexer.prototype.rebuild = function() {
|
||||
}
|
||||
|
||||
BacklinksIndexer.prototype._getLinks = function(tiddler) {
|
||||
var parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});
|
||||
if(parser) {
|
||||
return this.wiki.extractLinks(parser.tree);
|
||||
}
|
||||
return [];
|
||||
var parser = this.wiki.parseText(tiddler.fields.type,tiddler.fields.text,{});
|
||||
parser.tree = [{
|
||||
type: "importvariables",
|
||||
attributes: {
|
||||
filter: {
|
||||
name: "filter",
|
||||
type: "string",
|
||||
value: "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"
|
||||
}
|
||||
},
|
||||
isBlock: false,
|
||||
children: parser.tree
|
||||
}];
|
||||
var widget = this.wiki.makeWidget(parser,{document: $tw.fakeDocument, parseAsInline: false, variables: {currentTiddler: tiddler.fields.title}});
|
||||
var container = $tw.fakeDocument.createElement("div");
|
||||
widget.render(container,null);
|
||||
return this.wiki.extractLinksFromWidgetTree(widget);
|
||||
}
|
||||
|
||||
BacklinksIndexer.prototype.update = function(updateDescriptor) {
|
||||
|
||||
@@ -141,6 +141,7 @@ function KeyboardManager(options) {
|
||||
this.shortcutKeysList = [], // Stores the shortcut-key descriptors
|
||||
this.shortcutActionList = [], // Stores the corresponding action strings
|
||||
this.shortcutParsedList = []; // Stores the parsed key descriptors
|
||||
this.shortcutPriorityList = []; // Stores the parsed shortcut priority
|
||||
this.lookupNames = ["shortcuts"];
|
||||
this.lookupNames.push($tw.platform.isMac ? "shortcuts-mac" : "shortcuts-not-mac")
|
||||
this.lookupNames.push($tw.platform.isWindows ? "shortcuts-windows" : "shortcuts-not-windows");
|
||||
@@ -318,12 +319,23 @@ KeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {
|
||||
this.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;
|
||||
this.shortcutActionList[i] = tiddlerFields.text;
|
||||
this.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;
|
||||
this.shortcutPriorityList[i] = tiddlerFields.priority === "yes" ? true : false;
|
||||
}
|
||||
};
|
||||
|
||||
KeyboardManager.prototype.handleKeydownEvent = function(event) {
|
||||
/*
|
||||
event: the keyboard event object
|
||||
options:
|
||||
onlyPriority: true if only priority global shortcuts should be invoked
|
||||
*/
|
||||
KeyboardManager.prototype.handleKeydownEvent = function(event, options) {
|
||||
options = options || {};
|
||||
var key, action;
|
||||
for(var i=0; i<this.shortcutTiddlers.length; i++) {
|
||||
if(options.onlyPriority && this.shortcutPriorityList[i] !== true) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {
|
||||
key = this.shortcutParsedList[i];
|
||||
action = this.shortcutActionList[i];
|
||||
|
||||
@@ -41,9 +41,6 @@ exports.parse = function() {
|
||||
var node = {
|
||||
type: "element",
|
||||
tag: "span",
|
||||
attributes: {
|
||||
"class": {type: "string", value: "tc-inline-style"}
|
||||
},
|
||||
children: tree
|
||||
};
|
||||
if(classString) {
|
||||
@@ -52,6 +49,9 @@ exports.parse = function() {
|
||||
if(stylesString) {
|
||||
$tw.utils.addAttributeToParseTreeNode(node,"style",stylesString);
|
||||
}
|
||||
if(!classString && !stylesString) {
|
||||
$tw.utils.addClassToParseTreeNode(node,"tc-inline-style");
|
||||
}
|
||||
return [node];
|
||||
};
|
||||
|
||||
|
||||
@@ -12,12 +12,26 @@ Parse tree utility functions.
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Add attribute to parse tree node
|
||||
Can be invoked as (node,name,value) or (node,attr)
|
||||
*/
|
||||
exports.addAttributeToParseTreeNode = function(node,name,value) {
|
||||
var attribute = {name: name, type: "string", value: value};
|
||||
var attribute = typeof name === "object" ? name : {name: name, type: "string", value: value};
|
||||
name = attribute.name;
|
||||
node.attributes = node.attributes || {};
|
||||
node.orderedAttributes = node.orderedAttributes || [];
|
||||
node.attributes[name] = attribute;
|
||||
if(node.orderedAttributes) {
|
||||
var foundIndex = -1;
|
||||
$tw.utils.each(node.orderedAttributes,function(attr,index) {
|
||||
if(attr.name === name) {
|
||||
foundIndex = index;
|
||||
}
|
||||
});
|
||||
if(foundIndex === -1) {
|
||||
node.orderedAttributes.push(attribute);
|
||||
} else {
|
||||
node.orderedAttributes[foundIndex] = attribute;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -51,10 +65,8 @@ exports.addClassToParseTreeNode = function(node,classString) {
|
||||
// If the class attribute does not exist, we must create it first.
|
||||
attribute = {name: "class", type: "string", value: ""};
|
||||
node.attributes["class"] = attribute;
|
||||
if(node.orderedAttributes) {
|
||||
// If there are orderedAttributes, we've got to add them there too.
|
||||
node.orderedAttributes.push(attribute);
|
||||
}
|
||||
node.orderedAttributes = node.orderedAttributes || [];
|
||||
node.orderedAttributes.push(attribute);
|
||||
}
|
||||
if(attribute.type === "string") {
|
||||
if(attribute.value !== "") {
|
||||
@@ -74,10 +86,8 @@ exports.addStyleToParseTreeNode = function(node,name,value) {
|
||||
if(!attribute) {
|
||||
attribute = {name: "style", type: "string", value: ""};
|
||||
node.attributes.style = attribute;
|
||||
if(node.orderedAttributes) {
|
||||
// If there are orderedAttributes, we've got to add them there too.
|
||||
node.orderedAttributes.push(attribute);
|
||||
}
|
||||
node.orderedAttributes = node.orderedAttributes || [];
|
||||
node.orderedAttributes.push(attribute);
|
||||
}
|
||||
if(attribute.type === "string") {
|
||||
attribute.value += name + ":" + value + ";";
|
||||
|
||||
63
core/modules/widgets/error.js
Normal file
63
core/modules/widgets/error.js
Normal file
@@ -0,0 +1,63 @@
|
||||
/*\
|
||||
title: $:/core/modules/widgets/error.js
|
||||
type: application/javascript
|
||||
module-type: widget
|
||||
|
||||
Error widget
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var ErrorWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Inherit from the base widget class
|
||||
*/
|
||||
ErrorWidget.prototype = new Widget();
|
||||
|
||||
/*
|
||||
Render this widget into the DOM
|
||||
*/
|
||||
ErrorWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.parentDomNode = parent;
|
||||
this.computeAttributes();
|
||||
this.execute();
|
||||
var message = this.getAttribute("$message","Unknown error"),
|
||||
domNode = this.document.createElement("span");
|
||||
domNode.appendChild(this.document.createTextNode(message));
|
||||
domNode.className = "tc-error";
|
||||
parent.insertBefore(domNode,nextSibling);
|
||||
this.domNodes.push(domNode);
|
||||
};
|
||||
|
||||
/*
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
ErrorWidget.prototype.execute = function() {
|
||||
// Nothing to do for a text node
|
||||
};
|
||||
|
||||
/*
|
||||
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
|
||||
*/
|
||||
ErrorWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes["$message"]) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
exports.error = ErrorWidget;
|
||||
|
||||
})();
|
||||
108
core/modules/widgets/genesis.js
Normal file
108
core/modules/widgets/genesis.js
Normal file
@@ -0,0 +1,108 @@
|
||||
/*\
|
||||
title: $:/core/modules/widgets/genesis.js
|
||||
type: application/javascript
|
||||
module-type: widget
|
||||
|
||||
Genesis widget for dynamically creating widgets
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var GenesisWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Inherit from the base widget class
|
||||
*/
|
||||
GenesisWidget.prototype = new Widget();
|
||||
|
||||
/*
|
||||
Render this widget into the DOM
|
||||
*/
|
||||
GenesisWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.parentDomNode = parent;
|
||||
this.computeAttributes({filterFn: function(name) {
|
||||
// Only compute our own attributes which start with a single dollar
|
||||
return name.charAt(0) === "$" && name.charAt(1) !== "$";
|
||||
}});
|
||||
this.execute();
|
||||
this.renderChildren(parent,nextSibling);
|
||||
};
|
||||
|
||||
/*
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
GenesisWidget.prototype.execute = function() {
|
||||
var self = this;
|
||||
// Collect attributes
|
||||
this.genesisType = this.getAttribute("$type","element");
|
||||
this.genesisRemappable = this.getAttribute("$remappable","yes") === "yes";
|
||||
this.genesisNames = this.getAttribute("$names","");
|
||||
this.genesisValues = this.getAttribute("$values","");
|
||||
// Construct parse tree
|
||||
var isElementWidget = this.genesisType.charAt(0) !== "$",
|
||||
nodeType = isElementWidget ? "element" : this.genesisType.substr(1),
|
||||
nodeTag = isElementWidget ? this.genesisType : undefined;
|
||||
var parseTreeNodes = [{
|
||||
type: nodeType,
|
||||
tag: nodeTag,
|
||||
attributes: {},
|
||||
orderedAttributes: [],
|
||||
children: this.parseTreeNode.children || [],
|
||||
isNotRemappable: !this.genesisRemappable
|
||||
}];
|
||||
// Apply explicit attributes
|
||||
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
|
||||
var name = attribute.name;
|
||||
if(name.charAt(0) === "$") {
|
||||
if(name.charAt(1) === "$") {
|
||||
// Double $$ is changed to a single $
|
||||
name = name.substr(1);
|
||||
} else {
|
||||
// Single dollar is ignored
|
||||
return;
|
||||
}
|
||||
}
|
||||
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],$tw.utils.extend({},attribute,{name: name}));
|
||||
});
|
||||
// Apply attributes in $names/$values
|
||||
this.attributeNames = [];
|
||||
this.attributeValues = [];
|
||||
if(this.genesisNames && this.genesisValues) {
|
||||
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
|
||||
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
|
||||
$tw.utils.each(this.attributeNames,function(varname,index) {
|
||||
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
|
||||
});
|
||||
}
|
||||
// Construct the child widgets
|
||||
this.makeChildWidgets(parseTreeNodes);
|
||||
};
|
||||
|
||||
/*
|
||||
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
|
||||
*/
|
||||
GenesisWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes(),
|
||||
filterNames = this.getAttribute("$names",""),
|
||||
filterValues = this.getAttribute("$values",""),
|
||||
attributeNames = this.wiki.filterTiddlers(filterNames,this),
|
||||
attributeValues = this.wiki.filterTiddlers(filterValues,this);
|
||||
if($tw.utils.count(changedAttributes) > 0 || !$tw.utils.isArrayEqual(this.attributeNames,attributeNames) || !$tw.utils.isArrayEqual(this.attributeValues,attributeValues)) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
}
|
||||
};
|
||||
|
||||
exports.genesis = GenesisWidget;
|
||||
|
||||
})();
|
||||
@@ -53,6 +53,10 @@ KeyboardWidget.prototype.render = function(parent,nextSibling) {
|
||||
};
|
||||
|
||||
KeyboardWidget.prototype.handleChangeEvent = function(event) {
|
||||
if ($tw.keyboardManager.handleKeydownEvent(event, {onlyPriority: true})) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var keyInfo = $tw.keyboardManager.getMatchingKeyDescriptor(event,this.keyInfoArray);
|
||||
if(keyInfo) {
|
||||
var handled = this.invokeActions(this,event);
|
||||
|
||||
@@ -51,11 +51,9 @@ LetWidget.prototype.computeAttributes = function() {
|
||||
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
|
||||
var value = self.computeAttribute(attribute),
|
||||
name = attribute.name;
|
||||
if(name.charAt(0) !== "$") {
|
||||
// Now that it's prepped, we're allowed to look this variable up
|
||||
// when defining later variables
|
||||
self.currentValueFor[name] = value;
|
||||
}
|
||||
// Now that it's prepped, we're allowed to look this variable up
|
||||
// when defining later variables
|
||||
self.currentValueFor[name] = value;
|
||||
});
|
||||
// Run through again, setting variables and looking for differences
|
||||
$tw.utils.each(this.currentValueFor,function(value,name) {
|
||||
|
||||
@@ -175,6 +175,11 @@ SelectWidget.prototype.refresh = function(changedTiddlers) {
|
||||
return true;
|
||||
// If the target tiddler value has changed, just update setting and refresh the children
|
||||
} else {
|
||||
if(changedAttributes.class) {
|
||||
this.selectClass = this.getAttribute("class");
|
||||
this.getSelectDomNode().setAttribute("class",this.selectClass);
|
||||
}
|
||||
|
||||
var childrenRefreshed = this.refreshChildren(changedTiddlers);
|
||||
if(changedTiddlers[this.selectTitle] || childrenRefreshed) {
|
||||
this.setSelectValue();
|
||||
|
||||
@@ -70,11 +70,9 @@ TranscludeWidget.prototype.execute = function() {
|
||||
// Check for recursion
|
||||
if(parser) {
|
||||
if(this.parentWidget && this.parentWidget.hasVariable("transclusion",recursionMarker)) {
|
||||
parseTreeNodes = [{type: "element", tag: "span", attributes: {
|
||||
"class": {type: "string", value: "tc-error"}
|
||||
}, children: [
|
||||
{type: "text", text: $tw.language.getString("Error/RecursiveTransclusion")}
|
||||
]}];
|
||||
parseTreeNodes = [{type: "error", attributes: {
|
||||
"$message": {type: "string", value: $tw.language.getString("Error/RecursiveTransclusion")}
|
||||
}}];
|
||||
}
|
||||
}
|
||||
// Construct the child widgets
|
||||
|
||||
@@ -12,6 +12,9 @@ Widget base class
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/* Maximum permitted depth of the widget tree for recursion detection */
|
||||
var MAX_WIDGET_TREE_DEPTH = 1000;
|
||||
|
||||
/*
|
||||
Create a widget object for a parse tree node
|
||||
parseTreeNode: reference to the parse tree node to be rendered
|
||||
@@ -358,6 +361,20 @@ Widget.prototype.assignAttributes = function(domNode,options) {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Get the number of ancestor widgets for this widget
|
||||
*/
|
||||
Widget.prototype.getAncestorCount = function() {
|
||||
if(this.ancestorCount === undefined) {
|
||||
if(this.parentWidget) {
|
||||
this.ancestorCount = this.parentWidget.getAncestorCount() + 1;
|
||||
} else {
|
||||
this.ancestorCount = 0;
|
||||
}
|
||||
}
|
||||
return this.ancestorCount;
|
||||
};
|
||||
|
||||
/*
|
||||
Make child widgets correspondng to specified parseTreeNodes
|
||||
*/
|
||||
@@ -365,21 +382,29 @@ Widget.prototype.makeChildWidgets = function(parseTreeNodes,options) {
|
||||
options = options || {};
|
||||
this.children = [];
|
||||
var self = this;
|
||||
// Create set variable widgets for each variable
|
||||
$tw.utils.each(options.variables,function(value,name) {
|
||||
var setVariableWidget = {
|
||||
type: "set",
|
||||
attributes: {
|
||||
name: {type: "string", value: name},
|
||||
value: {type: "string", value: value}
|
||||
},
|
||||
children: parseTreeNodes
|
||||
};
|
||||
parseTreeNodes = [setVariableWidget];
|
||||
});
|
||||
$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {
|
||||
self.children.push(self.makeChildWidget(childNode));
|
||||
});
|
||||
// Check for too much recursion
|
||||
if(this.getAncestorCount() > MAX_WIDGET_TREE_DEPTH) {
|
||||
this.children.push(this.makeChildWidget({type: "error", attributes: {
|
||||
"$message": {type: "string", value: $tw.language.getString("Error/RecursiveTransclusion")}
|
||||
}}));
|
||||
} else {
|
||||
// Create set variable widgets for each variable
|
||||
$tw.utils.each(options.variables,function(value,name) {
|
||||
var setVariableWidget = {
|
||||
type: "set",
|
||||
attributes: {
|
||||
name: {type: "string", value: name},
|
||||
value: {type: "string", value: value}
|
||||
},
|
||||
children: parseTreeNodes
|
||||
};
|
||||
parseTreeNodes = [setVariableWidget];
|
||||
});
|
||||
// Create the child widgets
|
||||
$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {
|
||||
self.children.push(self.makeChildWidget(childNode));
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -22,7 +22,8 @@ Adds the following properties to the wiki object:
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var widget = require("$:/core/modules/widgets/widget.js");
|
||||
var widget = require("$:/core/modules/widgets/widget.js"),
|
||||
LinkWidget = require("$:/core/modules/widgets/link.js").link;
|
||||
|
||||
var USER_NAME_TITLE = "$:/status/UserName",
|
||||
TIMESTAMP_DISABLE_TITLE = "$:/config/TimestampDisable";
|
||||
@@ -513,6 +514,29 @@ exports.extractLinks = function(parseTreeRoot) {
|
||||
return links;
|
||||
};
|
||||
|
||||
/*
|
||||
Return an array of tiddelr titles that are linked within the given widget tree
|
||||
*/
|
||||
exports.extractLinksFromWidgetTree = function(widget) {
|
||||
// Count up the links
|
||||
var links = [],
|
||||
checkWidget = function(widget) {
|
||||
if(widget instanceof LinkWidget) {
|
||||
var value = widget.to;
|
||||
if(links.indexOf(value) === -1) {
|
||||
links.push(value);
|
||||
}
|
||||
}
|
||||
if(widget.children) {
|
||||
$tw.utils.each(widget.children,function(widget) {
|
||||
checkWidget(widget);
|
||||
});
|
||||
}
|
||||
};
|
||||
checkWidget(widget);
|
||||
return links;
|
||||
};
|
||||
|
||||
/*
|
||||
Return an array of tiddler titles that are directly linked from the specified tiddler
|
||||
*/
|
||||
@@ -521,11 +545,10 @@ exports.getTiddlerLinks = function(title) {
|
||||
// We'll cache the links so they only get computed if the tiddler changes
|
||||
return this.getCacheForTiddler(title,"links",function() {
|
||||
// Parse the tiddler
|
||||
var parser = self.parseTiddler(title);
|
||||
if(parser) {
|
||||
return self.extractLinks(parser.tree);
|
||||
}
|
||||
return [];
|
||||
var container = $tw.fakeDocument.createElement("div");
|
||||
var widget = self.makeTranscludeWidget(title,{document: $tw.fakeDocument, parseAsInline: false,variables: {currentTiddler: title},importPageMacros: true});
|
||||
widget.render(container,null);
|
||||
return self.extractLinksFromWidgetTree(widget);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333333
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333353
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333333
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #00a
|
||||
external-link-foreground: #00e
|
||||
foreground: #000
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: <<colour foreground>>
|
||||
message-border: <<colour background>>
|
||||
message-foreground: <<colour background>>
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #00a
|
||||
external-link-foreground: #00e
|
||||
foreground: #fff
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: <<colour foreground>>
|
||||
message-border: <<colour background>>
|
||||
message-foreground: <<colour background>>
|
||||
|
||||
@@ -32,6 +32,8 @@ external-link-foreground-hover:
|
||||
external-link-foreground-visited: #BF5AF2
|
||||
external-link-foreground: #32D74B
|
||||
foreground: #FFFFFF
|
||||
highlight-background: #ffff78
|
||||
highlight-foreground: #000000
|
||||
menubar-background: #464646
|
||||
menubar-foreground: #ffffff
|
||||
message-background: <<colour background>>
|
||||
|
||||
@@ -36,6 +36,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333333
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
|
||||
@@ -40,6 +40,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #313163
|
||||
external-link-foreground: #555592
|
||||
foreground: #2D2A23
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
menubar-background: #CDC2A6
|
||||
menubar-foreground: #5A5446
|
||||
message-background: #ECE5CF
|
||||
|
||||
@@ -41,6 +41,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #d3869b
|
||||
external-link-foreground: #8ec07c
|
||||
foreground: #fbf1c7
|
||||
highlight-background: #ffff79
|
||||
highlight-foreground: #000000
|
||||
menubar-background: #504945
|
||||
menubar-foreground: <<colour foreground>>
|
||||
message-background: #83a598
|
||||
|
||||
@@ -41,6 +41,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #5E81AC
|
||||
external-link-foreground: #8FBCBB
|
||||
foreground: #d8dee9
|
||||
highlight-background: #ffff78
|
||||
highlight-foreground: #000000
|
||||
menubar-background: #2E3440
|
||||
menubar-foreground: #d8dee9
|
||||
message-background: #2E3440
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333333
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
|
||||
@@ -131,6 +131,8 @@ external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-background: inherit
|
||||
external-link-foreground-hover: inherit
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-border: #cfd6e6
|
||||
modal-border: #999999
|
||||
select-tag-background:
|
||||
|
||||
@@ -35,6 +35,8 @@ external-link-foreground: #268bd2
|
||||
external-link-foreground-hover:
|
||||
external-link-foreground-visited: #268bd2
|
||||
foreground: #839496
|
||||
highlight-background: #ffff78
|
||||
highlight-foreground: #000000
|
||||
message-background: #002b36
|
||||
message-border: #586e75
|
||||
message-foreground: #839496
|
||||
|
||||
@@ -35,6 +35,8 @@ external-link-foreground: #268bd2
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #268bd2
|
||||
foreground: #657b83
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #fdf6e3
|
||||
message-border: #93a1a1
|
||||
message-foreground: #657b83
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover:
|
||||
external-link-foreground-visited:
|
||||
external-link-foreground:
|
||||
foreground: rgba(0, 0, 0, 0.87)
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: <<colour background>>
|
||||
message-border: <<colour very-muted-foreground>>
|
||||
message-foreground: rgba(0, 0, 0, 0.54)
|
||||
|
||||
@@ -34,6 +34,8 @@ external-link-foreground-hover:
|
||||
external-link-foreground-visited: #7c318c
|
||||
external-link-foreground: #9e3eb3
|
||||
foreground: rgba(255, 255, 255, 0.7)
|
||||
highlight-background: #ffff78
|
||||
highlight-foreground: #000000
|
||||
message-background: <<colour background>>
|
||||
message-border: <<colour very-muted-foreground>>
|
||||
message-foreground: rgba(255, 255, 255, 0.54)
|
||||
|
||||
@@ -43,6 +43,8 @@ external-link-foreground: rgb(179, 179, 255)
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: rgb(153, 153, 255)
|
||||
foreground: rgb(179, 179, 179)
|
||||
highlight-background: #ffff78
|
||||
highlight-foreground: #000000
|
||||
message-background: <<colour tag-foreground>>
|
||||
message-border: #96ccff
|
||||
message-foreground: <<colour tag-background>>
|
||||
|
||||
@@ -42,6 +42,8 @@ external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333333
|
||||
highlight-background: #ffff00
|
||||
highlight-foreground: #000000
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
|
||||
@@ -18,7 +18,7 @@ tc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$
|
||||
|
||||
<$navigator story="$:/StoryList" history="$:/HistoryList">
|
||||
|
||||
<$transclude mode="block"/>
|
||||
<$transclude tiddler="$:/core/ui/ViewTemplate/body" mode="block"/>
|
||||
|
||||
</$navigator>
|
||||
|
||||
|
||||
@@ -2,11 +2,5 @@ title: $:/core/ui/Actions/new-image
|
||||
tags: $:/tags/Actions
|
||||
description: create a new image tiddler
|
||||
|
||||
\define get-type()
|
||||
image/$(imageType)$
|
||||
\end
|
||||
\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$
|
||||
\whitespace trim
|
||||
<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>
|
||||
<$action-sendmessage $message="tm-new-tiddler" type=<<get-type>> tags=<<get-tags>>/>
|
||||
</$vars>
|
||||
<$action-sendmessage $message="tm-new-tiddler" type={{{ [{$:/config/NewImageType}addprefix[image/]] }}}/>
|
||||
|
||||
@@ -117,7 +117,7 @@ C'est un exemple de tiddler. Voir [[Macros Table des matières (Exemples)|Table-
|
||||
<table class="doc-bad-example">
|
||||
<tbody>
|
||||
<tr class="evenRow">
|
||||
<td><span class="tc-inline-style" style="font-size:1.5em;">⚠</span> Attention :<br> Ne faites pas comme ça !</td>
|
||||
<td><span style="font-size:1.5em;">⚠</span> Attention :<br> Ne faites pas comme ça !</td>
|
||||
<td>
|
||||
|
||||
$eg$
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
caption: 5.2.4
|
||||
created: 20220802100223020
|
||||
modified: 20220902201505817
|
||||
created: 20220924141149286
|
||||
modified: 20220924141149286
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.2.4
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -31,9 +31,11 @@ Improvements to the translation features of TiddlyWiki:
|
||||
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d62a16ee464fb9984b766b48504829a1a3eb143b">> problem with long presses on tiddler links triggering a preview on iOS/iPadOS
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6910">> consistency of button and input elements across browsers
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d825f1c875f5e46158c9c41c8c66471138c162d1">> edit preview to use the [[View Template Body Cascade]]
|
||||
|
||||
! Widget Improvements
|
||||
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/127f660c91020dcbb43897d954066b31af729e74">> EditTextWidget to remove the default text "Type the text for the tiddler 'foo'"
|
||||
|
||||
! Filter improvements
|
||||
@@ -43,6 +45,10 @@ Improvements to the translation features of TiddlyWiki:
|
||||
! Hackability Improvements
|
||||
|
||||
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]] and [[format Operator]]
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/c5d3d4c26e8fe27f272dda004aec27d6b66c4f60">> safe mode to disable wiki store indexers
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/166a1565843878083fb1eba47c73b8e67b78400d">> safe mode to prevent globally disabling parser rules
|
||||
|
||||
|
||||
|
||||
! Bug Fixes
|
||||
|
||||
@@ -54,21 +60,29 @@ Improvements to the translation features of TiddlyWiki:
|
||||
|
||||
! Node.js Improvements
|
||||
|
||||
*
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6947">> console logging to avoid spaces and `<empty string>` message
|
||||
|
||||
! Performance Improvements
|
||||
|
||||
*
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/53d229592df76c6dd607e40be5bea4d5e063c48e">> performance of `wiki.getTiddler()`
|
||||
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/81ac9874846b3ead275f67010fcfdb49f3d2f43c">> performance of variable prototype chain handling
|
||||
|
||||
|
||||
! Acknowledgements
|
||||
|
||||
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
|
||||
|
||||
<<.contributors """
|
||||
bestony
|
||||
BramChen
|
||||
flibbles
|
||||
fu-sen
|
||||
Marxsal
|
||||
oflg
|
||||
pmario
|
||||
rmunn
|
||||
roma0104
|
||||
tw-FRed
|
||||
twMat
|
||||
xcazin
|
||||
""">>
|
||||
|
||||
15
editions/test/tiddlers/tests/data/filters/Recursion.tid
Normal file
15
editions/test/tiddlers/tests/data/filters/Recursion.tid
Normal file
@@ -0,0 +1,15 @@
|
||||
title: Filters/Recursion
|
||||
description: Filter recursion detection
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\whitespace trim
|
||||
\define myfilter() [subfilter<myfilter>]
|
||||
|
||||
<$text text={{{ [subfilter<myfilter>] }}}/>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>/**-- Excessive filter recursion --**/</p>
|
||||
@@ -0,0 +1,14 @@
|
||||
title: Genesis/DollarSigns
|
||||
description: Usage of genesis widget with attributes starting with dollar signs
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\whitespace trim
|
||||
<$genesis $type="$let" myvar="Kitten">(<$text text=<<myvar>>/>)</$genesis>
|
||||
<$genesis $type="$let" $$myvar="Kitten">(<$text text=<<$myvar>>/>)</$genesis>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>(Kitten)(Kitten)</p>
|
||||
@@ -0,0 +1,14 @@
|
||||
title: Genesis/MultipleAttributes
|
||||
description: Usage of genesis widget with multiple attributes
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\whitespace trim
|
||||
<$genesis $type="$let" $names="myvar other" $values="Kitten Donkey" myvar={{{ Shark }}}>(<$text text=<<myvar>>/>|<$text text=<<other>>/>)</$genesis>
|
||||
<$genesis $type="$let" $names="$myvar $other" $values="Kitten Donkey" $$myvar="Shark">(<$text text=<<$myvar>>/>|<$text text=<<$other>>/>)</$genesis>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>(Kitten|Donkey)(Kitten|Donkey)</p>
|
||||
14
editions/test/tiddlers/tests/data/genesis-widget/Simple.tid
Normal file
14
editions/test/tiddlers/tests/data/genesis-widget/Simple.tid
Normal file
@@ -0,0 +1,14 @@
|
||||
title: Genesis/Simple
|
||||
description: Simple usage of genesis widget
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\whitespace trim
|
||||
<$genesis $type="div">Mouse</$genesis>
|
||||
<$genesis $type="div" class="tc-thing" label="Squeak">Mouse</$genesis>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p><div>Mouse</div><div class="tc-thing" label="Squeak">Mouse</div></p>
|
||||
13
editions/test/tiddlers/tests/data/transclude/Recursion.tid
Normal file
13
editions/test/tiddlers/tests/data/transclude/Recursion.tid
Normal file
@@ -0,0 +1,13 @@
|
||||
title: Transclude/Recursion
|
||||
description: Transclusion recursion detection
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\whitespace trim
|
||||
<$transclude $tiddler="Output"/>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p><span class="tc-error">Recursive transclusion error in transclude widget</span></p>
|
||||
@@ -63,6 +63,22 @@ describe("WikiText tests", function() {
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki","@@color:red;\n<div>\n\nContent</div>\n@@")).toBe("<div style=\"color:red;\"><p>Content</p></div>");
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki","@@color:red;\n---\n@@")).toBe("<hr style=\"color:red;\">");
|
||||
});
|
||||
it("handles inline style wikitext notation", function() {
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@highlighted@@ text")).toBe('<p>some <span class="tc-inline-style">highlighted</span> text</p>');
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@color:green;.tc-inline-style 1 style and 1 class@@ text")).toBe('<p>some <span class=" tc-inline-style " style="color:green;">1 style and 1 class</span> text</p>');
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@background-color:red;red@@ text")).toBe('<p>some <span style="background-color:red;">red</span> text</p>');
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@.myClass class@@ text")).toBe('<p>some <span class=" myClass ">class</span> text</p>');
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@.myClass.secondClass 2 classes@@ text")).toBe('<p>some <span class=" myClass secondClass ">2 classes</span> text</p>');
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@background:red;.myClass style and class@@ text")).toBe('<p>some <span class=" myClass " style="background:red;">style and class</span> text</p>');
|
||||
expect(wiki.renderText("text/html","text/vnd-tiddlywiki",
|
||||
"some @@background:red;color:white;.myClass 2 style and 1 class@@ text")).toBe('<p>some <span class=" myClass " style="background:red;color:white;">2 style and 1 class</span> text</p>');
|
||||
});
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
@@ -2,4 +2,6 @@ title: RenderTiddlerCommand
|
||||
tags: Commands
|
||||
caption: rendertiddler
|
||||
|
||||
<<.deprecated-since "5.1.15" "RenderCommand">>.
|
||||
|
||||
{{$:/language/Help/rendertiddler}}
|
||||
|
||||
@@ -2,4 +2,6 @@ title: RenderTiddlersCommand
|
||||
tags: Commands
|
||||
caption: rendertiddlers
|
||||
|
||||
<<.deprecated-since "5.1.15" "RenderCommand">>.
|
||||
|
||||
{{$:/language/Help/rendertiddlers}}
|
||||
|
||||
@@ -4,4 +4,6 @@ created: 20131218121606089
|
||||
modified: 20131218121606089
|
||||
caption: savetiddler
|
||||
|
||||
<<.deprecated-since "5.1.15" "SaveCommand">>.
|
||||
|
||||
{{$:/language/Help/savetiddler}}
|
||||
|
||||
@@ -4,4 +4,6 @@ created: 20140609121606089
|
||||
modified: 20140609121606089
|
||||
caption: savetiddlers
|
||||
|
||||
<<.deprecated-since "5.1.15" "SaveCommand">>.
|
||||
|
||||
{{$:/language/Help/savetiddlers}}
|
||||
|
||||
@@ -7,6 +7,8 @@ A ''Keyboard Shortcut Tiddler'' is made of three parts:
|
||||
* The ''field'' `key` with a [[Keyboard Shortcut Descriptor]] as its ''value''
|
||||
* Actions in its ''text'' field
|
||||
|
||||
<<.tip """<<.from-version "5.2.4">> By default <<.wlink KeyboardWidget>> and text editor shortcuts take priority, which can be circumvented by setting the ''field'' `priority` to `yes`.""">>
|
||||
|
||||
If the [[Keyboard Shortcut Descriptor]] has the form `((my-shortcut))` it's a ''reference'' to a ''configuration Tiddler'' that stores the corresponding [[Keyboard Shortcut|KeyboardShortcuts]]
|
||||
|
||||
In order to make a ''shortcut'' editable through the <<.controlpanel-tab KeyboardShortcuts>> Tab in the $:/ControlPanel it's sufficient to create a tiddler `$:/config/ShortcutInfo/my-shortcut`, where the ''suffix'' is the ''reference'' used for the [[Keyboard Shortcut|KeyboardShortcuts]]
|
||||
|
||||
@@ -66,6 +66,8 @@ In the [[Keyboard Shortcuts Tab|$:/core/ui/ControlPanel/KeyboardShortcuts]] the
|
||||
|
||||
!! Using global Keyboard Shortcuts
|
||||
|
||||
> See [[Keyboard Shortcut Tiddler]] for detailed information about creating new global keyboard shortcuts.
|
||||
|
||||
> The actions for ''global'' keyboard shortcuts are stored in the ''text'' field of tiddlers tagged with <<tag $:/tags/KeyboardShortcut>>
|
||||
|
||||
> The ''key field'' connects an action-tiddler with the corresponding shortcut through the `((my-shortcut))` syntax, called [[Keyboard Shortcut Descriptor]]
|
||||
|
||||
@@ -117,7 +117,7 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]].
|
||||
<table class="doc-bad-example">
|
||||
<tbody>
|
||||
<tr class="evenRow">
|
||||
<td><span class="tc-inline-style" style="font-size:1.5em;">⚠</span> Warning:<br> Don't do it this way!</td>
|
||||
<td><span style="font-size:1.5em;">⚠</span> Warning:<br> Don't do it this way!</td>
|
||||
<td>
|
||||
|
||||
$eg$
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
code-body: yes
|
||||
created: 20161008085627406
|
||||
modified: 20220704174221300
|
||||
modified: 20221007122259593
|
||||
tags: $:/tags/Macro
|
||||
title: $:/editions/tw5.com/version-macros
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -9,7 +10,5 @@ type: text/vnd.tiddlywiki
|
||||
\end
|
||||
|
||||
\define .deprecated-since(version, superseded:"TODO-Link")
|
||||
<$link to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Deprecated since: <$text text=<<__version__>>/></$link>. Use <$link to=<<__superseded__>>><$text text=<<__superseded__>>/></$link> instead
|
||||
<$link to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Deprecated since: <$text text=<<__version__>>/></$link> (see <$link to=<<__superseded__>>><$text text=<<__superseded__>>/></$link>)
|
||||
\end
|
||||
|
||||
<pre><$view field="text"/></pre>
|
||||
17
editions/tw5.com/tiddlers/widgets/ErrorWidget.tid
Normal file
17
editions/tw5.com/tiddlers/widgets/ErrorWidget.tid
Normal file
@@ -0,0 +1,17 @@
|
||||
caption: error
|
||||
created: 20220909111836951
|
||||
modified: 20220909111836951
|
||||
tags: Widgets
|
||||
title: ErrorWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<<.from-version "5.2.4">> The <<.wlink ErrorWidget>> widget is used by the core to display error messages such as the recursion errors reported by the <<.wlink TranscludeWidget>> widget.
|
||||
|
||||
The <<.wlink ErrorWidget>> does not provide any useful functionality to end users. It is only required by the core for technical reasons.
|
||||
|
||||
! Content and Attributes
|
||||
|
||||
The content of the <<.wlink ErrorWidget>> widget is ignored.
|
||||
|
||||
|!Attribute |!Description |
|
||||
|$message |The error message |
|
||||
29
editions/tw5.com/tiddlers/widgets/GenesisWidget.tid
Normal file
29
editions/tw5.com/tiddlers/widgets/GenesisWidget.tid
Normal file
@@ -0,0 +1,29 @@
|
||||
caption: genesis
|
||||
created: 20220924140702430
|
||||
modified: 20220924140702430
|
||||
tags: Widgets
|
||||
title: GenesisWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
! Introduction
|
||||
|
||||
<<.from-version "5.2.4">> The <<.wlink GenesisWidget>> widget allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance.
|
||||
|
||||
! Content and Attributes
|
||||
|
||||
The content of the <<.wlink GenesisWidget>> widget is used as the content of the dynamically created widget.
|
||||
|
||||
|!Attribute |!Description |
|
||||
|$type |The type of widget or element to create (an initial `$` indicates a widget, otherwise an HTML element will be created) |
|
||||
|$names |An optional filter evaluating to the names of a list of attributes to be applied to the widget |
|
||||
|$values |An optional filter evaluating to the values corresponding to the list of names specified in `$names` |
|
||||
|//{other attributes starting with $}// |Other attributes starting with a single dollar sign are reserved for future use |
|
||||
|//{attributes starting with $$}// |Attributes starting with two dollar signs are appplied as attributes to the output widget, but with the attribute name changed to use a single dollar sign |
|
||||
|//{attributes not starting with $}// |Any other attributes that do not start with a dollar are applied as attributes to the output widget |
|
||||
|
||||
Note that attributes explicitly specified take precedence over attributes with the same name specified in the `$names` filter.
|
||||
|
||||
! Examples
|
||||
|
||||
<$macrocall $name='wikitext-example-without-html'
|
||||
src='<$genesis $type="div" class="tc-thing" label="Squeak">Mouse</$genesis>'/>
|
||||
@@ -1,5 +1,6 @@
|
||||
title: LetWidget
|
||||
created: 20211028115900000
|
||||
modified: 20221001094658854
|
||||
tags: Widgets
|
||||
caption: let
|
||||
|
||||
@@ -12,10 +13,12 @@ caption: let
|
||||
The content of the <<.wid let>> widget is the scope for the value assigned to the variable.
|
||||
|
||||
|!Attribute |!Description |
|
||||
|//{attributes not starting with $}// |Each attribute name specifies a variable name. The attribute value is assigned to the variable |
|
||||
|//{attributes}// |Each attribute name specifies a variable name. The attribute value is assigned to the variable |
|
||||
|
||||
Attributes are evaluated in the order they are written. Attributes with the same name are allowed. Each time a duplicate attribute is encountered, it will replace the existing value set by the earlier duplicate.
|
||||
|
||||
<<.note """<<.from-version "5.2.4">> There is no longer any restriction on using variable names that start with the $ character.""">>
|
||||
|
||||
! Examples
|
||||
|
||||
Consider a case where you need to set multiple variables, where some depend on the evaluation of others.
|
||||
|
||||
@@ -36,7 +36,7 @@ This example requires the following CSS definitions from [[$:/_tw5.com-styles]]:
|
||||
This wiki text shows how to display a list within the scrollable widget:
|
||||
|
||||
<<wikitext-example-without-html "<$scrollable class='tc-scrollable-demo'>
|
||||
<$list filter='[!is[system]]'>
|
||||
<$list filter='[tag[Reference]]'>
|
||||
|
||||
<$view field='title'/>: <$list filter='[all[current]links[]sort[title]]' storyview='pop'>
|
||||
<$link><$view field='title'/></$link>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
created: 20131205160532119
|
||||
modified: 20131205160549129
|
||||
tags: WikiText
|
||||
tags: WikiText [[How to apply custom styles]]
|
||||
title: Styles and Classes in WikiText
|
||||
type: text/vnd.tiddlywiki
|
||||
caption: Styles and Classes
|
||||
|
||||
@@ -2,12 +2,8 @@ title: $:/language/Buttons/
|
||||
|
||||
AdvancedSearch/Caption: Búsqueda avanzada
|
||||
AdvancedSearch/Hint: Búsqueda avanzada
|
||||
Bold/Caption: Negrita
|
||||
Bold/Hint: Aplicar formato de negrita a la selección
|
||||
Cancel/Caption: Cancelar
|
||||
Cancel/Hint: Descarta los cambios
|
||||
Clear/Caption: Limpiar
|
||||
Clear/Hint: Limpiar imagen a color solido
|
||||
Clone/Caption: Clonar
|
||||
Clone/Hint: Hace una copia exacta de este tiddler
|
||||
Close/Caption: Cerrar
|
||||
@@ -22,45 +18,114 @@ CopyToClipboard/Caption: copiar a portapapeles
|
||||
CopyToClipboard/Hint: Copia este texto al portapapeles
|
||||
Delete/Caption: Borrar
|
||||
Delete/Hint: Borra este tiddler
|
||||
DeleteTiddlers/Caption: borrar tiddlers
|
||||
DeleteTiddlers/Hint: Borrar tiddlers
|
||||
Edit/Caption: Editar
|
||||
Edit/Hint: Permite editar este tiddler
|
||||
EditorHeight/Caption: Altura del editor
|
||||
EditorHeight/Caption/Auto: Ajustar al contenido
|
||||
EditorHeight/Caption/Fixed: Altura fija
|
||||
EditorHeight/Hint: Determina la altura del cuadro de edición
|
||||
Encryption/Caption: Cifrado
|
||||
Encryption/Hint: Asigna o revoca la contraseña de cifrado para este wiki
|
||||
Encryption/ClearPassword/Caption: Borrar contraseña
|
||||
Encryption/ClearPassword/Hint: Borra la contraseña actual y guarda este wiki sin cifrar
|
||||
Encryption/Hint: Asigna o revoca la contraseña de cifrado para este wiki
|
||||
Encryption/SetPassword/Caption: Asignar contraseña
|
||||
Encryption/SetPassword/Hint: Asigna contraseña de cifrado
|
||||
Excise/Caption: Escindir
|
||||
Excise/Caption/Excise: Escindir
|
||||
Excise/Caption/MacroName: Nombre de la macro
|
||||
Excise/Caption/NewTitle: Título del nuevo tiddler
|
||||
Excise/Caption/Replace: Reemplazar texto escindido con:
|
||||
Excise/Caption/Replace/Link: enlace
|
||||
Excise/Caption/Replace/Macro: macro
|
||||
Excise/Caption/Replace/Transclusion: transclusión
|
||||
Excise/Caption/Tag: Etiqueta el nuevo tiddler con el título de este
|
||||
Excise/Caption/TiddlerExists: ¡Atención! El tiddler ya existe
|
||||
Excise/Hint: Corta el texto seleccionado y lo pega en un tiddler nuevo
|
||||
ExportPage/Caption: Exportar todos
|
||||
ExportPage/Hint: Exporta todos los tiddlers
|
||||
ExportTiddler/Caption: Exportar tiddler
|
||||
ExportTiddler/Hint: Exporta este tiddler
|
||||
ExportTiddlers/Caption: Exportar tiddlers
|
||||
ExportTiddlers/Hint: Exporta el grupo de tiddlers
|
||||
SidebarSearch/Hint: Selecciona el campo de búsqueda de la barra lateral
|
||||
Fold/Caption: Comprimir tiddler
|
||||
Fold/Hint: Comprime la vista del tiddler ocultando el cuerpo y sólo muestra el título
|
||||
Fold/FoldBar/Caption: Barra de vista comprimida
|
||||
Fold/FoldBar/Hint: Barras opcionales para comprimir y desplegar tiddlers
|
||||
Fold/Hint: Comprime la vista del tiddler ocultando el cuerpo y sólo muestra el título
|
||||
FoldAll/Caption: Comprimir todos
|
||||
FoldAll/Hint: Comprime la vista de todos los tiddlers abiertos
|
||||
Unfold/Caption: Desplegar tiddler
|
||||
Unfold/Hint: Despliega el cuerpo de este tiddler y muestra su contenido
|
||||
FoldOthers/Caption: Comprimir los demás
|
||||
FoldOthers/Hint: Comprime la vista de todos los tiddlers abiertos excepto este
|
||||
FoldAll/Caption: Comprimir todos
|
||||
FoldAll/Hint: Comprime la vista de todos los tiddlers abiertos
|
||||
UnfoldAll/Caption: Desplegar todos
|
||||
UnfoldAll/Hint: Despliega y muestra el contenido de todos los tiddlers abiertos
|
||||
FullScreen/Caption: Pantalla completa
|
||||
FullScreen/Hint: Entra y sale del modo de pantalla completa
|
||||
Help/Caption: Ayuda
|
||||
Help/Hint: Muestra el panel de ayuda
|
||||
Import/Caption: Importar
|
||||
Import/Hint: Importa multitud de tipos de archivo, incluyendo textos, imágenes, TiddlyWiki y JSON
|
||||
Info/Caption: Información
|
||||
Info/Hint: Muestra información sobre este tiddler
|
||||
Home/Caption: Inicio
|
||||
Home/Hint: Cierra todos los tiddlers abiertos y abre los que se muestran por defecto al inicio
|
||||
Language/Caption: Idioma
|
||||
Language/Hint: Selecciona idioma de la interfaz de usuario
|
||||
Manager/Caption: Administrador tiddler
|
||||
Manager/Hint: Abre el administrador del tiddler
|
||||
More/Caption: Más
|
||||
More/Hint: Otras acciones
|
||||
NewHere/Caption: Nuevo aquí
|
||||
NewHere/Hint: Crea un nuevo tiddler etiquetado con el título de este tiddler
|
||||
NewJournal/Caption: Nueva entrada
|
||||
NewJournal/Hint: Crea una nueva entrada de diario
|
||||
NewJournalHere/Caption: Entrada nueva aquí
|
||||
NewJournalHere/Hint: Crea una nueva entrada de diario etiquetada con el título de este tiddler
|
||||
NewImage/Caption: Nueva imagen
|
||||
NewImage/Hint: Crea un nuevo tiddler de imagen
|
||||
NewMarkdown/Caption: Nuevo tiddler en Markdown
|
||||
NewMarkdown/Hint: Crea un nuevo tiddler en Markdown
|
||||
NewTiddler/Caption: Nuevo tiddler
|
||||
NewTiddler/Hint: Crea un tiddler nuevo
|
||||
OpenWindow/Caption: Abrir en ventana nueva
|
||||
OpenWindow/Hint: Abre el tiddler en una nueva ventana
|
||||
Palette/Caption: Paleta
|
||||
Palette/Hint: Selecciona la paleta de color
|
||||
Permalink/Caption: Enlace permanente
|
||||
Permalink/Hint: Crea en la barra de direcciones del navegador un enlace directo a este tiddler
|
||||
Permaview/Caption: Permaview
|
||||
Permaview/Hint: Crea en la barra de direcciones del navegador un enlace directo a todos los tiddlers abiertos
|
||||
Print/Caption: Imprimir página
|
||||
Print/Hint: Imprime la página actual
|
||||
Refresh/Caption: Recargar
|
||||
Refresh/Hint: Actualiza completamente este wiki
|
||||
Save/Caption: Vale
|
||||
Save/Hint: Confirma y guarda los cambios realizados en el tiddler
|
||||
SaveWiki/Caption: Guardar cambios
|
||||
SaveWiki/Hint: Confirma y guarda todos los cambios realizados en el wiki
|
||||
StoryView/Caption: Vista
|
||||
StoryView/Hint: Selecciona el modo de visualización de los tiddlers
|
||||
HideSideBar/Caption: Ocultar barra lateral
|
||||
HideSideBar/Hint: Oculta la barra lateral
|
||||
ShowSideBar/Caption: Mostrar barra lateral
|
||||
ShowSideBar/Hint: Muestra la barra lateral
|
||||
TagManager/Caption: Administrador de etiquetas
|
||||
TagManager/Hint: Abre el gestor de etiquetas
|
||||
Timestamp/Caption: Marcas de tiempo
|
||||
Timestamp/Hint: Elige si las modificaciones actualizan las marcas de tiempo
|
||||
Timestamp/On/Caption: las marcas de tiempo están activadas
|
||||
Timestamp/On/Hint: Actualizar las marcas de tiempo cuando se modifican los tiddlers
|
||||
Timestamp/Off/Caption: las marcas de tiempo están desactivadas
|
||||
Timestamp/Off/Hint: No actualizar las marcas de tiempo cuando se modifican los tiddlers
|
||||
Theme/Caption: Tema
|
||||
Theme/Hint: Selecciona un estilo visual para el wiki
|
||||
Bold/Caption: Negrita
|
||||
Bold/Hint: Aplicar formato de negrita a la selección
|
||||
Clear/Caption: Limpiar
|
||||
Clear/Hint: Limpiar imagen a color solido
|
||||
EditorHeight/Caption: Altura del editor
|
||||
EditorHeight/Caption/Auto: Ajustar al contenido
|
||||
EditorHeight/Caption/Fixed: Altura fija
|
||||
EditorHeight/Hint: Determina la altura del cuadro de edición
|
||||
Excise/Caption: Escindir
|
||||
Excise/Caption/Excise: Escindir
|
||||
Excise/Caption/MacroName: Nombre de la macro
|
||||
Excise/Caption/NewTitle: Título del nuevo tiddler
|
||||
Excise/Caption/Replace: Reemplazar texto escindido con:
|
||||
Excise/Caption/Replace/Macro: macro
|
||||
Excise/Caption/Replace/Link: enlace
|
||||
Excise/Caption/Replace/Transclusion: transclusión
|
||||
Excise/Caption/Tag: Etiqueta el nuevo tiddler con el título de este
|
||||
Excise/Caption/TiddlerExists: ¡Atención! El tiddler ya existe
|
||||
Excise/Hint: Corta el texto seleccionado y lo pega en un tiddler nuevo
|
||||
Heading1/Caption: Encabezamiento 1
|
||||
Heading1/Hint: Aplica formato de encabezamiento 1 a la selección
|
||||
Heading2/Caption: Encabezamiento 2
|
||||
@@ -73,20 +138,8 @@ Heading5/Caption: Encabezamiento 5
|
||||
Heading5/Hint: Aplica formato de encabezamiento 5 a la selección
|
||||
Heading6/Caption: Encabezamiento 6
|
||||
Heading6/Hint: Aplica formato de encabezamiento 6 a la selección
|
||||
Help/Caption: Ayuda
|
||||
Help/Hint: Muestra el panel de ayuda
|
||||
HideSideBar/Caption: Ocultar barra lateral
|
||||
HideSideBar/Hint: Oculta la barra lateral
|
||||
Home/Caption: Inicio
|
||||
Home/Hint: Cierra todos los tiddlers abiertos y abre los que se muestran por defecto al inicio
|
||||
Import/Caption: Importar
|
||||
Import/Hint: Importa multitud de tipos de archivo, incluyendo textos, imágenes, TiddlyWiki y JSON
|
||||
Info/Caption: Información
|
||||
Info/Hint: Muestra información sobre este tiddler
|
||||
Italic/Caption: Cursiva
|
||||
Italic/Hint: Aplica formato de cursiva a la selección
|
||||
Language/Caption: Idioma
|
||||
Language/Hint: Selecciona idioma de la interfaz de usuario
|
||||
LineWidth/Caption: Ancho del trazo
|
||||
LineWidth/Hint: Establece el ancho del trazo para pintar
|
||||
Link/Caption: Enlace
|
||||
@@ -97,59 +150,24 @@ ListBullet/Caption: Lista con viñetas
|
||||
ListBullet/Hint: Aplica formato de lista con viñetas a la selección
|
||||
ListNumber/Caption: Lista numerada
|
||||
ListNumber/Hint: Aplica formato de lista numerada a la selección
|
||||
Manager/Caption: Administrador tiddler
|
||||
Manager/Hint: Abre el administrador del tiddler
|
||||
MonoBlock/Caption: Bloque monoespaciado
|
||||
MonoBlock/Hint: Aplica formato de bloque monoespaciado a la selección
|
||||
MonoLine/Caption: Monoespacio
|
||||
MonoLine/Hint: Aplica formato de monoespacio a la selección
|
||||
More/Caption: Más
|
||||
More/Hint: Otras acciones
|
||||
NewHere/Caption: Nuevo aquí
|
||||
NewHere/Hint: Crea un nuevo tiddler etiquetado con el título de este tiddler
|
||||
NewImage/Caption: Nueva imagen
|
||||
NewImage/Hint: Crea un nuevo tiddler de imagen
|
||||
NewJournal/Caption: Nueva entrada
|
||||
NewJournal/Hint: Crea una nueva entrada de diario
|
||||
NewJournalHere/Caption: Entrada nueva aquí
|
||||
NewJournalHere/Hint: Crea una nueva entrada de diario etiquetada con el título de este tiddler
|
||||
NewMarkdown/Caption: Nuevo tiddler en Markdown
|
||||
NewMarkdown/Hint: Crea un nuevo tiddler en Markdown
|
||||
NewTiddler/Caption: Nuevo tiddler
|
||||
NewTiddler/Hint: Crea un tiddler nuevo
|
||||
Opacity/Caption: Opacidad
|
||||
Opacity/Hint: Establece la opacidad del trazo
|
||||
OpenWindow/Caption: Abrir en ventana nueva
|
||||
OpenWindow/Hint: Abre el tiddler en una nueva ventana
|
||||
Paint/Caption: Color del trazo
|
||||
Paint/Hint: Establece el color del trazo
|
||||
Palette/Caption: Paleta
|
||||
Palette/Hint: Selecciona la paleta de color
|
||||
Permalink/Caption: Enlace permanente
|
||||
Permalink/Hint: Crea en la barra de direcciones del navegador un enlace directo a este tiddler
|
||||
Permaview/Caption: Permaview
|
||||
Permaview/Hint: Crea en la barra de direcciones del navegador un enlace directo a todos los tiddlers abiertos
|
||||
Picture/Caption: Imagen
|
||||
Picture/Hint: Inserta imagen
|
||||
Preview/Caption: Vista previa
|
||||
Preview/Hint: Muestra el panel de vista previa
|
||||
PreviewType/Caption: Tipo de vista previa
|
||||
PreviewType/Hint: Selecciona el tipo de vista previa
|
||||
Print/Caption: Imprimir página
|
||||
Print/Hint: Imprime la página actual
|
||||
Quote/Caption: Bloque de cita
|
||||
Quote/Hint: Aplica formato de bloque de cita a la selección
|
||||
Refresh/Caption: Recargar
|
||||
Refresh/Hint: Actualiza completamente este wiki
|
||||
RotateLeft/Caption: girar a la izquierda
|
||||
RotateLeft/Hint: Girar la imagen a la izquierda 90 grados
|
||||
Save/Caption: Vale
|
||||
Save/Hint: Confirma y guarda los cambios realizados en el tiddler
|
||||
SaveWiki/Caption: Guardar cambios
|
||||
SaveWiki/Hint: Confirma y guarda todos los cambios realizados en el wiki
|
||||
ShowSideBar/Caption: Mostrar barra lateral
|
||||
ShowSideBar/Hint: Muestra la barra lateral
|
||||
SidebarSearch/Hint: Selecciona el campo de búsqueda de la barra lateral
|
||||
Size/Caption: Tamaño de imagen
|
||||
Size/Caption/Height: Altura:
|
||||
Size/Caption/Resize: Cambiar tamaño
|
||||
@@ -158,32 +176,16 @@ Size/Hint: Establece tamaño de la imagen
|
||||
Stamp/Caption: Snippet
|
||||
Stamp/Caption/New: Añade el tuyo propio
|
||||
Stamp/Hint: Inserta un snippet o fragmento de texto preconfigurado
|
||||
Stamp/New/Text: Texto del snippet (Recuerda añadir un título descriptivo en el campo "caption" ).
|
||||
Stamp/New/Title: Nombre para mostrar en el menú
|
||||
StoryView/Caption: Vista
|
||||
StoryView/Hint: Selecciona el modo de visualización de los tiddlers
|
||||
Stamp/New/Text: Texto del snippet (Recuerda añadir un título descriptivo en el campo "caption" ).
|
||||
Strikethrough/Caption: Tachado
|
||||
Strikethrough/Hint: Aplica formado de tachado a la selección
|
||||
Subscript/Caption: Subíndice
|
||||
Subscript/Hint: Aplica formato de subíndice a la selección
|
||||
Superscript/Caption: Superíndice
|
||||
Superscript/Hint: Aplica formato de superíndice a la selección
|
||||
TagManager/Caption: Administrador de etiquetas
|
||||
TagManager/Hint: Abre el gestor de etiquetas
|
||||
Theme/Caption: Tema
|
||||
Theme/Hint: Selecciona un estilo visual para el wiki
|
||||
Timestamp/Caption: Marcas de tiempo
|
||||
Timestamp/Hint: Elige si las modificaciones actualizan las marcas de tiempo
|
||||
Timestamp/Off/Caption: las marcas de tiempo están desactivadas
|
||||
Timestamp/Off/Hint: No actualizar las marcas de tiempo cuando se modifican los tiddlers
|
||||
Timestamp/On/Caption: las marcas de tiempo están activadas
|
||||
Timestamp/On/Hint: Actualizar las marcas de tiempo cuando se modifican los tiddlers
|
||||
ToggleSidebar/Hint: Alternar la visibilidad de la barra lateral
|
||||
Transcludify/Caption: Transclusión
|
||||
Transcludify/Hint: Envolver la selección entre llaves
|
||||
Underline/Caption: Subrayado
|
||||
Underline/Hint: Aplica formato de subrayado a la selección
|
||||
Unfold/Caption: Desplegar tiddler
|
||||
Unfold/Hint: Despliega el cuerpo de este tiddler y muestra su contenido
|
||||
UnfoldAll/Caption: Desplegar todos
|
||||
UnfoldAll/Hint: Despliega y muestra el contenido de todos los tiddlers abiertos
|
||||
|
||||
@@ -27,10 +27,17 @@ Basics/Tiddlers/Prompt: Número de tiddlers
|
||||
Basics/Title/Prompt: Título de este ~TiddlyWiki:
|
||||
Basics/Username/Prompt: Nombre de usuario
|
||||
Basics/Version/Prompt: Versión de ~TiddlyWiki
|
||||
Cascades/Caption: Cascadas
|
||||
Cascades/Hint: Estas reglas globales se utilizan para elegir dinámicamente ciertas plantillas. El resultado de la cascada es el resultado del primer filtro en la secuencia que devuelve un resultado
|
||||
Cascades/TagPrompt: Filtros etiquetados <$macrocall $name="tag" tag=<<currentTiddler>>/>
|
||||
EditorTypes/Caption: Tipos de editor
|
||||
EditorTypes/Editor/Caption: Editor
|
||||
EditorTypes/Hint: Editores usados para ciertos tipos específicos de tiddler
|
||||
EditorTypes/Type/Caption: Tipo
|
||||
EditTemplateBody/Caption: Editar Cuerpo de Plantilla
|
||||
EditTemplateBody/Hint: La plantilla de edición predeterminada utiliza esta cascada de reglas para elegir dinámicamente la plantilla para editar el cuerpo de un tiddler.
|
||||
FieldEditor/Caption: Editor de Campos
|
||||
FieldEditor/Hint: Esta cascada de reglas se usa para elegir dinámicamente la plantilla para representar un campo en función de su nombre. Se utiliza dentro de la plantilla de edición.
|
||||
Info/Caption: Información
|
||||
Info/Hint: Información acerca de este TiddlyWiki
|
||||
KeyboardShortcuts/Add/Caption: Añadir atajo
|
||||
@@ -191,6 +198,8 @@ Settings/TitleLinks/Yes/Description: Mostrar como enlaces
|
||||
Settings/MissingLinks/Caption: Enlaces Wiki
|
||||
Settings/MissingLinks/Hint: Elige si quieres vincular a tiddlers que aún no existen
|
||||
Settings/MissingLinks/Description: Habilitar enlaces a tiddlers inexistentes
|
||||
StoryTiddler/Caption: Tiddler de Historia
|
||||
StoryTiddler/Hint: Esta cascada de reglas se usa para elegir dinámicamente la plantilla para mostrar un tiddler en el río de la historia.
|
||||
StoryView/Caption: Vista
|
||||
StoryView/Prompt: Vista actual
|
||||
Stylesheets/Caption: Hojas de estilo
|
||||
@@ -201,6 +210,10 @@ Theme/Caption: Tema
|
||||
Theme/Prompt: Tema actual
|
||||
TiddlerFields/Caption: Campos de tiddler
|
||||
TiddlerFields/Hint: Esta es la colección completa de campos de tiddler (TiddlerFields) actualmente en uso en este wiki, que incluye los tiddlers de sistema, pero no los ocultos
|
||||
TiddlerColour/Caption: Color del Tiddler
|
||||
TiddlerColour/Hint: Esta cascada de reglas se utiliza para elegir dinámicamente el color de un tiddler (utilizado para el icono y la etiqueta asociada).
|
||||
TiddlerIcon/Caption: Icono del Tiddler
|
||||
TiddlerIcon/Hint: Esta cascada de reglas se utiliza para elegir dinámicamente el icono de un tiddler.
|
||||
Toolbars/Caption: Barras de herramientas
|
||||
Toolbars/EditToolbar/Caption: Barra de edición
|
||||
Toolbars/EditToolbar/Hint: Selecciona qué botones mostrar en modo de edición
|
||||
@@ -212,3 +225,7 @@ Toolbars/EditorToolbar/Hint: Elige qué botones se muestran en la barra de herra
|
||||
Toolbars/ViewToolbar/Caption: Barra de visualización
|
||||
Toolbars/ViewToolbar/Hint: Selecciona qué botones mostrar en modo de visualización
|
||||
Tools/Download/Full/Caption: Descargar el wiki completo
|
||||
ViewTemplateBody/Caption: Ver el Cuerpo de la Plantilla
|
||||
ViewTemplateBody/Hint: La plantilla de vista predeterminada utiliza esta cascada de reglas para elegir dinámicamente la plantilla para mostrar el cuerpo de un tiddler.
|
||||
ViewTemplateTitle/Caption: Ver el Título de la Plantilla
|
||||
ViewTemplateTitle/Hint: La plantilla de vista predeterminada utiliza esta cascada de reglas para elegir dinámicamente la plantilla para mostrar el título de un tiddler.
|
||||
|
||||
@@ -44,8 +44,8 @@ muted-foreground: Primario general silenciado
|
||||
notification-background: Fondo Notificación
|
||||
notification-border: Borde Notificación
|
||||
page-background: Fondo Página
|
||||
pre-background: Preformatted code background
|
||||
pre-border: Preformatted code border
|
||||
pre-background: Fondo de código preformateado
|
||||
pre-border: Borde de código preformateado
|
||||
primary: Primario general
|
||||
select-tag-background: Fondo `<select>`
|
||||
select-tag-foreground: Primario `<select>`
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
title: $:/language/EditTemplate/
|
||||
|
||||
Caption: Editor
|
||||
Body/External/Hint: Este es un tiddler externo, es decir, guardado fuera del archivo TiddlyWiki principal <br> Puedes editar sus etiquetas y campos, pero no se puede editar directamente el contenido
|
||||
Body/Placeholder: Escribe el texto aquí
|
||||
Body/Preview/Type/Output: Visible
|
||||
Body/Preview/Type/DiffShadow: diferencias con la copia (si las hay)
|
||||
Body/Preview/Type/DiffCurrent: diferencias con el actual
|
||||
Field/Remove/Caption: Eliminar campo
|
||||
Field/Remove/Hint: Elimina el campo y su valor
|
||||
Field/Dropdown/Caption: lista de campos
|
||||
|
||||
@@ -3,6 +3,7 @@ title: $:/language/Docs/Fields/
|
||||
_canonical_uri: Dirección (URI) completa -absoluta o relativa- de un tiddler externo de imagen
|
||||
bag: Nombre de la bolsa de la que procede un tiddler
|
||||
caption: Texto que se muestra en una pestaña o botón, con independencia del título del tiddler que lo define
|
||||
code-body: La plantilla de vista mostrará el tiddler como código si se establece en ''yes''
|
||||
color: Valor CSS del color de fondo asociado a un tiddler
|
||||
component: Nombre del componente responsable de un [[tiddler de alerta|AlertMechanism]]
|
||||
current-tiddler: Usado para incluir el tiddler superior en una [[historia|HistoryMechanism]]
|
||||
@@ -13,9 +14,9 @@ description: Descripción de un complemento, extensión, o diálogo modal
|
||||
draft.of: Título del tiddler del que el actual es borrador
|
||||
draft.title: Nuevo título propuesto para el presente borrador
|
||||
footer: Texto al pie que figurará en un asistente
|
||||
hide-body: La plantilla de vista ocultará los cuerpos de los tiddlers si se establece en: ''yes''
|
||||
hide-body: La plantilla de vista ocultará los cuerpos de los tiddlers si se establece en ''yes''
|
||||
icon: Nombre del tiddler que contiene el icono que se quiere asociar al presente tiddler
|
||||
library: Si su valor es "Sí", indica que el tiddler debe guardarse como librería de JavaScript
|
||||
library: Si su valor es ''yes'', indica que el tiddler debe guardarse como librería de JavaScript
|
||||
list: Lista ordenada de tiddlers asociados al presente tiddler
|
||||
list-before: Título del tiddler antes del que el presente será añadido a una lista<br> Si el campo existe pero está vacío, el tiddler se añadirá al principio de la lista
|
||||
list-after: Título del tiddler tras el que el presente será añadido a una lista de tiddlers.
|
||||
@@ -32,7 +33,7 @@ tags: Lista de etiquetas asignadas al tiddler
|
||||
text: Texto principal de un tiddler
|
||||
throttle.refresh: Si está presente, regula las actualizaciones de este tiddler
|
||||
title: Nombre único de un tiddler
|
||||
toc-link: Suprime el enlace del tiddler en la tabla de contenido si se establece en: ''no''
|
||||
toc-link: Suprime el enlace del tiddler en la tabla de contenido si se establece en ''no''
|
||||
type: Tipo de contenido en un tiddler
|
||||
version: Versión de un complemento o extensión
|
||||
_is_skinny: Si está presente, indica que el campo de texto tiddler debe cargarse desde el servidor
|
||||
|
||||
@@ -11,9 +11,10 @@ Visita https://tiddlywiki.com/#GettingStarted para más información (en inglés
|
||||
|
||||
<div class="tc-control-panel">
|
||||
|
||||
|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k
|
||||
| <$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link>|<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
| <$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link>|<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|^ <$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link><br><<lingo DefaultTiddlers/TopHint>>|<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
</div>
|
||||
|
||||
Consulta más opciones en el [[panel de control|$:/ControlPanel]]
|
||||
|
||||
@@ -4,6 +4,7 @@ description:
|
||||
\define commandTitle()
|
||||
$:/language/Help/$(command)$
|
||||
\end
|
||||
\whitespace trim
|
||||
```
|
||||
Uso: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]
|
||||
```
|
||||
@@ -12,7 +13,9 @@ Comandos disponibles:
|
||||
|
||||
<ul>
|
||||
<$list filter="[commands[]sort[title]]" variable="command">
|
||||
<li><$link to=<<commandTitle>>><$macrocall $name="command" $type="text/plain" $output="text/plain"/></$link>: <$transclude tiddler=<<commandTitle>> field="description"/></li>
|
||||
<li><$link to=<<commandTitle>>><$macrocall $name="command" $type="text/plain" $output="text/plain"/></$link>:
|
||||
 
|
||||
<$transclude tiddler=<<commandTitle>> field="description"/></li>
|
||||
</$list>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ Todos los parámetros son opcionales con valores predeterminados seguros y se pu
|
||||
* ''readers'' - lista separada por comas de los usuarios autorizados a leer de este wiki
|
||||
* ''writers'' - lista separada por comas de los usuarios autorizados a escribir en este wiki
|
||||
* ''csrf-disable'' - establecer a "yes" para deshabilitar las comprobaciones CSRF (el valor predeterminado es "no")
|
||||
* ''sse-enabled'' - establecer a "yes" para habilitar los eventos enviados por el servidor (el valor predeterminado es "no")
|
||||
* ''root-tiddler'' - el tiddler para servir en la raíz (por defecto es "$:/core/save/all")
|
||||
* ''root-render-type'' - el tipo de contenido del tiddler raíz (por defecto es "text/plain")
|
||||
* ''root-serve-type'' - el tipo de contenido con el que se debe servir el tiddler raíz (el valor predeterminado es "text/html")
|
||||
|
||||
@@ -31,5 +31,5 @@ Notas:
|
||||
|
||||
Ejemplos:
|
||||
|
||||
* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- muestra todos los tiddlers que no son del sistema como archivos en el subdirectorio "tiddlers" con títulos codificados en URL y la extensión HTML
|
||||
|
||||
* `--render '[!is[system]]' '[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]'` -- renders all non-system tiddlers as files in the subdirectory "tiddlers" with URL-encoded titles and the extension HTML
|
||||
* `--render '.' 'tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[HelloThere]]'` -- renders the tiddlers tagged "HelloThere" to a JSON file named "tiddlers.json"
|
||||
|
||||
@@ -30,5 +30,5 @@ Upgrader/System/Warning: tiddler del sistema principal.
|
||||
Upgrader/System/Alert: Estás a punto de importar un tiddler que sobrescribirá un tiddler del sistema principal. Esto no se recomienda ya que puede hacer que el sistema sea inestable.
|
||||
Upgrader/ThemeTweaks/Created: Ajuste de tema migrado de <$text text=<<from>>/>
|
||||
Upgrader/Tiddler/Disabled: Tiddler deshabilitado.
|
||||
Upgrader/Tiddler/Selected: Usuario seleccionado.
|
||||
Upgrader/Tiddler/Selected: Tiddler seleccionado.
|
||||
Upgrader/Tiddler/Unselected: Tiddler no seleccionado.
|
||||
|
||||
@@ -8,13 +8,14 @@ CloseAll/Button: Cerrar todo
|
||||
ColourPicker/Recent: Recientes:
|
||||
ConfirmCancelTiddler: ¿Deseas descartar los cambios efectuados en "<$text text=<<title>>/>"?
|
||||
ConfirmDeleteTiddler: ¿Deseas borrar "<$text text=<<title>>/>"?
|
||||
ConfirmDeleteTiddlers: ¿Deseas borrar <<resultCount>> tiddler(s)?
|
||||
ConfirmOverwriteTiddler: ¿Deseas sobrescribir "<$text text=<<title>>/>"?
|
||||
ConfirmEditShadowTiddler: Estás a punto de editar un tiddler oculto<br> Todo cambio en él afectará al sistema por defecto y pondrá en riesgo futuras actualizaciones del sistema<br> ¿Estás seguro de querer editar "<$text text=<<title>>/>"?
|
||||
ConfirmAction: ¿Desea continuar?
|
||||
Count: Número
|
||||
DefaultNewTiddlerTitle: Nuevo Tiddler
|
||||
Diffs/CountMessage: <<diff-count>> diferencias
|
||||
DropMessage: Suéltalo aquí o pulsa ''ESC'' para cancelar
|
||||
DropMessage: Suéltalo ahora o pulsa ''ESC'' para cancelar
|
||||
Encryption/Cancel: Cancelar
|
||||
Encryption/ConfirmClearPassword: ¿Deseas borrar la contraseña? <br> Revocarás el cifrado que se aplica para guardar este wiki
|
||||
Encryption/PromptSetPassword: Especifica nueva contraseña para este TiddlyWiki
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
title: $:/language/SideBar/
|
||||
|
||||
Caption: Panel Lateral
|
||||
All/Caption: Todos
|
||||
Contents/Caption: Contenido
|
||||
Drafts/Caption: Borradores
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
title: $:/language/Snippets/ListByTag
|
||||
tags: $:/tags/TextEditor/Snippet
|
||||
caption: Liste de tiddlers par etiqueta
|
||||
caption: Liste de tiddlers por etiqueta
|
||||
|
||||
<<list-links "[tag[task]sort[title]]">>
|
||||
|
||||
@@ -18,6 +18,8 @@ CopyToClipboard/Caption: skopiuj do schowka
|
||||
CopyToClipboard/Hint: Skopiuj ten tekst do schowka
|
||||
Delete/Caption: usuń
|
||||
Delete/Hint: Usuń tiddlera
|
||||
DeleteTiddlers/Caption: usuń tiddlery
|
||||
DeleteTiddlers/Hint: Usuwa tiddlery
|
||||
Edit/Caption: edytuj
|
||||
Edit/Hint: Edytuj tego tiddlera
|
||||
Encryption/Caption: szyfrowanie
|
||||
|
||||
@@ -9,9 +9,10 @@ Zanim zaczniesz zapisywać ważne informacje w swojej ~TiddlyWiki ważne jest,
|
||||
|
||||
<div class="tc-control-panel">
|
||||
|
||||
|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k
|
||||
| <$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link>|<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
| <$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link>|<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|^ <$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link><br><<lingo DefaultTiddlers/TopHint>>|<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
</div>
|
||||
|
||||
Przejdź do [[panelu sterowania|$:/ControlPanel]] by zmienić pozostałe opcje.
|
||||
|
||||
@@ -31,5 +31,5 @@ Notatki:
|
||||
|
||||
Przykłady:
|
||||
|
||||
* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- renderuje wszystkie niesystemowe tiddlery jako pliki w podfolderze "tiddlers", kodując znaki URI w nazwie i dodając rozszerzenie .html
|
||||
|
||||
* `--render '[!is[system]]' '[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]'` -- renderuje wszystkie niesystemowe tiddlery jako pliki w podfolderze "tiddlers", kodując znaki URI w nazwie i dodając rozszerzenie .html
|
||||
* `--render '.' 'tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[HelloThere]]'` -- renderuje wszystkie tiddlery z tagiem "HelloThere" do pliku JSON o nazwie "tiddlers.json"
|
||||
|
||||
@@ -8,6 +8,7 @@ CloseAll/Button: zamknij wszystkie
|
||||
ColourPicker/Recent: Ostatnie:
|
||||
ConfirmCancelTiddler: Czy na pewno chcesz odrzucić zmiany w tiddlerze "<$text text=<<title>>/>"?
|
||||
ConfirmDeleteTiddler: Czy na pewno chcesz usunąc tiddlera "<$text text=<<title>>/>"?
|
||||
ConfirmDeleteTiddlers: Na pewno chcesz usunąć <<resultCount>> tiddler/y/ów?
|
||||
ConfirmOverwriteTiddler: Czy na pewno chcesz nadpisać tiddlera "<$text text=<<title>>/>"?
|
||||
ConfirmEditShadowTiddler: Próbujesz utworzyć tiddler-cień. Zmiany te nadpiszą oryginalne, systemowe tiddlery co może utrudniać aktualizację wiki. Czy na pewno chcesz zmodyfikować"<$text text=<<title>>/>"?
|
||||
ConfirmAction: Na pewno chcesz kontynuować?
|
||||
|
||||
@@ -13,7 +13,7 @@ dependents: 插件的相依插件列表
|
||||
description: 插件的说明、描述
|
||||
draft.of: 草稿条目,包含条目的标题、标签、栏位 ...
|
||||
draft.title: 草稿条目的标题
|
||||
footer: wizard 的注脚
|
||||
footer: 互动窗口的注脚
|
||||
hide-body: 若设置为 ''yes'',视图模板将隐藏条目的主体
|
||||
icon: 条目的标题含有与条目关联的图标
|
||||
library: 若设置为 ''yes'',表示条目应该被保存为一个 JavaScript 程序库
|
||||
@@ -28,7 +28,7 @@ plugin-type: 插件条目的类型
|
||||
released: TiddlyWiki 的发布日期
|
||||
revision: 条目存放于服务器中的修订版本
|
||||
source: 条目的网址
|
||||
subtitle: 一个 wizard 的副标题
|
||||
subtitle: 互动窗口的副标题
|
||||
tags: 条目的标签清单
|
||||
text: 条目的内文
|
||||
throttle.refresh: 如果存在,则限制此条目的刷新
|
||||
|
||||
@@ -13,7 +13,7 @@ dependents: 插件的相依插件列表
|
||||
description: 插件的說明、描述
|
||||
draft.of: 草稿條目,包含條目的標題、標籤、欄位 ...
|
||||
draft.title: 草稿條目的標題
|
||||
footer: wizard 的註腳
|
||||
footer: 互動視窗的註腳
|
||||
hide-body: 若設定為 ''yes'',檢視範本將隱藏條目的主體
|
||||
icon: 條目的標題含有與條目關聯的圖示
|
||||
library: 若設定為 ''yes'',表示條目應該被儲存為一個 JavaScript 程式庫
|
||||
@@ -28,7 +28,7 @@ plugin-type: 套件條目的類型
|
||||
released: TiddlyWiki 的釋出日期
|
||||
revision: 條目存放於伺服器中的修訂版本
|
||||
source: 條目的網址
|
||||
subtitle: 一個 wizard 的副標題
|
||||
subtitle: 互動視窗的副標題
|
||||
tags: 條目的標籤清單
|
||||
text: 條目的內文
|
||||
throttle.refresh: 如果存在,則限制此條目的刷新
|
||||
|
||||
@@ -186,6 +186,10 @@ function CodeMirrorEngine(options) {
|
||||
return false;
|
||||
});
|
||||
this.cm.on("keydown",function(cm,event) {
|
||||
if ($tw.keyboardManager.handleKeydownEvent(event, {onlyPriority: true})) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return self.widget.handleKeydownEvent.call(self.widget,event);
|
||||
});
|
||||
this.cm.on("focus",function(cm,event) {
|
||||
|
||||
@@ -12,7 +12,7 @@ The main module of the Jasmine test plugin for TiddlyWiki5
|
||||
/*global $tw: true */
|
||||
"use strict";
|
||||
|
||||
var TEST_TIDDLER_FILTER = "[type[application/javascript]tag[$:/tags/test-spec]]";
|
||||
var TEST_TIDDLER_FILTER = "[all[tiddlers+shadows]type[application/javascript]tag[$:/tags/test-spec]]";
|
||||
|
||||
exports.name = "jasmine";
|
||||
// Ensure this startup module is executed in the right order.
|
||||
|
||||
93
plugins/tiddlywiki/jasmine/run-wiki-based-tests.js
Normal file
93
plugins/tiddlywiki/jasmine/run-wiki-based-tests.js
Normal file
@@ -0,0 +1,93 @@
|
||||
/*\
|
||||
title: $:/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js
|
||||
type: application/javascript
|
||||
tags: [[$:/tags/test-spec]]
|
||||
|
||||
Tests the wiki based tests
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var TEST_WIKI_TIDDLER_FILTER = "[type[text/vnd.tiddlywiki-multiple]tag[$:/tags/wiki-test-spec]]";
|
||||
|
||||
var widget = require("$:/core/modules/widgets/widget.js");
|
||||
|
||||
describe("Wiki-based tests", function() {
|
||||
|
||||
// Step through the test tiddlers
|
||||
var tests = $tw.wiki.filterTiddlers(TEST_WIKI_TIDDLER_FILTER);
|
||||
$tw.utils.each(tests,function(title) {
|
||||
var tiddler = $tw.wiki.getTiddler(title);
|
||||
it(tiddler.fields.title + ": " + tiddler.fields.description, function() {
|
||||
// Add our tiddlers
|
||||
var wiki = new $tw.Wiki();
|
||||
wiki.addTiddlers(readMultipleTiddlersTiddler(title));
|
||||
// Complain if we don't have the ouput and expected results
|
||||
if(!wiki.tiddlerExists("Output")) {
|
||||
throw "Missing 'Output' tiddler";
|
||||
}
|
||||
if(!wiki.tiddlerExists("ExpectedResult")) {
|
||||
throw "Missing 'ExpectedResult' tiddler";
|
||||
}
|
||||
// Construct the widget node
|
||||
var text = "{{Output}}\n\n";
|
||||
var widgetNode = createWidgetNode(parseText(text,wiki),wiki);
|
||||
// Render the widget node to the DOM
|
||||
var wrapper = renderWidgetNode(widgetNode);
|
||||
// Clear changes queue
|
||||
wiki.clearTiddlerEventQueue();
|
||||
// Run the actions if provided
|
||||
if(wiki.tiddlerExists("Actions")) {
|
||||
widgetNode.invokeActionString(wiki.getTiddlerText("Actions"));
|
||||
refreshWidgetNode(widgetNode,wrapper);
|
||||
}
|
||||
// Test the rendering
|
||||
expect(wrapper.innerHTML).toBe(wiki.getTiddlerText("ExpectedResult"));
|
||||
});
|
||||
});
|
||||
|
||||
function readMultipleTiddlersTiddler(title) {
|
||||
var rawTiddlers = $tw.wiki.getTiddlerText(title).split("\n+\n");
|
||||
var tiddlers = [];
|
||||
$tw.utils.each(rawTiddlers,function(rawTiddler) {
|
||||
var fields = Object.create(null),
|
||||
split = rawTiddler.split(/\r?\n\r?\n/mg);
|
||||
if(split.length >= 1) {
|
||||
fields = $tw.utils.parseFields(split[0],fields);
|
||||
}
|
||||
if(split.length >= 2) {
|
||||
fields.text = split.slice(1).join("\n\n");
|
||||
}
|
||||
tiddlers.push(fields);
|
||||
});
|
||||
return tiddlers;
|
||||
}
|
||||
|
||||
function createWidgetNode(parser,wiki) {
|
||||
return wiki.makeWidget(parser);
|
||||
}
|
||||
|
||||
function parseText(text,wiki,options) {
|
||||
return wiki.parseText("text/vnd.tiddlywiki",text,options);
|
||||
}
|
||||
|
||||
function renderWidgetNode(widgetNode) {
|
||||
$tw.fakeDocument.setSequenceNumber(0);
|
||||
var wrapper = $tw.fakeDocument.createElement("div");
|
||||
widgetNode.render(wrapper,null);
|
||||
// console.log(require("util").inspect(wrapper,{depth: 8}));
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
function refreshWidgetNode(widgetNode,wrapper) {
|
||||
widgetNode.refresh(widgetNode.wiki.changedTiddlers,wrapper);
|
||||
// console.log(require("util").inspect(wrapper,{depth: 8}));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})();
|
||||
@@ -290,6 +290,11 @@ kbd {
|
||||
color: <<colour selection-foreground>>;
|
||||
}
|
||||
|
||||
.tc-inline-style {
|
||||
background: <<colour highlight-background>>;
|
||||
color: <<colour highlight-foreground>>;
|
||||
}
|
||||
|
||||
form.tc-form-inline {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user