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

Compare commits

...

29 Commits

Author SHA1 Message Date
jeremy@jermolene.com
af709e2662 First commit 2022-10-17 12:22:24 +01:00
jeremy@jermolene.com
c19d6d6328 Merge branch 'tiddlywiki-com' 2022-10-17 12:22:06 +01:00
jeremy@jermolene.com
941c09fae2 ScrollableWidget example shouldn't iterate through all tiddlers 2022-10-17 12:21:34 +01:00
jeremy@jermolene.com
b531984f50 Restore "Add default settings for styled inline SPANs (#6877)"
This reverts commit 6f98edd6bd.
2022-10-16 17:28:36 +01:00
jeremy@jermolene.com
8f079e2d45 Fix handling of orderedattributes when adding classes/styles
Fixes issue referred to in https://github.com/Jermolene/TiddlyWiki5/pull/6877#issuecomment-1277590200
2022-10-16 17:27:46 +01:00
Maurycy Zarzycki
cfd894e6fb allow select widget class to update if it uses a filter and is output changes (#6987)
* allow select widget class to update if it uses a filter and the filter output changes

* rewrite code to be more idiomatic + updates local property
2022-10-15 12:26:21 +01:00
Rob Hoelz
91327c1af0 Use deprecated macro for deprecated commands (#6973)
This just brings the documentation for these commands more inline with
other deprecations, plus offers a link to the recommended alternative
as well as the explanation for deprecation
2022-10-10 16:49:20 +01:00
jeremy@jermolene.com
6f98edd6bd Revert "Add default settings for styled inline SPANs (#6877)" because of failed tests
This reverts commit 23e0eeb556.
2022-10-07 18:43:09 +01:00
Mario Pietsch
23e0eeb556 Add default settings for styled inline SPANs (#6877)
* add default settings for styled inline SPANs

* change color names in palettes and vanilla-base

* change parser behaviour if custom class is used

* tc-inline-style will only be set if no other custom setting is appliead

* Add tests for inline-styles

* add one more test

* remove space after if
2022-10-07 18:05:49 +01:00
Maurycy Zarzycki
f33c7e2aef Allow global keyboard shortcuts to override all other shortcuts by providing a special field (#6735)
* allow global keyboard shortcuts to override all other shortcuts by providing a special field

* rework the global shortcuts taking priority

* replace bool option with options object in KeyboardManager's keydown handler

* update keyboard shortcut documentation to add information about the new priority setting

* add support for priority global keyboard shortcuts to code mirror

* update the feature's docs to point out it was/will be introduced in 5.2.4

* rollback unnecessary change
2022-10-07 17:31:04 +01:00
jeremy@jermolene.com
fc586481a9 Merge branch 'tiddlywiki-com' 2022-10-07 16:57:34 +01:00
jeremy@jermolene.com
09179d2f62 Deprecated macro: update text 2022-10-07 16:57:19 +01:00
jeremy@jermolene.com
d6ff38095b Docs: Fix typo 2022-10-06 10:25:14 +01:00
Maurycy Zarzycki
3bbbe77471 Update Polish translations (#6975)
* add polish translations to changes introduced in two commits:

 * ca762ab7a6
 * a453121e96

* add polish translations to changes introduced in d7b9e6fb02

* add polish translations to changes introduced in 0b1fc8e574
2022-10-05 15:40:23 +01:00
Maurycy Zarzycki
5657dfec0e Add VScode user settings directory to git ignore (#6974) 2022-10-05 14:51:11 +01:00
Bram Chen
31ab6dce77 Update chinese language files (#6972)
* Revise the footer and subtitle texts in Fields.multids
2022-10-03 09:45:30 +01:00
jeremy@jermolene.com
4007610d52 Prefer "modal" over "wizard" in the core
See https://github.com/Jermolene/TiddlyWiki5/discussions/6965#discussioncomment-3754315
2022-10-02 18:59:05 +01:00
jeremy@jermolene.com
fb34df84ed New image shortcut should not add journal tags
Fixes #6968
2022-10-02 18:55:26 +01:00
twMat
79e2e317cf Update Styles and Classes in WikiText.tid (#6969)
Add tag to include this tiddler in the list in the tiddler

https://tiddlywiki.com/prerelease/#How%20to%20apply%20custom%20styles
2022-10-02 17:37:03 +01:00
jeremy@jermolene.com
36896c3db8 Use view template body when opening tiddler in new window 2022-10-02 17:22:48 +01:00
Joe Bordes
82de7c9b1a i18n(ES) update translation with latest master (#6971) 2022-10-02 14:19:26 +01:00
jeremy@jermolene.com
1841b0fa4f Fix tests 2022-10-01 14:05:13 +01:00
jeremy@jermolene.com
47f80339b2 Update transclude widget to use error widget
Missed off #6970
2022-10-01 10:15:14 +01:00
Jeremy Ruston
db6abb9703 Improve recursion detection for transclusion and filters (#6970) 2022-10-01 10:13:40 +01:00
jeremy@jermolene.com
8d1e6b5d23 Test plugin should run tests in shadow tiddlers
Missed off #6961, preventing the tests introduced there from running
2022-10-01 10:03:50 +01:00
jeremy@jermolene.com
1df4c29d73 Relax the restriction on the let widget being unable to create variables starting with a dollar 2022-10-01 09:47:26 +01:00
jeremy@jermolene.com
81e4745c56 Update release note contributors list 2022-09-24 14:23:36 +01:00
jeremy@jermolene.com
87597ea273 Update release note 2022-09-24 14:20:30 +01:00
Jeremy Ruston
4e9267ea58 Introduce genesis widget (#6961)
* Initial Commit

* Fix version number

* Fix docs date
2022-09-24 14:07:42 +01:00
80 changed files with 795 additions and 192 deletions

1
.gitignore vendored
View File

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

View File

@@ -13,7 +13,7 @@ dependents: For a plugin, lists the dependent plugin titles
description: The descriptive text for a plugin, or a modal dialogue
draft.of: For draft tiddlers, contains the title of the tiddler of which this is a draft
draft.title: For draft tiddlers, contains the proposed new title of the tiddler
footer: The footer text for a 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

View File

@@ -87,7 +87,7 @@ function FramedEngine(options) {
$tw.utils.addEventListeners(this.domNode,[
{name: "click",handlerObject: this,handlerMethod: "handleClickEvent"},
{name: "input",handlerObject: this,handlerMethod: "handleInputEvent"},
{name: "keydown",handlerObject: this.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
*/

View File

@@ -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;
};
})();

View File

@@ -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) {

View File

@@ -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];

View File

@@ -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];
};

View File

@@ -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 + ";";

View 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;
})();

View 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;
})();

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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();

View File

@@ -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

View File

@@ -12,6 +12,9 @@ Widget base class
/*global $tw: false */
"use strict";
/* Maximum permitted depth of the widget tree for recursion detection */
var MAX_WIDGET_TREE_DEPTH = 1000;
/*
Create a widget object for a parse tree node
parseTreeNode: reference to the parse tree node to be rendered
@@ -358,6 +361,20 @@ Widget.prototype.assignAttributes = function(domNode,options) {
}
};
/*
Get the number of ancestor widgets for this widget
*/
Widget.prototype.getAncestorCount = function() {
if(this.ancestorCount === undefined) {
if(this.parentWidget) {
this.ancestorCount = this.parentWidget.getAncestorCount() + 1;
} else {
this.ancestorCount = 0;
}
}
return this.ancestorCount;
};
/*
Make child widgets correspondng to specified parseTreeNodes
*/
@@ -365,21 +382,29 @@ Widget.prototype.makeChildWidgets = function(parseTreeNodes,options) {
options = options || {};
this.children = [];
var self = this;
// Create set variable widgets for each variable
$tw.utils.each(options.variables,function(value,name) {
var setVariableWidget = {
type: "set",
attributes: {
name: {type: "string", value: name},
value: {type: "string", value: value}
},
children: parseTreeNodes
};
parseTreeNodes = [setVariableWidget];
});
$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {
self.children.push(self.makeChildWidget(childNode));
});
// Check for too much recursion
if(this.getAncestorCount() > MAX_WIDGET_TREE_DEPTH) {
this.children.push(this.makeChildWidget({type: "error", attributes: {
"$message": {type: "string", value: $tw.language.getString("Error/RecursiveTransclusion")}
}}));
} else {
// Create set variable widgets for each variable
$tw.utils.each(options.variables,function(value,name) {
var setVariableWidget = {
type: "set",
attributes: {
name: {type: "string", value: name},
value: {type: "string", value: value}
},
children: parseTreeNodes
};
parseTreeNodes = [setVariableWidget];
});
// Create the child widgets
$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {
self.children.push(self.makeChildWidget(childNode));
});
}
};
/*

View File

@@ -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);
});
};

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>>

View File

@@ -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>>

View File

@@ -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>>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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>>

View File

@@ -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

View File

@@ -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>

View File

@@ -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/]] }}}/>

View File

@@ -117,7 +117,7 @@ C'est un exemple de tiddler. Voir [[Macros Table des matières (Exemples)|Table-
<table class="doc-bad-example">
<tbody>
<tr class="evenRow">
<td><span class="tc-inline-style" style="font-size:1.5em;">&#9888;</span> Attention&nbsp;:<br> Ne faites pas comme ça !</td>
<td><span style="font-size:1.5em;">&#9888;</span> Attention&nbsp;:<br> Ne faites pas comme ça !</td>
<td>
$eg$

View File

@@ -1,6 +1,6 @@
caption: 5.2.4
created: 20220802100223020
modified: 20220902201505817
created: 20220924141149286
modified: 20220924141149286
tags: ReleaseNotes
title: Release 5.2.4
type: text/vnd.tiddlywiki
@@ -31,9 +31,11 @@ Improvements to the translation features of TiddlyWiki:
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d62a16ee464fb9984b766b48504829a1a3eb143b">> problem with long presses on tiddler links triggering a preview on iOS/iPadOS
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6910">> consistency of button and input elements across browsers
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d825f1c875f5e46158c9c41c8c66471138c162d1">> edit preview to use the [[View Template Body Cascade]]
! Widget Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/127f660c91020dcbb43897d954066b31af729e74">> EditTextWidget to remove the default text "Type the text for the tiddler 'foo'"
! Filter improvements
@@ -43,6 +45,10 @@ Improvements to the translation features of TiddlyWiki:
! Hackability Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]] and [[format Operator]]
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/c5d3d4c26e8fe27f272dda004aec27d6b66c4f60">> safe mode to disable wiki store indexers
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/166a1565843878083fb1eba47c73b8e67b78400d">> safe mode to prevent globally disabling parser rules
! Bug Fixes
@@ -54,21 +60,29 @@ Improvements to the translation features of TiddlyWiki:
! Node.js Improvements
*
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6947">> console logging to avoid spaces and `<empty string>` message
! Performance Improvements
*
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/53d229592df76c6dd607e40be5bea4d5e063c48e">> performance of `wiki.getTiddler()`
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/81ac9874846b3ead275f67010fcfdb49f3d2f43c">> performance of variable prototype chain handling
! Acknowledgements
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
<<.contributors """
bestony
BramChen
flibbles
fu-sen
Marxsal
oflg
pmario
rmunn
roma0104
tw-FRed
twMat
xcazin
""">>

View 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>

View File

@@ -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>

View File

@@ -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>

View 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>

View 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>

View File

@@ -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>');
});
});
})();

View File

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

View File

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

View File

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

View File

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

View File

@@ -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]]

View File

@@ -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]]

View File

@@ -117,7 +117,7 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]].
<table class="doc-bad-example">
<tbody>
<tr class="evenRow">
<td><span class="tc-inline-style" style="font-size:1.5em;">&#9888;</span> Warning:<br> Don't do it this way!</td>
<td><span style="font-size:1.5em;">&#9888;</span> Warning:<br> Don't do it this way!</td>
<td>
$eg$

View File

@@ -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>

View 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 |

View 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>'/>

View File

@@ -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.

View File

@@ -36,7 +36,7 @@ This example requires the following CSS definitions from [[$:/_tw5.com-styles]]:
This wiki text shows how to display a list within the scrollable widget:
<<wikitext-example-without-html "<$scrollable class='tc-scrollable-demo'>
<$list filter='[!is[system]]'>
<$list filter='[tag[Reference]]'>
<$view field='title'/>: <$list filter='[all[current]links[]sort[title]]' storyview='pop'>
<$link><$view field='title'/></$link>

View File

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

View File

@@ -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

View File

@@ -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.

View File

@@ -44,8 +44,8 @@ muted-foreground: Primario general silenciado
notification-background: Fondo Notificación
notification-border: Borde Notificación
page-background: Fondo Página
pre-background: 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>`

View File

@@ -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

View File

@@ -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

View File

@@ -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]]

View File

@@ -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>:
&#32;
<$transclude tiddler=<<commandTitle>> field="description"/></li>
</$list>
</ul>

View File

@@ -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")

View File

@@ -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"

View File

@@ -30,5 +30,5 @@ Upgrader/System/Warning: tiddler del sistema principal.
Upgrader/System/Alert: Estás a punto de importar un tiddler que sobrescribirá un tiddler del sistema principal. Esto no se recomienda ya que puede hacer que el sistema sea inestable.
Upgrader/ThemeTweaks/Created: Ajuste de tema migrado de <$text text=<<from>>/>
Upgrader/Tiddler/Disabled: Tiddler deshabilitado.
Upgrader/Tiddler/Selected: Usuario seleccionado.
Upgrader/Tiddler/Selected: Tiddler seleccionado.
Upgrader/Tiddler/Unselected: Tiddler no seleccionado.

View File

@@ -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

View File

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

View File

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

View File

@@ -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

View File

@@ -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.

View File

@@ -31,5 +31,5 @@ Notatki:
Przykłady:
* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- renderuje wszystkie niesystemowe tiddlery jako pliki w podfolderze "tiddlers", kodując znaki URI w nazwie i dodając rozszerzenie .html
* `--render '[!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"

View File

@@ -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ć?

View File

@@ -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: 如果存在,则限制此条目的刷新

View File

@@ -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: 如果存在,則限制此條目的刷新

View File

@@ -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) {

View File

@@ -12,7 +12,7 @@ The main module of the Jasmine test plugin for TiddlyWiki5
/*global $tw: true */
"use strict";
var TEST_TIDDLER_FILTER = "[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.

View File

@@ -0,0 +1,93 @@
/*\
title: $:/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js
type: application/javascript
tags: [[$:/tags/test-spec]]
Tests the wiki based tests
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var TEST_WIKI_TIDDLER_FILTER = "[type[text/vnd.tiddlywiki-multiple]tag[$:/tags/wiki-test-spec]]";
var widget = require("$:/core/modules/widgets/widget.js");
describe("Wiki-based tests", function() {
// Step through the test tiddlers
var tests = $tw.wiki.filterTiddlers(TEST_WIKI_TIDDLER_FILTER);
$tw.utils.each(tests,function(title) {
var tiddler = $tw.wiki.getTiddler(title);
it(tiddler.fields.title + ": " + tiddler.fields.description, function() {
// Add our tiddlers
var wiki = new $tw.Wiki();
wiki.addTiddlers(readMultipleTiddlersTiddler(title));
// Complain if we don't have the ouput and expected results
if(!wiki.tiddlerExists("Output")) {
throw "Missing 'Output' tiddler";
}
if(!wiki.tiddlerExists("ExpectedResult")) {
throw "Missing 'ExpectedResult' tiddler";
}
// Construct the widget node
var text = "{{Output}}\n\n";
var widgetNode = createWidgetNode(parseText(text,wiki),wiki);
// Render the widget node to the DOM
var wrapper = renderWidgetNode(widgetNode);
// Clear changes queue
wiki.clearTiddlerEventQueue();
// Run the actions if provided
if(wiki.tiddlerExists("Actions")) {
widgetNode.invokeActionString(wiki.getTiddlerText("Actions"));
refreshWidgetNode(widgetNode,wrapper);
}
// Test the rendering
expect(wrapper.innerHTML).toBe(wiki.getTiddlerText("ExpectedResult"));
});
});
function readMultipleTiddlersTiddler(title) {
var rawTiddlers = $tw.wiki.getTiddlerText(title).split("\n+\n");
var tiddlers = [];
$tw.utils.each(rawTiddlers,function(rawTiddler) {
var fields = Object.create(null),
split = rawTiddler.split(/\r?\n\r?\n/mg);
if(split.length >= 1) {
fields = $tw.utils.parseFields(split[0],fields);
}
if(split.length >= 2) {
fields.text = split.slice(1).join("\n\n");
}
tiddlers.push(fields);
});
return tiddlers;
}
function createWidgetNode(parser,wiki) {
return wiki.makeWidget(parser);
}
function parseText(text,wiki,options) {
return wiki.parseText("text/vnd.tiddlywiki",text,options);
}
function renderWidgetNode(widgetNode) {
$tw.fakeDocument.setSequenceNumber(0);
var wrapper = $tw.fakeDocument.createElement("div");
widgetNode.render(wrapper,null);
// console.log(require("util").inspect(wrapper,{depth: 8}));
return wrapper;
}
function refreshWidgetNode(widgetNode,wrapper) {
widgetNode.refresh(widgetNode.wiki.changedTiddlers,wrapper);
// console.log(require("util").inspect(wrapper,{depth: 8}));
}
});
})();

View File

@@ -290,6 +290,11 @@ kbd {
color: <<colour selection-foreground>>;
}
.tc-inline-style {
background: <<colour highlight-background>>;
color: <<colour highlight-foreground>>;
}
form.tc-form-inline {
display: inline;
}