mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-04-12 05:43:16 +00:00
Merge branch 'master' into feat-ai-tools
This commit is contained in:
commit
a6f7c05203
16
.github/workflows/ci.yml
vendored
16
.github/workflows/ci.yml
vendored
@ -5,17 +5,17 @@ on:
|
||||
- master
|
||||
- tiddlywiki-com
|
||||
env:
|
||||
NODE_VERSION: "18"
|
||||
NODE_VERSION: "22"
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "${{ env.NODE_VERSION }}"
|
||||
- run: "./bin/ci-test.sh"
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: playwright-report
|
||||
@ -30,8 +30,8 @@ jobs:
|
||||
TW5_BUILD_MAIN_EDITION: "./editions/prerelease"
|
||||
TW5_BUILD_OUTPUT: "./output/prerelease"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "${{ env.NODE_VERSION }}"
|
||||
- run: "./bin/ci-pre-build.sh"
|
||||
@ -62,8 +62,8 @@ jobs:
|
||||
TW5_BUILD_OUTPUT: "./output"
|
||||
TW5_BUILD_ARCHIVE: "./output"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "${{ env.NODE_VERSION }}"
|
||||
- run: "./bin/ci-pre-build.sh"
|
||||
|
@ -5,7 +5,7 @@
|
||||
# Default to the current version number for building the plugin library
|
||||
|
||||
if [ -z "$TW5_BUILD_VERSION" ]; then
|
||||
TW5_BUILD_VERSION=v5.3.6
|
||||
TW5_BUILD_VERSION=v5.3.7
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||
@ -97,7 +97,6 @@ if [ -n "$TW5_BUILD_ARCHIVE" ]; then
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
$TW5_BUILD_MAIN_EDITION \
|
||||
--verbose \
|
||||
--version \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_ARCHIVE \
|
||||
@ -106,6 +105,7 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
fi
|
||||
|
||||
# /index.html Main site
|
||||
# /external-(version).html External core version of main site
|
||||
# /favicon.ico Favicon for main site
|
||||
# /static.html Static rendering of default tiddlers
|
||||
# /alltiddlers.html Static rendering of all tiddlers
|
||||
@ -115,11 +115,10 @@ fi
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
$TW5_BUILD_MAIN_EDITION \
|
||||
--verbose \
|
||||
--version \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build favicon static index \
|
||||
--build favicon static index external-js \
|
||||
|| exit 1
|
||||
|
||||
# /empty.html Empty
|
||||
@ -128,7 +127,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /tiddlywikicore-<version>.js Core plugin javascript
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/empty \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build empty emptyexternalcore \
|
||||
|| exit 1
|
||||
@ -137,7 +135,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /test.html Test edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/test \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all test.html text/plain \
|
||||
|| exit 1
|
||||
@ -150,7 +147,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /dev/static/static.css Static stylesheet
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/dev \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/dev \
|
||||
--build index favicon static \
|
||||
@ -159,7 +155,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /tour.html tour edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/tour \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all tour.html text/plain \
|
||||
|| exit 1
|
||||
@ -167,7 +162,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /share.html Custom edition for sharing via the URL
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/share \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build share \
|
||||
@ -176,7 +170,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /upgrade.html Custom edition for performing upgrades
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/upgrade \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build upgrade \
|
||||
@ -185,7 +178,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /encrypted.html Copy of the main file encrypted with the password "password"
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
$TW5_BUILD_MAIN_EDITION \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build encrypted \
|
||||
@ -201,7 +193,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/xlsx-utils/index.html xlsx-utils edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/xlsx-utils \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \
|
||||
--build index \
|
||||
@ -210,7 +201,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/resumebuilder/index.html Resume builder edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/resumebuilder \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/resumebuilder/ \
|
||||
--build index \
|
||||
@ -219,7 +209,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/text-slicer/index.html Text slicer edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/text-slicer \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/text-slicer/ \
|
||||
--build index \
|
||||
@ -228,7 +217,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/translators/index.html Translators edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/translators \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/translators/ \
|
||||
--build index \
|
||||
@ -237,7 +225,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/introduction/index.html Introduction edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/introduction \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/introduction/ \
|
||||
--build index \
|
||||
@ -246,7 +233,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/full/index.html Full edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/full \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/full/ \
|
||||
--build index \
|
||||
@ -255,7 +241,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/tw5.com-docs/index.html tiddlywiki.com docs edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/tw5.com-docs \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \
|
||||
--build index \
|
||||
@ -264,7 +249,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /editions/twitter-archivist/index.html Twitter Archivist edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/twitter-archivist \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/twitter-archivist/ \
|
||||
--build index \
|
||||
@ -280,7 +264,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/innerwikidemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \
|
||||
@ -291,7 +274,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/dynaviewdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \
|
||||
@ -306,7 +288,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/katexdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \
|
||||
@ -317,7 +298,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/tahoelafs/empty.html Empty wiki with Tahoe-LAFS plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/tahoelafs \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/tahoelafs/index.html text/plain \
|
||||
@ -328,7 +308,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/d3/empty.html Empty wiki with D3 plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/d3demo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/d3/index.html text/plain \
|
||||
@ -339,7 +318,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/codemirror/empty.html Empty wiki with codemirror plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/codemirrordemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \
|
||||
@ -350,7 +328,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/markdown/empty.html Empty wiki with Markdown plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/markdowndemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \
|
||||
@ -361,7 +338,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/tw2parser/empty.html Empty wiki with tw2parser plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/classicparserdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \
|
||||
@ -372,7 +348,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/highlight/empty.html Empty wiki with highlight plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/highlightdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \
|
||||
@ -383,7 +358,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /plugins/tiddlywiki/geospatial/empty.html Empty wiki with geospatial plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/geospatialdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/geospatial/index.html text/plain \
|
||||
@ -411,7 +385,6 @@ rm -rf $TW5_BUILD_OUTPUT/languages/zh-Hant/static/*
|
||||
# /languages/de-AT/empty.html Empty wiki with de-AT language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/de-AT \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/de-AT \
|
||||
--build favicon empty static index \
|
||||
@ -421,7 +394,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/de-DE/empty.html Empty wiki with de-DE language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/de-DE \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/de-DE \
|
||||
--build favicon empty static index \
|
||||
@ -431,7 +403,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/es-ES/empty.html Empty wiki with es-ES language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/es-ES \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/es-ES \
|
||||
--build favicon empty static index \
|
||||
@ -441,7 +412,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/fr-FR/empty.html Empty wiki with fr-FR language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/fr-FR \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/fr-FR \
|
||||
--build favicon empty static index \
|
||||
@ -451,7 +421,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/ja-JP/empty.html Empty wiki with ja-JP language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/ja-JP \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/ja-JP \
|
||||
--build empty index \
|
||||
@ -461,7 +430,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/ko-KR/empty.html Empty wiki with ko-KR language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/ko-KR \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/ko-KR \
|
||||
--build favicon empty static index \
|
||||
@ -471,7 +439,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/zh-Hans/empty.html Empty wiki with zh-Hans language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/zh-Hans \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/zh-Hans \
|
||||
--build empty index \
|
||||
@ -481,7 +448,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
# /languages/zh-Hant/empty.html Empty wiki with zh-Hant language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/zh-Hant \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/zh-Hant \
|
||||
--build empty index \
|
||||
@ -495,7 +461,6 @@ node $TW5_BUILD_TIDDLYWIKI \
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/pluginlibrary \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/library/$TW5_BUILD_VERSION \
|
||||
--build library\
|
||||
|
30
boot/boot.js
30
boot/boot.js
@ -232,10 +232,10 @@ $tw.utils.error = function(err) {
|
||||
var link = dm("a"),
|
||||
text = JSON.stringify(tiddlers);
|
||||
if(Blob !== undefined) {
|
||||
var blob = new Blob([text], {type: "text/html"});
|
||||
var blob = new Blob([text], {type: "application/json"});
|
||||
link.setAttribute("href", URL.createObjectURL(blob));
|
||||
} else {
|
||||
link.setAttribute("href","data:text/html," + encodeURIComponent(text));
|
||||
link.setAttribute("href","data:application/json," + encodeURIComponent(text));
|
||||
}
|
||||
link.setAttribute("download","emergency-tiddlers-" + (new Date()) + ".json");
|
||||
document.body.appendChild(link);
|
||||
@ -1470,17 +1470,15 @@ $tw.Wiki = function(options) {
|
||||
// Unpack the currently registered plugins, creating shadow tiddlers for their constituent tiddlers
|
||||
this.unpackPluginTiddlers = function() {
|
||||
var self = this;
|
||||
// Sort the plugin titles by the `plugin-priority` field
|
||||
pluginTiddlers.sort(function(a,b) {
|
||||
if("plugin-priority" in a.fields && "plugin-priority" in b.fields) {
|
||||
return a.fields["plugin-priority"] - b.fields["plugin-priority"];
|
||||
} else if("plugin-priority" in a.fields) {
|
||||
// Sort the plugin titles by the `plugin-priority` field, if this field is missing, default to 1
|
||||
pluginTiddlers.sort(function(a, b) {
|
||||
var priorityA = "plugin-priority" in a.fields ? a.fields["plugin-priority"] : 1;
|
||||
var priorityB = "plugin-priority" in b.fields ? b.fields["plugin-priority"] : 1;
|
||||
if (priorityA !== priorityB) {
|
||||
return priorityA - priorityB;
|
||||
} else if (a.fields.title < b.fields.title) {
|
||||
return -1;
|
||||
} else if("plugin-priority" in b.fields) {
|
||||
return +1;
|
||||
} else if(a.fields.title < b.fields.title) {
|
||||
return -1;
|
||||
} else if(a.fields.title === b.fields.title) {
|
||||
} else if (a.fields.title === b.fields.title) {
|
||||
return 0;
|
||||
} else {
|
||||
return +1;
|
||||
@ -2465,13 +2463,15 @@ $tw.boot.initStartup = function(options) {
|
||||
$tw.utils.registerFileType("image/webp","base64",".webp",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/heic","base64",".heic",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/heif","base64",".heif",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/avif","base64",".avif",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/svg+xml","utf8",".svg",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/vnd.microsoft.icon","base64",".ico",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]});
|
||||
$tw.utils.registerFileType("application/wasm","base64",".wasm");
|
||||
$tw.utils.registerFileType("application/font-woff","base64",".woff");
|
||||
$tw.utils.registerFileType("application/x-font-ttf","base64",".woff");
|
||||
$tw.utils.registerFileType("application/font-woff2","base64",".woff2");
|
||||
$tw.utils.registerFileType("font/woff","base64",".woff");
|
||||
$tw.utils.registerFileType("font/woff2","base64",".woff2");
|
||||
$tw.utils.registerFileType("font/ttf","base64",".ttf");
|
||||
$tw.utils.registerFileType("font/otf","base64",".otf");
|
||||
$tw.utils.registerFileType("audio/ogg","base64",".ogg");
|
||||
$tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]);
|
||||
$tw.utils.registerFileType("video/ogg","base64",[".ogm",".ogv",".ogg"]);
|
||||
|
@ -5,7 +5,3 @@ TiddlyWiki incorporates code from these fine OpenSource projects:
|
||||
* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]
|
||||
* [[The Jasmine JavaScript Test Framework|https://jasmine.github.io/]]
|
||||
* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]
|
||||
|
||||
And media from these projects:
|
||||
|
||||
* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]
|
||||
|
@ -4,7 +4,7 @@ type: text/plain
|
||||
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
||||
|
||||
Copyright (c) 2004-2007, Jeremy Ruston
|
||||
Copyright (c) 2007-2024, UnaMesa Association
|
||||
Copyright (c) 2007-2025, UnaMesa Association
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
5
core/images/language.tid
Normal file
5
core/images/language.tid
Normal file
@ -0,0 +1,5 @@
|
||||
title: $:/core/images/language
|
||||
tags: $:/tags/Image
|
||||
|
||||
\parameters (size:"22pt")
|
||||
<svg width=<<size>> height=<<size>> class="tc-image-language tc-image-button" viewBox="0 0 92 92"><path d="M0 0h2480.32v3507.87H0z" style="fill:none" transform="scale(.03696 .02613)"/><path d="M71.508 62.298c-1.243 15.83-16.758 28.344-35.714 28.344-5.713 0-11.113-1.136-15.905-3.158-2.977 2.498-8.618 4.183-15.088 4.183-.929 0-1.84-.034-2.73-.102 4.499-1.5 7.989-4.886 9.298-9.099C4.373 76.918 0 69.016 0 60.246 0 49.773 6.237 40.537 15.729 35.07c1.235 7.764 5.492 14.713 11.724 19.953l-7.269 18.453c-.393.976-.676 1.737-.847 2.285a5.326 5.326 0 0 0-.256 1.591c0 .89.368 1.686 1.103 2.388.736.702 1.583 1.052 2.542 1.052 1.13 0 1.942-.33 2.438-.988.497-.659 1.096-1.93 1.797-3.812l1.797-4.826h15.3l1.797 4.723c.239.582.526 1.254.86 2.015.333.762.646 1.327.936 1.695.291.368.65.659 1.078.873.428.213.942.32 1.54.32a3.586 3.586 0 0 0 2.632-1.09c.727-.728 1.09-1.528 1.09-2.4 0-.84-.384-2.183-1.154-4.031l-3.545-8.755c2.142.3 4.34.455 6.58.455 5.541 0 10.824-.951 15.636-2.674Zm-30.563.247 1.059 2.898H30.76l2.32-6.467a43.152 43.152 0 0 0 7.865 3.569Z"/><path d="M71.778 57.635c-4.793 2.023-10.191 3.157-15.907 3.157-19.767 0-35.793-13.61-35.793-30.396S36.104.001 55.87.001c19.772 0 35.797 13.61 35.797 30.395 0 8.77-4.373 16.674-11.371 22.221 1.309 4.211 4.8 7.6 9.299 9.1-.89.067-1.802.1-2.73.1-6.47 0-12.11-1.686-15.088-4.182Zm-15.59-15.887a44.237 44.237 0 0 0 3.3 2.496c4.284 2.942 9.06 5.381 14.33 7.315l2.334-3.517c-5.134-1.871-9.696-4.125-13.69-6.763a42.558 42.558 0 0 1-3.37-2.483c4.247-4.806 7.374-10.43 9.38-16.869h6.698V17.78h-16.7a47.226 47.226 0 0 0-1.528-2.959 52.943 52.943 0 0 0-2.885-4.562l-4.218 1.554a36.467 36.467 0 0 1 2.971 3.983c.427.661.833 1.323 1.217 1.984H36.394v4.148h6.77a36.878 36.878 0 0 0 5.422 11.56 42.918 42.918 0 0 0 4.591 5.497c-4.687 4.017-10.548 6.932-17.582 8.744l2.247 3.709c7.746-2.44 13.861-5.67 18.347-9.689Zm-9.047-19.82h16.991c-1.86 5.668-4.528 10.402-8 14.204a42.526 42.526 0 0 1-4.247-4.922c-2.126-2.883-3.71-5.977-4.744-9.283Z"/></svg>
|
@ -175,6 +175,8 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Update addres
|
||||
Settings/PerformanceInstrumentation/Caption: Performance Instrumentation
|
||||
Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect
|
||||
Settings/PerformanceInstrumentation/Description: Enable performance instrumentation
|
||||
Settings/RecentLimit/Caption: Recent Tab Limit
|
||||
Settings/RecentLimit/Hint: Maximum number of tiddlers to be displayed under the sidebar "Recent" tab
|
||||
Settings/ToolbarButtonStyle/Caption: Toolbar Button Style
|
||||
Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons:
|
||||
Settings/ToolbarButtonStyle/Styles/Borderless: Borderless
|
||||
@ -204,10 +206,10 @@ Settings/MissingLinks/Hint: Choose whether to link to tiddlers that do not exist
|
||||
Settings/MissingLinks/Description: Enable links to missing tiddlers
|
||||
SocialCard/Caption: Social Media Card
|
||||
SocialCard/Domain/Prompt: Domain name to display for the link (for example, ''tiddlywiki.com'')
|
||||
SocialCard/Hint: This information is used by social and messaging services to display a preview card for links to this TiddlyWiki when hosted online
|
||||
SocialCard/PreviewUrl/Prompt: Full URL to preview image for this TiddlyWiki
|
||||
SocialCard/Hint: This information is used by social and messaging services to display a preview card for links to this ~TiddlyWiki when hosted online
|
||||
SocialCard/PreviewUrl/Prompt: Full URL to preview image for this ~TiddlyWiki
|
||||
SocialCard/PreviewUrl/Preview: Preview image:
|
||||
SocialCard/Url/Prompt: Full URL of this TiddlyWiki
|
||||
SocialCard/Url/Prompt: Full URL of this ~TiddlyWiki
|
||||
StoryTiddler/Caption: Story Tiddler
|
||||
StoryTiddler/Hint: This rule cascade is used to dynamically choose the template for displaying a tiddler in the story river.
|
||||
StoryView/Caption: Story View
|
||||
|
@ -1,13 +0,0 @@
|
||||
title: $:/languages/en-GB/icon
|
||||
type: image/svg+xml
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30" width="1200" height="600">
|
||||
<clipPath id="t">
|
||||
<path d="M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"/>
|
||||
</clipPath>
|
||||
<path d="M0,0 v30 h60 v-30 z" fill="#00247d"/>
|
||||
<path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/>
|
||||
<path d="M0,0 L60,30 M60,0 L0,30" clip-path="url(#t)" stroke="#cf142b" stroke-width="4"/>
|
||||
<path d="M30,0 v30 M0,15 h60" stroke="#fff" stroke-width="10"/>
|
||||
<path d="M30,0 v30 M0,15 h60" stroke="#cf142b" stroke-width="6"/>
|
||||
</svg>
|
@ -24,7 +24,7 @@ var Command = function(params,commander) {
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
// Get the build targets defined in the wiki
|
||||
var buildTargets = $tw.boot.wikiInfo.build;
|
||||
var buildTargets = $tw.boot.wikiInfo && $tw.boot.wikiInfo.build;
|
||||
if(!buildTargets) {
|
||||
return "No build targets defined";
|
||||
}
|
||||
|
@ -17,19 +17,24 @@ Export our filter function
|
||||
*/
|
||||
exports.function = function(source,operator,options) {
|
||||
var functionName = operator.operands[0],
|
||||
params = [];
|
||||
params = [],
|
||||
results;
|
||||
$tw.utils.each(operator.operands.slice(1),function(param) {
|
||||
params.push({value: param});
|
||||
});
|
||||
// console.log(`Calling ${functionName} with params ${JSON.stringify(params)}`);
|
||||
var variableInfo = options.widget && options.widget.getVariableInfo && options.widget.getVariableInfo(functionName,{params: params, source: source});
|
||||
if(variableInfo && variableInfo.srcVariable && variableInfo.srcVariable.isFunctionDefinition) {
|
||||
return variableInfo.resultList ? variableInfo.resultList : [variableInfo.text];
|
||||
results = variableInfo.resultList ? variableInfo.resultList : [variableInfo.text];
|
||||
}
|
||||
// Return the input list if the function wasn't found
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push(title);
|
||||
});
|
||||
if(!results) {
|
||||
results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push(title);
|
||||
});
|
||||
}
|
||||
// console.log(`function ${functionName} with params ${JSON.stringify(params)} results: ${JSON.stringify(results)}`);
|
||||
return results;
|
||||
};
|
||||
|
||||
|
@ -31,7 +31,7 @@ exports.run = function(baseName,separator,template,startCount) {
|
||||
}
|
||||
// $tw.wiki.generateNewTitle = function(baseTitle,options)
|
||||
// options.prefix must be a string!
|
||||
return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount});
|
||||
return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount}).trim();
|
||||
};
|
||||
|
||||
})();
|
||||
|
@ -40,6 +40,7 @@ exports["image/gif"] = ImageParser;
|
||||
exports["image/webp"] = ImageParser;
|
||||
exports["image/heic"] = ImageParser;
|
||||
exports["image/heif"] = ImageParser;
|
||||
exports["image/avif"] = ImageParser;
|
||||
exports["image/x-icon"] = ImageParser;
|
||||
exports["image/vnd.microsoft.icon"] = ImageParser;
|
||||
|
||||
|
@ -46,8 +46,10 @@ function SaverHandler(options) {
|
||||
// Filter the changes so that we only count changes to tiddlers that we care about
|
||||
var filteredChanges = self.filterFn.call(self.wiki,function(iterator) {
|
||||
$tw.utils.each(changes,function(change,title) {
|
||||
var tiddler = self.wiki.getTiddler(title);
|
||||
iterator(tiddler,title);
|
||||
if(change.normal) {
|
||||
var tiddler = self.wiki.getTiddler(title);
|
||||
iterator(tiddler,title);
|
||||
}
|
||||
});
|
||||
});
|
||||
// Adjust the number of changes
|
||||
@ -183,7 +185,7 @@ SaverHandler.prototype.saveWiki = function(options) {
|
||||
// Call the highest priority saver that supports this method
|
||||
for(var t=this.savers.length-1; t>=0; t--) {
|
||||
var saver = this.savers[t];
|
||||
if(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {
|
||||
if(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename, type: variables.type}})) {
|
||||
this.logger.log("Saving wiki with method",method,"through saver",saver.info.name);
|
||||
return true;
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ DownloadSaver.prototype.save = function(text,method,callback,options) {
|
||||
options = options || {};
|
||||
// Get the current filename
|
||||
var filename = options.variables.filename;
|
||||
var type = options.variables.type;
|
||||
if(!filename) {
|
||||
var p = document.location.pathname.lastIndexOf("/");
|
||||
if(p !== -1) {
|
||||
@ -32,13 +33,16 @@ DownloadSaver.prototype.save = function(text,method,callback,options) {
|
||||
if(!filename) {
|
||||
filename = "tiddlywiki.html";
|
||||
}
|
||||
if(!type) {
|
||||
type = "text/html";
|
||||
}
|
||||
// Set up the link
|
||||
var link = document.createElement("a");
|
||||
if(Blob !== undefined) {
|
||||
var blob = new Blob([text], {type: "text/html"});
|
||||
var blob = new Blob([text], {type: type});
|
||||
link.setAttribute("href", URL.createObjectURL(blob));
|
||||
} else {
|
||||
link.setAttribute("href","data:text/html," + encodeURIComponent(text));
|
||||
link.setAttribute("href","data:" + type + "," + encodeURIComponent(text));
|
||||
}
|
||||
link.setAttribute("download",filename);
|
||||
document.body.appendChild(link);
|
||||
|
@ -25,7 +25,7 @@ exports.handler = function(request,response,state) {
|
||||
response.end();
|
||||
} else {
|
||||
// Redirect to the root wiki if login worked
|
||||
var location = ($tw.syncadaptor && $tw.syncadaptor.host)? $tw.syncadaptor.host: "/";
|
||||
var location = ($tw.syncadaptor && $tw.syncadaptor.host)? $tw.syncadaptor.host: `${state.pathPrefix}/`;
|
||||
response.writeHead(302,{
|
||||
Location: location
|
||||
});
|
||||
|
@ -75,7 +75,7 @@ exports.startup = function() {
|
||||
$tw.wiki.unpackPluginTiddlers();
|
||||
// Queue change events for the changed shadow tiddlers
|
||||
$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {
|
||||
$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);
|
||||
$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title], true);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -77,8 +77,9 @@ exports.startup = function() {
|
||||
$tw.rootWidget.addEventListener("tm-copy-to-clipboard",function(event) {
|
||||
$tw.utils.copyToClipboard(event.param,{
|
||||
successNotification: event.paramObject && event.paramObject.successNotification,
|
||||
failureNotification: event.paramObject && event.paramObject.failureNotification
|
||||
});
|
||||
failureNotification: event.paramObject && event.paramObject.failureNotification,
|
||||
plainText: event.paramObject && event.paramObject.plainText
|
||||
},event.paramObject && event.paramObject.type);
|
||||
});
|
||||
// Install the tm-focus-selector message
|
||||
$tw.rootWidget.addEventListener("tm-focus-selector",function(event) {
|
||||
|
@ -88,8 +88,10 @@ exports.startup = function() {
|
||||
if($tw.browser) {
|
||||
var pluginTiddler = $tw.wiki.getTiddler(plugins[0]);
|
||||
if(pluginTiddler) {
|
||||
document.documentElement.setAttribute("lang",pluginTiddler.getFieldString("name"));
|
||||
document.documentElement.setAttribute("dir",pluginTiddler.getFieldString("text-direction") || "auto");
|
||||
} else {
|
||||
document.documentElement.setAttribute("lang","en-GB");
|
||||
document.documentElement.removeAttribute("dir");
|
||||
}
|
||||
}
|
||||
|
@ -40,10 +40,10 @@ exports.getFieldString = function(field,defaultValue) {
|
||||
};
|
||||
|
||||
/*
|
||||
Get the value of a field as a list
|
||||
Get the value of a field as an array / list
|
||||
*/
|
||||
exports.getFieldList = function(field) {
|
||||
var value = this.fields[field];
|
||||
var value = this.getFieldString(field,null);
|
||||
// Check for a missing field
|
||||
if(value === undefined || value === null) {
|
||||
return [];
|
||||
|
@ -268,9 +268,10 @@ exports.copyStyles = function(srcDomNode,dstDomNode) {
|
||||
/*
|
||||
Copy plain text to the clipboard on browsers that support it
|
||||
*/
|
||||
exports.copyToClipboard = function(text,options) {
|
||||
options = options || {};
|
||||
text = text || "";
|
||||
exports.copyToClipboard = function(text,options,type) {
|
||||
var text = text || "";
|
||||
var options = options || {};
|
||||
var type = type || "text/plain";
|
||||
var textArea = document.createElement("textarea");
|
||||
textArea.style.position = "fixed";
|
||||
textArea.style.top = 0;
|
||||
@ -283,10 +284,16 @@ exports.copyToClipboard = function(text,options) {
|
||||
textArea.style.outline = "none";
|
||||
textArea.style.boxShadow = "none";
|
||||
textArea.style.background = "transparent";
|
||||
textArea.value = text;
|
||||
document.body.appendChild(textArea);
|
||||
textArea.select();
|
||||
textArea.setSelectionRange(0,text.length);
|
||||
textArea.addEventListener("copy",function(event) {
|
||||
event.preventDefault();
|
||||
if (options.plainText) {
|
||||
event.clipboardData.setData("text/plain",options.plainText);
|
||||
}
|
||||
event.clipboardData.setData(type,text);
|
||||
});
|
||||
var succeeded = false;
|
||||
try {
|
||||
succeeded = document.execCommand("copy");
|
||||
|
@ -216,11 +216,11 @@ HttpClientRequest.prototype.send = function(callback) {
|
||||
if(lengthComputable) {
|
||||
setBinding(self.bindProgress,"" + Math.floor((loaded/total) * 100))
|
||||
}
|
||||
self.wiki.invokeActionString(self.progressActions,undefined,{
|
||||
self.wiki.invokeActionString(self.progressActions,undefined,$tw.utils.extend({},self.variables,{
|
||||
lengthComputable: lengthComputable ? "yes" : "no",
|
||||
loaded: loaded,
|
||||
total: total
|
||||
},{parentWidget: $tw.rootWidget});
|
||||
}),{parentWidget: $tw.rootWidget});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -56,36 +56,64 @@ Object.defineProperty(TW_TextNode.prototype, "formattedTextContent", {
|
||||
}
|
||||
});
|
||||
|
||||
var TW_Element = function(tag,namespace) {
|
||||
var TW_Style = function(el) {
|
||||
// Define the internal style object
|
||||
var styleObject = {
|
||||
// Method to get the entire style object
|
||||
get: function() {
|
||||
return el._style;
|
||||
},
|
||||
// Method to set styles using a string (e.g. "color:red; background-color:blue;")
|
||||
set: function(str) {
|
||||
var self = this;
|
||||
str = str || "";
|
||||
$tw.utils.each(str.split(";"),function(declaration) {
|
||||
var parts = declaration.split(":"),
|
||||
name = $tw.utils.trim(parts[0]),
|
||||
value = $tw.utils.trim(parts[1]);
|
||||
if(name && value) {
|
||||
el._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
|
||||
}
|
||||
});
|
||||
},
|
||||
// Method to set a specific property without transforming the property name, such as a custom property
|
||||
setProperty: function(name, value) {
|
||||
el._style[name] = value;
|
||||
}
|
||||
};
|
||||
|
||||
// Return a Proxy to handle direct access to individual style properties
|
||||
return new Proxy(styleObject, {
|
||||
get: function(target, property) {
|
||||
// If the property exists on styleObject, return it (get, set, setProperty methods)
|
||||
if (property in target) {
|
||||
return target[property];
|
||||
}
|
||||
// Otherwise, return the corresponding property from _style
|
||||
return el._style[$tw.utils.convertStyleNameToPropertyName(property)] || "";
|
||||
},
|
||||
set: function(target, property, value) {
|
||||
// Set the property in _style
|
||||
el._style[$tw.utils.convertStyleNameToPropertyName(property)] = value;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var TW_Element = function(tag, namespace) {
|
||||
bumpSequenceNumber(this);
|
||||
this.isTiddlyWikiFakeDom = true;
|
||||
this.tag = tag;
|
||||
this.attributes = {};
|
||||
this.isRaw = false;
|
||||
this.children = [];
|
||||
this._style = {};
|
||||
this._style = {}; // Internal style object
|
||||
this.style = new TW_Style(this); // Proxy for style management
|
||||
this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml";
|
||||
};
|
||||
|
||||
Object.setPrototypeOf(TW_Element.prototype,TW_Node.prototype);
|
||||
|
||||
Object.defineProperty(TW_Element.prototype, "style", {
|
||||
get: function() {
|
||||
return this._style;
|
||||
},
|
||||
set: function(str) {
|
||||
var self = this;
|
||||
str = str || "";
|
||||
$tw.utils.each(str.split(";"),function(declaration) {
|
||||
var parts = declaration.split(":"),
|
||||
name = $tw.utils.trim(parts[0]),
|
||||
value = $tw.utils.trim(parts[1]);
|
||||
if(name && value) {
|
||||
self._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
Object.setPrototypeOf(TW_Element.prototype,TW_Node.prototype);
|
||||
|
||||
Object.defineProperty(TW_Element.prototype, "nodeType", {
|
||||
get: function() {
|
||||
@ -105,7 +133,7 @@ TW_Element.prototype.setAttribute = function(name,value) {
|
||||
throw "Cannot setAttribute on a raw TW_Element";
|
||||
}
|
||||
if(name === "style") {
|
||||
this.style = value;
|
||||
this.style.set(value);
|
||||
} else {
|
||||
this.attributes[name] = value + "";
|
||||
}
|
||||
|
@ -42,6 +42,9 @@ BrowseWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.tooltip) {
|
||||
domNode.setAttribute("title",this.tooltip);
|
||||
}
|
||||
if(this.tabIndex) {
|
||||
domNode.setAttribute("tabindex", this.tabIndex);
|
||||
}
|
||||
// Nw.js supports "nwsaveas" to force a "save as" dialogue that allows a new or existing file to be selected
|
||||
if(this.nwsaveas) {
|
||||
domNode.setAttribute("nwsaveas",this.nwsaveas);
|
||||
@ -56,6 +59,9 @@ BrowseWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.nwdirectory) {
|
||||
domNode.setAttribute("nwdirectory",this.nwdirectory);
|
||||
}
|
||||
if(this.isDisabled === "yes") {
|
||||
domNode.setAttribute("disabled", true);
|
||||
}
|
||||
// Add a click event handler
|
||||
domNode.addEventListener("change",function (event) {
|
||||
if(self.message) {
|
||||
@ -94,6 +100,8 @@ BrowseWidget.prototype.execute = function() {
|
||||
this.accept = this.getAttribute("accept");
|
||||
this.webkitdirectory = this.getAttribute("webkitdirectory");
|
||||
this.nwdirectory = this.getAttribute("nwdirectory");
|
||||
this.tabIndex = this.getAttribute("tabindex");
|
||||
this.isDisabled = this.getAttribute("disabled", "no");
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -47,6 +47,9 @@ CheckboxWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(isChecked === undefined && this.checkboxIndeterminate === "yes") {
|
||||
this.inputDomNode.indeterminate = true;
|
||||
}
|
||||
if(this.tabIndex) {
|
||||
this.inputDomNode.setAttribute("tabindex", this.tabIndex);
|
||||
}
|
||||
if(this.isDisabled === "yes") {
|
||||
this.inputDomNode.setAttribute("disabled",true);
|
||||
}
|
||||
@ -305,6 +308,7 @@ CheckboxWidget.prototype.execute = function() {
|
||||
this.checkboxClass = this.getAttribute("class","");
|
||||
this.checkboxInvertTag = this.getAttribute("invertTag","");
|
||||
this.isDisabled = this.getAttribute("disabled","no");
|
||||
this.tabIndex = this.getAttribute();
|
||||
// Make the child widgets
|
||||
this.makeChildWidgets();
|
||||
};
|
||||
@ -314,7 +318,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
*/
|
||||
CheckboxWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.listField || changedAttributes.listIndex || changedAttributes.filter || changedAttributes.checked || changedAttributes.unchecked || changedAttributes["default"] || changedAttributes.indeterminate || changedAttributes["class"] || changedAttributes.disabled) {
|
||||
if(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.listField || changedAttributes.listIndex || changedAttributes.filter || changedAttributes.checked || changedAttributes.unchecked || changedAttributes["default"] || changedAttributes.indeterminate || changedAttributes["class"] || changedAttributes.disabled || changedAttributes.tabindex) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
|
@ -125,11 +125,23 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
|
||||
// Remove highlighting
|
||||
$tw.utils.removeClass(this.domNodes[0],"tc-dragover");
|
||||
// Try to import the various data types we understand
|
||||
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
|
||||
fieldsArray.forEach(function(fields) {
|
||||
self.performActions(fields.title || fields.text,event);
|
||||
if(this.droppableActions) {
|
||||
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
|
||||
fieldsArray.forEach(function(fields) {
|
||||
self.performActions(fields.title || fields.text,event);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
// Send a TitleList to performListActions
|
||||
if(this.droppableListActions) {
|
||||
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
|
||||
var titleList = [];
|
||||
fieldsArray.forEach(function(fields) {
|
||||
titleList.push(fields.title || fields.text);
|
||||
});
|
||||
self.performListActions($tw.utils.stringifyList(titleList),event);
|
||||
});
|
||||
}
|
||||
// Tell the browser that we handled the drop
|
||||
event.preventDefault();
|
||||
// Stop the drop ripple up to any parent handlers
|
||||
@ -137,6 +149,13 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
|
||||
return false;
|
||||
};
|
||||
|
||||
DroppableWidget.prototype.performListActions = function(titleList,event) {
|
||||
if(this.droppableListActions) {
|
||||
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
|
||||
this.invokeActionString(this.droppableListActions,this,event,{actionTiddlerList: titleList, modifier: modifierKey});
|
||||
}
|
||||
};
|
||||
|
||||
DroppableWidget.prototype.performActions = function(title,event) {
|
||||
if(this.droppableActions) {
|
||||
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
|
||||
@ -149,6 +168,7 @@ Compute the internal state of the widget
|
||||
*/
|
||||
DroppableWidget.prototype.execute = function() {
|
||||
this.droppableActions = this.getAttribute("actions");
|
||||
this.droppableListActions = this.getAttribute("listActions");
|
||||
this.droppableEffect = this.getAttribute("effect","copy");
|
||||
this.droppableTag = this.getAttribute("tag");
|
||||
this.droppableEnable = (this.getAttribute("enable") || "yes") === "yes";
|
||||
@ -168,7 +188,8 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
*/
|
||||
DroppableWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {
|
||||
if(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass ||
|
||||
changedAttributes.actions|| changedAttributes.listActions || changedAttributes.effect) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
|
@ -48,6 +48,9 @@ EditShortcutWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.shortcutAriaLabel) {
|
||||
this.inputNode.setAttribute("aria-label",this.shortcutAriaLabel);
|
||||
}
|
||||
if(this.isDisabled === "yes") {
|
||||
this.inputNode.setAttribute("disabled", true);
|
||||
}
|
||||
// Assign the current shortcut
|
||||
this.updateInputNode();
|
||||
// Add event handlers
|
||||
@ -77,6 +80,7 @@ EditShortcutWidget.prototype.execute = function() {
|
||||
this.shortcutTooltip = this.getAttribute("tooltip");
|
||||
this.shortcutAriaLabel = this.getAttribute("aria-label");
|
||||
this.shortcutFocus = this.getAttribute("focus");
|
||||
this.isDisabled = this.getAttribute("disabled", "no");
|
||||
};
|
||||
|
||||
/*
|
||||
@ -138,7 +142,7 @@ Selectively refreshes the widget if needed. Returns true if the widget needed re
|
||||
*/
|
||||
EditShortcutWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes["aria-label"] || changedAttributes.focus) {
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes["aria-label"] || changedAttributes.focus || changedAttributes.disabled) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else if(changedTiddlers[this.shortcutTiddler]) {
|
||||
|
@ -43,15 +43,6 @@ EditWidget.prototype.execute = function() {
|
||||
// Get our parameters
|
||||
this.editTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler"));
|
||||
this.editField = this.getAttribute("field","text");
|
||||
this.editIndex = this.getAttribute("index");
|
||||
this.editClass = this.getAttribute("class");
|
||||
this.editPlaceholder = this.getAttribute("placeholder");
|
||||
this.editTabIndex = this.getAttribute("tabindex");
|
||||
this.editFocus = this.getAttribute("focus","");
|
||||
this.editCancelPopups = this.getAttribute("cancelPopups","");
|
||||
this.editInputActions = this.getAttribute("inputActions");
|
||||
this.editRefreshTitle = this.getAttribute("refreshTitle");
|
||||
this.editAutoComplete = this.getAttribute("autocomplete");
|
||||
// Choose the appropriate edit widget
|
||||
this.editorType = this.getEditorType();
|
||||
// Make the child widgets
|
||||
@ -89,8 +80,8 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
*/
|
||||
EditWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
// Refresh if an attribute has changed, or the type associated with the target tiddler has changed
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (this.getEditorType() !== this.editorType)) {
|
||||
// Refresh if the editor type has changed
|
||||
if(changedAttributes.tiddler || changedAttributes.field || (this.getEditorType() !== this.editorType)) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
|
@ -24,6 +24,10 @@ Inherit from the base widget class
|
||||
*/
|
||||
FillWidget.prototype = new Widget();
|
||||
|
||||
FillWidget.prototype.execute = function() {
|
||||
// Do nothing. Make no child widgets. $Fill widgets should be invisible when naturally encountered. Instead, their parseTreeNodes are made available to $slot widgets that want it.
|
||||
};
|
||||
|
||||
exports.fill = FillWidget;
|
||||
|
||||
})();
|
||||
|
@ -23,15 +23,21 @@ Inherit from the base widget class
|
||||
*/
|
||||
GenesisWidget.prototype = new Widget();
|
||||
|
||||
GenesisWidget.prototype.computeAttributes = function(options) {
|
||||
options = options || Object.create(null);
|
||||
options.filterFn = function(name) {
|
||||
// Only compute our own attributes which start with a single dollar
|
||||
return name.charAt(0) === "$" && name.charAt(1) !== "$";
|
||||
}
|
||||
return Widget.prototype.computeAttributes.call(this,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Render this widget into the DOM
|
||||
*/
|
||||
GenesisWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.parentDomNode = parent;
|
||||
this.computeAttributes({filterFn: function(name) {
|
||||
// Only compute our own attributes which start with a single dollar
|
||||
return name.charAt(0) === "$" && name.charAt(1) !== "$";
|
||||
}});
|
||||
this.computeAttributes();
|
||||
this.execute();
|
||||
this.renderChildren(parent,nextSibling);
|
||||
};
|
||||
@ -65,6 +71,16 @@ GenesisWidget.prototype.execute = function() {
|
||||
children: this.parseTreeNode.children || [],
|
||||
isNotRemappable: !this.genesisRemappable
|
||||
}];
|
||||
// Apply attributes in $names/$values
|
||||
this.attributeNames = [];
|
||||
this.attributeValues = [];
|
||||
if(this.genesisNames && this.genesisValues) {
|
||||
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
|
||||
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
|
||||
$tw.utils.each(this.attributeNames,function(varname,index) {
|
||||
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
|
||||
});
|
||||
}
|
||||
// Apply explicit attributes
|
||||
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
|
||||
var name = attribute.name;
|
||||
@ -79,16 +95,6 @@ GenesisWidget.prototype.execute = function() {
|
||||
}
|
||||
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],$tw.utils.extend({},attribute,{name: name}));
|
||||
});
|
||||
// Apply attributes in $names/$values
|
||||
this.attributeNames = [];
|
||||
this.attributeValues = [];
|
||||
if(this.genesisNames && this.genesisValues) {
|
||||
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
|
||||
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
|
||||
$tw.utils.each(this.attributeNames,function(varname,index) {
|
||||
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
|
||||
});
|
||||
}
|
||||
// Construct the child widgets
|
||||
this.makeChildWidgets(parseTreeNodes);
|
||||
};
|
||||
|
@ -277,6 +277,8 @@ NavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {
|
||||
}
|
||||
// Get the current value of the tiddler we're editing
|
||||
var tiddler = this.wiki.getTiddler(targetTitle);
|
||||
var defaultType = this.wiki.getTiddlerText("$:/config/DefaultMissingType", "").trim();
|
||||
var defaultFields = { type: defaultType };
|
||||
// Save the initial value of the draft tiddler
|
||||
draftTitle = this.generateDraftTitle(targetTitle);
|
||||
var draftTiddler = new $tw.Tiddler({
|
||||
@ -288,7 +290,8 @@ NavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {
|
||||
"draft.title": targetTitle,
|
||||
"draft.of": targetTitle
|
||||
},
|
||||
this.wiki.getModificationFields()
|
||||
this.wiki.getModificationFields(),
|
||||
tiddler === null || tiddler === undefined ? defaultFields : {}
|
||||
);
|
||||
this.wiki.addTiddler(draftTiddler);
|
||||
return draftTiddler;
|
||||
|
@ -47,6 +47,9 @@ RadioWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(isChecked) {
|
||||
this.inputDomNode.checked = true;
|
||||
}
|
||||
if(this.tabIndex) {
|
||||
this.inputDomNode.setAttribute("tabindex", this.tabIndex);
|
||||
}
|
||||
if(this.isDisabled === "yes") {
|
||||
this.inputDomNode.setAttribute("disabled",true);
|
||||
}
|
||||
@ -111,6 +114,7 @@ RadioWidget.prototype.execute = function() {
|
||||
this.radioClass = this.getAttribute("class","");
|
||||
this.radioDefault = this.getAttribute("default");
|
||||
this.isDisabled = this.getAttribute("disabled","no");
|
||||
this.tabIndex = this.getAttribute("tabindex");
|
||||
this.radioActions = this.getAttribute("actions","");
|
||||
// Make the child widgets
|
||||
this.makeChildWidgets();
|
||||
|
@ -46,6 +46,9 @@ RangeWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.increment){
|
||||
this.inputDomNode.setAttribute("step", this.increment);
|
||||
}
|
||||
if(this.tabIndex) {
|
||||
this.inputDomNode.setAttribute("tabindex", this.tabIndex);
|
||||
}
|
||||
if(this.isDisabled === "yes") {
|
||||
this.inputDomNode.setAttribute("disabled",true);
|
||||
}
|
||||
@ -164,6 +167,7 @@ RangeWidget.prototype.execute = function() {
|
||||
this.defaultValue = this.getAttribute("default","");
|
||||
this.elementClass = this.getAttribute("class","");
|
||||
this.isDisabled = this.getAttribute("disabled","no");
|
||||
this.tabIndex = this.getAttribute("tabindex");
|
||||
// Actions since 5.1.23
|
||||
// Next 2 only fire once!
|
||||
this.actionsMouseDown = this.getAttribute("actionsStart","");
|
||||
|
@ -53,6 +53,9 @@ SelectWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.selectMultiple) {
|
||||
domNode.setAttribute("multiple","multiple");
|
||||
}
|
||||
if(this.isDisabled === "yes") {
|
||||
domNode.setAttribute("disabled", true);
|
||||
}
|
||||
if(this.selectSize) {
|
||||
domNode.setAttribute("size",this.selectSize);
|
||||
}
|
||||
@ -172,6 +175,7 @@ SelectWidget.prototype.execute = function() {
|
||||
this.selectTabindex = this.getAttribute("tabindex");
|
||||
this.selectTooltip = this.getAttribute("tooltip");
|
||||
this.selectFocus = this.getAttribute("focus");
|
||||
this.isDisabled = this.getAttribute("disabled","no");
|
||||
// Make the child widgets
|
||||
this.makeChildWidgets();
|
||||
};
|
||||
@ -182,7 +186,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
SelectWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
// If we're using a different tiddler/field/index then completely refresh ourselves
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tooltip || changedAttributes.tabindex) {
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tooltip || changedAttributes.tabindex || changedAttributes.disabled) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
|
@ -33,6 +33,7 @@ TestCaseWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.execute();
|
||||
// Create container DOM node
|
||||
var domNode = this.document.createElement("div");
|
||||
domNode.setAttribute("class", "tc-test-case " + this.testcaseClass);
|
||||
this.domNodes.push(domNode);
|
||||
parent.insertBefore(domNode,nextSibling);
|
||||
// Render the children into a hidden DOM node
|
||||
@ -145,6 +146,7 @@ TestCaseWidget.prototype.execute = function() {
|
||||
this.testcaseTestActions = this.getAttribute("testActions");
|
||||
this.testcaseTestExpectedResult = this.getAttribute("testExpectedResult");
|
||||
this.testcaseHideIfPass = this.getAttribute("testHideIfPass");
|
||||
this.testcaseClass = this.getAttribute("class","");
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -101,6 +101,7 @@ TranscludeWidget.prototype.execute = function() {
|
||||
}
|
||||
this.sourceText = target.text;
|
||||
this.parserType = target.type;
|
||||
this._canonical_uri = target._canonical_uri;
|
||||
// Set the legacy transclusion context variables only if we're not transcluding a variable
|
||||
if(!this.transcludeVariable) {
|
||||
var recursionMarker = this.makeRecursionMarker();
|
||||
@ -228,7 +229,8 @@ TranscludeWidget.prototype.getTransclusionTarget = function() {
|
||||
});
|
||||
return {
|
||||
text: parserInfo.text,
|
||||
type: parserInfo.type
|
||||
type: parserInfo.type,
|
||||
_canonical_uri: parserInfo._canonical_uri
|
||||
};
|
||||
}
|
||||
};
|
||||
@ -455,8 +457,11 @@ TranscludeWidget.prototype.makeRecursionMarker = function() {
|
||||
|
||||
TranscludeWidget.prototype.parserNeedsRefresh = function() {
|
||||
// Doesn't need to consider transcluded variables because a parent variable can't change once a widget has been created
|
||||
var parserInfo = this.wiki.getTextReferenceParserInfo(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{subTiddler:this.transcludeSubTiddler});
|
||||
return (this.sourceText === undefined || parserInfo.sourceText !== this.sourceText || parserInfo.parserType !== this.parserType)
|
||||
var parserInfo = this.wiki.getTextReferenceParserInfo(this.transcludeTitle,this.transcludeField,this.transcludeIndex,{
|
||||
subTiddler: this.transcludeSubTiddler,
|
||||
defaultType: this.transcludeType
|
||||
});
|
||||
return (this.sourceText === undefined || parserInfo.sourceText !== this.sourceText || parserInfo.parserType !== this.parserType || parserInfo._canonical_uri !== this._canonical_uri);
|
||||
};
|
||||
|
||||
TranscludeWidget.prototype.functionNeedsRefresh = function() {
|
||||
|
@ -428,6 +428,11 @@ Widget.prototype.assignAttributes = function(domNode,options) {
|
||||
destPrefix = options.destPrefix || "",
|
||||
EVENT_ATTRIBUTE_PREFIX = "on";
|
||||
var assignAttribute = function(name,value) {
|
||||
// Process any CSS custom properties
|
||||
if(name.substr(0,2) === "--" && name.length > 2) {
|
||||
domNode.style.setProperty(name,value);
|
||||
return;
|
||||
}
|
||||
// Process any style attributes before considering sourcePrefix and destPrefix
|
||||
if(name.substr(0,6) === "style." && name.length > 6) {
|
||||
domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;
|
||||
|
@ -141,12 +141,15 @@ This method should be called after the changes it describes have been made to th
|
||||
title: Title of tiddler
|
||||
isDeleted: defaults to false (meaning the tiddler has been created or modified),
|
||||
true if the tiddler has been deleted
|
||||
isShadow: defaults to false (meaning the change applies to the normal tiddler),
|
||||
true if the tiddler being changed is a shadow tiddler
|
||||
*/
|
||||
exports.enqueueTiddlerEvent = function(title,isDeleted) {
|
||||
exports.enqueueTiddlerEvent = function(title,isDeleted,isShadow) {
|
||||
// Record the touch in the list of changed tiddlers
|
||||
this.changedTiddlers = this.changedTiddlers || Object.create(null);
|
||||
this.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);
|
||||
this.changedTiddlers[title][isDeleted ? "deleted" : "modified"] = true;
|
||||
this.changedTiddlers[title][isShadow ? "shadow" : "normal"] = true;
|
||||
// Increment the change count
|
||||
this.changeCount = this.changeCount || Object.create(null);
|
||||
if($tw.utils.hop(this.changeCount,title)) {
|
||||
@ -1132,6 +1135,7 @@ exports.getTextReferenceParserInfo = function(title,field,index,options) {
|
||||
if(tiddler.fields.type) {
|
||||
parserInfo.parserType = tiddler.fields.type;
|
||||
}
|
||||
parserInfo._canonical_uri = tiddler.fields._canonical_uri;
|
||||
}
|
||||
} else if(field) {
|
||||
if(field === "title") {
|
||||
|
212
core/palettes/FlexokiDark.tid
Normal file
212
core/palettes/FlexokiDark.tid
Normal file
@ -0,0 +1,212 @@
|
||||
color-scheme: dark
|
||||
description: An inky color scheme for prose and code
|
||||
name: FlexokiDark
|
||||
tags: $:/tags/Palette
|
||||
title: $:/palettes/FlexokiDark
|
||||
type: application/x-tiddler-dictionary
|
||||
|
||||
flexoki-paper: #FFFCF0
|
||||
flexoki-999: #100F0F
|
||||
flexoki-950: #1C1B1A
|
||||
flexoki-900: #282726
|
||||
flexoki-850: #343331
|
||||
flexoki-800: #403E3C
|
||||
flexoki-700: #575653
|
||||
flexoki-600: #6c6b66
|
||||
flexoki-500: #878580
|
||||
flexoki-300: #B7B5AC
|
||||
flexoki-200: #CECDC3
|
||||
flexoki-150: #DAD8CE
|
||||
flexoki-100: #E6E4D9
|
||||
flexoki-050: #F2F0E5
|
||||
flexoki-red-600: #AF3029
|
||||
flexoki-red-400: #D14D41
|
||||
flexoki-orange-600: #BC5215
|
||||
flexoki-orange-400: #DA702C
|
||||
flexoki-yellow-900: #4D3A0B
|
||||
flexoki-yellow-600: #AD8301
|
||||
flexoki-yellow-400: #D0A215
|
||||
flexoki-yellow-100: #FCEEB8
|
||||
flexoki-green-600: #66800B
|
||||
flexoki-green-400: #879A39
|
||||
flexoki-cyan-950: #142625
|
||||
flexoki-cyan-600: #227d77
|
||||
flexoki-cyan-400: #3AA99F
|
||||
flexoki-cyan-050: #EBF2E7
|
||||
flexoki-blue-600: #205EA6
|
||||
flexoki-blue-400: #4385BE
|
||||
flexoki-purple-600: #5E409D
|
||||
flexoki-purple-400: #8B7EC8
|
||||
flexoki-magenta-600: #A02F6F
|
||||
flexoki-magenta-400: #CE5D97
|
||||
|
||||
flexoki-bg: <<colour flexoki-999>>
|
||||
flexoki-tx-2: <<colour flexoki-500>>
|
||||
flexoki-tx-3: <<colour flexoki-700>>
|
||||
flexoki-ui-3: <<colour flexoki-800>>
|
||||
flexoki-ui-2: <<colour flexoki-850>>
|
||||
flexoki-ui: <<colour flexoki-900>>
|
||||
flexoki-bg-2: <<colour flexoki-950>>
|
||||
flexoki-tx: <<colour flexoki-300>>
|
||||
flexoki-re: <<colour flexoki-red-400>>
|
||||
flexoki-or: <<colour flexoki-orange-400>>
|
||||
flexoki-ye: <<colour flexoki-yellow-400>>
|
||||
flexoki-gr: <<colour flexoki-green-400>>
|
||||
flexoki-cy: <<colour flexoki-cyan-400>>
|
||||
flexoki-bl: <<colour flexoki-blue-400>>
|
||||
flexoki-pu: <<colour flexoki-purple-400>>
|
||||
flexoki-ma: <<colour flexoki-magenta-400>>
|
||||
flexoki-re-2: <<colour flexoki-red-600>>
|
||||
flexoki-or-2: <<colour flexoki-orange-600>>
|
||||
flexoki-ye-2: <<colour flexoki-yellow-600>>
|
||||
flexoki-gr-2: <<colour flexoki-green-600>>
|
||||
flexoki-cy-2: <<colour flexoki-cyan-600>>
|
||||
flexoki-bl-2: <<colour flexoki-blue-600>>
|
||||
flexoki-pu-2: <<colour flexoki-purple-600>>
|
||||
flexoki-ma-2: <<colour flexoki-magenta-600>>
|
||||
|
||||
alert-background: <<colour flexoki-yellow-900>>
|
||||
alert-border: <<colour flexoki-ye>>
|
||||
alert-highlight: <<colour flexoki-re>>
|
||||
alert-muted-foreground: <<colour flexoki-ye>>
|
||||
background: #100F0F
|
||||
blockquote-bar: <<colour flexoki-ma-2>>
|
||||
button-background: <<colour flexoki-bg-2>>
|
||||
button-foreground: <<colour flexoki-paper>>
|
||||
button-border: <<colour flexoki-600>>
|
||||
code-background: <<colour background>>
|
||||
code-border: <<colour flexoki-tx>>
|
||||
code-foreground: <<colour flexoki-tx>>
|
||||
diff-delete-background: <<colour flexoki-re>>
|
||||
diff-delete-foreground: <<colour flexoki-bg-2>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: inherit
|
||||
diff-insert-background: <<colour flexoki-gr>>
|
||||
diff-insert-foreground: <<colour flexoki-bg-2>>
|
||||
diff-invisible-background: <<colour flexoki-ye>>
|
||||
diff-invisible-foreground: <<colour flexoki-bg-2>>
|
||||
dirty-indicator: <<colour flexoki-re>>
|
||||
download-background: <<colour flexoki-cy-2>>
|
||||
download-foreground: <<colour background>>
|
||||
dragger-background: <<colour background>>
|
||||
dragger-foreground: <<colour foreground>>
|
||||
dropdown-background: <<colour background>>
|
||||
dropdown-border: <<colour flexoki-ui-3>>
|
||||
dropdown-tab-background-selected: <<colour flexoki-ui>>
|
||||
dropdown-tab-background: <<colour flexoki-ui-3>>
|
||||
dropzone-background: <<colour flexoki-gr>>
|
||||
external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-background: inherit
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: <<colour flexoki-bl>>
|
||||
external-link-foreground: <<colour flexoki-bl>>
|
||||
footnote-target-background: <<colour flexoki-bg-2>>
|
||||
foreground: #CECDC3
|
||||
highlight-background: <<colour flexoki-yellow-900>>
|
||||
highlight-foreground: inherit
|
||||
menubar-background: <<colour primary>>
|
||||
menubar-foreground: <<colour flexoki-paper>>
|
||||
message-background: <<colour background>>
|
||||
message-border: <<colour foreground>>
|
||||
message-foreground: <<colour foreground>>
|
||||
modal-backdrop: <<colour foreground>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: <<colour flexoki-ui-3>>
|
||||
modal-footer-background: <<colour flexoki-ui-2>>
|
||||
modal-footer-border: <<colour flexoki-ui-3>>
|
||||
modal-header-border: <<colour flexoki-ui-3>>
|
||||
muted-foreground: <<colour flexoki-tx-2>>
|
||||
network-activity-foreground: <<colour flexoki-cy>>
|
||||
notification-background: <<colour flexoki-bg>>
|
||||
notification-border: <<colour flexoki-paper>>
|
||||
page-background: <<colour flexoki-bg-2>>
|
||||
pre-background: <<colour flexoki-bg-2>>
|
||||
pre-border: <<colour flexoki-ui-2>>
|
||||
primary: <<colour flexoki-cy>>
|
||||
selection-background: <<colour primary>>
|
||||
selection-foreground: <<colour background>>
|
||||
select-tag-background: <<colour flexoki-bg>>
|
||||
select-tag-foreground: <<colour flexoki-paper>>
|
||||
sidebar-button-foreground: <<colour foreground>>
|
||||
sidebar-controls-foreground-hover: <<colour flexoki-tx>>
|
||||
sidebar-controls-foreground: <<colour flexoki-tx-3>>
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-foreground: <<colour flexoki-tx>>
|
||||
sidebar-muted-foreground-hover: <<colour flexoki-tx>>
|
||||
sidebar-muted-foreground: <<colour flexoki-tx-3>>
|
||||
sidebar-tab-background-selected: <<colour flexoki-bg-2>>
|
||||
sidebar-tab-background: <<colour flexoki-ui-2>>
|
||||
sidebar-tab-border-selected: <<colour tab-border-selected>>
|
||||
sidebar-tab-border: <<colour tab-border>>
|
||||
sidebar-tab-divider: <<colour tab-divider>>
|
||||
sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: <<colour flexoki-tx>>
|
||||
sidebar-tiddler-link-foreground: <<colour flexoki-tx-2>>
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
stability-stable: <<colour flexoki-gr>>
|
||||
stability-experimental: <<colour flexoki-ye>>
|
||||
stability-deprecated: <<colour flexoki-re>>
|
||||
stability-legacy: <<colour flexoki-bl>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: <<colour background>>
|
||||
tab-background: <<colour flexoki-bg-2>>
|
||||
tab-border-selected: <<colour flexoki-ui-3>>
|
||||
tab-border: <<colour flexoki-ui>>
|
||||
tab-divider: <<colour flexoki-ui-2>>
|
||||
tab-foreground-selected: <<colour tab-foreground>>
|
||||
tab-foreground: <<colour flexoki-tx-2>>
|
||||
table-border: <<colour flexoki-ui-2>>
|
||||
table-footer-background: <<colour flexoki-ui>>
|
||||
table-header-background: <<colour flexoki-ui>>
|
||||
tag-background: #D0A215
|
||||
tag-foreground: #100F0F
|
||||
testcase-accent-level-1: <<colour flexoki-bl-2>>
|
||||
testcase-accent-level-2: <<colour flexoki-ye-2>>
|
||||
testcase-accent-level-3: <<colour flexoki-gr-2>>
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: <<colour flexoki-ui-2>>
|
||||
tiddler-controls-foreground-hover: <<colour flexoki-tx-3>>
|
||||
tiddler-controls-foreground-selected: <<colour flexoki-tx-2>>
|
||||
tiddler-controls-foreground: <<colour flexoki-tx-3>>
|
||||
tiddler-editor-background: <<colour flexoki-bg-2>>
|
||||
tiddler-editor-border-image: #ffffff
|
||||
tiddler-editor-border: <<colour flexoki-ui-2>>
|
||||
tiddler-editor-fields-even: <<colour flexoki-ui-3>>
|
||||
tiddler-editor-fields-odd: <<colour flexoki-ui-2>>
|
||||
tiddler-info-background: <<colour flexoki-ui>>
|
||||
tiddler-info-border: <<colour flexoki-ui>>
|
||||
tiddler-info-tab-background: <<colour flexoki-ui>>
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: <<colour flexoki-tx-3>>
|
||||
tiddler-title-foreground: <<colour flexoki-ma>>
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button: <<colour flexoki-re>>
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: <<colour flexoki-tx-3>>
|
||||
very-muted-foreground: <<colour flexoki-600>>
|
||||
wikilist-background: <<colour flexoki-ui>>
|
||||
wikilist-item: <<colour flexoki-black>>
|
||||
wikilist-info: <<colour flexoki-paper>>
|
||||
wikilist-title: <<colour flexoki-tx-2>>
|
||||
wikilist-title-svg: <<colour wikilist-title>>
|
||||
wikilist-url: <<colour flexoki-tx-3>>
|
||||
wikilist-button-open: <<colour flexoki-gr>>
|
||||
wikilist-button-open-hover: <<colour flexoki-gr-2>>
|
||||
wikilist-button-reveal: <<colour flexoki-cy>>
|
||||
wikilist-button-reveal-hover: <<colour flexoki-cy-2>>
|
||||
wikilist-button-remove: <<colour flexoki-re>>
|
||||
wikilist-button-remove-hover: <<colour flexoki-re-2>>
|
||||
wikilist-toolbar-background: <<colour flexoki-ui-2>>
|
||||
wikilist-toolbar-foreground: <<colour flexoki-600>>
|
||||
wikilist-droplink-dragover: <<colour flexoki-pu>>
|
||||
wikilist-button-background: <<colour flexoki-tx-3>>
|
||||
wikilist-button-foreground: <<colour flexoki-paper>>
|
214
core/palettes/FlexokiLight.tid
Normal file
214
core/palettes/FlexokiLight.tid
Normal file
@ -0,0 +1,214 @@
|
||||
title: $:/palettes/FlexokiLight
|
||||
name: FlexokiLight
|
||||
description: An inky color scheme for prose and code
|
||||
tags: $:/tags/Palette
|
||||
type: application/x-tiddler-dictionary
|
||||
color-scheme: light
|
||||
|
||||
flexoki-black: #100F0F
|
||||
flexoki-paper: #FFFCF0
|
||||
flexoki-950: #1C1B1A
|
||||
flexoki-900: #282726
|
||||
flexoki-850: #343331
|
||||
flexoki-800: #403E3C
|
||||
flexoki-700: #575653
|
||||
flexoki-600: #6F6E69
|
||||
flexoki-500: #878580
|
||||
flexoki-300: #B7B5AC
|
||||
flexoki-200: #CECDC3
|
||||
flexoki-150: #DAD8CE
|
||||
flexoki-100: #E6E4D9
|
||||
flexoki-050: #F2F0E5
|
||||
flexoki-red-600: #AF3029
|
||||
flexoki-red-400: #D14D41
|
||||
flexoki-orange-600: #BC5215
|
||||
flexoki-orange-400: #DA702C
|
||||
flexoki-yellow-900: #4D3A0B
|
||||
flexoki-yellow-600: #AD8301
|
||||
flexoki-yellow-400: #D0A215
|
||||
flexoki-yellow-100: #FCEEB8
|
||||
flexoki-green-600: #66800B
|
||||
flexoki-green-400: #879A39
|
||||
flexoki-cyan-950: #142625
|
||||
flexoki-cyan-600: #24837B
|
||||
flexoki-cyan-400: #3AA99F
|
||||
flexoki-cyan-050: #EBF2E7
|
||||
flexoki-blue-600: #205EA6
|
||||
flexoki-blue-400: #4385BE
|
||||
flexoki-purple-600: #5E409D
|
||||
flexoki-purple-400: #8B7EC8
|
||||
flexoki-magenta-600: #A02F6F
|
||||
flexoki-magenta-400: #CE5D97
|
||||
|
||||
flexoki-tx: <<colour flexoki-black>>
|
||||
flexoki-tx-2: <<colour flexoki-600>>
|
||||
flexoki-tx-3: <<colour flexoki-300>>
|
||||
flexoki-ui-3: <<colour flexoki-200>>
|
||||
flexoki-ui-2: <<colour flexoki-150>>
|
||||
flexoki-ui: <<colour flexoki-100>>
|
||||
flexoki-bg-2: <<colour flexoki-050>>
|
||||
flexoki-bg: <<colour flexoki-paper>>
|
||||
|
||||
flexoki-re: <<colour flexoki-red-400>>
|
||||
flexoki-or: <<colour flexoki-orange-400>>
|
||||
flexoki-ye: <<colour flexoki-yellow-400>>
|
||||
flexoki-gr: <<colour flexoki-green-400>>
|
||||
flexoki-cy: <<colour flexoki-cyan-400>>
|
||||
flexoki-bl: <<colour flexoki-blue-400>>
|
||||
flexoki-pu: <<colour flexoki-purple-400>>
|
||||
flexoki-ma: <<colour flexoki-magenta-400>>
|
||||
|
||||
flexoki-re-2: <<colour flexoki-red-600>>
|
||||
flexoki-or-2: <<colour flexoki-orange-600>>
|
||||
flexoki-ye-2: <<colour flexoki-yellow-600>>
|
||||
flexoki-gr-2: <<colour flexoki-green-600>>
|
||||
flexoki-cy-2: <<colour flexoki-cyan-600>>
|
||||
flexoki-bl-2: <<colour flexoki-blue-600>>
|
||||
flexoki-pu-2: <<colour flexoki-purple-600>>
|
||||
flexoki-ma-2: <<colour flexoki-magenta-600>>
|
||||
|
||||
alert-background: <<colour flexoki-yellow-100>>
|
||||
alert-border: <<colour flexoki-ye-2>>
|
||||
alert-highlight: <<colour flexoki-re-2>>
|
||||
alert-muted-foreground: <<colour flexoki-tx-2>>
|
||||
background: #FFFCF0
|
||||
blockquote-bar: <<colour flexoki-magenta-600>>
|
||||
button-background: <<colour flexoki-bg-2>>
|
||||
button-foreground: <<colour flexoki-black>>
|
||||
button-border: <<colour flexoki-500>>
|
||||
code-background: <<colour flexoki-bg>>
|
||||
code-border: <<colour flexoki-tx>>
|
||||
code-foreground: <<colour flexoki-tx>>
|
||||
diff-delete-background: <<colour flexoki-re-2>>
|
||||
diff-delete-foreground: <<colour flexoki-paper>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: <<colour flexoki-gr-2>>
|
||||
diff-insert-foreground: <<colour flexoki-paper>>
|
||||
diff-invisible-background: <<colour flexoki-ye-2>>
|
||||
diff-invisible-foreground: <<colour flexoki-paper>>
|
||||
dirty-indicator: <<colour flexoki-red-600>>
|
||||
download-background: <<colour flexoki-gr>>
|
||||
download-foreground: <<colour background>>
|
||||
dragger-background: <<colour foreground>>
|
||||
dragger-foreground: <<colour background>>
|
||||
dropdown-background: <<colour background>>
|
||||
dropdown-border: <<colour muted-foreground>>
|
||||
dropdown-tab-background-selected: <<colour background>>
|
||||
dropdown-tab-background: <<colour flexoki-bg-2>>
|
||||
dropzone-background: <<colour flexoki-gr>>
|
||||
external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-background: inherit
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: <<colour flexoki-bl>>
|
||||
external-link-foreground: <<colour flexoki-bl>>
|
||||
footnote-target-background: <<colour flexoki-bg-2>>
|
||||
foreground: #100F0F
|
||||
highlight-background: <<colour flexoki-yellow-100>>
|
||||
highlight-foreground: inherit
|
||||
menubar-background: <<colour primary>>
|
||||
menubar-foreground: <<colour flexoki-paper>>
|
||||
message-background: <<colour flexoki-bg>>
|
||||
message-border: <<colour flexoki-black>>
|
||||
message-foreground: <<colour flexoki-black>>
|
||||
modal-backdrop: <<colour foreground>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: <<colour flexoki-tx-3>>
|
||||
modal-footer-background: <<colour flexoki-bg>>
|
||||
modal-footer-border: <<colour flexoki-tx-3>>
|
||||
modal-header-border: <<colour flexoki-tx-3>>
|
||||
muted-foreground: <<colour flexoki-500>>
|
||||
network-activity-foreground: <<colour flexoki-cy-2>>
|
||||
notification-background: <<colour flexoki-bg>>
|
||||
notification-border: <<color flexoki-black>>
|
||||
page-background: <<colour flexoki-bg-2>>
|
||||
pre-background: <<colour flexoki-bg-2>>
|
||||
pre-border: <<colour flexoki-ui-2>>
|
||||
primary: <<colour flexoki-cy-2>>
|
||||
selection-background: <<colour flexoki-cy-2>>
|
||||
selection-foreground: <<colour background>>
|
||||
select-tag-background: <<colour flexoki-bg>>
|
||||
select-tag-foreground: <<color flexoki-black>>
|
||||
sidebar-button-foreground: <<colour foreground>>
|
||||
sidebar-controls-foreground-hover: <<colour flexoki-tx>>
|
||||
sidebar-controls-foreground: <<colour flexoki-tx-3>>
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-foreground: <<colour flexoki-300>>
|
||||
sidebar-muted-foreground-hover: <<colour flexoki-700>>
|
||||
sidebar-muted-foreground: <<colour flexoki-200>>
|
||||
sidebar-tab-background-selected: <<colour flexoki-bg-2>>
|
||||
sidebar-tab-background: <<colour flexoki-ui>>
|
||||
sidebar-tab-border-selected: <<colour tab-border-selected>>
|
||||
sidebar-tab-border: <<colour tab-border>>
|
||||
sidebar-tab-divider: <<colour flexoki-100>>
|
||||
sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: <<colour flexoki-500>>
|
||||
sidebar-tiddler-link-foreground: <<colour flexoki-700>>
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
stability-stable: <<colour flexoki-green-600>>
|
||||
stability-experimental: <<colour flexoki-yellow-600>>
|
||||
stability-deprecated: <<colour flexoki-red-600>>
|
||||
stability-legacy: <<colour flexoki-blue-600>>
|
||||
static-alert-foreground: <<colour flexoki-tx-3>>
|
||||
tab-background-selected: <<colour background>>
|
||||
tab-background: <<colour flexoki-bg-2>>
|
||||
tab-border-selected: <<colour flexoki-ui-3>>
|
||||
tab-border: <<colour flexoki-ui>>
|
||||
tab-divider: <<colour flexoki-ui-2>>
|
||||
tab-foreground-selected: <<colour tab-foreground>>
|
||||
tab-foreground: <<colour flexoki-tx>>
|
||||
table-border: <<colour flexoki-ui-2>>
|
||||
table-footer-background: <<colour flexoki-tx-3>>
|
||||
table-header-background: <<colour flexoki-bg-2>>
|
||||
tag-background: #AD8301
|
||||
tag-foreground: #FFFCF0
|
||||
testcase-accent-level-1: <<colour flexoki-blue-400>>
|
||||
testcase-accent-level-2: <<colour flexoki-yellow-400>>
|
||||
testcase-accent-level-3: <<colour flexoki-green-400>>
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: <<colour background>>
|
||||
tiddler-controls-foreground-hover: <<colour flexoki-tx-3>>
|
||||
tiddler-controls-foreground-selected: <<colour flexoki-tx-2>>
|
||||
tiddler-controls-foreground: <<colour flexoki-ui-3>>
|
||||
tiddler-editor-background: <<colour flexoki-bg-2>>
|
||||
tiddler-editor-border-image: #ffffff
|
||||
tiddler-editor-border: <<colour flexoki-ui-2>>
|
||||
tiddler-editor-fields-even: <<colour flexoki-ui-3>>
|
||||
tiddler-editor-fields-odd: <<colour flexoki-ui-2>>
|
||||
tiddler-info-background: <<colour flexoki-bg-2>>
|
||||
tiddler-info-border: <<colour flexoki-200>>
|
||||
tiddler-info-tab-background: <<colour flexoki-bg>>
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: <<colour flexoki-tx-3>>
|
||||
tiddler-title-foreground: <<colour flexoki-magenta-600>>
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button: <<colour flexoki-re-2>>
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: <<colour flexoki-tx-3>>
|
||||
very-muted-foreground: <<colour flexoki-500>>
|
||||
wikilist-background: <<colour flexoki-ui>>
|
||||
wikilist-item: <<colour flexoki-paper>>
|
||||
wikilist-info: <<colour flexoki-black>>
|
||||
wikilist-title: <<colour flexoki-tx-2>>
|
||||
wikilist-title-svg: <<colour wikilist-title>>
|
||||
wikilist-url: <<colour flexoki-tx-3>>
|
||||
wikilist-button-open: <<colour flexoki-gr-2>>
|
||||
wikilist-button-open-hover: <<colour flexoki-gr>>
|
||||
wikilist-button-reveal: <<colour flexoki-cy-2>>
|
||||
wikilist-button-reveal-hover: <<colour flexoki-cy>>
|
||||
wikilist-button-remove: <<colour flexoki-re-2>>
|
||||
wikilist-button-remove-hover: <<colour flexoki-re>>
|
||||
wikilist-toolbar-background: <<colour flexoki-ui-2>>
|
||||
wikilist-toolbar-foreground: <<colour flexoki-500>>
|
||||
wikilist-droplink-dragover: <<colour flexoki-pu>>
|
||||
wikilist-button-background: <<colour flexoki-tx-3>>
|
||||
wikilist-button-foreground: <<colour flexoki-black>>
|
@ -21,9 +21,9 @@ diff-delete-foreground: <<colour foreground>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: #b8bb26
|
||||
diff-insert-foreground: <<colour foreground>>
|
||||
diff-invisible-background:
|
||||
diff-invisible-foreground: <<colour muted-foreground>>
|
||||
diff-insert-foreground: <<colour background>>
|
||||
diff-invisible-background: #ffff97
|
||||
diff-invisible-foreground: #444347
|
||||
dirty-indicator: #fb4934
|
||||
download-background: #b8bb26
|
||||
download-foreground: <<colour background>>
|
||||
|
@ -21,8 +21,8 @@ diff-delete-foreground: <<colour foreground>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: #A3BE8C
|
||||
diff-insert-foreground: <<colour foreground>>
|
||||
diff-invisible-background:
|
||||
diff-insert-foreground: <<colour background>>
|
||||
diff-invisible-background: #f9f3b5
|
||||
diff-invisible-foreground: <<colour muted-foreground>>
|
||||
dirty-indicator: #BF616A
|
||||
download-background: #A3BE8C
|
||||
|
@ -125,6 +125,14 @@ foreground: #657b83
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
|
||||
alert-border: #b99e2f
|
||||
diff-delete-background: <<colour red>>
|
||||
diff-delete-foreground: <<colour background>>
|
||||
diff-equal-background: inherit
|
||||
diff-equal-foreground: inherit
|
||||
diff-insert-background: <<colour green>>
|
||||
diff-insert-foreground: <<colour background>>
|
||||
diff-invisible-background: <<colour yellow>>
|
||||
diff-invisible-foreground: <<colour background>>
|
||||
dirty-indicator: #ff0000
|
||||
dropzone-background: rgba(0,200,0,0.7)
|
||||
external-link-background-hover: inherit
|
||||
|
@ -18,6 +18,14 @@ button-foreground: #93a1a1
|
||||
code-background: #073642
|
||||
code-border: #586e75
|
||||
code-foreground: #93a1a1
|
||||
diff-delete-background: #dc322f
|
||||
diff-delete-foreground: #eee8d5
|
||||
diff-equal-background: inherit
|
||||
diff-equal-foreground: inherit
|
||||
diff-insert-background: #859900
|
||||
diff-insert-foreground: #073642
|
||||
diff-invisible-background: #b58900
|
||||
diff-invisible-foreground: #eee8d5
|
||||
dirty-indicator: #dc322f
|
||||
download-background: #859900
|
||||
download-foreground: #073642
|
||||
|
@ -18,6 +18,14 @@ button-foreground: #586e75
|
||||
code-background: #eee8d5
|
||||
code-border: #93a1a1
|
||||
code-foreground: #586e75
|
||||
diff-delete-background: #dc322f
|
||||
diff-delete-foreground: #eee8d5
|
||||
diff-equal-background: inherit
|
||||
diff-equal-foreground: inherit
|
||||
diff-insert-background: #859900
|
||||
diff-insert-foreground: #eee8d5
|
||||
diff-invisible-background: #b58900
|
||||
diff-invisible-foreground: #eee8d5
|
||||
dirty-indicator: #dc322f
|
||||
download-background: #859900
|
||||
download-foreground: #eee8d5
|
||||
|
@ -19,13 +19,13 @@ code-background: rgba(0,0,0,0.03)
|
||||
code-border: rgba(0,0,0,0.08)
|
||||
code-foreground: rgb(255, 94, 94)
|
||||
diff-delete-background: #ffc9c9
|
||||
diff-delete-foreground: <<colour foreground>>
|
||||
diff-delete-foreground: <<colour background>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: #aaefad
|
||||
diff-insert-foreground: <<colour foreground>>
|
||||
diff-invisible-background:
|
||||
diff-invisible-foreground: <<colour muted-foreground>>
|
||||
diff-insert-foreground: <<colour background>>
|
||||
diff-invisible-background: #fdfcbd
|
||||
diff-invisible-foreground: <<colour background>>
|
||||
dirty-indicator: rgb(255, 94, 94)
|
||||
download-background: #19a974
|
||||
download-foreground: rgb(38, 38, 38)
|
||||
|
@ -2,5 +2,6 @@ title: $:/core/templates/exporters/CsvFile
|
||||
tags: $:/tags/Exporter
|
||||
description: {{$:/language/Exporters/CsvFile}}
|
||||
extension: .csv
|
||||
file-type: text/csv
|
||||
|
||||
<$macrocall $name="csvtiddlers" filter=<<exportFilter>> format="quoted-comma-sep" $output="text/raw"/>
|
||||
|
@ -2,5 +2,6 @@ title: $:/core/templates/exporters/JsonFile
|
||||
tags: $:/tags/Exporter
|
||||
description: {{$:/language/Exporters/JsonFile}}
|
||||
extension: .json
|
||||
file-type: application/json
|
||||
|
||||
<$macrocall $name="jsontiddlers" filter=<<exportFilter>> $output="text/raw"/>
|
||||
|
@ -2,6 +2,7 @@ title: $:/core/templates/exporters/TidFile
|
||||
tags: $:/tags/Exporter
|
||||
description: {{$:/language/Exporters/TidFile}}
|
||||
extension: .tid
|
||||
file-type: text/vnd.tiddlywiki
|
||||
condition: [<count>compare:lte[1]]
|
||||
|
||||
\define renderContent()
|
||||
|
@ -2,18 +2,28 @@ title: $:/core/ui/AdvancedSearch/Filter
|
||||
tags: $:/tags/AdvancedSearch
|
||||
caption: {{$:/language/Search/Filter/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/Search/
|
||||
\define set-next-input-tab(beforeafter:"after")
|
||||
<$macrocall $name="change-input-tab"
|
||||
\procedure lingo-base() $:/language/Search/
|
||||
\procedure set-next-input-tab()
|
||||
<$transclude $variable="change-input-tab"
|
||||
stateTitle="$:/state/tab--1498284803"
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="$beforeafter$"
|
||||
beforeafter="after"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
|
||||
/>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions()
|
||||
\procedure set-previous-input-tab()
|
||||
<$transclude $variable="change-input-tab"
|
||||
stateTitle="$:/state/tab--1498284803"
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="before"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
|
||||
/>
|
||||
\end
|
||||
|
||||
\procedure cancel-search-actions()
|
||||
\whitespace trim
|
||||
<$list filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]">
|
||||
<$list-empty>
|
||||
@ -24,30 +34,30 @@ caption: {{$:/language/Search/Filter/Caption}}
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define input-accept-actions()
|
||||
\procedure input-accept-actions()
|
||||
\whitespace trim
|
||||
<$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
|
||||
<$list-empty>
|
||||
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]">
|
||||
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
|
||||
<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
|
||||
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list>
|
||||
<$/list-empty>
|
||||
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
|
||||
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define input-accept-variant-actions()
|
||||
\procedure input-accept-variant-actions()
|
||||
\whitespace trim
|
||||
<$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
|
||||
<$list-empty>
|
||||
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]">
|
||||
<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
|
||||
<$list filter="[<__tiddler__>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list>
|
||||
</$list>
|
||||
</$list-empty>
|
||||
<$list filter="[<__tiddler__>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
|
||||
<$list filter="[<tiddler>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list>
|
||||
</$list>
|
||||
\end
|
||||
@ -58,8 +68,8 @@ caption: {{$:/language/Search/Filter/Caption}}
|
||||
|
||||
<div class="tc-search tc-advanced-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>> class="tc-small-gap-right">
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
|
||||
<$transclude $variable="keyboard-driven-input"
|
||||
tiddler="$:/temp/advancedsearch/input"
|
||||
storeTitle="$:/temp/advancedsearch"
|
||||
refreshTitle="$:/temp/advancedsearch/refresh"
|
||||
@ -84,7 +94,7 @@ caption: {{$:/language/Search/Filter/Caption}}
|
||||
<$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>">
|
||||
<p><<lingo Filter/Matches>></p>
|
||||
<$list filter={{$:/temp/advancedsearch}}>
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
</$list>
|
||||
|
@ -3,18 +3,27 @@ tags: $:/tags/AdvancedSearch
|
||||
caption: {{$:/language/Search/Shadows/Caption}}
|
||||
first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]
|
||||
|
||||
\define lingo-base() $:/language/Search/
|
||||
\procedure lingo-base() $:/language/Search/
|
||||
|
||||
\define set-next-input-tab(beforeafter:"after")
|
||||
<$macrocall $name="change-input-tab"
|
||||
\procedure set-next-input-tab()
|
||||
<$transclude $variable="change-input-tab"
|
||||
stateTitle="$:/state/tab--1498284803"
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="$beforeafter$"
|
||||
beforeafter="after"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions()
|
||||
\procedure set-previous-input-tab()
|
||||
<$transclude $variable="change-input-tab"
|
||||
stateTitle="$:/state/tab--1498284803"
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="before"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
\end
|
||||
|
||||
\procedure cancel-search-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]"
|
||||
@ -25,22 +34,22 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
|
||||
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
|
||||
\end
|
||||
|
||||
\define input-accept-actions()
|
||||
\procedure input-accept-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
|
||||
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>">
|
||||
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
|
||||
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>">
|
||||
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define input-accept-variant-actions()
|
||||
\procedure input-accept-variant-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
|
||||
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>">
|
||||
<$list filter="[<__tiddler__>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
|
||||
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$list filter='[<tiddler>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<tiddler>get[text]] }}}/></$list></$list>">
|
||||
<$list filter="[<tiddler>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list></$list>
|
||||
\end
|
||||
|
||||
@ -50,8 +59,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
|
||||
|
||||
<div class="tc-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
|
||||
<$transclude $variable="keyboard-driven-input"
|
||||
tiddler="$:/temp/advancedsearch/input"
|
||||
storeTitle="$:/temp/advancedsearch"
|
||||
refreshTitle="$:/temp/advancedsearch/refresh"
|
||||
@ -79,7 +88,7 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
|
||||
|
||||
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
||||
|
||||
<$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] +[count[]]}}}>
|
||||
<$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :and[count[]]}}}>
|
||||
|
||||
<div class="tc-search-results">
|
||||
|
||||
@ -89,8 +98,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
|
||||
<<lingo Shadows/Matches>>
|
||||
<%endif%>
|
||||
|
||||
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]">
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]]">
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
</$list>
|
||||
|
@ -2,16 +2,20 @@ title: $:/core/ui/AdvancedSearch/Standard
|
||||
tags: $:/tags/AdvancedSearch
|
||||
caption: {{$:/language/Search/Standard/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/Search/
|
||||
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="$beforeafter$" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
\procedure lingo-base() $:/language/Search/
|
||||
\procedure set-next-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="after" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
|
||||
\define next-search-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
|
||||
\procedure set-previous-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="before" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
|
||||
\define cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
|
||||
\procedure next-search-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="after" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
|
||||
|
||||
\define input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>
|
||||
\procedure previous-search-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="before" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
|
||||
|
||||
\define input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>"><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>
|
||||
\procedure cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
|
||||
|
||||
\procedure input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>"><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>
|
||||
|
||||
\procedure input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$list filter='[<tiddler>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<tiddler>get[text]] }}}/></$list></$list>"><$list filter="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>
|
||||
|
||||
\whitespace trim
|
||||
|
||||
@ -19,10 +23,10 @@ caption: {{$:/language/Search/Standard/Caption}}
|
||||
|
||||
<div class="tc-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
|
||||
<$keyboard key="shift-alt-Right" actions=<<next-search-tab>>>
|
||||
<$keyboard key="shift-alt-Left" actions=<<next-search-tab "before">>>
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
<$keyboard key="shift-alt-Left" actions=<<previous-search-tab>>>
|
||||
<$transclude $variable="keyboard-driven-input"
|
||||
tiddler="$:/temp/advancedsearch/input"
|
||||
storeTitle="$:/temp/advancedsearch"
|
||||
refreshTitle="$:/temp/advancedsearch/refresh"
|
||||
@ -33,7 +37,7 @@ caption: {{$:/language/Search/Standard/Caption}}
|
||||
inputCancelActions=<<cancel-search-actions>>
|
||||
inputAcceptActions=<<input-accept-actions>>
|
||||
inputAcceptVariantActions=<<input-accept-variant-actions>>
|
||||
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]"
|
||||
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]"
|
||||
filterMinLength={{$:/config/Search/MinLength}}/>
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
@ -55,13 +59,13 @@ caption: {{$:/language/Search/Standard/Caption}}
|
||||
variable="listItem">
|
||||
<$vars
|
||||
userInput={{{ [[$:/temp/advancedsearch]get[text]] }}}
|
||||
configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}
|
||||
configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}
|
||||
searchListState="$:/temp/advancedsearch/selected-item">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]">
|
||||
<$list-empty>
|
||||
<$list filter='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'><$transclude mode="block"/></$list>
|
||||
</$list-empty>
|
||||
<$macrocall $name="tabs"
|
||||
<$transclude $variable="tabs"
|
||||
tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"
|
||||
default={{$:/config/SearchResults/Default}}
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<currentTab>>/>"
|
||||
|
@ -1,19 +1,28 @@
|
||||
title: $:/core/ui/AdvancedSearch/System
|
||||
tags: $:/tags/AdvancedSearch
|
||||
caption: {{$:/language/Search/System/Caption}}
|
||||
first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]
|
||||
first-search-filter: [is[system]search<userInput>sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]]
|
||||
|
||||
\define lingo-base() $:/language/Search/
|
||||
\define set-next-input-tab(beforeafter:"after",stateTitle,tag,defaultState,currentTabTiddler)
|
||||
<$macrocall $name="change-input-tab"
|
||||
\procedure lingo-base() $:/language/Search/
|
||||
\procedure set-next-input-tab()
|
||||
<$transclude $variable="change-input-tab"
|
||||
stateTitle="$:/state/tab--1498284803"
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="$beforeafter$"
|
||||
beforeafter="after"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions()
|
||||
\procedure set-previous-input-tab()
|
||||
<$transclude $variable="change-input-tab"
|
||||
stateTitle="$:/state/tab--1498284803"
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="before"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
\end
|
||||
|
||||
\procedure cancel-search-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]"
|
||||
@ -24,22 +33,22 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
|
||||
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
|
||||
\end
|
||||
|
||||
\define input-accept-actions()
|
||||
\procedure input-accept-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
|
||||
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>">
|
||||
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
|
||||
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>">
|
||||
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define input-accept-variant-actions()
|
||||
\procedure input-accept-variant-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
|
||||
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>">
|
||||
<$list filter="[<__tiddler__>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
|
||||
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$list filter='[<tiddler>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<tiddler>get[text]] }}}/></$list></$list>">
|
||||
<$list filter="[<tiddler>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
|
||||
</$list></$list>
|
||||
\end
|
||||
|
||||
@ -49,8 +58,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
|
||||
|
||||
<div class="tc-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
|
||||
<$transclude $variable="keyboard-driven-input"
|
||||
tiddler="$:/temp/advancedsearch/input"
|
||||
storeTitle="$:/temp/advancedsearch"
|
||||
refreshTitle="$:/temp/advancedsearch/refresh"
|
||||
@ -78,7 +87,7 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
|
||||
|
||||
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
||||
|
||||
<$set name="resultCount" value={{{ [is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}>
|
||||
<$set name="resultCount" value={{{ [is[system]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}>
|
||||
|
||||
<div class="tc-search-results">
|
||||
|
||||
@ -88,8 +97,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
|
||||
<<lingo System/Matches>>
|
||||
<%endif%>
|
||||
|
||||
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]">
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]]">
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
</$list>
|
||||
|
10
core/ui/ControlPanel/Settings/RecentLimit.tid
Normal file
10
core/ui/ControlPanel/Settings/RecentLimit.tid
Normal file
@ -0,0 +1,10 @@
|
||||
title: $:/core/ui/ControlPanel/Settings/RecentLimit
|
||||
tags: $:/tags/ControlPanel/Settings
|
||||
caption: {{$:/language/ControlPanel/Settings/RecentLimit/Caption}}
|
||||
|
||||
\whitespace trim
|
||||
\procedure lingo-base() $:/language/ControlPanel/Settings/RecentLimit/
|
||||
<<lingo Hint>>
|
||||
|
||||
|tc-table-no-border|k
|
||||
|<$link to="$:/config/RecentLimit"><<lingo Caption>></$link> |<$edit-text tiddler="$:/config/RecentLimit" tag="input" type="number"/> |
|
@ -1,35 +1,32 @@
|
||||
title: $:/core/ui/EditTemplate/fields
|
||||
tags: $:/tags/EditTemplate
|
||||
|
||||
\define lingo-base() $:/language/EditTemplate/
|
||||
\define config-title()
|
||||
$:/config/EditTemplateFields/Visibility/$(currentField)$
|
||||
\end
|
||||
\procedure lingo-base() $:/language/EditTemplate/
|
||||
\function tf.config-title() [[$:/config/EditTemplateFields/Visibility/]addsuffix[$(currentField)$]substitute[]get[text]]
|
||||
|
||||
\define config-filter()
|
||||
[[hide]] -[title{$(config-title)$}]
|
||||
\end
|
||||
\function tf.config-filter() [[hide]] :except[title<tf.config-title>]
|
||||
|
||||
<!-- Beware this is duplicated from EditTemplate.tid. For details see bug #7054 -->
|
||||
\define get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>]
|
||||
\define get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]
|
||||
\procedure get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>]
|
||||
\procedure get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]
|
||||
|
||||
\define current-tiddler-new-field-selector()
|
||||
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input
|
||||
\end
|
||||
\procedure prefix.bracket() [
|
||||
\procedure suffix.bracket() ]
|
||||
|
||||
\define new-field-actions()
|
||||
\function tf.current-tiddler-new-field-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<currentTiddlerCSSescaped>addsuffix[$(suffix.bracket)$]substitute[]] .tc-edit-field-add-name-wrapper input :and[join[ ]]
|
||||
|
||||
\procedure new-field-actions()
|
||||
\whitespace trim
|
||||
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldNameTiddler>get[text]] :map[subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
||||
<$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
|
||||
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/>
|
||||
</$set>
|
||||
<$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/>
|
||||
<$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/>
|
||||
\end
|
||||
|
||||
\define delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>
|
||||
\procedure delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>
|
||||
|
||||
\define cancel-search-actions-inner()
|
||||
\procedure cancel-search-actions-inner()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]"
|
||||
@ -39,7 +36,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions()
|
||||
\procedure cancel-search-actions()
|
||||
\whitespace trim
|
||||
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
|
||||
<$list
|
||||
@ -50,7 +47,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
|
||||
</$set>
|
||||
\end
|
||||
|
||||
\define new-field()
|
||||
\procedure new-field()
|
||||
\whitespace trim
|
||||
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
|
||||
<$reveal type="nomatch" text="" default=<<name>>>
|
||||
@ -75,15 +72,15 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
||||
|
||||
<$set name="newFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
|
||||
<div class="tc-edit-fields">
|
||||
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>
|
||||
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] :and[count[]!match[0]] :and[then[tc-edit-fields]] :else[[tc-edit-fields tc-edit-fields-small]] }}}>
|
||||
<tbody>
|
||||
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop">
|
||||
<$list filter=<<config-filter>> variable="temp">
|
||||
<$list filter="[all[current]fields[]] :and[sort[title]]" variable="currentField" storyview="pop">
|
||||
<$list filter=<<tf.config-filter>> variable="temp">
|
||||
<tr class="tc-edit-field">
|
||||
<td class="tc-edit-field-name">
|
||||
<$text text=<<currentField>>/>:</td>
|
||||
<td class="tc-edit-field-value">
|
||||
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>""">
|
||||
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/></$set>""">
|
||||
<$transclude tiddler={{{ [<currentField>] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] }}} />
|
||||
</$keyboard>
|
||||
</td>
|
||||
@ -107,10 +104,10 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
||||
</em>
|
||||
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
|
||||
<div class="tc-edit-field-add-name-wrapper">
|
||||
<$macrocall $name="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
|
||||
<$transclude $variable="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
|
||||
selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}
|
||||
focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}
|
||||
focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups="yes"
|
||||
focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} cancelPopups="yes"
|
||||
configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> />
|
||||
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
|
||||
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
|
||||
@ -121,8 +118,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
||||
<<lingo Fields/Add/Dropdown/User>>
|
||||
</div>
|
||||
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}>
|
||||
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField">
|
||||
<$list filter="[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
|
||||
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] :except[[created]] :except[[creator]] :except[[draft.of]] :except[[draft.title]] :except[[modified]] :except[[modifier]] :except[[tags]] :except[[text]] :except[[title]] :except[[type]]" variable="currentField">
|
||||
<$list filter="[<currentField>addsuffix[-primaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
|
||||
<$link to=<<currentField>>>
|
||||
<$text text=<<currentField>>/>
|
||||
</$link>
|
||||
@ -131,8 +128,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
||||
<div class="tc-dropdown-item">
|
||||
<<lingo Fields/Add/Dropdown/System>>
|
||||
</div>
|
||||
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
|
||||
<$list filter="[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
|
||||
<$list filter="[fields[]search:title<newFieldName>sort[]] :except[!is[shadow]!is[system]fields[]]" variable="currentField">
|
||||
<$list filter="[<currentField>addsuffix[-secondaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
|
||||
<$link to=<<currentField>>>
|
||||
<$text text=<<currentField>>/>
|
||||
</$link>
|
||||
@ -151,7 +148,7 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
|
||||
</$keyboard>
|
||||
</span>
|
||||
<span class="tc-edit-field-add-button">
|
||||
<$macrocall $name="new-field"/>
|
||||
<$transclude $variable="new-field"/>
|
||||
</span>
|
||||
</$let>
|
||||
</$vars>
|
||||
|
@ -2,15 +2,15 @@ title: $:/core/ui/EditTemplate/type
|
||||
tags: $:/tags/EditTemplate
|
||||
first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]
|
||||
|
||||
\define lingo-base() $:/language/EditTemplate/
|
||||
\define input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list>
|
||||
\procedure lingo-base() $:/language/EditTemplate/
|
||||
\procedure input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] :and[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list>
|
||||
\whitespace trim
|
||||
<$set name="refreshTitle" value=<<qualify "$:/temp/type-search/refresh">>>
|
||||
<div class="tc-edit-type-selector-wrapper">
|
||||
<em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em>
|
||||
<div class="tc-type-selector-dropdown-wrapper">
|
||||
<div class="tc-type-selector"><$fieldmangler>
|
||||
<$macrocall $name="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button>
|
||||
<$transclude $variable="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button>
|
||||
</$fieldmangler></div>
|
||||
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
@ -23,7 +23,7 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d
|
||||
<$text text={{!!group}}/>
|
||||
</div>
|
||||
<$set name="userInput" value={{{ [<typeInputTiddler>get[text]] }}}>
|
||||
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
|
||||
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] :and[sort[description]] :and[removeprefix[$:/language/Docs/Types/]] :and[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] :except[<typeSelectionTiddler>get[text]] :and[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
|
||||
</$list>
|
||||
</$set>
|
||||
</$list>
|
||||
|
@ -1,44 +1,44 @@
|
||||
title: $:/core/ui/EditorToolbar/link-dropdown
|
||||
|
||||
\define lingo-base() $:/language/Buttons/Link/
|
||||
\procedure lingo-base() $:/language/Buttons/Link/
|
||||
|
||||
\define add-link-actions()
|
||||
\procedure add-link-actions()
|
||||
\whitespace trim
|
||||
<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{$(linkTiddler)$}} />
|
||||
<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{{ [<linkTiddler>get[text]] }}} />
|
||||
<$action-deletetiddler $filter="[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]"/>
|
||||
\end
|
||||
|
||||
\define get-focus-selector() [data-tiddler-title="$(cssEscapedTitle)$"] .tc-create-wikitext-link input
|
||||
|
||||
\define cancel-search-actions-inner()
|
||||
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}><$list filter="[<searchTiddler>get[text]!match<userInput>]" emptyMessage="<$action-deletetiddler $filter='[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]'/>"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/></$list></$set>
|
||||
\procedure cancel-search-actions-inner()
|
||||
<$let userInput={{{ [<storeTitle>get[text]] }}}><$list filter="[<searchTiddler>get[text]!match<userInput>]" emptyMessage="<$action-deletetiddler $filter='[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]'/>"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/></$list></$let>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions() <$list filter="[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]" emptyMessage="<<cancel-search-actions-inner>>"><$action-sendmessage $message="tm-edit-text-operation" $param="focus-editor"/></$list>
|
||||
\procedure cancel-search-actions() <$list filter="[<storeTitle>!has[text]] :and[<searchTiddler>!has[text]]" emptyMessage="<<cancel-search-actions-inner>>"><$action-sendmessage $message="tm-edit-text-operation" $param="focus-editor"/></$list>
|
||||
|
||||
\define external-link()
|
||||
\procedure external-link()
|
||||
\whitespace trim
|
||||
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;" actions=<<add-link-actions>>>
|
||||
{{$:/core/images/chevron-right}}
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
|
||||
\procedure set-next-input-tab() <$transclude $variable="change-input-tab-after" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
|
||||
|
||||
\define body(config-title)
|
||||
\procedure set-previous-input-tab() <$transclude $variable="change-input-tab-before" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
|
||||
|
||||
\procedure body(config-title)
|
||||
\whitespace trim
|
||||
''<<lingo Hint>>''
|
||||
|
||||
<$vars searchTiddler="""$config-title$/search""" linkTiddler="""$config-title$/link""" linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>>
|
||||
<$let searchTiddler=`$(config-title)$/search` linkTiddler=`$(config-title)$/link` linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>>
|
||||
|
||||
<$vars linkTiddler=<<searchTiddler>>>
|
||||
<$let linkTiddler=<<searchTiddler>>>
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">> class="tc-create-wikitext-link">
|
||||
<$macrocall $name="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>> class="tc-create-wikitext-link">
|
||||
<$transclude $variable="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>
|
||||
selectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type="search" filterMinLength="1"
|
||||
tag="input" focus="true" class="tc-popup-handle" inputCancelActions=<<cancel-search-actions>>
|
||||
inputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=""
|
||||
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]" />
|
||||
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]" />
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
 
|
||||
@ -46,28 +46,28 @@ title: $:/core/ui/EditorToolbar/link-dropdown
|
||||
<<external-link>>
|
||||
 
|
||||
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;">
|
||||
<<cancel-search-actions>><$set name="cssEscapedTitle" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<get-focus-selector>>/></$set>
|
||||
<<cancel-search-actions>><$action-sendmessage $message="tm-focus-selector" $param=`[data-tiddler-title=${[<storyTiddler>escapecss[]]}$] .tc-create-wikitext-link input`/>
|
||||
{{$:/core/images/close-button}}
|
||||
</$button>
|
||||
</$reveal>
|
||||
</$vars>
|
||||
</$let>
|
||||
|
||||
<$reveal tag="div" state=<<storeTitle>> type="nomatch" text="">
|
||||
|
||||
<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>
|
||||
|
||||
<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>
|
||||
<$let userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
|
||||
|
||||
{{$:/core/ui/SearchResults}}
|
||||
|
||||
</$vars>
|
||||
</$let>
|
||||
|
||||
</$linkcatcher>
|
||||
|
||||
</$reveal>
|
||||
|
||||
</$vars>
|
||||
</$let>
|
||||
|
||||
\end
|
||||
|
||||
<$macrocall $name="body" config-title=<<qualify "$:/state/Link/">>/>
|
||||
<$transclude $variable="body" config-title=<<qualify "$:/state/Link/">>/>
|
@ -5,6 +5,7 @@ description: {{$:/language/Buttons/AdvancedSearch/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\procedure advanced-search-button(class)
|
||||
\whitespace trim
|
||||
<$button to="$:/AdvancedSearch" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=`$(tv-config-toolbar-class)$ $(class)$`>
|
||||
<%if [<tv-config-toolbar-icons>match[yes]] %>
|
||||
{{$:/core/images/advanced-search-button}}
|
||||
|
@ -5,6 +5,7 @@ description: {{$:/language/Buttons/ControlPanel/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\procedure control-panel-button(class)
|
||||
\whitespace trim
|
||||
<$button to="$:/ControlPanel" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=`$(tv-config-toolbar-class)$ $(class)$`>
|
||||
<%if [<tv-config-toolbar-icons>match[yes]] %>
|
||||
{{$:/core/images/options-button}}
|
||||
|
@ -7,11 +7,7 @@ description: {{$:/language/Buttons/Language/Hint}}
|
||||
<span class="tc-popup-keep">
|
||||
<$button popup=<<qualify "$:/state/popup/language">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
|
||||
<%if [<tv-config-toolbar-icons>match[yes]] %>
|
||||
<span class="tc-image-button">
|
||||
<$set name="languagePluginTitle" value={{$:/language}}>
|
||||
<$image source=`$(languagePluginTitle)$/icon`/>
|
||||
</$set>
|
||||
</span>
|
||||
{{$:/core/images/language}}
|
||||
<%endif%>
|
||||
<%if [<tv-config-toolbar-text>match[yes]] %>
|
||||
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Language/Caption}}/></span>
|
||||
|
@ -5,6 +5,7 @@ description: {{$:/language/Buttons/Manager/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\procedure manager-button(class)
|
||||
\whitespace trim
|
||||
<$button to="$:/Manager" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=`$(tv-config-toolbar-class)$ $(class)$`>
|
||||
<%if [<tv-config-toolbar-icons>match[yes]] %>
|
||||
{{$:/core/images/list}}
|
||||
|
@ -4,10 +4,17 @@ caption: {{$:/core/images/save-button-dynamic}} {{$:/language/Buttons/SaveWiki/C
|
||||
description: {{$:/language/Buttons/SaveWiki/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
\procedure saveActions()
|
||||
<$wikify name="site-title" text={{$:/config/SaveWikiButton/Filename}}>
|
||||
<$action-sendmessage $message="tm-save-wiki" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>
|
||||
<$action-sendmessage $message="tm-save-wiki" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>
|
||||
</$wikify>
|
||||
\end
|
||||
|
||||
<$button actions=<<saveActions>>
|
||||
tooltip={{$:/language/Buttons/SaveWiki/Hint}}
|
||||
aria-label={{$:/language/Buttons/SaveWiki/Caption}}
|
||||
class=<<tv-config-toolbar-class>>
|
||||
>
|
||||
<span class="tc-dirty-indicator">
|
||||
<%if [<tv-config-toolbar-icons>match[yes]] %>
|
||||
{{$:/core/images/save-button-dynamic}}
|
||||
|
@ -5,6 +5,7 @@ description: {{$:/language/Buttons/TagManager/Hint}}
|
||||
|
||||
\whitespace trim
|
||||
\procedure control-panel-button(class)
|
||||
\whitespace trim
|
||||
<$button to="$:/TagManager" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=`$(tv-config-toolbar-class)$ $(class)$`>
|
||||
<%if [<tv-config-toolbar-icons>match[yes]] %>
|
||||
{{$:/core/images/tag-button}}
|
||||
|
@ -2,4 +2,4 @@ title: $:/core/ui/SideBar/Recent
|
||||
tags: $:/tags/SideBar
|
||||
caption: {{$:/language/SideBar/Recent/Caption}}
|
||||
|
||||
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/>
|
||||
<$transclude $variable="timeline" format={{$:/language/RecentChanges/DateFormat}} limit={{$:/config/RecentLimit}}/>
|
||||
|
@ -3,12 +3,12 @@ tags: $:/tags/SideBarSegment
|
||||
|
||||
\whitespace trim
|
||||
|
||||
\define count-popup-button()
|
||||
\procedure count-popup-button()
|
||||
\whitespace trim
|
||||
<$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
|
||||
{{$:/core/images/down-arrow}}
|
||||
<$list filter="[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
|
||||
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]">
|
||||
<$list filter="[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
|
||||
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]">
|
||||
<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>
|
||||
<$set name="resultCount" value="""<$count filter="[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]"/>""">
|
||||
{{$:/language/Search/Matches}}
|
||||
@ -19,9 +19,9 @@ tags: $:/tags/SideBarSegment
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\define search-results-list()
|
||||
\procedure search-results-list()
|
||||
\whitespace trim
|
||||
<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>
|
||||
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
|
||||
<$list filter="[<userInput>minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
|
||||
|
||||
<$tiddler tiddler=<<configTiddler>>>
|
||||
@ -34,30 +34,32 @@ tags: $:/tags/SideBarSegment
|
||||
</$vars>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions() <$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>"""><$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list>
|
||||
\procedure cancel-search-actions() <$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>"""><$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list>
|
||||
|
||||
\define input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"""><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>
|
||||
\procedure input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]"><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>"""><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>
|
||||
|
||||
\define input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>"""><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>
|
||||
\procedure input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]"><$list filter="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>"""><$list filter="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>
|
||||
|
||||
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
|
||||
\procedure set-next-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="after" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
|
||||
|
||||
\define advanced-search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search/input}}/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/><$action-deletetiddler $filter="$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]"/>
|
||||
\procedure set-previous-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="before" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
|
||||
|
||||
\procedure advanced-search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search/input}}/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/><$action-deletetiddler $filter="$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]"/>
|
||||
|
||||
<div class="tc-sidebar-lists tc-sidebar-search">
|
||||
|
||||
<$vars editTiddler="$:/temp/search" searchTiddler="$:/temp/search/input" searchListState=<<qualify "$:/state/search-list/selected-item">>>
|
||||
<div class="tc-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
|
||||
<$keyboard key="((advanced-search-sidebar))" actions=<<advanced-search-actions>>>
|
||||
<form class="tc-form-inline">
|
||||
<$macrocall $name="keyboard-driven-input" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>>
|
||||
<$transclude $variable="keyboard-driven-input" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>>
|
||||
selectionStateTitle=<<searchListState>> refreshTitle="$:/temp/search/refresh" type="search"
|
||||
tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">>
|
||||
class="tc-tiny-gap-right tc-popup-handle" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>>
|
||||
inputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups="yes"
|
||||
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]"/>
|
||||
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]"/>
|
||||
</form>
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
|
@ -62,7 +62,6 @@ color: #bbb
|
||||
\end
|
||||
|
||||
\whitespace trim
|
||||
<div class="tc-table-wrapper">
|
||||
<table class="tc-tag-manager-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
@ -116,5 +115,4 @@ color: #bbb
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
@ -2,6 +2,7 @@ title: $:/core/ui/ViewTemplate/body/rendered-plain-text
|
||||
code-body: yes
|
||||
|
||||
\whitespace trim
|
||||
\parameters (language:"css")
|
||||
<$wikify name="text" text={{!!text}} type={{!!type}}>
|
||||
<$codeblock code=<<text>> language="css"/>
|
||||
<$codeblock code=<<text>> language=<<language>>/>
|
||||
</$wikify>
|
4
core/ui/ViewTemplate/body/rendered-plain-text/html.tid
Normal file
4
core/ui/ViewTemplate/body/rendered-plain-text/html.tid
Normal file
@ -0,0 +1,4 @@
|
||||
title: $:/core/ui/ViewTemplate/body/rendered-plain-text/html
|
||||
code-body: yes
|
||||
|
||||
{{||$:/core/ui/ViewTemplate/body/rendered-plain-text|html}}
|
@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: https://tiddlywiki.com/library/v5.3.6/index.html
|
||||
url: https://tiddlywiki.com/library/v5.3.7/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}}
|
||||
|
||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||
|
3
core/wiki/config/RecentLimit.tid
Normal file
3
core/wiki/config/RecentLimit.tid
Normal file
@ -0,0 +1,3 @@
|
||||
title: $:/config/RecentLimit
|
||||
|
||||
100
|
@ -3,8 +3,9 @@ tags: $:/tags/ViewTemplateBodyFilter
|
||||
|
||||
testcase: [tag[$:/tags/wiki-test-spec]type[text/vnd.tiddlywiki-multiple]] [tag[$:/tags/wiki-test-spec-failing]type[text/vnd.tiddlywiki-multiple]] :then[[$:/core/ui/TestCaseTemplate]]
|
||||
stylesheet: [tag[$:/tags/Stylesheet]then[$:/core/ui/ViewTemplate/body/rendered-plain-text]]
|
||||
core-ui-tags: [tag[$:/tags/PageTemplate]] [tag[$:/tags/EditTemplate]] [tag[$:/tags/ViewTemplate]] [tag[$:/tags/KeyboardShortcut]] [tag[$:/tags/ImportPreview]] [tag[$:/tags/EditPreview]][tag[$:/tags/EditorToolbar]] [tag[$:/tags/Actions]] :then[[$:/core/ui/ViewTemplate/body/code]]
|
||||
system: [prefix[$:/boot/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/config/]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/info/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/temp/]] :and[!is[image]] :then[[$:/core/ui/ViewTemplate/body/code]]
|
||||
html: [tag[$:/tags/RawMarkupWikified]] [tag[$:/tags/RawMarkupWikified/TopHead]] [tag[$:/tags/RawMarkupWikified/TopBody]] [tag[$:/tags/RawMarkupWikified/BottomBody]] :then[[$:/core/ui/ViewTemplate/body/rendered-plain-text/html]]
|
||||
core-ui-tags: [tag[$:/tags/PageTemplate]] [tag[$:/tags/EditTemplate]] [tag[$:/tags/ViewTemplate]] [tag[$:/tags/KeyboardShortcut]] [tag[$:/tags/ImportPreview]] [tag[$:/tags/EditPreview]] [tag[$:/tags/EditorToolbar]] [tag[$:/EditorTools]] [tag[$:/tags/Actions]] [tag[$:/tags/ToolbarButtonStyle]] :then[[$:/core/ui/ViewTemplate/body/code]]
|
||||
system: [prefix[$:/boot/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/config/]] [prefix[$:/core/config/]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/info/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/temp/]] :and[!is[image]] :then[[$:/core/ui/ViewTemplate/body/code]]
|
||||
code-body: [field:code-body[yes]then[$:/core/ui/ViewTemplate/body/code]]
|
||||
import: [field:plugin-type[import]then[$:/core/ui/ViewTemplate/body/import]]
|
||||
plugin: [has[plugin-type]then[$:/core/ui/ViewTemplate/body/plugin]]
|
||||
|
@ -1,25 +1,12 @@
|
||||
title: $:/snippets/languageswitcher
|
||||
|
||||
\define flag-title()
|
||||
$(languagePluginTitle)$/icon
|
||||
\end
|
||||
\whitespace trim
|
||||
|
||||
<$linkcatcher to="$:/language">
|
||||
<div class="tc-chooser tc-language-chooser">
|
||||
<$list filter="[[$:/languages/en-GB]] [plugin-type[language]sort[description]]">
|
||||
<$set name="cls" filter="[all[current]field:title{$:/language}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item"><div class=<<cls>>>
|
||||
<$set name="cls" filter="[all[current]field:title{$:/language}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item">
|
||||
<div class=<<cls>> lang={{!!name}}>
|
||||
<$link>
|
||||
<span class="tc-image-button">
|
||||
<$set name="languagePluginTitle" value=<<currentTiddler>>>
|
||||
<$transclude subtiddler=<<flag-title>>>
|
||||
<$list filter="[all[current]field:title[$:/languages/en-GB]]">
|
||||
<$transclude tiddler="$:/languages/en-GB/icon"/>
|
||||
</$list>
|
||||
</$transclude>
|
||||
</$set>
|
||||
</span>
|
||||
 
