1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-23 03:14:40 +00:00

Compare commits

..

2 Commits

Author SHA1 Message Date
jeremy@jermolene.com
418aab50a5 Adjust release version number
Just in case we decide to make a release before we merge #6666
2022-09-02 18:12:25 +01:00
jeremy@jermolene.com
f82d15e55f First commit
Cherry-picked from #6666
2022-09-02 18:01:55 +01:00
102 changed files with 394 additions and 1107 deletions

1
.gitignore vendored
View File

@@ -1,6 +1,5 @@
.DS_Store
.c9/
.vscode/
tmp/
output/
node_modules/

View File

@@ -1230,16 +1230,13 @@ $tw.Wiki = function(options) {
this.getTiddler = function(title) {
if(title) {
var t = tiddlers[title];
if(t !== undefined) {
if(t instanceof $tw.Tiddler) {
return t;
} else {
var s = shadowTiddlers[title];
if(s !== undefined) {
return s.tiddler;
}
} else if(title !== undefined && shadowTiddlers[title]) {
return shadowTiddlers[title].tiddler;
}
return undefined;
}
return undefined;
};
// Get an array of all tiddler titles
@@ -2419,7 +2416,7 @@ $tw.boot.initStartup = function(options) {
$tw.utils.registerFileType("application/epub+zip","base64",".epub");
$tw.utils.registerFileType("application/octet-stream","base64",".octet-stream");
// Create the wiki store for the app
$tw.wiki = new $tw.Wiki($tw.safeMode && {enableIndexers: []});
$tw.wiki = new $tw.Wiki();
// Install built in tiddler fields modules
$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap("tiddlerfield");
// Install the tiddler deserializer modules

View File

@@ -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 modal
footer: The footer text for a wizard
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 modal
subtitle: The subtitle text for a wizard
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

View File

@@ -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,handlerMethod: "handleKeydownEvent"},
{name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"},
{name: "focus",handlerObject: this,handlerMethod: "handleFocusEvent"}
]);
// Add drag and drop event listeners if fileDrop is enabled
@@ -192,17 +192,6 @@ 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
*/

View File

@@ -12,9 +12,6 @@ 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
@@ -331,7 +328,7 @@ exports.compileFilter = function(filterString) {
})());
});
// Return a function that applies the operations to a source iterator of tiddler titles
var fnMeasured = $tw.perf.measure("filter: " + filterString,function filterFunction(source,widget) {
var compiled = $tw.perf.measure("filter: " + filterString,function filterFunction(source,widget) {
if(!source) {
source = self.each;
} else if(typeof source === "object") { // Array or hashmap
@@ -341,15 +338,9 @@ exports.compileFilter = function(filterString) {
widget = $tw.rootWidget;
}
var results = new $tw.utils.LinkedList();
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;
$tw.utils.each(operationFunctions,function(operationFunction) {
operationFunction(results,source,widget);
});
return results.toArray();
});
if(this.filterCacheCount >= 2000) {
@@ -359,9 +350,9 @@ exports.compileFilter = function(filterString) {
this.filterCache = Object.create(null);
this.filterCacheCount = 0;
}
this.filterCache[filterString] = fnMeasured;
this.filterCache[filterString] = compiled;
this.filterCacheCount++;
return fnMeasured;
return compiled;
};
})();

View File

@@ -26,23 +26,11 @@ BacklinksIndexer.prototype.rebuild = function() {
}
BacklinksIndexer.prototype._getLinks = function(tiddler) {
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);
var parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});
if(parser) {
return this.wiki.extractLinks(parser.tree);
}
return [];
}
BacklinksIndexer.prototype.update = function(updateDescriptor) {

View File

@@ -141,7 +141,6 @@ 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");
@@ -319,23 +318,12 @@ 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;
}
};
/*
event: the keyboard event object
options:
onlyPriority: true if only priority global shortcuts should be invoked
*/
KeyboardManager.prototype.handleKeydownEvent = function(event, options) {
options = options || {};
KeyboardManager.prototype.handleKeydownEvent = function(event) {
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];

View File

@@ -41,6 +41,9 @@ exports.parse = function() {
var node = {
type: "element",
tag: "span",
attributes: {
"class": {type: "string", value: "tc-inline-style"}
},
children: tree
};
if(classString) {
@@ -49,9 +52,6 @@ exports.parse = function() {
if(stylesString) {
$tw.utils.addAttributeToParseTreeNode(node,"style",stylesString);
}
if(!classString && !stylesString) {
$tw.utils.addClassToParseTreeNode(node,"tc-inline-style");
}
return [node];
};

View File

@@ -116,7 +116,7 @@ WikiParser.prototype.loadRemoteTiddler = function(url) {
*/
WikiParser.prototype.setupRules = function(proto,configPrefix) {
var self = this;
if(!$tw.safeMode) {
if(!$tw.safemode) {
$tw.utils.each(proto,function(object,name) {
if(self.wiki.getTiddlerText(configPrefix + name,"enable") !== "enable") {
delete proto[name];

View File

@@ -42,7 +42,7 @@ var TW_TextNode = function(text) {
this.textContent = text + "";
};
Object.setPrototypeOf(TW_TextNode,TW_Node.prototype);
TW_TextNode.prototype = Object.create(TW_Node.prototype);
Object.defineProperty(TW_TextNode.prototype, "nodeType", {
get: function() {
@@ -67,7 +67,7 @@ var TW_Element = function(tag,namespace) {
this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml";
};
Object.setPrototypeOf(TW_Element,TW_Node.prototype);
TW_Element.prototype = Object.create(TW_Node.prototype);
Object.defineProperty(TW_Element.prototype, "style", {
get: function() {

View File

@@ -48,9 +48,7 @@ Logger.prototype.log = function(/* args */) {
this.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);
}
if(console !== undefined && console.log !== undefined) {
var logMessage = [$tw.utils.terminalColour(this.colour) + this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0));
logMessage[logMessage.length-1] += $tw.utils.terminalColour();
return Function.apply.call(console.log, console, logMessage);
return Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + ":"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));
}
}
};

View File

@@ -12,26 +12,12 @@ 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 = typeof name === "object" ? name : {name: name, type: "string", value: value};
name = attribute.name;
var attribute = {name: name, type: "string", value: value};
node.attributes = node.attributes || {};
node.orderedAttributes = node.orderedAttributes || [];
node.attributes[name] = attribute;
var foundIndex = -1;
$tw.utils.each(node.orderedAttributes,function(attr,index) {
if(attr.name === name) {
foundIndex = index;
}
});
if(foundIndex === -1) {
if(node.orderedAttributes) {
node.orderedAttributes.push(attribute);
} else {
node.orderedAttributes[foundIndex] = attribute;
}
};
@@ -65,8 +51,10 @@ 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;
node.orderedAttributes = node.orderedAttributes || [];
node.orderedAttributes.push(attribute);
if(node.orderedAttributes) {
// If there are orderedAttributes, we've got to add them there too.
node.orderedAttributes.push(attribute);
}
}
if(attribute.type === "string") {
if(attribute.value !== "") {
@@ -86,8 +74,10 @@ exports.addStyleToParseTreeNode = function(node,name,value) {
if(!attribute) {
attribute = {name: "style", type: "string", value: ""};
node.attributes.style = attribute;
node.orderedAttributes = node.orderedAttributes || [];
node.orderedAttributes.push(attribute);
if(node.orderedAttributes) {
// If there are orderedAttributes, we've got to add them there too.
node.orderedAttributes.push(attribute);
}
}
if(attribute.type === "string") {
attribute.value += name + ":" + value + ";";

View File

@@ -66,14 +66,14 @@ CheckboxWidget.prototype.render = function(parent,nextSibling) {
CheckboxWidget.prototype.getValue = function() {
var tiddler = this.wiki.getTiddler(this.checkboxTitle);
if(tiddler || this.checkboxFilter) {
if(tiddler && this.checkboxTag) {
if(this.checkboxTag) {
if(this.checkboxInvertTag === "yes") {
return !tiddler.hasTag(this.checkboxTag);
} else {
return tiddler.hasTag(this.checkboxTag);
}
}
if(tiddler && (this.checkboxField || this.checkboxIndex)) {
if(this.checkboxField || this.checkboxIndex) {
// Same logic applies to fields and indexes
var value;
if(this.checkboxField) {
@@ -206,18 +206,11 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) {
}
// Set the list field (or index) if specified
if(this.checkboxListField || this.checkboxListIndex) {
var fieldContents, listContents, oldPos, newPos;
var listContents, oldPos, newPos;
if(this.checkboxListField) {
fieldContents = tiddler ? tiddler.fields[this.checkboxListField] : undefined;
listContents = tiddler.getFieldList(this.checkboxListField);
} else {
fieldContents = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxListIndex);
}
if($tw.utils.isArray(fieldContents)) {
// Make a copy so we can modify it without changing original that's refrenced elsewhere
listContents = fieldContents.slice(0);
} else {
listContents = $tw.utils.parseStringArray(fieldContents) || [];
// No need to copy since parseStringArray returns a fresh array, not refrenced elsewhere
listContents = $tw.utils.parseStringArray(this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxListIndex) || "") || [];
}
oldPos = notValue ? listContents.indexOf(notValue) : -1;
newPos = value ? listContents.indexOf(value) : -1;

View File

@@ -1,63 +0,0 @@
/*\
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;
})();

View File

@@ -1,108 +0,0 @@
/*\
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;
})();

View File

@@ -39,10 +39,7 @@ Compute the internal state of the widget
ImportVariablesWidget.prototype.execute = function(tiddlerList) {
var widgetPointer = this;
// Got to flush all the accumulated variables
this.variables = Object.create(null);
if(this.parentWidget) {
Object.setPrototypeOf(this.variables,this.parentWidget.variables);
}
this.variables = new this.variablesConstructor();
// Get our parameters
this.filter = this.getAttribute("filter");
// Compute the filter

View File

@@ -53,10 +53,6 @@ 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);

View File

@@ -51,9 +51,11 @@ LetWidget.prototype.computeAttributes = function() {
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
var value = self.computeAttribute(attribute),
name = attribute.name;
// Now that it's prepped, we're allowed to look this variable up
// when defining later variables
self.currentValueFor[name] = value;
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;
}
});
// Run through again, setting variables and looking for differences
$tw.utils.each(this.currentValueFor,function(value,name) {

View File

@@ -175,11 +175,6 @@ 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();

View File

@@ -70,9 +70,11 @@ TranscludeWidget.prototype.execute = function() {
// Check for recursion
if(parser) {
if(this.parentWidget && this.parentWidget.hasVariable("transclusion",recursionMarker)) {
parseTreeNodes = [{type: "error", attributes: {
"$message": {type: "string", value: $tw.language.getString("Error/RecursiveTransclusion")}
}}];
parseTreeNodes = [{type: "element", tag: "span", attributes: {
"class": {type: "string", value: "tc-error"}
}, children: [
{type: "text", text: $tw.language.getString("Error/RecursiveTransclusion")}
]}];
}
}
// Construct the child widgets

View File

@@ -12,9 +12,6 @@ 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
@@ -41,10 +38,9 @@ Widget.prototype.initialise = function(parseTreeNode,options) {
this.parseTreeNode = parseTreeNode;
this.wiki = options.wiki;
this.parentWidget = options.parentWidget;
this.variables = Object.create(null);
if(this.parentWidget) {
Object.setPrototypeOf(this.variables,this.parentWidget.variables);
}
this.variablesConstructor = function() {};
this.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};
this.variables = new this.variablesConstructor();
this.document = options.document;
this.attributes = {};
this.children = [];
@@ -361,20 +357,6 @@ 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
*/
@@ -382,29 +364,21 @@ Widget.prototype.makeChildWidgets = function(parseTreeNodes,options) {
options = options || {};
this.children = [];
var self = this;
// 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));
});
}
// 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));
});
};
/*

View File

@@ -22,8 +22,7 @@ Adds the following properties to the wiki object:
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js"),
LinkWidget = require("$:/core/modules/widgets/link.js").link;
var widget = require("$:/core/modules/widgets/widget.js");
var USER_NAME_TITLE = "$:/status/UserName",
TIMESTAMP_DISABLE_TITLE = "$:/config/TimestampDisable";
@@ -514,29 +513,6 @@ 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
*/
@@ -545,10 +521,11 @@ 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 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);
var parser = self.parseTiddler(title);
if(parser) {
return self.extractLinks(parser.tree);
}
return [];
});
};

View File

@@ -34,8 +34,6 @@ 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

View File

@@ -34,8 +34,6 @@ 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

View File

@@ -34,8 +34,6 @@ 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

View File

@@ -34,8 +34,6 @@ 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>>

View File

@@ -34,8 +34,6 @@ 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>>

View File

@@ -32,8 +32,6 @@ 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>>

View File

@@ -36,8 +36,6 @@ 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

View File

@@ -40,8 +40,6 @@ 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

View File

@@ -41,8 +41,6 @@ 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

View File

@@ -41,8 +41,6 @@ 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

View File

@@ -34,8 +34,6 @@ 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

View File

@@ -131,8 +131,6 @@ 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:

View File

@@ -35,8 +35,6 @@ 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

View File

@@ -35,8 +35,6 @@ 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

View File

@@ -34,8 +34,6 @@ 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)

View File

@@ -34,8 +34,6 @@ 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)

View File

@@ -43,8 +43,6 @@ 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>>

View File

@@ -42,8 +42,6 @@ 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

View File

@@ -18,7 +18,7 @@ tc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$
<$navigator story="$:/StoryList" history="$:/HistoryList">
<$transclude tiddler="$:/core/ui/ViewTemplate/body" mode="block"/>
<$transclude mode="block"/>
</$navigator>

View File

@@ -2,5 +2,11 @@ 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
<$action-sendmessage $message="tm-new-tiddler" type={{{ [{$:/config/NewImageType}addprefix[image/]] }}}/>
<$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>

View File

@@ -5,6 +5,6 @@ caption: {{$:/language/EditTemplate/Body/Preview/Type/Output}}
\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]] [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!has[draft.of]]
<$set name="tv-tiddler-preview" value="yes">
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateBodyFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]] }}} />
<$transclude />
</$set>

