1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-29 14:20:22 +00:00

Compare commits

..

2 Commits

Author SHA1 Message Date
Jeremy Ruston
1018a9eb40 Update version number 2023-11-21 11:21:29 +00:00
Jeremy Ruston
ce30e64a71 Initial Commit 2023-07-31 10:09:44 +01:00
106 changed files with 358 additions and 619 deletions

View File

@@ -5,7 +5,7 @@
# Default to the current version number for building the plugin library # Default to the current version number for building the plugin library
if [ -z "$TW5_BUILD_VERSION" ]; then if [ -z "$TW5_BUILD_VERSION" ]; then
TW5_BUILD_VERSION=v5.3.2 TW5_BUILD_VERSION=v5.3.1
fi fi
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]" echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
@@ -104,15 +104,13 @@ node $TW5_BUILD_TIDDLYWIKI \
--build favicon static index \ --build favicon static index \
|| exit 1 || exit 1
# /empty.html Empty # /empty.html Empty
# /empty.hta For Internet Explorer # /empty.hta For Internet Explorer
# /empty-external-core.html External core empty
# /tiddlywikicore-<version>.js Core plugin javascript
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/empty \ ./editions/empty \
--verbose \ --verbose \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--build empty emptyexternalcore \ --build empty \
|| exit 1 || exit 1

View File

@@ -575,8 +575,9 @@ var globalCheck =[
" configurable: true", " configurable: true",
" });", " });",
" if(Object.keys(__temp__).length){", " if(Object.keys(__temp__).length){",
" console.log(\"Warning: Global assignment detected\",Object.keys(__temp__));", " console.log(Object.keys(__temp__));",
" delete Object.prototype.__temp__;", " delete Object.prototype.__temp__;",
" throw \"Global assignment is not allowed within modules on node.\";",
" }", " }",
" delete Object.prototype.__temp__;", " delete Object.prototype.__temp__;",
].join('\n'); ].join('\n');
@@ -925,7 +926,7 @@ $tw.modules.execute = function(moduleName,moduleRoot) {
} }
} else { } else {
// line number should be included in e.stack for runtime errors // line number should be included in e.stack for runtime errors
$tw.utils.error("Error executing boot module " + name + ": " + String(e) + "\n\n" + e.stack); $tw.utils.error("Error executing boot module " + name + ": " + JSON.stringify(e) + "\n\n" + e.stack);
} }
} }
} }
@@ -2674,18 +2675,6 @@ $tw.hooks.addHook = function(hookName,definition) {
} }
}; };
/*
Delete hooks from the hashmap
*/
$tw.hooks.removeHook = function(hookName,definition) {
if($tw.utils.hop($tw.hooks.names,hookName)) {
var p = $tw.hooks.names[hookName].indexOf(definition);
if(p !== -1) {
$tw.hooks.names[hookName].splice(p, 1);
}
}
};
/* /*
Invoke the hook by key Invoke the hook by key
*/ */

View File

@@ -3,4 +3,4 @@ title: $:/language/Exporters/
StaticRiver: Static HTML StaticRiver: Static HTML
JsonFile: JSON file JsonFile: JSON file
CsvFile: CSV file CsvFile: CSV file
TidFile: TID text file TidFile: ".tid" file

View File

@@ -19,7 +19,7 @@ The following options are supported:
** ''yes'' will "explode" plugins into separate tiddler files and save them to the plugin directory within the wiki folder ** ''yes'' will "explode" plugins into separate tiddler files and save them to the plugin directory within the wiki folder
** ''no'' will suppress exploding plugins into their constituent tiddler files. It will save the plugin as a single JSON tiddler in the tiddlers folder ** ''no'' will suppress exploding plugins into their constituent tiddler files. It will save the plugin as a single JSON tiddler in the tiddlers folder
Note that both ''explodePlugins'' options will produce wiki folders that build the exact same original wiki. The difference lies in how plugins are represented in the wiki folder. Note that both ''explodePlugins'' options will produce wiki folders that build the same exact same original wiki. The difference lies in how plugins are represented in the wiki folder.
A common usage is to convert a TiddlyWiki HTML file into a wiki folder: A common usage is to convert a TiddlyWiki HTML file into a wiki folder:
@@ -31,4 +31,4 @@ Save the plugin to the tiddlers directory of the target wiki folder:
``` ```
tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder explodePlugins=no tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder explodePlugins=no
``` ```

View File

@@ -1,5 +1,5 @@
title: $:/language/Help/server title: $:/language/Help/server
description: (deprecated: see 'listen' command) Provides an HTTP server interface to TiddlyWiki description: Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)
Legacy command to serve a wiki over HTTP. Legacy command to serve a wiki over HTTP.

View File

@@ -1,5 +1,5 @@
title: $:/language/Docs/Types/image/svg+xml title: $:/language/Docs/Types/image/svg+xml
description: SVG image description: Structured Vector Graphics image
name: image/svg+xml name: image/svg+xml
group: Image group: Image
group-sort: 1 group-sort: 1

View File

@@ -1,5 +1,5 @@
title: $:/language/Docs/Types/image/x-icon title: $:/language/Docs/Types/image/x-icon
description: ICO icon description: ICO format icon file
name: image/x-icon name: image/x-icon
group: Image group: Image
group-sort: 1 group-sort: 1

View File