|
||||
<$view field="description">
|
||||
<$view field="name">
|
||||
<$view field="title"/>
|
||||
|
@ -1,5 +1,5 @@
|
||||
title: $:/core/macros/CSS
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
<!-- Needs to stay that way for backwards compatibility. See GH issue: #8326 -->
|
||||
\define colour(name)
|
||||
@ -13,42 +13,54 @@ tags: $:/tags/Macro $:/tags/Global
|
||||
|
||||
\define color(name) <<colour $name$>>
|
||||
|
||||
\function box-shadow(shadow)
|
||||
[[ -webkit-box-shadow: $(shadow)$;
|
||||
-moz-box-shadow: $(shadow)$;
|
||||
box-shadow: $(shadow)$;]substitute[]]
|
||||
\define box-shadow(shadow)
|
||||
``
|
||||
-webkit-box-shadow: $shadow$;
|
||||
-moz-box-shadow: $shadow$;
|
||||
box-shadow: $shadow$;
|
||||
``
|
||||
\end
|
||||
|
||||
\function filter(filter)
|
||||
[[ -webkit-filter: $(filter)$;
|
||||
-moz-filter: $(filter)$;
|
||||
filter: $(filter)$;]substitute[]]
|
||||
\define filter(filter)
|
||||
``
|
||||
-webkit-filter: $filter$;
|
||||
-moz-filter: $filter$;
|
||||
filter: $filter$;
|
||||
``
|
||||
\end
|
||||
|
||||
\function transition(transition)
|
||||
[[ -webkit-transition: $(transition)$;
|
||||
-moz-transition: $(transition)$;
|
||||
transition: $(transition)$;]substitute[]]
|
||||
\define transition(transition)
|
||||
``
|
||||
-webkit-transition: $transition$;
|
||||
-moz-transition: $transition$;
|
||||
transition: $transition$;
|
||||
``
|
||||
\end
|
||||
|
||||
\function transform-origin(origin)
|
||||
[[ -webkit-transform-origin: $(origin)$;
|
||||
-moz-transform-origin: $(origin)$;
|
||||
transform-origin: $(origin)$;]substitute[]]
|
||||
\define transform-origin(origin)
|
||||
``
|
||||
-webkit-transform-origin: $origin$;
|
||||
-moz-transform-origin: $origin$;
|
||||
transform-origin: $origin$;
|
||||
``
|
||||
\end
|
||||
|
||||
\function background-linear-gradient(gradient)
|
||||
[[ background-image: linear-gradient($(gradient)$);
|
||||
background-image: -o-linear-gradient($(gradient)$);
|
||||
background-image: -moz-linear-gradient($(gradient)$);
|
||||
background-image: -webkit-linear-gradient($(gradient)$);
|
||||
background-image: -ms-linear-gradient($(gradient)$);]substitute[]]
|
||||
\define background-linear-gradient(gradient)
|
||||
``
|
||||
background-image: linear-gradient($gradient$);
|
||||
background-image: -o-linear-gradient($gradient$);
|
||||
background-image: -moz-linear-gradient($gradient$);
|
||||
background-image: -webkit-linear-gradient($gradient$);
|
||||
background-image: -ms-linear-gradient($gradient$);
|
||||
``
|
||||
\end
|
||||
|
||||
\function column-count(columns)
|
||||
[[-moz-column-count: $(columns)$;
|
||||
-webkit-column-count: $(columns)$;
|
||||
column-count: $(columns)$;]substitute[]]
|
||||
\define column-count(columns)
|
||||
``
|
||||
-moz-column-count: $columns$;
|
||||
-webkit-column-count: $columns$;
|
||||
column-count: $columns$;
|
||||
``
|
||||
\end
|
||||
|
||||
\procedure datauri(title)
|
||||
|
@ -1,58 +1,55 @@
|
||||
title: $:/core/macros/colour-picker
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define colour-picker-update-recent()
|
||||
\procedure colour-picker-update-recent()
|
||||
<$action-listops
|
||||
$tiddler="$:/config/ColourPicker/Recent"
|
||||
$subfilter="$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]"
|
||||
$subfilter="[<colour-picker-value>] [list[$:/config/ColourPicker/Recent]remove<colour-picker-value>] +[limit[8]]"
|
||||
/>
|
||||
\end
|
||||
|
||||
\define colour-picker-inner(actions)
|
||||
<$button tag="a" tooltip="""$(colour-picker-value)$""">
|
||||
$(colour-picker-update-recent)$
|
||||
<$transclude $variable="__actions__"/>
|
||||
|
||||
<span style="display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;"/>
|
||||
|
||||
\procedure colour-picker-inner(actions)
|
||||
<$button tag="a" tooltip=<<colour-picker-value>>>
|
||||
<<colour-picker-update-recent>>
|
||||
<$transclude $variable="actions"/>
|
||||
<span style.display="inline-block" style.backgroundColor=<<colour-picker-value>> style.width="100%" style.height="100%" style.borderRadius="50%"/>
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\define colour-picker-recent-inner(actions)
|
||||
\whitespace trim
|
||||
<$set name="colour-picker-value" value="$(recentColour)$">
|
||||
<$macrocall $name="colour-picker-inner" actions=<<__actions__>>/>
|
||||
\procedure colour-picker-recent-inner(actions)
|
||||
<$set name="colour-picker-value" value=<<recentColour>>>
|
||||
<$transclude $variable="colour-picker-inner" actions=<<actions>>/>
|
||||
</$set>
|
||||
\end
|
||||
|
||||
\define colour-picker-recent(actions)
|
||||
\whitespace trim
|
||||
\procedure colour-picker-recent(actions)
|
||||
{{$:/language/ColourPicker/Recent}}<$list filter="[list[$:/config/ColourPicker/Recent]]" variable="recentColour">
|
||||
 