View File

@@ -0,0 +1,33 @@
created: 20160504080001125
modified: 20160504080318928
title: $:/core/ui/TagTemplate
type: text/vnd.tiddlywiki
\define tag-styles()
background-color:$(backgroundColor)$;
fill:$(foregroundColor)$;
color:$(foregroundColor)$;
\end
\define tag-body-inner(colour,fallbackTarget,colourA,colourB)
<$set name="foregroundColor" value=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">>>
<$set name="backgroundColor" value="""$colour$""">
<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-tag-label" style=<<tag-styles>>>
<$transclude tiddler={{!!icon}}/> <$view field="fr-title"><$view field="title" format="text" /></$view>
</$button>
<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes"><div class="tc-drop-down"><$transclude tiddler="$:/core/ui/ListItemTemplate"/>
<hr>
<$list filter="[all[current]tagging[]]" template="$:/core/ui/ListItemTemplate"/>
</div>
</$reveal>
</$set>
</$set>
\end
\define tag-body(colour,palette)
<span class="tc-tag-list-item">
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>
</span>
\end
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/>

View File

@@ -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 style="font-size:1.5em;">&#9888;</span> Attention&nbsp;:<br> Ne faites pas comme ça !</td>
<td><span class="tc-inline-style" style="font-size:1.5em;">&#9888;</span> Attention&nbsp;:<br> Ne faites pas comme ça !</td>
<td>
$eg$

