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