mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-06-16 18:39:54 +00:00
Revert "Merge branch 'master' into getting-started-tweaks-feb-2023"
This reverts commitcff280b81a
, reversing changes made to26cff6675c
.
This commit is contained in:
parent
cdbe1d963a
commit
416bed4618
|
@ -5,7 +5,7 @@
|
||||||
# Default to the current version number for building the plugin library
|
# Default to the current version number for building the plugin library
|
||||||
|
|
||||||
if [ -z "$TW5_BUILD_VERSION" ]; then
|
if [ -z "$TW5_BUILD_VERSION" ]; then
|
||||||
TW5_BUILD_VERSION=v5.2.8
|
TW5_BUILD_VERSION=v5.2.5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||||
|
@ -359,14 +359,14 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||||
|
|
||||||
# Delete any existing static content
|
# Delete any existing static content
|
||||||
|
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/de-AT/static/*
|
rm $TW5_BUILD_OUTPUT/languages/de-AT/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/de-DE/static/*
|
rm $TW5_BUILD_OUTPUT/languages/de-DE/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/es-ES/static/*
|
rm $TW5_BUILD_OUTPUT/languages/es-ES/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/fr-FR/static/*
|
rm $TW5_BUILD_OUTPUT/languages/fr-FR/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/ja-JP/static/*
|
rm $TW5_BUILD_OUTPUT/languages/ja-JP/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/ko-KR/static/*
|
rm $TW5_BUILD_OUTPUT/languages/ko-KR/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/zh-Hans/static/*
|
rm $TW5_BUILD_OUTPUT/languages/zh-Hans/static/*
|
||||||
rm -rf $TW5_BUILD_OUTPUT/languages/zh-Hant/static/*
|
rm $TW5_BUILD_OUTPUT/languages/zh-Hant/static/*
|
||||||
|
|
||||||
# /languages/de-AT/index.html Demo wiki with de-AT language
|
# /languages/de-AT/index.html Demo wiki with de-AT language
|
||||||
# /languages/de-AT/empty.html Empty wiki with de-AT language
|
# /languages/de-AT/empty.html Empty wiki with de-AT language
|
||||||
|
|
|
@ -313,7 +313,7 @@ $tw.utils.getLocationHash = function() {
|
||||||
var idx = href.indexOf('#');
|
var idx = href.indexOf('#');
|
||||||
if(idx === -1) {
|
if(idx === -1) {
|
||||||
return "#";
|
return "#";
|
||||||
} else if(href.substr(idx + 1,1) === "#" || href.substr(idx + 1,3) === "%23") {
|
} else if(idx < href.length-1 && href[idx+1] === '#') {
|
||||||
// Special case: ignore location hash if it itself starts with a #
|
// Special case: ignore location hash if it itself starts with a #
|
||||||
return "#";
|
return "#";
|
||||||
} else {
|
} else {
|
||||||
|
@ -375,7 +375,7 @@ $tw.utils.stringifyList = function(value) {
|
||||||
var result = new Array(value.length);
|
var result = new Array(value.length);
|
||||||
for(var t=0, l=value.length; t<l; t++) {
|
for(var t=0, l=value.length; t<l; t++) {
|
||||||
var entry = value[t] || "";
|
var entry = value[t] || "";
|
||||||
if(entry.match(/[^\S\xA0]/mg)) {
|
if(entry.indexOf(" ") !== -1) {
|
||||||
result[t] = "[[" + entry + "]]";
|
result[t] = "[[" + entry + "]]";
|
||||||
} else {
|
} else {
|
||||||
result[t] = entry;
|
result[t] = entry;
|
||||||
|
@ -1881,7 +1881,7 @@ A default set of files for TiddlyWiki to ignore during load.
|
||||||
This matches what NPM ignores, and adds "*.meta" to ignore tiddler
|
This matches what NPM ignores, and adds "*.meta" to ignore tiddler
|
||||||
metadata files.
|
metadata files.
|
||||||
*/
|
*/
|
||||||
$tw.boot.excludeRegExp = /^\.DS_Store$|^.*\.meta$|^\..*\.swp$|^\._.*$|^\.git$|^\.github$|^\.vscode$|^\.hg$|^\.lock-wscript$|^\.svn$|^\.wafpickle-.*$|^CVS$|^npm-debug\.log$/;
|
$tw.boot.excludeRegExp = /^\.DS_Store$|^.*\.meta$|^\..*\.swp$|^\._.*$|^\.git$|^\.hg$|^\.lock-wscript$|^\.svn$|^\.wafpickle-.*$|^CVS$|^npm-debug\.log$/;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Load all the tiddlers recursively from a directory, including honouring `tiddlywiki.files` files for drawing in external files. Returns an array of {filepath:,type:,tiddlers: [{..fields...}],hasMetaFile:}. Note that no file information is returned for externally loaded tiddlers, just the `tiddlers` property.
|
Load all the tiddlers recursively from a directory, including honouring `tiddlywiki.files` files for drawing in external files. Returns an array of {filepath:,type:,tiddlers: [{..fields...}],hasMetaFile:}. Note that no file information is returned for externally loaded tiddlers, just the `tiddlers` property.
|
||||||
|
@ -2408,7 +2408,6 @@ $tw.boot.initStartup = function(options) {
|
||||||
$tw.utils.registerFileType("video/webm","base64",".webm");
|
$tw.utils.registerFileType("video/webm","base64",".webm");
|
||||||
$tw.utils.registerFileType("video/mp4","base64",".mp4");
|
$tw.utils.registerFileType("video/mp4","base64",".mp4");
|
||||||
$tw.utils.registerFileType("audio/mp3","base64",".mp3");
|
$tw.utils.registerFileType("audio/mp3","base64",".mp3");
|
||||||
$tw.utils.registerFileType("audio/mpeg","base64");
|
|
||||||
$tw.utils.registerFileType("text/markdown","utf8",[".md",".markdown"],{deserializerType:"text/x-markdown"});
|
$tw.utils.registerFileType("text/markdown","utf8",[".md",".markdown"],{deserializerType:"text/x-markdown"});
|
||||||
$tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]);
|
$tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]);
|
||||||
$tw.utils.registerFileType("application/enex+xml","utf8",".enex");
|
$tw.utils.registerFileType("application/enex+xml","utf8",".enex");
|
||||||
|
|
|
@ -4,7 +4,7 @@ type: text/plain
|
||||||
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
||||||
|
|
||||||
Copyright (c) 2004-2007, Jeremy Ruston
|
Copyright (c) 2004-2007, Jeremy Ruston
|
||||||
Copyright (c) 2007-2023, UnaMesa Association
|
Copyright (c) 2007-2022, UnaMesa Association
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
title: $:/core/images/save-button-dynamic
|
|
||||||
tags: $:/tags/Image
|
|
||||||
|
|
||||||
<svg width="22pt" height="22pt" class="tc-image-save-button-dynamic tc-image-button" viewBox="0 0 128 128">
|
|
||||||
<g class="tc-image-save-button-dynamic-clean">
|
|
||||||
<path fill-rule="evenodd" d="M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z"/>
|
|
||||||
</g>
|
|
||||||
<g class="tc-image-save-button-dynamic-dirty">
|
|
||||||
<path d="M64.856912,0 C100.203136,0 128.856912,28.653776 128.856912,64 C128.856912,99.346224 100.203136,128 64.856912,128 C29.510688,128 0.856911958,99.346224 0.856911958,64 C0.856911958,28.653776 29.510688,0 64.856912,0 Z M64.856912,16 C38.347244,16 16.856912,37.490332 16.856912,64 C16.856912,90.509668 38.347244,112 64.856912,112 C91.3665799,112 112.856912,90.509668 112.856912,64 C112.856912,37.490332 91.3665799,16 64.856912,16 Z"></path>
|
|
||||||
<circle cx="65" cy="64" r="32"></circle>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
|
@ -1,13 +1,11 @@
|
||||||
title: $:/language/Docs/Fields/
|
title: $:/language/Docs/Fields/
|
||||||
|
|
||||||
_canonical_uri: The full URI of an external image tiddler
|
_canonical_uri: The full URI of an external image tiddler
|
||||||
author: Name of the author of a plugin
|
|
||||||
bag: The name of the bag from which a tiddler came
|
bag: The name of the bag from which a tiddler came
|
||||||
caption: The text to be displayed on a tab or button
|
caption: The text to be displayed on a tab or button
|
||||||
code-body: The view template will display the tiddler as code if set to ''yes''
|
code-body: The view template will display the tiddler as code if set to ''yes''
|
||||||
color: The CSS color value associated with a tiddler
|
color: The CSS color value associated with a tiddler
|
||||||
component: The name of the component responsible for an [[alert tiddler|AlertMechanism]]
|
component: The name of the component responsible for an [[alert tiddler|AlertMechanism]]
|
||||||
core-version: For a plugin, indicates what version of TiddlyWiki with which it is compatible
|
|
||||||
current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]]
|
current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]]
|
||||||
created: The date a tiddler was created
|
created: The date a tiddler was created
|
||||||
creator: The name of the person who created a tiddler
|
creator: The name of the person who created a tiddler
|
||||||
|
@ -24,9 +22,7 @@ list-before: If set, the title of a tiddler before which this tiddler should be
|
||||||
list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty
|
list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty
|
||||||
modified: The date and time at which a tiddler was last modified
|
modified: The date and time at which a tiddler was last modified
|
||||||
modifier: The tiddler title associated with the person who last modified a tiddler
|
modifier: The tiddler title associated with the person who last modified a tiddler
|
||||||
module-type: For javascript tiddlers, specifies what kind of module it is
|
|
||||||
name: The human readable name associated with a plugin tiddler
|
name: The human readable name associated with a plugin tiddler
|
||||||
parent-plugin: For a plugin, specifies which plugin of which it is a sub-plugin
|
|
||||||
plugin-priority: A numerical value indicating the priority of a plugin tiddler
|
plugin-priority: A numerical value indicating the priority of a plugin tiddler
|
||||||
plugin-type: The type of plugin in a plugin tiddler
|
plugin-type: The type of plugin in a plugin tiddler
|
||||||
revision: The revision of the tiddler held at the server
|
revision: The revision of the tiddler held at the server
|
||||||
|
|
|
@ -40,7 +40,6 @@ Error/RetrievingSkinny: Error retrieving skinny tiddler list
|
||||||
Error/SavingToTWEdit: Error saving to TWEdit
|
Error/SavingToTWEdit: Error saving to TWEdit
|
||||||
Error/WhileSaving: Error while saving
|
Error/WhileSaving: Error while saving
|
||||||
Error/XMLHttpRequest: XMLHttpRequest error code
|
Error/XMLHttpRequest: XMLHttpRequest error code
|
||||||
Error/ZoominTextNode: Story View Error: It appears you tried to interact with a tiddler that displays in a custom container. This is most likely caused by using `$:/tags/StoryTiddlerTemplateFilter` with a template that contains text or whitespace at the start. Please use the pragma `\whitespace trim` and ensure the whole contents of the tiddler is wrapped in a single HTML element. The text that caused this issue:
|
|
||||||
InternalJavaScriptError/Title: Internal JavaScript Error
|
InternalJavaScriptError/Title: Internal JavaScript Error
|
||||||
InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser
|
InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser
|
||||||
LayoutSwitcher/Description: Open the layout switcher
|
LayoutSwitcher/Description: Open the layout switcher
|
||||||
|
|
21
core/language/en-GB/Modals/SaveInstructions.tid
Normal file
21
core/language/en-GB/Modals/SaveInstructions.tid
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
title: $:/language/Modals/SaveInstructions
|
||||||
|
subtitle: Save your work
|
||||||
|
footer: <$button message="tm-close-tiddler">Close</$button>
|
||||||
|
help: https://tiddlywiki.com/static/SavingChanges.html
|
||||||
|
|
||||||
|
Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.
|
||||||
|
|
||||||
|
!!! Desktop browsers
|
||||||
|
|
||||||
|
# Select ''Save As'' from the ''File'' menu
|
||||||
|
# Choose a filename and location
|
||||||
|
#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar
|
||||||
|
# Close this tab
|
||||||
|
|
||||||
|
!!! Smartphone browsers
|
||||||
|
|
||||||
|
# Create a bookmark to this page
|
||||||
|
#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above
|
||||||
|
# Close this tab
|
||||||
|
|
||||||
|
//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//
|
|
@ -57,7 +57,7 @@ Command.prototype.execute = function() {
|
||||||
exportPath = path.resolve(outputPath,macroPath + extension);
|
exportPath = path.resolve(outputPath,macroPath + extension);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var finalPath = exportPath || path.resolve(pathname,$tw.utils.encodeURIComponentExtended(title) + extension);
|
var finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);
|
||||||
$tw.utils.createFileDirectories(finalPath);
|
$tw.utils.createFileDirectories(finalPath);
|
||||||
fs.writeFileSync(finalPath,text,"utf8");
|
fs.writeFileSync(finalPath,text,"utf8");
|
||||||
});
|
});
|
||||||
|
|
|
@ -65,7 +65,7 @@ Command.prototype.execute = function() {
|
||||||
$tw.utils.each(filteredPluginList,function(title) {
|
$tw.utils.each(filteredPluginList,function(title) {
|
||||||
var tiddler = containerData.tiddlers[title];
|
var tiddler = containerData.tiddlers[title];
|
||||||
// Save each JSON file and collect the skinny data
|
// Save each JSON file and collect the skinny data
|
||||||
var pathname = path.resolve(self.commander.outputPath,basepath + $tw.utils.encodeURIComponentExtended(title) + ".json");
|
var pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + ".json");
|
||||||
$tw.utils.createFileDirectories(pathname);
|
$tw.utils.createFileDirectories(pathname);
|
||||||
fs.writeFileSync(pathname,JSON.stringify(tiddler),"utf8");
|
fs.writeFileSync(pathname,JSON.stringify(tiddler),"utf8");
|
||||||
// Collect the skinny list data
|
// Collect the skinny list data
|
||||||
|
|
|
@ -45,7 +45,7 @@ Command.prototype.execute = function() {
|
||||||
var tiddler = self.commander.wiki.getTiddler(title),
|
var tiddler = self.commander.wiki.getTiddler(title),
|
||||||
type = tiddler.fields.type || "text/vnd.tiddlywiki",
|
type = tiddler.fields.type || "text/vnd.tiddlywiki",
|
||||||
contentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: "utf8"},
|
contentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: "utf8"},
|
||||||
filename = path.resolve(pathname,$tw.utils.encodeURIComponentExtended(title));
|
filename = path.resolve(pathname,encodeURIComponent(title));
|
||||||
fs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);
|
fs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);
|
||||||
});
|
});
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -30,7 +30,7 @@ exports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + "+" +
|
||||||
exports.textPrimitives.upperLetter +
|
exports.textPrimitives.upperLetter +
|
||||||
exports.textPrimitives.anyLetter + "*";
|
exports.textPrimitives.anyLetter + "*";
|
||||||
|
|
||||||
exports.htmlEntities = {quot:34, dollar:36, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };
|
exports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };
|
||||||
|
|
||||||
exports.htmlVoidElements = "area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr".split(",");
|
exports.htmlVoidElements = "area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr".split(",");
|
||||||
|
|
||||||
|
|
|
@ -177,11 +177,9 @@ FramedEngine.prototype.fixHeight = function() {
|
||||||
Focus the engine node
|
Focus the engine node
|
||||||
*/
|
*/
|
||||||
FramedEngine.prototype.focus = function() {
|
FramedEngine.prototype.focus = function() {
|
||||||
if(this.domNode.focus) {
|
if(this.domNode.focus && this.domNode.select) {
|
||||||
this.domNode.focus();
|
this.domNode.focus();
|
||||||
}
|
this.domNode.select();
|
||||||
if(this.domNode.select) {
|
|
||||||
$tw.utils.setSelectionByPosition(this.domNode,this.widget.editFocusSelectFromStart,this.widget.editFocusSelectFromEnd);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -119,12 +119,10 @@ SimpleEngine.prototype.fixHeight = function() {
|
||||||
/*
|
/*
|
||||||
Focus the engine node
|
Focus the engine node
|
||||||
*/
|
*/
|
||||||
SimpleEngine.prototype.focus = function() {
|
SimpleEngine.prototype.focus = function() {
|
||||||
if(this.domNode.focus) {
|
if(this.domNode.focus && this.domNode.select) {
|
||||||
this.domNode.focus();
|
this.domNode.focus();
|
||||||
}
|
this.domNode.select();
|
||||||
if(this.domNode.select) {
|
|
||||||
$tw.utils.setSelectionByPosition(this.domNode,this.widget.editFocusSelectFromStart,this.widget.editFocusSelectFromEnd);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -180,8 +180,6 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||||
this.editMinHeight = this.getAttribute("minHeight",DEFAULT_MIN_TEXT_AREA_HEIGHT);
|
this.editMinHeight = this.getAttribute("minHeight",DEFAULT_MIN_TEXT_AREA_HEIGHT);
|
||||||
this.editFocusPopup = this.getAttribute("focusPopup");
|
this.editFocusPopup = this.getAttribute("focusPopup");
|
||||||
this.editFocus = this.getAttribute("focus");
|
this.editFocus = this.getAttribute("focus");
|
||||||
this.editFocusSelectFromStart = $tw.utils.parseNumber(this.getAttribute("focusSelectFromStart","0"));
|
|
||||||
this.editFocusSelectFromEnd = $tw.utils.parseNumber(this.getAttribute("focusSelectFromEnd","0"));
|
|
||||||
this.editTabIndex = this.getAttribute("tabindex");
|
this.editTabIndex = this.getAttribute("tabindex");
|
||||||
this.editCancelPopups = this.getAttribute("cancelPopups","") === "yes";
|
this.editCancelPopups = this.getAttribute("cancelPopups","") === "yes";
|
||||||
this.editInputActions = this.getAttribute("inputActions");
|
this.editInputActions = this.getAttribute("inputActions");
|
||||||
|
@ -220,7 +218,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||||
EditTextWidget.prototype.refresh = function(changedTiddlers) {
|
EditTextWidget.prototype.refresh = function(changedTiddlers) {
|
||||||
var changedAttributes = this.computeAttributes();
|
var changedAttributes = this.computeAttributes();
|
||||||
// Completely rerender if any of our attributes have changed
|
// Completely rerender if any of our attributes have changed
|
||||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedTiddlers["$:/palette"] || changedAttributes.disabled || changedAttributes.fileDrop) {
|
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled || changedAttributes.fileDrop) {
|
||||||
this.refreshSelf();
|
this.refreshSelf();
|
||||||
return true;
|
return true;
|
||||||
} else if (changedTiddlers[this.editRefreshTitle]) {
|
} else if (changedTiddlers[this.editRefreshTitle]) {
|
||||||
|
|
|
@ -16,22 +16,6 @@ Filter operator for applying decodeURIComponent() to each item.
|
||||||
Export our filter functions
|
Export our filter functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
exports.decodebase64 = function(source,operator,options) {
|
|
||||||
var results = [];
|
|
||||||
source(function(tiddler,title) {
|
|
||||||
results.push($tw.utils.base64Decode(title));
|
|
||||||
});
|
|
||||||
return results;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.encodebase64 = function(source,operator,options) {
|
|
||||||
var results = [];
|
|
||||||
source(function(tiddler,title) {
|
|
||||||
results.push($tw.utils.base64Encode(title));
|
|
||||||
});
|
|
||||||
return results;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.decodeuricomponent = function(source,operator,options) {
|
exports.decodeuricomponent = function(source,operator,options) {
|
||||||
var results = [];
|
var results = [];
|
||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
|
@ -43,7 +27,7 @@ exports.decodeuricomponent = function(source,operator,options) {
|
||||||
exports.encodeuricomponent = function(source,operator,options) {
|
exports.encodeuricomponent = function(source,operator,options) {
|
||||||
var results = [];
|
var results = [];
|
||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
results.push($tw.utils.encodeURIComponentExtended(title));
|
results.push(encodeURIComponent(title));
|
||||||
});
|
});
|
||||||
return results;
|
return results;
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,15 +21,14 @@ exports.filter = function(source,operator,options) {
|
||||||
target = operator.prefix !== "!";
|
target = operator.prefix !== "!";
|
||||||
source(function(tiddler,title) {
|
source(function(tiddler,title) {
|
||||||
var list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{
|
var list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{
|
||||||
getVariable: function(name,opts) {
|
getVariable: function(name) {
|
||||||
opts = opts || {};
|
|
||||||
switch(name) {
|
switch(name) {
|
||||||
case "currentTiddler":
|
case "currentTiddler":
|
||||||
return "" + title;
|
return "" + title;
|
||||||
case "..currentTiddler":
|
case "..currentTiddler":
|
||||||
return options.widget.getVariable("currentTiddler");
|
return options.widget.getVariable("currentTiddler");
|
||||||
default:
|
default:
|
||||||
return options.widget.getVariable(name,opts);
|
return options.widget.getVariable(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -176,11 +176,7 @@ function getDataItem(data,indexes) {
|
||||||
var item = data;
|
var item = data;
|
||||||
for(var i=0; i<indexes.length; i++) {
|
for(var i=0; i<indexes.length; i++) {
|
||||||
if(item !== undefined) {
|
if(item !== undefined) {
|
||||||
if(item !== null && ["number","string","boolean"].indexOf(typeof item) === -1) {
|
item = item[indexes[i]];
|
||||||
item = item[indexes[i]];
|
|
||||||
} else {
|
|
||||||
item = undefined;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
|
|
|
@ -27,8 +27,7 @@ exports.reduce = function(source,operator,options) {
|
||||||
for(var index=0; index<results.length; index++) {
|
for(var index=0; index<results.length; index++) {
|
||||||
var title = results[index],
|
var title = results[index],
|
||||||
list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{
|
list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{
|
||||||
getVariable: function(name,opts) {
|
getVariable: function(name) {
|
||||||
opts = opts || {};
|
|
||||||
switch(name) {
|
switch(name) {
|
||||||
case "currentTiddler":
|
case "currentTiddler":
|
||||||
return "" + title;
|
return "" + title;
|
||||||
|
@ -43,7 +42,7 @@ exports.reduce = function(source,operator,options) {
|
||||||
case "length":
|
case "length":
|
||||||
return "" + results.length;
|
return "" + results.length;
|
||||||
default:
|
default:
|
||||||
return options.widget.getVariable(name,opts);
|
return options.widget.getVariable(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -26,15 +26,14 @@ exports.sortsub = function(source,operator,options) {
|
||||||
var r = filterFn.call(options.wiki,function(iterator) {
|
var r = filterFn.call(options.wiki,function(iterator) {
|
||||||
iterator(options.wiki.getTiddler(title),title);
|
iterator(options.wiki.getTiddler(title),title);
|
||||||
},{
|
},{
|
||||||
getVariable: function(name,opts) {
|
getVariable: function(name) {
|
||||||
opts = opts || {};
|
|
||||||
switch(name) {
|
switch(name) {
|
||||||
case "currentTiddler":
|
case "currentTiddler":
|
||||||
return "" + title;
|
return "" + title;
|
||||||
case "..currentTiddler":
|
case "..currentTiddler":
|
||||||
return options.widget.getVariable("currentTiddler");
|
return options.widget.getVariable("currentTiddler");
|
||||||
default:
|
default:
|
||||||
return options.widget.getVariable(name,opts);
|
return options.widget.getVariable(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -74,113 +74,6 @@ exports.join = makeStringReducingOperator(
|
||||||
},null
|
},null
|
||||||
);
|
);
|
||||||
|
|
||||||
var dmp = require("$:/core/modules/utils/diff-match-patch/diff_match_patch.js");
|
|
||||||
|
|
||||||
exports.levenshtein = makeStringBinaryOperator(
|
|
||||||
function(a,b) {
|
|
||||||
var dmpObject = new dmp.diff_match_patch(),
|
|
||||||
diffs = dmpObject.diff_main(a,b);
|
|
||||||
return [dmpObject.diff_levenshtein(diffs) + ""];
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// these two functions are adapted from https://github.com/google/diff-match-patch/wiki/Line-or-Word-Diffs
|
|
||||||
function diffLineWordMode(text1,text2,mode) {
|
|
||||||
var dmpObject = new dmp.diff_match_patch();
|
|
||||||
var a = diffPartsToChars(text1,text2,mode);
|
|
||||||
var lineText1 = a.chars1;
|
|
||||||
var lineText2 = a.chars2;
|
|
||||||
var lineArray = a.lineArray;
|
|
||||||
var diffs = dmpObject.diff_main(lineText1,lineText2,false);
|
|
||||||
dmpObject.diff_charsToLines_(diffs,lineArray);
|
|
||||||
return diffs;
|
|
||||||
}
|
|
||||||
|
|
||||||
function diffPartsToChars(text1,text2,mode) {
|
|
||||||
var lineArray = [];
|
|
||||||
var lineHash = {};
|
|
||||||
lineArray[0] = '';
|
|
||||||
|
|
||||||
function diff_linesToPartsMunge_(text,mode) {
|
|
||||||
var chars = '';
|
|
||||||
var lineStart = 0;
|
|
||||||
var lineEnd = -1;
|
|
||||||
var lineArrayLength = lineArray.length,
|
|
||||||
regexpResult;
|
|
||||||
var searchRegexp = /\W+/g;
|
|
||||||
while(lineEnd < text.length - 1) {
|
|
||||||
if(mode === "words") {
|
|
||||||
regexpResult = searchRegexp.exec(text);
|
|
||||||
lineEnd = searchRegexp.lastIndex;
|
|
||||||
if(regexpResult === null) {
|
|
||||||
lineEnd = text.length;
|
|
||||||
}
|
|
||||||
lineEnd = --lineEnd;
|
|
||||||
} else {
|
|
||||||
lineEnd = text.indexOf('\n', lineStart);
|
|
||||||
if(lineEnd == -1) {
|
|
||||||
lineEnd = text.length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var line = text.substring(lineStart, lineEnd + 1);
|
|
||||||
|
|
||||||
if(lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : (lineHash[line] !== undefined)) {
|
|
||||||
chars += String.fromCharCode(lineHash[line]);
|
|
||||||
} else {
|
|
||||||
if (lineArrayLength == maxLines) {
|
|
||||||
line = text.substring(lineStart);
|
|
||||||
lineEnd = text.length;
|
|
||||||
}
|
|
||||||
chars += String.fromCharCode(lineArrayLength);
|
|
||||||
lineHash[line] = lineArrayLength;
|
|
||||||
lineArray[lineArrayLength++] = line;
|
|
||||||
}
|
|
||||||
lineStart = lineEnd + 1;
|
|
||||||
}
|
|
||||||
return chars;
|
|
||||||
}
|
|
||||||
var maxLines = 40000;
|
|
||||||
var chars1 = diff_linesToPartsMunge_(text1,mode);
|
|
||||||
maxLines = 65535;
|
|
||||||
var chars2 = diff_linesToPartsMunge_(text2,mode);
|
|
||||||
return {chars1: chars1, chars2: chars2, lineArray: lineArray};
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.makepatches = function(source,operator,options) {
|
|
||||||
var dmpObject = new dmp.diff_match_patch(),
|
|
||||||
suffix = operator.suffix || "",
|
|
||||||
result = [];
|
|
||||||
|
|
||||||
source(function(tiddler,title) {
|
|
||||||
var diffs, patches;
|
|
||||||
if(suffix === "lines" || suffix === "words") {
|
|
||||||
diffs = diffLineWordMode(title,operator.operand,suffix);
|
|
||||||
patches = dmpObject.patch_make(title,diffs);
|
|
||||||
} else {
|
|
||||||
patches = dmpObject.patch_make(title,operator.operand);
|
|
||||||
}
|
|
||||||
Array.prototype.push.apply(result,[dmpObject.patch_toText(patches)]);
|
|
||||||
});
|
|
||||||
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.applypatches = makeStringBinaryOperator(
|
|
||||||
function(a,b) {
|
|
||||||
var dmpObject = new dmp.diff_match_patch(),
|
|
||||||
patches;
|
|
||||||
try {
|
|
||||||
patches = dmpObject.patch_fromText(b);
|
|
||||||
} catch(e) {
|
|
||||||
}
|
|
||||||
if(patches) {
|
|
||||||
return [dmpObject.patch_apply(patches,a)[0]];
|
|
||||||
} else {
|
|
||||||
return [a];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
function makeStringBinaryOperator(fnCalc) {
|
function makeStringBinaryOperator(fnCalc) {
|
||||||
return function(source,operator,options) {
|
return function(source,operator,options) {
|
||||||
var result = [];
|
var result = [];
|
||||||
|
@ -291,4 +184,4 @@ exports.charcode = function(source,operator,options) {
|
||||||
return [chars.join("")];
|
return [chars.join("")];
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -32,18 +32,18 @@ FieldIndexer.prototype.setMaxIndexedValueLength = function(length) {
|
||||||
|
|
||||||
FieldIndexer.prototype.addIndexMethods = function() {
|
FieldIndexer.prototype.addIndexMethods = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
// get all tiddlers, including those overwrite shadow tiddlers
|
|
||||||
this.wiki.each.byField = function(name,value) {
|
this.wiki.each.byField = function(name,value) {
|
||||||
var lookup = self.lookup(name,value);
|
var titles = self.wiki.allTitles(),
|
||||||
|
lookup = self.lookup(name,value);
|
||||||
return lookup && lookup.filter(function(title) {
|
return lookup && lookup.filter(function(title) {
|
||||||
return self.wiki.tiddlerExists(title)
|
return titles.indexOf(title) !== -1;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
// get shadow tiddlers, including shadow tiddlers that is overwritten
|
|
||||||
this.wiki.eachShadow.byField = function(name,value) {
|
this.wiki.eachShadow.byField = function(name,value) {
|
||||||
var lookup = self.lookup(name,value);
|
var titles = self.wiki.allShadowTitles(),
|
||||||
|
lookup = self.lookup(name,value);
|
||||||
return lookup && lookup.filter(function(title) {
|
return lookup && lookup.filter(function(title) {
|
||||||
return self.wiki.isShadowTiddler(title)
|
return titles.indexOf(title) !== -1;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
this.wiki.eachTiddlerPlusShadows.byField = function(name,value) {
|
this.wiki.eachTiddlerPlusShadows.byField = function(name,value) {
|
||||||
|
|
|
@ -15,7 +15,7 @@ The PDF parser embeds a PDF viewer
|
||||||
var ImageParser = function(type,text,options) {
|
var ImageParser = function(type,text,options) {
|
||||||
var element = {
|
var element = {
|
||||||
type: "element",
|
type: "element",
|
||||||
tag: "iframe",
|
tag: "embed",
|
||||||
attributes: {}
|
attributes: {}
|
||||||
},
|
},
|
||||||
src;
|
src;
|
||||||
|
|
|
@ -25,7 +25,7 @@ Instantiate parse rule
|
||||||
exports.init = function(parser) {
|
exports.init = function(parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
// Regexp to match
|
// Regexp to match
|
||||||
this.matchRegExp = /\\import[^\S\n]/mg;
|
this.matchRegExp = /^\\import[^\S\n]/mg;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -27,7 +27,7 @@ Instantiate parse rule
|
||||||
exports.init = function(parser) {
|
exports.init = function(parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
// Regexp to match
|
// Regexp to match
|
||||||
this.matchRegExp = /\\define\s+([^(\s]+)\(\s*([^)]*)\)(\s*\r?\n)?/mg;
|
this.matchRegExp = /^\\define\s+([^(\s]+)\(\s*([^)]*)\)(\s*\r?\n)?/mg;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -58,7 +58,7 @@ exports.parse = function() {
|
||||||
var reEnd;
|
var reEnd;
|
||||||
if(this.match[3]) {
|
if(this.match[3]) {
|
||||||
// If so, the end of the body is marked with \end
|
// If so, the end of the body is marked with \end
|
||||||
reEnd = new RegExp("(\\r?\\n[^\\S\\n\\r]*\\\\end[^\\S\\n\\r]*(?:" + $tw.utils.escapeRegExp(this.match[1]) + ")?(?:$|\\r?\\n))","mg");
|
reEnd = new RegExp("(\\r?\\n\\\\end[^\\S\\n\\r]*(?:" + $tw.utils.escapeRegExp(this.match[1]) + ")?(?:$|\\r?\\n))","mg");
|
||||||
} else {
|
} else {
|
||||||
// Otherwise, the end of the definition is marked by the end of the line
|
// Otherwise, the end of the definition is marked by the end of the line
|
||||||
reEnd = /($|\r?\n)/mg;
|
reEnd = /($|\r?\n)/mg;
|
||||||
|
|
|
@ -26,7 +26,7 @@ Instantiate parse rule
|
||||||
exports.init = function(parser) {
|
exports.init = function(parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
// Regexp to match
|
// Regexp to match
|
||||||
this.matchRegExp = /\\parsermode[^\S\n]/mg;
|
this.matchRegExp = /^\\parsermode[^\S\n]/mg;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -26,7 +26,7 @@ Instantiate parse rule
|
||||||
exports.init = function(parser) {
|
exports.init = function(parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
// Regexp to match
|
// Regexp to match
|
||||||
this.matchRegExp = /\\rules[^\S\n]/mg;
|
this.matchRegExp = /^\\rules[^\S\n]/mg;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -26,7 +26,7 @@ Instantiate parse rule
|
||||||
exports.init = function(parser) {
|
exports.init = function(parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
// Regexp to match
|
// Regexp to match
|
||||||
this.matchRegExp = /\\whitespace[^\S\n]/mg;
|
this.matchRegExp = /^\\whitespace[^\S\n]/mg;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
64
core/modules/savers/beaker.js
Normal file
64
core/modules/savers/beaker.js
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/*\
|
||||||
|
title: $:/core/modules/savers/beaker.js
|
||||||
|
type: application/javascript
|
||||||
|
module-type: saver
|
||||||
|
|
||||||
|
Saves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)
|
||||||
|
Compatible with beaker >= V0.7.2
|
||||||
|
|
||||||
|
\*/
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
/*jslint node: true, browser: true */
|
||||||
|
/*global $tw: false */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Set up the saver
|
||||||
|
*/
|
||||||
|
var BeakerSaver = function(wiki) {
|
||||||
|
this.wiki = wiki;
|
||||||
|
};
|
||||||
|
|
||||||
|
BeakerSaver.prototype.save = function(text,method,callback) {
|
||||||
|
var dat = new DatArchive("" + window.location),
|
||||||
|
pathname = ("" + window.location.pathname).split("#")[0];
|
||||||
|
dat.stat(pathname).then(function(value) {
|
||||||
|
if(value.isDirectory()) {
|
||||||
|
pathname = pathname + "/index.html";
|
||||||
|
}
|
||||||
|
dat.writeFile(pathname,text,"utf8").then(function(value) {
|
||||||
|
callback(null);
|
||||||
|
},function(reason) {
|
||||||
|
callback("Beaker Saver Write Error: " + reason);
|
||||||
|
});
|
||||||
|
},function(reason) {
|
||||||
|
callback("Beaker Saver Stat Error: " + reason);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Information about this saver
|
||||||
|
*/
|
||||||
|
BeakerSaver.prototype.info = {
|
||||||
|
name: "beaker",
|
||||||
|
priority: 3000,
|
||||||
|
capabilities: ["save", "autosave"]
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Static method that returns true if this saver is capable of working
|
||||||
|
*/
|
||||||
|
exports.canSave = function(wiki) {
|
||||||
|
return !!window.DatArchive && location.protocol==="dat:";
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create an instance of this saver
|
||||||
|
*/
|
||||||
|
exports.create = function(wiki) {
|
||||||
|
return new BeakerSaver(wiki);
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
64
core/modules/savers/hyperdrive.js
Normal file
64
core/modules/savers/hyperdrive.js
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/*\
|
||||||
|
title: $:/core/modules/savers/hyperdrive.js
|
||||||
|
type: application/javascript
|
||||||
|
module-type: saver
|
||||||
|
|
||||||
|
Saves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)
|
||||||
|
Compatible with beaker >= V1.0.0
|
||||||
|
|
||||||
|
\*/
|
||||||
|
(function(){
|
||||||
|
|
||||||
|
/*jslint node: true, browser: true */
|
||||||
|
/*global $tw: false */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Set up the saver
|
||||||
|
*/
|
||||||
|
var HyperdriveSaver = function(wiki) {
|
||||||
|
this.wiki = wiki;
|
||||||
|
};
|
||||||
|
|
||||||
|
HyperdriveSaver.prototype.save = function(text,method,callback) {
|
||||||
|
var dat = beaker.hyperdrive.drive("" + window.location),
|
||||||
|
pathname = ("" + window.location.pathname).split("#")[0];
|
||||||
|
dat.stat(pathname).then(function(value) {
|
||||||
|
if(value.isDirectory()) {
|
||||||
|
pathname = pathname + "/index.html";
|
||||||
|
}
|
||||||
|
dat.writeFile(pathname,text,"utf8").then(function(value) {
|
||||||
|
callback(null);
|
||||||
|
},function(reason) {
|
||||||
|
callback("Hyperdrive Saver Write Error: " + reason);
|
||||||
|
});
|
||||||
|
},function(reason) {
|
||||||
|
callback("Hyperdrive Saver Stat Error: " + reason);
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Information about this saver
|
||||||
|
*/
|
||||||
|
HyperdriveSaver.prototype.info = {
|
||||||
|
name: "beaker-1.x",
|
||||||
|
priority: 3000,
|
||||||
|
capabilities: ["save", "autosave"]
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Static method that returns true if this saver is capable of working
|
||||||
|
*/
|
||||||
|
exports.canSave = function(wiki) {
|
||||||
|
return !!window.beaker && !!beaker.hyperdrive && location.protocol==="hyper:";
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create an instance of this saver
|
||||||
|
*/
|
||||||
|
exports.create = function(wiki) {
|
||||||
|
return new HyperdriveSaver(wiki);
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
|
@ -21,7 +21,6 @@ exports.handler = function(request,response,state) {
|
||||||
username: state.authenticatedUsername || state.server.get("anon-username") || "",
|
username: state.authenticatedUsername || state.server.get("anon-username") || "",
|
||||||
anonymous: !state.authenticatedUsername,
|
anonymous: !state.authenticatedUsername,
|
||||||
read_only: !state.server.isAuthorized("writers",state.authenticatedUsername),
|
read_only: !state.server.isAuthorized("writers",state.authenticatedUsername),
|
||||||
logout_is_available: false,
|
|
||||||
space: {
|
space: {
|
||||||
recipe: "default"
|
recipe: "default"
|
||||||
},
|
},
|
||||||
|
|
|
@ -87,6 +87,13 @@ exports.startup = function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// If we're being viewed on a data: URI then give instructions for how to save
|
||||||
|
if(document.location.protocol === "data:") {
|
||||||
|
$tw.rootWidget.dispatchEvent({
|
||||||
|
type: "tm-modal",
|
||||||
|
param: "$:/language/Modals/SaveInstructions"
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -17,10 +17,6 @@ var easing = "cubic-bezier(0.645, 0.045, 0.355, 1)"; // From http://easings.net/
|
||||||
var ZoominListView = function(listWidget) {
|
var ZoominListView = function(listWidget) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.listWidget = listWidget;
|
this.listWidget = listWidget;
|
||||||
this.textNodeLogger = new $tw.utils.Logger("zoomin story river view", {
|
|
||||||
enable: true,
|
|
||||||
colour: 'red'
|
|
||||||
});
|
|
||||||
// Get the index of the tiddler that is at the top of the history
|
// Get the index of the tiddler that is at the top of the history
|
||||||
var history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),
|
var history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),
|
||||||
targetTiddler;
|
targetTiddler;
|
||||||
|
@ -52,10 +48,7 @@ ZoominListView.prototype.navigateTo = function(historyInfo) {
|
||||||
var listItemWidget = this.listWidget.children[listElementIndex],
|
var listItemWidget = this.listWidget.children[listElementIndex],
|
||||||
targetElement = listItemWidget.findFirstDomNode();
|
targetElement = listItemWidget.findFirstDomNode();
|
||||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||||
if(!targetElement) {
|
if(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {
|
||||||
return;
|
|
||||||
} else if (targetElement.nodeType === Node.TEXT_NODE) {
|
|
||||||
this.logTextNodeRoot(targetElement);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make the new tiddler be position absolute and visible so that we can measure it
|
// Make the new tiddler be position absolute and visible so that we can measure it
|
||||||
|
@ -137,10 +130,7 @@ function findTitleDomNode(widget,targetClass) {
|
||||||
ZoominListView.prototype.insert = function(widget) {
|
ZoominListView.prototype.insert = function(widget) {
|
||||||
var targetElement = widget.findFirstDomNode();
|
var targetElement = widget.findFirstDomNode();
|
||||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||||
if(!targetElement) {
|
if(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {
|
||||||
return;
|
|
||||||
} else if (targetElement.nodeType === Node.TEXT_NODE) {
|
|
||||||
this.logTextNodeRoot(targetElement);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make the newly inserted node position absolute and hidden
|
// Make the newly inserted node position absolute and hidden
|
||||||
|
@ -183,21 +173,16 @@ ZoominListView.prototype.remove = function(widget) {
|
||||||
var toWidgetDomNode = toWidget && toWidget.findFirstDomNode();
|
var toWidgetDomNode = toWidget && toWidget.findFirstDomNode();
|
||||||
// Set up the tiddler we're moving back in
|
// Set up the tiddler we're moving back in
|
||||||
if(toWidgetDomNode) {
|
if(toWidgetDomNode) {
|
||||||
if (toWidgetDomNode.nodeType === Node.TEXT_NODE) {
|
$tw.utils.addClass(toWidgetDomNode,"tc-storyview-zoomin-tiddler");
|
||||||
this.logTextNodeRoot(toWidgetDomNode);
|
$tw.utils.setStyle(toWidgetDomNode,[
|
||||||
toWidgetDomNode = null;
|
{display: "block"},
|
||||||
} else {
|
{transformOrigin: "50% 50%"},
|
||||||
$tw.utils.addClass(toWidgetDomNode,"tc-storyview-zoomin-tiddler");
|
{transform: "translateX(0px) translateY(0px) scale(10)"},
|
||||||
$tw.utils.setStyle(toWidgetDomNode,[
|
{transition: $tw.utils.roundTripPropertyName("transform") + " " + duration + "ms " + easing + ", opacity " + duration + "ms " + easing},
|
||||||
{display: "block"},
|
{opacity: "0"},
|
||||||
{transformOrigin: "50% 50%"},
|
{zIndex: "500"}
|
||||||
{transform: "translateX(0px) translateY(0px) scale(10)"},
|
]);
|
||||||
{transition: $tw.utils.roundTripPropertyName("transform") + " " + duration + "ms " + easing + ", opacity " + duration + "ms " + easing},
|
this.currentTiddlerDomNode = toWidgetDomNode;
|
||||||
{opacity: "0"},
|
|
||||||
{zIndex: "500"}
|
|
||||||
]);
|
|
||||||
this.currentTiddlerDomNode = toWidgetDomNode;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// Animate them both
|
// Animate them both
|
||||||
// Force layout
|
// Force layout
|
||||||
|
@ -221,10 +206,6 @@ ZoominListView.prototype.remove = function(widget) {
|
||||||
return true; // Indicate that we'll delete the DOM node
|
return true; // Indicate that we'll delete the DOM node
|
||||||
};
|
};
|
||||||
|
|
||||||
ZoominListView.prototype.logTextNodeRoot = function(node) {
|
|
||||||
this.textNodeLogger.log($tw.language.getString("Error/ZoominTextNode") + " " + node.textContent);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.zoomin = ZoominListView;
|
exports.zoomin = ZoominListView;
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -402,7 +402,6 @@ Syncer.prototype.handleLazyLoadEvent = function(title) {
|
||||||
// Mark the tiddler as needing loading, and having already been lazily loaded
|
// Mark the tiddler as needing loading, and having already been lazily loaded
|
||||||
this.titlesToBeLoaded[title] = true;
|
this.titlesToBeLoaded[title] = true;
|
||||||
this.titlesHaveBeenLazyLoaded[title] = true;
|
this.titlesHaveBeenLazyLoaded[title] = true;
|
||||||
this.processTaskQueue();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,24 +28,6 @@ exports.domMatchesSelector = function(node,selector) {
|
||||||
return node.matches ? node.matches(selector) : node.msMatchesSelector(selector);
|
return node.matches ? node.matches(selector) : node.msMatchesSelector(selector);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
Select text in a an input or textarea (setSelectionRange crashes on certain input types)
|
|
||||||
*/
|
|
||||||
exports.setSelectionRangeSafe = function(node,start,end,direction) {
|
|
||||||
try {
|
|
||||||
node.setSelectionRange(start,end,direction);
|
|
||||||
} catch(e) {
|
|
||||||
node.select();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
Select the text in an input or textarea by position
|
|
||||||
*/
|
|
||||||
exports.setSelectionByPosition = function(node,selectFromStart,selectFromEnd) {
|
|
||||||
$tw.utils.setSelectionRangeSafe(node,selectFromStart,node.value.length - selectFromEnd);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.removeChildren = function(node) {
|
exports.removeChildren = function(node) {
|
||||||
while(node.hasChildNodes()) {
|
while(node.hasChildNodes()) {
|
||||||
node.removeChild(node.firstChild);
|
node.removeChild(node.firstChild);
|
||||||
|
|
|
@ -228,7 +228,7 @@ exports.generateTiddlerFileInfo = function(tiddler,options) {
|
||||||
hasUnsafeFields = hasUnsafeFields || /[\x00-\x1F]/mg.test(value);
|
hasUnsafeFields = hasUnsafeFields || /[\x00-\x1F]/mg.test(value);
|
||||||
hasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);
|
hasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);
|
||||||
}
|
}
|
||||||
hasUnsafeFields = hasUnsafeFields || /:|#/mg.test(fieldName);
|
hasUnsafeFields = hasUnsafeFields || /:/mg.test(fieldName);
|
||||||
});
|
});
|
||||||
// Check for field values
|
// Check for field values
|
||||||
if(hasUnsafeFields) {
|
if(hasUnsafeFields) {
|
||||||
|
@ -238,7 +238,7 @@ exports.generateTiddlerFileInfo = function(tiddler,options) {
|
||||||
} else {
|
} else {
|
||||||
// Save as a .tid or a text/binary file plus a .meta file
|
// Save as a .tid or a text/binary file plus a .meta file
|
||||||
var tiddlerType = tiddler.fields.type || "text/vnd.tiddlywiki";
|
var tiddlerType = tiddler.fields.type || "text/vnd.tiddlywiki";
|
||||||
if(tiddlerType === "text/vnd.tiddlywiki" || tiddler.hasField("_canonical_uri")) {
|
if(tiddlerType === "text/vnd.tiddlywiki") {
|
||||||
// Save as a .tid file
|
// Save as a .tid file
|
||||||
fileInfo.type = "application/x-tiddler";
|
fileInfo.type = "application/x-tiddler";
|
||||||
fileInfo.hasMetaFile = false;
|
fileInfo.hasMetaFile = false;
|
||||||
|
@ -393,7 +393,7 @@ exports.generateTiddlerFilepath = function(title,options) {
|
||||||
} while(fs.existsSync(fullPath));
|
} while(fs.existsSync(fullPath));
|
||||||
// If the last write failed with an error, or if path does not start with:
|
// If the last write failed with an error, or if path does not start with:
|
||||||
// the resolved options.directory, the resolved wikiPath directory, the wikiTiddlersPath directory,
|
// the resolved options.directory, the resolved wikiPath directory, the wikiTiddlersPath directory,
|
||||||
// or the 'originalpath' directory, then $tw.utils.encodeURIComponentExtended() and resolve to tiddler directory.
|
// or the 'originalpath' directory, then encodeURIComponent() and resolve to tiddler directory.
|
||||||
var writePath = $tw.hooks.invokeHook("th-make-tiddler-path",fullPath,fullPath),
|
var writePath = $tw.hooks.invokeHook("th-make-tiddler-path",fullPath,fullPath),
|
||||||
encode = (options.fileInfo || {writeError: false}).writeError == true;
|
encode = (options.fileInfo || {writeError: false}).writeError == true;
|
||||||
if(!encode) {
|
if(!encode) {
|
||||||
|
@ -403,7 +403,7 @@ exports.generateTiddlerFilepath = function(title,options) {
|
||||||
writePath.indexOf(path.resolve($tw.boot.wikiTiddlersPath,originalpath)) == 0 );
|
writePath.indexOf(path.resolve($tw.boot.wikiTiddlersPath,originalpath)) == 0 );
|
||||||
}
|
}
|
||||||
if(encode) {
|
if(encode) {
|
||||||
writePath = path.resolve(directory,$tw.utils.encodeURIComponentExtended(fullPath));
|
writePath = path.resolve(directory,encodeURIComponent(fullPath));
|
||||||
}
|
}
|
||||||
// Return the full path to the file
|
// Return the full path to the file
|
||||||
return writePath;
|
return writePath;
|
||||||
|
|
|
@ -685,19 +685,9 @@ exports.escapeRegExp = function(s) {
|
||||||
return s.replace(/[\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}]/g, '\\$&');
|
return s.replace(/[\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}]/g, '\\$&');
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
Extended version of encodeURIComponent that encodes additional characters including
|
|
||||||
those that are illegal within filepaths on various platforms including Windows
|
|
||||||
*/
|
|
||||||
exports.encodeURIComponentExtended = function(s) {
|
|
||||||
return encodeURIComponent(s).replace(/[!'()*]/g,function(c) {
|
|
||||||
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Checks whether a link target is external, i.e. not a tiddler title
|
// Checks whether a link target is external, i.e. not a tiddler title
|
||||||
exports.isLinkExternal = function(to) {
|
exports.isLinkExternal = function(to) {
|
||||||
var externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|obsidian|data|skype):[^\s<>{}\[\]`|"\\^]+(?:\/|\b)/i;
|
var externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\s<>{}\[\]`|"\\^]+(?:\/|\b)/i;
|
||||||
return externalRegExp.test(to);
|
return externalRegExp.test(to);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -232,34 +232,12 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
|
||||||
};
|
};
|
||||||
|
|
||||||
DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
||||||
var self = this;
|
var self = this,
|
||||||
var readFileCallback = function(tiddlerFieldsArray) {
|
readFileCallback = function(tiddlerFieldsArray) {
|
||||||
self.readFileCallback(tiddlerFieldsArray);
|
self.readFileCallback(tiddlerFieldsArray);
|
||||||
};
|
};
|
||||||
var getItem = function(type) {
|
|
||||||
type = type || "text/plain";
|
|
||||||
return function(str) {
|
|
||||||
// Use the deserializer specified if any
|
|
||||||
if(self.dropzoneDeserializer) {
|
|
||||||
tiddlerFields = self.wiki.deserializeTiddlers(null,str,{title: self.wiki.generateNewTitle("Untitled " + type)},{deserializer:self.dropzoneDeserializer});
|
|
||||||
if(tiddlerFields && tiddlerFields.length) {
|
|
||||||
readFileCallback(tiddlerFields);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tiddlerFields = {
|
|
||||||
title: self.wiki.generateNewTitle("Untitled " + type),
|
|
||||||
text: str,
|
|
||||||
type: type
|
|
||||||
};
|
|
||||||
if($tw.log.IMPORT) {
|
|
||||||
console.log("Importing string '" + str + "', type: '" + type + "'");
|
|
||||||
}
|
|
||||||
readFileCallback([tiddlerFields]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
// Let the browser handle it if we're in a textarea or input box
|
// Let the browser handle it if we're in a textarea or input box
|
||||||
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable && !event.twEditor) {
|
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {
|
||||||
var self = this,
|
var self = this,
|
||||||
items = event.clipboardData.items;
|
items = event.clipboardData.items;
|
||||||
// Enumerate the clipboard items
|
// Enumerate the clipboard items
|
||||||
|
@ -273,10 +251,27 @@ DropZoneWidget.prototype.handlePasteEvent = function(event) {
|
||||||
});
|
});
|
||||||
} else if(item.kind === "string") {
|
} else if(item.kind === "string") {
|
||||||
// Create tiddlers from string items
|
// Create tiddlers from string items
|
||||||
var tiddlerFields;
|
var tiddlerFields,
|
||||||
// It's important to give getAsString a closure with the right type
|
type = item.type;
|
||||||
// So it can be added to the import queue
|
item.getAsString(function(str) {
|
||||||
item.getAsString(getItem(item.type));
|
// Use the deserializer specified if any
|
||||||
|
if(self.dropzoneDeserializer) {
|
||||||
|
tiddlerFields = self.wiki.deserializeTiddlers(null,str,{title: self.wiki.generateNewTitle("Untitled")},{deserializer:self.dropzoneDeserializer});
|
||||||
|
if(tiddlerFields && tiddlerFields.length) {
|
||||||
|
readFileCallback(tiddlerFields);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tiddlerFields = {
|
||||||
|
title: self.wiki.generateNewTitle("Untitled"),
|
||||||
|
text: str,
|
||||||
|
type: type
|
||||||
|
};
|
||||||
|
if($tw.log.IMPORT) {
|
||||||
|
console.log("Importing string '" + str + "', type: '" + type + "'");
|
||||||
|
}
|
||||||
|
readFileCallback([tiddlerFields]);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Tell the browser that we've handled the paste
|
// Tell the browser that we've handled the paste
|
||||||
|
|
|
@ -34,10 +34,6 @@ ElementWidget.prototype.render = function(parent,nextSibling) {
|
||||||
if($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {
|
if($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {
|
||||||
this.tag = "safe-" + this.tag;
|
this.tag = "safe-" + this.tag;
|
||||||
}
|
}
|
||||||
// Restrict tag name to digits, letts and dashes
|
|
||||||
this.tag = this.tag.replace(/[^0-9a-zA-Z\-]/mg,"");
|
|
||||||
// Default to a span
|
|
||||||
this.tag = this.tag || "span";
|
|
||||||
// Adjust headings by the current base level
|
// Adjust headings by the current base level
|
||||||
var headingLevel = ["h1","h2","h3","h4","h5","h6"].indexOf(this.tag);
|
var headingLevel = ["h1","h2","h3","h4","h5","h6"].indexOf(this.tag);
|
||||||
if(headingLevel !== -1) {
|
if(headingLevel !== -1) {
|
||||||
|
|
|
@ -42,16 +42,10 @@ Compute the internal state of the widget
|
||||||
GenesisWidget.prototype.execute = function() {
|
GenesisWidget.prototype.execute = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
// Collect attributes
|
// Collect attributes
|
||||||
this.genesisType = this.getAttribute("$type");
|
this.genesisType = this.getAttribute("$type","element");
|
||||||
this.genesisRemappable = this.getAttribute("$remappable","yes") === "yes";
|
this.genesisRemappable = this.getAttribute("$remappable","yes") === "yes";
|
||||||
this.genesisNames = this.getAttribute("$names","");
|
this.genesisNames = this.getAttribute("$names","");
|
||||||
this.genesisValues = this.getAttribute("$values","");
|
this.genesisValues = this.getAttribute("$values","");
|
||||||
this.genesisIsBlock = this.getAttribute("$mode",this.parseTreeNode.isBlock && "block") === "block";
|
|
||||||
// Do not create a child widget if the $type attribute is missing or blank
|
|
||||||
if(!this.genesisType) {
|
|
||||||
this.makeChildWidgets(this.parseTreeNode.children);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Construct parse tree
|
// Construct parse tree
|
||||||
var isElementWidget = this.genesisType.charAt(0) !== "$",
|
var isElementWidget = this.genesisType.charAt(0) !== "$",
|
||||||
nodeType = isElementWidget ? "element" : this.genesisType.substr(1),
|
nodeType = isElementWidget ? "element" : this.genesisType.substr(1),
|
||||||
|
@ -61,7 +55,6 @@ GenesisWidget.prototype.execute = function() {
|
||||||
tag: nodeTag,
|
tag: nodeTag,
|
||||||
attributes: {},
|
attributes: {},
|
||||||
orderedAttributes: [],
|
orderedAttributes: [],
|
||||||
isBlock: this.genesisIsBlock,
|
|
||||||
children: this.parseTreeNode.children || [],
|
children: this.parseTreeNode.children || [],
|
||||||
isNotRemappable: !this.genesisRemappable
|
isNotRemappable: !this.genesisRemappable
|
||||||
}];
|
}];
|
||||||
|
|
|
@ -53,9 +53,7 @@ LetWidget.prototype.computeAttributes = function() {
|
||||||
name = attribute.name;
|
name = attribute.name;
|
||||||
// Now that it's prepped, we're allowed to look this variable up
|
// Now that it's prepped, we're allowed to look this variable up
|
||||||
// when defining later variables
|
// when defining later variables
|
||||||
if(value !== undefined) {
|
self.currentValueFor[name] = value;
|
||||||
self.currentValueFor[name] = value;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
// Run through again, setting variables and looking for differences
|
// Run through again, setting variables and looking for differences
|
||||||
$tw.utils.each(this.currentValueFor,function(value,name) {
|
$tw.utils.each(this.currentValueFor,function(value,name) {
|
||||||
|
|
|
@ -97,8 +97,8 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) {
|
||||||
// Expand the tv-wikilink-template variable to construct the href
|
// Expand the tv-wikilink-template variable to construct the href
|
||||||
var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"),
|
var wikiLinkTemplateMacro = this.getVariable("tv-wikilink-template"),
|
||||||
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$";
|
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$";
|
||||||
wikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,"$uri_encoded$",$tw.utils.encodeURIComponentExtended(this.to));
|
wikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,"$uri_encoded$",encodeURIComponent(this.to));
|
||||||
wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",$tw.utils.encodeURIComponentExtended($tw.utils.encodeURIComponentExtended(this.to)));
|
wikiLinkText = $tw.utils.replaceString(wikiLinkText,"$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to)));
|
||||||
}
|
}
|
||||||
// Override with the value of tv-get-export-link if defined
|
// Override with the value of tv-get-export-link if defined
|
||||||
wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText});
|
wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText});
|
||||||
|
|
|
@ -82,7 +82,7 @@ MessageCatcherWidget.prototype.render = function(parent,nextSibling) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// Render children
|
// Render children
|
||||||
this.renderChildren(parent,nextSibling);
|
this.renderChildren(parent,null);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -227,7 +227,10 @@ NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {
|
||||||
originalTitle = tiddler ? tiddler.fields["draft.of"] : "",
|
originalTitle = tiddler ? tiddler.fields["draft.of"] : "",
|
||||||
originalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,
|
originalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,
|
||||||
confirmationTitle,
|
confirmationTitle,
|
||||||
win = event.event && event.event.view ? event.event.view : window;
|
win = event.event && event.event.view ? event.event.view : window;
|
||||||
|
if(!tiddler) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// Check if the tiddler we're deleting is in draft mode
|
// Check if the tiddler we're deleting is in draft mode
|
||||||
if(originalTitle) {
|
if(originalTitle) {
|
||||||
// If so, we'll prompt for confirmation referencing the original tiddler
|
// If so, we'll prompt for confirmation referencing the original tiddler
|
||||||
|
@ -237,7 +240,7 @@ NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {
|
||||||
confirmationTitle = title;
|
confirmationTitle = title;
|
||||||
}
|
}
|
||||||
// Seek confirmation
|
// Seek confirmation
|
||||||
if(((originalTitle && this.wiki.getTiddler(originalTitle)) || (tiddler && ((tiddler.fields.text || "") !== ""))) && !win.confirm($tw.language.getString(
|
if((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || "") !== "") && !win.confirm($tw.language.getString(
|
||||||
"ConfirmDeleteTiddler",
|
"ConfirmDeleteTiddler",
|
||||||
{variables:
|
{variables:
|
||||||
{title: confirmationTitle}
|
{title: confirmationTitle}
|
||||||
|
@ -254,10 +257,8 @@ NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {
|
||||||
this.removeTitleFromStory(storyList,originalTitle);
|
this.removeTitleFromStory(storyList,originalTitle);
|
||||||
}
|
}
|
||||||
// Invoke the hook function and delete this tiddler
|
// Invoke the hook function and delete this tiddler
|
||||||
if(tiddler) {
|
$tw.hooks.invokeHook("th-deleting-tiddler",tiddler);
|
||||||
$tw.hooks.invokeHook("th-deleting-tiddler",tiddler);
|
this.wiki.deleteTiddler(title);
|
||||||
this.wiki.deleteTiddler(title);
|
|
||||||
}
|
|
||||||
// Remove the closed tiddler from the story
|
// Remove the closed tiddler from the story
|
||||||
this.removeTitleFromStory(storyList,title);
|
this.removeTitleFromStory(storyList,title);
|
||||||
this.saveStoryList(storyList);
|
this.saveStoryList(storyList);
|
||||||
|
@ -499,8 +500,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
|
||||||
// Get the tiddlers
|
// Get the tiddlers
|
||||||
var tiddlers = $tw.utils.parseJSONSafe(event.param,[]);
|
var tiddlers = $tw.utils.parseJSONSafe(event.param,[]);
|
||||||
// Get the current $:/Import tiddler
|
// Get the current $:/Import tiddler
|
||||||
var paramObject = event.paramObject || {},
|
var importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,
|
||||||
importTitle = event.importTitle || paramObject.importTitle || IMPORT_TITLE,
|
|
||||||
importTiddler = this.wiki.getTiddler(importTitle),
|
importTiddler = this.wiki.getTiddler(importTitle),
|
||||||
importData = this.wiki.getTiddlerData(importTitle,{}),
|
importData = this.wiki.getTiddlerData(importTitle,{}),
|
||||||
newFields = new Object({
|
newFields = new Object({
|
||||||
|
@ -541,7 +541,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
|
||||||
newFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);
|
newFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);
|
||||||
this.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));
|
this.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));
|
||||||
// Update the story and history details
|
// Update the story and history details
|
||||||
var autoOpenOnImport = event.autoOpenOnImport || paramObject.autoOpenOnImport || this.getVariable("tv-auto-open-on-import");
|
var autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable("tv-auto-open-on-import");
|
||||||
if(autoOpenOnImport !== "no") {
|
if(autoOpenOnImport !== "no") {
|
||||||
var storyList = this.getStoryList(),
|
var storyList = this.getStoryList(),
|
||||||
history = [];
|
history = [];
|
||||||
|
|
|
@ -168,11 +168,11 @@ ViewWidget.prototype.getValueAsHtmlTextEncoded = function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
ViewWidget.prototype.getValueAsUrlEncoded = function() {
|
ViewWidget.prototype.getValueAsUrlEncoded = function() {
|
||||||
return $tw.utils.encodeURIComponentExtended(this.getValueAsText());
|
return encodeURIComponent(this.getValueAsText());
|
||||||
};
|
};
|
||||||
|
|
||||||
ViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {
|
ViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {
|
||||||
return $tw.utils.encodeURIComponentExtended($tw.utils.encodeURIComponentExtended(this.getValueAsText()));
|
return encodeURIComponent(encodeURIComponent(this.getValueAsText()));
|
||||||
};
|
};
|
||||||
|
|
||||||
ViewWidget.prototype.getValueAsDate = function(format) {
|
ViewWidget.prototype.getValueAsDate = function(format) {
|
||||||
|
|
|
@ -14,7 +14,6 @@ extension: .html
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="generator" content="TiddlyWiki" />
|
<meta name="generator" content="TiddlyWiki" />
|
||||||
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta name="format-detection" content="telephone=no">
|
<meta name="format-detection" content="telephone=no">
|
||||||
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
||||||
<title>{{$:/core/wiki/title}}</title>
|
<title>{{$:/core/wiki/title}}</title>
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
title: $:/core/save/all-external-js
|
title: $:/core/save/all-external-js
|
||||||
|
|
||||||
\whitespace trim
|
|
||||||
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
||||||
\define saveTiddlerFilter()
|
\define saveTiddlerFilter()
|
||||||
[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$
|
[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
title: $:/core/save/offline-external-js
|
title: $:/core/save/offline-external-js
|
||||||
|
|
||||||
\whitespace trim
|
|
||||||
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
||||||
\define saveTiddlerFilter()
|
\define saveTiddlerFilter()
|
||||||
[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/plugins/tiddlywiki/filesystem]] -[[$:/plugins/tiddlywiki/tiddlyweb]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$
|
[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/plugins/tiddlywiki/filesystem]] -[[$:/plugins/tiddlywiki/tiddlyweb]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
title: $:/core/templates/tiddlywiki.js/load-tiddler
|
|
||||||
|
|
||||||
_load(window,<$macrocall $name="jsontiddler" $output="text/raw"/>);
|
|
|
@ -1,48 +1,15 @@
|
||||||
|
|
||||||
title: $:/core/templates/tiddlywiki5.js
|
title: $:/core/templates/tiddlywiki5.js
|
||||||
|
|
||||||
\rules only filteredtranscludeinline transcludeinline codeinline
|
\rules only filteredtranscludeinline transcludeinline codeinline
|
||||||
|
|
||||||
`/*
|
/*
|
||||||
`{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}`
|
{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}
|
||||||
*/
|
`*/
|
||||||
|
`<!--~~ Library modules ~~-->
|
||||||
$tw = (typeof $tw === 'undefined') ? Object.create(null) : $tw;
|
{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}
|
||||||
|
<!--~~ Boot prefix ~~-->
|
||||||
$tw.preloadTiddlers = $tw.preloadTiddlers || [];
|
{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}
|
||||||
|
<!--~~ Core plugin ~~-->
|
||||||
_load = function(window,tiddler) {
|
{{$:/core/templates/tiddlywiki5.js/tiddlers}}
|
||||||
"use strict";
|
<!--~~ Boot kernel ~~-->
|
||||||
var f;
|
{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}
|
||||||
$tw.preloadTiddlers.push(tiddler);
|
|
||||||
if(tiddler.library === "yes") {
|
|
||||||
var module = { exports:{} };
|
|
||||||
var moduleName = function moduleName(path) {
|
|
||||||
var word = path.split("/").pop();
|
|
||||||
word = word.substring(0,word.indexOf(".")) || word;
|
|
||||||
return word;
|
|
||||||
}
|
|
||||||
f = new Function("module",tiddler.text);
|
|
||||||
f(module);
|
|
||||||
window[moduleName(tiddler.title)] = module.exports;
|
|
||||||
} else {
|
|
||||||
f = new Function("window",tiddler.text);
|
|
||||||
f(window);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ~~ Library modules ~~ */
|
|
||||||
|
|
||||||
`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/tiddlywiki.js/load-tiddler}}}`
|
|
||||||
|
|
||||||
/* ~~ Boot kernel prologue ~~ */
|
|
||||||
|
|
||||||
`{{ $:/boot/bootprefix.js ||$:/core/templates/tiddlywiki.js/load-tiddler}}`
|
|
||||||
|
|
||||||
/* ~~ Core tiddlers ~~ */
|
|
||||||
|
|
||||||
`{{$:/core/templates/tiddlywiki5.js/tiddlers}}`
|
|
||||||
|
|
||||||
/* ~~ Boot kernel ~~ */
|
|
||||||
|
|
||||||
`{{ $:/boot/boot.js ||$:/core/templates/tiddlywiki.js/load-tiddler}}`
|
|
||||||
|
|
|
@ -1,50 +1,48 @@
|
||||||
title: $:/core/templates/tiddlywiki5-external-js.html
|
title: $:/core/templates/tiddlywiki5-external-js.html
|
||||||
|
|
||||||
<$set name="saveTiddlerAndShadowsFilter" filter="[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]">
|
\rules only filteredtranscludeinline transcludeinline
|
||||||
`<!doctype html>
|
<!doctype html>
|
||||||
`{{$:/core/templates/MOTW.html}}`<html lang="`<$text text={{{ [{$:/language}get[name]] }}}/>`">
|
{{$:/core/templates/MOTW.html}}<html lang="{{{ [{$:/language}get[name]] }}}">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<!--~~ Raw markup for the top of the head section ~~-->
|
<!--~~ Raw markup for the top of the head section ~~-->
|
||||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`
|
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
||||||
<meta name="application-name" content="TiddlyWiki" />
|
<meta name="application-name" content="TiddlyWiki" />
|
||||||
<meta name="generator" content="TiddlyWiki" />
|
<meta name="generator" content="TiddlyWiki" />
|
||||||
<meta name="tiddlywiki-version" content="`{{$:/core/templates/version}}`" />
|
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
<meta name="mobile-web-app-capable" content="yes"/>
|
<meta name="mobile-web-app-capable" content="yes"/>
|
||||||
<meta name="format-detection" content="telephone=no" />
|
<meta name="format-detection" content="telephone=no" />
|
||||||
<meta name="copyright" content="`{{$:/core/copyright.txt}}`" />
|
<meta name="copyright" content="{{$:/core/copyright.txt}}" />
|
||||||
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
||||||
<title>`{{$:/core/wiki/title}}`</title>
|
<title>{{$:/core/wiki/title}}</title>
|
||||||
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
|
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
|
||||||
|
|
||||||
<!--~~ Raw markup ~~-->
|
<!--~~ Raw markup ~~-->
|
||||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}`
|
{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}
|
||||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}`
|
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}
|
||||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`
|
|
||||||
</head>
|
</head>
|
||||||
<body class="tc-body">
|
<body class="tc-body">
|
||||||
<!--~~ Raw markup for the top of the body section ~~-->
|
<!--~~ Raw markup for the top of the body section ~~-->
|
||||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`
|
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}
|
||||||
<!--~~ Static styles ~~-->
|
<!--~~ Static styles ~~-->
|
||||||
<div id="styleArea">
|
<div id="styleArea">
|
||||||
`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`
|
{{$:/boot/boot.css||$:/core/templates/css-tiddler}}
|
||||||
</div>
|
</div>
|
||||||
<!--~~ Static content for Google and browsers without JavaScript ~~-->
|
<!--~~ Static content for Google and browsers without JavaScript ~~-->
|
||||||
<noscript>
|
<noscript>
|
||||||
<div id="splashArea">
|
<div id="splashArea">
|
||||||
`{{$:/core/templates/static.area}}`
|
{{$:/core/templates/static.area}}
|
||||||
</div>
|
</div>
|
||||||
</noscript>
|
</noscript>
|
||||||
<!--~~ Ordinary tiddlers ~~-->
|
<!--~~ Ordinary tiddlers ~~-->
|
||||||
`{{$:/core/templates/store.area.template.html}}`
|
{{$:/core/templates/store.area.template.html}}
|
||||||
<!--~~ Raw markup for the bottom of the body section ~~-->
|
<!--~~ Raw markup for the bottom of the body section ~~-->
|
||||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`
|
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}
|
||||||
<!--~~ Load external JavaScripts ~~-->
|
|
||||||
<script src="`{{{ [<coreURL>] }}}`" onerror="alert('Error: Cannot load `{{{ [<coreURL>] }}}`');"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>`
|
<!--~~ Load external JS ~~-->
|
||||||
</$set>
|
<script src="{{{ [<coreURL>] }}}" onerror="alert('Error: Cannot load {{{ [<coreURL>] }}}');"></script>
|
||||||
|
</html>
|
||||||
|
|
|
@ -12,7 +12,7 @@ field="text"
|
||||||
checked="enable"
|
checked="enable"
|
||||||
unchecked="disable"
|
unchecked="disable"
|
||||||
default="enable">
|
default="enable">
|
||||||
<span class="tc-small-gap-left"><<rule>></span>
|
<<rule>>
|
||||||
</$checkbox>
|
</$checkbox>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
title: $:/core/ui/DownloadFullWiki
|
|
||||||
|
|
||||||
\whitespace trim
|
|
||||||
\rules except wikilink
|
|
||||||
|
|
||||||
To download the standard single-file version of your wiki:
|
|
||||||
|
|
||||||
<$wikify name="site-title" text={{$:/config/SaveWikiButton/Filename}}>
|
|
||||||
<$let publishFilter="""-[[$:/config/SaveWikiButton/Template]] -[[$:/plugins/tiddlywiki/filesystem]] -[[$:/plugins/tiddlywiki/tiddlyweb]]""">
|
|
||||||
<$button tooltip="Download fully standalone wiki" aria-label="download full wiki" class="tc-btn-big-green">
|
|
||||||
<$action-sendmessage $message="tm-download-file" $param="$:/core/save/all" publishFilter=<<publishFilter>> filename=<<site-title>>/>
|
|
||||||
{{$:/core/images/download-button}}
|
|
||||||
<span class="tc-tiny-gap-left">
|
|
||||||
Download full wiki
|
|
||||||
</span>
|
|
||||||
</$button>
|
|
||||||
</$let>
|
|
||||||
</$wikify>
|
|
|
@ -46,7 +46,9 @@ title: $:/core/ui/EditTemplate
|
||||||
<$keyboard key="((cancel-edit-tiddler))" actions=<<cancel-delete-tiddler-actions "cancel">> tag="div">
|
<$keyboard key="((cancel-edit-tiddler))" actions=<<cancel-delete-tiddler-actions "cancel">> tag="div">
|
||||||
<$keyboard key="((save-tiddler))" actions=<<save-tiddler-actions>> tag="div">
|
<$keyboard key="((save-tiddler))" actions=<<save-tiddler-actions>> tag="div">
|
||||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem">
|
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]" variable="listItem">
|
||||||
|
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
||||||
<$transclude tiddler=<<listItem>>/>
|
<$transclude tiddler=<<listItem>>/>
|
||||||
|
</$set>
|
||||||
</$list>
|
</$list>
|
||||||
</$keyboard>
|
</$keyboard>
|
||||||
</$keyboard>
|
</$keyboard>
|
||||||
|
|
|
@ -7,6 +7,6 @@ $:/config/EditToolbarButtons/Visibility/$(listItem)$
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<div class="tc-tiddler-title tc-tiddler-edit-title">
|
<div class="tc-tiddler-title tc-tiddler-edit-title">
|
||||||
<$view field="title"/>
|
<$view field="title"/>
|
||||||
<span class="tc-tiddler-controls tc-titlebar"><$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem"><$let tv-config-toolbar-class={{{ [enlist<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]] +[join[ ]]}}}><$reveal type="nomatch" state=<<config-title>> text="hide"><$transclude tiddler=<<listItem>>/></$reveal></$let></$list></span>
|
<span class="tc-tiddler-controls tc-titlebar"><$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,23 +3,16 @@ tags: $:/tags/EditToolbar
|
||||||
caption: {{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}
|
caption: {{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}
|
||||||
description: {{$:/language/Buttons/Save/Hint}}
|
description: {{$:/language/Buttons/Save/Hint}}
|
||||||
|
|
||||||
\whitespace trim
|
|
||||||
\define save-tiddler-button()
|
\define save-tiddler-button()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$fieldmangler>
|
<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>
|
||||||
<$button
|
<<save-tiddler-actions>>
|
||||||
tooltip={{$:/language/Buttons/Save/Hint}}
|
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
||||||
aria-label={{$:/language/Buttons/Save/Caption}}
|
{{$:/core/images/done-button}}
|
||||||
class=<<tv-config-toolbar-class>>
|
</$list>
|
||||||
>
|
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
||||||
<<save-tiddler-actions>>
|
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span>
|
||||||
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
</$list>
|
||||||
{{$:/core/images/done-button}}
|
</$button></$fieldmangler>
|
||||||
</$list>
|
|
||||||
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
|
||||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span>
|
|
||||||
</$list>
|
|
||||||
</$button>
|
|
||||||
</$fieldmangler>
|
|
||||||
\end
|
\end
|
||||||
<<save-tiddler-button>>
|
<<save-tiddler-button>>
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
title: $:/core/ui/ExportTiddlyWikiCore
|
title: $:/core/ui/ExportTiddlyWikiCore
|
||||||
|
|
||||||
\define jsFileName() tiddlywikicore-$(version)$.js
|
\define jsFileName() tiddlywikicore-$(version)$.js
|
||||||
|
\define noExportMsg()
|
||||||
|
It appears that you have a wiki with an external ~TiddlyWiki core. The export action cannot be performed.
|
||||||
|
<p>You will need to view the page source in your browser. Then go to the very bottom the the source, find the last `<script>`
|
||||||
|
element, and right-click its `src` URI. Save the link as ''$(jsFileName)$''</p>
|
||||||
|
\end
|
||||||
\rules except wikilink
|
\rules except wikilink
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
|
|
||||||
|
@ -12,11 +17,16 @@ Export the TiddlyWiki core JavaScript code for running with external JavaScript:
|
||||||
tooltip="Export the TiddlyWiki core code for running with external JavaScript"
|
tooltip="Export the TiddlyWiki core code for running with external JavaScript"
|
||||||
aria-label="export TiddlyWiki core"
|
aria-label="export TiddlyWiki core"
|
||||||
class="tc-btn-big-green">
|
class="tc-btn-big-green">
|
||||||
<$action-sendmessage $message='tm-download-file' $param='$:/core/templates/tiddlywiki5.js' filename=<<jsFileName>>/>
|
<$list
|
||||||
|
filter="[[$:/boot/boot.js]is[missing]]"
|
||||||
|
variable="ignore"
|
||||||
|
emptyMessage="<$action-sendmessage $message='tm-download-file' $param='$:/core/templates/tiddlywiki5.js' filename=<<jsFileName>>/>" >
|
||||||
|
<$action-setfield $tiddler=<<qualify "$:/temp/alert">> text=<<noExportMsg>> subtitle="Export ~TiddllyWiki Core"/>
|
||||||
|
<$action-sendmessage $message="tm-modal" $param=<<qualify "$:/temp/alert">>/>
|
||||||
|
</$list>
|
||||||
{{$:/core/images/download-button}}
|
{{$:/core/images/download-button}}
|
||||||
<span class="tc-tiny-gap-left">
|
 
|
||||||
Download TiddlyWiki core
|
Download TiddlyWiki core
|
||||||
</span>
|
|
||||||
</$button>
|
</$button>
|
||||||
|
|
||||||
[[Further information|https://tiddlywiki.com/#Using%20the%20external%20JavaScript%20template]]
|
[[Further information|https://tiddlywiki.com/#Using%20the%20external%20JavaScript%20template]]
|
||||||
|
|
|
@ -13,13 +13,13 @@ caption: {{$:/language/ControlPanel/LayoutSwitcher/Caption}}
|
||||||
<$set name="cls" filter="[all[current]field:title{$:/layout}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item">
|
<$set name="cls" filter="[all[current]field:title{$:/layout}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item">
|
||||||
<div class=<<cls>>>
|
<div class=<<cls>>>
|
||||||
<$link to={{!!title}}>
|
<$link to={{!!title}}>
|
||||||
''<$transclude tiddler={{{ [<currentTiddler>get[icon]] }}}/><$transclude field="name"/>'' - <$transclude field="description"/>
|
''<$transclude field="name"/>'' - <$transclude field="description"/>
|
||||||
</$link></div></$set>
|
</$link></div></$set>
|
||||||
""">
|
""">
|
||||||
<$set name="cls" filter="[all[current]field:title[$:/core/ui/PageTemplate]]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item">
|
<$set name="cls" filter="[all[current]field:title[$:/core/ui/PageTemplate]]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item">
|
||||||
<div class=<<cls>>>
|
<div class=<<cls>>>
|
||||||
<$link to={{!!title}}>
|
<$link to={{!!title}}>
|
||||||
''<$transclude tiddler={{{ [<currentTiddler>get[icon]] }}}/><$transclude field="name"/>'' - <$transclude field="description"/>
|
''<$transclude field="name"/>'' - <$transclude field="description"/>
|
||||||
</$link>
|
</$link>
|
||||||
</div>
|
</div>
|
||||||
</$set>
|
</$set>
|
||||||
|
|
|
@ -2,17 +2,26 @@ title: $:/core/ui/MoreSideBar/Tags
|
||||||
tags: $:/tags/MoreSideBar
|
tags: $:/tags/MoreSideBar
|
||||||
caption: {{$:/language/SideBar/Tags/Caption}}
|
caption: {{$:/language/SideBar/Tags/Caption}}
|
||||||
|
|
||||||
\whitespace trim
|
<$set name="tv-config-toolbar-icons" value="yes">
|
||||||
|
|
||||||
|
<$set name="tv-config-toolbar-text" value="yes">
|
||||||
|
|
||||||
|
<$set name="tv-config-toolbar-class" value="">
|
||||||
|
|
||||||
|
{{$:/core/ui/Buttons/tag-manager}}
|
||||||
|
|
||||||
|
</$set>
|
||||||
|
|
||||||
|
</$set>
|
||||||
|
|
||||||
|
</$set>
|
||||||
|
|
||||||
<$let tv-config-toolbar-icons="yes" tv-config-toolbar-text="yes" tv-config-toolbar-class="">
|
|
||||||
<div class="tc-tiny-v-gap-bottom">
|
|
||||||
{{$:/core/ui/Buttons/tag-manager}}
|
|
||||||
</div>
|
|
||||||
</$let>
|
|
||||||
<$list filter={{$:/core/Filters/AllTags!!filter}}>
|
<$list filter={{$:/core/Filters/AllTags!!filter}}>
|
||||||
<div class="tc-tiny-v-gap-bottom">
|
|
||||||
<$transclude tiddler="$:/core/ui/TagTemplate"/>
|
<$transclude tiddler="$:/core/ui/TagTemplate"/>
|
||||||
</div>
|
|
||||||
</$list>
|
</$list>
|
||||||
|
|
||||||
<hr class="tc-untagged-separator">
|
<hr class="tc-untagged-separator">
|
||||||
|
|
||||||
{{$:/core/ui/UntaggedTemplate}}
|
{{$:/core/ui/UntaggedTemplate}}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
title: $:/core/ui/Buttons/save-wiki
|
title: $:/core/ui/Buttons/save-wiki
|
||||||
tags: $:/tags/PageControls
|
tags: $:/tags/PageControls
|
||||||
caption: {{$:/core/images/save-button-dynamic}} {{$:/language/Buttons/SaveWiki/Caption}}
|
caption: {{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}
|
||||||
description: {{$:/language/Buttons/SaveWiki/Hint}}
|
description: {{$:/language/Buttons/SaveWiki/Hint}}
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
|
@ -10,7 +10,7 @@ description: {{$:/language/Buttons/SaveWiki/Hint}}
|
||||||
</$wikify>
|
</$wikify>
|
||||||
<span class="tc-dirty-indicator">
|
<span class="tc-dirty-indicator">
|
||||||
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
|
||||||
{{$:/core/images/save-button-dynamic}}
|
{{$:/core/images/save-button}}
|
||||||
</$list>
|
</$list>
|
||||||
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
<$list filter="[<tv-config-toolbar-text>match[yes]]">
|
||||||
<span class="tc-btn-text">
|
<span class="tc-btn-text">
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
title: $:/core/ui/PageTemplate
|
title: $:/core/ui/PageTemplate
|
||||||
name: {{$:/language/PageTemplate/Name}}
|
name: {{$:/language/PageTemplate/Name}}
|
||||||
description: {{$:/language/PageTemplate/Description}}
|
description: {{$:/language/PageTemplate/Description}}
|
||||||
icon: $:/core/images/layout-button
|
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
||||||
|
|
|
@ -3,8 +3,10 @@ title: $:/core/ui/UntaggedTemplate
|
||||||
\define lingo-base() $:/language/SideBar/
|
\define lingo-base() $:/language/SideBar/
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-untagged-label tc-tag-label">
|
<$button popup=<<qualify "$:/state/popup/tag">> class="tc-btn-invisible tc-untagged-label tc-tag-label">
|
||||||
<<lingo Tags/Untagged/Caption>>
|
<<lingo Tags/Untagged/Caption>>
|
||||||
</$button>
|
</$button>
|
||||||
<$reveal class="tc-drop-down" tag="div" state=<<qualify "$:/state/popup/tag">> type="popup" position="below">
|
<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below">
|
||||||
<$list filter="[untagged[]!is[system]] -[tags[]] +[sort[title]]" template="$:/core/ui/ListItemTemplate"/>
|
<div class="tc-drop-down">
|
||||||
|
<$list filter="[untagged[]!is[system]] -[tags[]] +[sort[title]]" template="$:/core/ui/ListItemTemplate"/>
|
||||||
|
</div>
|
||||||
</$reveal>
|
</$reveal>
|
||||||
|
|
|
@ -6,7 +6,7 @@ description: {{$:/language/Buttons/NewHere/Hint}}
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
\define newHereActions()
|
\define newHereActions()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$set name="tags" filter="[<currentTiddler>] [enlist{$:/config/NewTiddler/Tags}]">
|
<$set name="tags" filter="[<currentTiddler>] [{$:/config/NewTiddler/Tags}]">
|
||||||
<$action-sendmessage $message="tm-new-tiddler" tags=<<tags>>/>
|
<$action-sendmessage $message="tm-new-tiddler" tags=<<tags>>/>
|
||||||
</$set>
|
</$set>
|
||||||
\end
|
\end
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
title: $:/config/OfficialPluginLibrary
|
title: $:/config/OfficialPluginLibrary
|
||||||
tags: $:/tags/PluginLibrary
|
tags: $:/tags/PluginLibrary
|
||||||
url: https://tiddlywiki.com/library/v5.2.8/index.html
|
url: https://tiddlywiki.com/library/v5.2.5/index.html
|
||||||
caption: {{$:/language/OfficialPluginLibrary}}
|
caption: {{$:/language/OfficialPluginLibrary}}
|
||||||
|
|
||||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||||
|
|
|
@ -4,5 +4,5 @@ title: $:/snippets/download-wiki-button
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$button class="tc-btn-big-green">
|
<$button class="tc-btn-big-green">
|
||||||
<$action-sendmessage $message="tm-download-file" $param="$:/core/save/all" filename="index.html"/>
|
<$action-sendmessage $message="tm-download-file" $param="$:/core/save/all" filename="index.html"/>
|
||||||
<<lingo Full/Caption>> {{$:/core/images/save-button-dynamic}}
|
<<lingo Full/Caption>> {{$:/core/images/save-button}}
|
||||||
</$button>
|
</$button>
|
|
@ -4,85 +4,76 @@ tags: $:/tags/Macro
|
||||||
\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
|
\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$set name="tabsList" filter="[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]">
|
<$set name="tabsList" filter="[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]">
|
||||||
<$let
|
<$let
|
||||||
currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}}
|
currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}}
|
||||||
firstTab={{{ [enlist<tabsList>nth[1]] }}}
|
firstTab={{{ [enlist<tabsList>nth[1]] }}}
|
||||||
lastTab={{{ [enlist<tabsList>last[]] }}}
|
lastTab={{{ [enlist<tabsList>last[]] }}}
|
||||||
nextTab={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}
|
nextTab={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>
|
||||||
>
|
<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>
|
||||||
<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>
|
$actions$
|
||||||
$actions$
|
</$let>
|
||||||
</$let>
|
|
||||||
</$set>
|
</$set>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\define keyboard-input-actions()
|
\define keyboard-input-actions()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$list filter="[<__index__>match[]]">
|
<$list filter="[<__index__>match[]]">
|
||||||
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>
|
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>
|
||||||
</$list>
|
</$list>
|
||||||
<$list filter="[<__index__>!match[]]">
|
<$list filter="[<__index__>!match[]]">
|
||||||
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>
|
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>
|
||||||
</$list>
|
</$list>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\define input-next-actions-inner()
|
\define input-next-actions-inner()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$list filter="[<nextItem>minlength[1]]" variable="ignore">
|
<$list filter="[<nextItem>minlength[1]]" variable="ignore">
|
||||||
<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>
|
<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>
|
||||||
<$list filter="[<__index__>match[]]">
|
<$list filter="[<__index__>match[]]">
|
||||||
<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
|
<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
|
||||||
</$list>
|
</$list>
|
||||||
<$list filter="[<__index__>!match[]]">
|
<$list filter="[<__index__>!match[]]">
|
||||||
<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
|
<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
|
||||||
</$list>
|
</$list>
|
||||||
<$action-setfield $tiddler=<<__refreshTitle__>> text="yes"/>
|
<$action-setfield $tiddler=<<__refreshTitle__>> text="yes"/>
|
||||||
</$list>
|
</$list>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\define input-next-actions(afterOrBefore:"after",reverse:"")
|
\define input-next-actions(afterOrBefore:"after",reverse:"")
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$list
|
<$list filter="[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]" variable="ignore">
|
||||||
filter="[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]"
|
<$let
|
||||||
variable="ignore"
|
userInput={{{ [<__storeTitle__>get[text]] }}}
|
||||||
>
|
selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}
|
||||||
<$let
|
configTiddler={{{ [subfilter<__configTiddlerFilter__>] }}}
|
||||||
userInput={{{ [<__storeTitle__>get[text]] }}}
|
primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}}
|
||||||
selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}
|
secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>
|
||||||
configTiddler={{{ [subfilter<__configTiddlerFilter__>] }}}
|
<$set name="filteredList" filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]">
|
||||||
primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}}
|
<$let
|
||||||
secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}
|
nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}}
|
||||||
>
|
firstItem={{{ [enlist<filteredList>nth[1]] }}}
|
||||||
<$set
|
lastItem={{{ [enlist<filteredList>last[]] }}}>
|
||||||
name="filteredList"
|
<$list filter="[<selectedItem>match<firstItem>!match<lastItem>]" variable="ignore">
|
||||||
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
|
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
|
||||||
>
|
<<input-next-actions-inner>>
|
||||||
<$let
|
</$set>
|
||||||
nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}}
|
</$list>
|
||||||
firstItem={{{ [enlist<filteredList>nth[1]] }}}
|
<$list filter="[<selectedItem>match<lastItem>!match<firstItem>]" variable="ignore">
|
||||||
lastItem={{{ [enlist<filteredList>last[]] }}}
|
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
|
||||||
>
|
<<input-next-actions-inner>>
|
||||||
<$list filter="[<selectedItem>match<firstItem>!match<lastItem>]" variable="ignore">
|
</$set>
|
||||||
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
|
</$list>
|
||||||
<<input-next-actions-inner>>
|
<$list filter="[<selectedItem>match<firstItem>match<lastItem>]" variable="ignore">
|
||||||
</$set>
|
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
|
||||||
</$list>
|
<<input-next-actions-inner>>
|
||||||
<$list filter="[<selectedItem>match<lastItem>!match<firstItem>]" variable="ignore">
|
</$set>
|
||||||
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
|
</$list>
|
||||||
<<input-next-actions-inner>>
|
<$list filter="[<selectedItem>!match<firstItem>!match<lastItem>]" variable="ignore">
|
||||||
</$set>
|
<<input-next-actions-inner>>
|
||||||
</$list>
|
</$list>
|
||||||
<$list filter="[<selectedItem>match<firstItem>match<lastItem>]" variable="ignore">
|
</$let>
|
||||||
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
|
</$set>
|
||||||
<<input-next-actions-inner>>
|
</$let>
|
||||||
</$set>
|
|
||||||
</$list>
|
|
||||||
<$list filter="[<selectedItem>!match<firstItem>!match<lastItem>]" variable="ignore">
|
|
||||||
<<input-next-actions-inner>>
|
|
||||||
</$list>
|
|
||||||
</$let>
|
|
||||||
</$set>
|
|
||||||
</$let>
|
|
||||||
</$list>
|
</$list>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
|
@ -93,14 +84,12 @@ tags: $:/tags/Macro
|
||||||
<$keyboard key="((input-up))" actions=<<input-next-actions "before" "reverse[]">>>
|
<$keyboard key="((input-up))" actions=<<input-next-actions "before" "reverse[]">>>
|
||||||
<$keyboard key="((input-down))" actions=<<input-next-actions>>>
|
<$keyboard key="((input-down))" actions=<<input-next-actions>>>
|
||||||
<$keyboard key="((input-cancel))" actions=<<__inputCancelActions__>>>
|
<$keyboard key="((input-cancel))" actions=<<__inputCancelActions__>>>
|
||||||
<$edit-text
|
<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>>
|
||||||
tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>>
|
inputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>>
|
||||||
inputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>>
|
placeholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>>
|
||||||
placeholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>>
|
focus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>>
|
||||||
focus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>>
|
tabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>>
|
||||||
tabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>>
|
refreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>
|
||||||
refreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>
|
|
||||||
/>
|
|
||||||
</$keyboard>
|
</$keyboard>
|
||||||
</$keyboard>
|
</$keyboard>
|
||||||
</$keyboard>
|
</$keyboard>
|
||||||
|
|
|
@ -26,7 +26,7 @@ tags: $:/tags/Macro
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<span class="tc-links-draggable-list">
|
<span class="tc-links-draggable-list">
|
||||||
<$vars targetTiddler="""$tiddler$""" targetField="""$field$""">
|
<$vars targetTiddler="""$tiddler$""" targetField="""$field$""">
|
||||||
<$genesis $type=<<__type__>> class="$class$">
|
<$type$ class="$class$">
|
||||||
<$list filter="[list[$tiddler$!!$field$]]" emptyMessage=<<__emptyMessage__>>>
|
<$list filter="[list[$tiddler$!!$field$]]" emptyMessage=<<__emptyMessage__>>>
|
||||||
<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""" enable=<<tv-enable-drag-and-drop>>>
|
<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""" enable=<<tv-enable-drag-and-drop>>>
|
||||||
<div class="tc-droppable-placeholder"/>
|
<div class="tc-droppable-placeholder"/>
|
||||||
|
@ -51,7 +51,7 @@ tags: $:/tags/Macro
|
||||||
<div style="height:0.5em;"/>
|
<div style="height:0.5em;"/>
|
||||||
</$droppable>
|
</$droppable>
|
||||||
</$tiddler>
|
</$tiddler>
|
||||||
</$genesis>
|
</$type$>
|
||||||
</$vars>
|
</$vars>
|
||||||
</span>
|
</span>
|
||||||
\end
|
\end
|
||||||
|
@ -84,24 +84,24 @@ tags: $:/tags/Macro
|
||||||
<span class="tc-tagged-draggable-list">
|
<span class="tc-tagged-draggable-list">
|
||||||
<$set name="tag" value=<<__tag__>>>
|
<$set name="tag" value=<<__tag__>>>
|
||||||
<$list filter="[<__tag__>tagging[]$subFilter$]" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>
|
<$list filter="[<__tag__>tagging[]$subFilter$]" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>
|
||||||
<$genesis $type=<<__elementTag__>> class="tc-menu-list-item">
|
<$elementTag$ class="tc-menu-list-item">
|
||||||
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>>
|
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>>
|
||||||
<$genesis $type=<<__elementTag__>> class="tc-droppable-placeholder"/>
|
<$elementTag$ class="tc-droppable-placeholder"/>
|
||||||
<$genesis $type=<<__elementTag__>>>
|
<$elementTag$>
|
||||||
<$transclude tiddler="""$itemTemplate$""">
|
<$transclude tiddler="""$itemTemplate$""">
|
||||||
<$link to={{!!title}}>
|
<$link to={{!!title}}>
|
||||||
<$view field="title"/>
|
<$view field="title"/>
|
||||||
</$link>
|
</$link>
|
||||||
</$transclude>
|
</$transclude>
|
||||||
</$genesis>
|
</$elementTag$>
|
||||||
</$droppable>
|
</$droppable>
|
||||||
</$genesis>
|
</$elementTag$>
|
||||||
</$list>
|
</$list>
|
||||||
<$tiddler tiddler="">
|
<$tiddler tiddler="">
|
||||||
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>>
|
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""" enable=<<tv-enable-drag-and-drop>>>
|
||||||
<$genesis $type=<<__elementTag__>> class="tc-droppable-placeholder"/>
|
<$elementTag$ class="tc-droppable-placeholder"/>
|
||||||
<$genesis $type=<<__elementTag__>> style="height:0.5em;">
|
<$elementTag$ style="height:0.5em;">
|
||||||
</$genesis>
|
</$elementTag$>
|
||||||
</$droppable>
|
</$droppable>
|
||||||
</$tiddler>
|
</$tiddler>
|
||||||
</$set>
|
</$set>
|
||||||
|
|
|
@ -10,14 +10,10 @@ second-search-filter: [tags[]is[system]search:title<userInput>sort[]]
|
||||||
\define add-tag-actions(actions,tagField:"tags")
|
\define add-tag-actions(actions,tagField:"tags")
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$set name="tag" value={{{ [<__tiddler__>get[text]] }}}>
|
<$set name="tag" value={{{ [<__tiddler__>get[text]] }}}>
|
||||||
<$list
|
<$list filter="[<saveTiddler>!contains:$tagField$<tag>!match[]]" variable="ignore" emptyMessage="<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter='-[<tag>]'/>">
|
||||||
filter="[<saveTiddler>!contains:$tagField$<tag>!match[]]"
|
<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter="[<tag>trim[]]"/>
|
||||||
variable="ignore"
|
$actions$
|
||||||
emptyMessage="<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter='-[<tag>]'/>"
|
</$list>
|
||||||
>
|
|
||||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter="[<tag>trim[]]"/>
|
|
||||||
$actions$
|
|
||||||
</$list>
|
|
||||||
</$set>
|
</$set>
|
||||||
<<delete-tag-state-tiddlers>>
|
<<delete-tag-state-tiddlers>>
|
||||||
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
||||||
|
@ -25,153 +21,80 @@ second-search-filter: [tags[]is[system]search:title<userInput>sort[]]
|
||||||
|
|
||||||
\define clear-tags-actions-inner()
|
\define clear-tags-actions-inner()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$list
|
<$list filter="[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]" variable="ignore" emptyMessage="<<cancel-delete-tiddler-actions 'cancel'>>">
|
||||||
filter="[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]"
|
<<delete-tag-state-tiddlers>>
|
||||||
variable="ignore"
|
|
||||||
emptyMessage="<<cancel-delete-tiddler-actions 'cancel'>>"
|
|
||||||
>
|
|
||||||
<<delete-tag-state-tiddlers>>
|
|
||||||
</$list>
|
</$list>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\define clear-tags-actions()
|
\define clear-tags-actions()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
|
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
|
||||||
<$list filter="[<newTagNameTiddler>get[text]!match<userInput>]" emptyMessage="<<clear-tags-actions-inner>>">
|
<$list filter="[<newTagNameTiddler>get[text]!match<userInput>]" emptyMessage="<<clear-tags-actions-inner>>">
|
||||||
<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
||||||
</$list>
|
</$list>
|
||||||
</$set>
|
</$set>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\define tag-picker-inner(actions,tagField:"tags")
|
\define tag-picker-inner(actions,tagField:"tags")
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$vars
|
<$vars newTagNameInputTiddlerQualified=<<qualify "$:/temp/NewTagName/input">> newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>
|
||||||
newTagNameInputTiddlerQualified=<<qualify "$:/temp/NewTagName/input">>
|
<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>
|
||||||
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
|
<$vars refreshTitle=<<qualify "$:/temp/NewTagName/refresh">> nonSystemTagsFilter="[tags[]!is[system]search:title<userInput>sort[]]" systemTagsFilter="[tags[]is[system]search:title<userInput>sort[]]">
|
||||||
fallbackTarget={{$(palette)$##tag-background}}
|
<div class="tc-edit-add-tag">
|
||||||
colourA={{$(palette)$##foreground}}
|
<div>
|
||||||
colourB={{$(palette)$##background}}
|
<span class="tc-add-tag-name tc-small-gap-right">
|
||||||
>
|
<$macrocall $name="keyboard-driven-input" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
|
||||||
<$vars
|
selectionStateTitle=<<tagSelectionState>> inputAcceptActions="<$macrocall $name='add-tag-actions' actions=<<__actions__>> tagField=<<__tagField__>>/>"
|
||||||
storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}}
|
inputCancelActions=<<clear-tags-actions>> tag="input" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}
|
||||||
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}
|
focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>>
|
||||||
>
|
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}}
|
||||||
<$vars
|
cancelPopups=<<cancelPopups>> configTiddlerFilter="[[$:/core/macros/tag-picker]]"/>
|
||||||
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
|
</span><$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type="nomatch" text=""><$button class="tc-btn-invisible tc-small-gap tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class="tc-add-tag-button tc-small-gap-left">
|
||||||
nonSystemTagsFilter="[tags[]!is[system]search:title<userInput>sort[]]"
|
<$set name="tag" value={{{ [<newTagNameTiddler>get[text]] }}}>
|
||||||
systemTagsFilter="[tags[]is[system]search:title<userInput>sort[]]"
|
<$button set=<<newTagNameTiddler>> setTo="" class="">
|
||||||
>
|
<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter="[<tag>trim[]]"/>
|
||||||
<div class="tc-edit-add-tag">
|
$actions$
|
||||||
<div>
|
<$set name="currentTiddlerCSSEscaped" value={{{ [<saveTiddler>escapecss[]] }}}>
|
||||||
<span class="tc-add-tag-name tc-small-gap-right">
|
<<delete-tag-state-tiddlers>><$action-sendmessage $message="tm-focus-selector" $param=<<get-tagpicker-focus-selector>>/>
|
||||||
<$macrocall
|
</$set>
|
||||||
$name="keyboard-driven-input"
|
{{$:/language/EditTemplate/Tags/Add/Button}}
|
||||||
tiddler=<<newTagNameTiddler>>
|
</$button>
|
||||||
storeTitle=<<storeTitle>>
|
</$set>
|
||||||
refreshTitle=<<refreshTitle>>
|
</span>
|
||||||
selectionStateTitle=<<tagSelectionState>>
|
</div>
|
||||||
inputAcceptActions="<$macrocall $name='add-tag-actions' actions=<<__actions__>> tagField=<<__tagField__>>/>"
|
<div class="tc-block-dropdown-wrapper">
|
||||||
inputCancelActions=<<clear-tags-actions>>
|
<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default="">
|
||||||
tag="input"
|
<div class="tc-block-dropdown tc-block-tags-dropdown">
|
||||||
placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}
|
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
|
||||||
focusPopup=<<qualify "$:/state/popup/tags-auto-complete">>
|
<$list filter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
||||||
class="tc-edit-texteditor tc-popup-handle"
|
<$list filter=<<nonSystemTagsFilter>> variable="tag">
|
||||||
tabindex=<<tabIndex>>
|
<$list filter="[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]" emptyMessage="<$vars button-classes='tc-btn-invisible tc-tag-button-selected' actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>">
|
||||||
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}
|
<$vars button-classes="tc-btn-invisible" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>
|
||||||
filterMinLength={{$:/config/Tags/MinLength}}
|
</$list>
|
||||||
cancelPopups=<<cancelPopups>>
|
</$list></$list>
|
||||||
configTiddlerFilter="[[$:/core/macros/tag-picker]]"
|
<hr>
|
||||||
/>
|
<$list filter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
||||||
</span>
|
<$list filter=<<systemTagsFilter>> variable="tag">
|
||||||
<$button popup=<<qualify "$:/state/popup/tags-auto-complete">>
|
<$list filter="[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]" emptyMessage="<$vars button-classes='tc-btn-invisible tc-tag-button-selected' actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>">
|
||||||
class="tc-btn-invisible tc-btn-dropdown"
|
<$vars button-classes="tc-btn-invisible" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>
|
||||||
tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}}
|
</$list>
|
||||||
aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}
|
</$list></$list>
|
||||||
>
|
</$set>
|
||||||
{{$:/core/images/down-arrow}}
|
</div>
|
||||||
</$button>
|
</$reveal>
|
||||||
<$reveal state=<<storeTitle>> type="nomatch" text="">
|
</div>
|
||||||
<$button class="tc-btn-invisible tc-small-gap tc-btn-dropdown"
|
</div>
|
||||||
tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}}
|
</$vars>
|
||||||
aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}
|
</$vars>
|
||||||
>
|
|
||||||
{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>>
|
|
||||||
</$button>
|
|
||||||
</$reveal>
|
|
||||||
<span class="tc-add-tag-button tc-small-gap-left">
|
|
||||||
<$set name="tag" value={{{ [<newTagNameTiddler>get[text]] }}}>
|
|
||||||
<$button set=<<newTagNameTiddler>> setTo="" class="">
|
|
||||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter="[<tag>trim[]]"/>
|
|
||||||
$actions$
|
|
||||||
<$set name="currentTiddlerCSSEscaped" value={{{ [<saveTiddler>escapecss[]] }}}>
|
|
||||||
<<delete-tag-state-tiddlers>><$action-sendmessage $message="tm-focus-selector" $param=<<get-tagpicker-focus-selector>>/>
|
|
||||||
</$set>
|
|
||||||
{{$:/language/EditTemplate/Tags/Add/Button}}
|
|
||||||
</$button>
|
|
||||||
</$set>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="tc-block-dropdown-wrapper">
|
|
||||||
<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default="">
|
|
||||||
<div class="tc-block-dropdown tc-block-tags-dropdown">
|
|
||||||
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
|
|
||||||
<$list
|
|
||||||
filter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]"
|
|
||||||
emptyMessage="<div class='tc-search-results'
|
|
||||||
>
|
|
||||||
{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
|
||||||
<$list filter=<<nonSystemTagsFilter>> variable="tag">
|
|
||||||
<$list
|
|
||||||
filter="[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]"
|
|
||||||
emptyMessage="<$vars button-classes='tc-btn-invisible tc-tag-button-selected' actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>"
|
|
||||||
>
|
|
||||||
<$vars button-classes="tc-btn-invisible"
|
|
||||||
actions=<<__actions__>>
|
|
||||||
tagField=<<__tagField__>>
|
|
||||||
currentTiddler=<<tag>>
|
|
||||||
>
|
|
||||||
{{||$:/core/ui/TagPickerTagTemplate}}
|
|
||||||
</$vars>
|
|
||||||
</$list>
|
|
||||||
</$list>
|
|
||||||
</$list>
|
|
||||||
<hr>
|
|
||||||
<$list filter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>
|
|
||||||
{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
|
||||||
<$list filter=<<systemTagsFilter>> variable="tag">
|
|
||||||
<$list filter="[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]"
|
|
||||||
emptyMessage="<$vars button-classes='tc-btn-invisible tc-tag-button-selected' actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>"
|
|
||||||
>
|
|
||||||
<$vars button-classes="tc-btn-invisible"
|
|
||||||
actions=<<__actions__>>
|
|
||||||
tagField=<<__tagField__>>
|
|
||||||
currentTiddler=<<tag>>
|
|
||||||
>
|
|
||||||
{{||$:/core/ui/TagPickerTagTemplate}}
|
|
||||||
</$vars>
|
|
||||||
</$list>
|
|
||||||
</$list>
|
|
||||||
</$list>
|
|
||||||
</$set>
|
|
||||||
</div>
|
|
||||||
</$reveal>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</$vars>
|
|
||||||
</$vars>
|
|
||||||
</$vars>
|
</$vars>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\define tag-picker(actions,tagField:"tags")
|
\define tag-picker(actions,tagField:"tags")
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>
|
<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>
|
||||||
<$list
|
<$list filter="[<newTagNameTiddler>match[]]" emptyMessage="<$macrocall $name='tag-picker-inner' actions=<<__actions__>> tagField=<<__tagField__>>/>">
|
||||||
filter="[<newTagNameTiddler>match[]]"
|
<$set name="newTagNameTiddler" value=<<qualify "$:/temp/NewTagName">>>
|
||||||
emptyMessage="<$macrocall $name='tag-picker-inner' actions=<<__actions__>> tagField=<<__tagField__>>/>"
|
<$macrocall $name="tag-picker-inner" actions=<<__actions__>> tagField=<<__tagField__>>/>
|
||||||
>
|
</$set>
|
||||||
<$set name="newTagNameTiddler" value=<<qualify "$:/temp/NewTagName">>>
|
</$list>
|
||||||
<$macrocall $name="tag-picker-inner" actions=<<__actions__>> tagField=<<__tagField__>>/>
|
|
||||||
</$set>
|
|
||||||
</$list>
|
|
||||||
</$vars>
|
</$vars>
|
||||||
\end
|
\end
|
||||||
|
|
|
@ -7,7 +7,7 @@ tags: $:/tags/Macro
|
||||||
|
|
||||||
\define toc-caption()
|
\define toc-caption()
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
<span class="tc-toc-caption">
|
<span class="tc-toc-caption tc-tiny-gap-left">
|
||||||
<$set name="tv-wikilinks" value="no">
|
<$set name="tv-wikilinks" value="no">
|
||||||
<$transclude field="caption">
|
<$transclude field="caption">
|
||||||
<$view field="title"/>
|
<$view field="title"/>
|
||||||
|
@ -24,7 +24,7 @@ tags: $:/tags/Macro
|
||||||
<$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
|
<$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
|
||||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
|
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
|
||||||
<li class=<<toc-item-class>>>
|
<li class=<<toc-item-class>>>
|
||||||
<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><<toc-caption>></$link>">
|
<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>">
|
||||||
<<toc-caption>>
|
<<toc-caption>>
|
||||||
</$list>
|
</$list>
|
||||||
<$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
|
<$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
created: 20140923173639039
|
created: 20140923173639039
|
||||||
creator: pmario
|
creator: pmario
|
||||||
modified: 20230307080008193
|
modified: 20140924155046340
|
||||||
modifier: pmario
|
modifier: pmario
|
||||||
title: TaskManagement
|
title: TaskManagement
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
In dieser Edition sind folgende Task Management Varianten beschrieben:
|
In dieser Edition sind folgende Task Management Varianten beschreiben:
|
||||||
|
|
||||||
<<list-links filter:"[tag[TaskManagement]]">>
|
<<list-links filter:"[tag[TaskManagement]]">>
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ color: #37d011
|
||||||
created: 20140923104300415
|
created: 20140923104300415
|
||||||
creator: pmario
|
creator: pmario
|
||||||
icon: $:/core/images/done-button
|
icon: $:/core/images/done-button
|
||||||
modified: 20230307080039831
|
modified: 20140923105208878
|
||||||
modifier: ChrisK
|
modifier: ChrisK
|
||||||
tags: done
|
tags: done
|
||||||
title: done
|
title: done
|
||||||
|
@ -12,5 +12,5 @@ Diese Tag wird verwendet um "Tasks" als erledigt zu markieren.
|
||||||
|
|
||||||
Siehe auch:
|
Siehe auch:
|
||||||
|
|
||||||
* [[Task Management|TaskManagement]] .. Beispiel
|
* [[Task Management]] .. Beispiel
|
||||||
* [[Tag Manager|$:/TagManager]] .. Zuweisung der Farben und Symbole
|
* [[Tag Manager|$:/TagManager]] .. Zuweisung der Farben und Symbole
|
|
@ -1,6 +0,0 @@
|
||||||
created: 20230307080413903
|
|
||||||
modified: 20230307080417122
|
|
||||||
title: Importieren von Tiddlern
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
https://tiddlywiki.com/#Importing%20Tiddlers
|
|
|
@ -1,11 +1,11 @@
|
||||||
created: 20140918094051245
|
created: 20140918094051245
|
||||||
creator: pmario
|
creator: pmario
|
||||||
modified: 20230307080301079
|
modified: 20140918094948642
|
||||||
modifier: pmario
|
modifier: pmario
|
||||||
tags: Referenz
|
tags: Referenz
|
||||||
title: Liste aller HowTo's
|
title: Liste aller HowTo's
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
Hier finden Sie eine Auflistung aller ~HowTo's
|
Hier finden Sie eine Auflistung aller HowTo's
|
||||||
|
|
||||||
<<list-links "[tag[howto]]">>
|
<<list-links "[tag[howto]]">>
|
|
@ -1,6 +0,0 @@
|
||||||
created: 20230307081437974
|
|
||||||
modified: 20230307081439303
|
|
||||||
title: Tagging
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
https://tiddlywiki.com/#Tagging
|
|
|
@ -1,6 +0,0 @@
|
||||||
created: 20230307080103029
|
|
||||||
modified: 20230307080103029
|
|
||||||
title: $:/themes/tiddlywiki/vanilla/options/sidebarlayout
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
fluid-fixed
|
|
|
@ -1,7 +0,0 @@
|
||||||
created: 20230307081923415
|
|
||||||
modified: 20230307081953759
|
|
||||||
tags: Widgets
|
|
||||||
title: ListWidget
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
https://tiddlywiki.com/#ListWidget
|
|
|
@ -1,7 +0,0 @@
|
||||||
created: 20230307082002353
|
|
||||||
modified: 20230307082023207
|
|
||||||
tags: Widgets
|
|
||||||
title: TranscludeWidget
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
https://tiddlywiki.com/#TranscludeWidget
|
|
|
@ -1,7 +1,7 @@
|
||||||
caption: Bilder
|
caption: Bilder
|
||||||
created: 20131205160221762
|
created: 20131205160221762
|
||||||
creator: pmario
|
creator: pmario
|
||||||
modified: 20230307081713229
|
modified: 20140921170652909
|
||||||
modifier: pmario
|
modifier: pmario
|
||||||
tags: WikiText
|
tags: WikiText
|
||||||
title: Bilder in WikiText
|
title: Bilder in WikiText
|
||||||
|
@ -25,7 +25,7 @@ oder
|
||||||
|
|
||||||
Wenn die Bildquelle der Titel eines existierenden Tiddlers ist, dann wird dieser direkt angezeigt. Ansonsten wird die Quelle als URL angesehen und ein HTML `<img>` Element wird erzeugt. Das `src` Attribut wird auf die [[URL]] gesetzt.
|
Wenn die Bildquelle der Titel eines existierenden Tiddlers ist, dann wird dieser direkt angezeigt. Ansonsten wird die Quelle als URL angesehen und ein HTML `<img>` Element wird erzeugt. Das `src` Attribut wird auf die [[URL]] gesetzt.
|
||||||
|
|
||||||
Ein Tooltip kann ebenfalls angegeben werden:
|
Ein [[Tooltip]] kann ebenfalls angegeben werden:
|
||||||
|
|
||||||
```
|
```
|
||||||
[img[Ich bin der Tooltip text|Motovun Jack.jpg]]
|
[img[Ich bin der Tooltip text|Motovun Jack.jpg]]
|
||||||
|
@ -33,7 +33,7 @@ Ein Tooltip kann ebenfalls angegeben werden:
|
||||||
|
|
||||||
[img width=100 [Ich bin der Tooltip text|Motovun Jack.jpg]]
|
[img width=100 [Ich bin der Tooltip text|Motovun Jack.jpg]]
|
||||||
|
|
||||||
Attribute wie z.B: CSS Klassen oder die Höhe und Breite können ebenfalls angegeben werden.
|
Attribute wie zB: CSS Klassen oder die Höhe und Breite können ebenfalls angegeben werden.
|
||||||
|
|
||||||
```
|
```
|
||||||
[img width=64 [Motovun Jack.jpg]]
|
[img width=64 [Motovun Jack.jpg]]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
caption: Makros
|
caption: Makros
|
||||||
created: 20131205160746466
|
created: 20131205160746466
|
||||||
creator: pmario
|
creator: pmario
|
||||||
modified: 20230307080132949
|
modified: 20140922124415476
|
||||||
modifier: ChrisK
|
modifier: ChrisK
|
||||||
tags: WikiText
|
tags: WikiText
|
||||||
title: Makros in WikiText
|
title: Makros in WikiText
|
||||||
|
@ -15,7 +15,7 @@ Hallo, Ich bin $name$ und lebe in $adresse$
|
||||||
Hallo, Ich bin $name$ und würde gerne mal wieder nach $adresse$ fahren:)
|
Hallo, Ich bin $name$ und würde gerne mal wieder nach $adresse$ fahren:)
|
||||||
\end
|
\end
|
||||||
|
|
||||||
!! Makros definieren
|
!! Makros Definieren
|
||||||
|
|
||||||
!!! Für die Ungeduldigen
|
!!! Für die Ungeduldigen
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Für einzeilige Makros kann die `\end` Markierung entfallen!
|
||||||
|
|
||||||
* Makros können mit dem ImportVariablesWidget importiert werden. (Für geübte Anwender)
|
* Makros können mit dem ImportVariablesWidget importiert werden. (Für geübte Anwender)
|
||||||
|
|
||||||
!! Makros verwenden
|
!! Makros Verwenden
|
||||||
|
|
||||||
```
|
```
|
||||||
<<meinErstesMakro>>
|
<<meinErstesMakro>>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
created: 20230307081757660
|
|
||||||
modified: 20230307081814992
|
|
||||||
tags: WikiText
|
|
||||||
title: Transclusion in WikiText
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
https://tiddlywiki.com/#Transclusion%20in%20WikiText
|
|
|
@ -1,9 +1,7 @@
|
||||||
{
|
{
|
||||||
"description": "Deutsche Basis Edition",
|
"description": "Deutsche Basis Edition",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/browser-sniff",
|
"tiddlywiki/browser-sniff"],
|
||||||
"tiddlywiki/internals"
|
|
||||||
],
|
|
||||||
"themes": [
|
"themes": [
|
||||||
"tiddlywiki/vanilla",
|
"tiddlywiki/vanilla",
|
||||||
"tiddlywiki/snowwhite",
|
"tiddlywiki/snowwhite",
|
||||||
|
@ -11,7 +9,8 @@
|
||||||
"tiddlywiki/seamless",
|
"tiddlywiki/seamless",
|
||||||
"tiddlywiki/centralised",
|
"tiddlywiki/centralised",
|
||||||
"tiddlywiki/tight",
|
"tiddlywiki/tight",
|
||||||
"tiddlywiki/readonly"
|
"tiddlywiki/readonly",
|
||||||
|
"tiddlywiki/internals"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"de-AT",
|
"de-AT",
|
||||||
|
|
|
@ -8,19 +8,19 @@
|
||||||
],
|
],
|
||||||
"build": {
|
"build": {
|
||||||
"index": [
|
"index": [
|
||||||
"--render","$:/core/save/all","index.html","text/plain"],
|
"--rendertiddler","$:/core/save/all","index.html","text/plain"],
|
||||||
"empty": [
|
"empty": [
|
||||||
"--render","$:/core/save/all","empty.html","text/plain",
|
"--rendertiddler","$:/core/save/all","empty.html","text/plain",
|
||||||
"--render","$:/core/save/all","empty.hta","text/plain"],
|
"--rendertiddler","$:/core/save/all","empty.hta","text/plain"],
|
||||||
"externalimages": [
|
"externalimages": [
|
||||||
"--savetiddlers","[is[image]]","images",
|
"--savetiddlers","[is[image]]","images",
|
||||||
"--setfield","[is[image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
|
"--setfield","[is[image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
|
||||||
"--setfield","[is[image]]","text","","text/plain",
|
"--setfield","[is[image]]","text","","text/plain",
|
||||||
"--render","$:/core/save/all","externalimages.html","text/plain"],
|
"--rendertiddler","$:/core/save/all","externalimages.html","text/plain"],
|
||||||
"static": [
|
"static": [
|
||||||
"--render","$:/core/templates/static.template.html","static.html","text/plain",
|
"--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain",
|
||||||
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
"--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
||||||
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
|
"--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain",
|
||||||
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
"--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
"description": "Spanish (Spain) edition",
|
"description": "Spanish (Spain) edition",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/internals"
|
|
||||||
],
|
],
|
||||||
"themes": [
|
"themes": [
|
||||||
"tiddlywiki/vanilla",
|
"tiddlywiki/vanilla",
|
||||||
|
@ -10,7 +9,8 @@
|
||||||
"tiddlywiki/seamless",
|
"tiddlywiki/seamless",
|
||||||
"tiddlywiki/centralised",
|
"tiddlywiki/centralised",
|
||||||
"tiddlywiki/tight",
|
"tiddlywiki/tight",
|
||||||
"tiddlywiki/readonly"
|
"tiddlywiki/readonly",
|
||||||
|
"tiddlywiki/internals"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"es-ES"
|
"es-ES"
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
"description": "French (France) edition",
|
"description": "French (France) edition",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/internals"
|
|
||||||
],
|
],
|
||||||
"themes": [
|
"themes": [
|
||||||
"tiddlywiki/vanilla",
|
"tiddlywiki/vanilla",
|
||||||
|
@ -10,7 +9,8 @@
|
||||||
"tiddlywiki/seamless",
|
"tiddlywiki/seamless",
|
||||||
"tiddlywiki/centralised",
|
"tiddlywiki/centralised",
|
||||||
"tiddlywiki/tight",
|
"tiddlywiki/tight",
|
||||||
"tiddlywiki/readonly"
|
"tiddlywiki/readonly",
|
||||||
|
"tiddlywiki/internals"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"fr-FR"
|
"fr-FR"
|
||||||
|
|
|
@ -11,11 +11,11 @@
|
||||||
],
|
],
|
||||||
"build": {
|
"build": {
|
||||||
"index": [
|
"index": [
|
||||||
"--render","$:/core/save/all","highlightdemo.html","text/plain"],
|
"--rendertiddler","$:/core/save/all","highlightdemo.html","text/plain"],
|
||||||
"static": [
|
"static": [
|
||||||
"--render","$:/core/templates/static.template.html","static.html","text/plain",
|
"--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain",
|
||||||
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
"--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
||||||
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
|
"--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain",
|
||||||
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
"--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,9 @@
|
||||||
],
|
],
|
||||||
"build": {
|
"build": {
|
||||||
"index": [
|
"index": [
|
||||||
|
"--savetiddlers","[tag[external-image]]","images",
|
||||||
|
"--setfield","[tag[external-image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
|
||||||
|
"--setfield","[tag[external-image]]","text","","text/plain",
|
||||||
"--rendertiddler","$:/core/save/all","index.html","text/plain"],
|
"--rendertiddler","$:/core/save/all","index.html","text/plain"],
|
||||||
"favicon": [
|
"favicon": [
|
||||||
"--savetiddler","$:/favicon.ico","favicon.ico",
|
"--savetiddler","$:/favicon.ico","favicon.ico",
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{
|
{
|
||||||
"description": "Japanese (Japan) edition",
|
"description": "Japanese (Japan) edition",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/internals"
|
|
||||||
],
|
],
|
||||||
"themes": [
|
"themes": [
|
||||||
"tiddlywiki/vanilla",
|
"tiddlywiki/vanilla",
|
||||||
|
@ -10,7 +9,8 @@
|
||||||
"tiddlywiki/seamless",
|
"tiddlywiki/seamless",
|
||||||
"tiddlywiki/centralised",
|
"tiddlywiki/centralised",
|
||||||
"tiddlywiki/tight",
|
"tiddlywiki/tight",
|
||||||
"tiddlywiki/readonly"
|
"tiddlywiki/readonly",
|
||||||
|
"tiddlywiki/internals"
|
||||||
],
|
],
|
||||||
"languages": [
|
"languages": [
|
||||||
"ja-JP"
|
"ja-JP"
|
||||||
|
|
|
@ -11,11 +11,11 @@
|
||||||
],
|
],
|
||||||
"build": {
|
"build": {
|
||||||
"index": [
|
"index": [
|
||||||
"--render","$:/core/save/all","katexdemo.html","text/plain"],
|
"--rendertiddler","$:/core/save/all","katexdemo.html","text/plain"],
|
||||||
"static": [
|
"static": [
|
||||||
"--render","$:/core/templates/static.template.html","static.html","text/plain",
|
"--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain",
|
||||||
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
"--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
||||||
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
|
"--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain",
|
||||||
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
"--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
title: $:/DefaultTiddlers
|
title: $:/DefaultTiddlers
|
||||||
|
|
||||||
[[HelloThere]]
|
[[HelloThere]]
|
||||||
$:/plugins/tiddlywiki/markdown
|
[[MarkdownExample]]
|
||||||
[[MarkdownTutorial]]
|
|
||||||
[[QuickDemo]]
|
|
||||||
[[QuickDemo Source]]
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
title: HelloThere
|
title: HelloThere
|
||||||
|
|
||||||
This is a demo of TiddlyWiki5 incorporating a plugin for parsing tiddlers written in the Markdown language. The plugin uses the [[markdown-it|https://github.com/markdown-it/markdown-it]] Markdown parser internally. The MarkdownTutorial tiddler below is written in Markdown.
|
This is a demo of TiddlyWiki5 incorporating a plugin for parsing tiddlers written in the Markdown language. The plugin uses the [[Remarkable|https://github.com/jonschlinkert/remarkable]] Markdown parser internally. The MarkdownExample tiddler below is written in Markdown.
|
||||||
|
|
||||||
! Installation
|
! Installation
|
||||||
|
|
||||||
To add the plugin to your own TiddlyWiki5, just drag this link to the browser window:
|
To add the plugin to your own TiddlyWiki5, just drag this link to the browser window:
|
||||||
|
|
||||||
[[$:/plugins/tiddlywiki/markdown]]
|
[[$:/plugins/tiddlywiki/markdown]]
|
||||||
|
|
||||||
|
{{$:/plugins/tiddlywiki/markdown/usage}}
|
|
@ -1,4 +1,4 @@
|
||||||
title: MarkdownTutorial
|
title: MarkdownExample
|
||||||
type: text/x-markdown
|
type: text/x-markdown
|
||||||
|
|
||||||
Markdown: Basics
|
Markdown: Basics
|
||||||
|
@ -8,13 +8,13 @@ Getting the Gist of Markdown's Formatting Syntax
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
This page offers a brief overview of what it's like to use Markdown.
|
This page offers a brief overview of what it's like to use Markdown.
|
||||||
The [syntax page][s] provides complete, detailed documentation for
|
The [syntax page] [s] provides complete, detailed documentation for
|
||||||
every feature, but Markdown should be very easy to pick up simply by
|
every feature, but Markdown should be very easy to pick up simply by
|
||||||
looking at a few examples of it in action. The examples on this page
|
looking at a few examples of it in action. The examples on this page
|
||||||
are written in a before/after style, showing example syntax and the
|
are written in a before/after style, showing example syntax and the
|
||||||
HTML output produced by Markdown.
|
HTML output produced by Markdown.
|
||||||
|
|
||||||
It's also helpful to simply try Markdown out; the [Dingus][d] is a
|
It's also helpful to simply try Markdown out; the [Dingus] [d] is a
|
||||||
web application that allows you type your own Markdown-formatted text
|
web application that allows you type your own Markdown-formatted text
|
||||||
and translate it to XHTML.
|
and translate it to XHTML.
|
||||||
|
|
|
@ -1,220 +0,0 @@
|
||||||
title: QuickDemo
|
|
||||||
type: text/markdown
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.tc-image-loaded {
|
|
||||||
width: 35%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
# h1 Heading
|
|
||||||
## h2 Heading
|
|
||||||
### h3 Heading
|
|
||||||
#### h4 Heading
|
|
||||||
##### h5 Heading
|
|
||||||
###### h6 Heading
|
|
||||||
|
|
||||||
|
|
||||||
## Horizontal Rules
|
|
||||||
|
|
||||||
____
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
****
|
|
||||||
|
|
||||||
|
|
||||||
## Emphasis
|
|
||||||
|
|
||||||
|
|
||||||
**This is bold text**
|
|
||||||
|
|
||||||
__This is bold text__
|
|
||||||
|
|
||||||
*This is italic text*
|
|
||||||
|
|
||||||
_This is italic text_
|
|
||||||
|
|
||||||
~~Strikethrough~~
|
|
||||||
|
|
||||||
|
|
||||||
## Blockquotes
|
|
||||||
|
|
||||||
|
|
||||||
> Blockquotes can also be nested...
|
|
||||||
>> ...by using additional greater-than signs right next to each other...
|
|
||||||
> > > ...or with spaces between arrows.
|
|
||||||
|
|
||||||
|
|
||||||
## Unordered List
|
|
||||||
|
|
||||||
|
|
||||||
+ Create a list by starting a line with `+`, `-`, or `*`
|
|
||||||
+ Sub-lists are made by indenting 2 spaces:
|
|
||||||
- Marker character change forces new list start:
|
|
||||||
* Ac tristique libero volutpat at
|
|
||||||
+ Facilisis in pretium nisl aliquet
|
|
||||||
- Nulla volutpat aliquam velit
|
|
||||||
+ Very easy!
|
|
||||||
|
|
||||||
|
|
||||||
## Ordered List
|
|
||||||
|
|
||||||
|
|
||||||
1. Lorem ipsum dolor sit amet
|
|
||||||
2. Consectetur adipiscing elit
|
|
||||||
3. Integer molestie lorem at massa
|
|
||||||
|
|
||||||
|
|
||||||
1. You can use sequential numbers...
|
|
||||||
1. ...or keep all the numbers as `1.`
|
|
||||||
|
|
||||||
Start numbering with offset:
|
|
||||||
|
|
||||||
57. foo
|
|
||||||
1. bar
|
|
||||||
|
|
||||||
|
|
||||||
## Code
|
|
||||||
|
|
||||||
|
|
||||||
Inline `code`
|
|
||||||
|
|
||||||
Indented code
|
|
||||||
|
|
||||||
// Some comments
|
|
||||||
line 1 of code
|
|
||||||
line 2 of code
|
|
||||||
line 3 of code
|
|
||||||
|
|
||||||
Block code "fences"
|
|
||||||
|
|
||||||
```
|
|
||||||
Sample text here...
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Syntax highlighting
|
|
||||||
|
|
||||||
``` js
|
|
||||||
var foo = function (bar) {
|
|
||||||
return bar++;
|
|
||||||
};
|
|
||||||
|
|
||||||
console.log(foo(5));
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## ~KaTeX
|
|
||||||
|
|
||||||
|
|
||||||
Equation $c = \pm\sqrt{a^2 + b^2}$ is typeset in inline mode.
|
|
||||||
|
|
||||||
Display style: $$c = \pm\sqrt{a^2 + b^2}$$
|
|
||||||
|
|
||||||
|
|
||||||
## Tables
|
|
||||||
|
|
||||||
|
|
||||||
| Attribute | Description |
|
|
||||||
| --------- | ----------- |
|
|
||||||
| multiple | select multiple files to download |
|
|
||||||
| param | parameter to be passed with the message |
|
|
||||||
| tooltip | optional tooltip text |
|
|
||||||
|
|
||||||
Aligning columns:
|
|
||||||
|
|
||||||
| Column A | Column B | Column C |
|
|
||||||
| :---- | :----: | ----: |
|
|
||||||
| is | is | is |
|
|
||||||
| left | nicely | right |
|
|
||||||
| aligned | centered | aligned |
|
|
||||||
|
|
||||||
|
|
||||||
## Links
|
|
||||||
|
|
||||||
|
|
||||||
[link text](http://google.com)
|
|
||||||
|
|
||||||
[link with title](http://nodeca.github.io/pica/demo/ "title text!")
|
|
||||||
|
|
||||||
link to tiddler [QuickDemo Source](#QuickDemo%20Source)
|
|
||||||
|
|
||||||
URL can contain spaces if enclosed in brackets `<>`: [QuickDemo Source](<#QuickDemo Source>)
|
|
||||||
|
|
||||||
|
|
||||||
## Images
|
|
||||||
|
|
||||||
|
|
||||||
![Minion](https://octodex.github.com/images/minion.png)
|
|
||||||
![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat")
|
|
||||||
|
|
||||||
Like links, images also have a reference style syntax
|
|
||||||
|
|
||||||
![Alt text][id]
|
|
||||||
|
|
||||||
with a link reference defined later in the document.
|
|
||||||
|
|
||||||
[id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat"
|
|
||||||
|
|
||||||
|
|
||||||
## Subscript & Superscript
|
|
||||||
|
|
||||||
|
|
||||||
- 19^th^
|
|
||||||
- H~2~O
|
|
||||||
|
|
||||||
|
|
||||||
## \<ins\>
|
|
||||||
|
|
||||||
|
|
||||||
++Inserted text++
|
|
||||||
|
|
||||||
|
|
||||||
## \<mark\>
|
|
||||||
|
|
||||||
|
|
||||||
==Marked text==
|
|
||||||
|
|
||||||
|
|
||||||
## Footnotes
|
|
||||||
|
|
||||||
|
|
||||||
Footnote 1 link[^first].
|
|
||||||
|
|
||||||
Footnote 2 link[^second].
|
|
||||||
|
|
||||||
Inline footnote^[Text of inline footnote] definition.
|
|
||||||
|
|
||||||
Duplicated footnote reference[^second].
|
|
||||||
|
|
||||||
[^first]: Footnote **can have markup**
|
|
||||||
|
|
||||||
and multiple paragraphs.
|
|
||||||
|
|
||||||
[^second]: Footnote text.
|
|
||||||
|
|
||||||
|
|
||||||
## Definition Lists
|
|
||||||
|
|
||||||
|
|
||||||
Term 1
|
|
||||||
|
|
||||||
: Definition 1
|
|
||||||
with lazy continuation.
|
|
||||||
|
|
||||||
Term 2 with *inline markup*
|
|
||||||
|
|
||||||
: Definition 2
|
|
||||||
|
|
||||||
{ some code, part of Definition 2 }
|
|
||||||
|
|
||||||
Third paragraph of definition 2.
|
|
||||||
|
|
||||||
_Compact style:_
|
|
||||||
|
|
||||||
Term 1
|
|
||||||
~ Definition 1
|
|
||||||
|
|
||||||
Term 2
|
|
||||||
~ Definition 2a
|
|
||||||
~ Definition 2b
|
|
|
@ -1,5 +0,0 @@
|
||||||
title: QuickDemo Source
|
|
||||||
|
|
||||||
<$let tiddler="QuickDemo">
|
|
||||||
<$codeblock code={{{ [<tiddler>get[text]] }}} language={{{ [<tiddler>get[type]else[text/vnd.tiddlywiki]] }}}/>
|
|
||||||
</$let>
|
|
|
@ -1,9 +1,7 @@
|
||||||
{
|
{
|
||||||
"description": "Demo of the Markdown plugin",
|
"description": "Demo of the Markdown plugin",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"tiddlywiki/markdown",
|
"tiddlywiki/markdown"
|
||||||
"tiddlywiki/highlight",
|
|
||||||
"tiddlywiki/katex"
|
|
||||||
],
|
],
|
||||||
"themes": [
|
"themes": [
|
||||||
"tiddlywiki/vanilla",
|
"tiddlywiki/vanilla",
|
||||||
|
|
5
editions/prerelease/tiddlers/$__StoryList.tid
Normal file
5
editions/prerelease/tiddlers/$__StoryList.tid
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
created: 20201222190149806
|
||||||
|
list: [[Release 5.1.23]]
|
||||||
|
modified: 20201222190149806
|
||||||
|
title: $:/StoryList
|
||||||
|
type: text/vnd.tiddlywiki
|
107
editions/prerelease/tiddlers/Release 5.2.6.tid
Normal file
107
editions/prerelease/tiddlers/Release 5.2.6.tid
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
caption: 5.2.6
|
||||||
|
created: 20221219172444961
|
||||||
|
modified: 20221219172444961
|
||||||
|
tags: ReleaseNotes
|
||||||
|
title: Release 5.2.6
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.5...master]]//
|
||||||
|
! Major Improvements
|
||||||
|
|
||||||
|
New [ext[Twitter Archivist|./editions/twitter-archivist]] plugin to import the tweets and associated media from a Twitter Archive as individual tiddlers.
|
||||||
|
|
||||||
|
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6961">> new GenesisWidget that allows the dynamic construction of another widget, where the name and attributes of the new widget can be dynamically determined, without needing to be known in advance
|
||||||
|
|
||||||
|
<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6936">> (and <<.link-badge-here "https://github.com/Jermolene/TiddlyWiki5/pull/7105">>) new operators for reading and formatting JSON data: [[jsonget Operator]], [[jsonindexes Operator]], [[jsontype Operator]], [[jsonextract Operator]] and [[format Operator]]
|
||||||
|
|
||||||
|
! Translation Improvements
|
||||||
|
|
||||||
|
Improvements to the following translations:
|
||||||
|
|
||||||
|
* Chinese
|
||||||
|
* French
|
||||||
|
* German
|
||||||
|
* Polish
|
||||||
|
* Spanish
|
||||||
|
* Japanese
|
||||||
|
|
||||||
|
Improvements to the translation features of TiddlyWiki itself:
|
||||||
|
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6882">> the [[Translators Edition|Translate TiddlyWiki into your language]] to add an option to display the original English text underneath the text area
|
||||||
|
* <<.link-badge-updated "https://github.com/Jermolene/TiddlyWiki5/pull/6933">> "delete" button text in $:/AdvancedSearch so that it is translatable
|
||||||
|
|
||||||
|
! Usability Improvements
|
||||||
|
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d62a16ee464fb9984b766b48504829a1a3eb143b">> problem with long presses on tiddler links triggering a preview on iOS/iPadOS
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6910">> consistency of button and input elements across browsers
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/d825f1c875f5e46158c9c41c8c66471138c162d1">> edit preview to use the [[View Template Body Cascade]]
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/36896c3db8c9678c0385a561996248a6f00a45ff">> opening a tiddler in a new window to use the [[View Template Body Cascade]]
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6970">> detection of infinite recursion errors in widgets and filters
|
||||||
|
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/6877">> default styles for [[styled runs|Styles and Classes in WikiText]]
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6881">> upgrade wizard to make the version number more prominent
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7042">> parsing of tiddlers containing CSV data for greater compatibility
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7076">> new page control button to summon the layout switcher
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7084">> folded tiddlers to ensure that the unfold button is always visible
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7072">> handling of [[Modals]] to optionally allow them to be dismissed by clicking on the background
|
||||||
|
|
||||||
|
! Widget Improvements
|
||||||
|
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/127f660c91020dcbb43897d954066b31af729e74">> EditTextWidget to remove the default text "Type the text for the tiddler 'foo'"
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7081">> ''focus'' attribute to SelectWidget
|
||||||
|
* <<.link-badge-removed "https://github.com/Jermolene/TiddlyWiki5/commit/1df4c29d73073788ba3859668112e8bb46171a6c">> restriction of the LetWidget being unable to create variables whose names begin with a dollar sign
|
||||||
|
|
||||||
|
! Filter improvements
|
||||||
|
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6303">> issue with availability of variables within filter runs
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7065">> issue with removing multiple items from a linked list during filter processing
|
||||||
|
|
||||||
|
! Hackability Improvements
|
||||||
|
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7004">> support for nested [[macro definitions|Macro Definitions in WikiText]]
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6976">> support for [[SystemTag: $:/tags/ClassFilters/TiddlerTemplate]] and [[SystemTag: $:/tags/ClassFilters/PageTemplate]] to assign dynamic CSS classes to both tiddler frames and the page template
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/c5d3d4c26e8fe27f272dda004aec27d6b66c4f60">> safe mode to disable wiki store indexers
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/166a1565843878083fb1eba47c73b8e67b78400d">> safe mode to prevent globally disabling parser rules
|
||||||
|
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/6735">> keyboard shortcut handling to allow to global shortcuts to override all other shortcuts
|
||||||
|
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/commit/965bd090a905f5756e79124b698c894f7f72ad5b">> [[list-links Macro]] to allow the rendered field to be overriden
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6913">> [[Table-of-Contents Macros]] to allow the default icons to be overridden
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6939">> ''data-tags-*'' and ''data-tiddler-title'' attributes to the edit preview area
|
||||||
|
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/5947">> [[timeline Macro]] to override the link template
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7043">> support for Unix epoch timestamps in [[date format strings|DateFormat]]
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7064">> the "big green download button" to use the defined palette colour
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7063">> new hidden setting [[to use horizontal tabs for the "more" sidebar tab|Hidden Setting: More Tabs Horizontal]]
|
||||||
|
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/commit/bef11fe6a25fb849dee40c4aa4337d6a30daf0b4">> the [[external JavaScript templates|Using the external JavaScript template]] to allow the URL of the external script file to be configured
|
||||||
|
|
||||||
|
! Bug Fixes
|
||||||
|
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7099">> truncated search results on small screens
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7010">> table contents overflow on small screens
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/fb34df84ed41882c1c2a6ff54f0e908b43ef95a3">> "new image" keyboard shortcut not to assign journal tags
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6987">> SelectWidget class to update if it uses a filter
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7017">> issue with wikification within the advanced search filter dropdown
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7057">> the table in $:/Import to avoid creating hidden empty rows
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7008">> advanced search keyboard shortcut not navigating correctly
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/7083">> erroneous display of drafts within the advanced search filter dropdown
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7092">> backwards compatibility of new field editor cascade introduced in v5.2.3
|
||||||
|
|
||||||
|
! Node.js Improvements
|
||||||
|
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7073">> new CommandsCommand to enable command tokens to be dynamically generated from a filter
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6947">> console logging to avoid spaces and `<empty string>` message
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7014">> problem with lazy loading deleting tiddler bodies under certain circumstances
|
||||||
|
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/344110e2890caf711ab8f3c4f4deaa7d86771231">> handling of ".mp4" file extension so that it defaults to video not audio
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6588">> test server to the plugin library edition
|
||||||
|
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7049">> [[Hidden Setting: Sync Logging]] to control logging of sync-related messages
|
||||||
|
* <<.link-badge-updated "https://github.com/Jermolene/TiddlyWiki5/pull/6944">> Jasmine plugin to require the explicit use of the `--test` command in order to cause the tests to be run
|
||||||
|
|
||||||
|
! Performance Improvements
|
||||||
|
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/53d229592df76c6dd607e40be5bea4d5e063c48e">> performance of `wiki.getTiddler()`
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/commit/81ac9874846b3ead275f67010fcfdb49f3d2f43c">> performance of variable prototype chain handling
|
||||||
|
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6056">> performance of list handling during filter processing
|
||||||
|
|
||||||
|
! 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,60 +0,0 @@
|
||||||
caption: 5.2.8
|
|
||||||
created: 20230326093239710
|
|
||||||
modified: 20230326093239710
|
|
||||||
tags: ReleaseNotes
|
|
||||||
title: Release 5.2.8
|
|
||||||
type: text/vnd.tiddlywiki
|
|
||||||
|
|
||||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.7...master]]//
|
|
||||||
|
|
||||||
! Major Improvements
|
|
||||||
|
|
||||||
! Translation Improvements
|
|
||||||
|
|
||||||
Improvements to the following translations:
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Plugin Improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Accessibility Improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Usability Improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Widget Improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Filter improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Hackability Improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Bug Fixes
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Node.js Improvements
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
! Performance 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/OfficialPluginLibrary
|
title: $:/config/OfficialPluginLibrary
|
||||||
tags: $:/tags/PluginLibrary
|
tags: $:/tags/PluginLibrary
|
||||||
url: https://tiddlywiki.com/prerelease/library/v5.2.8/index.html
|
url: https://tiddlywiki.com/prerelease/library/v5.2.5/index.html
|
||||||
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
|
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
|
||||||
|
|
||||||
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
|
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
|
||||||
|
|
|
@ -13,13 +13,13 @@
|
||||||
"listen": [
|
"listen": [
|
||||||
"--listen","root-tiddler=$:/core/save/all-external-js","use-browser-cache=yes"],
|
"--listen","root-tiddler=$:/core/save/all-external-js","use-browser-cache=yes"],
|
||||||
"index": [
|
"index": [
|
||||||
"--render","$:/core/save/offline-external-js","index.html","text/plain",
|
"--rendertiddler","$:/core/save/offline-external-js","index.html","text/plain",
|
||||||
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"],
|
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"],
|
||||||
"static": [
|
"static": [
|
||||||
"--render","$:/core/templates/static.template.html","static.html","text/plain",
|
"--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain",
|
||||||
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
"--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
||||||
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
|
"--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain",
|
||||||
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"],
|
"--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"],
|
||||||
"tiddlywikicore": [
|
"tiddlywikicore": [
|
||||||
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"]
|
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffix<version>addsuffix[.js]]","text/plain"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,11 +11,11 @@
|
||||||
],
|
],
|
||||||
"build": {
|
"build": {
|
||||||
"index": [
|
"index": [
|
||||||
"--render","$:/plugins/tiddlywiki/tiddlyweb/save/offline","index.html","text/plain"],
|
"--rendertiddler","$:/plugins/tiddlywiki/tiddlyweb/save/offline","index.html","text/plain"],
|
||||||
"static": [
|
"static": [
|
||||||
"--render","$:/core/templates/static.template.html","static.html","text/plain",
|
"--rendertiddler","$:/core/templates/static.template.html","static.html","text/plain",
|
||||||
"--render","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
"--rendertiddler","$:/core/templates/alltiddlers.template.html","alltiddlers.html","text/plain",
|
||||||
"--render","[!is[system]]","[encodeuricomponent[]addprefix[static/]addsuffix[.html]]","text/plain",
|
"--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain",
|
||||||
"--render","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
"--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"]
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,19 +0,0 @@
|
||||||
title: Filters/Base64
|
|
||||||
description: Test {encode|decode}base64 operators
|
|
||||||
type: text/vnd.tiddlywiki-multiple
|
|
||||||
tags: [[$:/tags/wiki-test-spec]]
|
|
||||||
|
|
||||||
title: Output
|
|
||||||
|
|
||||||
\whitespace trim
|
|
||||||
(<$text text={{{ [[Jeremy1234]encodebase64[]] }}}/>)
|
|
||||||
(<$text text={{{ [[]encodebase64[]] }}}/>)
|
|
||||||
(<$text text={{{ [[SmVyZW15MTIzNA==]decodebase64[]] }}}/>)
|
|
||||||
(<$text text={{{ [[]decodebase64[]] }}}/>)
|
|
||||||
+
|
|
||||||
title: ExpectedResult
|
|
||||||
|
|
||||||
<p>(SmVyZW15MTIzNA==)
|
|
||||||
()
|
|
||||||
(Jeremy1234)
|
|
||||||
()</p>
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user