View File

@@ -1,113 +0,0 @@
created: 20220830224607117
modified: 20220830224638865
tags: $:/tags/Macro
title: $:/core/macros/list
\define list-links(filter,type:"ul",subtype:"li",class:"",emptyMessage)
\whitespace trim
<$type$ class="$class$">
<$list filter="$filter$" emptyMessage=<<__emptyMessage__>>>
<$subtype$>
<$link to={{!!title}}>
<$let tv-wikilinks="no">
<$transclude field="caption">
<$view field="title"/>
</$transclude>
</$let>
</$link>
</$subtype$>
</$list>
</$type$>
\end
\define list-links-draggable-drop-actions()
<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore<actionTiddler>,<currentTiddler>]"/>
\end
\define list-links-draggable(tiddler,field:"list",emptyMessage,type:"ul",subtype:"li",class:"",itemTemplate)
\whitespace trim
<span class="tc-links-draggable-list">
<$vars targetTiddler="""$tiddler$""" targetField="""$field$""">
<$type$ class="$class$">
<$list filter="[list[$tiddler$!!$field$]]" emptyMessage=<<__emptyMessage__>>>
<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""" enable=<<tv-enable-drag-and-drop>>>
<div class="tc-droppable-placeholder"/>
<div>
<$transclude tiddler="""$itemTemplate$""">
<$link to={{!!title}}>
<$let tv-wikilinks="no">
<$transclude field="caption">
<$view field="title"/>
</$transclude>
</$let>
</$link>
</$transclude>
</div>
</$droppable>
</$list>
<$tiddler tiddler="">
<$droppable actions=<<list-links-draggable-drop-actions>> tag="div" enable=<<tv-enable-drag-and-drop>>>
<div class="tc-droppable-placeholder">
{{$:/core/images/blank}}
</div>
<div style="height:0.5em;"/>
</$droppable>
</$tiddler>
</$type$>
</$vars>
</span>
\end
\define list-tagged-draggable-drop-actions(tag)
\whitespace trim
<!-- Save the current ordering of the tiddlers with this tag -->
<$set name="order" filter="[<__tag__>tagging[]]">
<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->
<$list filter="[<__tag__>tagging[]]">
<$action-deletefield $field="list-before"/>
<$action-deletefield $field="list-after"/>
</$list>
<!-- Save the new order to the Tag Tiddler -->
<$action-listops $tiddler=<<__tag__>> $field="list" $filter="+[enlist<order>] +[insertbefore<actionTiddler>,<currentTiddler>]"/>
<!-- Make sure the newly added item has the right tag -->
<!-- Removing this line makes dragging tags within the dropdown work as intended -->
<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->
<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->
<$list filter="[<actionTiddler>!contains:tags<__tag__>]">
<$fieldmangler tiddler=<<actionTiddler>>>
<$action-sendmessage $message="tm-add-tag" $param=<<__tag__>>/>
</$fieldmangler>
</$list>
</$set>
\end
\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"")
\whitespace trim
<span class="tc-tagged-draggable-list">
<$set name="tag" value=<<__tag__>>>
<$list filter="[<__tag__>tagging[]$subFilter$]" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>
<$elementTag$ class="tc-menu-list-item">
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>>
<$elementTag$ class="tc-droppable-placeholder"/>
<$elementTag$>
<$transclude tiddler="""$itemTemplate$""">
<$link to={{!!title}}>
<$view field="fr-title">
<$view field="title"/>
</$view>
</$link>
</$transclude>
</$elementTag$>
</$droppable>
</$elementTag$>
</$list>
<$tiddler tiddler="">
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>>
<$elementTag$ class="tc-droppable-placeholder"/>
<$elementTag$ style="height:0.5em;">
</$elementTag$>
</$droppable>
</$tiddler>
</$set>
</span>
\end

View File

@@ -1,39 +0,0 @@
created: 20220830190922373
modified: 20220830191056761
tags: $:/tags/Macro
title: $:/core/macros/tag
\define tag-pill-styles()
background-color:$(backgroundColor)$;
fill:$(foregroundColor)$;
color:$(foregroundColor)$;
\end
<!-- This has no whitespace trim to avoid modifying $actions$. Closing tags omitted for brevity. -->
\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)
<$vars
foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">>
backgroundColor="""$colour$"""
><$element-tag$
$element-attributes$
class="tc-tag-label tc-btn-invisible"
style=<<tag-pill-styles>>
>$actions$<$transclude tiddler="""$icon$"""/><$view tiddler=<<__tag__>> field="fr-title" format="text"><$view tiddler=<<__tag__>> field="title" format="text" /></$view></$element-tag$>
\end
\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)
<$macrocall $name="tag-pill-inner" tag=<<__tag__>> icon="""$icon$""" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
\end
\define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"")
\whitespace trim
<span class="tc-tag-list-item" data-tag-title=<<__tag__>>>
<$let currentTiddler=<<__tag__>>>
<$macrocall $name="tag-pill-body" tag=<<__tag__>> icon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] }}} colour={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
</$let>
</span>
\end
\define tag(tag)
{{$tag$||$:/core/ui/TagTemplate}}
\end

View File

@@ -1,25 +0,0 @@
created: 20220830194301860
modified: 20220830194658750
title: $:/core/ui/TagPickerTagTemplate
\whitespace trim
<$button class=<<button-classes>> tag="a" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>
<$list filter="[<saveTiddler>minlength[1]]">
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter="[<tag>]"/>
</$list>
<$set name="currentTiddlerCSSEscaped" value={{{ [<saveTiddler>escapecss[]] }}}>
<$action-sendmessage $message="tm-focus-selector" $param=<<get-tagpicker-focus-selector>> preventScroll="true"/>
</$set>
<<delete-tag-state-tiddlers>>
<$list filter="[<refreshTitle>minlength[1]]">
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
</$list>
<<actions>>
<$set name="backgroundColor" value={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}}>
<$wikify name="foregroundColor" text="""<$macrocall $name="contrastcolour" target=<<backgroundColor>> fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>""">
<span class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>>
{{||$:/core/ui/TiddlerIcon}}<$view field="fr-title" format="text"><$view field="title" format="text"/></$view>
</span>
</$wikify>
</$set>
</$button>

View File

@@ -1,6 +1,6 @@
caption: 5.2.4
created: 20220924141149286
modified: 20220924141149286
created: 20220802100223020
modified: 20220802100223020
tags: ReleaseNotes
title: Release 5.2.4
type: text/vnd.tiddlywiki
@@ -11,17 +11,9 @@ type: text/vnd.tiddlywiki
*
! Translation improvement
! Translation improvements
Improvements to the following translations:
* Chinese
* Japanese
Improvements to the translation features of TiddlyWiki:
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6882">> the [[Translators Edition|Translate TiddlyWiki into your language]] to add an option to display the original English text underneath the text area
* <<.link-badge-updated "https://github.com/Jermolene/TiddlyWiki5/pull/6933">> "delete" button text in $:/AdvancedSearch so that it is translatable
*
! Accessibility Improvements
@@ -29,14 +21,11 @@ Improvements to the translation features of TiddlyWiki:
! Usability Improvements
* <<.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
@@ -44,11 +33,7 @@ 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
@@ -60,29 +45,15 @@ 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
""">>