|
||||
<$macrocall $name="colour-picker-recent-inner" actions=<<__actions__>>/>
|
||||
<$transclude $variable="colour-picker-recent-inner" actions=<<actions>>/>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define colour-picker(actions)
|
||||
\whitespace trim
|
||||
\procedure colour-picker(actions)
|
||||
<div class="tc-colour-chooser">
|
||||
|
||||
<$macrocall $name="colour-picker-recent" actions=<<__actions__>>/>
|
||||
<$transclude $variable="colour-picker-recent" actions=<<actions>>/>
|
||||
|
||||
---
|
||||
|
||||
<$list filter="LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black" variable="colour-picker-value">
|
||||
 
|
||||
<$macrocall $name="colour-picker-inner" actions=<<__actions__>>/>
|
||||
<$transclude $variable="colour-picker-inner" actions=<<actions>>/>
|
||||
</$list>
|
||||
|
||||
---
|
||||
|
||||
<$edit-text tiddler="$:/config/ColourPicker/New" tag="input" default="" placeholder=""/>
|
||||
 
|
||||
<$edit-text tiddler="$:/config/ColourPicker/New" tag="input" default="" placeholder="" class="tc-tiny-gap-right"/>
|
||||
<$edit-text tiddler="$:/config/ColourPicker/New" type="color" tag="input"/>
|
||||
<$set name="colour-picker-value" value={{$:/config/ColourPicker/New}}>
|
||||
<$macrocall $name="colour-picker-inner" actions=<<__actions__>>/>
|
||||
<%if [{$:/config/ColourPicker/New}!is[blank]] %>
|
||||
<$transclude $variable="colour-picker-inner" actions=<<actions>>/>
|
||||
<%endif%>
|
||||
</$set>
|
||||
|
||||
</div>
|
||||
|
@ -1,11 +1,13 @@
|
||||
title: $:/core/macros/copy-to-clipboard
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\whitespace trim
|
||||
|
||||
\procedure copy-to-clipboard(src,class:"tc-btn-invisible",style)
|
||||
<$button message="tm-copy-to-clipboard"
|
||||
param=<<src>>
|
||||
\procedure copy-to-clipboard(src,class:"tc-btn-invisible",style,type:"text/plain",plain)
|
||||
\procedure copy-to-clipboard-actions()
|
||||
<$action-sendmessage $message="tm-copy-to-clipboard" $param=<<src>> type=<<type>> plainText=<<plain>>/>
|
||||
\end copy-to-clipboard-actions
|
||||
<$button actions=<<copy-to-clipboard-actions>>
|
||||
class=<<class>>
|
||||
style=<<style>>
|
||||
tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}
|
||||
@ -15,12 +17,12 @@ tags: $:/tags/Macro $:/tags/Global
|
||||
<$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>
|
||||
</span>
|
||||
</$button>
|
||||
\end
|
||||
\end copy-to-clipboard
|
||||
|
||||
\procedure copy-to-clipboard-above-right(src,class:"tc-btn-invisible",style)
|
||||
<div style="position: relative;">
|
||||
<div style="position: absolute; bottom: 0; right: 0;">
|
||||
<$macrocall $name="copy-to-clipboard" src=<<src>> class=<<class>> style=<<style>>/>
|
||||
\procedure copy-to-clipboard-above-right(src,class:"tc-btn-invisible",style,type:"text/plain")
|
||||
<div style.position="relative">
|
||||
<div style.position="absolute" style.bottom="0" style.right="0">
|
||||
<$transclude $variable="copy-to-clipboard" src=<<src>> class=<<class>> style=<<style>> type=<<type>> plain=<<plain>>/>
|
||||
</div>
|
||||
</div>
|
||||
\end
|
||||
|
@ -1,5 +1,5 @@
|
||||
title: $:/core/macros/diff
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\whitespace trim
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
title: $:/core/macros/dumpvariables
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define dumpvariables()
|
||||
\procedure dumpvariables()
|
||||
\whitespace trim
|
||||
<ul>
|
||||
<$list filter="[variables[]]" variable="varname">
|
||||
|
@ -1,5 +1,5 @@
|
||||
title: $:/core/macros/export
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\function exportButtonFilename(baseFilename)
|
||||
[<baseFilename>] [<extension>] +[join[]]
|
||||
@ -39,6 +39,7 @@ tags: $:/tags/Macro $:/tags/Global
|
||||
$param=<<currentTiddler>>
|
||||
exportFilter=<<exportFilter>>
|
||||
filename={{{ [<baseFilename>addsuffix{!!extension}] }}}
|
||||
type={{!!file-type}}
|
||||
/>
|
||||
<$action-deletetiddler $tiddler=<<qualify "$:/state/popup/export">>/>
|
||||
<$transclude field="description"/>
|
||||
|
@ -1,39 +1,36 @@
|
||||
created: 20170715180840889
|
||||
modified: 20170715180914005
|
||||
tags: $:/tags/Macro
|
||||
title: $:/core/macros/image-picker
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define image-picker-thumbnail(actions)
|
||||
<$button tag="a" tooltip="""$(imageTitle)$"""><$transclude $variable="__actions__"/><$transclude tiddler=<<imageTitle>>/></$button>
|
||||
\procedure image-picker-thumbnail(actions)
|
||||
<$button tag="a" tooltip=<<imageTitle>>><$transclude $variable="actions"/><$transclude tiddler=<<imageTitle>>/></$button>
|
||||
\end
|
||||
|
||||
\define image-picker-list(filter,actions)
|
||||
\procedure image-picker-list(filter,actions)
|
||||
\whitespace trim
|
||||
<$list filter="""$filter$""" variable="imageTitle">
|
||||
<$macrocall $name="image-picker-thumbnail" actions=<<__actions__>>/>
|
||||
<$list filter=<<filter>> variable="imageTitle">
|
||||
<$transclude $variable="image-picker-thumbnail" actions=<<actions>>/>
|
||||
 
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]",subfilter:"")
|
||||
\procedure image-picker(actions,filter:"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]",subfilter:"")
|
||||
\whitespace trim
|
||||
<div class="tc-image-chooser">
|
||||
<$vars state-system=<<qualify "$:/state/image-picker/system">>>
|
||||
<$let state-system=<<qualify "$:/state/image-picker/system">> tv-filter={{{ [<filter>search-replace[$subfilter$],<subfilter>] }}}>
|
||||
<$checkbox tiddler=<<state-system>> field="text" checked="show" unchecked="hide" default="hide">
|
||||
 
