mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-01-07 07:50:26 +00:00
Merge branch 'master' into toc-v5.3.x-rewrite
This commit is contained in:
commit
bed6eaf540
30
.github/workflows/cla-check.yml
vendored
Normal file
30
.github/workflows/cla-check.yml
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
name: Check CLA Signature
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
paths-ignore:
|
||||
- 'licenses/cla-individual.md'
|
||||
jobs:
|
||||
check_cla:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
if: ${{ (github.event.pull_request.user.login != github.repository_owner) }}
|
||||
steps:
|
||||
- run: |
|
||||
if ! curl -s https://raw.githubusercontent.com/Jermolene/TiddlyWiki5/tiddlywiki-com/licenses/cla-individual.md | grep -o "@$USER,"; then
|
||||
echo "CLA not signed"
|
||||
gh pr comment "$NUMBER" -b "@$USER It appears that this is your first contribution to the project, welcome.
|
||||
|
||||
With apologies for the bureaucracy, please could you prepare a separate PR to the 'tiddlywiki-com' branch with your signature for the Contributor License Agreement (see [contributing.md](https://github.com/Jermolene/TiddlyWiki5/blob/master/contributing.md))."
|
||||
else
|
||||
echo "CLA already signed"
|
||||
gh pr comment "$NUMBER" -b "Confirmed: **$USER** has already signed the Contributor License Agreement (see [contributing.md](https://github.com/Jermolene/TiddlyWiki5/blob/master/contributing.md))"
|
||||
fi
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
NUMBER: ${{ github.event.pull_request.number }}
|
||||
USER: ${{ github.actor }}
|
70
.github/workflows/cla-signed.yml
vendored
Normal file
70
.github/workflows/cla-signed.yml
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
name: CLA Signed
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- closed
|
||||
paths:
|
||||
- 'licenses/cla-individual.md'
|
||||
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
NUMBER: ${{ github.event.pull_request.number }}
|
||||
AUTHOR: ${{ github.event.pull_request.user.login }}
|
||||
|
||||
jobs:
|
||||
# check if PRs updating the CLA are targetting the tiddlywiki-com branch
|
||||
check-signature-branch:
|
||||
if: (github.event.pull_request.merged != true) && (github.event.pull_request.user.login != github.repository_owner)
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- run: |
|
||||
if ! $BRANCH == "tiddlywiki-com"; then
|
||||
echo "This CLA signature targets the wrong branch"
|
||||
gh pr comment "$NUMBER" -b "@$AUTHOR Signatures to the CLA must target the 'tiddlywiki-com' branch."
|
||||
fi
|
||||
env:
|
||||
BRANCH: ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
# leave a comment on each open PR by a given author when their signature is added to the CLA
|
||||
cla-signed:
|
||||
if: (github.event.pull_request.merged == true) && (github.event.pull_request.user.login != github.repository_owner)
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: List open PRs by user
|
||||
id: list-prs
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const owner = context.repo.owner,
|
||||
repo = context.repo.repo,
|
||||
author = context.payload.pull_request.user.login;
|
||||
|
||||
const { data: pullRequests } = await github.rest.pulls.list({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
state: 'open',
|
||||
sort: 'created',
|
||||
direction: 'desc',
|
||||
per_page: 100
|
||||
});
|
||||
const userPullRequests = pullRequests.filter(pr => pr.user.login === author),
|
||||
prNumbers = userPullRequests.map(pr => pr.number).join(',');
|
||||
console.log(`Open pull requests by ${author}:${prNumbers}`);
|
||||
return prNumbers;
|
||||
|
||||
- name: Comment open PRs by the same author
|
||||
run: |
|
||||
prs=($(echo ${{ steps.list-prs.outputs.result }} | tr "," "\n"))
|
||||
|
||||
for number in "${prs[@]}"
|
||||
do
|
||||
gh pr comment "$number" -b "**$AUTHOR** has signed the Contributor License Agreement (see [contributing.md](https://github.com/Jermolene/TiddlyWiki5/blob/master/contributing.md))"
|
||||
done
|
@ -5,7 +5,7 @@
|
||||
# Default to the current version number for building the plugin library
|
||||
|
||||
if [ -z "$TW5_BUILD_VERSION" ]; then
|
||||
TW5_BUILD_VERSION=v5.3.3
|
||||
TW5_BUILD_VERSION=v5.3.6
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||
|
File diff suppressed because one or more lines are too long
5
core/images/input-button.tid
Normal file
5
core/images/input-button.tid
Normal file
@ -0,0 +1,5 @@
|
||||
title: $:/core/images/input-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
\parameters (size:"22pt")
|
||||
<svg width=<<size>> height=<<size>> class="tc-image-input-button tc-image-button" viewBox="0 0 22 22"><path d="M1.375 22h19.249c.365 0 .716-.145.973-.404v.001c.258-.257.404-.607.403-.972v-11a1.376 1.376 0 0 0-2.75 0v9.625H2.75V9.625a1.376 1.376 0 0 0-2.75 0v11C0 21.384.617 22 1.375 22Z"/><path d="m9.732 11.904-1.541-1.541a1.375 1.375 0 1 0-1.944 1.944l3.887 3.888c.258.258.608.402.973.402h-.001c.353 0 .705-.134.974-.402l3.888-3.889a1.376 1.376 0 0 0 .001-1.944 1.377 1.377 0 0 0-1.946 0l-1.541 1.542V1.376a1.375 1.375 0 1 0-2.75 0v10.528Z"/></svg>
|
@ -104,6 +104,8 @@ ShowSideBar/Caption: show sidebar
|
||||
ShowSideBar/Hint: Show sidebar
|
||||
TagManager/Caption: tag manager
|
||||
TagManager/Hint: Open tag manager
|
||||
TestCaseImport/Caption: import tiddlers
|
||||
TestCaseImport/Hint: Import tiddlers
|
||||
Timestamp/Caption: timestamps
|
||||
Timestamp/Hint: Choose whether modifications update timestamps
|
||||
Timestamp/On/Caption: timestamps are on
|
||||
|
@ -65,6 +65,10 @@ sidebar-tab-foreground-selected: Sidebar tab foreground for selected tabs
|
||||
sidebar-tab-foreground: Sidebar tab foreground
|
||||
sidebar-tiddler-link-foreground-hover: Sidebar tiddler link foreground hover
|
||||
sidebar-tiddler-link-foreground: Sidebar tiddler link foreground
|
||||
stability-stable: Badge for stability level "stable"
|
||||
stability-experimental: Badge for stability level "experimental"
|
||||
stability-deprecated: Badge for stability level "deprecated"
|
||||
stability-legacy: Badge for stability level "legacy"
|
||||
testcase-accent-level-1: Test case accent colour with no nesting
|
||||
testcase-accent-level-2: Test case accent colour with 2nd level nesting
|
||||
testcase-accent-level-3: Test case accent colour with 3rd level nesting or higher
|
||||
|
@ -16,11 +16,11 @@ Filter operator for returning all the backtranscludes from a tiddler
|
||||
Export our filter function
|
||||
*/
|
||||
exports.backtranscludes = function(source,operator,options) {
|
||||
var results = [];
|
||||
var results = new $tw.utils.LinkedList();
|
||||
source(function(tiddler,title) {
|
||||
$tw.utils.pushTop(results,options.wiki.getTiddlerBacktranscludes(title));
|
||||
results.pushTop(options.wiki.getTiddlerBacktranscludes(title));
|
||||
});
|
||||
return results;
|
||||
return results.makeTiddlerIterator(options.wiki);
|
||||
};
|
||||
|
||||
})();
|
||||
|
@ -20,7 +20,7 @@ exports.transcludes = function(source,operator,options) {
|
||||
source(function(tiddler,title) {
|
||||
results.pushTop(options.wiki.getTiddlerTranscludes(title));
|
||||
});
|
||||
return results.toArray();
|
||||
return results.makeTiddlerIterator(options.wiki);
|
||||
};
|
||||
|
||||
})();
|
||||
|
@ -75,7 +75,7 @@ BackSubIndexer.prototype._getTarget = function(tiddler) {
|
||||
}
|
||||
var parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});
|
||||
if(parser) {
|
||||
return this.wiki[this.extractor](parser.tree);
|
||||
return this.wiki[this.extractor](parser.tree, tiddler.fields.title);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
@ -95,6 +95,7 @@ function SaverHandler(options) {
|
||||
if($tw.browser) {
|
||||
$tw.rootWidget.addEventListener("tm-save-wiki",function(event) {
|
||||
self.saveWiki({
|
||||
wiki: event.widget.wiki,
|
||||
template: event.param,
|
||||
downloadType: "text/plain",
|
||||
variables: event.paramObject
|
||||
@ -102,6 +103,7 @@ function SaverHandler(options) {
|
||||
});
|
||||
$tw.rootWidget.addEventListener("tm-download-file",function(event) {
|
||||
self.saveWiki({
|
||||
wiki: event.widget.wiki,
|
||||
method: "download",
|
||||
template: event.param,
|
||||
downloadType: "text/plain",
|
||||
@ -147,20 +149,22 @@ Save the wiki contents. Options are:
|
||||
method: "save", "autosave" or "download"
|
||||
template: the tiddler containing the template to save
|
||||
downloadType: the content type for the saved file
|
||||
wiki: optional wiki, overriding the default wiki specified in the constructor
|
||||
*/
|
||||
SaverHandler.prototype.saveWiki = function(options) {
|
||||
options = options || {};
|
||||
var self = this,
|
||||
wiki = options.wiki || this.wiki,
|
||||
method = options.method || "save";
|
||||
// Ignore autosave if disabled
|
||||
if(method === "autosave" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,"yes") !== "yes")) {
|
||||
if(method === "autosave" && ($tw.config.disableAutoSave || wiki.getTiddlerText(this.titleAutoSave,"yes") !== "yes")) {
|
||||
return false;
|
||||
}
|
||||
var variables = options.variables || {},
|
||||
template = (options.template ||
|
||||
this.wiki.getTiddlerText("$:/config/SaveWikiButton/Template","$:/core/save/all")).trim(),
|
||||
wiki.getTiddlerText("$:/config/SaveWikiButton/Template","$:/core/save/all")).trim(),
|
||||
downloadType = options.downloadType || "text/plain",
|
||||
text = this.wiki.renderTiddler(downloadType,template,options),
|
||||
text = wiki.renderTiddler(downloadType,template,options),
|
||||
callback = function(err) {
|
||||
if(err) {
|
||||
alert($tw.language.getString("Error/WhileSaving") + ":\n\n" + err);
|
||||
|
@ -61,7 +61,7 @@ exports.startup = function() {
|
||||
// Collect the shadow tiddlers of any modified plugins
|
||||
$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {
|
||||
var pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);
|
||||
if(pluginInfo) {
|
||||
if(pluginInfo && pluginInfo.tiddlers) {
|
||||
$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {
|
||||
changedShadowTiddlers[title] = false;
|
||||
});
|
||||
|
@ -82,6 +82,10 @@ ClassicStoryView.prototype.remove = function(widget) {
|
||||
removeElement = function() {
|
||||
widget.removeChildDomNodes();
|
||||
};
|
||||
// Blur the focus if it is within the descendents of the node we are removing
|
||||
if($tw.utils.domContains(targetElement,targetElement.ownerDocument.activeElement)) {
|
||||
targetElement.ownerDocument.activeElement.blur();
|
||||
}
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {
|
||||
removeElement();
|
||||
|
@ -270,6 +270,7 @@ Copy plain text to the clipboard on browsers that support it
|
||||
*/
|
||||
exports.copyToClipboard = function(text,options) {
|
||||
options = options || {};
|
||||
text = text || "";
|
||||
var textArea = document.createElement("textarea");
|
||||
textArea.style.position = "fixed";
|
||||
textArea.style.top = 0;
|
||||
@ -289,7 +290,7 @@ exports.copyToClipboard = function(text,options) {
|
||||
var succeeded = false;
|
||||
try {
|
||||
succeeded = document.execCommand("copy");
|
||||
} catch (err) {
|
||||
} catch(err) {
|
||||
}
|
||||
if(!options.doNotNotify) {
|
||||
var successNotification = options.successNotification || "$:/language/Notifications/CopiedToClipboard/Succeeded",
|
||||
@ -326,7 +327,7 @@ exports.collectDOMVariables = function(selectedNode,domNode,event) {
|
||||
variables["tv-popup-coords"] = Popup.buildCoordinates(Popup.coordinatePrefix.csOffsetParent,nodeRect);
|
||||
|
||||
var absRect = $tw.utils.extend({}, nodeRect);
|
||||
for (var currentNode = selectedNode.offsetParent; currentNode; currentNode = currentNode.offsetParent) {
|
||||
for(var currentNode = selectedNode.offsetParent; currentNode; currentNode = currentNode.offsetParent) {
|
||||
absRect.left += currentNode.offsetLeft;
|
||||
absRect.top += currentNode.offsetTop;
|
||||
}
|
||||
|
@ -91,7 +91,9 @@ DataWidget.prototype.computeDataTiddlerValues = function() {
|
||||
var titles = this.wiki.filterTiddlers(filter);
|
||||
$tw.utils.each(titles,function(title) {
|
||||
var tiddler = self.wiki.getTiddler(title);
|
||||
tiddlers.push(tiddler);
|
||||
if(tiddler) {
|
||||
tiddlers.push(tiddler);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -551,28 +551,45 @@ exports.getTiddlerBacklinks = function(targetTitle) {
|
||||
|
||||
|
||||
/*
|
||||
Return an array of tiddler titles that are directly transcluded within the given parse tree
|
||||
Return an array of tiddler titles that are directly transcluded within the given parse tree. `title` is the tiddler being parsed, we will ignore its self-referential transclusions, only return
|
||||
*/
|
||||
exports.extractTranscludes = function(parseTreeRoot) {
|
||||
exports.extractTranscludes = function(parseTreeRoot, title) {
|
||||
// Count up the transcludes
|
||||
var transcludes = [],
|
||||
checkParseTree = function(parseTree, parentNode) {
|
||||
for(var t=0; t<parseTree.length; t++) {
|
||||
var parseTreeNode = parseTree[t];
|
||||
if(parseTreeNode.type === "transclude" && parseTreeNode.attributes.$tiddler && parseTreeNode.attributes.$tiddler.type === "string") {
|
||||
var value;
|
||||
// if it is Transclusion with Templates like `{{Index||$:/core/ui/TagTemplate}}`, the `$tiddler` will point to the template. We need to find the actual target tiddler from parent node
|
||||
if(parentNode && parentNode.type === "tiddler" && parentNode.attributes.tiddler && parentNode.attributes.tiddler.type === "string") {
|
||||
value = parentNode.attributes.tiddler.value;
|
||||
} else {
|
||||
value = parseTreeNode.attributes.$tiddler.value;
|
||||
if(parseTreeNode.type === "transclude") {
|
||||
if(parseTreeNode.attributes.$tiddler) {
|
||||
if(parseTreeNode.attributes.$tiddler.type === "string") {
|
||||
var value;
|
||||
// if it is Transclusion with Templates like `{{Index||$:/core/ui/TagTemplate}}`, the `$tiddler` will point to the template. We need to find the actual target tiddler from parent node
|
||||
if(parentNode && parentNode.type === "tiddler" && parentNode.attributes.tiddler && parentNode.attributes.tiddler.type === "string") {
|
||||
// Empty value (like `{{!!field}}`) means self-referential transclusion.
|
||||
value = parentNode.attributes.tiddler.value || title;
|
||||
} else {
|
||||
value = parseTreeNode.attributes.$tiddler.value;
|
||||
}
|
||||
}
|
||||
} else if(parseTreeNode.attributes.tiddler) {
|
||||
if (parseTreeNode.attributes.tiddler.type === "string") {
|
||||
// Old transclude widget usage
|
||||
value = parseTreeNode.attributes.tiddler.value;
|
||||
}
|
||||
} else if(parseTreeNode.attributes.$field && parseTreeNode.attributes.$field.type === "string") {
|
||||
// Empty value (like `<$transclude $field='created'/>`) means self-referential transclusion.
|
||||
value = title;
|
||||
} else if(parseTreeNode.attributes.field && parseTreeNode.attributes.field.type === "string") {
|
||||
// Old usage with Empty value (like `<$transclude field='created'/>`)
|
||||
value = title;
|
||||
}
|
||||
if(transcludes.indexOf(value) === -1 && value !== undefined) {
|
||||
transcludes.push(value);
|
||||
// Deduplicate the result.
|
||||
if(value && transcludes.indexOf(value) === -1) {
|
||||
$tw.utils.pushTop(transcludes,value);
|
||||
}
|
||||
}
|
||||
if(parseTreeNode.children) {
|
||||
checkParseTree(parseTreeNode.children, parseTreeNode);
|
||||
checkParseTree(parseTreeNode.children,parseTreeNode);
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -591,7 +608,8 @@ exports.getTiddlerTranscludes = function(title) {
|
||||
// Parse the tiddler
|
||||
var parser = self.parseTiddler(title);
|
||||
if(parser) {
|
||||
return self.extractTranscludes(parser.tree);
|
||||
// this will ignore self-referential transclusions from `title`
|
||||
return self.extractTranscludes(parser.tree,title);
|
||||
}
|
||||
return [];
|
||||
});
|
||||
|
@ -82,6 +82,10 @@ sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #458588
|
||||
sidebar-tiddler-link-foreground: #98971a
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
stability-deprecated: #cc241d
|
||||
stability-experimental: #d79921
|
||||
stability-legacy: #458588
|
||||
stability-stable: #98971a
|
||||
static-alert-foreground: #B48EAD
|
||||
tab-background-selected: #ebdbb2
|
||||
tab-background: #665c54
|
||||
|
@ -82,6 +82,10 @@ sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #A3BE8C
|
||||
sidebar-tiddler-link-foreground: #81A1C1
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
stability-deprecated: #bf616a
|
||||
stability-experimental: #d08770
|
||||
stability-legacy: #88c0d0
|
||||
stability-stable: #a3be8c
|
||||
static-alert-foreground: #B48EAD
|
||||
tab-background-selected: #ECEFF4
|
||||
tab-background: #4C566A
|
||||
|
@ -18,7 +18,7 @@ button-foreground: #93a1a1
|
||||
code-background: #073642
|
||||
code-border: #586e75
|
||||
code-foreground: #93a1a1
|
||||
dirty-indicator: inherit
|
||||
dirty-indicator: #dc322f
|
||||
download-background: #859900
|
||||
download-foreground: #073642
|
||||
dragger-background: #073642
|
||||
@ -72,6 +72,10 @@ sidebar-tab-foreground-selected: #93a1a1
|
||||
sidebar-tiddler-link-foreground: #2aa198
|
||||
sidebar-tiddler-link-foreground-hover: #eee8d5
|
||||
site-title-foreground: #d33682
|
||||
stability-deprecated: #dc322f
|
||||
stability-experimental: #b58900
|
||||
stability-legacy: #268bd2
|
||||
stability-stable: #859900
|
||||
static-alert-foreground: #93a1a1
|
||||
tab-background: #073642
|
||||
tab-background-selected: #002b36
|
||||
|
@ -18,7 +18,7 @@ button-foreground: #586e75
|
||||
code-background: #eee8d5
|
||||
code-border: #93a1a1
|
||||
code-foreground: #586e75
|
||||
dirty-indicator: inherit
|
||||
dirty-indicator: #dc322f
|
||||
download-background: #859900
|
||||
download-foreground: #eee8d5
|
||||
dragger-background: #eee8d5
|
||||
@ -72,6 +72,10 @@ sidebar-tab-foreground-selected: #586e75
|
||||
sidebar-tiddler-link-foreground: #2aa198
|
||||
sidebar-tiddler-link-foreground-hover: #002b36
|
||||
site-title-foreground: #d33682
|
||||
stability-deprecated: #dc322f
|
||||
stability-experimental: #b58900
|
||||
stability-legacy: #268bd2
|
||||
stability-stable: #859900
|
||||
static-alert-foreground: #586e75
|
||||
tab-background: #eee8d5
|
||||
tab-background-selected: #fdf6e3
|
||||
|
@ -82,6 +82,10 @@ sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #444444
|
||||
sidebar-tiddler-link-foreground: #999999
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
stability-stable: #008000
|
||||
stability-experimental: #c07c00
|
||||
stability-deprecated: #ff0000
|
||||
stability-legacy: #0000ff
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #d8d8d8
|
||||
@ -95,7 +99,7 @@ table-footer-background: #a8a8a8
|
||||
table-header-background: #f0f0f0
|
||||
tag-background: #ec6
|
||||
tag-foreground: #ffffff
|
||||
testcase-accent-level-1: #84C5E6
|
||||
testcase-accent-level-1: #c1eaff
|
||||
testcase-accent-level-2: #E3B740
|
||||
testcase-accent-level-3: #5FD564
|
||||
tiddler-background: <<colour background>>
|
||||
|
@ -9,7 +9,7 @@ list-before:
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]">
|
||||
|
||||
<div class="tc-control-panel-setting" data-setting-title=<<currentTiddler>> style="border-top:1px solid #eee;">
|
||||
<div class="tc-control-panel-setting" data-setting-title=<<currentTiddler>> >
|
||||
|
||||
!!.tc-control-panel-accent <$link><$transclude field="caption"/></$link>
|
||||
|
||||
|
@ -15,7 +15,7 @@ title: $:/core/ui/testcases/DefaultTemplate
|
||||
<div class="tc-test-case-wrapper">
|
||||
<div class="tc-test-case-header">
|
||||
<h2>
|
||||
<$genesis $type={{{ [<linkTarget>!match[]then[$link]else[div]] }}} to=<<testcaseTiddler>>>
|
||||
<$genesis $type={{{ [<linkTarget>!match[]then[$link]else[span]] }}} to=<<testcaseTiddler>>>
|
||||
<%if [<testResult>!match[]] %>
|
||||
<span class={{{ tc-test-case-result-icon [<testResult>!match[fail]then[tc-test-case-result-icon-pass]] [<testResult>match[fail]then[tc-test-case-result-icon-fail]] +[join[ ]] }}}>
|
||||
<%if [<testResult>!match[fail]] %>
|
||||
@ -27,6 +27,31 @@ title: $:/core/ui/testcases/DefaultTemplate
|
||||
<%endif%>
|
||||
<$view tiddler="Description" mode="inline"/>
|
||||
</$genesis>
|
||||
<span class="tc-test-case-toolbar">
|
||||
<$button popup=`$(state)$-more`
|
||||
tooltip={{$:/language/Buttons/More/Hint}}
|
||||
aria-label={{$:/language/Buttons/More/Caption}}
|
||||
class="tc-btn-invisible"
|
||||
selectedClass="tc-selected"
|
||||
>
|
||||
{{$:/core/images/down-arrow}}
|
||||
</$button>
|
||||
<$let
|
||||
tv-config-toolbar-icons="yes"
|
||||
tv-config-toolbar-text="yes"
|
||||
tv-config-toolbar-class="tc-btn-invisible"
|
||||
>
|
||||
<$reveal state=`$(state)$-more` type="popup" position="belowleft" animate="yes">
|
||||
<div class="tc-drop-down">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TestCase/Actions]!has[draft.of]]"
|
||||
variable="listItem"
|
||||
>
|
||||
<$transclude tiddler=<<listItem>> mode="inline"/>
|
||||
</$list>
|
||||
</div>
|
||||
</$reveal>
|
||||
</$let>
|
||||
</span>
|
||||
</h2>
|
||||
</div>
|
||||
<%if [[Narrative]is[tiddler]] %>
|
||||
@ -46,7 +71,7 @@ title: $:/core/ui/testcases/DefaultTemplate
|
||||
<%endif%>
|
||||
<div class="tc-test-case-panes">
|
||||
<div class="tc-test-case-source">
|
||||
<$macrocall $name="tabs" tabsList="[all[tiddlers]sort[]] -[prefix<state>] -Description -Narrative -ExpectedResult -Output Output +[putfirst[]] -[has[plugin-type]]" state=<<state>> default="Output" template="$:/core/ui/testcases/DefaultTemplate/SourceTabs"/>
|
||||
<$macrocall $name="tabs" tabsList="[all[tiddlers]sort[]] -[prefix<state>] -Description -Narrative -Output Output +[putfirst[]] -[has[plugin-type]]" state=<<state>> default="Output" template="$:/core/ui/testcases/DefaultTemplate/SourceTabs"/>
|
||||
</div>
|
||||
<div class="tc-test-case-divider">
|
||||
</div>
|
||||
|
@ -19,6 +19,9 @@ title: $:/core/ui/testcases/DefaultTemplate/SourceTabs
|
||||
</table>
|
||||
</$list>
|
||||
<$edit class="tc-edit-texteditor" tiddler=<<currentTab>>/>
|
||||
<div class="tc-test-case-footer-toolbar">
|
||||
<$macrocall $name="copy-to-clipboard" src={{{ [<currentTab>get[text]] }}}/>
|
||||
</div>
|
||||
\end
|
||||
|
||||
<$transclude $variable="body" $mode="inline"/>
|
||||
|
4
core/ui/TestCases/actions/Export.tid
Normal file
4
core/ui/TestCases/actions/Export.tid
Normal file
@ -0,0 +1,4 @@
|
||||
title: $:/core/ui/testcases/actions/Export
|
||||
tags: $:/tags/TestCase/Actions
|
||||
|
||||
<$macrocall $name="exportButton" exportFilter="[all[tiddlers]sort[]] -[prefix[$:/state/]] -Description -Narrative -ExpectedResult -Output Output +[putfirst[]] -[has[plugin-type]]" lingoBase="$:/language/Buttons/ExportTiddlers/"/>
|
11
core/ui/TestCases/actions/Import.tid
Normal file
11
core/ui/TestCases/actions/Import.tid
Normal file
@ -0,0 +1,11 @@
|
||||
title: $:/core/ui/testcases/actions/Import
|
||||
tags: $:/tags/TestCase/Actions
|
||||
|
||||
\whitespace trim
|
||||
<$button tooltip={{$:/language/Buttons/TestCaseImport/Hint}} aria-label={{$:/language/Buttons/TestCaseImport/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$action-sendmessage $message="tm-import-tiddlers" $param=<<payloadTiddlers>>/>
|
||||
{{$:/core/images/input-button}}
|
||||
<span class="tc-btn-text">
|
||||
<$text text={{$:/language/Buttons/TestCaseImport/Caption}}/>
|
||||
</span>
|
||||
</$button>
|
@ -6,6 +6,7 @@ title: $:/core/ui/ViewTemplate/body/import
|
||||
\whitespace trim
|
||||
<$action-confirm $message={{$:/language/Import/Listing/Cancel/Warning}} >
|
||||
<$action-deletetiddler $tiddler=<<currentTiddler>>/>
|
||||
<$action-deletetiddler $tiddler="$:/state/import/select-all"/>
|
||||
<$action-sendmessage $message="tm-close-tiddler" title=<<currentTiddler>>/>
|
||||
</$action-confirm>
|
||||
\end
|
||||
|
@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: https://tiddlywiki.com/library/v5.3.4/index.html
|
||||
url: https://tiddlywiki.com/library/v5.3.6/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}}
|
||||
|
||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||
|
@ -1,18 +1,17 @@
|
||||
title: $:/core/macros/CSS
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
|
||||
\procedure colour(name)
|
||||
<!-- Needs to stay that way for backwards compatibility. See GH issue: #8326 -->
|
||||
\define colour(name)
|
||||
\whitespace trim
|
||||
<$transclude $tiddler={{$:/palette}} $index=`$(name)$`>
|
||||
<$transclude $tiddler="$:/palettes/Vanilla" $index=`$(name)$`>
|
||||
<$transclude $tiddler=`$:/config/DefaultColourMappings/$(name)$`/>
|
||||
<$transclude tiddler={{$:/palette}} index="$name$">
|
||||
<$transclude tiddler="$:/palettes/Vanilla" index="$name$">
|
||||
<$transclude tiddler="$:/config/DefaultColourMappings/$name$"/>
|
||||
</$transclude>
|
||||
</$transclude>
|
||||
\end
|
||||
|
||||
\procedure color(name)
|
||||
<$macrocall $name=colour name=`$(name)$`/>
|
||||
\end
|
||||
\define color(name) <<colour $name$>>
|
||||
|
||||
\function box-shadow(shadow)
|
||||
[[ -webkit-box-shadow: $(shadow)$;
|
||||
|
@ -1,24 +1,10 @@
|
||||
title: $:/core/macros/lingo
|
||||
tags: $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
<!-- Note that lingo-base should end with a trailing slash character -->
|
||||
\procedure lingo-base()
|
||||
\define lingo-base()
|
||||
$:/language/
|
||||
\end lingo-base
|
||||
\end
|
||||
|
||||
\procedure lingo(title,override-lingo-base)
|
||||
<!-- Lingo procedure -->
|
||||
<!-- Get the parse mode used to invoke this procedure -->
|
||||
<$parameters $parseMode="parseMode">
|
||||
<!-- Compute the lingo-base-->
|
||||
<$let active-lingo-base={{{ [<override-lingo-base>!match[]else<lingo-base>] }}}>
|
||||
<!-- First try the old school <active-lingo-base><title> format -->
|
||||
<$transclude $tiddler={{{ [<active-lingo-base>addsuffix<title>] }}} $mode=<<parseMode>>>
|
||||
<!-- If that didn't work, try the new <lingo-base><langcode>/<title> format -->
|
||||
<$let language-code={{{ [[$:/language]get[text]get[name]else[en-GB]] }}}>
|
||||
<$transclude $tiddler={{{ [<active-lingo-base>addsuffix<language-code>addsuffix[/]addsuffix<title>] }}} $mode=<<parseMode>>/>
|
||||
</$let>
|
||||
</$transclude>
|
||||
</$let>
|
||||
</$parameters>
|
||||
\end lingo
|
||||
\define lingo(title)
|
||||
{{$(lingo-base)$$title$}}
|
||||
\end
|
||||
|
@ -1,9 +1,12 @@
|
||||
title: $:/core/macros/tag-picker
|
||||
tags: tags: $:/tags/Macro $:/tags/Global
|
||||
first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>sort[]]
|
||||
second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>sort[]]
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>]
|
||||
second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>]
|
||||
|
||||
<!-- first-search-filter and second-search-filter fields are not used here in the code, but they are defined as parameters for keyboard-driven-input macro -->
|
||||
<!--
|
||||
Fields: "first-search-filter", "second-search-filter" are assigned to the keyboard-driven input macro with parameter: "configTiddlerFilter"
|
||||
They __need to be the same__ as used for variables: "nonSystemTagsFilter" and "systemTagsFilter". See code below!
|
||||
-->
|
||||
|
||||
\whitespace trim
|
||||
|
||||
@ -150,12 +153,15 @@ The second ESC tries to close the "draft tiddler"
|
||||
\end
|
||||
|
||||
<!-- prepare all variables for tag-picker keyboard handling -->
|
||||
\procedure tag-picker(actions, tagField:"tags", tiddler, tagListFilter:"[tags[]]")
|
||||
\procedure tag-picker(actions, tagField:"tags", tiddler, tagListFilter:"[tags[]sort[]]")
|
||||
|
||||
\function _tf.getUserInput() [<storeTitle>get[text]]
|
||||
\function _tf.getTag() [<newTagNameTiddler>get[text]]
|
||||
<!-- Use this function if tag-picker is a stand alone macro. Otherwise use "newTagNameTiddler" defined for fieldmangler in EditTemplate -->
|
||||
\function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]]
|
||||
|
||||
<!-- keep those variables because they may "blead" into macros using old syntax -->
|
||||
<!-- keep those variables because they may "bleed" into macros using old syntax -->
|
||||
<!-- "nonSystemTagsFilter", "systemTagsFilter" __need to be the same__ as fields: "first-search-filter", "second-search-filter" -->
|
||||
<$let
|
||||
palette={{$:/palette}}
|
||||
colourA={{{ [<palette>getindex[foreground]] }}}
|
||||
@ -164,7 +170,7 @@ The second ESC tries to close the "draft tiddler"
|
||||
|
||||
saveTiddler={{{ [<tiddler>is[blank]then<currentTiddler>else<tiddler>] }}}
|
||||
|
||||
newTagNameTiddler={{{ [[$:/temp/NewTagName]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}}
|
||||
newTagNameTiddler={{{ [[newTagNameTiddler]is[variable]then<newTagNameTiddler>] :else[<_tf.makeTagNameTiddler>] }}}
|
||||
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}}
|
||||
|
||||
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
|
||||
@ -172,11 +178,11 @@ The second ESC tries to close the "draft tiddler"
|
||||
|
||||
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
|
||||
|
||||
nonSystemTagsFilter="[subfilter<tagListFilter>!is[system]search:title<userInput>sort[]]"
|
||||
systemTagsFilter="[subfilter<tagListFilter>is[system]search:title<userInput>sort[]]"
|
||||
nonSystemTagsFilter="[subfilter<tagListFilter>!is[system]search:title<userInput>]"
|
||||
systemTagsFilter="[subfilter<tagListFilter>is[system]search:title<userInput>]"
|
||||
|
||||
cancelPopups="yes"
|
||||
>
|
||||
<$macrocall $name="tag-picker-inner"/>
|
||||
</$let>
|
||||
\end
|
||||
\end
|
||||
|
2
core/wiki/tags/TestCaseActions.tid
Normal file
2
core/wiki/tags/TestCaseActions.tid
Normal file
@ -0,0 +1,2 @@
|
||||
title: $:/tags/TestCase/Actions
|
||||
list:
|
56
editions/prerelease/tiddlers/Release 5.3.6.tid
Normal file
56
editions/prerelease/tiddlers/Release 5.3.6.tid
Normal file
@ -0,0 +1,56 @@
|
||||
caption: 5.3.6
|
||||
created: 20240710120027897
|
||||
modified: 20240710120027897
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.3.6
|
||||
type: text/vnd.tiddlywiki
|
||||
description: Under development
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.5...master]]//
|
||||
|
||||
! Major Improvements
|
||||
|
||||
! Translation improvements
|
||||
|
||||
This release includes improvements to the following translations:
|
||||
|
||||
*
|
||||
|
||||
! Plugin Improvements
|
||||
|
||||
*
|
||||
|
||||
! Widget Improvements
|
||||
|
||||
*
|
||||
|
||||
! Filter Improvements
|
||||
|
||||
*
|
||||
|
||||
! Usability 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 """
|
||||
""">>
|
@ -1,6 +1,6 @@
|
||||
title: $:/config/LocalPluginLibrary
|
||||
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.6/index.html
|
||||
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//
|
||||
|
@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: https://tiddlywiki.com/prerelease/library/v5.3.4/index.html
|
||||
url: https://tiddlywiki.com/prerelease/library/v5.3.6/index.html
|
||||
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.
|
||||
|
@ -22,6 +22,9 @@ describe('Backtranscludes and transclude filter tests', function() {
|
||||
it('should have no backtranscludes', function() {
|
||||
expect(wiki.filterTiddlers('TestIncoming +[backtranscludes[]]').join(',')).toBe('');
|
||||
});
|
||||
it('should have no transcludes', function() {
|
||||
expect(wiki.filterTiddlers('TestIncoming +[transcludes[]]').join(',')).toBe('');
|
||||
});
|
||||
});
|
||||
|
||||
describe('A tiddler added to the wiki with a transclude to it', function() {
|
||||
@ -38,6 +41,9 @@ describe('Backtranscludes and transclude filter tests', function() {
|
||||
it('should have a backtransclude', function() {
|
||||
expect(wiki.filterTiddlers('TestIncoming +[backtranscludes[]]').join(',')).toBe('TestOutgoing');
|
||||
});
|
||||
it('should have a transclude', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('TestIncoming');
|
||||
});
|
||||
});
|
||||
|
||||
describe('A tiddler transclude with template will still use the tiddler as result.', function() {
|
||||
@ -182,12 +188,44 @@ describe('Backtranscludes and transclude filter tests', function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe('ignore self transclusion', function() {
|
||||
describe('include implicit self transclusion', function() {
|
||||
var wiki = new $tw.Wiki();
|
||||
|
||||
wiki.addTiddler({
|
||||
title: 'TestOutgoing',
|
||||
text: "{{!!created}}\n\nA transclude to {{!!title}}"});
|
||||
text: "{{!!created}}\n\nAn implicit self-referential transclude to <$transclude $field='created'/> and <$transclude field='created'/>"});
|
||||
|
||||
it('should have no transclude', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('TestOutgoing');
|
||||
});
|
||||
|
||||
it('should have no back transcludes', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[backtranscludes[]]').join(',')).toBe('TestOutgoing');
|
||||
});
|
||||
});
|
||||
|
||||
describe('include explicit self transclusion', function() {
|
||||
var wiki = new $tw.Wiki();
|
||||
|
||||
wiki.addTiddler({
|
||||
title: 'TestOutgoing',
|
||||
text: "{{TestOutgoing!!created}}\n\n<$transclude $tiddler='TestOutgoing' $field='created'/> and <$transclude tiddler='TestOutgoing' field='created'/>"});
|
||||
|
||||
it('should have no transclude', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('TestOutgoing');
|
||||
});
|
||||
|
||||
it('should have no back transcludes', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[backtranscludes[]]').join(',')).toBe('TestOutgoing');
|
||||
});
|
||||
});
|
||||
|
||||
describe('exclude self when target tiddler is not string', function() {
|
||||
var wiki = new $tw.Wiki();
|
||||
|
||||
wiki.addTiddler({
|
||||
title: 'TestOutgoing',
|
||||
text: "<$transclude $tiddler={{TestOutgoing!!title}} $field='created'/> and <$transclude tiddler={{TestOutgoing!!title}} field='created'/>"});
|
||||
|
||||
it('should have no transclude', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('');
|
||||
@ -198,19 +236,20 @@ describe('Backtranscludes and transclude filter tests', function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe('recognize soft transclusion defined by widget', function() {
|
||||
describe('recognize transclusion defined by widget', function() {
|
||||
var wiki = new $tw.Wiki();
|
||||
|
||||
wiki.addTiddler({
|
||||
title: 'TestOutgoing',
|
||||
text: "<$tiddler tiddler='TestIncoming'><$transclude $tiddler /></$tiddler>"});
|
||||
text: "<$tiddler tiddler='TestIncoming'><$transclude $tiddler /></$tiddler>\n\n<$transclude tiddler='TiddlyWiki Pre-release'/>"});
|
||||
|
||||
it('should have a transclude', function() {
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('TestIncoming');
|
||||
expect(wiki.filterTiddlers('TestOutgoing +[transcludes[]]').join(',')).toBe('TestIncoming,TiddlyWiki Pre-release');
|
||||
});
|
||||
|
||||
it('should have a back transclude', function() {
|
||||
expect(wiki.filterTiddlers('TestIncoming +[backtranscludes[]]').join(',')).toBe('TestOutgoing');
|
||||
expect(wiki.filterTiddlers('[[TiddlyWiki Pre-release]] +[backtranscludes[]]').join(',')).toBe('TestOutgoing');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
75
editions/test/tiddlers/tests/test-tags-operator.js
Normal file
75
editions/test/tiddlers/tests/test-tags-operator.js
Normal file
@ -0,0 +1,75 @@
|
||||
/*\
|
||||
title: test-tags-operator.js
|
||||
type: application/javascript
|
||||
tags: [[$:/tags/test-spec]]
|
||||
|
||||
Tests the tagging mechanism.
|
||||
|
||||
\*/
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
describe("Tags Operator tests", function() {
|
||||
|
||||
describe("With no indexers", function() {
|
||||
var wikiOptions = {enableIndexers: []},
|
||||
wiki = setupWiki(wikiOptions);
|
||||
runTests(wiki,wikiOptions);
|
||||
});
|
||||
|
||||
describe("With all indexers", function() {
|
||||
var wikiOptions = {},
|
||||
wiki = setupWiki();
|
||||
runTests(wiki,wikiOptions);
|
||||
});
|
||||
|
||||
function setupWiki(wikiOptions) {
|
||||
// Create a wiki
|
||||
var wiki = new $tw.Wiki(wikiOptions);
|
||||
|
||||
// Add a few tiddlers
|
||||
wiki.addTiddler({ title: "aaa",text: "text aaa",color: "red"});
|
||||
wiki.addTiddler({ title: "1"});
|
||||
wiki.addTiddler({ title: "10"});
|
||||
wiki.addTiddler({ title: "bbb"});
|
||||
wiki.addTiddler({ title: "bb bb"});
|
||||
wiki.addTiddler({ title: "BBB"});
|
||||
wiki.addTiddler({ title: "AAA"});
|
||||
wiki.addTiddler({ title: "BB BB"});
|
||||
wiki.addTiddler({ title: "bb bb", text: "text bb bb"});
|
||||
return wiki;
|
||||
}
|
||||
|
||||
// Our tests
|
||||
function runTests(wiki,wikiOptions) {
|
||||
|
||||
var TAGS = "aaa 10 1 bbb AAA [[bb bb]] BBB [[BB BB]]";
|
||||
|
||||
// Tests before PR #8228 to make sure there are now incompatibilities
|
||||
it("should apply tags ordering in SORT order up to TW v5.3.6", function () {
|
||||
var wiki = new $tw.Wiki(wikiOptions);
|
||||
var EXPECTED = "1,10,aaa,AAA,bb bb,BB BB,bbb,BBB";
|
||||
|
||||
wiki.addTiddler({ title: "test-tags-operator", text: "", tags: TAGS});
|
||||
expect(wiki.filterTiddlers("[[test-tags-operator]tags[]sort[title]]").join(',')).toBe(EXPECTED);
|
||||
|
||||
wiki.addTiddler({ title: "$:/config/Tags/CustomSort/subfilter", text: "[{!!title}]"});
|
||||
expect(wiki.filterTiddlers("[[test-tags-operator]tags[]] :sort:alphanumeric:caseinsensitive[subfilter{$:/config/Tags/CustomSort/subfilter}]").join(',')).toBe(EXPECTED);
|
||||
|
||||
// Due to the implementation of the tags[] operator with v5.3.6 we can not guarantee the order that `[tags[]]` returns
|
||||
});
|
||||
|
||||
// The following test can be enabled once the core allows us to do so.
|
||||
xit("should apply tags ordering in order of creation. TW v5.3.7+", function () {
|
||||
var wiki = new $tw.Wiki(wikiOptions);
|
||||
|
||||
wiki.addTiddler({ title: "$:/config/Tags/CustomSort/subfilter", text: ""});
|
||||
wiki.addTiddler({ title: "test-tags-operator", text: "", tags: TAGS});
|
||||
|
||||
var EXPECTED = "aaa,10,1,bbb,AAA,bb bb,BBB,BB BB"
|
||||
expect(wiki.filterTiddlers("[[test-tags-operator]tags[]] :sort:alphanumeric:caseinsensitive[subfilter{$:/config/Tags/CustomSort/subfilter}]").join(',')).toBe(EXPECTED);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
18
editions/tw5.com/tiddlers/Operators without parameters.tid
Normal file
18
editions/tw5.com/tiddlers/Operators without parameters.tid
Normal file
@ -0,0 +1,18 @@
|
||||
created: 20240708171243370
|
||||
modified: 20240708201827711
|
||||
tags:
|
||||
title: Operators without parameters
|
||||
|
||||
Many [[Filter Operators]] have no [[parameter|Filter Parameter]] available. Still, each operator must be followed by a bracketed parameter expression — even if it is empty — as with the <<.olink backlinks>> operator below:
|
||||
|
||||
`[<currentTiddler>backlinks[]]`
|
||||
|
||||
(Even though an expression such as `[<currentTiddler>backlinks]` may at first <<.em seem>> well-formed — insofar as closing brackets seem to pair properly with opening brackets — each operator needs its own parameter brackets, even if empty. See [[Filter Syntax]].)
|
||||
|
||||
The following [[Filter Operators]] accept no parameters:
|
||||
|
||||
<div>
|
||||
|
||||
<<list-links filter:"[op-parameter[none]] [tag[Filter Operators]!has[op-parameter]] -[search:op-purpose[same]]" class:"multi-columns">>
|
||||
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
created: 20240708174435694
|
||||
modified: 20240708175546166
|
||||
title: Selection Constructors: Conditional
|
||||
|
||||
Most [[filter Operators|filter Operator]] are either ''selection modifiers'' or [[Selection Constructors]].
|
||||
|
||||
Within the exceptional category <<tag>> are a tiny minority that //usually// act as ''selection modifiers'', but which can construct a fresh selection under special conditions — namely, whenever their [[parameter|Filter Parameter]] is specified with a selection constructor.
|
||||
|
||||
<<list-links "[tag<currentTiddler>]">>
|
@ -1,14 +1,14 @@
|
||||
title: TiddlyWiki Archive
|
||||
created: 20231005205623086
|
||||
modified: 20231005210538879
|
||||
modified: 20240628132622052
|
||||
tags: About
|
||||
title: TiddlyWiki Archive
|
||||
|
||||
\procedure versions()
|
||||
5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9
|
||||
5.1.10 5.1.11 5.1.12 5.1.13 5.1.14 5.1.15 5.1.16 5.1.17 5.1.18 5.1.19
|
||||
5.1.20 5.1.21 5.1.22 5.1.23
|
||||
5.2.0 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7
|
||||
5.3.0 5.3.1
|
||||
5.3.0 5.3.1 5.3.2 5.3.3 5.3.4
|
||||
\end
|
||||
|
||||
Older versions of TiddlyWiki are available in the [[archive|https://github.com/Jermolene/jermolene.github.io/tree/master/archive]]:
|
||||
|
@ -1,5 +1,5 @@
|
||||
created: 20150123220223000
|
||||
modified: 20190610165255223
|
||||
modified: 20240709170746678
|
||||
tags: Filters
|
||||
title: Dominant Append
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -13,3 +13,5 @@ For example, if a selection contains `Andrew Becky Clara Daniel` and `Andrew Bar
|
||||
This behaviour can cause unexpected results when working with [[Mathematics Operators]]. For example, `1 2 3 +[sum[]]` evaluates to `6`, as expected. But `1 1 1 +[sum[]]` evaluates to `1`. Removing the `+[sum[]]` from each filter reveals the problem: `1 2 3` evaluates to the list `1`, `2`, `3`, while `1 1 1` evaluates to the single item `1` due to de-duplication.
|
||||
|
||||
In such situations, the `=` prefix can be used to disable the de-duplication. For example, `=1 =1 =1 +[sum[]]` evaluates to `3` as expected. Alternatively, the [[split Operator]] can be used: `[[1,1,1]split[,]sum[]]`.
|
||||
|
||||
<<.tip """To build a list of unique values that retains only the <<.em earliest>> copy of each value (the opposite behavior from <<.link "Dominant Append" "Dominant Append">>), first use the <<.link `:all` "All Filter Run Prefix">> filter run prefix (or its short form `=`) to retain all duplicate values while building your list. Then finish your filter run with the <<.olink unique>> operator to remove later duplicates.""">>
|
@ -1,5 +1,5 @@
|
||||
created: 20150117204109000
|
||||
modified: 20150917193713204
|
||||
modified: 20240708201746542
|
||||
tags: Filters
|
||||
title: Selection Constructors
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -11,3 +11,7 @@ The output of a [[Filter Step]] depends on its [[operator|Filter Operators]]:
|
||||
* A few operators ignore their input and generate an independent output instead. These are called <<.def "selection constructors">>: they construct an entirely new [[selection|Title Selection]].
|
||||
|
||||
A good example of a constructor is <<.olink title>>. The output of `[title[A]title[B]]` is just <<.tid B>>. But the <<.olink field>> operator is a modifier, so `[title[A]field:title[B]` outputs nothing at all.
|
||||
|
||||
The following [[filter Operators|filter Operator]] are tagged <<tag>>:
|
||||
|
||||
<<list-links "[tag<currentTiddler>]" class:"multi-columns">>
|
||||
|
@ -1,9 +1,15 @@
|
||||
created: 20141129194651420
|
||||
modified: 20141130195444237
|
||||
tags: Concepts
|
||||
modified: 20240621074019077
|
||||
tags: Concepts Definitions
|
||||
title: Transclusion
|
||||
|
||||
[[Transclusion|https://en.wikipedia.org/wiki/Transclusion]] is the process of referencing one tiddler "A" from another tiddler "B" such that the content of "A" appears to be a part of "B".
|
||||
! Definition
|
||||
|
||||
<<< Wikipedia: [[Transclusion|https://en.wikipedia.org/wiki/Transclusion]]
|
||||
In computer science, transclusion is the inclusion of part or all of an electronic document into one or more other documents by reference via hypertext.
|
||||
<<<
|
||||
|
||||
In ~TiddlyWiki: ''Transclusion'' is the process of referencing one tiddler "A" from another tiddler "B" such that the content of "A" appears to be a part of "B".
|
||||
|
||||
Copying and pasting content creates multiple copies of the same content in several different places. With transclusion, there can be a single copy and a special instruction in "B" which indicates the point at which content should be inserted from tiddler "A".
|
||||
|
||||
|
12
editions/tw5.com/tiddlers/currentTab Variable.tid
Normal file
12
editions/tw5.com/tiddlers/currentTab Variable.tid
Normal file
@ -0,0 +1,12 @@
|
||||
caption: currentTab
|
||||
created: 20240627195924480
|
||||
modified: 20240627201655746
|
||||
tags: Variables [[Core Variables]]
|
||||
title: currentTab Variable
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
The <<.def currentTab>> [[variable|Variables]] contains the title of the current tab within an enclosing set of tabs generated by the [[tabs Macro]].
|
||||
|
||||
When a tiddler is [[transcluded|Transclusion]] within a tab, any use of the [[currentTiddler Variable]] will point to the tiddler containing the [[tabs Macro]] call. This may lead to surprises if the transcluded tiddler was originally written to display by itself in the [[Story River]] in ways that rely on self-reference. The currentTab macro enables a similar effect to currentTiddler for the special case of a tiddler rendered as a tab.
|
||||
|
||||
Compare <<.vlink currentTiddler>>.
|
@ -1,5 +1,5 @@
|
||||
created: 20201123172925848
|
||||
modified: 20230803052005116
|
||||
modified: 20240627060629394
|
||||
tags: [[Customise TiddlyWiki]]
|
||||
title: Alternative page layouts
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -8,8 +8,39 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
! Creating an alternative page layout
|
||||
|
||||
Creating an alternative layout goes beyond [[adding or removing features|Customising TiddlyWiki's user interface]] from the default interface and allows you to create an entirely new layout from scratch.
|
||||
Creating an alternative layout goes beyond [[adding or removing features|Customising TiddlyWiki's user interface]] from the default interface, which also known as [[standard layout|$:/core/ui/PageTemplate]], and allows you to create an entirely new layout from scratch.
|
||||
|
||||
To create an alternative page layout and have the ability to switch to it, you need to create an alternative page template tiddler with the [[SystemTag: $:/tags/Layout]].
|
||||
|
||||
This alternative page template can either be a tweaked and modified version of the [[default page template|$:/core/ui/PageTemplate]], or something entirely different. The layout switching mechanism requires that your page template tiddler has the fields `name` and `description`, which are used in the listing in the switching user interface.
|
||||
This alternative page template can either be a tweaked and modified version of the [[default page template|$:/core/ui/PageTemplate]], or something entirely different. The layout switching mechanism requires that your page template tiddler has the fields `name` and `description`, which are used in the listing in the switching user interface.
|
||||
|
||||
!! Common layout setup
|
||||
|
||||
```tid
|
||||
\whitespace trim
|
||||
\import [subfilter{$:/core/config/GlobalImportFilter}]
|
||||
\define containerClasses()
|
||||
tc-page-container tc-language-$(languageTitle)$ your-plugin-name-container
|
||||
\end
|
||||
\procedure redirected-navigate-actions()
|
||||
<$action-setfield $tiddler="$:/layout" text="" $timestamp="no">
|
||||
<$action-navigate $to=<<event-navigateTo>> $scroll="yes" />
|
||||
</$action-setfield>
|
||||
\end
|
||||
|
||||
<$navigator story="$:/StoryList" history="$:/HistoryList" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>
|
||||
<$messagecatcher $tm-navigate=<<redirected-navigate-actions>>>
|
||||
{{$:/core/ui/CommandPaletteTemplate}}
|
||||
<div class=<<containerClasses>>>
|
||||
<!-- Your layout content here -->
|
||||
</div>
|
||||
</$messagecatcher>
|
||||
</$navigator>
|
||||
```
|
||||
|
||||
It includes
|
||||
|
||||
# Import macros that is globally available in standard layout, so wikitext that works on standard layout also works on your layout.
|
||||
# Define the top-level css class, some style may depends on them. You can add your plugin's name in css class here.
|
||||
# Handle navigation when click on links. If your layout does not contains a story view (for example, you are writing a calendar or whiteboard layout), then the combination of `redirected-navigate-actions` `$navigator` and `$messagecatcher` will redirect user back to standard layout, and open the tiddler there.
|
||||
# Add some [[PageTemplate|$:/tags/PageTemplate]] back, for example the `$:/core/ui/CommandPaletteTemplate` or `$:/core/ui/PageTemplate/sidebar`, if you want them exist on your layout.
|
||||
|
11
editions/tw5.com/tiddlers/empty-tag-node-template.tid
Normal file
11
editions/tw5.com/tiddlers/empty-tag-node-template.tid
Normal file
@ -0,0 +1,11 @@
|
||||
created: 20240710161501472
|
||||
list-after:
|
||||
modified: 20240719201317702
|
||||
tags: $:/tags/ViewTemplate
|
||||
title: $:/editions/tw5.com/empty-tag-node-template
|
||||
type:
|
||||
|
||||
<$list filter='[<storyTiddler>!has[text]!has[tags]] :filter[tagging[]]'>
|
||||
The following tiddlers are tagged with <<tag>>:
|
||||
</$list>
|
||||
<<list-links filter:"[<storyTiddler>!has[text]!has[tags]tagging[]]" class:"multi-columns">>
|
@ -4,7 +4,7 @@ tags: Features
|
||||
title: AutoSave
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
If there is a SaverModule available that supports it, TiddlyWiki will automatically trigger a save of the current document on clicking <<.icon $:/core/images/done-button>> ''ok'' or <<.icon $:/core/images/delete-button>> ''delete'' when editing a tiddler.
|
||||
If there is a SavingMechanism available that supports it, TiddlyWiki will automatically trigger a save of the current document on clicking <<.icon $:/core/images/done-button>> ''ok'' or <<.icon $:/core/images/delete-button>> ''delete'' when editing a tiddler.
|
||||
|
||||
You should see a yellow notification at the top right of the window to confirm that an automatic save has taken place.
|
||||
|
||||
|
5
editions/tw5.com/tiddlers/fields/_canonical_uriField.tid
Normal file
5
editions/tw5.com/tiddlers/fields/_canonical_uriField.tid
Normal file
@ -0,0 +1,5 @@
|
||||
created: 20240627223618060
|
||||
modified: 20240627223637576
|
||||
title: $:/language/Docs/Fields/_canonical_uri
|
||||
|
||||
The full URI of an external image, audio, or html file
|
@ -1,12 +1,12 @@
|
||||
caption: minlength
|
||||
created: 20161011074235805
|
||||
modified: 20161011074235805
|
||||
from-version: 5.1.14
|
||||
modified: 20240709161140504
|
||||
op-input: a list of items
|
||||
op-output: those items at least as long as the specified minimum length
|
||||
op-parameter: the minimum length for items
|
||||
op-parameter-name: minlength
|
||||
op-purpose: filter items shorter than the specified minimum length
|
||||
from-version: 5.1.14
|
||||
op-purpose: filter items whose length is greater than or equal to the specified minimum length
|
||||
tags: [[Filter Operators]]
|
||||
title: minlength Operator
|
||||
type: text/vnd.tiddlywiki
|
||||
|
@ -1,6 +1,6 @@
|
||||
caption: sortsub
|
||||
created: 20200424160155182
|
||||
modified: 20210522162521222
|
||||
modified: 20240717115735166
|
||||
op-input: a [[selection of titles|Title Selection]]
|
||||
op-neg-output: the input, sorted into reverse order by the result of evaluating subfilter <<.param S>>
|
||||
op-output: the input, sorted into ascending order by the result of evaluating subfilter <<.param S>>
|
||||
@ -15,19 +15,23 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
Each item in the list of input titles is passed to the subfilter in turn. The subfilter transforms the input titles into the form needed for sorting. For example, the subfilter `[length[]]` transforms each input title in the number representing its length, and thus sorts the input titles according to their length.
|
||||
|
||||
Note that within the subfilter, the "currentTiddler" variable is set to the title of the tiddler being processed. This permits subfilters like `[{!!value}divide{!!cost}]` to be used for computation.
|
||||
Note that within the subfilter <<.place S>>, the <<.var currentTiddler>> variable is set to the title of the tiddler being processed. This permits subfilters like `[{!!value}divide{!!cost}]` to be used for computation.
|
||||
|
||||
The value of currentTiddler outside the subfilter is available in the variable "..currentTiddler". <<.from-version "5.2.0">>
|
||||
The value of <<.var currentTiddler>> outside the subfilter is available in the variable <<.var ..currentTiddler>>. <<.from-version "5.2.0">>
|
||||
|
||||
The suffix <<.place T>> determines how the items are compared and can be:
|
||||
|
||||
* "string" (the default)
|
||||
* "number" - invalid numbers are interpreted as zero
|
||||
* "integer" - invalid integers are interpreted as zero
|
||||
* "date" - invalid dates are interpreted as 1st January 1970
|
||||
* "version" - invalid versions are interpreted as "v0.0.0"
|
||||
* "alphanumeric" - treat items as alphanumerics <<.from-version "5.2.0">>
|
||||
* ''string'' (the default)
|
||||
* ''number'' - invalid numbers are interpreted as zero
|
||||
* ''integer'' - invalid integers are interpreted as zero
|
||||
* ''date'' - invalid dates are interpreted as 1st January 1970
|
||||
* ''version'' - invalid versions are interpreted as "v0.0.0"
|
||||
* ''alphanumeric'' - treat items as alphanumerics <<.from-version "5.2.0">>
|
||||
|
||||
Note that subfilters should return the same number of items that they are passed. Any missing entries will be treated as zero or the empty string. In particular, when retrieving the value of a field with the [[get Operator]] it is helpful to guard against a missing field value using the [[else Operator]]. For example `[get[myfield]else[default-value]...`.
|
||||
<<.tip """Note that subfilters <<.place S>> ''should return the same number of items that they are passed''. In particular, when retrieving the value of a field with the <<.olink get>> operator it is helpful to guard against a missing field value using the <<.olink else>> operator. For example `...[get[myfield]else[default-value]]`.<br><br>
|
||||
|
||||
Any ''missing'' entries will be treated as ''zero'' or the ''empty string''.""">>
|
||||
|
||||
Also see: [[Sort Filter Run Prefix]]
|
||||
|
||||
<<.operator-examples "sortsub">>
|
||||
|
@ -1,5 +1,5 @@
|
||||
created: 20150220152540000
|
||||
modified: 20230710074423650
|
||||
modified: 20240708202234843
|
||||
tags: [[Filter Step]]
|
||||
title: Filter Parameter
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -29,6 +29,8 @@ The parameter to a [[filter operator|Filter Operators]] can be:
|
||||
:: The parameter is the current value of the [[variable|Variables]] whose name appears between the angle brackets. Macro parameters are <<.em not>> supported up to v5.2.0
|
||||
::<<.from-version "5.2.0">> Literal macro parameters are supported. For example: `[<now [UTC]YYYY0MM0DD0hh0mm0ssXXX>]`.
|
||||
|
||||
<<.note """Every [[filter Operator]] must be followed by a parameter expression. In the case of [[Operators without parameters]], that expression is empty, as with the filter Operator <<.olink links>> in `[<currentTiddler>links[]]`.""">>
|
||||
|
||||
---
|
||||
|
||||
<<.from-version "5.1.23">> [[Filter Step]]s support multiple parameters which are separated by a `,` character.
|
||||
|
@ -4,7 +4,7 @@ tags: [[Filter Run Prefix]]
|
||||
title: Named Filter Run Prefix
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
In <<.from-version "5.1.23">> the named filter run prefixes where implemented. `:cascade`, `:map` and `:sort` have been added later as shown in the diagrams.
|
||||
In <<.from-version "5.1.23">> the named filter run prefixes were implemented. `:cascade`, `:map` and `:sort` have been added later as shown in the diagrams.
|
||||
|
||||
A named filter run prefix can precede any [[run|Filter Run]] of a [[filter expression|Filter Expression]] in place of a [[shortcut run prefix|Shortcut Filter Run Prefix]].
|
||||
|
||||
|
@ -30,4 +30,4 @@ Sort as text with case sensitivity:
|
||||
<<.operator-example 7 "Apple Banana Orange Grapefruit guava DragonFruit Kiwi apple orange :sort:string:casesensitive[{!!title}]">>
|
||||
|
||||
Sort as text ignoring case:
|
||||
<<.operator-example 8 "Apple Banana Orange Grapefruit guava DragonFruit Kiwi apple orange :sort:string:caseinsensitive[{!!title}]">>
|
||||
<<.operator-example 8 "Apple Banana Orange Grapefruit guava DragonFruit Kiwi apple orange :sort:string:caseinsensitive[{!!title}]">>
|
||||
|
@ -1,10 +1,11 @@
|
||||
created: 20210428083929749
|
||||
from-version: 5.2.0
|
||||
modified: 20240312203002082
|
||||
modified: 20240717120111427
|
||||
rp-input: the filter output of all previous runs so far
|
||||
rp-output: output titles replace the output of previous filter runs
|
||||
rp-purpose: sort the input titles by the result of evaluating this filter run for each item
|
||||
rp-suffix: the <<.op :sort>> filter run prefix uses a rich suffix, see below for details
|
||||
rp-suffix: the :sort filter run prefix uses a rich suffix, see below for details
|
||||
rp-suffix-name: S
|
||||
tags: [[Named Filter Run Prefix]]
|
||||
title: Sort Filter Run Prefix
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -12,9 +13,19 @@ type: text/vnd.tiddlywiki
|
||||
<$railroad text="""
|
||||
\start none
|
||||
\end none
|
||||
( ( ":sort" )
|
||||
( : ":string" | ":alphanumeric" | ":number" | ":integer" | ":version" | ":date" )
|
||||
( : ":casesensitive" /"required for string and alphanumeric"/ | ":caseinsensitive" /"required for string and alphanumeric"/ | ":reverse" /"optional"/ | - ) | - )
|
||||
( ":sort" )
|
||||
( ":" )
|
||||
( : "string" | "alphanumeric" | "number" | "integer" | "version" | "date" )
|
||||
( ":" )
|
||||
{
|
||||
(
|
||||
(
|
||||
( : "caseinsensitive" /"required for string and alphanumeric"/ | "casesensitive" /"required for string and alphanumeric"/)
|
||||
| "reverse" /"optional"/
|
||||
)
|
||||
)
|
||||
+","
|
||||
}
|
||||
[[run|"Filter Run"]]
|
||||
"""/>
|
||||
|
||||
@ -22,7 +33,7 @@ Each input title from previous runs is passed to this run in turn. The filter ru
|
||||
|
||||
Note that within the filter run, the <<.var currentTiddler>> variable is set to the title of the tiddler being processed. This permits filter runs like `:sort:number[{!!value}divide{!!cost}]` to be used for computation. The value of <<.var currentTiddler>> outside the run is available in the variable <<.var "..currentTiddler">>.
|
||||
|
||||
The `:sort` filter run prefix uses an extended syntax that allows for multiple suffixes, some of which are required:
|
||||
The `:sort` <<.place S>> filter run prefix uses an extended syntax that allows for multiple suffixes, some of which are required:
|
||||
|
||||
```
|
||||
:sort:<type>:<flaglist>[...filter run...]
|
||||
@ -30,10 +41,19 @@ The `:sort` filter run prefix uses an extended syntax that allows for multiple s
|
||||
```
|
||||
|
||||
* ''type'': Required. Determines how the items are compared and can be any of: ''string'', ''alphanumeric'', ''number'', ''integer'', ''version'' or ''date''.
|
||||
|
||||
* ''flaglist'': comma separated list of the following flags:
|
||||
|
||||
** ''casesensitive'' or ''caseinsensitive'' (required for types `string` and `alphanumeric`).
|
||||
*** defaults to: //caseinsensitive// if the flag is missing.
|
||||
*** for clarity this parameter should be always defined.
|
||||
|
||||
** ''reverse'' to invert the order of the filter run (optional).
|
||||
|
||||
Note that filter runs used with the `:sort` prefix should return the same number of items that they are passed. Any missing entries will be treated as zero or the empty string. In particular, when retrieving the value of a field with the [[get Operator]] it is helpful to guard against a missing field value using the [[else Operator]]. For example `[get[myfield]else[default-value]...`.
|
||||
<<.tip """Note that filter runs used with the `:sort` prefix ''should return the same number of items that they are passed''. In particular, when retrieving the value of a field with the [[get Operator]] it is helpful to guard against a missing field value using the [[else Operator]]. For example `...[get[myfield]else[default-value]]`.<br><br>
|
||||
|
||||
Any ''missing'' entries will be treated as ''zero'' or the ''empty string''.""">>
|
||||
|
||||
Also see: <<.olink sortsub>> Operator
|
||||
|
||||
[[Examples|Sort Filter Run Prefix (Examples)]]
|
@ -1,4 +1,6 @@
|
||||
caption: unique
|
||||
created: 20240709151018238
|
||||
modified: 20240709151336906
|
||||
op-input: a list of items
|
||||
op-output: a list of unique items
|
||||
op-parameter: ignored
|
||||
@ -7,4 +9,6 @@ tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]]
|
||||
title: unique Operator
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<<.note """Unlike the default <<.link "Dominant Append" "Dominant Append">> handling of duplication, the effect of <<.op unique>> is to retain only the <<.em earliest>> instance among duplicated values.""">>
|
||||
|
||||
<<.operator-examples "unique">>
|
||||
|
@ -1,6 +1,6 @@
|
||||
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?]]
|
||||
modified: 20231223102201587
|
||||
modified: 20240710115948992
|
||||
tags: TableOfContents
|
||||
title: HelloThere
|
||||
type: text/vnd.tiddlywiki
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 115 KiB |
@ -1,4 +1,6 @@
|
||||
title: Open Collective Logo
|
||||
created: 20240621075644739
|
||||
modified: 20240621075647009
|
||||
tags: picture
|
||||
title: Open Collective Logo
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" viewBox="0 0 28 28"><path d="M25.509 6.026A13.934 13.934 0 0 1 28 14c0 2.963-.92 5.71-2.491 7.974l-3.626-3.627A8.96 8.96 0 0 0 23 14a8.964 8.964 0 0 0-1.117-4.347l3.626-3.627Z"/><path d="m21.974 2.49-3.627 3.628a9 9 0 1 0 0 15.765l3.627 3.626A13.934 13.934 0 0 1 14 27.999C6.268 28 0 21.733 0 14 0 6.269 6.268 0 14 0c2.963 0 5.711.922 7.974 2.492Z"/></svg>
|
||||
<svg style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" viewBox="0 0 28 28"><path d="M25.509 6.026A13.934 13.934 0 0 1 28 14c0 2.963-.92 5.71-2.491 7.974l-3.626-3.627A8.96 8.96 0 0 0 23 14a8.964 8.964 0 0 0-1.117-4.347l3.626-3.627Z"/><path d="m21.974 2.49-3.627 3.628a9 9 0 1 0 0 15.765l3.627 3.626A13.934 13.934 0 0 1 14 27.999C6.268 28 0 21.733 0 14 0 6.269 6.268 0 14 0c2.963 0 5.711.922 7.974 2.492Z"/></svg>
|
@ -1,37 +1,16 @@
|
||||
caption: lingo
|
||||
created: 20150221154907000
|
||||
modified: 20231028123405895
|
||||
tags: Macros [[Core Macros]]
|
||||
modified: 20150221155706000
|
||||
title: lingo Macro
|
||||
type: text/vnd.tiddlywiki
|
||||
tags: Macros [[Core Macros]]
|
||||
caption: lingo
|
||||
|
||||
The <<.def lingo>> [[macro|Macros]] relates to the translation of ~TiddlyWiki's user interface into other languages. It returns a piece of text in the user's currently selected language.
|
||||
|
||||
Translatable text is supplied by:
|
||||
Translatable text is supplied by language plugins containing tiddlers with specific titles that start with `$:/language/`.
|
||||
|
||||
# Language plugins
|
||||
# Any l10n (localization) strings outside of the language plugins
|
||||
|
||||
!! Language plugins
|
||||
|
||||
You can directly pass title to `lingo` macro, when there is a language plugin containing a tiddler with such title that start with `$:/language/`.
|
||||
!! Parameters
|
||||
|
||||
;title
|
||||
: The title of the shadow tiddler that contains the text. The prefix `$:/language/` is added automatically
|
||||
|
||||
<<.macro-examples "lingo (for language plugin)">>
|
||||
|
||||
!! Any l10n strings
|
||||
|
||||
To translate any text that directly placed in user's wiki, instead of in a language plugin, you can set the `lingo-base` variable to teach <<.def lingo>> macro the place to look for.
|
||||
|
||||
!!! Parameters
|
||||
|
||||
;key
|
||||
: The last part of title of the tiddler that contains the text. The `<<lingo-base>>` prefix and current language name prefix is added automatically
|
||||
;lingo-base-fallback
|
||||
: Optional lingo-base when it is not possible to define `lingo-base` variable (for example, when using this macro in the caption field), you can set the lingo base by passing this parameter
|
||||
|
||||
<<.macro-examples "lingo (for custom base)">>
|
||||
|
||||
{{lingo Macro (file structure)}}
|
||||
<<.macro-examples "lingo">>
|
||||
|
@ -1,6 +1,6 @@
|
||||
caption: tabs
|
||||
created: 20131228162203521
|
||||
modified: 20210721122823354
|
||||
modified: 20240627201724476
|
||||
tags: Macros [[Core Macros]]
|
||||
title: tabs Macro
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -34,7 +34,7 @@ By default the tabs are arranged horizontally above the content. To get vertical
|
||||
|
||||
Within the template, the title of the selected tab is available in the <<.var currentTab>> variable.
|
||||
|
||||
The <<.vlink currentTiddler>> variable is not affected by the <<.var tabs>> macro. This can put you in trouble if the list of tabs includes tiddlers that depend on the value of the <<.vlink currentTiddler>>, for example tiddlers listing children based on its own name. To overcome this problem you can use a [[TemplateTiddler|TemplateTiddlers]] like the following:
|
||||
The <<.vlink currentTiddler>> variable is not affected by the <<.var tabs>> macro. This can put you in trouble if the list of tabs includes tiddlers that depend on the value of the <<.vlink currentTiddler>>, for example tiddlers listing children based on its own name. To overcome this problem you can make use of the <<.vlink currentTab>> variable, which can be used in a [[TemplateTiddler|TemplateTiddlers]] such as the following:
|
||||
|
||||
```
|
||||
<$tiddler tiddler=<<currentTab>>>
|
||||
|
@ -1,21 +0,0 @@
|
||||
created: 20231028120432257
|
||||
modified: 20240206113509050
|
||||
tags: [[lingo Macro]] [[Macro Examples]]
|
||||
title: lingo (for custom base) Macro (Examples)
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define lingo-base() lingo Macro (custom base examples)/
|
||||
|
||||
Given the `\define lingo-base() lingo Macro (custom base examples)/`, this example shows the localizaion key `ExampleKey` being translate to the text in [[lingo Macro (custom base examples)/en-GB/ExampleKey]]:
|
||||
|
||||
<$macrocall $name=".example" n="1" eg="""<<lingo ExampleKey>>"""/>
|
||||
|
||||
This example shows the `lingo-base` can be set as second parameter:
|
||||
|
||||
<$macrocall $name=".example" n="2" eg="""<<lingo ExampleKey "lingo Macro (custom base examples)/">>"""/>
|
||||
|
||||
When use lingo macro in a [[Inline Mode WikiText]] like [[list|Lists in WikiText]] or [[title|Headings in WikiText]], the parse mode will be inline, so translated text will be inlined too.
|
||||
|
||||
<$macrocall $name=".example" n="3" eg="""# <<lingo ExampleKey>>"""/>
|
||||
|
||||
<$macrocall $name=".example" n="4" eg="""!! <<lingo ExampleKey>>"""/>
|
@ -1,8 +0,0 @@
|
||||
created: 20231028120526948
|
||||
modified: 20240206113155142
|
||||
title: lingo Macro (custom base examples)/en-GB/ExampleKey
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
This is the translated text of key "~ExampleKey" under lingo-base `lingo Macro (custom base examples)/` (don't forget the tailing slash `/`)
|
||||
|
||||
And is multi-line, if it is translated in the block mode by default. (Become single line if set to inline mode.)
|
@ -1,73 +0,0 @@
|
||||
created: 20231028120432257
|
||||
modified: 20240206122408606
|
||||
tags: [[lingo Macro]] [[Macro Examples]]
|
||||
title: lingo Macro (file structure)
|
||||
|
||||
!! Example file structure for [[TiddlyWiki on Node.js]]
|
||||
|
||||
!!! Suggested file structure
|
||||
|
||||
When developing a plugin, you may want to organize your language files like this on the file system as [[MultiTiddlerFiles]]:
|
||||
|
||||
```tree
|
||||
├── language
|
||||
│ ├── en-GB
|
||||
│ │ ├── Translations.multids
|
||||
│ │ └── SomeLongText.tid
|
||||
│ └── zh-Hans
|
||||
│ ├── Translations.multids
|
||||
│ └── SomeLongText.tid
|
||||
├── other files
|
||||
└── plugin.info
|
||||
```
|
||||
|
||||
See [[$:/plugins/tiddlywiki/menubar/tree]] for an example.
|
||||
|
||||
!!! Define Multiple Translations in One Tiddler
|
||||
|
||||
And the content of `language/en-GB/Translations.multids` may looks like this:
|
||||
|
||||
```multids
|
||||
title: $:/plugins/yourName/pluginName/language/en-GB/
|
||||
|
||||
OpenInteractiveCard: Open Interactive Card
|
||||
OpenStaticCard: Open Static Card
|
||||
```
|
||||
|
||||
Later you can use it like:
|
||||
|
||||
```tid
|
||||
title: someTiddler
|
||||
caption: <<lingo OpenStaticCard "$:/plugins/yourName/pluginName/language/">>
|
||||
|
||||
\define lingo-base() $:/plugins/yourName/pluginName/language/
|
||||
\whitespace trim
|
||||
|
||||
<<lingo OpenInteractiveCard>>
|
||||
```
|
||||
|
||||
!!! Define Long Text in a regular Tiddler
|
||||
|
||||
You can also use a regular tiddler for long text, like `SomeLongText.tid` in the example above, to store a multi-paragraph long text:
|
||||
|
||||
```tid
|
||||
title: $:/plugins/yourName/pluginName/language/en-GB/SomeLongText
|
||||
|
||||
!!! SubTitle
|
||||
|
||||
This is a long text.
|
||||
```
|
||||
|
||||
Later you can use it like:
|
||||
|
||||
```tid
|
||||
title: someTiddler
|
||||
|
||||
\define lingo-base() $:/plugins/yourName/pluginName/language/
|
||||
|
||||
!! <<lingo "OpenInteractiveCard">>
|
||||
|
||||
<<lingo SomeLongText>>
|
||||
```
|
||||
|
||||
Note that lingo macro will use the [[parse mode|WikiText Parser Modes]] in the current position where this procedure is invoked.
|
@ -1,7 +1,7 @@
|
||||
created: 20150221151358000
|
||||
modified: 20150221160113000
|
||||
tags: [[lingo Macro]] [[Macro Examples]]
|
||||
title: lingo (for language plugin) Macro (Examples)
|
||||
title: lingo Macro (Examples)
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
This example shows the text used as the basis for the title of a newly created tiddler:
|
@ -1,6 +1,6 @@
|
||||
caption: tag-picker
|
||||
created: 20161128191316701
|
||||
modified: 20230616114543787
|
||||
modified: 20240708175550512
|
||||
tags: Macros [[Core Macros]]
|
||||
title: tag-picker Macro
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -19,7 +19,8 @@ The <<.def tag-picker>> [[macro|Macros]] generates a combination of a text box a
|
||||
: <<.from-version 5.3.4>> Defines the target tiddler, which should be manipulated. Defaults to: <<.var currentTiddler>>.
|
||||
|
||||
; tagListFilter
|
||||
: <<.from-version 5.3.4>> This parameter defaults to: `[tags[]]` which creates a list of all existing tags. If the tag list should come from a different source the filter should look similar to eg: `[<listSource>get[field-name]enlist-input[]]`.
|
||||
: <<.from-version 5.3.4>> This parameter defaults to: `[tags[]]` which creates a list of all existing tags. If the tag list should come from a different source the filter should look similar to eg: `[<listSource>get[field-name]enlist-input[]]`. See examples.
|
||||
: <<.from-version 5.3.5>> This parameter defaults to: `[tags[]sort[]]`. This change allows a custom sort order, since `sort[]` is not hardcoded into the tag-picker macro anymore.
|
||||
|
||||
|
||||
<<.macro-examples "tag-picker">>
|
||||
|
@ -18,12 +18,13 @@ The name wrapped in double angled [[brackets|Brackets]] is a shorthand way of [[
|
||||
|
||||
```
|
||||
<<my-procedure>>
|
||||
<<my-procedure "The parameter">>
|
||||
<<my-procedure parameter:"The parameter">>
|
||||
```
|
||||
|
||||
The parameters that are specified in the procedure call are made available as variables.
|
||||
|
||||
<<.tip """If a procedure has more than 1 parameter, it is highly encouraged to use "named parameters", as shown in the second example above. Even if it is more to type, it will pay off in the long run.""">>
|
||||
<<.tip """If a procedure has more than one parameter, it is highly encouraged to use "named parameters", as shown in the third example above and in contrast to the second example. Even if it is more to type, it will pay off in the long run.""">>
|
||||
|
||||
!! How Procedures Work
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
caption: 5.3.2
|
||||
created: 20231213080637781
|
||||
description: Conditional Shortcut Syntax, ListWidget Improvements
|
||||
modified: 20231213080637781
|
||||
released: 20231213080637781
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.3.2
|
||||
type: text/vnd.tiddlywiki
|
||||
description: Under development
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.1...v5.3.2]]//
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
caption: 5.3.3
|
||||
created: 20231223102201587
|
||||
description: Bugfix release for v5.3.2
|
||||
modified: 20231223102201587
|
||||
released: 20231223102201587
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.3.3
|
||||
type: text/vnd.tiddlywiki
|
||||
description: Under development
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.2...v5.3.3]]//
|
||||
|
||||
|
@ -1,12 +1,19 @@
|
||||
caption: 5.3.4
|
||||
created: 20240529100240232
|
||||
modified: 20240529100240232
|
||||
created: 20240627165458407
|
||||
description: Testcase Widget, Tour Plugin, Geospatial Plugin, transcludes- backtranscludes operators, ...
|
||||
modified: 20240628132840367
|
||||
released: 20240627165458407
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.3.4
|
||||
type: text/vnd.tiddlywiki
|
||||
description: Under development
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.3...master]]//
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.3...v5.3.4]]//
|
||||
|
||||
<<.banner-credits
|
||||
credit:"""Congratulations to [[duarte.framos|https://talk.tiddlywiki.org/u/duarte.framos]] 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-4/9940]]).
|
||||
"""
|
||||
url:"https://raw.githubusercontent.com/Jermolene/TiddlyWiki5/05792a9de331dc31b5016c2029a43977114eb018/editions/tw5.com/tiddlers/images/New%20Release%20Banner.png"
|
||||
>>
|
||||
|
||||
! Major Improvements
|
||||
|
||||
@ -14,7 +21,7 @@ description: Under development
|
||||
|
||||
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7734">> several new features that together allow interactive learning tours to be created and presented in TiddlyWiki.
|
||||
|
||||
The demo TiddlyWiki interactive tour can be seen at https://tiddlywiki.com/prerelease/tour
|
||||
The demo TiddlyWiki interactive tour can be seen at https://tiddlywiki.com/tour
|
||||
|
||||
The new features include:
|
||||
|
||||
@ -34,7 +41,7 @@ The Geospatial Plugin incorporates a number of third party libraries and online
|
||||
* [[Flickr|https://www.flickr.com/services/api/]], a free API for retrieving geotagged photographs
|
||||
* [[OpenLocationCode|https://github.com/google/open-location-code]], Google's open source library for converting to and from Open Location Codes (also known as [[PlusCodes|https://maps.google.com/pluscodes/]])
|
||||
|
||||
Try it out at https://tiddlywiki.com/prerelease/plugins/tiddlywiki/geospatial/
|
||||
Try it out at https://tiddlywiki.com/plugins/tiddlywiki/geospatial/
|
||||
|
||||
!! <<.wlink TestCaseWidget>> Widget
|
||||
|
||||
@ -48,16 +55,15 @@ Test cases can also specify the raw HTML of the expected result which causes the
|
||||
|
||||
<<testcase "TestCases/TestCaseWidget/FailingTest">>
|
||||
|
||||
The easiest way to use the <<.wlink TestCaseWidget>> is by creating TestCaseTiddlers using the new CompoundTiddlers format. There are also many test cases to view in the TiddlyWiki test edition at https://tiddlywiki.com/prerelease/test.html
|
||||
The easiest way to use the <<.wlink TestCaseWidget>> is by creating TestCaseTiddlers using the new CompoundTiddlers format. There are also many test cases to view in the TiddlyWiki test edition at https://tiddlywiki.com/test.html
|
||||
|
||||
! Translation improvements
|
||||
|
||||
<<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/7821">> the [[lingo Macro]] so that plugins can be translated in a similar way to the core. The menubar and tiddlyweb plugins have been updated to use the new mechanism, and we welcome pull requests to convert more of the core plugins to the new mechanism.
|
||||
|
||||
This release also includes improvements to the following translations:
|
||||
|
||||
* Chinese
|
||||
* French
|
||||
* German
|
||||
* Macedonian
|
||||
* Polish
|
||||
|
||||
@ -118,10 +124,8 @@ This release also includes improvements to the following translations:
|
||||
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/8141">> usage of "Cache-Control" header
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7878">> SaveCommand not overwriting files when required
|
||||
|
||||
! Performance Improvements
|
||||
|
||||
*
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/8237">> server header authentication when header is missing
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/8253">> ButtonWidget should refresh when "tooltip" attribute changes
|
||||
|
||||
! Developer Improvements
|
||||
|
||||
@ -129,10 +133,6 @@ This release also includes improvements to the following translations:
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8099">> SJCL library creating variables in global scope
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8179">> `widget.getVariableInfo()` to always return a `params` property
|
||||
|
||||
! Infrastructure 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:
|
49
editions/tw5.com/tiddlers/releasenotes/Release 5.3.5.tid
Normal file
49
editions/tw5.com/tiddlers/releasenotes/Release 5.3.5.tid
Normal file
@ -0,0 +1,49 @@
|
||||
caption: 5.3.5
|
||||
created: 20240710115948992
|
||||
modified: 20240710115948992
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.3.5
|
||||
type: text/vnd.tiddlywiki
|
||||
description: Under development
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.3.4...v5.3.5]]//
|
||||
|
||||
<<.banner-credits
|
||||
credit:"""Congratulations to [[duarte.framos|https://talk.tiddlywiki.org/u/duarte.framos]] 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-4/9940]]).
|
||||
"""
|
||||
url:"https://raw.githubusercontent.com/Jermolene/TiddlyWiki5/a9b6de8c35f0789a27a36218e8422bb11066f115/editions/tw5.com/tiddlers/images/New%20Release%20Banner.png"
|
||||
>>
|
||||
|
||||
This is a bug fix release to address a number of bugs that were introduced with [[Release 5.3.4]].
|
||||
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8327">> backwards compatibility issues with [[colour Macro]] as a procedure
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8322">> typo extra "tags: "
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8332">> adding fields without clicking the "add" button
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8317">> stability badges colors in the Gruvbox, Nord and Solarized palettes
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8333">> crash with DataWidget if `$filter` attribute specifies a missing tiddler
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/6554b5c9f4f6888f0c25c833b775c3a74ea15531">> reapplies [[#8246 Link to correct plugin instructions for Node.js|https://github.com/Jermolene/TiddlyWiki5/pull/8246]] which had accidentally been reverted
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d2c2ada33ccd3d73d39d8c0461f327e4dee68234">> tour display in "zoomin" storyview
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/8f1792df2059378db0f038c563551373e5d95fbe">> test case import icon
|
||||
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/8354">> crash when editing JSON text of a plugin tiddler
|
||||
|
||||
! Acknowledgements for v5.3.5
|
||||
|
||||
[[@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 """
|
||||
andrewgoz
|
||||
btheado
|
||||
Leilei332
|
||||
michaeljmcd
|
||||
oeyoews
|
||||
pmario
|
||||
springerspandrel
|
||||
""">>
|
||||
|
||||
---
|
||||
|
||||
! Release Note for v5.3.4
|
||||
|
||||
Since v5.3.5 replaces v5.3.4 after only a couple of weeks, here is the release note for v5.3.4.
|
||||
|
||||
{{Release 5.3.4}}
|
@ -9,7 +9,6 @@ modified: 20220223160414274
|
||||
tags: Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows Edge
|
||||
title: Saving with Polly
|
||||
type: text/vnd.tiddlywiki
|
||||
ribbon-text: NEW
|
||||
|
||||
[[Polly|https://github.com/Marxsal/polly]] is a batch file system using Windows //~PowerShell// to restore ~TiddlyWiki files from a specified download directory to their original home directory.
|
||||
|
||||
|
@ -8,7 +8,6 @@ modified: 20221126192853897
|
||||
tags: Chrome Firefox [[Internet Explorer]] Linux Mac Opera Safari Saving Windows iOS Edge
|
||||
title: TiddlyBucket - Save to AWS or Google Storage
|
||||
type: text/vnd.tiddlywiki
|
||||
ribbon-text: NEW
|
||||
|
||||
~TiddlyBucket - Save to AWS or Google Storage using Go
|
||||
|
||||
|
@ -3,4 +3,4 @@ modified: 20131211131023829
|
||||
title: $:/SiteTitle
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
TiddlyWiki
|
||||
TiddlyWiki @@font-size:small; v<<version>>@@
|
@ -1,19 +1,19 @@
|
||||
created: 20220719120233104
|
||||
list-after: $:/core/ui/ViewTemplate/body
|
||||
modified: 20220719120319922
|
||||
modified: 20240710163659672
|
||||
tags: $:/tags/ViewTemplate
|
||||
title: $:/editions/tw5.com/systemtag-template
|
||||
|
||||
<$list filter='[all[current]prefix[SystemTag: ]]'>
|
||||
<$let tag={{{ [all[current]removeprefix[SystemTag: ]] }}} >
|
||||
<$let thisTag={{{ [all[current]removeprefix[SystemTag: ]] }}} >
|
||||
|
||||
<$list filter='[all[tiddlers+shadows]tag<tag>limit[1]]' emptyMessage='(No tiddlers are currently tagged with <<tag>> )'>
|
||||
<$list filter='[all[tiddlers+shadows]tag<thisTag>limit[1]]' emptyMessage='(No tiddlers are currently tagged with <<tag>> )'>
|
||||
|
||||
The following tiddlers are tagged with <<tag>>
|
||||
The following tiddlers are tagged with <<tag $(thisTag)$ >>
|
||||
|
||||
<table>
|
||||
<tr><th></th><th>caption</th></tr>
|
||||
<$list filter='[all[tiddlers+shadows]tag<tag>sort[]]'>
|
||||
<$list filter='[all[tiddlers+shadows]tag<thisTag>sort[]]'>
|
||||
<tr>
|
||||
<td><$link/></td>
|
||||
<td><$transclude field="caption"><$transclude field="description"><$view field="title"/></$transclude></$transclude></td>
|
||||
|
@ -75,7 +75,7 @@ type: text/vnd.tiddlywiki
|
||||
<tr>
|
||||
<th><<id>></th>
|
||||
<td><$codeblock code=<<code>>/></td>
|
||||
<td><<code>></td>
|
||||
<td><$transclude $variable="code" $mode="block"/></td>
|
||||
</tr>
|
||||
\end
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
created: 20230616104546608
|
||||
modified: 20240214174032498
|
||||
modified: 20240708132312901
|
||||
tags: [[tag-picker Macro]] [[Macro Examples]]
|
||||
title: tag-picker Macro (Examples)
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
<<.warning """The first example will set the tag of the <<.tid currentTiddler>> so you should copy / paste it to a new tiddler for testing. Otherwise you'll change "this tiddler" """>>
|
||||
<<.warning """The first example will add tags to the <<.tid currentTiddler>> so you should copy / paste it to a new tiddler for testing. Otherwise you'll change "this tiddler" """>>
|
||||
|
||||
<$macrocall $name=".example" n="1"
|
||||
eg="""Use all existing tags and set the ''tags'' field here: <<tag-picker>>
|
||||
<$transclude $variable=".example" n="1"
|
||||
eg="""Add tags to this tiddler's ''tags'' field (selecting from a list of all tags): <<tag-picker>>
|
||||
"""/>
|
||||
|
||||
----
|
||||
@ -17,41 +17,41 @@ eg="""Use all existing tags and set the ''tags'' field here: <<tag-picker>>
|
||||
<<.tip """The following examples use a temporary tiddler: $:/temp/test/tag-picker. So this tiddler will not be changed """>>
|
||||
|
||||
|
||||
<$macrocall $name=".example" n="2"
|
||||
<$transclude $variable=".example" n="2"
|
||||
eg="""$:/temp/test/tag-picker ''tags'': <$text text={{{ [[$:/temp/test/tag-picker]get[tags]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||
|
||||
Use all existing tags and set the $:/temp/test/tag-picker ''tags'' field: <<tag-picker tiddler:"$:/temp/test/tag-picker">>
|
||||
Add tags to the $:/temp/test/tag-picker ''tags'' field (selecting from a list of all tags): <<tag-picker tiddler:"$:/temp/test/tag-picker">>
|
||||
"""/>
|
||||
|
||||
----
|
||||
|
||||
<<.tip """Use the following example to populate the $:/temp/test/tag-picker ''foo''-field, which are needed by some examples below """>>
|
||||
|
||||
<$macrocall $name=".example" n="3"
|
||||
<$transclude $variable=".example" n="3"
|
||||
eg="""$:/temp/test/tag-picker ''foo'': <$text text={{{ [[$:/temp/test/tag-picker]get[foo]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||
|
||||
Use all existing tags and set the $:/temp/test/tag-picker ''foo'' field: <<tag-picker tagField:"foo" tiddler:"$:/temp/test/tag-picker">>
|
||||
Add tags to the $:/temp/test/tag-picker ''foo'' field (selecting from a list of all tags): <<tag-picker tagField:"foo" tiddler:"$:/temp/test/tag-picker">>
|
||||
"""/>
|
||||
|
||||
----
|
||||
|
||||
<<.tip """The following example expects some values in the "foo" field of the tiddler $:/temp/test/tag-picker, which can be created by the example above.""">>
|
||||
|
||||
<$macrocall $name=".example" n="4" eg="""\procedure listSource() $:/temp/test/tag-picker
|
||||
<$transclude $variable=".example" n="4" eg="""\procedure listSource() $:/temp/test/tag-picker
|
||||
|
||||
$:/temp/test/tag-picker foo: <$text text={{{ [[$:/temp/test/tag-picker]get[foo]enlist-input[]join[, ]else[n/a]] }}}/><br>
|
||||
$:/temp/test/tag-picker bar: <$text text={{{ [[$:/temp/test/tag-picker]get[bar]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||
|
||||
Use $:/temp/test/tag-picker ''foo'' field as source and set ''bar'': <<tag-picker tagField:"bar" tagListFilter:"[<listSource>get[foo]enlist-input[]]" tiddler:"$:/temp/test/tag-picker">>
|
||||
Add tags to the ''bar'' field, selecting from values in ''foo'' field of $:/temp/test/tag-picker: <<tag-picker tagField:"bar" tagListFilter:"[<listSource>get[foo]enlist-input[]]" tiddler:"$:/temp/test/tag-picker">>
|
||||
"""/>
|
||||
|
||||
----
|
||||
|
||||
<<.tip """The following example expects some values in the "foo" field of the tiddler $:/temp/test/tag-picker, which can be created by the example above.<br>
|
||||
It will also add completely new tags to the bar-field and the source tiddlers foo-field. New tags can be entered by typing into the tag-name input
|
||||
It will also add completely new tags to the bar-field and the source tiddler‘s foo-field. New tags can be entered by typing into the tag-name input
|
||||
""">>
|
||||
|
||||
<$macrocall $name=".example" n="5" eg="""
|
||||
<$transclude $variable=".example" n="5" eg="""
|
||||
\procedure listSource() $:/temp/test/tag-picker
|
||||
\procedure listSourceField() foo
|
||||
|
||||
@ -62,7 +62,7 @@ It will also add completely new tags to the bar-field and the source tiddlers fo
|
||||
$:/temp/test/tag-picker foo: <$text text={{{ [[$:/temp/test/tag-picker]get[foo]enlist-input[]join[, ]else[n/a]] }}}/><br>
|
||||
$:/temp/test/tag-picker ''bar'': <$text text={{{ [[$:/temp/test/tag-picker]get[bar]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||
|
||||
Use $:/temp/test/tag-picker ''foo'' field as source and set ''bar'': <$macrocall $name="tag-picker" tagField="bar" tagListFilter="[<listSource>get<listSourceField>enlist-input[]]" tiddler="$:/temp/test/tag-picker" actions=<<addNewTagToSource>>/>
|
||||
Add tags to ''bar'' field, selecting from values in ''foo'' field of $:/temp/test/tag-picker: <$macrocall $name="tag-picker" tagField="bar" tagListFilter="[<listSource>get<listSourceField>enlist-input[]]" tiddler="$:/temp/test/tag-picker" actions=<<addNewTagToSource>>/>
|
||||
|
||||
"""/>
|
||||
|
||||
|
@ -0,0 +1,17 @@
|
||||
title: TestCases/DataWidget/FilterMissingTiddler
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
description: Filter returns title of missing tiddler
|
||||
display-format: plaintext
|
||||
|
||||
title: Narrative
|
||||
|
||||
When the $filter attribute of the data widget returns the title of a missing tiddler, no tiddler should be added to the output array of tiddlers.
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$data $filter="missing"/>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>[]</p>
|
@ -5,7 +5,7 @@ description: An example of a failing test
|
||||
|
||||
title: Narrative
|
||||
|
||||
This test case intentionally fails (in order to show how failures are displayed)
|
||||
This test case intentionally fails (in order to show how failures are displayed). The expected result is set to <code><$text text={{ExpectedResult}}/></code>, but the result computes to <code><$wikify name="html" text={{Output}} mode="block" output="html"><$text text=<<html>>/></$wikify></code>
|
||||
+
|
||||
title: Output
|
||||
|
||||
|
@ -1,7 +1,9 @@
|
||||
caption: edit-text
|
||||
created: 20131024141900000
|
||||
modified: 20230122210049893
|
||||
heading:
|
||||
modified: 20240627184331133
|
||||
tags: Widgets
|
||||
temp:
|
||||
title: EditTextWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
@ -66,3 +68,18 @@ Provide a dated heading for this example where only the placeholder (but not the
|
||||
<$macrocall $name=".example" n="3"
|
||||
eg="""<$edit-text tiddler=<<currentTiddler>> field="heading" size="25" focus="yes" focusSelectFromEnd="13" default={{{ [[Heading Text (]] [<now YYYY-0MM-0DD>] [[)]] +[join[]] }}} />
|
||||
"""/>
|
||||
|
||||
!!! Input Actions, with class attribute
|
||||
|
||||
<$macrocall $name=".example" n="4"
|
||||
eg="""\procedure onInput()
|
||||
<%if [get[temp]match[$:/]] %>
|
||||
<$action-confirm $message="Yes, this is how system tiddler names begin!"/>
|
||||
<% endif %>
|
||||
\end
|
||||
|
||||
Type a new tiddler name, starting with the system prefix `$:/`: <$edit-text inputActions=<<onInput>> field="temp" class="tc-edit-texteditor"/>
|
||||
|
||||
"""/>
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
caption: edit
|
||||
created: 20131024141900000
|
||||
modified: 20211009121634055
|
||||
modified: 20240627220419761
|
||||
tags: Widgets TriggeringWidgets
|
||||
title: EditWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
@ -24,3 +24,16 @@ The content of the `<$edit>` widget is ignored.
|
||||
|inputActions |<<.from-version 5.1.23>> Optional actions that are triggered every time an input event occurs within the input field or textarea |
|
||||
|refreshTitle |<<.from-version 5.1.23>> An optional tiddler title that makes the input field update whenever the specified tiddler changes |
|
||||
|
||||
! Examples
|
||||
|
||||
!! Edit the contents (text field) of a tiddler titled <%if [<now YYYY-0MM-0DD>is[tiddler]] %> <$tiddler tiddler=<<now YYYY-0MM-0DD>> > <$link/></$tiddler> <%else %> with today’s date <% endif %>
|
||||
|
||||
<$macrocall $name=".example" n="1"
|
||||
eg="""<$edit tiddler=<<now YYYY-0MM-0DD>> class="tc-edit-texteditor"/>
|
||||
"""/>
|
||||
|
||||
!! Edit $:/status/UserName with single-line input box, have browser offer autocomplete for email
|
||||
|
||||
<$macrocall $name=".example" n="2"
|
||||
eg="""<$edit-text tiddler="$:/status/UserName" tag="input" size=40 autocomplete="email"/>
|
||||
"""/>
|
@ -23,6 +23,11 @@ Notice also that clicking on links within the output pane will switch to the tab
|
||||
|
||||
The text of the payload tiddlers listed on the left are editable, with the results being immediately reflected in the preview pane on the right. However, if the <<.wid testcase>> widget is refreshed then the modifications are lost.
|
||||
|
||||
There is a dropdown menu at the top right of the menu that has two options:
|
||||
|
||||
* Export the payload tiddlers to a file in the usual export formats
|
||||
* Import the payload tiddlers into the host wiki. This option loads the payload tiddlers into the $:/Import tiddler so that they can be renamed and/or individually selected
|
||||
|
||||
The green tick at the top left of a test case indicates that a test has been set up and that it passes.
|
||||
|
||||
If the test fails, a red cross is shown, and there is a display of the differences between the actual results and the expected results:
|
||||
@ -72,6 +77,7 @@ The test case wiki will inherit variables that are visible to the <<.wid testcas
|
||||
|!Variable |!Description |
|
||||
|<<.var linkTarget>> |Causes the test case description to be rendered as a link to the current tiddler |
|
||||
|<<.var displayFormat>> |Defaults to "wikitext", can also be "plaintext" to force plain text display |
|
||||
|<<.var testcaseTiddler>> |Title of the tiddler to be used as a link target for the testcase description |
|
||||
|
||||
A custom template can be specified for special purposes. For example, the provided template $:/core/ui/testcases/RawJSONTemplate just displays the payload tiddlers in JSON, which can be used for debugging purposes.
|
||||
|
||||
|
@ -1,21 +1,48 @@
|
||||
caption: transclude
|
||||
created: 20130824142500000
|
||||
modified: 20230511022612458
|
||||
modified: 20240621073236430
|
||||
tags: Widgets
|
||||
title: TranscludeWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
! Introduction
|
||||
|
||||
The <<.wlink TranscludeWidget>> widget dynamically includes the content from another tiddler or variable, rendering it as if the transclude widget were replaced by the target content.
|
||||
Transclusion is the underlying mechanism for many higher level wikitext features, such as ''procedures'', ''functions'', ''custom widgets'' and ''macros''.
|
||||
|
||||
The <<.wlink TranscludeWidget>> widget can be used to render content of any type: wikitext, images, videos, etc.
|
||||
The <<.wid transclude>> widget dynamically includes the content from another ''tiddler'' or ''variable'', rendering it as if the transclude widget were replaced by the target content.
|
||||
|
||||
Transclusion is the underlying mechanism for many higher level wikitext features, such as procedures, custom widgets and macros.
|
||||
The <<.wid transclude>> widget can be used to render content of any type: wikitext, images, videos, etc.
|
||||
|
||||
! Attributes
|
||||
|
||||
| !Attribute |<| !Description |
|
||||
| !(modern) | !(legacy) |~|
|
||||
|$variable |- |Name of the variable to transclude. Eg: Name of <<.dlink procedures Procedures>>, <<.dlink functions Functions>>, <<.dlink "custom widgets" Widgets>> and <<.dlink macros Macros>> |
|
||||
|$tiddler |tiddler |The title of the tiddler to transclude (defaults to the current tiddler) |
|
||||
|$field |field |The field name of the current tiddler (defaults to "text"; if present takes precedence over the index attribute) |
|
||||
|$index |index |The index of a property in a [[DataTiddler|DataTiddlers]] |
|
||||
|$subtiddler |subtiddler |Optional SubTiddler title when the target tiddler is a [[plugin|Plugins]] (see below) |
|
||||
|$mode |mode |Override the default parsing mode for the transcluded text to "block" or "inline" |
|
||||
|$type |– |Optional ContentType used when transcluding variables, indexes or fields other than the ''text'' field|
|
||||
|$output |- |ContentType for the output rendering (defaults to `text/html`, can also be `text/plain` or `text/raw`) |
|
||||
|$recursionMarker |recursionMarker |Set to ''no'' to prevent creation of [[Legacy Transclusion Recursion Marker]] (defaults to ''yes'') |
|
||||
|$fillignore |- |Set to ''yes'' to make this transclusion invisible to the <<.attr $depth>> attribute of the <<.wlink SlotWidget>> widget (defaults to ''no'') |
|
||||
|//{attributes not starting with $}// |– |Any other attributes that do not start with a dollar are used as parameters to the transclusion |
|
||||
|//{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 used as parameters to the transclusion, but with the name changed to use a single dollar sign |
|
||||
|
||||
! Legacy vs. Modern Mode
|
||||
|
||||
The <<.wid transclude>> widget can be used in two modes:
|
||||
|
||||
* <<.from-version "5.3.0">> ''Modern mode'' offers the full capabilities of the <<.wid transclude>> widget, and incorporates the functionality of the <<.wlink MacroCallWidget>> widget. It is indicated by the presence of at least one attribute starting with a dollar sign `$`
|
||||
* ''Legacy mode'' offers a more limited set of capabilities. It is indicated by the absence of any attributes starting with a dollar sign `$`
|
||||
|
||||
Modern mode is recommended for use in new applications.
|
||||
|
||||
! Example
|
||||
|
||||
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 <<.wid transclude>> widget:
|
||||
|
||||
```
|
||||
\procedure myproc(name,age)
|
||||
@ -29,36 +56,9 @@ My name is <<name>> and my age is <<age>>.
|
||||
* The content of the procedure refers to the parameters as variables
|
||||
* The <<.wlink TranscludeWidget>> widget specifies the variable to transclude, and values for the parameters.
|
||||
|
||||
! Legacy vs. Modern Mode
|
||||
|
||||
The <<.wlink TranscludeWidget>> widget can be used in two modes:
|
||||
|
||||
* <<.from-version "5.3.0">> ''Modern mode'' offers the full capabilities of the <<.wlink TranscludeWidget>> widget, and incorporates the functionality of the <<.wlink MacroCallWidget>> widget. It is indicated by the presence of at least one attribute starting with a dollar sign `$`
|
||||
* ''Legacy mode'' offers a more limited set of capabilities. It is indicated by the absence of any attributes starting with a dollar sign `$`
|
||||
|
||||
Modern mode is recommended for use in new applications.
|
||||
|
||||
! Attributes
|
||||
|
||||
| !Attribute |<| !Description |
|
||||
| !(modern) | !(legacy) |~|
|
||||
|$variable |- |Name of the variable to transclude |
|
||||
|$tiddler |tiddler |The title of the tiddler to transclude (defaults to the current tiddler) |
|
||||
|$field |field |The field name of the current tiddler (defaults to "text"; if present takes precedence over the index attribute) |
|
||||
|$index |index |The index of a property in a [[DataTiddler|DataTiddlers]] |
|
||||
|$subtiddler |subtiddler |Optional SubTiddler title when the target tiddler is a [[plugin|Plugins]] (see below) |
|
||||
|$mode |mode |Override the default parsing mode for the transcluded text to "block" or "inline" |
|
||||
|$type |– |Optional ContentType used when transcluding variables, indexes or fields other than the ''text'' field|
|
||||
|$output |- |ContentType for the output rendering (defaults to `text/html`, can also be `text/plain` or `text/raw`) |
|
||||
|$recursionMarker |recursionMarker |Set to ''no'' to prevent creation of [[Legacy Transclusion Recursion Marker]] (defaults to ''yes'') |
|
||||
|$fillignore |- |Set to ''yes'' to make this transclusion invisible to the <<.attr $depth>> attribute of the <<.wlink SlotWidget>> widget (defaults to ''no'') |
|
||||
|//{attributes not starting with $}// |– |Any other attributes that do not start with a dollar are used as parameters to the transclusion |
|
||||
|//{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 used as parameters to the transclusion, but with the name changed to use a single dollar sign |
|
||||
|
||||
! Basic Operation
|
||||
|
||||
The basic operation of the <<.wlink TranscludeWidget>> widget is as follows:
|
||||
The basic operation of the <<.wid transclude>> widget is as follows:
|
||||
|
||||
|`<$transclude/>` |Transcludes the text field of the current tiddler |
|
||||
|`<$transclude $variable="alpha"/>` |Transcludes the variable "alpha" (note that procedures, custom widgets and macros are all special types of variable) |
|
||||
@ -69,7 +69,7 @@ The basic operation of the <<.wlink TranscludeWidget>> widget is as follows:
|
||||
|
||||
! Transclusion Parameters
|
||||
|
||||
Named string parameters can be passed to the <<.wlink TranscludeWidget>> widget. They are made available as variables within the transcluded text. Parameters are only supported in modern mode.
|
||||
Named string parameters can be passed to the <<.wid transclude>> widget. They are made available as variables within the transcluded text. Parameters are only supported in modern mode.
|
||||
|
||||
When invoking a transclusion, parameters are specified as additional attributes that do not start with a dollar sign `$`:
|
||||
|
||||
@ -108,7 +108,7 @@ Parameters are available here as the variables <<firstParameter>> and <<secondPa
|
||||
|
||||
! Transclusion Slots
|
||||
|
||||
Transcluded content can define special named locations called slots. At the point of transclusion, blocks of wikitext can be passed to the <<.wlink TranscludeWidget>> widget to fill those slots.
|
||||
Transcluded content can define special named locations called slots. At the point of transclusion, blocks of wikitext can be passed to the <<.wid transclude>> widget to fill those slots.
|
||||
|
||||
Slots work very similarly to parameters except that they can contain structured wikitext, and not just plain text. The primary advantage of slots over parameters is that the contents do not need to be wrapped in quotation symbols, making it much simpler to pass complex structures.
|
||||
|
||||
|
@ -48,7 +48,7 @@ Here's an example the other way around, with numbers as the first level:
|
||||
You can also assign a CSS class to an individual member of a list with this notation:
|
||||
|
||||
<<wikitext-example src:"* List One
|
||||
*.MyClass List Two
|
||||
*.tc-muted List Two
|
||||
* List Three
|
||||
">>
|
||||
|
||||
|
@ -28,6 +28,7 @@ Encryption/ClearPassword/Caption: Verschlüsselung deaktivieren
|
||||
Encryption/ClearPassword/Hint: Lösche das Passwort und speichere ohne Verschlüsselung
|
||||
Encryption/SetPassword/Caption: Verschlüsselung
|
||||
Encryption/SetPassword/Hint: Definiert ein Passwort, um dieses Wiki zu verschlüsseln
|
||||
EmergencyDownload/Caption: Speichern aller Tiddler als JSON File
|
||||
ExportPage/Caption: Alle exportieren
|
||||
ExportPage/Hint: Alle Tiddler exportieren
|
||||
ExportTiddler/Caption: Exportieren
|
||||
@ -103,6 +104,8 @@ ShowSideBar/Caption: Sidebar einblenden
|
||||
ShowSideBar/Hint: Sidebar einblenden
|
||||
TagManager/Caption: Tag-Manager
|
||||
TagManager/Hint: Öffne den Tag-Manager
|
||||
TestCaseImport/Caption: importiere Tiddler
|
||||
TestCaseImport/Hint: Importiere im Test enthaltene Tiddler
|
||||
Timestamp/Caption: Zeitstempel
|
||||
Timestamp/Hint: Einstellung, ob Änderungen den Zeitstempel beeinflussen
|
||||
Timestamp/On/Caption: Zeitstempel EIN
|
||||
@ -192,4 +195,4 @@ ToggleSidebar/Hint: Invertiere die "sidebar" Sichtbarkeit
|
||||
Transcludify/Caption: Transklusion
|
||||
Transcludify/Hint: Transklusion - Den selektierten Text in geschwungene Klammern setzen
|
||||
Underline/Caption: Unterstreichen
|
||||
Underline/Hint: Ausgewählten Text unterstrichen darstellen
|
||||
Underline/Hint: Ausgewählten Text unterstrichen darstellen
|
@ -206,6 +206,12 @@ Stylesheets/Caption: Stylesheets
|
||||
Stylesheets/Expand/Caption: Alle erweitern
|
||||
Stylesheets/Hint: Hier wird der "erweiterte" CSS Code dargestellt. Die Reihenfolge, kann in der "Tag-Liste" <<tag "$:/tags/Stylesheet">> mit "Drag & Drop" angepasst werden!
|
||||
Stylesheets/Restore/Caption: Alle zurücksetzen
|
||||
TestCases/Caption: Test Beispiele
|
||||
TestCases/Hint: Test Beispiele sind eigenständige Beispiele zum testen und lernen einzelner Funktionen
|
||||
TestCases/All/Caption: Alle Beispiele
|
||||
TestCases/All/Hint: Alle Test Beispiele
|
||||
TestCases/Failed/Caption: Test Nicht Bestehenden
|
||||
TestCases/Failed/Hint: Nicht bestandene Tests - Übersicht
|
||||
Theme/Caption: Theme
|
||||
Theme/Prompt: Ausgewähltes Theme:
|
||||
TiddlerFields/Caption: Tiddler Felder
|
||||
@ -228,4 +234,4 @@ Tools/Download/Full/Caption: Herunterladen des ''gesamten Wikis''
|
||||
ViewTemplateBody/Caption: View Template Text
|
||||
ViewTemplateBody/Hint: Diese Filter-Kaskade wird vom "View Template" dazu verwendet, um die Vorlage für den Tiddler Textbereich auszuwählen.
|
||||
ViewTemplateTitle/Caption: View Template Titel
|
||||
ViewTemplateTitle/Hint: Diese Filter-Kaskade wird vom "View Template" dazu verwendet, um die Vorlage für den Tiddler Titel auszuwählen.
|
||||
ViewTemplateTitle/Hint: Diese Filter-Kaskade wird vom "View Template" dazu verwendet, um die Vorlage für den Tiddler Titel auszuwählen.
|
@ -84,4 +84,4 @@ RelativeDate/Past/Minutes: vor <<period>> Minuten
|
||||
RelativeDate/Past/Months: vor <<period>> Monaten
|
||||
RelativeDate/Past/Second: vor einer Sekunde
|
||||
RelativeDate/Past/Seconds: vor <<period>> Sekunden
|
||||
RelativeDate/Past/Years: vor <<period>> Jahren
|
||||
RelativeDate/Past/Years: vor <<period>> Jahren
|
@ -9,7 +9,7 @@ config: Daten, die in `$tw.config` eingefügt werden.
|
||||
filteroperator: Individuelle Funktionen für den Filter-Operator.
|
||||
global: Globale Daten, die in `$tw` eingefügt werden.
|
||||
info: Veröffentlicht System-Informationen mit dem Pseudo-plugin: [[$:/temp/info-plugin]]
|
||||
isfilteroperator: Operanden für den Filter-Operator: ''is''
|
||||
isfilteroperator: Parameter für den Filter-Operator: ''is''
|
||||
library: Allgemeiner Modultyp, für JavaScript Module.
|
||||
macro: Globale Makro-Definitionen in JavaScript.
|
||||
parser: Parser für verschiedene Tiddler Typen.
|
||||
@ -27,4 +27,4 @@ utils-browser: Browser-spezifische Methoden werden zu `$tw.utils` hinzugefügt.
|
||||
utils-node: Erweitert `$tw.utils` mit Methoden aus node.js.
|
||||
widget: Widgets verarbeiten das Rendern und Aktualisieren der Anzeige in der DOM.
|
||||
wikimethod: Methoden werden zu `$tw.Wiki` hinzugefügt.
|
||||
wikirule: Enthält die individuellen Parser Regeln für den WikiText-Parser.
|
||||
wikirule: Enthält die individuellen Parser Regeln für den WikiText-Parser.
|
@ -67,6 +67,9 @@ sidebar-tiddler-link-foreground-hover: Seitenleiste Tiddler Link Vordergrund (ho
|
||||
sidebar-tiddler-link-foreground: Seitenleiste Tiddler Link Vordergrund
|
||||
site-title-foreground: Wiki Titel Vordergrund
|
||||
static-alert-foreground: Statische Warnung Vordergrund
|
||||
testcase-accent-level-1: Test Beispiel Akzent Farbe nicht "verschachtelt" - Ebene 1
|
||||
testcase-accent-level-2: Test Beispiel Akzent Farbe with Ebene 2
|
||||
testcase-accent-level-3: Test Beispiel Akzent Farbe with Ebene 3
|
||||
tab-background-selected: Reiter Hintergrund für selektierte Reiter
|
||||
tab-background: Reiter Hintergrund
|
||||
tab-border-selected: Reiter Rahmen für selektierte Reiter
|
||||
@ -106,4 +109,4 @@ toolbar-delete-button: Werkzeugleiste 'Löschen' Button Vordergrund
|
||||
toolbar-cancel-button: Werkzeugleiste 'Abbruch' Button Vordergrund
|
||||
toolbar-done-button: Werkzeugleiste 'Fertig' Button Vordergrund
|
||||
untagged-background: (untagged) Pille Hintergrund
|
||||
very-muted-foreground: Stark abgedunkelter Vordergrund
|
||||
very-muted-foreground: Stark abgedunkelter Vordergrund
|
@ -35,4 +35,4 @@ Title/References/Prompt: Die folgenden Referenz-Links zu diesem Tiddler werden N
|
||||
Type/Delete/Caption: Lösche Inhalts Typ
|
||||
Type/Delete/Hint: Lösche Inhalts Typ
|
||||
Type/Placeholder: Tiddler Format
|
||||
Type/Prompt: Typ:
|
||||
Type/Prompt: Typ:
|
@ -3,4 +3,4 @@ title: $:/language/Exporters/
|
||||
StaticRiver: HTML - Statisch
|
||||
JsonFile: JSON - Format
|
||||
CsvFile: CSV - Format
|
||||
TidFile: TID - Text Format
|
||||
TidFile: TID - Text Format
|
@ -4,6 +4,7 @@ _canonical_uri: Die komplette URI eines externen Foto Tiddlers. URI = Uniform Re
|
||||
author: Name des Plugin-Authors
|
||||
bag: Der Name eines ~TiddlyWeb "bags" von dem der Tiddler kam.
|
||||
caption: Der Text, der auf "Tab-Buttons" angezeigt wird.
|
||||
class: Die CSS Klasse, die angewendet wird, wenn ein Tiddler ausgegeben wird. Siehe: [[Custom styles by user-class]]. Wird auch verwended für: [[Modals]]
|
||||
code-body: Das "View Template" wird den Tiddler Text als "Code" anzeigen, wenn dieses Feld auf: ''"yes"'' gesetzt wird.
|
||||
color: Der CSS Farbwert, der mit einem Tiddler assoziiert wird.
|
||||
component: Der Name einer Komponente, die für eine [[Alarm Anzeige|AlertMechanism]] verantwortlich ist.
|
||||
@ -31,6 +32,7 @@ plugin-priority: Ein numerischer Wert, der die Priorität eines "plugins" festle
|
||||
plugin-type: Der Typ eines "plugins".
|
||||
revision: Die Revisionsnummer eines Tiddlers. Wird von einem Server vergeben.
|
||||
released: Datum der ~TiddlyWiki Ausgabe.
|
||||
stability: Entwicklungs Status: "deprecated"=abgekündigt, "experimental"=experimentell, "stable"=stabil, "legacy"=Altlast.
|
||||
source: Eine Quelltext URL, verbunden mit diesem Tiddler.
|
||||
subtitle: Der Untertitel für einen "~Wizard-Dialog".
|
||||
tags: Eine Liste von "Tags" für diesen Tiddler.
|
||||
@ -40,4 +42,4 @@ title: Ein individueller einmaliger Name eines Tiddlers.
|
||||
toc-link: Unterdrückt die Anzeige als Link, wenn der Wert auf ''"no"'' gesetzt wird
|
||||
type: Legt den Typ eines Tiddlers fest (aka MIME-type).
|
||||
version: Versions-Information eines "plugins".
|
||||
_is_skinny: Wenn es existiert, zeigt diese Feld an, dass das "Text-Feld" dynamisch vom Server geladen wird.
|
||||
_is_skinny: Wenn es existiert, zeigt diese Feld an, dass das "Text-Feld" dynamisch vom Server geladen wird.
|
@ -1,7 +1,7 @@
|
||||
title: $:/language/Help/build
|
||||
description: Ausführen, von vorkonfigurierten Befehlen.
|
||||
|
||||
Dieser Befehl erstellt die vorkonfigurierten Ziele, der aktuellen Wiki Edition. Sind keine Ziele spezifiziert, dann werden all konfigurierten Ziele erstellt.
|
||||
Dieser Befehl erstellt eine Zielversion, der aktuellen Wiki Edition. Sind keine Ziele spezifiziert, dann werden all konfigurierten Ziele erstellt.
|
||||
|
||||
```
|
||||
--build <target> [<target> ...]
|
||||
|
@ -1,7 +1,7 @@
|
||||
title: $:/language/Help/clearpassword
|
||||
description: Lösche das Passwort, das für die vorhergehenen Verschlüsselungen verwendet wurde.
|
||||
description: Lösche das Passwort, das für die vorhergehenden Verschlüsselungen verwendet wurde.
|
||||
|
||||
Lösche das Passwort, das für die vorhergehenen Verschlüsselungen verwendet wurde.
|
||||
Lösche das Passwort, das für die vorhergehenden Verschlüsselungen verwendet wurde.
|
||||
|
||||
```
|
||||
--clearpassword
|
||||
|
@ -1,7 +1,7 @@
|
||||
title: $:/language/Help/commands
|
||||
description: Ausführen von Befehlen aus einem Tiddler
|
||||
description: Ausführen von Befehlen aus einem Filter
|
||||
|
||||
Sequentielle Abarbeitung von Befehlen aus einem Tiddler.
|
||||
Sequentielle Abarbeitung von Befehlen aus einem Filter.
|
||||
|
||||
```
|
||||
--commands <filter>
|
||||
|
@ -7,4 +7,4 @@ Listet alle verfügbaren TiddlyWiki Editionen auf.
|
||||
--editions
|
||||
```
|
||||
|
||||
Sie können ein neues Wiki mit dem `--init` Kommando erstellen. Dabei wird eine der angezeigten Editionen "geklont".
|
||||
Sie können ein neues Wiki mit dem `--init` Befehl erstellen. Dabei wird eine der angezeigten Editionen "geklont".
|
||||
|
@ -1,7 +1,7 @@
|
||||
title: $:/language/Help/fetch
|
||||
description: Fetch tiddlers from wiki by URL
|
||||
description: Laden mehrerer Tiddler über eine URL
|
||||
|
||||
Abrufen eines oder mehrerer Dateien über HTTP/HTTPS. Importieren der tiddler, die dem Filter entsprechen. Umwandeln der ankommenden Titel, wenn nötig.
|
||||
Abrufen eines oder mehrerer Tiddler über HTTP/HTTPS. Importieren der tiddler, die dem Filter entsprechen. Umwandeln der ankommenden Titel, wenn nötig.
|
||||
|
||||
```
|
||||
--fetch file <url> <import-filter> <transform-filter>
|
||||
@ -10,11 +10,11 @@ Abrufen eines oder mehrerer Dateien über HTTP/HTTPS. Importieren der tiddler, d
|
||||
--fetch raw-files <url-filter> <transform-filter>
|
||||
```
|
||||
|
||||
Wird der `file` Parameter verwendet, wird nur eine einzelne Datei geholt. Der erste Parameter ist die URL von der die Datei ''importiert'' werden soll.
|
||||
Wird der `file` oder `raw-file` Parameter verwendet, wird nur eine einzelne Datei geladen. Der erste Parameter ist die URL von der die Datei ''importiert'' werden soll.
|
||||
|
||||
Wird der `files` Parameter verwendet, werden mehrere Dateien geholt. In diesem Fall ist der erste Parameter ein Filter, der eine Liste von URLs ergibt, von denen die Dateien gelesen werden sollen. Zum Beispiel: Mehrere Tiddler sind getagged mit: `remote-server` und enthalten ein Feld: `url`. ... Der Filter `[tag[remote-server]get[url]]` wird alle verfügbaren URLs ansprechen.
|
||||
Wird der `files` Parameter verwendet, werden mehrere Dateien geholt. In diesem Fall ist der erste Parameter ein Filter, der eine Liste von URLs ergibt, von denen die Dateien gelesen werden sollen. Zum Beispiel: Mehrere Tiddler sind getaggt mit: `remote-server` und enthalten ein Feld: `url`. ... Der Filter `[tag[remote-server]get[url]]` wird alle verfügbaren URLs ansprechen.
|
||||
|
||||
Werden die `raw-file` oder `raw-files` Varianten verwendet, wird der Klartext der Datei importiert. Es wird nicht versucht die Import-logik anzuwenden.
|
||||
Werden die `raw-file` oder `raw-files` Varianten verwendet, wird der Klartext der Datei importiert. Es wird nicht versucht die Import-Logik anzuwenden.
|
||||
|
||||
Der `<import-filter>` Parameter spezifiziert jene Tiddler, die importiert werden sollen. Ohne diesen Parameter wird standardmäßig `[all[tiddlers]]` als Filter verwendet.
|
||||
|
||||
@ -22,7 +22,7 @@ Der `<transform-filter>` Parameter, spezifiziert einen Filter, mit dem der Tiddl
|
||||
|
||||
Wird `--verbose` vor dem `--fetch` Befehl benutzt, dann werden erweiterte Diagnose Infos ausgegeben.
|
||||
|
||||
Hinweis: ~TiddlyWiki wird ''keine'' veralteten plugins importieren.
|
||||
Hinweis: TiddlyWiki wird ''keine'' veraltete Plugins importieren.
|
||||
|
||||
Das folgende Beispiel wird alle "nicht-system" Tiddler von https://tiddlywiki.com holen und in ein `JSON` file speichern.
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
title: $:/language/Help/import
|
||||
description: Importiert mehrere Tiddler aus einer Datei
|
||||
description: Importiert mehrere Tiddler aus einer Datei.
|
||||
|
||||
Dieser Befehl importiert / extrahiert Tiddler aus folgenden Dateien:
|
||||
|
||||
* ~TiddlyWiki `*.html`
|
||||
* TiddlyWiki `*.html`
|
||||
* `*.tiddler`
|
||||
* `*.tid`
|
||||
* `*.json`
|
||||
* oder andere lokale `text` Dateien
|
||||
* oder andere lokale `.text` Dateien
|
||||
|
||||
Der `<deserializer>` Parameter muss angegeben werden. Anders als beim `--load` Befehl, der diese Information aus der Dateiendung ableiten kann.
|
||||
|
||||
@ -27,6 +27,6 @@ TiddlyWiki enthält folgende `deserializer` Standard-Typen:
|
||||
|
||||
Der Tiddler-Titel entspricht nach dem Import, dem Dateinamen.
|
||||
|
||||
Die Zeichenkodierung ist auf `utf8` eingestellt. Sie kann aber auf `base64` für binäre Daten geändert werden.
|
||||
Die Zeichenkodierung ist auf "utf8" eingestellt. Sie kann aber auf "base64" für binäre Daten geändert werden.
|
||||
|
||||
Hinweis: ~TiddlyWiki importiert nur neuere Plugins, als jene, die bereits geladen sind.
|
||||
Hinweis: TiddlyWiki importiert nur neuere Plugins, als jene, die bereits geladen sind.
|
||||
|
@ -18,7 +18,7 @@ Anmerkung:
|
||||
* Das Wiki Verzeichnis wird angelegt, wenn es nicht existiert.
|
||||
* Der <edition> Parameter ist standardmäßig: ''empty''.
|
||||
* Der --init Befehl bricht ab, wenn das angegebene Verzeichnis nicht leer ist.
|
||||
* Der --init Befehl löscht alle `includeWikis` Definitionen aus der neuen `tiddlywiki.info` Datei
|
||||
* Der --init Befehl löscht alle `includeWikis` Definitionen aus der neuen `tiddlywiki.info` Datei.
|
||||
* Wenn mehrere Editionen importiert werden, wird die zuletzt importierte `tidlywiki.info` Datei aktiv sein. Alle anderen weden überschrieben.
|
||||
|
||||
* `--editions` listet alle verfügbaren Editionen auf.
|
||||
|
@ -1,20 +1,20 @@
|
||||
title: $:/language/Help/listen
|
||||
description: Definiert das HTTP-Server Interface für Tiddlywiki
|
||||
|
||||
Stellt das Wiki über einen HTTP-Server zur Verfügung.
|
||||
Stellt das Wiki mit einem HTTP-Server zur Verfügung.
|
||||
|
||||
Die "listen" Parameter werden wie folgt verwendet:
|
||||
Der "listen" Parameter wird wie folgt verwendet:
|
||||
|
||||
```
|
||||
--listen [<name>=<wert>]...
|
||||
```
|
||||
|
||||
Alle Parameter sind optional, die Reihenfolge ist beliebig und es werden "sichere" standard parametern verwendet.
|
||||
Alle Parameter sind optional, die Reihenfolge ist beliebig und es werden "sichere" standard Parameter verwendet.
|
||||
|
||||
Mögliche Parameter:
|
||||
|
||||
* ''host'' - Host-Name, von dem übertragen wird. (Standard: "127.0.0.1" aka "localhost")
|
||||
* ''path-prefix'' - Prefix, der auf alle Pfade angewendet wird
|
||||
* ''host'' - Host-Name, von dem übertragen wird. (Standard: "127.0.0.1" alias "localhost")
|
||||
* ''path-prefix'' - Pfad-prefix, der auf alle Pfade angewendet wird
|
||||
* ''port'' - Port Nummer, die überwacht werden soll; Nicht-numerische Werte werden als System Umgebungs-Variable interpretiert. (Standard: 8080)
|
||||
* ''credentials'' - Pfad zur Authentifizierungsdatei im CSV-format. Angabe ist relativ zum Wiki-Verzeichnis
|
||||
* ''anon-username'' - Name, der für anonymer Benutzer verwendet wird, um bearbeitete Tiddler zu markieren
|
||||
@ -23,12 +23,12 @@ Mögliche Parameter:
|
||||
* ''authenticated-user-header'' - Optionaler HTTP Header-Name für vertrauenswürdige, authentifizierte Benutzer
|
||||
* ''readers'' - Komma-separierte Liste für Benutzer, mit Schreiberlaubnis
|
||||
* ''writers'' - Komma-separierte Liste für Benutzer, mit Leseerlaubnis
|
||||
* ''csrf-disable'' - "yes" bedeutet, dass CSRF checks deaktiviert sind. (Standard: "no")
|
||||
* ''csrf-disable'' - "yes" bedeutet, dass CSRF Überprüfungen deaktiviert sind. (Standard: "no")
|
||||
* ''root-tiddler'' - Tiddler, der für den "Root-Pfad" verwendet wird. (Standard: "$:/core/save/all")
|
||||
* ''root-render-type'' - Darstellungs-Type, die für den Root-Tiddler verwendet wird. (Standard: "text/plain")
|
||||
* ''root-serve-type'' - Inhalts-Type, die für den Root-Tiddler verwendet wird. (Standard: "text/html")
|
||||
* ''tls-cert'' - Pfad zur "TLS certificate" Datei (relativ zum Wiki Verzeichnis)
|
||||
* ''tls-key'' - Pfad zur "TLS key" Datei (relativ zum Wiki Verzeichnis)
|
||||
* ''tls-cert'' - Pfad zur "TLS Zertifikat" Datei (relativ zum Wiki Verzeichnis)
|
||||
* ''tls-key'' - Pfad zur "TLS Schlüssel" Datei (relativ zum Wiki Verzeichnis)
|
||||
* ''debug-level'' - "debug" bewikt eine detailierte Anzeige der HTTP Anfrage-Parameter. (Standard: "none")
|
||||
* ''gzip'' - Wenn auf "yes" gesetzt, dann wird gzip Kompression aktiviert. (Standard: "no")
|
||||
* ''use-browser-cache'' - Ist dieser Parameter auf "yes" gesetzt kann der Browser Inhalte zwischenspeichern um Übertragungsbandbreite zu sparen. (Standard: "no")
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user