View File

@@ -1,15 +0,0 @@
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>

View File

@@ -1,14 +0,0 @@
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>

View File

@@ -1,14 +0,0 @@
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>

View File

@@ -1,14 +0,0 @@
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>

View File

@@ -1,13 +0,0 @@
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>

View File

@@ -234,38 +234,6 @@ Tests the checkbox widget thoroughly.
},
];
// https://github.com/Jermolene/TiddlyWiki5/issues/6871
const listModeTestsWithListField = (
listModeTests
.filter(data => data.widgetText.includes("listField='colors'"))
.map(data => {
const newData = {
...data,
tiddlers: data.tiddlers.map(tiddler => ({...tiddler, list: tiddler.colors, colors: undefined})),
widgetText: data.widgetText.replace("listField='colors'", "listField='list'"),
expectedChange: {
"Colors": { list: data.expectedChange.Colors.colors.split(' ') }
},
}
return newData;
})
);
const listModeTestsWithTagsField = (
listModeTests
.filter(data => data.widgetText.includes("listField='colors'"))
.map(data => {
const newData = {
...data,
tiddlers: data.tiddlers.map(tiddler => ({...tiddler, tags: tiddler.colors, colors: undefined})),
widgetText: data.widgetText.replace("listField='colors'", "listField='tags'"),
expectedChange: {
"Colors": { tags: data.expectedChange.Colors.colors.split(' ') }
},
}
return newData;
})
);
const indexListModeTests = listModeTests.map(data => {
const newData = {...data};
const newName = data.testName.replace('list mode', 'index list mode');
@@ -485,8 +453,6 @@ Tests the checkbox widget thoroughly.
const checkboxTestData = fieldModeTests.concat(
indexModeTests,
listModeTests,
listModeTestsWithListField,
listModeTestsWithTagsField,
indexListModeTests,
filterModeTests,
);
@@ -529,7 +495,7 @@ Tests the checkbox widget thoroughly.
for (const fieldName of Object.keys(change)) {
const expectedValue = change[fieldName];
const fieldValue = tiddler.fields[fieldName];
expect(fieldValue).toEqual(expectedValue);
expect(fieldValue).toBe(expectedValue);
}
}
})