|
||||
{{$:/language/SystemTiddlers/Include/Prompt}}
|
||||
<span class="tc-tiny-gap-left">{{$:/language/SystemTiddlers/Include/Prompt}}</span>
|
||||
</$checkbox>
|
||||
<$reveal state=<<state-system>> type="match" text="hide" default="hide" tag="div">
|
||||
<$macrocall $name="image-picker-list" filter="""$filter$ +[!is[system]]""" actions=<<__actions__>>/>
|
||||
<$transclude $variable="image-picker-list" filter=`$(tv-filter)$ +[!is[system]]` actions=<<actions>>/>
|
||||
</$reveal>
|
||||
<$reveal state=<<state-system>> type="nomatch" text="hide" default="hide" tag="div">
|
||||
<$macrocall $name="image-picker-list" filter="""$filter$""" actions=<<__actions__>>/>
|
||||
<$transclude $variable="image-picker-list" filter=<<tv-filter>> actions=<<actions>>/>
|
||||
</$reveal>
|
||||
</$vars>
|
||||
</$let>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define image-picker-include-tagged-images(actions)
|
||||
<$macrocall $name="image-picker" filter="[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]" actions=<<__actions__>>/>
|
||||
\procedure image-picker-include-tagged-images(actions)
|
||||
<$transclude $variable="image-picker" filter="[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]" actions=<<actions>>/>
|
||||
\end
|
||||
|
@ -1,105 +1,137 @@
|
||||
title: $:/core/macros/keyboard-driven-input
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
|
||||
\procedure prefix.bracket() [
|
||||
\procedure suffix.bracket() ]
|
||||
|
||||
\function tf.change-input-tab.next-tab() [[all]addprefix<prefix.bracket>addsuffix<prefix.bracket>addsuffix[shadows+tiddlers]addsuffix<suffix.bracket>addsuffix[tag<tag>!has]addsuffix<prefix.bracket>addsuffix[draft.of]addsuffix<suffix.bracket>addsuffix<beforeafter>addsuffix[<currentState>]addsuffix<suffix.bracket>addsuffix[ :else]addsuffix<prefix.bracket>addsuffix<prefix.bracket>addsuffix<beforeafter>addsuffix<suffix.bracket>addsuffix[match]addsuffix<prefix.bracket>addsuffix[after]addsuffix<suffix.bracket>addsuffix[then<firstTab>]addsuffix<suffix.bracket>addsuffix[ :else]addsuffix<prefix.bracket>addsuffix<prefix.bracket>addsuffix<beforeafter>addsuffix<suffix.bracket>addsuffix[match]addsuffix<prefix.bracket>addsuffix[before]addsuffix<suffix.bracket>addsuffix[then<lastTab>]addsuffix<suffix.bracket>]
|
||||
|
||||
\procedure change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
|
||||
\whitespace trim
|
||||
<$set name="tabsList" filter="[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]">
|
||||
<$set name="tabsList" filter="[<explicitTabList>!is[blank]enlist-input[]] :else[all[shadows+tiddlers]tag<tag>!has[draft.of]]">
|
||||
<$let
|
||||
currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}}
|
||||
currentState={{{ [<stateTitle>!is[missing]get[text]] :else[<defaultState>] }}}
|
||||
firstTab={{{ [enlist<tabsList>nth[1]] }}}
|
||||
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>] }}}
|
||||
nextTabSubFilter=<<tf.change-input-tab.next-tab>>
|
||||
nextTab={{{ [subfilter<nextTabSubFilter>] }}}
|
||||
>
|
||||
<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>
|
||||
$actions$
|
||||
<$action-setfield $tiddler=<<stateTitle>> text=<<nextTab>>/>
|
||||
<<actions>>
|
||||
</$let>
|
||||
</$set>
|
||||
\end
|
||||
|
||||
\define keyboard-input-actions()
|
||||
\procedure keyboard-input-actions()
|
||||
\whitespace trim
|
||||
<$list filter="[<__index__>match[]]">
|
||||
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>
|
||||
</$list>
|
||||
<$list filter="[<__index__>!match[]]">
|
||||
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>
|
||||
</$list>
|
||||
<%if [<index>match[]] %>
|
||||
<$action-setfield $tiddler=<<storeTitle>> text={{{ [<tiddler>get<field>] }}}/>
|
||||
<% endif %>
|
||||
<%if [<index>!match[]] %>
|
||||
<$action-setfield $tiddler=<<storeTitle>> text={{{ [<tiddler>getindex<index>] }}}/>
|
||||
<% endif %>
|
||||
\end
|
||||
|
||||
\define input-next-actions-inner()
|
||||
\procedure input-next-actions-inner()
|
||||
\whitespace trim
|
||||
<$list filter="[<nextItem>minlength[1]]" variable="ignore">
|
||||
<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>
|
||||
<$list filter="[<__index__>match[]]">
|
||||
<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
|
||||
</$list>
|
||||
<$list filter="[<__index__>!match[]]">
|
||||
<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
|
||||
</$list>
|
||||
<$action-setfield $tiddler=<<__refreshTitle__>> text="yes"/>
|
||||
</$list>
|
||||
<%if [<nextItem>minlength[1]] %>
|
||||
<$action-setfield $tiddler=<<selectionStateTitle>> text=<<nextItem>>/>
|
||||
<%if [<index>match[]] %>
|
||||
<$action-setfield $tiddler=<<tiddler>> $field=<<field>> $value={{{ [<nextItem>] :and[splitregexp[(?:.(?!-))+$]] }}}/>
|
||||
<% endif %>
|
||||
<%if [<index>!match[]] %>
|
||||
<$action-setfield $tiddler=<<tiddler>> $index=<<index>> $value={{{ [<nextItem>] :and[splitregexp[(?:.(?!-))+$]] }}}/>
|
||||
<% endif %>
|
||||
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
||||
<% endif %>
|
||||
\end
|
||||
|
||||
\define input-next-actions(afterOrBefore:"after",reverse:"")
|
||||
\procedure input-next-actions-after()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]"
|
||||
variable="ignore"
|
||||
>
|
||||
<%if [<storeTitle>get[text]minlength<filterMinLength>] [<filterMinLength>match[0]] %>
|
||||
<$let
|
||||
userInput={{{ [<__storeTitle__>get[text]] }}}
|
||||
selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}
|
||||
configTiddler={{{ [subfilter<__configTiddlerFilter__>] }}}
|
||||
primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}}
|
||||
secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}
|
||||
userInput={{{ [<storeTitle>get[text]] }}}
|
||||
selectedItem={{{ [<selectionStateTitle>get[text]] }}}
|
||||
configTiddler={{{ [subfilter<configTiddlerFilter>] }}}
|
||||
primaryListFilter={{{ [<configTiddler>get<firstSearchFilterField>] }}}
|
||||
secondaryListFilter={{{ [<configTiddler>get<secondSearchFilterField>] }}}
|
||||
>
|
||||
<$set
|
||||
name="filteredList"
|
||||
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
|
||||
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] :all[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
|
||||
>
|
||||
<$let
|
||||
nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}}
|
||||
nextItem={{{ [enlist<filteredList>after<selectedItem>] :else[enlist<filteredList>nth[1]] }}}
|
||||
firstItem={{{ [enlist<filteredList>nth[1]] }}}
|
||||
lastItem={{{ [enlist<filteredList>last[]] }}}
|
||||
>
|
||||
<$list filter="[<selectedItem>match<firstItem>!match<lastItem>]" variable="ignore">
|
||||
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
|
||||
<<input-next-actions-inner>>
|
||||
</$set>
|
||||
</$list>
|
||||
<$list filter="[<selectedItem>match<lastItem>!match<firstItem>]" variable="ignore">
|
||||
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
|
||||
<<input-next-actions-inner>>
|
||||
</$set>
|
||||
</$list>
|
||||
<$list filter="[<selectedItem>match<firstItem>match<lastItem>]" variable="ignore">
|
||||
<%if [<selectedItem>match<firstItem>!match<lastItem>] [<selectedItem>!match<firstItem>!match<lastItem>] %>
|
||||
<<input-next-actions-inner>>
|
||||
<%elseif [<selectedItem>match<lastItem>!match<firstItem>] %>
|
||||
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
|
||||
<<input-next-actions-inner>>
|
||||
</$set>
|
||||
</$list>
|
||||
<$list filter="[<selectedItem>!match<firstItem>!match<lastItem>]" variable="ignore">
|
||||
<<input-next-actions-inner>>
|
||||
</$list>
|
||||
<%elseif [<selectedItem>match<firstItem>match<lastItem>] %>
|
||||
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
|
||||
<<input-next-actions-inner>>
|
||||
</$set>
|
||||
<% endif %>
|
||||
</$let>
|
||||
</$set>
|
||||
</$let>
|
||||
</$list>
|
||||
<% endif %>
|
||||
\end
|
||||
|
||||
\define keyboard-driven-input(tiddler,storeTitle,field:"text",index:"",tag:"input",type,focus:"",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:"",default:"",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:"0",refreshTitle,selectionStateTitle,cancelPopups:"",configTiddlerFilter,firstSearchFilterField:"first-search-filter",secondSearchFilterField:"second-search-filter")
|
||||
\procedure input-next-actions-before()
|
||||
\whitespace trim
|
||||
<$keyboard key="((input-accept))" actions=<<__inputAcceptActions__>>>
|
||||
<$keyboard key="((input-accept-variant))" actions=<<__inputAcceptVariantActions__>>>
|
||||
<$keyboard key="((input-up))" actions=<<input-next-actions "before" "reverse[]">>>
|
||||
<$keyboard key="((input-down))" actions=<<input-next-actions>>>
|
||||
<$keyboard key="((input-cancel))" actions=<<__inputCancelActions__>>>
|
||||
<%if [<storeTitle>get[text]minlength<filterMinLength>] [<filterMinLength>match[0]] %>
|
||||
<$let
|
||||
userInput={{{ [<storeTitle>get[text]] }}}
|
||||
selectedItem={{{ [<selectionStateTitle>get[text]] }}}
|
||||
configTiddler={{{ [subfilter<configTiddlerFilter>] }}}
|
||||
primaryListFilter={{{ [<configTiddler>get<firstSearchFilterField>] }}}
|
||||
secondaryListFilter={{{ [<configTiddler>get<secondSearchFilterField>] }}}
|
||||
>
|
||||
<$set
|
||||
name="filteredList"
|
||||
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] :all[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
|
||||
>
|
||||
<$let
|
||||
nextItem={{{ [enlist<filteredList>before<selectedItem>] :else[enlist<filteredList>reverse[]nth[1]] }}}
|
||||
firstItem={{{ [enlist<filteredList>nth[1]] }}}
|
||||
lastItem={{{ [enlist<filteredList>last[]] }}}
|
||||
>
|
||||
<%if [<selectedItem>match<firstItem>!match<lastItem>] %>
|
||||
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
|
||||
<<input-next-actions-inner>>
|
||||
</$set>
|
||||
<%elseif [<selectedItem>match<lastItem>!match<firstItem>] [<selectedItem>!match<firstItem>!match<lastItem>] %>
|
||||
<<input-next-actions-inner>>
|
||||
<%elseif [<selectedItem>match<firstItem>match<lastItem>] %>
|
||||
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
|
||||
<<input-next-actions-inner>>
|
||||
</$set>
|
||||
<% endif %>
|
||||
</$let>
|
||||
</$set>
|
||||
</$let>
|
||||
<% endif %>
|
||||
\end
|
||||
|
||||
\procedure keyboard-driven-input(tiddler,storeTitle,field:"text",index:"",tag:"input",type,focus:"",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:"",default:"",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:"0",refreshTitle,selectionStateTitle,cancelPopups:"",configTiddlerFilter,firstSearchFilterField:"first-search-filter",secondSearchFilterField:"second-search-filter")
|
||||
\whitespace trim
|
||||
<$keyboard key="((input-accept))" actions=<<inputAcceptActions>>>
|
||||
<$keyboard key="((input-accept-variant))" actions=<<inputAcceptVariantActions>>>
|
||||
<$keyboard key="((input-up))" actions=<<input-next-actions-before>>>
|
||||
<$keyboard key="((input-down))" actions=<<input-next-actions-after>>>
|
||||
<$keyboard key="((input-cancel))" actions=<<inputCancelActions>>>
|
||||
<$edit-text
|
||||
tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>>
|
||||
inputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>>
|
||||
placeholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>>
|
||||
focus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>>
|
||||
tabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>>
|
||||
refreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>
|
||||
tiddler=<<tiddler>> field=<<field>> index=<<index>>
|
||||
inputActions=<<keyboard-input-actions>> tag=<<tag>> class=<<class>>
|
||||
placeholder=<<placeholder>> default=<<default>> focusPopup=<<focusPopup>>
|
||||
focus=<<focus>> type=<<type>> rows=<<rows>> minHeight=<<minHeight>>
|
||||
tabindex=<<tabindex>> size=<<size>> autoHeight=<<autoHeight>>
|
||||
refreshTitle=<<refreshTitle>> cancelPopups=<<cancelPopups>>
|
||||
/>
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
|
@ -1,14 +1,18 @@
|
||||
title: $:/core/macros/list
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define list-links(filter,type:"ul",subtype:"li",class:"",emptyMessage,field:"caption")
|
||||
\procedure list-links-draggable-drop-actions()
|
||||
<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore<actionTiddler>,<currentTiddler>]"/>
|
||||
\end
|
||||
|
||||
\whitespace trim
|
||||
<$genesis $type=<<__type__>> class=<<__class__>>>
|
||||
<$list filter=<<__filter__>> emptyMessage=<<__emptyMessage__>>>
|
||||
<$genesis $type=<<__subtype__>>>
|
||||
\procedure list-links(filter,type:"ul",subtype:"li",class:"",emptyMessage,field:"caption")
|
||||
<$genesis $type=<<type>> class=<<class>>>
|
||||
<$list filter=<<filter>> emptyMessage=<<emptyMessage>>>
|
||||
<$genesis $type=<<subtype>>>
|
||||
<$link to={{!!title}}>
|
||||
<$let tv-wikilinks="no">
|
||||
<$transclude field=<<__field__>>>
|
||||
<$transclude field=<<field>>>
|
||||
<$view field="title"/>
|
||||
</$transclude>
|
||||
</$let>
|
||||
@ -18,24 +22,19 @@ tags: $:/tags/Macro
|
||||
</$genesis>
|
||||
\end
|
||||
|
||||
\define list-links-draggable-drop-actions()
|
||||
<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter="+[insertbefore<actionTiddler>,<currentTiddler>]"/>
|
||||
\end
|
||||
|
||||
\define list-links-draggable(tiddler,field:"list",emptyMessage,type:"ul",subtype:"li",class:"",itemTemplate)
|
||||
\whitespace trim
|
||||
\procedure list-links-draggable(tiddler,field:"list",emptyMessage,type:"ul",subtype:"li",class:"",itemTemplate)
|
||||
<span class="tc-links-draggable-list">
|
||||
<$vars targetTiddler="""$tiddler$""" targetField="""$field$""">
|
||||
<$genesis $type=<<__type__>> class="$class$">
|
||||
<$list filter="[list[$tiddler$!!$field$]]" emptyMessage=<<__emptyMessage__>>>
|
||||
<$let targetTiddler=<<tiddler>> targetField=<<field>>>
|
||||
<$genesis $type=<<type>> class=<<class>>>
|
||||
<$list filter="[<tiddler>get<field>enlist-input[]]" emptyMessage=<<emptyMessage>>>
|
||||
<$droppable
|
||||
actions=<<list-links-draggable-drop-actions>>
|
||||
tag="""$subtype$"""
|
||||
tag=<<subtype>>
|
||||
enable=<<tv-enable-drag-and-drop>>
|
||||
>
|
||||
<div class="tc-droppable-placeholder"/>
|
||||
<div>
|
||||
<$transclude tiddler="""$itemTemplate$""">
|
||||
<$transclude tiddler=<<itemTemplate>>>
|
||||
<$link to={{!!title}}>
|
||||
<$let tv-wikilinks="no">
|
||||
<$transclude field="caption">
|
||||
@ -60,52 +59,54 @@ tags: $:/tags/Macro
|
||||
</$droppable>
|
||||
</$tiddler>
|
||||
</$genesis>
|
||||
</$vars>
|
||||
</$let>
|
||||
</span>
|
||||
\end
|
||||
|
||||
\define list-tagged-draggable-drop-actions(tag)
|
||||
\whitespace trim
|
||||
\procedure list-tagged-draggable-drop-actions(tag)
|
||||
<!-- Save the current ordering of the tiddlers with this tag -->
|
||||
<$set name="order" filter="[<__tag__>tagging[]]">
|
||||
<$set name="order" filter="[<tag>tagging[]]">
|
||||
<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->
|
||||
<$list filter="[<__tag__>tagging[]]">
|
||||
<$list filter="[<tag>tagging[]]">
|
||||
<$action-deletefield $field="list-before"/>
|
||||
<$action-deletefield $field="list-after"/>
|
||||
</$list>
|
||||
<!-- Save the new order to the Tag Tiddler -->
|
||||
<$action-listops $tiddler=<<__tag__>> $field="list" $filter="+[enlist<order>] +[insertbefore<actionTiddler>,<currentTiddler>]"/>
|
||||
<$action-listops $tiddler=<<tag>> $field="list" $filter="+[enlist<order>] +[insertbefore<actionTiddler>,<currentTiddler>]"/>
|
||||
<!-- Make sure the newly added item has the right tag -->
|
||||
<!-- Removing this line makes dragging tags within the dropdown work as intended -->
|
||||
<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->
|
||||
<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<tag>>/>-->
|
||||
<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->
|
||||
<$list filter="[<actionTiddler>!contains:tags<__tag__>]">
|
||||
<$list filter="[<actionTiddler>!contains:tags<tag>]">
|
||||
<$fieldmangler tiddler=<<actionTiddler>>>
|
||||
<$action-sendmessage $message="tm-add-tag" $param=<<__tag__>>/>
|
||||
<$action-sendmessage $message="tm-add-tag" $param=<<tag>>/>
|
||||
</$fieldmangler>
|
||||
</$list>
|
||||
</$set>
|
||||
\end
|
||||
|
||||
\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"")
|
||||
\whitespace trim
|
||||
\procedure list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div",storyview:"")
|
||||
<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__>>
|
||||
filter=`[<tag>tagging[]$(subFilter)$]`
|
||||
emptyMessage=<<emptyMessage>>
|
||||
storyview=<<storyview>>
|
||||
>
|
||||
<$genesis $type=<<__elementTag__>> class="tc-menu-list-item">
|
||||
<$genesis $type=<<elementTag>> class="tc-menu-list-item">
|
||||
<$droppable
|
||||
actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>"""
|
||||
actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<tag>>/>"""
|
||||
enable=<<tv-enable-drag-and-drop>>
|
||||
>
|
||||
<$genesis $type=<<__elementTag__>> class="tc-droppable-placeholder"/>
|
||||
<$genesis $type=<<__elementTag__>>>
|
||||
<$transclude tiddler="""$itemTemplate$""">
|
||||
<$genesis $type=<<elementTag>> class="tc-droppable-placeholder"/>
|
||||
<$genesis $type=<<elementTag>>>
|
||||
<$transclude tiddler=<<itemTemplate>>>
|
||||
<$link to={{!!title}}>
|
||||
<$view field="title"/>
|
||||
<$let tv-wikilinks="no">
|
||||
<$transclude field="caption">
|
||||
<$view field="title"/>
|
||||
</$transclude>
|
||||
</$let>
|
||||
</$link>
|
||||
</$transclude>
|
||||
</$genesis>
|
||||
@ -114,11 +115,11 @@ tags: $:/tags/Macro
|
||||
</$list>
|
||||
<$tiddler tiddler="">
|
||||
<$droppable
|
||||
actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>"""
|
||||
actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<tag>>/>"""
|
||||
enable=<<tv-enable-drag-and-drop>>
|
||||
>
|
||||
<$genesis $type=<<__elementTag__>> class="tc-droppable-placeholder"/>
|
||||
<$genesis $type=<<__elementTag__>> style="height:0.5em;"/>
|
||||
<$genesis $type=<<elementTag>> class="tc-droppable-placeholder"/>
|
||||
<$genesis $type=<<elementTag>> style="height:0.5em;"/>
|
||||
</$droppable>
|
||||
</$tiddler>
|
||||
</$set>
|
||||
|
@ -1,5 +1,5 @@
|
||||
title: $:/core/macros/show-filter-count
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\whitespace trim
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
title: $:/core/macros/tag-picker
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>]
|
||||
second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>]
|
||||
|
||||
@ -13,11 +13,11 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
|
||||
<!-- tf.tagpicker-dropdown-id is needed if several tap-pickers are shown in one tiddler -->
|
||||
\function tf.tagpicker-dropdown-id()
|
||||
[<qualify $:/state/popup/tags-auto-complete>]
|
||||
[[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] +[join[/]]
|
||||
[[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] :and[join[/]]
|
||||
\end
|
||||
|
||||
\function tf.tagpicker-dropdown-class() [<tf.tagpicker-dropdown-id>sha256[]addprefix[tc-]]
|
||||
\function tf.get-tagpicker-focus-selector() [<tf.tagpicker-dropdown-class>addprefix[.]] .tc-popup-handle +[join[ ]]
|
||||
\function tf.get-tagpicker-focus-selector() [<tf.tagpicker-dropdown-class>addprefix[.]] .tc-popup-handle :and[join[ ]]
|
||||
|
||||
<!-- clean up temporary tiddlers, so the next "pick" starts with a clean input -->
|
||||
<!-- This could probably be optimized / removed if we would use different temp-tiddlers
|
||||
@ -30,7 +30,7 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
|
||||
<!-- trigger __toggle tag__ by keyboard -->
|
||||
\procedure add-tag-actions()
|
||||
<$let tag=<<_tf.getTag>> >
|
||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter='+[toggle<tag>trim[]]'/>
|
||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=':and[toggle<tag>trim[]]'/>
|
||||
<%if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %>
|
||||
<!-- tag has been removed - do nothing -->
|
||||
<%else%>
|
||||
@ -46,7 +46,7 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
|
||||
The second ESC tries to close the "draft tiddler"
|
||||
-->
|
||||
\procedure clear-tags-actions-inner()
|
||||
<%if [<storeTitle>has[text]] ~[<newTagNameTiddler>has[text]] %>
|
||||
<%if [<storeTitle>has[text]] :else[<newTagNameTiddler>has[text]] %>
|
||||
<<delete-tag-state-tiddlers>>
|
||||
<%else%>
|
||||
<<cancel-delete-tiddler-actions "cancel">>
|
||||
@ -90,7 +90,7 @@ The second ESC tries to close the "draft tiddler"
|
||||
<!-- tf.get-tagpicker-focus-selector has to be resolved for $:/core/ui/TagPickerTagTemplate,
|
||||
othwerwise qualify in tf.tagpicker-dropdown-id causes problems -->
|
||||
<$let currentTiddler=<<tag>>
|
||||
button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] -[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
|
||||
button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] :except[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
|
||||
get-tagpicker-focus-selector=`${[<tf.get-tagpicker-focus-selector>]}$`
|
||||
>
|
||||
{{||$:/core/ui/TagPickerTagTemplate}}
|
||||
@ -102,10 +102,10 @@ The second ESC tries to close the "draft tiddler"
|
||||
|
||||
<!-- tag-picker-inner is the main function -->
|
||||
\procedure tag-picker-inner()
|
||||
<div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] +[join[ ]] }}}>
|
||||
<div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] :and[join[ ]] }}}>
|
||||
<div class="tc-edit-add-tag-ui">
|
||||
<span class="tc-add-tag-name tc-small-gap-right">
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
<$transclude $variable="keyboard-driven-input"
|
||||
tiddler=<<newTagNameTiddler>>
|
||||
storeTitle=<<storeTitle>>
|
||||
refreshTitle=<<refreshTitle>>
|
||||
@ -117,7 +117,7 @@ The second ESC tries to close the "draft tiddler"
|
||||
focusPopup=<<tf.tagpicker-dropdown-id>>
|
||||
class="tc-edit-texteditor tc-popup-handle"
|
||||
tabindex=<<tabIndex>>
|
||||
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}
|
||||
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}}
|
||||
filterMinLength={{$:/config/Tags/MinLength}}
|
||||
cancelPopups=<<cancelPopups>>
|
||||
configTiddlerFilter="[[$:/core/macros/tag-picker]]"
|
||||
@ -146,9 +146,9 @@ The second ESC tries to close the "draft tiddler"
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
<%if [<tf.tagpicker-dropdown-id>has[text]] %>
|
||||
<div class="tc-block-dropdown tc-block-tags-dropdown">
|
||||
<$macrocall $name="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage}}/>
|
||||
<$transclude $variable="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage}}/>
|
||||
<hr>
|
||||
<$macrocall $name="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage/System}}/>
|
||||
<$transclude $variable="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage/System}}/>
|
||||
</div>
|
||||
<%endif%>
|
||||
</div>
|
||||
@ -161,7 +161,7 @@ The second ESC tries to close the "draft tiddler"
|
||||
\function _tf.getUserInput() [<storeTitle>get[text]]
|
||||
\function _tf.getTag() [<newTagNameTiddler>get[text]]
|
||||
<!-- Use this function if tag-picker is a stand alone macro. Otherwise use "newTagNameTiddler" defined for fieldmangler in EditTemplate -->
|
||||
\function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]]
|
||||
\function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] :and[join[/]] [<qualify>] :and[join[]]
|
||||
|
||||
<!-- keep those variables because they may "bleed" into macros using old syntax -->
|
||||
<!-- "nonSystemTagsFilter", "systemTagsFilter" __need to be the same__ as fields: "first-search-filter", "second-search-filter" -->
|
||||
@ -174,10 +174,10 @@ The second ESC tries to close the "draft tiddler"
|
||||
saveTiddler={{{ [<tiddler>is[blank]then<currentTiddler>else<tiddler>] }}}
|
||||
|
||||
newTagNameTiddler={{{ [[newTagNameTiddler]is[variable]then<newTagNameTiddler>] :else[<_tf.makeTagNameTiddler>] }}}
|
||||
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}}
|
||||
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] :and[join[/]] [<qualify>] :and[join[]] }}}
|
||||
|
||||
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
|
||||
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}
|
||||
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] :else[<newTagNameSelectionTiddlerQualified>] }}}
|
||||
|
||||
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
|
||||
|
||||
@ -186,6 +186,6 @@ The second ESC tries to close the "draft tiddler"
|
||||
|
||||
cancelPopups="yes"
|
||||
>
|
||||
<$macrocall $name="tag-picker-inner"/>
|
||||
<$transclude $variable="tag-picker-inner"/>
|
||||
</$let>
|
||||
\end
|
||||
|
@ -1,5 +1,5 @@
|
||||
title: $:/core/macros/testcase
|
||||
tags: $:/tags/Macro $:/tags/Global
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\whitespace trim
|
||||
|
||||
|
@ -1,25 +1,25 @@
|
||||
created: 20141212105914482
|
||||
modified: 20141212110330815
|
||||
tags: $:/tags/Macro
|
||||
title: $:/core/macros/timeline
|
||||
|
||||
<!-- Override one or both of the following two macros with a global or local macro of the same name
|
||||
if you need to change how titles are displayed on a timeline -->
|
||||
|
||||
\define timeline-title() <$view field="title"/>
|
||||
\define timeline-link() <$link to={{!!title}}><<timeline-title>></$link>
|
||||
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
|
||||
\procedure timeline-title() <$view field="title"/>
|
||||
\procedure timeline-link() <$link to={{!!title}}><<timeline-title>></$link>
|
||||
\procedure timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
|
||||
\whitespace trim
|
||||
<div class="tc-timeline">
|
||||
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]">
|
||||
<$set name="tv-tids" filter=`[!is[system]$(subfilter)$has<dateField>!sort<dateField>limit<limit>]`>
|
||||
<$list filter="[enlist<tv-tids>eachday<dateField>]">
|
||||
<div class="tc-menu-list-item">
|
||||
<$view field="$dateField$" format="date" template="$format$"/>
|
||||
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]">
|
||||
<$view field=<<dateField>> format="date" template=<<format>>/>
|
||||
<$list filter=`[enlist<tv-tids>sameday:$(dateField)${!!$(dateField)$}]`>
|
||||
<div class="tc-menu-list-subitem">
|
||||
<<timeline-link>>
|
||||
</div>
|
||||
</$list>
|
||||
</div>
|
||||
</$list>
|
||||
</$set>
|
||||
</div>
|
||||
\end
|
||||
|
@ -1,7 +1,6 @@
|
||||
title: $:/core/macros/toc
|
||||
tags: $:/tags/Macro
|
||||
|
||||
|
||||
\define toc-open-icon() $:/core/images/down-arrow
|
||||
\define toc-closed-icon() $:/core/images/right-arrow
|
||||
|
||||
@ -37,7 +36,10 @@ tags: $:/tags/Macro
|
||||
\end
|
||||
|
||||
\define toc(tag,sort:"",itemClassFilter:"", exclude)
|
||||
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/>
|
||||
\whitespace trim
|
||||
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} >
|
||||
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/>
|
||||
</$let>
|
||||
\end
|
||||
|
||||
\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
|
||||
@ -99,7 +101,7 @@ tags: $:/tags/Macro
|
||||
|
||||
\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path)
|
||||
\whitespace trim
|
||||
<$let tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
|
||||
<ol class="tc-toc toc-expandable">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]""">
|
||||
@ -118,7 +120,7 @@ tags: $:/tags/Macro
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item" >
|
||||
<li class=<<toc-item-class>>>
|
||||
<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>
|
||||
<$list filter="[all[current]tagging[]$sort$limit[1]] -[subfilter<__exclude__>]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
|
||||
<$list filter="[all[current]tagging[]$sort$] -[subfilter<__exclude__>] +[limit[1]]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>">
|
||||
<$reveal type="nomatch" stateTitle=<<toc-state>> text="open">
|
||||
<$button setTitle=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
|
||||
<$transclude tiddler=<<toc-closed-icon>> />
|
||||
@ -145,7 +147,7 @@ tags: $:/tags/Macro
|
||||
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
|
||||
<li class=<<toc-item-class>>>
|
||||
<$list filter="[all[current]tagging[]$sort$limit[1]] -[subfilter<__exclude__>]" variable="ignore" emptyMessage="""<$button class="tc-btn-invisible">{{$:/core/images/blank}}</$button><span class="toc-item-muted"><<toc-caption>></span>""">
|
||||
<$list filter="[all[current]tagging[]$sort$] -[subfilter<__exclude__>] +[limit[1]]" variable="ignore" emptyMessage="""<$button class="tc-btn-invisible">{{$:/core/images/blank}}</$button><span class="toc-item-muted"><<toc-caption>></span>""">
|
||||
<$reveal type="nomatch" stateTitle=<<toc-state>> text="open">
|
||||
<$button setTitle=<<toc-state>> setTo="open" class="tc-btn-invisible tc-popup-keep">
|
||||
<$transclude tiddler=<<toc-closed-icon>> />
|
||||
@ -173,7 +175,7 @@ tags: $:/tags/Macro
|
||||
|
||||
\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path)
|
||||
\whitespace trim
|
||||
<$let tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
|
||||
<ol class="tc-toc toc-selective-expandable">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]""">
|
||||
@ -188,31 +190,35 @@ tags: $:/tags/Macro
|
||||
|
||||
\define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude)
|
||||
\whitespace trim
|
||||
<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
|
||||
<div class="tc-tabbed-table-of-contents">
|
||||
<$linkcatcher to=<<__selectedTiddler__>>>
|
||||
<div class="tc-table-of-contents">
|
||||
<$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/>
|
||||
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}}>
|
||||
<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
|
||||
<div class="tc-tabbed-table-of-contents">
|
||||
<$linkcatcher to=<<__selectedTiddler__>>>
|
||||
<div class="tc-table-of-contents">
|
||||
<$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/>
|
||||
</div>
|
||||
</$linkcatcher>
|
||||
<div class="tc-tabbed-table-of-contents-content">
|
||||
<$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
|
||||
<$transclude mode="block" tiddler=<<__template__>>>
|
||||
<h1><<toc-caption>></h1>
|
||||
<$transclude mode="block">$missingText$</$transclude>
|
||||
</$transclude>
|
||||
</$reveal>
|
||||
<$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
|
||||
$unselectedText$
|
||||
</$reveal>
|
||||
</div>
|
||||
</$linkcatcher>
|
||||
<div class="tc-tabbed-table-of-contents-content">
|
||||
<$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
|
||||
<$transclude mode="block" tiddler=<<__template__>>>
|
||||
<h1><<toc-caption>></h1>
|
||||
<$transclude mode="block">$missingText$</$transclude>
|
||||
</$transclude>
|
||||
</$reveal>
|
||||
<$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
|
||||
$unselectedText$
|
||||
</$reveal>
|
||||
</div>
|
||||
</div>
|
||||
</$tiddler>
|
||||
</$tiddler>
|
||||
</$let>
|
||||
\end
|
||||
|
||||
\define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude)
|
||||
\whitespace trim
|
||||
<$linkcatcher to=<<__selectedTiddler__>>>
|
||||
<$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> />
|
||||
</$linkcatcher>
|
||||
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}}>
|
||||
<$linkcatcher to=<<__selectedTiddler__>>>
|
||||
<$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> />
|
||||
</$linkcatcher>
|
||||
</$let>
|
||||
\end
|
||||
|
@ -1,28 +1,28 @@
|
||||
title: $:/core/macros/translink
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define translink(title,mode:"block")
|
||||
\procedure translink(title,mode:"block")
|
||||
\whitespace trim
|
||||
<$list filter="[<__mode__>match[block]]">
|
||||
<%if [<mode>match[block]] %>
|
||||
<div class="tc-translink">
|
||||
<div>
|
||||
<$link to="""$title$""">
|
||||
<h1><$text text="""$title$"""/></h1>
|
||||
<$link to=<<title>>>
|
||||
<h1><$text text=<<title>>/></h1>
|
||||
</$link>
|
||||
<$transclude tiddler="""$title$""" mode="block">
|
||||
<$set name="currentTiddler" value="""$title$"""><$transclude tiddler="$:/language/MissingTiddler/Hint"/></$set>
|
||||
<$transclude tiddler=<<title>> mode="block">
|
||||
<$set name="currentTiddler" value=<<title>>><$transclude tiddler="$:/language/MissingTiddler/Hint"/></$set>
|
||||
</$transclude>
|
||||
</div>
|
||||
</div>
|
||||
</$list>
|
||||
<$list filter="[<__mode__>match[inline]]">
|
||||
<%endif%>
|
||||
<%if [<mode>match[inline]] %>
|
||||
<span class="tc-translink">
|
||||
<$link to="""$title$""">
|
||||
<$text text="""$title$"""/>
|
||||
<$link to=<<title>> class="tc-tiny-gap-right">
|
||||
<$text text=<<title>>/>
|
||||
</$link>
|
||||
 (<$transclude tiddler="""$title$""" mode="inline">
|
||||
<$set name="currentTiddler" value="""$title$"""><$transclude tiddler="$:/language/MissingTiddler/Hint"/></$set>
|
||||
(<$transclude tiddler=<<title>> mode="inline">
|
||||
<$set name="currentTiddler" value=<<title>>><$transclude tiddler="$:/language/MissingTiddler/Hint"/></$set>
|
||||
</$transclude>)
|
||||
</span>
|
||||
</$list>
|
||||
<%endif%>
|
||||
\end
|
||||
|
@ -1,62 +1,58 @@
|
||||
title: $:/core/macros/tree
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define leaf-link(full-title,chunk,separator: "/")
|
||||
<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>
|
||||
\procedure leaf-link(full-title,chunk,separator: "/")
|
||||
<$link to=<<full-title>>><$text text=<<chunk>>/></$link>
|
||||
\end
|
||||
|
||||
\define leaf-node(prefix,chunk)
|
||||
\whitespace trim
|
||||
\procedure leaf-node(prefix,chunk)
|
||||
<li>
|
||||
<$list filter="[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]" variable="full-title">
|
||||
<$list filter="[<full-title>removeprefix<__prefix__>]" variable="chunk">
|
||||
<span>{{$:/core/images/file}}</span> <$macrocall $name="leaf-link" full-title=<<full-title>> chunk=<<chunk>>/>
|
||||
<$list filter="[<prefix>addsuffix<chunk>is[shadow]] [<prefix>addsuffix<chunk>is[tiddler]]" variable="full-title">
|
||||
<$list filter="[<full-title>removeprefix<prefix>]" variable="chunk">
|
||||
<span class="tc-tiny-gap-right">{{$:/core/images/file}}</span><$transclude $variable="leaf-link" full-title=<<full-title>> chunk=<<chunk>>/>
|
||||
</$list>
|
||||
</$list>
|
||||
</li>
|
||||
\end
|
||||
|
||||
\define branch-node(prefix,chunk,separator: "/")
|
||||
\whitespace trim
|
||||
\procedure branch-node(prefix,chunk,separator: "/")
|
||||
<li>
|
||||
<$set name="reveal-state" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>
|
||||
<$set name="reveal-state" value={{{ [[$:/state/tree/]addsuffix<prefix>addsuffix<chunk>] }}}>
|
||||
<$reveal type="nomatch" stateTitle=<<reveal-state>> text="show">
|
||||
<$button setTitle=<<reveal-state>> setTo="show" class="tc-btn-invisible">
|
||||
{{$:/core/images/folder}} <$text text=<<__chunk__>>/>
|
||||
{{$:/core/images/folder}} <$text text=<<chunk>>/>
|
||||
</$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" stateTitle=<<reveal-state>> text="show">
|
||||
<$button setTitle=<<reveal-state>> setTo="hide" class="tc-btn-invisible">
|
||||
{{$:/core/images/folder}} <$text text=<<__chunk__>>/>
|
||||
{{$:/core/images/folder}} <$text text=<<chunk>>/>
|
||||
</$button>
|
||||
</$reveal>
|
||||
 
|
||||
<span>(<$count filter="[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]"/>)</span>
|
||||
<span class="tc-tiny-gap-left">(<$count filter="[all[shadows+tiddlers]removeprefix<prefix>removeprefix<chunk>] -[<prefix>addsuffix<chunk>]"/>)</span>
|
||||
<$reveal type="match" stateTitle=<<reveal-state>> text="show">
|
||||
<$macrocall $name="tree-node" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>
|
||||
<$transclude $variable="tree-node" prefix={{{ [<prefix>addsuffix<chunk>] }}} separator=<<separator>>/>
|
||||
</$reveal>
|
||||
</$set>
|
||||
</li>
|
||||
\end
|
||||
|
||||
\define tree-node(prefix,separator: "/")
|
||||
\whitespace trim
|
||||
\procedure tree-node(prefix,separator: "/")
|
||||
<ol>
|
||||
<$list filter="[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]" variable="chunk">
|
||||
<$macrocall $name="leaf-node" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>
|
||||
<$list filter="[all[shadows+tiddlers]removeprefix<prefix>splitbefore<separator>sort[]!suffix<separator>]" variable="chunk">
|
||||
<$transclude $variable="leaf-node" prefix=<<prefix>> chunk=<<chunk>> separator=<<separator>>/>
|
||||
</$list>
|
||||
<$list filter="[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]" variable="chunk">
|
||||
<$macrocall $name="branch-node" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>
|
||||
<$list filter="[all[shadows+tiddlers]removeprefix<prefix>splitbefore<separator>sort[]suffix<separator>]" variable="chunk">
|
||||
<$transclude $variable="branch-node" prefix=<<prefix>> chunk=<<chunk>> separator=<<separator>>/>
|
||||
</$list>
|
||||
</ol>
|
||||
\end
|
||||
|
||||
\define tree(prefix: "$:/",separator: "/")
|
||||
\whitespace trim
|
||||
\procedure tree(prefix: "$:/",separator: "/")
|
||||
<div class="tc-tree">
|
||||
<span><$text text=<<__prefix__>>/></span>
|
||||
<span><$text text=<<prefix>>/></span>
|
||||
<div>
|
||||
<$macrocall $name="tree-node" prefix=<<__prefix__>> separator=<<__separator__>>/>
|
||||
<$transclude $variable="tree-node" prefix=<<prefix>> separator=<<separator>>/>
|
||||
</div>
|
||||
</div>
|
||||
\end
|
||||
|
@ -3,7 +3,7 @@ title: $:/snippets/paletteswitcher
|
||||
\whitespace trim
|
||||
<$linkcatcher to="$:/palette">
|
||||
<div class="tc-chooser">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Palette]!is[draft]sort[name]]">
|
||||
<$set name="cls" filter="[all[current]prefix{$:/palette}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item">
|
||||
<div class=<<cls>>>
|
||||
<$link to={{!!title}}>
|
||||
|
@ -1,2 +1,2 @@
|
||||
title: $:/tags/ViewTemplateBodyFilter
|
||||
list: $:/config/ViewTemplateBodyFilters/testcase $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/code-body $:/config/ViewTemplateBodyFilters/stylesheet $:/config/ViewTemplateBodyFilters/core-ui-advanced-search $:/config/ViewTemplateBodyFilters/core-ui-tags $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/default
|
||||
list: $:/config/ViewTemplateBodyFilters/testcase $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/code-body $:/config/ViewTemplateBodyFilters/stylesheet $:/config/ViewTemplateBodyFilters/core-ui-advanced-search $:/config/ViewTemplateBodyFilters/core-ui-tags $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/html $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/default
|
||||
|
9
editions/dev/tiddlers/$__github-ribbon.tid
Normal file
9
editions/dev/tiddlers/$__github-ribbon.tid
Normal file
@ -0,0 +1,9 @@
|
||||
code-body: yes
|
||||
created: 20241205094051389
|
||||
modified: 20241205094051389
|
||||
tags: $:/tags/PageTemplate
|
||||
title: $:/github-ribbon
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\whitespace trim
|
||||
<$transclude $tiddler="$:/plugins/tiddlywiki/github-fork-ribbon/template" top="30px" fixed=fixed color="green"/>
|
@ -1,114 +0,0 @@
|
||||
created: 20150117152607000
|
||||
modified: 201804111739
|
||||
tags: $:/tags/Macro
|
||||
title: $:/editions/dev/doc-macros
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define .concat(1,2,3,4,5) $1$$2$$3$$4$$5$
|
||||
|
||||
\define .def(_) <dfn class="doc-def">$_$</dfn>
|
||||
\define .em(_) <em class="doc-em">$_$</em>
|
||||
\define .strong(_) <strong class="doc-strong">$_$</strong>
|
||||
\define .place(_) <code class="doc-place">$_$</code>
|
||||
\define .word(_) "$_$"
|
||||
|
||||
\define .preamble(_) :.doc-preamble $_$
|
||||
\define .note(_)
|
||||
@@.doc-note
|
||||
;Note
|
||||
: $_$
|
||||
@@
|
||||
\end
|
||||
|
||||
\define .tid(_) <code class="doc-tiddler">$_$</code>
|
||||
\define .tag(_) <code class="doc-tag">$_$</code>
|
||||
\define .field(_) <code class="doc-field">$_$</code>
|
||||
\define .value(_) <code class="doc-value">$_$</code>
|
||||
\define .op(_) <code class="doc-operator">$_$</code>
|
||||
\define .var(_) <code class="doc-var">$_$</code>
|
||||
\define .wid(_) <code class="doc-widget">$$_$</code>
|
||||
\define .attr(_) <code class="doc-attr">$_$</code>
|
||||
\define .param(_) <code class="doc-param">$_$</code>
|
||||
|
||||
\define .mtitle(_) $_$ Macro
|
||||
\define .otitle(_) $_$ Operator
|
||||
\define .vtitle(_) $_$ Variable
|
||||
|
||||
\define .link(_,to) <$link to="$to$">$_$</$link>
|
||||
\define .clink(_,to) <span class="doc-clink"><<.link """$_$""" "$to$">></span>
|
||||
\define .dlink(_,to) <$macrocall $name=".link" _=<<.def "$_$">> to="$to$">/>
|
||||
\define .dlink-ex(_,to) <a href="$to$" class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><<.def "$_$">></a>
|
||||
\define .flink(to) <$macrocall $name=".link" _=<<.field {{$to$!!caption}}>> to="$to$"/>
|
||||
\define .mlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.mtitle "$_$">>/>
|
||||
\define .mlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/>
|
||||
\define .olink(_) <$macrocall $name=".link" _=<<.op "$_$">> to=<<.otitle "$_$">>/>
|
||||
\define .olink2(_,to) <$macrocall $name=".link" _=<<.op "$_$">> to=<<.otitle "$to$">>/>
|
||||
\define .vlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.vtitle "$_$">>/>
|
||||
\define .vlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/>
|
||||
\define .wlink(to) <$macrocall $name=".link" _=<<.wid {{$to$!!caption}}>> to="$to$"/>
|
||||
\define .wlink2(_,to) <$macrocall $name=".link" _="$_$" to="$to$"/>
|
||||
|
||||
\define .key(_) <span class="doc-key">$_$</span>
|
||||
\define .combokey(_) <$macrocall $name=".if" cond="$_$" then=<<.key '$_$'>>/>
|
||||
\define .keycombo(1,2,3,4) <<.combokey "$1$">><<.if "$2$" +>><<.combokey "$2$">><<.if "$3$" +>><<.combokey "$3$">><<.if "$4$" +>><<.combokey "$4$">>
|
||||
|
||||
\define .tab(_) <span class="doc-tab">{{$_$!!caption}}</span>
|
||||
\define .sidebar-tab(_) <<.tab "$:/core/ui/SideBar/$_$">>
|
||||
\define .more-tab(_) <<.tab "$:/core/ui/MoreSideBar/$_$">>
|
||||
\define .info-tab(_) <<.tab "$:/core/ui/TiddlerInfo/$_$">>
|
||||
\define .controlpanel-tab(_) <<.tab "$:/core/ui/ControlPanel/$_$">>
|
||||
\define .advancedsearch-tab(_) <<.tab "$:/core/ui/AdvancedSearch/$_$">>
|
||||
\define .toc-tab() <<.tab "TableOfContents">>
|
||||
\define .example-tab(_) <span class="doc-tab">$_$</span>
|
||||
|
||||
\define .button(_) <span class="doc-button">{{$:/core/ui/Buttons/$_$!!caption}}</span>
|
||||
|
||||
\define .tip(_) <div class="doc-icon-block"><div class="doc-block-icon">{{$:/core/images/tip}}</div> $_$</div>
|
||||
\define .warning(_) <div class="doc-icon-block"><div class="doc-block-icon">{{$:/core/images/warning}}</div> $_$</div>
|
||||
|
||||
\define .state-prefix() $:/state/editions/tw5.com/
|
||||
|
||||
\define .lorem()
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
\end
|
||||
|
||||
\define .toc-lorem()
|
||||
This is an example tiddler. See [[Table-of-Contents Macros (Examples)]].
|
||||
|
||||
<<.lorem>>
|
||||
\end
|
||||
|
||||
\define .example(n,eg,egvar:NO-SUCH-VAR)
|
||||
<div class="doc-example">
|
||||
<$reveal default="$egvar$" type="match" text="NO-SUCH-VAR">
|
||||
<$macrocall $name="copy-to-clipboard-above-right" src="""$eg$"""/>
|
||||
<$codeblock code="""$eg$"""/>
|
||||
</$reveal>
|
||||
<$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR">
|
||||
<!-- allow an example to contain """ -->
|
||||
<$macrocall $name="copy-to-clipboard-above-right" src=<<$egvar$>>/>
|
||||
<$codeblock code=<<$egvar$>>/>
|
||||
</$reveal>
|
||||
<$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state">
|
||||
<$reveal state=<<.state>> type="nomatch" text="show">
|
||||
<dl>
|
||||
<dd><$button set=<<.state>> setTo="show">Try it</$button></dd>
|
||||
</dl>
|
||||
</$reveal>
|
||||
<$reveal state=<<.state>> type="match" text="show">
|
||||
<dl>
|
||||
<dd><$button set=<<.state>> setTo="">Hide</$button></dd>
|
||||
</dl>
|
||||
<blockquote class="doc-example-result">
|
||||
<$reveal default="$egvar$" type="match" text="NO-SUCH-VAR">
|
||||
$eg$
|
||||
</$reveal>
|
||||
<$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR">
|
||||
<<$egvar$>>
|
||||
</$reveal>
|
||||
</blockquote>
|
||||
</$reveal>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
<pre><$view field="text"/></pre>
|
@ -1,40 +0,0 @@
|
||||
created: 20150117152612000
|
||||
modified: 20230325101137075
|
||||
tags: $:/tags/Stylesheet
|
||||
title: $:/editions/tw5.com/doc-styles
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
a.doc-from-version.tc-tiddlylink {
|
||||
display: inline-block;
|
||||
border-radius: 1em;
|
||||
background: <<colour muted-foreground>>;
|
||||
color: <<colour background>>;
|
||||
fill: <<colour background>>;
|
||||
padding: 0 0.4em;
|
||||
font-size: 0.7em;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
a.doc-deprecated-version.tc-tiddlylink {
|
||||
display: inline-block;
|
||||
border-radius: 1em;
|
||||
background: red;
|
||||
color: <<colour background>>;
|
||||
fill: <<colour background>>;
|
||||
padding: 0 0.4em;
|
||||
font-size: 0.7em;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
|
||||
.doc-deprecated-version svg,
|
||||
.doc-from-version svg {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: text-bottom;
|
||||
}
|
@ -1,3 +1,5 @@
|
||||
title: $:/_tw5.com-dev-styles
|
||||
tags: $:/tags/Stylesheet
|
||||
list-after: $:/editions/tw5.com/doc-styles
|
||||
|
||||
<!-- styles that are unique to the TW dev edition. If possible use $:/_tw_shared/styles or $:/editions/tw5.com/doc-styles -->
|
@ -1,14 +0,0 @@
|
||||
code-body: yes
|
||||
created: 20161008085627406
|
||||
modified: 20221007122259593
|
||||
tags: $:/tags/Macro
|
||||
title: $:/editions/tw5.com/version-macros
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define .from-version(version)
|
||||
<$link to={{{ [<__version__>addprefix[Release ]] }}} class="doc-from-version">{{$:/core/images/warning}} New in: <$text text=<<__version__>>/></$link>
|
||||
\end
|
||||
|
||||
\define .deprecated-since(version, superseded:"")
|
||||
<$link to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Deprecated from v<$text text=<<__version__>>/></$link> <%if [<__superseded__>else[]!match[]] %>(see <$link to=<<__superseded__>>><$text text=<<__superseded__>>/></$link>)<%endif%>
|
||||
\end
|
@ -33,7 +33,7 @@
|
||||
"de-AT",
|
||||
"de-DE",
|
||||
"el-GR",
|
||||
"en-PH",
|
||||
"en-PH",
|
||||
"en-US",
|
||||
"es-ES",
|
||||
"fa-IR",
|
||||
|
@ -1,33 +1,9 @@
|
||||
title: Translations
|
||||
|
||||
\define flag-title()
|
||||
$(languagePluginTitle)$/icon
|
||||
\end
|
||||
|
||||
TiddlyWiki is currently available in <$count filter="[[$:/languages/en-GB]] [plugin-type[language]sort[title]] -[[$:/languages/de-AT]]"/> languages:
|
||||
|
||||
<div class="tc-drop-down-language-chooser" style="font-size: 7px; line-height: 8px; -moz-columns:6; -webkit-columns:6; columns:6;">
|
||||
<$list filter="[[$:/languages/en-GB]] [plugin-type[language]sort[title]] -[[$:/languages/de-AT]]">
|
||||
<div class="tc-language-list">
|
||||
<span class="tc-language-list-name tc-image-button">
|
||||
<$set name="languagePluginTitle" value=<<currentTiddler>>>
|
||||
<$transclude subtiddler=<<flag-title>>>
|
||||
<$list filter="[all[current]field:title[$:/languages/en-GB]]">
|
||||
<$transclude tiddler="$:/languages/en-GB/icon"/>
|
||||
</$list>
|
||||
</$transclude>
|
||||
</$set>
|
||||
<$view field="description">
|
||||
<$view field="name">
|
||||
<$view field="title"/>
|
||||
</$view>
|
||||
</$view>
|
||||
<$view subtiddler="$:/language/ControlPanel/Basics/Language/Prompt">
|
||||
<$view tiddler="$:/language/ControlPanel/Basics/Language/Prompt"/>
|
||||
</$view>
|
||||
</span>
|
||||
</div>
|
||||
</$list>
|
||||
<div style.height="400px" style.overflowY="auto">
|
||||
{{$:/snippets/languageswitcher}}
|
||||
</div>
|
||||
|
||||
Find out how to [[Get Started]].
|
||||
|
@ -25,6 +25,7 @@
|
||||
"de-DE",
|
||||
"el-GR",
|
||||
"en-US",
|
||||
"en-PH",
|
||||
"es-ES",
|
||||
"fa-IR",
|
||||
"fr-FR",
|
||||
@ -34,12 +35,15 @@
|
||||
"it-IT",
|
||||
"ja-JP",
|
||||
"ko-KR",
|
||||
"mk-MK",
|
||||
"nl-NL",
|
||||
"pa-IN",
|
||||
"pl-PL",
|
||||
"pt-BR",
|
||||
"pt-PT",
|
||||
"ru-RU",
|
||||
"sk-SK",
|
||||
"sl-SI",
|
||||
"sv-SE",
|
||||
"zh-CN",
|
||||
"zh-Hans",
|
||||
|
@ -0,0 +1,6 @@
|
||||
created: 20241008104504617
|
||||
modified: 20241008105625074
|
||||
tags: $:/tags/ViewTemplate/Subtitle
|
||||
title: $:/config/ViewTemplateSubtitle/original-modified
|
||||
|
||||
<$view field="original-modified" format="date" template="(原文: YYYY年MM月DD日(ddd) 0hh:0mm)"/>
|
@ -0,0 +1,8 @@
|
||||
created: 20220219141117559
|
||||
list-before: $:/config/ViewTemplateTitleFilters/default
|
||||
modified: 20240929101800579
|
||||
original-modified: 20220220192507247
|
||||
tags: $:/tags/ViewTemplateTitleFilter
|
||||
title: $:/config/ViewTemplateTitleFilters/fr-default
|
||||
|
||||
[has[ja-title]then[$:/core/ui/ViewTemplate/title/ja-default]]
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user