@@ -60,7 +60,7 @@ function FramedEngine(options) {
this.domNode.value = this.value; this.domNode.value = this.value;
} }
// Set the attributes // Set the attributes
if(this.widget.editType && this.widget.editTag !== "textarea") { if(this.widget.editType) {
this.domNode.setAttribute("type",this.widget.editType); this.domNode.setAttribute("type",this.widget.editType);
} }
if(this.widget.editPlaceholder) { if(this.widget.editPlaceholder) {

View File

@@ -34,7 +34,7 @@ function SimpleEngine(options) {
this.domNode.value = this.value; this.domNode.value = this.value;
} }
// Set the attributes // Set the attributes
if(this.widget.editType && this.widget.editTag !== "textarea") { if(this.widget.editType) {
this.domNode.setAttribute("type",this.widget.editType); this.domNode.setAttribute("type",this.widget.editType);
} }
if(this.widget.editPlaceholder) { if(this.widget.editPlaceholder) {

View File

@@ -28,8 +28,12 @@ function getAllFilterOperators() {
Export our filter function Export our filter function
*/ */
exports.all = function(source,operator,options) { exports.all = function(source,operator,options) {
// Get our suboperators
var allFilterOperators = getAllFilterOperators();
// Cycle through the suboperators accumulating their results
var results = new $tw.utils.LinkedList(),
subops = operator.operand.split("+");
// Check for common optimisations // Check for common optimisations
var subops = operator.operand.split("+");
if(subops.length === 1 && subops[0] === "") { if(subops.length === 1 && subops[0] === "") {
return source; return source;
} else if(subops.length === 1 && subops[0] === "tiddlers") { } else if(subops.length === 1 && subops[0] === "tiddlers") {
@@ -42,10 +46,6 @@ exports.all = function(source,operator,options) {
return options.wiki.eachShadowPlusTiddlers; return options.wiki.eachShadowPlusTiddlers;
} }
// Do it the hard way // Do it the hard way
// Get our suboperators
var allFilterOperators = getAllFilterOperators();
// Cycle through the suboperators accumulating their results
var results = new $tw.utils.LinkedList();
for(var t=0; t<subops.length; t++) { for(var t=0; t<subops.length; t++) {
var subop = allFilterOperators[subops[t]]; var subop = allFilterOperators[subops[t]];
if(subop) { if(subop) {

View File

@@ -81,9 +81,6 @@ exports.parse = function() {
} }
return [tiddlerNode]; return [tiddlerNode];
} else { } else {
// No template or text reference is provided, so we'll use a blank target. Otherwise we'll generate
// a transclude widget that transcludes the current tiddler, often leading to recursion errors
transcludeNode.attributes["$tiddler"] = {name: "$tiddler", type: "string", value: ""};
return [transcludeNode]; return [transcludeNode];
} }
} }

View File

@@ -79,9 +79,6 @@ exports.parse = function() {
} }
return [tiddlerNode]; return [tiddlerNode];
} else { } else {
// No template or text reference is provided, so we'll use a blank target. Otherwise we'll generate
// a transclude widget that transcludes the current tiddler, often leading to recursion errors
transcludeNode.attributes["$tiddler"] = {name: "$tiddler", type: "string", value: ""};
return [transcludeNode]; return [transcludeNode];
} }
} }

View File

@@ -116,7 +116,7 @@ CheckboxWidget.prototype.getValue = function() {
} else { } else {
list = $tw.utils.parseStringArray(this.checkboxDefault || "") || []; list = $tw.utils.parseStringArray(this.checkboxDefault || "") || [];
} }
} else if(this.checkboxListIndex) { } else if (this.checkboxListIndex) {
list = $tw.utils.parseStringArray(this.wiki.extractTiddlerDataItem(tiddler,this.checkboxListIndex,this.checkboxDefault || "")) || []; list = $tw.utils.parseStringArray(this.wiki.extractTiddlerDataItem(tiddler,this.checkboxListIndex,this.checkboxDefault || "")) || [];
} else { } else {
list = this.wiki.filterTiddlers(this.checkboxFilter,this) || []; list = this.wiki.filterTiddlers(this.checkboxFilter,this) || [];
@@ -215,8 +215,6 @@ CheckboxWidget.prototype.handleChangeEvent = function(event) {
if($tw.utils.isArray(fieldContents)) { if($tw.utils.isArray(fieldContents)) {
// Make a copy so we can modify it without changing original that's refrenced elsewhere // Make a copy so we can modify it without changing original that's refrenced elsewhere
listContents = fieldContents.slice(0); listContents = fieldContents.slice(0);
} else if(fieldContents === undefined) {
listContents = [];
} else if(typeof fieldContents === "string") { } else if(typeof fieldContents === "string") {
listContents = $tw.utils.parseStringArray(fieldContents); listContents = $tw.utils.parseStringArray(fieldContents);
// No need to copy since parseStringArray returns a fresh array, not refrenced elsewhere // No need to copy since parseStringArray returns a fresh array, not refrenced elsewhere

View File

@@ -225,8 +225,6 @@ ListWidget.prototype.handleListChanges = function(changedTiddlers) {
// If we are providing an counter variable then we must refresh the items, otherwise we can rearrange them // If we are providing an counter variable then we must refresh the items, otherwise we can rearrange them
var hasRefreshed = false,t; var hasRefreshed = false,t;
if(this.counterName) { if(this.counterName) {
var mustRefreshOldLast = false;
var oldLength = this.children.length;
// Cycle through the list and remove and re-insert the first item that has changed, and all the remaining items // Cycle through the list and remove and re-insert the first item that has changed, and all the remaining items
for(t=0; t<this.list.length; t++) { for(t=0; t<this.list.length; t++) {
if(hasRefreshed || !this.children[t] || this.children[t].parseTreeNode.itemTitle !== this.list[t]) { if(hasRefreshed || !this.children[t] || this.children[t].parseTreeNode.itemTitle !== this.list[t]) {
@@ -234,9 +232,6 @@ ListWidget.prototype.handleListChanges = function(changedTiddlers) {
this.removeListItem(t); this.removeListItem(t);
} }
this.insertListItem(t,this.list[t]); this.insertListItem(t,this.list[t]);
if(!hasRefreshed && t === oldLength) {
mustRefreshOldLast = true;
}
hasRefreshed = true; hasRefreshed = true;
} else { } else {
// Refresh the item we're reusing // Refresh the item we're reusing
@@ -244,12 +239,6 @@ ListWidget.prototype.handleListChanges = function(changedTiddlers) {
hasRefreshed = hasRefreshed || refreshed; hasRefreshed = hasRefreshed || refreshed;
} }
} }
// If items were inserted then we must recreate the item that used to be at the last position as it is no longer last
if(mustRefreshOldLast && oldLength > 0) {
var oldLastIdx = oldLength-1;
this.removeListItem(oldLastIdx);
this.insertListItem(oldLastIdx,this.list[oldLastIdx]);
}
// If there are items to remove and we have not refreshed then recreate the item that will now be at the last position // If there are items to remove and we have not refreshed then recreate the item that will now be at the last position
if(!hasRefreshed && this.children.length > this.list.length) { if(!hasRefreshed && this.children.length > this.list.length) {
this.removeListItem(this.list.length-1); this.removeListItem(this.list.length-1);

View File

@@ -171,6 +171,42 @@ ScrollableWidget.prototype.render = function(parent,nextSibling) {
parent.insertBefore(this.outerDomNode,nextSibling); parent.insertBefore(this.outerDomNode,nextSibling);
this.renderChildren(this.innerDomNode,null); this.renderChildren(this.innerDomNode,null);
this.domNodes.push(this.outerDomNode); this.domNodes.push(this.outerDomNode);
// If the scroll position is bound to a tiddler
if(this.scrollableBind) {
// After a delay for rendering, scroll to the bound position
setTimeout(this.updateScrollPositionFromBoundTiddler.bind(this),50);
// Save scroll position on DOM scroll event
this.outerDomNode.addEventListener("scroll",function(event) {
var existingTiddler = self.wiki.getTiddler(self.scrollableBind),
newTiddlerFields = {
title: self.scrollableBind,
"scroll-left": self.outerDomNode.scrollLeft.toString(),
"scroll-top": self.outerDomNode.scrollTop.toString()
};
if(!existingTiddler || (existingTiddler.fields["scroll-left"] !== newTiddlerFields["scroll-left"] || existingTiddler.fields["scroll-top"] !== newTiddlerFields["scroll-top"])) {
self.wiki.addTiddler(new $tw.Tiddler(existingTiddler,newTiddlerFields));
}
});
}
};
ScrollableWidget.prototype.updateScrollPositionFromBoundTiddler = function() {
var tiddler = this.wiki.getTiddler(this.scrollableBind);
if(tiddler) {
var scrollLeftTo = this.outerDomNode.scrollLeft;
if(parseFloat(tiddler.fields["scroll-left"]).toString() === tiddler.fields["scroll-left"]) {
scrollLeftTo = parseFloat(tiddler.fields["scroll-left"]);
}
var scrollTopTo = this.outerDomNode.scrollTop;
if(parseFloat(tiddler.fields["scroll-top"]).toString() === tiddler.fields["scroll-top"]) {
scrollTopTo = parseFloat(tiddler.fields["scroll-top"]);
}
this.outerDomNode.scrollTo({
top: scrollTopTo,
left: scrollLeftTo,
behavior: "instant"
})
}
}; };
/* /*
@@ -178,6 +214,7 @@ Compute the internal state of the widget
*/ */
ScrollableWidget.prototype.execute = function() { ScrollableWidget.prototype.execute = function() {
// Get attributes // Get attributes
this.scrollableBind = this.getAttribute("bind");
this.fallthrough = this.getAttribute("fallthrough","yes"); this.fallthrough = this.getAttribute("fallthrough","yes");
this["class"] = this.getAttribute("class"); this["class"] = this.getAttribute("class");
// Make child widgets // Make child widgets
@@ -193,6 +230,9 @@ ScrollableWidget.prototype.refresh = function(changedTiddlers) {
this.refreshSelf(); this.refreshSelf();
return true; return true;
} }
if(changedAttributes.bind || changedTiddlers[this.getAttribute("bind")]) {
this.updateScrollPositionFromBoundTiddler();
}
return this.refreshChildren(changedTiddlers); return this.refreshChildren(changedTiddlers);
}; };

View File

@@ -10,7 +10,7 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d
<em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em> <em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em>
<div class="tc-type-selector-dropdown-wrapper"> <div class="tc-type-selector-dropdown-wrapper">
<div class="tc-type-selector"><$fieldmangler> <div class="tc-type-selector"><$fieldmangler>
<$macrocall $name="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button> <$macrocall $name="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button>
</$fieldmangler></div> </$fieldmangler></div>
<div class="tc-block-dropdown-wrapper"> <div class="tc-block-dropdown-wrapper">

View File

@@ -20,7 +20,7 @@ code-body: yes
<$navigator story="$:/StoryList" history="$:/HistoryList" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}> <$navigator story="$:/StoryList" history="$:/HistoryList" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>
<$dropzone enable=<<tv-enable-drag-and-drop>> class="tc-dropzone tc-page-container-inner"> <$dropzone enable=<<tv-enable-drag-and-drop>>>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]" variable="listItem"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]" variable="listItem">

View File

@@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/library/v5.3.2/index.html url: https://tiddlywiki.com/library/v5.3.1/index.html
caption: {{$:/language/OfficialPluginLibrary}} caption: {{$:/language/OfficialPluginLibrary}}
{{$:/language/OfficialPluginLibrary/Hint}} {{$:/language/OfficialPluginLibrary/Hint}}

View File

@@ -10,7 +10,7 @@ color:$(foregroundColor)$;
<!-- This has no whitespace trim to avoid modifying $actions$. Closing tags omitted for brevity. --> <!-- 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) \define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)
\whitespace trim \whitespace trim
<$let <$vars
foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">>
backgroundColor=<<__colour__>> backgroundColor=<<__colour__>>
> >
@@ -23,7 +23,6 @@ color:$(foregroundColor)$;
<$transclude tiddler=<<__icon__>>/> <$transclude tiddler=<<__icon__>>/>
<$view tiddler=<<__tag__>> field="title" format="text" /> <$view tiddler=<<__tag__>> field="title" format="text" />
</$element-tag$> </$element-tag$>
</$let>
\end \end
\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions) \define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)

View File

@@ -1,14 +1,9 @@
created: 20141122200310516 created: 20141122200310516
modified: 20230923031318421 modified: 20201213161842776
tags: Mechanisms
title: HookMechanism title: HookMechanism
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
The hook mechanism provides a way for plugins to intercept and modify default functionality. The hook mechanism provides a way for plugins to intercept and modify default functionality. Hooks are added as follows:
!! Add a hook
Hooks are added as follows:
```js ```js
/* /*
@@ -18,8 +13,6 @@ handler: function to be called when hook is invoked
$tw.hooks.addHook(name,handler); $tw.hooks.addHook(name,handler);
``` ```
!!! Params and return
The handler function will be called with parameters that depend on the specific hook in question, but they always follow the pattern `handler(value,params...)` The handler function will be called with parameters that depend on the specific hook in question, but they always follow the pattern `handler(value,params...)`
* ''value'': an optional value that is to be transformed by the hook function * ''value'': an optional value that is to be transformed by the hook function
@@ -27,29 +20,11 @@ The handler function will be called with parameters that depend on the specific
If required by the hook in question, the handler function must return the modified ''value''. If required by the hook in question, the handler function must return the modified ''value''.
!!! Multiple handlers
Multiple handlers can be assigned to the same name using repeated calls. When a hook is invoked by name all registered functions will be called sequentially in their order of addition. Multiple handlers can be assigned to the same name using repeated calls. When a hook is invoked by name all registered functions will be called sequentially in their order of addition.
Note that the ''value'' passed to the subsequent hook function will be the return value of the previous hook function. Note that the ''value'' passed to the subsequent hook function will be the return value of the previous hook function.
Be careful not to `addHook` in widget's `render` method, which will be call several times. You could `addHook` in methods that only called once, e.g. the constructor of widget class. Otherwise you should `removeHook` then add it again. Though not essential care should be taken to ensure that hooks are added before they are invoked. For example: [[Hook: th-opening-default-tiddlers-list]] should ideally be added before the story startup module is invoked otherwise any hook specified additions to the default tiddlers will not be seen on the initial loading of the page, though will be visible if the user clicks the home button.
!!! Timing of registration
Though not essential care should be taken to ensure that hooks are added before they are invoked.
For example: [[Hook: th-opening-default-tiddlers-list]] should ideally be added before the story startup module is invoked. Otherwise any hook specified additions to the default tiddlers will not be seen on the initial loading of the page, though will be visible if the user clicks the home button.
!! Remove a hook
You should clean up the callback when your widget is going to unmount.
```js
$tw.hooks.removeHook(handler)
```
The `handler` should be the same function instance you used in `addHook` (check by `===`). You can save it to `this.xxxHookHandler` on your widget, and call `removeHook` in [[destroy method|Widget `destroy` method examples]].
!! Example !! Example

View File

@@ -12,9 +12,6 @@
"empty": [ "empty": [
"--render","$:/core/save/all","empty.html","text/plain", "--render","$:/core/save/all","empty.html","text/plain",
"--render","$:/core/save/all","empty.hta","text/plain"], "--render","$:/core/save/all","empty.hta","text/plain"],
"emptyexternalcore": [
"--render","$:/core/save/offline-external-js","empty-external-core.html","text/plain",
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"],
"externalimages": [ "externalimages": [
"--savetiddlers","[is[image]]","images", "--savetiddlers","[is[image]]","images",
"--setfield","[is[image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain", "--setfield","[is[image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
@@ -23,7 +20,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"] "--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
} }
} }

View File

@@ -15,7 +15,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"] "--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
} }
} }

View File

@@ -15,7 +15,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"] "--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
} }
} }

View File

@@ -17,8 +17,8 @@
], ],
"library": [ "library": [
"--makelibrary","$:/UpgradeLibrary", "--makelibrary","$:/UpgradeLibrary",
"--savelibrarytiddlers","$:/UpgradeLibrary","[prefix[$:/]] -[[$:/plugins/tiddlywiki/upgrade]] -[[$:/plugins/tiddlywiki/translators]] -[[$:/plugins/tiddlywiki/pluginlibrary]] -[[$:/plugins/tiddlywiki/jasmine]]","recipes/library/tiddlers/","$:/UpgradeLibrary/List", "--savelibrarytiddlers","$:/UpgradeLibrary","[prefix[$:/]] -[[$:/plugins/tiddlywiki/upgrade]] -[[$:/plugins/tiddlywiki/translators]] -[[$:/plugins/tiddlywiki/pluginlibrary]] -[[$:/plugins/tiddlywiki/jasmine]]","recipes/library/tiddlers/","$:/UpgradeLibrary/List",
"--savetiddler","$:/UpgradeLibrary/List","recipes/library/tiddlers.json", "--savetiddler","$:/UpgradeLibrary/List","recipes/library/tiddlers.json",
"--rendertiddler","$:/plugins/tiddlywiki/pluginlibrary/library.template.html","index.html","text/plain"] "--rendertiddler","$:/plugins/tiddlywiki/pluginlibrary/library.template.html","index.html","text/plain"]
} }
} }

View File

@@ -1,28 +1,22 @@
caption: 5.3.1 caption: 5.3.1
created: 20230820112855583 created: 20230720215100983
modified: 20230820112855583 modified: 20230720215100983
released: 20230820112855583
tags: ReleaseNotes tags: ReleaseNotes
title: Release 5.3.1 title: Release 5.3.1
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.0...v5.3.1]]// //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.0...master]]//
<<.banner-credits
credit:"""Congratulations to [[vilc|https://talk.tiddlywiki.org/u/vilc]] for their winning design for the banner for this release (here is the [[competition thread|https://talk.tiddlywiki.org/t/banner-image-competition-for-v5-3-0/7406/10]]).
"""
url:"https://github.com/Jermolene/TiddlyWiki5/blob/4124bbdfb3e2445d45488006dfff1925d067ab0f/editions/tw5.com/tiddlers/images/New%20Release%20Banner.png?raw=true"
>>
! Overview of v5.3.1 ! Overview of v5.3.1
This release comes only a few weeks after [[v5.3.0|Release 5.3.0]]. The motivation for the release is to swiftly fix some issues that have emerged with v5.3.0. There are also some other improvements included in this release, notably the ability to access binary resources over HTTP -- the [[demo|WidgetMessage: tm-http-request Example - Random Dog]] downloads a random image or video of a dog.
! Bug Fixes and Reversions of v5.3.0 Changes ! Bug Fixes and Reversions of v5.3.0 Changes
* Reverted adding the `widget.destroy()` method because of performance concerns (see https://github.com/Jermolene/TiddlyWiki5/pull/7468) * Reverted adding the `widget.destroy()` method because of performance concerns (see https://github.com/Jermolene/TiddlyWiki5/pull/7468)
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7647">> inefficiency when transcluding with the ''$output'' attribute set to `text/plain` that manifested itself as extremely slow export times * <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7647">> inefficiency when transcluding with the ''$output'' attribute set to `text/plain`
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7648">> unwanted error message "Global assignment is not allowed within modules on node"
! Plugin Improvements
*
! Translation improvement ! Translation improvement
@@ -31,14 +25,22 @@ Improvements to the following translations:
* Chinese * Chinese
* Polish * Polish
! Usability Improvements
*
! Widget Improvements ! Widget Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7594">> ''tabindex'' attribute to SelectWidget * <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7594">> ''tabindex'' attribute to SelectWidget
! Filter improvements
*
! Hackability Improvements ! Hackability Improvements
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7611">> ImportVariablesWidget and [[Pragma: \import]] to trim whitespace when parsing tiddlers * <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7611">> ImportVariablesWidget and [[Pragma: \import]] to trim whitespace when parsing tiddlers
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/commit/9b2af1359614f4ad5afd05be7cf9853909334592">> [[WidgetMessage: tm-http-request]] to handle binary responses ([[demo|WidgetMessage: tm-http-request Example - Random Dog]]) * <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/commit/9b2af1359614f4ad5afd05be7cf9853909334592"> [[WidgetMessage: tm-http-request]] to handle binary responses ([[demo|WidgetMessage: tm-http-request Example - Random Dog]])
! Bug Fixes ! Bug Fixes
@@ -48,17 +50,18 @@ Improvements to the following translations:
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7624">> the pragmas introduced in v5.3.0 so that they can be indented with whitespace * <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7624">> the pragmas introduced in v5.3.0 so that they can be indented with whitespace
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7619">> size of tiddler icons * <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7619">> size of tiddler icons
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7622">> drag and drop from Chrome-like browsers to Firefox * <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7622">> drag and drop from Chrome-like browsers to Firefox
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7679">> listIndex mode of checkbox widgets
! Node.js Improvements ! Node.js Improvements
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7645">> console reporting of ~JavaScript errors *
! Developer Improvements ! Developer Improvements
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/6c7c21a87bdb0d8a00df1c14eea18912164e0b57">> overeager onload handler in Jasmine plugin * <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/6c7c21a87bdb0d8a00df1c14eea18912164e0b57">> overeager onload handler in Jasmine plugin
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/08bad90e51c45233a196333e101bbbf6ecf702ce">> ordering of shadow tiddler listings to not reflect order of insertion * <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/08bad90e51c45233a196333e101bbbf6ecf702ce">> ordering of shadow tiddler listings to not reflect order of insertion
Currently shadow tiddler ordering depends upon the order in which the shadows appear in the plugin JSON
! Acknowledgements ! 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: [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
@@ -66,21 +69,11 @@ Improvements to the following translations:
<<.contributors """ <<.contributors """
AnthonyMuscio AnthonyMuscio
btheado btheado
catter-fly
cmo-pomerium
CrossEye CrossEye
flibbles flibbles
hffqyd hffqyd
lilscribby
linonetwo
Marxsal
mateuszwilczek
pille1842
pmario pmario
rmunn
saqimtiaz saqimtiaz
stevesunypoly stevesunypoly
TiddlyTweeter
twMat twMat
yaisog
""">> """>>

View File

@@ -1,60 +0,0 @@
caption: 5.3.2
created: 20230820114855583
modified: 20230820114855583
tags: ReleaseNotes
title: Release 5.3.2
type: text/vnd.tiddlywiki
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.1...master]]//
! Translation improvement
Improvements to the following translations:
*
! Widget Improvements
*
! Hackability Improvements
*
! Bug Fixes
*
! Node.js Improvements
*
! Developer Improvements
*
! 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 """
AnthonyMuscio
btheado
catter-fly
cmo-pomerium
CrossEye
flibbles
hffqyd
lilscribby
linonetwo
Marxsal
mateuszwilczek
pille1842
pmario
rmunn
saqimtiaz
stevesunypoly
TiddlyTweeter
twMat
yaisog
""">>

View File

@@ -1,6 +1,6 @@
title: $:/config/LocalPluginLibrary title: $:/config/LocalPluginLibrary
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: http://127.0.0.1:8080/prerelease/library/v5.3.2/index.html url: http://127.0.0.1:8080/prerelease/library/v5.3.1/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local) caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local)
A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library// A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library//

View File

@@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/prerelease/library/v5.3.2/index.html url: https://tiddlywiki.com/prerelease/library/v5.3.1/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.

View File

@@ -1,5 +1,5 @@
title: TiddlyWiki Pre-release title: TiddlyWiki Pre-release
modified: 20230731122156493 modified: 20150428204930183
This is a pre-release build of TiddlyWiki provided for testing and review purposes. ''Please don't try to depend on the pre-release for anything important'' -- you should use the latest official release from https://tiddlywiki.com. This is a pre-release build of TiddlyWiki provided for testing and review purposes. ''Please don't try to depend on the pre-release for anything important'' -- you should use the latest official release from https://tiddlywiki.com.

View File

@@ -0,0 +1,3 @@
title: $:/my-scroll-position
scroll-left: 0
scroll-top: 100

View File

@@ -20,4 +20,4 @@
"favicon": [ "favicon": [
"--savetiddler","$:/favicon.ico","favicon.ico"] "--savetiddler","$:/favicon.ico","favicon.ico"]
} }
} }

View File

@@ -17,7 +17,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"], "--render","$:/core/templates/static.template.css","static/static.css","text/plain"],
"tiddlywikicore": [ "tiddlywikicore": [
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"] "--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"]

View File

@@ -15,7 +15,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"] "--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
} }
} }

View File

@@ -527,29 +527,6 @@ describe("Widget module", function() {
expect(wrapper.children[0].children[15].sequenceNumber).toBe(53); expect(wrapper.children[0].children[15].sequenceNumber).toBe(53);
}); });
var testCounterLast = function(oldList, newList) {
return function() {
var wiki = new $tw.Wiki();
// Add some tiddlers
wiki.addTiddler({title: "Numbers", text: "", list: oldList});
var text = "<$list filter='[list[Numbers]]' variable='item' counter='c'><<item>><$text text={{{ [<c-last>match[no]then[, ]] }}} /></$list>";
var widgetNode = createWidgetNode(parseText(text,wiki),wiki);
// Render the widget node to the DOM
var wrapper = renderWidgetNode(widgetNode);
// Test the rendering
expect(wrapper.innerHTML).toBe("<p>" + oldList.split(' ').join(', ') + "</p>");
// Append a number
wiki.addTiddler({title: "Numbers", text: "", list: newList});
refreshWidgetNode(widgetNode,wrapper,["Numbers"]);
expect(wrapper.innerHTML).toBe("<p>" + newList.split(' ').join(', ') + "</p>");
}
}
it("the list widget with counter-last should update correctly when list is appended", testCounterLast("1 2 3 4", "1 2 3 4 5"));
it("the list widget with counter-last should update correctly when last item is removed", testCounterLast("1 2 3 4", "1 2 3"));
it("the list widget with counter-last should update correctly when first item is inserted", testCounterLast("1 2 3 4", "0 1 2 3 4"));
it("the list widget with counter-last should update correctly when first item is removed", testCounterLast("1 2 3 4", "2 3 4"));
it("should deal with the list widget followed by other widgets", function() { it("should deal with the list widget followed by other widgets", function() {
var wiki = new $tw.Wiki(); var wiki = new $tw.Wiki();
// Add some tiddlers // Add some tiddlers

View File

@@ -21,7 +21,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"] "--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
}, },
"config": { "config": {

View File

@@ -1,11 +1,11 @@
created: 20140129085406905 created: 20140129085406905
modified: 20230805140720289 modified: 20210106151027268
tags: [[Other Resources]] Articles tags: [[Other Resources]] Articles
title: "TiddlyWiki Posts" by Jeffrey Kishner title: "TiddlyWiki Posts" by Jeffrey Kishner
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
url: https://web.archive.org/web/20221015011644/http://blog.jeffreykishner.com/tiddlywiki/ url: http://blog.jeffreykishner.com/tiddlywiki/
A collection of articles covering integration with Fargo, Font Awesome and Google Calendar, and tips for managing task lists. The original site is missing, but a link to an archive is provided. A collection of articles covering integration with Fargo, Font Awesome and Google Calendar, and tips for managing task lists.
{{!!url}} {{!!url}}

View File

@@ -13,8 +13,6 @@ url: https://ibnishak.github.io/Timimi/
Timimi is a web-extension accompanied by a native host that allows you to save and backup your standalone HTML tiddlywiki files ''anywhere in your hard-drive''. Once installed, you can save the tiddlywiki files without any extra steps, like the original Tiddlyfox addon. Timimi is a web-extension accompanied by a native host that allows you to save and backup your standalone HTML tiddlywiki files ''anywhere in your hard-drive''. Once installed, you can save the tiddlywiki files without any extra steps, like the original Tiddlyfox addon.
* The native host requires a component installed on the host computer, outside the browser.
{{!!url}} {{!!url}}
As of version 2.1, Timimi supports the following browsers As of version 2.1, Timimi supports the following browsers
@@ -31,4 +29,4 @@ Timimi also provides users with 4 backup strategies, viz:
* Create a backup Every n^^th^^ save * Create a backup Every n^^th^^ save
* Create a backup every n^^th^^ minute * Create a backup every n^^th^^ minute
* Customised Tower of Hanoi * Customised Tower of Hanoi
* First in First Out * First in First Out

View File

@@ -1,11 +1,11 @@
created: 20201117163027900 created: 20201117163027900
modified: 20230723074506632 modified: 20210106151027459
tags: Tutorials tags: Tutorials
title: GitHub Saver Tutorial by Mohammad title: GitHub Saver Tutorial by Mohammad
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
url: https://kookma.github.io/TW5-GitHub-Saver/ url: https://kookma.github.io/TW5-GitHub-Saver/
GitHub Saver is a step by step tutorial that shows how to integrate Tiddlywiki 5 and ~GitHub Pages to create websites hosted on https://github.com/. GitHub Saver is a step by step tutorial shows how to integrate Tiddlywiki 5 and GitHub Pages to create websites hosted on https://github.com/.
{{!!url}} {{!!url}}
@@ -13,11 +13,11 @@ This instruction is based on Tiddlywiki single html file model, while it can use
!! Other tutorials !! Other tutorials
;Tiddlywiki, Travis-CI and ~GitHub Pages ;Tiddlywiki, Travis-CI and GitHub Pages
:https://kookma.github.io/Tiddlywiki-Travis-CI/ :https://kookma.github.io/Tiddlywiki-Travis-CI/
:This wiki shows how to set up websites hosted on [[GitHub Pages|https://pages.github.com/]] using [[Travis-CI|https://travis-ci.org]] and [[Tiddlywiki 5|https://tiddlywiki.com]] on Node.js. :This wiki shows how to set up websites hosted on [[GitHub Pages|https://pages.github.com/]] using [[Travis-CI|https://travis-ci.org]] and [[Tiddlywiki 5|https://tiddlywiki.com]] on Node.js.
;Tiddlywiki and ~GitHub Pages ;Tiddlywiki and GitHub Pages
:https://kookma.github.io/Tiddlywiki-and-GitHub-Pages/ :https://kookma.github.io/Tiddlywiki-and-GitHub-Pages/
:This instruction is based on local edit, save and push to ~GitHub. It does NOT use the new ~GitHub Saver mechanism (requires TW 5.1.20+) which lets edit and save directly from Tiddlywiki! :This instruction is based on local edit, save and push to GitHub. It does NOT use the new GitHub Saver mechanism (requires TW 5.1.20+) which lets edit and save directly from Tiddlywiki!

View File

@@ -0,0 +1,16 @@
created: 20140312085406905
modified: 20140312084543862
tags: Tutorials
title: "Install and run TiddlyWiki on a CentOS 6 VPS using Nginx" from RoseHosting
type: text/vnd.tiddlywiki
url: http://www.rosehosting.com/blog/install-and-run-tiddlywiki-on-a-centoos-6-vps-using-nginx/
A step by step guide to running TiddlyWiki on a ~CentOS Virtual Private Server.
{{!!url}}
<<<
In this tutorial we will guide you through the steps of installing and running TiddlyWiki on a ~CentOS 6 VPS.
We will also install and configure Nginx as a reverse proxy, so you can run TiddlyWiki behind Nginx.
<<<

View File

@@ -1,9 +0,0 @@
created: 20230723073000469
modified: 20230723073046462
tags: Definitions
title: Git
type: text/vnd.tiddlywiki
>Git (/ɡɪt/) is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows (thousands of parallel branches running on different computers).
>
>https://en.wikipedia.org/wiki/Git

View File

@@ -1,15 +1,13 @@
created: 20140910212609354 created: 20140910212609354
modified: 20230723074351846 modified: 20190408173002622
tags: Definitions tags: Definitions
title: GitHub title: GitHub
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
GitHub is a hosting service for distributed projects that use git as their version-control system. It allows free hosting and management of open-source projects and facilitates collaborative development on the source code. Using ~GitHub for non-open-source endeavours requires additional fees. GitHub is a hosting service for distributed projects that use git as their version-control system. It allows free hosting and management of open-source projects and facilitates collaborative development on the source code. Using GitHub for non-open-source endeavours requires additional fees.
The code and documentation of TiddlyWiki is hosted on ~GitHub at: The code and documentation of TiddlyWiki is hosted on GitHub at:
https://github.com/Jermolene/TiddlyWiki5 https://github.com/Jermolene/TiddlyWiki5
~GitHub also offer a free web hosting service called [[GitHub Pages|https://pages.github.com/]] that can be used directly from the single file configuration. See [[Saving to a Git service]]. GitHub also offer a free web hosting service called [[GitHub Pages|https://pages.github.com/]] that can be used directly from the single file configuration. See [[Saving to a Git service]].
An alternative to ~GitHub is GitLab

View File

@@ -1,13 +0,0 @@
created: 20230723072527781
modified: 20230723073955715
tags: Definitions
title: GitLab
type: text/vnd.tiddlywiki
>GitLab Inc. is an open-core company that operates ~GitLab, a ~DevOps software package which can develop, secure, and operate software. The open source software project was created by Ukrainian developer Dmytro Zaporozhets and Dutch developer Sytse Sijbrandij
>
>https://en.wikipedia.org/wiki/GitLab
Both GitLab and GitHub use [[Git]] a distributed version control system, that can be used to store, view and edit TiddlyWiki wikis using [[GitLab Pages|https://docs.gitlab.com/ee/user/project/pages/]]
Learn more at: [[Saving to a Git service]]

View File

@@ -0,0 +1,9 @@
created: 20171029155046637
modified: 20171029155227382
tags: [[Operator Examples]] [[stringify Operator]]
title: jsonstringify Operator (Examples)
type: text/vnd.tiddlywiki
<<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[jsonstringify[]]""">>
<<.operator-example 2 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 without suffix]] +[jsonstringify[]]""">>
<<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[jsonstringify:rawunicode[]]""">>

View File

@@ -1,9 +1,9 @@
created: 20161017154944352 created: 20161017154944352
modified: 20230919124059118 modified: 20171029155233487
tags: [[Operator Examples]] [[stringify Operator]] tags: [[Operator Examples]] [[stringify Operator]]
title: stringify Operator (Examples) title: stringify Operator (Examples)
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[stringify[]]""">> <<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[stringify[]]""">>
<<.operator-example 2 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 without suffix]] +[stringify[]]""">> <<.operator-example 2 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 without suffix]] +[stringify[]]""">>
<<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[stringify:rawunicode[]]""">> <<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[stringify:rawunicode[]]""">>

View File

@@ -1,12 +1,36 @@
caption: jsonstringify caption: jsonstringify
created: 20171029155051467 created: 20171029155051467
from-version: 5.1.14 from-version: 5.1.14
modified: 20230919124826880 modified: 20171029155143797
op-input: a [[selection of titles|Title Selection]]
op-output: the input with JSON string encodings applied
op-parameter: op-parameter:
op-parameter-name: op-parameter-name:
op-purpose: deprecated, use <<.olink stringify>> instead op-purpose: apply JSON string encoding to a string
op-suffix: <<.from-version "5.1.23">> optionally, the keyword `rawunicode`
op-suffix-name: R op-suffix-name: R
tags: [[Filter Operators]] [[String Operators]] tags: [[Filter Operators]] [[String Operators]]
title: jsonstringify Operator title: jsonstringify Operator
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
The following substitutions are made:
|!Character |!Replacement |!Condition |
|`\` |`\\` |Always |
|`"` |`\"` |Always |
|Carriage return (0x0d) |`\\r` |Always |
|Line feed (0x0a) |`\\n` |Always |
|Backspace (0x08) |`\\b` |Always |
|Form field (0x0c) |`\\f` |Always |
|Tab (0x09) |`\\t` |Always |
|Characters from 0x00 to 0x1f |`\\u####` where #### is four hex digits |Always |
|Characters from 0x80 to 0xffff|`\\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) |
|Characters from 0x80 to 0xffff|Unchanged |If `rawunicode` suffix is present <<.from-version "5.1.23">> |
<<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\\u` codes, which was the default behavior before 5.1.23.
<<.note """Technical note: Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.""">>
Also see the [[stringify Operator]].
<<.operator-examples "jsonstringify">>

View File

@@ -1,7 +1,6 @@
caption: stringify caption: stringify
created: 20161017153038029 created: 20161017153038029
from-version: 5.1.14 modified: 20171029155143797
modified: 20230919130847809
op-input: a [[selection of titles|Title Selection]] op-input: a [[selection of titles|Title Selection]]
op-output: the input with ~JavaScript string encodings applied op-output: the input with ~JavaScript string encodings applied
op-parameter: op-parameter:
@@ -12,25 +11,26 @@ op-suffix-name: R
tags: [[Filter Operators]] [[String Operators]] tags: [[Filter Operators]] [[String Operators]]
title: stringify Operator title: stringify Operator
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
from-version: 5.1.14
The following substitutions are made: The following substitutions are made:
|!Character |!Replacement |!Condition | |!Character |!Replacement |!Condition |
|`\` |`\\` |Always | |`\` |`\\` |Always |
|`"` |`\"` |Always | |`"` |`\"` |Always |
|Carriage return (0x0d) |`\r` |Always | |Carriage return (0x0d) |`\\r` |Always |
|Line feed (0x0a) |`\n` |Always | |Line feed (0x0a) |`\\n` |Always |
|Backspace (0x08) |`\b` |Always | |Backspace (0x08) |`\\b` |Always |
|Form field (0x0c) |`\f` |Always | |Form field (0x0c) |`\\f` |Always |
|Tab (0x09) |`\t` |Always | |Tab (0x09) |`\\t` |Always |
|Characters from 0x00 to 0x1f |`\x##` where ## is two hex digits |Always | |Characters from 0x00 to 0x1f |`\\x##` where ## is two hex digits |Always |
|Characters from 0x80 to 0xffff|`\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) | |Characters from 0x80 to 0xffff|`\\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) |
|Characters from 0x80 to 0xffff|<<.from-version "5.1.23">> Unchanged |If `rawunicode` suffix is present | |Characters from 0x80 to 0xffff|<<.from-version "5.1.23">> Unchanged |If `rawunicode` suffix is present |
<<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\u` codes, which was the default behavior before 5.1.23. <<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\\u` codes, which was the default behavior before 5.1.23.
<<.note """Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.""">> <<.note """Technical note: Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.""">>
<<.olink jsonstringify>> is considered deprecated, as it duplicates the functionality of <<.op stringify>>. Also see the [[jsonstringify Operator]].
<<.operator-examples "stringify">> <<.operator-examples "stringify">>

View File

@@ -1,6 +1,6 @@
created: 20130822170200000 created: 20130822170200000
list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]]
modified: 20230820112855583 modified: 20230701123439630
tags: TableOfContents tags: TableOfContents
title: HelloThere title: HelloThere
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@@ -1,7 +1,7 @@
created: 20220427174702859
modified: 20230809113620964
tags: [[JSON in TiddlyWiki]] Learning
title: Constructing JSON tiddlers title: Constructing JSON tiddlers
tags: [[JSON in TiddlyWiki]] [[Learning]]
created: 20220427174702859
modified: 20220427174702859
See [[JSON in TiddlyWiki]] for an overview of using JSON in TiddlyWiki. See [[JSON in TiddlyWiki]] for an overview of using JSON in TiddlyWiki.
@@ -13,4 +13,4 @@ At a high level, we have several ways to generate JSON data in TiddlyWiki's own
* [[jsontiddler Macro]] * [[jsontiddler Macro]]
* [[jsontiddlers Macro]] * [[jsontiddlers Macro]]
When constructing JSON data manually, the [[stringify Operator]] is needed to ensure that any special characters are properly escaped. When constructing JSON data manually, the [[jsonstringify Operator]] is needed to ensure that any special characters are properly escaped.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -1,14 +1,12 @@
caption: tag caption: tag
created: 20141206130540337 created: 20141206130540337
modified: 20230725201240201 modified: 20150221224326000
tags: Macros [[Core Macros]] tags: Macros [[Core Macros]]
title: tag Macro title: tag Macro
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
The <<.def tag>> [[macro|Macros]] generates a tag pill for a specified tag. Clicking the tag pill opens a dropdown. This can be compared to the [[tag-pill Macro]] which also features other parameters. The <<.def tag>> [[macro|Macros]] generates a tag pill for a specified tag. Clicking the tag pill opens a dropdown. This can be compared to the [[tag-pill Macro]] which also features other parameters.
<<.tip """If a [[list widget|ListWidget]] generates multiple tag macros for the same tag, clicking on one of them will open dropdowns on all of them. The simplest way to prevent this is to add the `counter="transclusion"` attribute to the list widget. See the examples below for more details.""">>
!! Parameters !! Parameters
;tag ;tag

View File

@@ -1,29 +1,8 @@
created: 20150221211317000 created: 20150221211317000
modified: 20230725203751870 modified: 20150221224519000
tags: [[tag Macro]] [[Macro Examples]] tags: [[tag Macro]] [[Macro Examples]]
title: tag Macro (Examples) title: tag Macro (Examples)
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<$macrocall $name=".example" n="1" eg="""<<tag>>"""/> <$macrocall $name=".example" n="1" eg="""<<tag>>"""/>
<$macrocall $name=".example" n="2" eg="""<<tag Concepts>>"""/> <$macrocall $name=".example" n="2" eg="""<<tag Concepts>>"""/>
If a [[list widget|ListWidget]] generates multiple tag macros for the same tag, clicking any of them opens dropdowns on all of them, as in the example below. This is usually unwanted.
<$macrocall $name=".example" n="3" eg="""<$list filter="[tag[HelloThere]]">
* <$link/> is tagged with: <$list filter="[<currentTiddler>tags[]]"> <<tag>> </$list>
</$list>"""/>
Adding the `counter="transclusion"` attribute to the list widget that generates multiple identical tag macros causes each of them to be identified as a unique one. Clicking on any of them opens only a single dropdown.
<$macrocall $name=".example" n="4" eg="""<$list filter="[tag[HelloThere]]" counter="transclusion">
* <$link/> is tagged with: <$list filter="[<currentTiddler>tags[]]"> <<tag>> </$list>
</$list>"""/>
A slightly more performant option is to use the `variable="transclusion"` attribute in the list widget. In this case, the variable `<<transclusion>>` has to be used inside the list widget instead of the `<<currentTiddler>>` .
<$macrocall $name=".example" n="5" eg="""<$list filter="[tag[HelloThere]]" variable="transclusion">
* <$link to=<<transclusion>>/> is tagged with: <$list filter="[<transclusion>tags[]]"> <<tag>> </$list>
</$list>"""/>

View File

@@ -1,6 +1,6 @@
caption: tm-open-window caption: tm-open-window
created: 20220228140417116 created: 20220228140417116
modified: 20230723220539648 modified: 20220409092811188
tags: Messages tags: Messages
title: WidgetMessage: tm-close-window title: WidgetMessage: tm-close-window
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -29,7 +29,7 @@ src="""
width="400" width="400"
height="500" height="500"
windowID="window1" windowID="window1"
something="I just flew in on a variable, and boy is my Hashmap tired." /> something="I just in over in a variable, and boy is my Hashmap tired." />
</$button> </$button>
<$button>Close Window <$button>Close Window
<$action-sendmessage <$action-sendmessage

View File

@@ -1,15 +1,15 @@
caption: tm-download-file
created: 20140811112201235 created: 20140811112201235
modified: 20230723214745520 modified: 20220123141646321
tags: Messages tags: Messages
title: WidgetMessage: tm-download-file title: WidgetMessage: tm-download-file
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
caption: tm-download-file
The download file message causes the current saver module to prompt the user to download the result of parsing a specified template tiddler as a file. It requires the following properties on the `event` object: The download file message causes the current saver module to prompt the user to download the result of parsing a specified template tiddler as a file. It requires the following properties on the `event` object:
|!Name |!Description | |!Name |!Description |
|param |Title of a tiddler to use as a template for the new tiddler | |param |Title of a tiddler to use as a template for the new tiddler |
|//{any other params}// |Any other parameters are made available as variables within the context of the widget message. | |paramObject |Optional hashmap of variable values to use for the rendering |
The following variable names have special behaviour: The following variable names have special behaviour:

View File

@@ -1,6 +1,6 @@
caption: tm-edit-bitmap-operation caption: tm-edit-bitmap-operation
created: 20160424204236050 created: 20160424204236050
modified: 20230723214716576 modified: 20160424215219517
tags: Messages tags: Messages
title: WidgetMessage: tm-edit-bitmap-operation title: WidgetMessage: tm-edit-bitmap-operation
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -30,12 +30,12 @@ Clears the contents of the image and fills it with a solid colour. Parameters in
\end \end
A `tm-edit-bitmap-operation` invokes one of the available operations on a __surrounding__ bitmap editor. Therefore the message has to be dispatched within the editor in order for it to catch it. The following properties on the `event` object are required: A `tm-edit-bitmap-operation` invokes one of the available operations on a __surrounding__ bitmap editor. Therefore the message has to be dispatched within the editor in order for it to catch it. The following properties on the `event` object are required:
|!Name |!Description | |!Name |!Description |
|param |Name of the operation to be executed, see ''below'' for a list of possible operations | |param |Name of the operation to be executed, see ''below'' for a list of possible operations |
|//{any other params}// |Any other parameters are made available as variables within the context of the widget message. | |paramObject| Hashmap of additional parameters required by the operation top be executed |
The `tm-edit-bitmap-operation` message is usually generated by a ButtonWidget or an ActionWidget and is handled by the surrounding bitmap editor. The `tm-edit-bitmap-operation` message is usually generated by a ButtonWidget or an ActionWidget and is handled by the surrounding bitmap editor.

View File

@@ -1,6 +1,6 @@
caption: tm-edit-text-operation caption: tm-edit-text-operation
created: 20160424211339792 created: 20160424211339792
modified: 20230723214636245 modified: 20210520053923011
tags: Messages tags: Messages
title: WidgetMessage: tm-edit-text-operation title: WidgetMessage: tm-edit-text-operation
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -121,7 +121,7 @@ A `tm-edit-text-operation` invokes one of the available operations on a __surrou
|!Name |!Description | |!Name |!Description |
|param |Name of the operation to be executed, see ''below'' for a list of possible operations | |param |Name of the operation to be executed, see ''below'' for a list of possible operations |
|//{any other params}// |Any other parameters are made available as variables within the context of the widget message. | |paramObject|Hashmap of additional parameters required by the operation top be executed |
The `tm-edit-text-operation` message is usually generated by a ButtonWidget or an ActionWidget and is handled by the surrounding text editor. The `tm-edit-text-operation` message is usually generated by a ButtonWidget or an ActionWidget and is handled by the surrounding text editor.

View File

@@ -1,6 +1,6 @@
caption: tm-focus-selector caption: tm-focus-selector
created: 20190628162542132 created: 20190628162542132
modified: 20230723215122038 modified: 20190628162542132
tags: Messages tags: Messages
title: WidgetMessage: tm-focus-selector title: WidgetMessage: tm-focus-selector
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -9,6 +9,6 @@ The `tm-focus-selector` message sets the focus to the DOM element identified by
|!Name |!Description | |!Name |!Description |
|param |Selector identifying the DOM element to be focussed | |param |Selector identifying the DOM element to be focussed |
|//{any other params}// |Any other parameters to be passed to the [[focus()|https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus]] method as variables.| |paramObject |Optional hashmap of additional parameters to be passed to the [[focus()|https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus]] method |
<<.tip """Use preventScroll="true" to prevent the browser from scrolling to the focused element""">> <<.tip """Use preventScroll="true" to prevent the browser from scrolling to the focused element""">>

View File

@@ -57,8 +57,6 @@ tags: $:/tags/Global
This demo uses the API of the website https://random.dog/ to import a random dog image or video. This demo uses the API of the website https://random.dog/ to import a random dog image or video.
//Note that the images and videos can be quite large, so this demo is not recommended to be used over mobile data connections.//
<$button actions=<<get-random-dog>>> <$button actions=<<get-random-dog>>>
Import a random dog image or video Import a random dog image or video
</$button> </$button>
@@ -82,7 +80,7 @@ Export all imported random dogs: <$macrocall $name="exportButton" exportFilter="
<$link> <$link>
<$text text=<<currentTiddler>>/> <$text text=<<currentTiddler>>/>
</$link> </$link>
<div style="width:300px;"> <div style="width:300px;height:300px;">
<$transclude $tiddler=<<currentTiddler>>/> <$transclude $tiddler=<<currentTiddler>>/>
</div> </div>
</li> </li>

View File

@@ -1,6 +1,6 @@
caption: tm-http-request caption: tm-http-request
created: 20230429161453032 created: 20230429161453032
modified: 20230723215344887 modified: 20230717104212742
tags: Messages tags: Messages
title: WidgetMessage: tm-http-request title: WidgetMessage: tm-http-request
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -11,7 +11,7 @@ It uses the following properties on the `event` object:
|!Name |!Description | |!Name |!Description |
|param |Not used | |param |Not used |
|//{any other params}// |Any other parameters are made available as variables within the context of the widget message. See below. | |paramObject |Hashmap of parameters (see below) |
The following parameters are used: The following parameters are used:
@@ -50,4 +50,4 @@ Note that the state tiddler $:/state/http-requests contains a number representin
!! Examples !! Examples
* [[Zotero's|https://www.zotero.org/]] API for retrieving reference items: [[WidgetMessage: tm-http-request Example - Zotero]] * [[Zotero's|https://www.zotero.org/]] API for retrieving reference items: [[WidgetMessage: tm-http-request Example - Zotero]]
* [[Random Dog's|https://random.dog/]] API for retrieving random pictures of dogs showing how to retrieve binary data: [[WidgetMessage: tm-http-request Example - Random Dog]] * [[Random Dog's|https://random.dog/]] API for retrieving random pictures of dogs showing how to retrieve binary data: [[WidgetMessage: tm-http-request Example - Random Dogs]]

View File

@@ -1,13 +1,13 @@
caption: tm-modal caption: tm-modal
created: 20140811112133701 created: 20140811112133701
modified: 20230723215434712 modified: 20201117081247738
tags: Messages tags: Messages
title: WidgetMessage: tm-modal title: WidgetMessage: tm-modal
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
|!Name |!Description | |!Name |!Description |
|param |Title of the tiddler to be displayed | |param |Title of the tiddler to be displayed |
|//{any other params}// |Any other parameters are made available as variables within the context of the widget message. | |paramObject |Hashmap of variables to be provided to the modal, contains all extra parameters passed to the widget sending the message. |
|rootwindow |<<.from-version 5.1.18>> ''yes'' or ''true'' will always display a modal in the wiki-root-window | |rootwindow |<<.from-version 5.1.18>> ''yes'' or ''true'' will always display a modal in the wiki-root-window |
The modal message is usually generated with the ButtonWidget. The modal message is handled by the TiddlyWiki core. The modal message is usually generated with the ButtonWidget. The modal message is handled by the TiddlyWiki core.

View File

@@ -1,6 +1,6 @@
caption: tm-new-tiddler caption: tm-new-tiddler
created: 20140226194405353 created: 20140226194405353
modified: 20230723215831560 modified: 20220521143507491
tags: Messages navigator-message tags: Messages navigator-message
title: WidgetMessage: tm-new-tiddler title: WidgetMessage: tm-new-tiddler
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -9,12 +9,12 @@ The new tiddler message creates a new draft tiddler and adds it to the current s
|!Name |!Description | |!Name |!Description |
|param |The optional title of a tiddler to use as a template for the new tiddler | |param |The optional title of a tiddler to use as a template for the new tiddler |
|//{any other params}// |The names and values of additional tiddler fields. | |paramObject |Optional hashmap of additional tiddler fields |
|navigateFromTitle |Title of the tiddler from which the navigation to the new tiddler was initiated | |navigateFromTitle |Title of the tiddler from which the navigation to the new tiddler was initiated |
The title for the draft tiddler is chosen according to these rules: The title for the draft tiddler is chosen according to these rules:
* If additional parameters were used and a title field was specified, use that title * If a hashmap was used and a title field was specified, use that title
* If a template tiddler was used, use the title of the template tiddler, making it unique with a numeric suffix * If a template tiddler was used, use the title of the template tiddler, making it unique with a numeric suffix
* Otherwise, generate a new title based on the default new tiddler title with a numeric suffix to make it unique * Otherwise, generate a new title based on the default new tiddler title with a numeric suffix to make it unique

View File

@@ -1,14 +1,14 @@
caption: tm-notify
created: 20140811112304772 created: 20140811112304772
modified: 20230723220728382 modified: 20160701140248738
tags: Messages tags: Messages
title: WidgetMessage: tm-notify title: WidgetMessage: tm-notify
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
caption: tm-notify
The notify message briefly displays a specified tiddler as a small alert in the upper right corner of the page. It requires the following properties on the `event` object: The notify message briefly displays a specified tiddler as a small alert in the upper right corner of the page. It requires the following properties on the `event` object:
|!Name |!Description | |!Name |!Description |
|param |Title of the tiddler to be displayed | |param |Title of the tiddler to be displayed |
|//{any other params}// |Any other parameters are made available as variables to the notify message. | |paramObject |Hashmap of variables to be provided to the notification |
The notify message is handled by the TiddlyWiki core. The notify message is handled by the TiddlyWiki core.

View File

@@ -1,6 +1,6 @@
caption: tm-open-external-window caption: tm-open-external-window
created: 20170121182300000 created: 201701211823
modified: 20230723220850135 modified: 201701211825
tags: Messages tags: Messages
title: WidgetMessage: tm-open-external-window title: WidgetMessage: tm-open-external-window
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -11,8 +11,7 @@ The `tm-open-external-window` message opens an external link eg: "https://tiddly
|!Name |!Description | |!Name |!Description |
|param |URL of the tiddler to be opened in a new browser window, defaults to the [[TiddlyWiki help|https://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window if empty]] | |param |URL of the tiddler to be opened in a new browser window, defaults to the [[TiddlyWiki help|https://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window if empty]] |
|//{any other params}// |Any other parameters are made available as variables to the window. See below. | |paramObject |Optional: Hashmap of variables that will be provided to the window. see below |
''parmObject'' ''parmObject''

View File

@@ -5,7 +5,7 @@ title: WidgetMessage: tm-permalink
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
caption: tm-permalink caption: tm-permalink
The `tm-permalink` message changes the browser address bar to form a [[permalink|PermaLinks]] to a specified tiddler, defaulting to the current tiddler. The resulting link will be copied to the clipboard. The `tm-permalink` message changes the browser address bar to form a [[permalink|PermaLinks]] to a specified tiddler, defaulting to the current tiddler.
The permalink message supports the following properties on the `event` object: The permalink message supports the following properties on the `event` object:

View File

@@ -1,15 +1,15 @@
caption: tm-save-wiki
created: 20140811112325641 created: 20140811112325641
modified: 20230723220944427 modified: 20141110133723696
tags: Messages tags: Messages
title: WidgetMessage: tm-save-wiki title: WidgetMessage: tm-save-wiki
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
caption: tm-save-wiki
The save wiki message causes the current saver module to perform a full save operation. The save operation can involve user interaction. It requires the following properties on the `event` object: The save wiki message causes the current saver module to perform a full save operation. The save operation can involve user interaction. It requires the following properties on the `event` object:
|!Name |!Description | |!Name |!Description |
|param |Title of a tiddler to use as a template for rendering the wiki (defaults to `$:/core/save/all`) | |param |Title of a tiddler to use as a template for rendering the wiki (defaults to `$:/core/save/all`) |
|//{any other params}// |Any other parameters are made available as variables to use for the rendering. | |paramObject |Optional hashmap of variable values to use for the rendering |
The save wiki message is usually generated by the ButtonWidget. The save wiki message is usually generated by the ButtonWidget.

View File

@@ -1,5 +1,5 @@
created: 20221007132845007 created: 20221007132845007
modified: 20230724184009153 modified: 20230518152756112
tags: Pragmas tags: Pragmas
title: Pragma: \procedure title: Pragma: \procedure
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -19,7 +19,7 @@ Note that the `\end` marker can optionally specify the name of the procedure to
There is also a single line form for shorter procedures: There is also a single line form for shorter procedures:
``` ```
\procedure <procedure-name>(<param-name>[:<param-default-value>],<param-name>[:<param-default-value>]...) <single-line-definition-text> \define <procedure-name>(<param-name>[:<param-default-value>],<param-name>[:<param-default-value>]...) <single-line-definition-text>
``` ```
The first line of the definition specifies the procedure name and any parameters. Each parameter has a name and, optionally, a default value that is used if no value is supplied on a particular call to the procedure. The lines that follow contain the text of the procedure text (i.e. the snippet represented by the procedure name), until `\end` appears on a line by itself: The first line of the definition specifies the procedure name and any parameters. Each parameter has a name and, optionally, a default value that is used if no value is supplied on a particular call to the procedure. The lines that follow contain the text of the procedure text (i.e. the snippet represented by the procedure name), until `\end` appears on a line by itself:

View File

@@ -1,5 +1,5 @@
created: 20220917112931273 created: 20220917112931273
modified: 20230724184044642 modified: 20230419103154329
tags: Pragmas tags: Pragmas
title: Pragma: \rules title: Pragma: \rules
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki
The ''\rules'' [[pragma|Pragmas]] adjusts the set of parser rules used to parse the remaining text. The ''\rules'' [[pragma|Pragmas]] adjusts the set of parser rules used to parse the remaining text.
``` ```
\rules only|except <rule-list> \rules only|expect <rule-list>
``` ```
The list of available parser rules can be consulted in $:/ControlPanel -> Info -> Advanced -> Parsing. The list of available parser rules can be consulted in $:/ControlPanel -> Info -> Advanced -> Parsing.

View File

@@ -1,17 +1,13 @@
created: 20220917113002350 created: 20220917113002350
modified: 20230921180332436 modified: 20230419103154329
tags: Pragmas tags: Pragmas
title: Pragma: \whitespace title: Pragma: \whitespace
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.from-version "5.1.15">> The ''\whitespace'' [[pragma|Pragmas]] determines how spaces and newlines are treated within wikitext. <<.from-version "5.1.15">> The ''\whitespace'' [[pragma|Pragmas]] determines how spaces and newlines are treated within wikitext. Note that this only applies to the printable text, and not to other text, such as the values of attributes.
* ''notrim'' -- whitespace text is not subject to special processing (the default) * ''notrim'' -- whitespace text is not subject to special processing (the default)
* ''trim'' -- whitespace text is ignored * ''trim'' -- whitespace text is removed
Note that the processing only applies to the printable text, and not to other text, such as the values of attributes.
The whitespace setting only applies to the parsed content in which it appears. The setting is inherited by embedded [[Procedure Definitions]] and [[Custom Widgets]] definitions, but is not inherited by [[Macro definitions]].
``` ```
\whitespace trim|notrim \whitespace trim|notrim

View File

@@ -1,5 +1,5 @@
created: 20221007125701001 created: 20221007125701001
modified: 20230921180332436 modified: 20230419103154329
tags: WikiText Procedures tags: WikiText Procedures
title: Procedure Definitions title: Procedure Definitions
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -13,13 +13,11 @@ This tiddler describes the different ways in which [[Procedures|Procedures]] can
Procedures are created using the [[Pragma: \procedure]] at the start of a tiddler. The definitions are available in the rest of the tiddler that defines them, plus any tiddlers that it transcludes. Procedures are created using the [[Pragma: \procedure]] at the start of a tiddler. The definitions are available in the rest of the tiddler that defines them, plus any tiddlers that it transcludes.
``` ```
\procedure my-procedure(param) \define my-procedure(param)
This is the procedure text (param=<<param>>) This is the procedure text (param=<<param>>)
\end \end
``` ```
Note that the [[Pragma: \whitespace]] setting is inherited from the parsing context in which the procedure definition occurs. That means that a tiddler containing multiple procedure definitions only needs a single whitespace pragma at the top of the tiddler, and the setting will be automatically inherited by the procedure definitions without needing the pragma to be repeated.
!! Procedure Definition with Set Widget !! Procedure Definition with Set Widget
Procedures are implemented as a special kind of [[variable|Variables]] and so internally are actually defined with a <<.wlink SetWidget>> widget. Procedures are implemented as a special kind of [[variable|Variables]] and so internally are actually defined with a <<.wlink SetWidget>> widget.

View File

@@ -4,7 +4,7 @@ created: 20190408173002622
delivery: Service delivery: Service
description: Save changes directly to a Git repository (on GitHub, GitLab) description: Save changes directly to a Git repository (on GitHub, GitLab)
method: save method: save
modified: 20230723074211772 modified: 20200507203007684
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows iOS Edge tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows iOS Edge
title: Saving to a Git service title: Saving to a Git service
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -24,7 +24,3 @@ Saving to a Git service is configured in the [[$:/ControlPanel]] in the ''Git Se
Notes Notes
* The Git service token or password is stored persistently in browser local storage. Be sure to clear the password if using a shared machine. Using a personal access token for authentication offers an extra layer of security: if the access token is accidentally exposed it can be revoked without needing to reset the account password * The Git service token or password is stored persistently in browser local storage. Be sure to clear the password if using a shared machine. Using a personal access token for authentication offers an extra layer of security: if the access token is accidentally exposed it can be revoked without needing to reset the account password
---
For a more detailed info about the ~GitHub saver see: [[GitHub Saver Tutorial by Mohammad]]

View File

@@ -6,4 +6,4 @@ tags: SystemTags
title: SystemTag: $:/tags/Macro title: SystemTag: $:/tags/Macro
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
The [[system tag|SystemTags]] `$:/tags/Macro` marks global macros. It is now deprecated in favour of [[SystemTag: $:/tags/Global]]. The [[system tag|SystemTags]] `$:/tags/Macro` marks global macros. It is now deprecated in favour of [[SystemTag $:/tags/Global]].

View File

@@ -1,52 +0,0 @@
created: 20230726145210484
modified: 20230726145757234
tags: [[Variable Usage]]
title: Behaviour of invoked variables depends on how the variable was declared
type: text/vnd.tiddlywiki
\define m1(a1) $a1$ - <<__a1__>> - <<a1>>
\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>>
\function f1(a1) "$a1$" "-" [<__a1__>] ="-" [<a1>] :and[join[ ]]
Invoked in normal wikitext context: `<$transclude $variable=macro/>` or `<<macro>>`
{{Behaviour of variables invoked via normal wikitext}}
Invoked via widget attribute: `<div class=<<macro>>/>`
{{Behaviour of variables invoked via widget attributes}}
Invoked via filter operator parameter: `[<macro>]`
{{Behaviour of variables invoked via filter operator parameter}}
Invoked via function call in a filter expression: `[function[macro]]`
{{Behaviour of variables invoked via filter expression function call}}
!! Examples
Below is an example macro, procedure and function definition. All three forms of parameter substitution `$a1$`, `<<__a1__>>`, and `<<a1>>` are included in each definition. The output helps illustrate when each form of substitution will or will not have affect.
```
\define m1(a1) $a1$ - <<__a1__>> - <<a1>>
\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>>
\function f1(a1) $a1$ "-" [<__a1__>] ="-" [<a1>] :and[join[ ]]
```
| !Variable transclusion|!output |
| `<<m1 foo>>`|<<m1 foo>>|
| `<<p1 foo>>`|<<p1 foo>>|
| `<<f1 foo>>`|<<f1 foo>>|
| !Widget attribute|!output |
| `<$text text=<<m1 foo>>/>`|<$text text=<<m1 foo>>/>|
| `<$text text=<<p1 foo>>/>`|<$text text=<<p1 foo>>/>|
| `<$text text=<<f1 foo>>/>`|<$text text=<<f1 foo>>/>|
| !Filter operator parameter|!output |
| `[<m1 foo>]`|<$text text={{{[<m1 foo>]}}}/>|
| `[<p1 foo>]`|<$text text={{{[<p1 foo>]}}}/>|
| `[<f1 foo>]`|<$text text={{{[<f1 foo>]}}}/>|
| !Function call in filter expression|!output |
| `[function[m1],[foo]]`|<$text text={{{[function[m1],[foo]]}}}/>|
| `[function[p1],[foo]]`|<$text text={{{[function[p1],[foo]]}}}/>|
| `[function[f1],[foo]]`|<$text text={{{[function[f1],[foo]]}}}/>|

View File

@@ -1,10 +0,0 @@
created: 20230726143929233
modified: 20230726150604831
tags: [[Variable Usage]]
title: Behaviour of variables invoked via filter expression function call
type: text/vnd.tiddlywiki
|tc-first-col-min-width|k
|!how declared|!behaviour|
|\define, <<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Every function is a variable, but only variables defined using \function are invokable using the <<.olink function>> filter operator. Attempts to use a non-function variable is the same as if the function doesn't exist. The behavior in this case is like the identity function. All filter input is passed unchanged to the output.|
|\function|The body text of the function is treated as a filter expression and evaluated. This filter expression can itself contain a function call. Filter expressions can be factored out into functions arbitrarily deep.|

View File

@@ -1,11 +0,0 @@
created: 20230726143617389
modified: 20230726150625716
tags: [[Variable Usage]]
title: Behaviour of variables invoked via filter operator parameter
type: text/vnd.tiddlywiki
|tc-first-col-min-width|k
|!how declared|!behaviour|
|\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the filter operator's parameter.|
|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the filter operator's parameter.|
|\function|The body text of the function is treated as a filter expression and evaluated. The first result is passed to the operator as a parameter. The remaining results are discarded.|

View File

@@ -1,11 +0,0 @@
created: 20230726142925020
modified: 20230726150648189
tags: [[Variable Usage]]
title: Behaviour of variables invoked via normal wikitext
type: text/vnd.tiddlywiki
|tc-first-col-min-width|k
|!how declared|!behaviour|
|\define|All wikitext and variable substitution and textual substitution takes place|
|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|All wikitext and variable substitution takes place|
|\function|Invoking a function in this way (`<<macro>>`) is a synonym for `<$text text={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded|

View File

@@ -1,11 +0,0 @@
created: 20230726143332803
modified: 20230726150616232
tags: [[Variable Usage]]
title: Behaviour of variables invoked via widget attributes
type: text/vnd.tiddlywiki
|tc-first-col-min-width|k
|!how declared|!behaviour|
|\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the attribute's value|
|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the attribute's value.|
|\function|When a function is invoked as `<div class=<<macro>>/>`, it is a synonym for `<div class={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded. That first result is used as the attribute's value. Note that functions are recursively processed even when invoked in this form. In other words a filter expression in a function can invoke another function and the processing will continue|

View File

@@ -1,9 +1,13 @@
created: 20230421020225031 created: 20230421020225031
modified: 20230726145912019 modified: 20230422144812613
tags: tags:
title: Variable Usage title: Variable Usage
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define m1(a1) $a1$ - <<__a1__>> - <<a1>>
\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>>
\function f1(a1) "$a1$" "-" [<__a1__>] ="-" [<a1>] :and[join[ ]]
!Ways to define variables and parameters !Ways to define variables and parameters
|! how declared|! how parameters are defined|! accessing parameter values in the body| |! how declared|! how parameters are defined|! accessing parameter values in the body|
|\define|`()`|`$param$, <<__param__>>`| |\define|`()`|`$param$, <<__param__>>`|
@@ -96,10 +100,50 @@ These examples are meant to provide insight into the various ways of defining an
</$let> </$let>
!Behaviour of invoked variables depends on how the variable was declared !Behavior of invoked variables depends on how the variable was declared
{{Behaviour of invoked variables depends on how the variable was declared}} |!how invoked|!how declared|!behavior|
|`<$transclude $variable=macro/>` or `<<macro>>` in normal wikitext context|\define|All wikitext and variable substitution and textual substitution takes place|
|~|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|All wikitext and variable substitution takes place|
|~|\function|Invoking a function in this way (`<<macro>>`) is a synonym for `<$text text={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded.|
||||
|widget attribute: `<div class=<<macro>>/>`|\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the attribute's value|
|~|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the attribute's value.|
|~|\function|When a function is invoked as `<div class=<<macro>>/>`, it is a synonym for `<div class={{{[function[macro]]}}}/>`. As with any filtered transclusion (i.e. triple curly braces), all results except the first are discarded. That first result is used as the attribute's value. Note that functions are recursively processed even when invoked in this form. In other words a filter expression in a function can invoke another function and the processing will continue|
||||
|filter operator parameter: `[<macro>]`|\define|Textual substitution of parameters is performed on the body text. No further processing takes place. The result after textual substitution is used as the filter operator's parameter.|
|~|<<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Body text is retrieved as-is and used as the filter operator's parameter.|
|~|\function|The body text of the function is treated as a filter expression and evaluated. The first result is passed to the operator as a parameter. The remaining results are discarded|
||||
|function call in a filter expression: `[function[macro]]`|\define, <<.wlink SetWidget>>, <<.wlink LetWidget>>, <<.wlink VarsWidget>>, \procedure, \widget|Every function is a variable, but only variables defined using \function are invokable using the <<.olink function>> filter operator. Attempts to use a non-function variable is the same as if the function doesn't exist. The behavior in this case is like the identity function. All filter input is passed unchanged to the output.|
|~|\function|The body text of the function is treated as a filter expression and evaluated. This filter expression can itself contain a function call. Filter expressions can be factored out into functions arbitrarily deep.|
!! Examples
Below is an example macro, procedure and function definition. All three forms of parameter substitution `$a1$`, `<<__a1__>>`, and `<<a1>>` are included in each definition. The output helps illustrate when each form of substitution will or will not have affect.
```
\define m1(a1) $a1$ - <<__a1__>> - <<a1>>
\procedure p1(a1) $a1$ - <<__a1__>> - <<a1>>
\function f1(a1) $a1$ "-" [<__a1__>] ="-" [<a1>] :and[join[ ]]
```
| !Variable transclusion|!output |
| `<<m1 foo>>`|<<m1 foo>>|
| `<<p1 foo>>`|<<p1 foo>>|
| `<<f1 foo>>`|<<f1 foo>>|
| !Widget attribute|!output |
| `<$text text=<<m1 foo>>/>`|<$text text=<<m1 foo>>/>|
| `<$text text=<<p1 foo>>/>`|<$text text=<<p1 foo>>/>|
| `<$text text=<<f1 foo>>/>`|<$text text=<<f1 foo>>/>|
| !Filter operator parameter|!output |
| `[<m1 foo>]`|<$text text={{{[<m1 foo>]}}}/>|
| `[<p1 foo>]`|<$text text={{{[<p1 foo>]}}}/>|
| `[<f1 foo>]`|<$text text={{{[<f1 foo>]}}}/>|
| !Function call in filter expression|!output |
| `[function[m1],[foo]]`|<$text text={{{[function[m1],[foo]]}}}/>|
| `[function[p1],[foo]]`|<$text text={{{[function[p1],[foo]]}}}/>|
| `[function[f1],[foo]]`|<$text text={{{[function[f1],[foo]]}}}/>|
!Namespaces !Namespaces

View File

@@ -1,6 +1,6 @@
caption: action-listops caption: action-listops
created: 20141025120850184 created: 20141025120850184
modified: 20230805103548113 modified: 20230301183438774
myfield: myfield:
tags: ActionWidgets Widgets tags: ActionWidgets Widgets
title: ActionListopsWidget title: ActionListopsWidget
@@ -22,28 +22,6 @@ The ''action-listops'' widget is invisible. Any content within it is ignored.
|$subfilter |An optional subfilter expression, which takes the list being manipulated as input, and saves the modified list back to the field/index being manipulated | |$subfilter |An optional subfilter expression, which takes the list being manipulated as input, and saves the modified list back to the field/index being manipulated |
|$tags |An optional subfilter expression, which takes the <<.field tags>> field of the target tiddler as input, and saves the modified list of tags back to the <<.field tags>> field | |$tags |An optional subfilter expression, which takes the <<.field tags>> field of the target tiddler as input, and saves the modified list of tags back to the <<.field tags>> field |
!! Note on subfilter expressions
If the manipulation depends on the current contents of the list, e.g. when using the <<.olink toggle>> operator to toggle the presence of an element, the [[Filter Run]] would be prefixed with the `+` / `:and` [[filter run prefix|Filter Expression]] so that it properly receives the list as input.
```
<$action-listops $subfilter="+[toggle[List Item]]"/>
```
The above widget will toggle the presence of the element <<.value "List Item">> in the field <<.field list>> of the current tiddler, removing or adding the element as necessary.
Similarly, if an element is to always be removed when it is present, the `-` / `:except` [[filter run prefix|Filter Expression]] can be used. Both of the following yield the same result:
```
<$action-listops $subfilter="-[[List Item]]"/>
<$action-listops $subfilter="+[remove[List Item]]"/>
```
Without any prefixes, the filter run output is simply [[dominantly appended|Dominant Append]] to the list.
See also the [[Examples|ActionListopsWidget (Examples)]].
!! Using $filter or $subfilter !! Using $filter or $subfilter
Standalone use of the `$subfilter` attribute can be replaced by using a (more complicated) `$filter` attribute value. Standalone use of the `$subfilter` attribute can be replaced by using a (more complicated) `$filter` attribute value.
@@ -125,4 +103,4 @@ Add 'abc' to 'myfield'
The [[enlist Operator]] with `raw` suffix will enlist the list saved in <<.field myfield>> of the current tiddler without de-duplication, while e.g. the [[list Operator]] will always de-duplicate. The widget then adds the item <<.value abc>> -- whether or not it is already included in the list -- and replaces the original list in <<.field myfield>>. The [[enlist Operator]] with `raw` suffix will enlist the list saved in <<.field myfield>> of the current tiddler without de-duplication, while e.g. the [[list Operator]] will always de-duplicate. The widget then adds the item <<.value abc>> -- whether or not it is already included in the list -- and replaces the original list in <<.field myfield>>.
! [[Examples|ActionListopsWidget (Examples)]] ! [[Examples|ActionListopsWidget (Examples)]]

View File

@@ -1,6 +1,6 @@
caption: action-popup caption: action-popup
created: 20200303114556528 created: 20200303114556528
modified: 20230731193016105 modified: 20220815205132124
tags: Widgets ActionWidgets tags: Widgets ActionWidgets
title: ActionPopupWidget title: ActionPopupWidget
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -30,6 +30,6 @@ Here is an example of button that triggers the "more" button in the sidebar "Too
<$macrocall $name='wikitext-example-without-html' <$macrocall $name='wikitext-example-without-html'
src='<$button> src='<$button>
<$action-setfield $tiddler="$:/state/tab/sidebar--595412856" $value="$:/core/ui/SideBar/Tools"/> <$action-setfield $tiddler="$:/state/tab/sidebar--595412856" $value="$:/core/ui/SideBar/Tools"/>
<$action-popup $state="$:/state/popup/more--810643385" $coords="(0,20,0,0)"/> <$action-popup $state="$:/state/popup/more-2053862905" $coords="(0,20,0,0)"/>
Click me! Click me!
</$button>'/> </$button>'/>

View File

@@ -1,5 +1,5 @@
created: 20221007144237585 created: 20221007144237585
modified: 20230921180332436 modified: 20230419103154328
tags: Concepts Reference tags: Concepts Reference
title: Custom Widgets title: Custom Widgets
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -22,8 +22,6 @@ This is the widget, and the attribute is <<attribute>>.
The name of the widget must start with a dollar sign. If it is a user defined widget that does not override an existing widget then it must include at least one period (dot) within the name (for example `$my.widget` or `$acme.logger`). The name of the widget must start with a dollar sign. If it is a user defined widget that does not override an existing widget then it must include at least one period (dot) within the name (for example `$my.widget` or `$acme.logger`).
Note that the [[Pragma: \whitespace]] setting is inherited from the parsing context in which the procedure definition occurs. That means that a tiddler containing multiple procedure definitions only needs a single whitespace pragma at the top of the tiddler, and the setting will be automatically inherited by the procedure definitions without needing the pragma to be repeated.
!! Using Custom Widgets !! Using Custom Widgets
Custom widgets are called in the same way as ordinary built-in widgets: Custom widgets are called in the same way as ordinary built-in widgets:

View File

@@ -20,7 +20,7 @@ The content of the <<.wid genesis>> widget is used as the content of the dynamic
|$mode |An optional override of the parsing mode. May be "inline" or "block" | |$mode |An optional override of the parsing mode. May be "inline" or "block" |
|//{other attributes starting with $}// |Other attributes starting with a single dollar sign are reserved for future use | |//{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 applied as attributes to the output widget, but with the attribute name changed to use a single dollar sign | |//{attributes starting with $$}// |Attributes starting with two dollar signs are applied 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 or HTML Element | |//{attributes not starting with $}// |Any other attributes that do not start with a dollar are applied as attributes to the output widget |
<<.from-version "5.2.6">> If the `$type` attribute is missing or blank, the <<.wlink GenesisWidget>> widget does not render an intrinsic element, instead just rendering its children. <<.from-version "5.2.6">> If the `$type` attribute is missing or blank, the <<.wlink GenesisWidget>> widget does not render an intrinsic element, instead just rendering its children.

View File

@@ -1,6 +1,6 @@
caption: list caption: list
created: 20131024141900000 created: 20131024141900000
modified: 20230725203601441 modified: 20220718120325494
tags: Widgets Lists tags: Widgets Lists
title: ListWidget title: ListWidget
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -119,8 +119,6 @@ Displays as:
Note that using the `counter` attribute can reduce performance when working with list items that dynamically reorder or update themselves. The best advice is only to use it when it is really necessary: to obtain a numeric index, or to detect the first or last entries in the list. Note that using the `counter` attribute can reduce performance when working with list items that dynamically reorder or update themselves. The best advice is only to use it when it is really necessary: to obtain a numeric index, or to detect the first or last entries in the list.
Setting `counter="transclusion"` is a handy way to make child elements for each list element be identified as unique. A common use case are multiple [[tag macros|tag Macro]] for the same tag generated by a list widget. Refer to [[tag macro examples|tag Macro (Examples)]] for more details.
!! Edit mode !! Edit mode
The `<$list>` widget can optionally render draft tiddlers through a different template to handle editing, see DraftMechanism. The `<$list>` widget can optionally render draft tiddlers through a different template to handle editing, see DraftMechanism.

View File

@@ -1,6 +1,6 @@
caption: scrollable caption: scrollable
created: 20140324223413403 created: 20140324223413403
modified: 20220620115347910 modified: 20230731100903977
tags: Widgets tags: Widgets
title: ScrollableWidget title: ScrollableWidget
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -16,12 +16,15 @@ The content of the `<$scrollable>` widget is displayed within a pair of wrapper
|!Attribute |!Description | |!Attribute |!Description |
|class |The CSS class(es) to be applied to the outer DIV | |class |The CSS class(es) to be applied to the outer DIV |
|fallthrough |See below | |fallthrough |See below |
|bind |<<.from-version "5.3.2">> Optional title of tiddler to which the scroll position should be bound |
Binding the scroll position to a tiddler automatically copies the scroll coordinates into the `scroll-left` and `scroll-top` fields as scrolling occurs. Conversely, setting those field values will automatically cause the scrollable to scroll if it can.
<$macrocall $name=".note" _="""If a scrollable widget can't handle the `tm-scroll` message because the inner DIV fits within the outer DIV, then by default the message falls through to the parent widget. Setting the ''fallthrough'' attribute to `no` prevents this behaviour."""/> <$macrocall $name=".note" _="""If a scrollable widget can't handle the `tm-scroll` message because the inner DIV fits within the outer DIV, then by default the message falls through to the parent widget. Setting the ''fallthrough'' attribute to `no` prevents this behaviour."""/>
! Examples ! Examples
This example requires the following CSS definitions from [[$:/_tw5.com-styles]]: These examples require the following CSS definitions from [[$:/_tw5.com-styles]]:
``` ```
.tc-scrollable-demo { .tc-scrollable-demo {
@@ -33,6 +36,8 @@ This example requires the following CSS definitions from [[$:/_tw5.com-styles]]:
} }
``` ```
!! Simple Usage
This wiki text shows how to display a list within the scrollable widget: This wiki text shows how to display a list within the scrollable widget:
<<wikitext-example-without-html "<$scrollable class='tc-scrollable-demo'> <<wikitext-example-without-html "<$scrollable class='tc-scrollable-demo'>
@@ -46,3 +51,23 @@ This wiki text shows how to display a list within the scrollable widget:
</$scrollable> </$scrollable>
">> ">>
!! Binding scroll position to a tiddler
[[Current scroll position|$:/my-scroll-position]]: {{$:/my-scroll-position!!scroll-left}}, {{$:/my-scroll-position!!scroll-top}}
<$button>
<$action-setfield $tiddler="$:/my-scroll-position" scroll-left="100" scroll-top="100"/>
Set current scroll position to 100,100
</$button>
<<wikitext-example-without-html "<$scrollable class='tc-scrollable-demo' bind='$:/my-scroll-position'>
<$list filter='[tag[Reference]]'>
<$view field='title'/>: <$list filter='[all[current]links[]sort[title]]' storyview='pop'>
<$link><$view field='title'/></$link>
</$list>
</$list>
</$scrollable>
">>

View File

@@ -18,11 +18,11 @@ Transclusion is the underlying mechanism for many higher level wikitext features
Here is a complete example showing the important features of the <<.wlink TranscludeWidget>> widget: Here is a complete example showing the important features of the <<.wlink TranscludeWidget>> widget:
``` ```
\procedure myproc(name,age) \procedure mymacro(name,age)
My name is <<name>> and my age is <<age>>. My name is <<name>> and my age is <<age>>.
\end \end
<$transclude $variable="myproc" name="James" age="19"/> <$transclude $variable="mymacro" name="James" age="19"/>
``` ```
* `\procedure` defines a variable as a procedure with two parameters, ''name'' and ''age'' * `\procedure` defines a variable as a procedure with two parameters, ''name'' and ''age''

View File

@@ -1,9 +1,8 @@
created: 20230301174431218 created: 20230301174431218
list: efg hlm pqr list: efg hlm pqr
modified: 20230805103601224 modified: 20230301174431218
myfield: myfield:
revision: 0 revision: 0
tags: ActionListopsWidget
title: ActionListopsWidget (Examples) title: ActionListopsWidget (Examples)
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -48,16 +47,6 @@ Unmangle List
</$list>"""/> </$list>"""/>
---
The following example toggles the tag <<.value Examples>> for the current tiddler.
<$macrocall $name='wikitext-example-without-html'
src="""<$button>
<$action-listops $tags="+[toggle[Examples]]"/>
Toggle 'Examples' tag
</$button>
"""/>
--- ---
In this example we shall append a few tags to the 'tags' field of this tiddler (the default). We shall then remove some of the appended tags. In this example we shall append a few tags to the 'tags' field of this tiddler (the default). We shall then remove some of the appended tags.

View File

@@ -1,23 +1,21 @@
caption: Styles and Classes
created: 20131205160532119 created: 20131205160532119
modified: 20230726105744098 modified: 20131205160549129
tags: WikiText [[How to apply custom styles]] tags: WikiText [[How to apply custom styles]]
title: Styles and Classes in WikiText title: Styles and Classes in WikiText
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
caption: Styles and Classes
CSS styles and classes can be applied to inline or block content wrapped in `@@double at signs@@`. Classes can be applied to certain block WikiText elements. Content can be wrapped in `@@`double at signs`@@` to apply specified CSS styles or classes to it. There are multiple ways to use this syntax, as presented below.
//Inline content// wrapped in `@@double at signs@@` without specifying style or class will be assigned the `tc-inline-style` class and displayed as highlighted text. The foreground and background colours of the highlighted text are defined as `highlight-background` and `highlight-foreground` in the current palette. Inline content wrapped in `@@`double at signs`@@` without specifying style or class will be assigned the `.tc-inline-style` and displayed as highlighted text. The foreground and background colours of the highlighted text are defined as `highlight-background` and `highlight-foreground` in the current palette.
<<wikitext-example src:"@@Highlighted text@@">> <<wikitext-example src:"@@some highlighted text@@">>
!! Styles Style attributes, e.g. `color`, each followed by `;` semicolon can be introduced immediately after the opening `@@`.
Multiple style attributes, e.g. `color`, each followed by `;` semicolon can be introduced immediately after the opening `@@`, without spaces in between. <<wikitext-example src:"@@color:steelblue;background-color:lightcyan;some styled text@@">>
<<wikitext-example src:"@@color:steelblue;background-color:lightcyan;Text with custom style@@">> Similarly a style can be applied to a multiline content:
Similarly, styles can be applied to //block content//. Wrapping block content in `@@` without specifying style or class has no effect.
<<wikitext-example src:"@@background-color:lightcyan; <<wikitext-example src:"@@background-color:lightcyan;
* Item one * Item one
@@ -25,49 +23,18 @@ Similarly, styles can be applied to //block content//. Wrapping block content in
@@ @@
">> ">>
!! Classes A class may be applied to a multiline content only:
The following `coloured-text` and `coloured-bg` classes are defined in this tiddler for demonstration purposes: <<wikitext-example src:"@@.tc-double-spaced-list
* Item one
* Item two
```
.coloured-text {color: darkkhaki;}
.coloured-bg {background-color: cornsilk;}
```
<style>
.coloured-text {color: darkkhaki;}
.coloured-bg {background-color: cornsilk;}
</style>
Multiple classes, each prefixed with `.`, can be introduced immediately after the opening `@@`, followed by a ` ` space. This works both for inline and block content:
<<wikitext-example src:"@@.coloured-text.coloured-bg Inline content with two assigned classes@@">>
<<wikitext-example src:"@@.coloured-bg
* Block content
* With one assigned class
@@">> @@">>
Multiple classes and styles can be applied simultaneously. In case of inline content, the styles have to be defined first, followed by the classes. Multiple classes and styles can be used together:
<<wikitext-example src:"@@font-size:1.5em;.coloured-text.coloured-bg Text with custom style and classes@@">> <<wikitext-example src:"@@.tc-double-spaced-list
@@width:400px;background-color:lightcyan;
In case of block content, the styles and classes can be defined in a single line after the opening `@@` identically as for the inline content, or in separate lines, each beginning with `@@`: * Item one
* Item two
<<wikitext-example src:"@@font-size:1.5em; @@
@@.coloured-text ">>
@@.coloured-bg
* Block content
* With custom style and classes
@@">>
In a similar way classes, but not styles, can be applied to those block WikiText elements that are introduced through characters on the beginning of the line. The classes prefixed with `.` are specified immediately after the special characters, followed by a ` ` space.
<<wikitext-example src:"!!!.coloured-bg Heading with a custom background class.
* Standard list element.
*.coloured-bg List element with a custom background colour class.
*.coloured-text List element with a custom text colour class.
*.coloured-bg.coloured-text List element with both of the custom classes.
">>

View File

@@ -1,5 +1,5 @@
created: 20230615045239825 created: 20230615045239825
modified: 20230726151053593 modified: 20230615045312961
tags: [[Widget Attributes]] WikiText tags: [[Widget Attributes]] WikiText
title: Variable Attribute Values title: Variable Attribute Values
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@@ -11,7 +11,4 @@ Variable attribute values are indicated with double angle brackets around a [[ma
... ...
</div> </div>
``` ```
<<.warning "The text from the definition of the macro will be retrieved and text substitution will be performed (i.e. <<.param $param$>> and <<.param &#36;(...)&#36;>> syntax). The value of the attribute value will be the resulting text. Any wiki syntax in that text (including further macro calls and variable references) will be left as-is.">>
The behaviour of variables invoked via widget attributes is not the same as when they are [[invoked via normal wikitext|Behaviour of variables invoked via normal wikitext]]. In addition, the behaviour depends on how the variable is declared:
{{Behaviour of variables invoked via widget attributes}}

View File

@@ -1,10 +1,10 @@
created: 20230615045526689 created: 20230615045526689
modified: 20230731210638956 modified: 20230615060059476
tags: WikiText tags: WikiText
title: Widget Attributes title: Widget Attributes
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
Attributes of [[HTML elements|HTML in WikiText]] and widgets can be specified in several different ways: Attributes of HTML elements and widgets can be specified in several different ways:
* [[a literal string|Literal Attribute Values]] * [[a literal string|Literal Attribute Values]]
* [[a transclusion of a textReference|Transcluded Attribute Values]] * [[a transclusion of a textReference|Transcluded Attribute Values]]
@@ -19,8 +19,3 @@ Attributes of [[HTML elements|HTML in WikiText]] and widgets can be specified in
|filtered |triple curly braces around a filter expression| |filtered |triple curly braces around a filter expression|
|substituted|single or triple backticks around the text to be processed for substitutions| |substituted|single or triple backticks around the text to be processed for substitutions|
<$list filter="[[Literal Attribute Values]] [[Transcluded Attribute Values]] [[Variable Attribute Values]] [[Filtered Attribute Values]] [[Substituted Attribute Values]]">
<$link><h1><$text text=<<currentTiddler>>/></h1></$link>
<$transclude mode="block"/>
</$list>

View File

@@ -20,7 +20,6 @@ Note that widgets inherit all the features of [[HTML in WikiText]]:
** Macro invocations (eg `attr=<<myMacro>>`) ** Macro invocations (eg `attr=<<myMacro>>`)
** Transclusions (eg, `attr={{MyTiddler!!field}}`) ** Transclusions (eg, `attr={{MyTiddler!!field}}`)
** Filtered transclusions (eg, `attr={{{ [filter[op]] }}}`) ** Filtered transclusions (eg, `attr={{{ [filter[op]] }}}`)
** <<.from-version "5.3.0">> [[Substituted Attribute Values]]
* The content of a widget is [[parsed|WikiText Parser Modes]] in [[inline mode|Inline Mode WikiText]] unless the opening tag is followed by two linebreaks, which forces [[block mode|Block Mode WikiText]] * The content of a widget is [[parsed|WikiText Parser Modes]] in [[inline mode|Inline Mode WikiText]] unless the opening tag is followed by two linebreaks, which forces [[block mode|Block Mode WikiText]]
** [[inline mode|Inline Mode WikiText]] means that [[block mode|Block Mode WikiText]] parse rules like headings, tables and lists are not recognised ** [[inline mode|Inline Mode WikiText]] means that [[block mode|Block Mode WikiText]] parse rules like headings, tables and lists are not recognised

View File

@@ -49,7 +49,7 @@
"static": [ "static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain", "--render","$:/core/templates/static.template.html","static.html","text/plain",
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain", "--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html", "--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain","$:/core/templates/static.tiddler.html",
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"], "--render","$:/core/templates/static.template.css","static/static.css","text/plain"],
"external-js": [ "external-js": [
"--render","$:/core/save/offline-external-js","[[external-]addsuffix<version>addsuffix[.html]]","text/plain", "--render","$:/core/save/offline-external-js","[[external-]addsuffix<version>addsuffix[.html]]","text/plain",

View File

@@ -67,8 +67,6 @@ More/Caption: Más
More/Hint: Otras acciones More/Hint: Otras acciones
NewHere/Caption: Nuevo aquí NewHere/Caption: Nuevo aquí
NewHere/Hint: Crea un nuevo tiddler etiquetado con el título de este tiddler NewHere/Hint: Crea un nuevo tiddler etiquetado con el título de este tiddler
NetworkActivity/Caption: actividad de red
NetworkActivity/Hint: Cancelar la actividad de red
NewJournal/Caption: Nueva entrada NewJournal/Caption: Nueva entrada
NewJournal/Hint: Crea una nueva entrada de diario NewJournal/Hint: Crea una nueva entrada de diario
NewJournalHere/Caption: Entrada nueva aquí NewJournalHere/Caption: Entrada nueva aquí

View File

@@ -1,13 +1,11 @@
title: $:/language/Docs/Fields/ title: $:/language/Docs/Fields/
_canonical_uri: Dirección (URI) completa -absoluta o relativa- de un tiddler externo de imagen _canonical_uri: Dirección (URI) completa -absoluta o relativa- de un tiddler externo de imagen
author: Nombre del autor de un plugin
bag: Nombre de la bolsa de la que procede un tiddler 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 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'' 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 color: Valor CSS del color de fondo asociado a un tiddler
component: Nombre del componente responsable de un [[tiddler de alerta|AlertMechanism]] component: Nombre del componente responsable de un [[tiddler de alerta|AlertMechanism]]
core-version: Para un plugin, indica con qué versión de TiddlyWiki es compatible
current-tiddler: Usado para incluir el tiddler superior en una [[historia|HistoryMechanism]] current-tiddler: Usado para incluir el tiddler superior en una [[historia|HistoryMechanism]]
created: Fecha de creación del tiddler created: Fecha de creación del tiddler
creator: Nombre del autor del tiddler creator: Nombre del autor del tiddler
@@ -24,9 +22,7 @@ list-before: Título del tiddler antes del que el presente será añadido a una
list-after: Título del tiddler tras el que el presente será añadido a una lista de tiddlers. list-after: Título del tiddler tras el que el presente será añadido a una lista de tiddlers.
modified: Fecha y hora de última modificación modified: Fecha y hora de última modificación
modifier: Nombre del tiddler asociado con quien modificó por última vez el presente tiddler modifier: Nombre del tiddler asociado con quien modificó por última vez el presente tiddler
module-type: Para los tiddlers javascript, especifica de qué tipo de módulo se trata
name: Nombre asociado con un complemento o extensión name: Nombre asociado con un complemento o extensión
parent-plugin: Para un plugin, especifica de qué plugin es un subplugin
plugin-priority: Valor numérico que indica la prioridad de un complemento o extensión plugin-priority: Valor numérico que indica la prioridad de un complemento o extensión
plugin-type: Tipo de complemento o extensión plugin-type: Tipo de complemento o extensión
revision: Revisión del tiddler existente en el servidor revision: Revisión del tiddler existente en el servidor

View File

@@ -18,7 +18,7 @@ Todos los parámetros son opcionales con valores predeterminados seguros y se pu
* ''anon-username'' - el nombre de usuario para firmar ediciones de usuarios anónimos * ''anon-username'' - el nombre de usuario para firmar ediciones de usuarios anónimos
* ''username'' - nombre de usuario opcional para autenticación básica * ''username'' - nombre de usuario opcional para autenticación básica
* ''password'' - contraseña opcional para autenticación básica * ''password'' - contraseña opcional para autenticación básica
* ''authenticated-user-header'' - nombre opcional del encabezado de solicitud que se utilizará para la autenticación de confianza. * ''authenticated-user-header'' - nombre opcional del encabezado que se utilizará para la autenticación de confianza
* ''readers'' - lista separada por comas de los usuarios autorizados a leer de este wiki * ''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 * ''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") * ''csrf-disable'' - establecer a "yes" para deshabilitar las comprobaciones CSRF (el valor predeterminado es "no")

View File

@@ -4,7 +4,7 @@ description: Guarda un wiki en una nueva carpeta de wiki
<<.from-version "5.1.20">> Guarda el wiki actual como una carpeta de wiki, incluidos tiddlers, complementos y configuración: <<.from-version "5.1.20">> Guarda el wiki actual como una carpeta de wiki, incluidos tiddlers, complementos y configuración:
``` ```
--savewikifolder <wikifolderpath> [<filter>] [ [<name>=<value>] ]* --savewikifolder <wikifolderpath> [<filter>]
``` ```
* La carpeta wiki de destino debe estar vacía o no existir * La carpeta wiki de destino debe estar vacía o no existir
@@ -12,23 +12,8 @@ description: Guarda un wiki en una nueva carpeta de wiki
* Los complementos de la biblioteca oficial de complementos se reemplazan con referencias a esos complementos en el archivo `tiddlywiki.info` * Los complementos de la biblioteca oficial de complementos se reemplazan con referencias a esos complementos en el archivo `tiddlywiki.info`
* Los complementos personalizados se descomprimen en su propia carpeta * Los complementos personalizados se descomprimen en su propia carpeta
Se admiten las siguientes opciones:
* ''filter'': una expresión de filtro que define los tiddlers que se incluirán en la salida.
* ''explodePlugins'': por defecto "yes".
** ''yes'' desplegará los plugins en archivos tiddler separados y los guardará en el directorio de plugins dentro de la carpeta wiki
** ''no'' no realizará el despliegue del plugin en sus archivos tiddler constituyentes si no que guardará el plugin como un único tiddler JSON en la carpeta tiddlers.
Ten en cuenta que ambas opciones ''explodePlugins'' producirán carpetas wiki que construirán exactamente el mismo wiki original. La diferencia radica en cómo se representan los plugins en la carpeta wiki.
Un uso común es convertir un archivo HTML de TiddlyWiki en una carpeta wiki: Un uso común es convertir un archivo HTML de TiddlyWiki en una carpeta wiki:
``` ```
tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder
``` ```
Guarda el plugin en el directorio tiddlers de la carpeta wiki de destino:
```
tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder explodePlugins=no
```

View File

@@ -1,5 +1,5 @@
title: $:/language/Help/server title: $:/language/Help/server
description: (en desuso: utiliza el comando 'listen') Proporciona interfaz de servidor HTTP a TiddlyWiki description: Proporciona interfaz de servidor HTTP a TiddlyWiki (en desuso a favor del nuevo comando listen)
Comando obsoleto para servir una wiki a través de HTTP. Comando obsoleto para servir una wiki a través de HTTP.

View File

@@ -25,8 +25,6 @@ Encryption/RepeatPassword: Repite la contraseña
Encryption/PasswordNoMatch: Las contraseñas no coinciden Encryption/PasswordNoMatch: Las contraseñas no coinciden
Encryption/SetPassword: Establecer contraseña Encryption/SetPassword: Establecer contraseña
Error/Caption: Error Error/Caption: Error
Error/DeserializeOperator/MissingOperand: Error de filtro: Falta el operando 'deserialize
Error/DeserializeOperator/UnknownDeserializer: Error de filtro: Deserializador desconocido proporcionado como operando para el operador 'deserialize'.
Error/Filter: Error de filtro Error/Filter: Error de filtro
Error/FilterSyntax: Error de sintaxis en la expresión de filtro Error/FilterSyntax: Error de sintaxis en la expresión de filtro
Error/FilterRunPrefix: Error en Filtro: Prefijo desconocido para la ejecución del filtro Error/FilterRunPrefix: Error en Filtro: Prefijo desconocido para la ejecución del filtro
@@ -42,7 +40,6 @@ Error/RetrievingSkinny: Error al recuperar la lista resumida de tiddlers
Error/SavingToTWEdit: Error al guardar en TWEdit Error/SavingToTWEdit: Error al guardar en TWEdit
Error/WhileSaving: Error al guardar Error/WhileSaving: Error al guardar
Error/XMLHttpRequest: Código de error XMLHttpRequest Error/XMLHttpRequest: Código de error XMLHttpRequest
Error/ZoominTextNode: Error de vista de historia: Parece que has intentado interactuar con un tiddler que se muestra en un contenedor personalizado. La causa más probable es el uso de `$:/tags/StoryTiddlerTemplateFilter` con una plantilla que contiene texto o espacios en blanco al principio. Utiliza el pragma `\whitespace trim` y asegúrate de que todo el contenido del tiddler está envuelto en un único elemento HTML. El texto que causó este problema:
InternalJavaScriptError/Hint: Hay un problema. Se recomienda que reinicies TiddlyWiki InternalJavaScriptError/Hint: Hay un problema. Se recomienda que reinicies TiddlyWiki
InternalJavaScriptError/Title: Error interno de JavaScript InternalJavaScriptError/Title: Error interno de JavaScript
LayoutSwitcher/Description: Abre el selector de diseño LayoutSwitcher/Description: Abre el selector de diseño

View File

@@ -1,3 +1,3 @@
title: $:/SiteTitle title: $:/SiteTitle
Mi TiddlyWiki Mi ~TiddlyWiki

View File

@@ -1,5 +1,5 @@
title: $:/language/Help/server title: $:/language/Help/server
description: (nieaktualne: patrz komenda 'listen') Tworzy serwer HTTP wystawiający TiddlyWiki (zalecamy użycie komendy "--listen" zamiast tej) description: Tworzy serwer HTTP wystawiający TiddlyWiki (zalecamy użycie komendy "--listen" zamiast tej)
Dawna komenda do stawiania serwera wystawiającego wiki. Dawna komenda do stawiania serwera wystawiającego wiki.

View File

@@ -1,5 +1,5 @@
title: $:/language/Help/server title: $:/language/Help/server
description: (已弃用:请参阅 'listen' 命令)提供一个 HTTP 服务器界面到 TiddlyWiki description: 提供一个 HTTP 服务器界面到 TiddlyWiki (已弃用,支持新的 listen 命令)
在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。 在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。

View File

@@ -1,5 +1,5 @@
title: $:/language/Help/server title: $:/language/Help/server
description: (已棄用:請參閱 'listen' 命令)提供一個 HTTP 伺服器介面到 TiddlyWiki description: 提供一個 HTTP 伺服器介面到 TiddlyWiki (已棄用,支持新的 listen 命令)
在伺服器中內建 TiddlyWiki5 是非常簡單。雖與 TiddlyWeb 相容,但不支援許多健全網際網路面向的使用方式所需的功能。 在伺服器中內建 TiddlyWiki5 是非常簡單。雖與 TiddlyWeb 相容,但不支援許多健全網際網路面向的使用方式所需的功能。

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