View File

@@ -63,22 +63,6 @@ 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>');
});
});
})();

View File

@@ -1,5 +1,5 @@
created: 20220721200137586
modified: 20220819200137586
modified: 20220721200137586
tags: [[Table of Contents]]
title: Code of Conduct
type: text/vnd.tiddlywiki
@@ -17,7 +17,6 @@ These principles guide technical and non-technical decisions, and help contribut
* We recognise that the motivation for sharing and helping is usually for appreciation, and not financial gain, and so we take care to acknowledge and ''thank the people who enrich the community by sharing what they have created''
* While we are united in our interest in TiddlyWiki, we differ in every other conceivable way. We choose to focus on what unites us, and ''avoid unnecessarily mixing contentious topics like religion and politics''
* We treat each other with respect, and start with the assumption that ''others are acting in good faith''
* We avoid discriminatory language
* We try to use our strength as a community to help others
* We avoid responding when angry or upset because we try to de-escalate conflict
* We make sure we critique ideas, not people
@@ -28,6 +27,4 @@ These principles guide technical and non-technical decisions, and help contribut
Our discussions are in English. It is not the first language of many people in the community, nor do we all share the same cultural background and reference points. So we take care to use language that is clear and unambigous, and avoid cultural references or jokes that will not be widely understood.
It is not acceptable to make jokes or other comments that discriminate by race, gender, sexuality, or other protected characteristic.
As an inclusive community, we are committed to making sure that TiddlyWiki is an accessible tool that understands the needs of people with disabilities.

View File

@@ -2,6 +2,4 @@ title: RenderTiddlerCommand
tags: Commands
caption: rendertiddler
<<.deprecated-since "5.1.15" "RenderCommand">>.
{{$:/language/Help/rendertiddler}}

View File

@@ -2,6 +2,4 @@ title: RenderTiddlersCommand
tags: Commands
caption: rendertiddlers
<<.deprecated-since "5.1.15" "RenderCommand">>.
{{$:/language/Help/rendertiddlers}}

View File

@@ -4,6 +4,4 @@ created: 20131218121606089
modified: 20131218121606089
caption: savetiddler
<<.deprecated-since "5.1.15" "SaveCommand">>.
{{$:/language/Help/savetiddler}}

View File

@@ -4,6 +4,4 @@ created: 20140609121606089
modified: 20140609121606089
caption: savetiddlers
<<.deprecated-since "5.1.15" "SaveCommand">>.
{{$:/language/Help/savetiddlers}}

View File

@@ -1,9 +1,9 @@
created: 20141230182901899
modified: 20220226205227090
modified: 20210106151027090
tags: [[Community Editions]] [[Community Plugins]]
title: "GSD5" by Roma Hicks
type: text/vnd.tiddlywiki
url: http://gsd5.tiddlyhost.com/
url: http://gsd5.tiddlyspot.com/
An adaptation of the [[TiddlyWiki powered GTD® system formerly known as MonkeyGTD|http://mgsd.tiddlyspot.com/]] for TiddlyWiki version 5.

View File

@@ -7,8 +7,6 @@ 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]]

View File

@@ -1,12 +1,16 @@
created: 20131129090249275
modified: 20220819041016415
modified: 20200507203622933
tags: [[Working with TiddlyWiki]]
title: GettingStarted
type: text/vnd.tiddlywiki
The easiest way to use ~TiddlyWiki is to sign up for a free account with [[Tiddlyhost|https://tiddlyhost.com/]], an independently run community service. If you find Tiddlyhost useful, please consider [[donation or sponsorship|https://tiddlyhost.com/donate]].
The easiest way to use TiddlyWiki is to sign up for a free account with [[Tiddlyhost]], an independently run community service:
Click here to download an empty copy of ~TiddlyWiki: {{$:/editions/tw5.com/snippets/download-empty-button}}
https://tiddlyhost.com/
If you find Tiddlyhost useful, please consider [[donation or sponsorship|https://tiddlyhost.com/donate]].
Click here to download an empty copy of TiddlyWiki: {{$:/editions/tw5.com/snippets/download-empty-button}}
The next step is to choose a method for saving changes. There's a wide variety of methods available, with different features and limitations. Click on the badge for a method to see more information about it. You can also click on one of the platform filters to restrict the listing to methods that work with that platform.

View File

@@ -1,13 +0,0 @@
created: 20220909094340097
modified: 20220909094340097
title: Hidden Setting: Sync System Tiddlers From Server
tags: [[Hidden Settings]]
<<.from-version "5.1.23">> Determines whether system tiddlers are synced from the server under Node.js. (Note that this is a one-way setting; system tiddlers are always synced //to// the server).
* `no` -- system tiddlers are not synced from the server (default)
* `yes` -- system tiddlers are synced from the server
Engaging sync of system tiddlers means that tiddlers such as $:/StoryList and $:/HistoryList get synced, which can lead to unexpected outcomes when multiple users are connected to the same server at the same time (it means that the story sequence is synced between all the users).
$:/config/SyncSystemTiddlersFromServer

View File

@@ -66,8 +66,6 @@ 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]]

View File

@@ -22,7 +22,7 @@ The new tiddler message is usually generated with the ButtonWidget or ActionSend
! Examples
To make a button that creates new tiddlers tagged "task", create a tiddler called "~TaskTemplate" with that tag, and then make your button like this:
To make a button that creates new tiddlers tagged "task", create a tiddler called "TaskTemplate" with that tag, and then make your button like this:
```
<$button message="tm-new-tiddler" param="TaskTemplate">New Task</$button>

View File

@@ -1,5 +1,5 @@
created: 20140912140651119
modified: 20220812144516626
modified: 20220401151525812
saving-browser: Firefox Chrome Edge [[Internet Explorer]] Safari Opera [[Standalone App]]
saving-os: Windows Mac Linux Android iOS
tags: [[Working with TiddlyWiki]]
@@ -34,7 +34,7 @@ type: text/vnd.tiddlywiki
\end
<$vars stateTiddler=<<qualify "$:/state/gettingstarted">> >
Available methods for saving changes with ~TiddlyWiki:
Available methods for saving changes with TiddlyWiki:
<div class="tc-wrapper-flex">
<div class="tc-saving-sidebar">

View File

@@ -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 style="font-size:1.5em;">&#9888;</span> Warning:<br> Don't do it this way!</td>
<td><span class="tc-inline-style" style="font-size:1.5em;">&#9888;</span> Warning:<br> Don't do it this way!</td>
<td>
$eg$

View File

@@ -1,6 +1,5 @@
code-body: yes
created: 20161008085627406
modified: 20221007122259593
modified: 20220704174221300
tags: $:/tags/Macro
title: $:/editions/tw5.com/version-macros
type: text/vnd.tiddlywiki
@@ -10,5 +9,7 @@ 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> (see <$link to=<<__superseded__>>><$text text=<<__superseded__>>/></$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
\end
<pre><$view field="text"/></pre>

View File

@@ -46,17 +46,21 @@ open the ''example edition'' in a new window
<$macrocall $name="copy-to-clipboard-above-right" src=<<__src__>>/>
<$codeblock code=<<__src__>>/>
```
$src$
```
That renders as:
<$macrocall $name="__src__"/>
$$$text/vnd.tiddlywiki
$src$
$$$
... and the underlying HTML is:
<$wikify name="html" text=<<__src__>> output="html">
<$codeblock code=<<html>>/>
</$wikify>
$$$text/vnd.tiddlywiki>text/html
$src$
$$$
</div>
\end
@@ -65,12 +69,15 @@ That renders as:
<$macrocall $name="copy-to-clipboard-above-right" src=<<__src__>>/>
<$codeblock code=<<__src__>>/>
```
$src$
```
That renders as:
<$macrocall $name="__src__"/>
$$$text/vnd.tiddlywiki
$src$
$$$
</div>
\end

View File

@@ -1,5 +1,5 @@
created: 20181002131215403
modified: 20220909094340097
modified: 2020031109590546
tags: [[WebServer API]]
title: WebServer API: Get All Tiddlers
type: text/vnd.tiddlywiki
@@ -17,8 +17,6 @@ Parameters:
In order to avoid denial of service attacks with malformed filters in the default configuration the only filter that is accepted is the default filter "[all[tiddlers]!is[system]sort[title]]"; attempts to use any other filter will result in an HTTP 403 error.
<<.note "System tiddlers will not be returned by this API unless the [[Hidden Setting: Sync System Tiddlers From Server]] is explicitly switched on by setting $:/config/SyncSystemTiddlersFromServer to `yes`">>
To enable a particular filter, create a tiddler with the title "$:/config/Server/ExternalFilters/" concatenated with the filter text, and the text field set to "yes". For example, the TiddlyWeb plugin includes the following shadow tiddler to enable the filter that it requires:
```

View File

@@ -1,17 +0,0 @@
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 |

View File

@@ -1,29 +0,0 @@
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>'/>

View File

@@ -1,6 +1,5 @@
title: LetWidget
created: 20211028115900000
modified: 20221001094658854
tags: Widgets
caption: let
@@ -13,12 +12,10 @@ caption: let
The content of the <<.wid let>> widget is the scope for the value assigned to the variable.
|!Attribute |!Description |
|//{attributes}// |Each attribute name specifies a variable name. The attribute value is assigned to the variable |
|//{attributes not starting with $}// |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.

View File

@@ -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='[tag[Reference]]'>
<$list filter='[!is[system]]'>
<$view field='title'/>: <$list filter='[all[current]links[]sort[title]]' storyview='pop'>
<$link><$view field='title'/></$link>

View File

@@ -1,6 +1,6 @@
created: 20131205160532119
modified: 20131205160549129
tags: WikiText [[How to apply custom styles]]
tags: WikiText
title: Styles and Classes in WikiText
type: text/vnd.tiddlywiki
caption: Styles and Classes

View File

@@ -2,8 +2,12 @@ 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
@@ -18,114 +22,45 @@ 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
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
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
UnfoldAll/Caption: Desplegar todos
UnfoldAll/Hint: Despliega y muestra el contenido de todos los tiddlers abiertos
FoldOthers/Caption: Comprimir los demás
FoldOthers/Hint: Comprime la vista de todos los tiddlers abiertos excepto este
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
@@ -138,8 +73,20 @@ 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
@@ -150,24 +97,59 @@ 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
@@ -176,16 +158,32 @@ 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/Title: Nombre para mostrar en el menú
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
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

View File

@@ -27,17 +27,10 @@ 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
@@ -198,8 +191,6 @@ 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
@@ -210,10 +201,6 @@ 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
@@ -225,7 +212,3 @@ 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.

View File

@@ -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: Fondo de código preformateado
pre-border: Borde de código preformateado
pre-background: Preformatted code background
pre-border: Preformatted code border
primary: Primario general
select-tag-background: Fondo `<select>`
select-tag-foreground: Primario `<select>`

View File

@@ -1,11 +1,8 @@
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

View File

@@ -3,7 +3,6 @@ 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]]
@@ -14,9 +13,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 ''yes'', indica que el tiddler debe guardarse como librería de JavaScript
library: Si su valor es "Sí", 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.
@@ -33,7 +32,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

View File

@@ -11,10 +11,9 @@ Visita https://tiddlywiki.com/#GettingStarted para más información (en inglés
<div class="tc-control-panel">
|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>>// |
|<$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>>// |
</div>
Consulta más opciones en el [[panel de control|$:/ControlPanel]]

View File

@@ -4,7 +4,6 @@ description:
\define commandTitle()
$:/language/Help/$(command)$
\end
\whitespace trim
```
Uso: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]
```
@@ -13,9 +12,7 @@ Comandos disponibles:
<ul>
<$list filter="[commands[]sort[title]]" variable="command">
<li><$link to=<<commandTitle>>><$macrocall $name="command" $type="text/plain" $output="text/plain"/></$link>:
&#32;
<$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>

View File

@@ -22,6 +22,7 @@ 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")

View File

@@ -31,5 +31,5 @@ Notas:
Ejemplos:
* `--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"
* `--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

View File

@@ -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: Tiddler seleccionado.
Upgrader/Tiddler/Selected: Usuario seleccionado.
Upgrader/Tiddler/Unselected: Tiddler no seleccionado.

View File

@@ -8,14 +8,13 @@ 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 ahora o pulsa ''ESC'' para cancelar
DropMessage: Suéltalo aquí 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

View File

@@ -1,6 +1,5 @@
title: $:/language/SideBar/
Caption: Panel Lateral
All/Caption: Todos
Contents/Caption: Contenido
Drafts/Caption: Borradores

View File

@@ -1,5 +1,5 @@
title: $:/language/Snippets/ListByTag
tags: $:/tags/TextEditor/Snippet
caption: Liste de tiddlers por etiqueta
caption: Liste de tiddlers par etiqueta
<<list-links "[tag[task]sort[title]]">>

View File

@@ -18,8 +18,6 @@ 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

View File

@@ -9,10 +9,9 @@ Zanim zaczniesz zapisywać ważne informacje w swojej ~TiddlyWiki ważne jest,
<div class="tc-control-panel">
|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>>// |
|<$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>>// |
</div>
Przejdź do [[panelu sterowania|$:/ControlPanel]] by zmienić pozostałe opcje.

View File

@@ -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 '.' 'tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[HelloThere]]'` -- renderuje wszystkie tiddlery z tagiem "HelloThere" do pliku JSON o nazwie "tiddlers.json"
* `--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

View File

@@ -8,7 +8,6 @@ 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ć?

View File

@@ -13,7 +13,7 @@ dependents: 插件的相依插件列表
description: 插件的说明、描述
draft.of: 草稿条目,包含条目的标题、标签、栏位 ...
draft.title: 草稿条目的标题
footer: 互动窗口的注脚
footer: wizard 的注脚
hide-body: 若设置为 ''yes'',视图模板将隐藏条目的主体
icon: 条目的标题含有与条目关联的图标
library: 若设置为 ''yes'',表示条目应该被保存为一个 JavaScript 程序库
@@ -28,7 +28,7 @@ plugin-type: 插件条目的类型
released: TiddlyWiki 的发布日期
revision: 条目存放于服务器中的修订版本
source: 条目的网址
subtitle: 互动窗口的副标题
subtitle: 一个 wizard 的副标题
tags: 条目的标签清单
text: 条目的内文
throttle.refresh: 如果存在,则限制此条目的刷新

View File

@@ -13,7 +13,7 @@ dependents: 插件的相依插件列表
description: 插件的說明、描述
draft.of: 草稿條目,包含條目的標題、標籤、欄位 ...
draft.title: 草稿條目的標題
footer: 互動視窗的註腳
footer: wizard 的註腳
hide-body: 若設定為 ''yes'',檢視範本將隱藏條目的主體
icon: 條目的標題含有與條目關聯的圖示
library: 若設定為 ''yes'',表示條目應該被儲存為一個 JavaScript 程式庫
@@ -28,7 +28,7 @@ plugin-type: 套件條目的類型
released: TiddlyWiki 的釋出日期
revision: 條目存放於伺服器中的修訂版本
source: 條目的網址
subtitle: 互動視窗的副標題
subtitle: 一個 wizard 的副標題
tags: 條目的標籤清單
text: 條目的內文
throttle.refresh: 如果存在,則限制此條目的刷新

View File

@@ -497,5 +497,3 @@ Nolan Darilek, @NDarilek, 2022/06/21
Keiichi Shiga (🎈 BALLOON | FU-SEN), @fu-sen. 2022/07/07
Nathaniel Knight, @nathanielknight, 2022/07/26
HuanCheng Bai, @bestony, 2022/09/17

View File

@@ -186,10 +186,6 @@ 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) {

View File

@@ -3,13 +3,121 @@ tags: $:/tags/EditPreview
list-after: $:/core/ui/EditTemplate/body/preview/output
caption: parse tree
\define preview(mode)
<$wikify name="preview-text" text={{!!text}} type={{!!type}} mode="$mode$" output="parsetree">
<pre>
<code>
<$text text=<<preview-text>>/>
</code>
</pre>
\whitespace trim
\procedure preview-node-properties(node)
<$let excludeProperties="text type tag children attributes orderedAttributes">
<$list filter="[<node>jsonindexes[]] -[subfilter<excludeProperties>] +[limit[1]]" variable="ignore">
<table>
<tbody>
<$list filter="[<node>jsonindexes[]] -[subfilter<excludeProperties>] +[sort[]]" variable="index">
<tr>
<td>
<$text text=<<index>>/>
</td>
<td>
<$text text={{{ [<node>jsonget<index>] }}}/>
</td>
</tr>
</$list>
</tbody>
</table>
</$list>
</$let>
\end
\procedure preview-node-attribute-string(attribute)
<$text text={{{ [<attribute>jsonget[value]] }}}/>
\end
\procedure preview-node-attribute-indirect(attribute)
{{<$text text={{{ [<attribute>jsonget[textReference]] }}}/>}}
\end
\procedure preview-node-attribute-macro(attribute)
&lt;&lt;
<$text text={{{ [<attribute>jsonget[value],[name]] }}}/>
<$list filter="[<attribute>jsonindexes[value],[params]]" variable="index">
&nbsp;
<$list filter="[<attribute>jsonget[value],[params],<index>,[name]]" variable="ignore">
<$text text={{{ [<attribute>jsonget[value],[params],<index>,[name]] }}}/>
:
</$list>
<$text text={{{ [<attribute>jsonget[value],[params],<index>,[value]] }}}/>
</$list>
>>
\end
\procedure preview-node-attributes(node)
<$list filter="[<node>jsonindexes[attributes]limit[1]]" variable="ignore">
<table>
<tbody>
<$list filter="[<node>jsonindexes[attributes]sort[]]" variable="index">
<tr>
<td>
<$text text=<<index>>/>
</td>
<td>
<$let type={{{ [<node>jsonget[attributes],<index>,[type]] }}}>
<$transclude $variable={{{ [<type>match[string]then[preview-node-attribute-string]] :else[<type>match[indirect]then[preview-node-attribute-indirect]] :else[<type>match[macro]then[preview-node-attribute-macro]] }}} attribute={{{ [<node>jsonget[attributes],<index>] }}}/>
</$let>
</td>
</tr>
</$list>
</tbody>
</table>
</$list>
\end
\procedure preview-node-children(node)
<div style="padding:4px 4px 0 4px;">
<$transclude $variable="preview-node-properties" node=<<node>>/>
<$transclude $variable="preview-node-attributes" node=<<node>>/>
<$transclude $variable="preview-node-list" nodeList={{{ [<node>jsonget[children]] }}}/>
</div>
\end
\procedure preview-node-title-widget(node)
<div style="border:2px solid red;margin:4px;">
<div style="background:red;color:white;padding:4px;">
<$<$text text={{{ [<node>jsonget[type]] }}}/>>
</div>
<$transclude $variable="preview-node-children" node=<<node>>/>
</div>
\end
\procedure preview-node-title-element(node)
<div style="border:2px solid purple;margin:4px;">
<div style="background:purple;color:white;padding:4px;">
&lt;<$text text={{{ [<node>jsonget[tag]] }}}/>>
</div>
<$transclude $variable="preview-node-children" node=<<node>>/>
</div>
\end
\procedure preview-node-title-text(node)
<div style="border:2px solid green;margin:4px;">
<div style="background:green;color:white;padding:4px;">
<span style="color:#ff0;font-weight:bold;">"</span><span style="white-space:pre-wrap;"><$text text={{{ [<node>jsonget[text]] }}}/></span><span style="color:#ff0;font-weight:bold;">"</span>
</div>
</div>
\end
\procedure preview-node(node)
<$let type={{{ [<node>jsonget[type]] }}}>
<$transclude $variable={{{ [<type>match[element]then[preview-node-title-element]] :else[<type>match[text]then[preview-node-title-text]] :else[[preview-node-title-widget]] }}} node=<<node>>/>
</$let>
\end
\procedure preview-node-list(nodeList)
<$list filter="[<nodeList>jsonindexes[]]" variable="index">
<$transclude $variable="preview-node" node={{{ [<nodeList>jsonget<index>] }}}/>
</$list>
\end
\procedure preview(mode)
<$wikify name="preview-json" text={{!!text}} type={{!!type}} mode=<<mode>> output="parsetree">
<$transclude $variable="preview-node-list" nodeList=<<preview-json>>/>
</$wikify>
\end

View File

@@ -12,7 +12,7 @@ The main module of the Jasmine test plugin for TiddlyWiki5
/*global $tw: true */
"use strict";
var TEST_TIDDLER_FILTER = "[all[tiddlers+shadows]type[application/javascript]tag[$:/tags/test-spec]]";
var TEST_TIDDLER_FILTER = "[type[application/javascript]tag[$:/tags/test-spec]]";
exports.name = "jasmine";
// Ensure this startup module is executed in the right order.

Some files were not shown because too many files have changed in this diff Show More