1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-26 19:47:20 +00:00

Merge branch 'master' into toc-v5.3.x-rewrite

This commit is contained in:
pmario 2024-11-13 19:16:59 +01:00
commit 99fef236fb
646 changed files with 9536 additions and 2474 deletions

View File

@ -1,8 +0,0 @@
# Ignore "third party" code whose style we will not change.
/boot/sjcl.js
/core/modules/utils/base64-utf8/base64-utf8.module.js
/core/modules/utils/base64-utf8/base64-utf8.module.min.js
/core/modules/utils/diff-match-patch/diff_match_patch.js
/core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js
/core/modules/utils/dom/csscolorparser.js
/plugins/tiddlywiki/*/files/

View File

@ -1,286 +0,0 @@
env:
browser: true
commonjs: true
es2021: true
node: true
extends: 'eslint:recommended'
globals:
"$tw": "writable" # temporary
parserOptions:
ecmaVersion: 5
rules:
array-bracket-newline: 'off'
array-bracket-spacing: 'off'
array-callback-return: 'off'
array-element-newline: 'off'
arrow-body-style: error
arrow-parens:
- error
- as-needed
arrow-spacing:
- error
- after: true
before: true
block-scoped-var: 'off'
block-spacing: 'off'
brace-style: 'off'
callback-return: 'off'
camelcase: 'off'
capitalized-comments: 'off'
class-methods-use-this: error
comma-dangle: 'off'
comma-spacing: 'off'
comma-style: 'off'
complexity: 'off'
computed-property-spacing: 'off'
consistent-return: 'off'
consistent-this: 'off'
curly: 'off'
default-case: 'off'
default-case-last: error
default-param-last: error
dot-location: 'off'
dot-notation: 'off'
eol-last: 'off'
eqeqeq: 'off'
func-call-spacing: 'off'
func-name-matching: 'off'
func-names: 'off'
func-style: 'off'
function-call-argument-newline: 'off'
function-paren-newline: 'off'
generator-star-spacing: error
global-require: 'off'
grouped-accessor-pairs: error
guard-for-in: 'off'
handle-callback-err: 'off'
id-blacklist: error
id-denylist: error
id-length: 'off'
id-match: error
implicit-arrow-linebreak: error
indent: 'off'
indent-legacy: 'off'
init-declarations: 'off'
jsx-quotes: error
key-spacing: 'off'
keyword-spacing:
- error
- before: true
after: false
overrides:
'case':
after: true
'do':
'after': true
'else':
after: true
'return':
after: true
'throw':
after: true
'try':
after: true
line-comment-position: 'off'
linebreak-style: 'off'
lines-around-comment: 'off'
lines-around-directive: 'off'
lines-between-class-members: error
max-classes-per-file: error
max-depth: 'off'
max-len: 'off'
max-lines: 'off'
max-lines-per-function: 'off'
max-nested-callbacks: error
max-params: 'off'
max-statements: 'off'
max-statements-per-line: 'off'
multiline-comment-style: 'off'
multiline-ternary: 'off'
new-parens: 'off'
newline-after-var: 'off'
newline-before-return: 'off'
newline-per-chained-call: 'off'
no-alert: 'off'
no-array-constructor: 'off'
no-await-in-loop: error
no-bitwise: 'off'
no-buffer-constructor: 'off'
no-caller: error
no-catch-shadow: 'off'
no-confusing-arrow: error
no-console: 'off'
no-constant-condition:
- error
- checkLoops: false
no-constructor-return: error
no-continue: 'off'
no-div-regex: 'off'
no-duplicate-imports: error
no-else-return: 'off'
no-empty-function: 'off'
no-eq-null: 'off'
no-eval: 'off'
no-extend-native: 'off'
no-extra-bind: 'off'
no-extra-label: 'off'
no-extra-parens: 'off'
no-floating-decimal: 'off'
no-implicit-coercion:
- error
- boolean: false
number: false
string: false
no-implicit-globals: 'off'
no-implied-eval: error
no-inline-comments: 'off'
no-invalid-this: 'off'
no-iterator: error
no-label-var: 'off'
no-labels: 'off'
no-lone-blocks: 'off'
no-lonely-if: 'off'
no-loop-func: 'off'
no-loss-of-precision: error
no-magic-numbers: 'off'
no-mixed-operators: 'off'
no-mixed-requires: 'off'
no-multi-assign: 'off'
no-multi-spaces: 'off'
no-multi-str: error
no-multiple-empty-lines: 'off'
no-native-reassign: 'off'
no-negated-condition: 'off'
no-negated-in-lhs: error
no-nested-ternary: 'off'
no-new: 'off'
no-new-func: 'off'
no-new-object: 'off'
no-new-require: error
no-new-wrappers: error
no-octal-escape: error
no-param-reassign: 'off'
no-path-concat: error
no-plusplus: 'off'
no-process-env: 'off'
no-process-exit: 'off'
no-promise-executor-return: error
no-proto: 'off'
no-restricted-exports: error
no-restricted-globals: error
no-restricted-imports: error
no-restricted-modules: error
no-restricted-properties: error
no-restricted-syntax: error
no-return-assign: 'off'
no-return-await: error
no-script-url: 'off'
no-self-compare: 'off'
no-sequences: 'off'
no-shadow: 'off'
no-spaced-func: 'off'
no-sync: 'off'
no-tabs: 'off'
no-template-curly-in-string: error
no-ternary: 'off'
no-throw-literal: 'off'
no-trailing-spaces: 'off'
no-undef-init: 'off'
no-undefined: 'off'
no-underscore-dangle: 'off'
no-unmodified-loop-condition: 'off'
no-unneeded-ternary: 'off'
no-unreachable-loop: error
no-unused-expressions: 'off'
no-use-before-define: 'off'
no-useless-backreference: error
no-useless-call: 'off'
no-useless-computed-key: error
no-useless-concat: 'off'
no-useless-constructor: error
no-useless-rename: error
no-useless-return: 'off'
no-var: 'off'
no-void: 'off'
no-warning-comments: 'off'
no-whitespace-before-property: error
nonblock-statement-body-position:
- error
- any
object-curly-newline: 'off'
object-curly-spacing: 'off'
object-property-newline: 'off'
object-shorthand: 'off'
one-var: 'off'
one-var-declaration-per-line: 'off'
operator-assignment: 'off'
operator-linebreak: 'off'
padded-blocks: 'off'
padding-line-between-statements: error
prefer-arrow-callback: 'off'
prefer-const: 'off'
prefer-destructuring: 'off'
prefer-exponentiation-operator: 'off'
prefer-named-capture-group: 'off'
prefer-numeric-literals: error
prefer-object-spread: 'off'
prefer-promise-reject-errors: error
prefer-reflect: 'off'
prefer-regex-literals: 'off'
prefer-rest-params: 'off'
prefer-spread: 'off'
prefer-template: 'off'
quote-props: 'off'
quotes:
- error
- double
- avoidEscape: true
radix: 'off'
require-atomic-updates: error
require-await: error
require-jsdoc: 'off'
require-unicode-regexp: 'off'
rest-spread-spacing: error
semi: 'off'
semi-spacing: 'off'
semi-style: 'off'
sort-imports: error
sort-keys: 'off'
sort-vars: 'off'
space-before-blocks: 'off'
space-before-function-paren: 'off'
space-in-parens: 'off'
space-infix-ops: 'off'
space-unary-ops: 'off'
spaced-comment: 'off'
strict: 'off'
switch-colon-spacing: 'off'
symbol-description: error
template-curly-spacing: error
template-tag-spacing: error
unicode-bom:
- error
- never
valid-jsdoc: 'off'
valid-typeof:
- error
- requireStringLiterals: false
vars-on-top: 'off'
wrap-iife: 'off'
wrap-regex: 'off'
yield-star-spacing: error
yoda: 'off'
# temporary rules
no-useless-escape: 'off'
no-unused-vars: 'off'
no-empty: 'off'
no-extra-semi: 'off'
no-redeclare: 'off'
no-control-regex: "off"
no-mixed-spaces-and-tabs: "off"
no-extra-boolean-cast: "off"
no-prototype-builtins: "off"
no-undef: "off"
no-unreachable: "off"
no-self-assign: "off"

View File

@ -5,7 +5,7 @@ on:
- master - master
- tiddlywiki-com - tiddlywiki-com
env: env:
NODE_VERSION: "18" NODE_VERSION: "22"
jobs: jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@ -14,7 +14,7 @@ jobs:
if: ${{ (github.event.pull_request.user.login != github.repository_owner) }} if: ${{ (github.event.pull_request.user.login != github.repository_owner) }}
steps: steps:
- run: | - run: |
if ! curl -s https://raw.githubusercontent.com/Jermolene/TiddlyWiki5/tiddlywiki-com/licenses/cla-individual.md | grep -o "@$USER,"; then if ! curl -s https://raw.githubusercontent.com/Jermolene/TiddlyWiki5/tiddlywiki-com/licenses/cla-individual.md | grep -io "@$USER,"; then
echo "CLA not signed" echo "CLA not signed"
gh pr comment "$NUMBER" -b "@$USER It appears that this is your first contribution to the project, welcome. gh pr comment "$NUMBER" -b "@$USER It appears that this is your first contribution to the project, welcome.

View File

@ -23,8 +23,8 @@ jobs:
pull-requests: write pull-requests: write
steps: steps:
- run: | - run: |
if ! $BRANCH == "tiddlywiki-com"; then if [[ "$BRANCH" != "tiddlywiki-com" ]]; then
echo "This CLA signature targets the wrong branch" echo "This CLA signature targets the wrong branch: $BRANCH"
gh pr comment "$NUMBER" -b "@$AUTHOR Signatures to the CLA must target the 'tiddlywiki-com' branch." gh pr comment "$NUMBER" -b "@$AUTHOR Signatures to the CLA must target the 'tiddlywiki-com' branch."
fi fi
env: env:

View File

@ -97,7 +97,6 @@ if [ -n "$TW5_BUILD_ARCHIVE" ]; then
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
$TW5_BUILD_MAIN_EDITION \ $TW5_BUILD_MAIN_EDITION \
--verbose \
--version \ --version \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_ARCHIVE \ --output $TW5_BUILD_ARCHIVE \
@ -115,7 +114,6 @@ fi
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
$TW5_BUILD_MAIN_EDITION \ $TW5_BUILD_MAIN_EDITION \
--verbose \
--version \ --version \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
@ -128,7 +126,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /tiddlywikicore-<version>.js Core plugin javascript # /tiddlywikicore-<version>.js Core plugin javascript
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/empty \ ./editions/empty \
--verbose \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--build empty emptyexternalcore \ --build empty emptyexternalcore \
|| exit 1 || exit 1
@ -137,7 +134,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /test.html Test edition # /test.html Test edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/test \ ./editions/test \
--verbose \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all test.html text/plain \ --rendertiddler $:/core/save/all test.html text/plain \
|| exit 1 || exit 1
@ -150,7 +146,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /dev/static/static.css Static stylesheet # /dev/static/static.css Static stylesheet
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/dev \ ./editions/dev \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/dev \ --output $TW5_BUILD_OUTPUT/dev \
--build index favicon static \ --build index favicon static \
@ -159,29 +154,13 @@ node $TW5_BUILD_TIDDLYWIKI \
# /tour.html tour edition # /tour.html tour edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/tour \ ./editions/tour \
--verbose \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all tour.html text/plain \ --rendertiddler $:/core/save/all tour.html text/plain \
|| exit 1 || exit 1
# /dev/index.html Developer docs
# /dev/favicon.ico Favicon for dev site
# /dev/static.html Static rendering of default tiddlers
# /dev/alltiddlers.html Static rendering of all tiddlers
# /dev/static/* Static single tiddlers
# /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 \
|| exit 1
# /share.html Custom edition for sharing via the URL # /share.html Custom edition for sharing via the URL
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/share \ ./editions/share \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--build share \ --build share \
@ -190,7 +169,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /upgrade.html Custom edition for performing upgrades # /upgrade.html Custom edition for performing upgrades
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/upgrade \ ./editions/upgrade \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--build upgrade \ --build upgrade \
@ -199,7 +177,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /encrypted.html Copy of the main file encrypted with the password "password" # /encrypted.html Copy of the main file encrypted with the password "password"
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
$TW5_BUILD_MAIN_EDITION \ $TW5_BUILD_MAIN_EDITION \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--build encrypted \ --build encrypted \
@ -215,7 +192,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/xlsx-utils/index.html xlsx-utils edition # /editions/xlsx-utils/index.html xlsx-utils edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/xlsx-utils \ ./editions/xlsx-utils \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \ --output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \
--build index \ --build index \
@ -224,7 +200,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/resumebuilder/index.html Resume builder edition # /editions/resumebuilder/index.html Resume builder edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/resumebuilder \ ./editions/resumebuilder \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/resumebuilder/ \ --output $TW5_BUILD_OUTPUT/editions/resumebuilder/ \
--build index \ --build index \
@ -233,7 +208,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/text-slicer/index.html Text slicer edition # /editions/text-slicer/index.html Text slicer edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/text-slicer \ ./editions/text-slicer \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/text-slicer/ \ --output $TW5_BUILD_OUTPUT/editions/text-slicer/ \
--build index \ --build index \
@ -242,7 +216,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/translators/index.html Translators edition # /editions/translators/index.html Translators edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/translators \ ./editions/translators \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/translators/ \ --output $TW5_BUILD_OUTPUT/editions/translators/ \
--build index \ --build index \
@ -251,7 +224,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/introduction/index.html Introduction edition # /editions/introduction/index.html Introduction edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/introduction \ ./editions/introduction \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/introduction/ \ --output $TW5_BUILD_OUTPUT/editions/introduction/ \
--build index \ --build index \
@ -260,7 +232,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/full/index.html Full edition # /editions/full/index.html Full edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/full \ ./editions/full \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/full/ \ --output $TW5_BUILD_OUTPUT/editions/full/ \
--build index \ --build index \
@ -269,7 +240,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/tw5.com-docs/index.html tiddlywiki.com docs edition # /editions/tw5.com-docs/index.html tiddlywiki.com docs edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/tw5.com-docs \ ./editions/tw5.com-docs \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \ --output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \
--build index \ --build index \
@ -278,7 +248,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/twitter-archivist/index.html Twitter Archivist edition # /editions/twitter-archivist/index.html Twitter Archivist edition
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/twitter-archivist \ ./editions/twitter-archivist \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/twitter-archivist/ \ --output $TW5_BUILD_OUTPUT/editions/twitter-archivist/ \
--build index \ --build index \
@ -294,7 +263,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/innerwikidemo \ ./editions/innerwikidemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \
@ -305,7 +273,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/dynaviewdemo \ ./editions/dynaviewdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \
@ -320,7 +287,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/katexdemo \ ./editions/katexdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \
@ -331,7 +297,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/tahoelafs/empty.html Empty wiki with Tahoe-LAFS plugin # /plugins/tiddlywiki/tahoelafs/empty.html Empty wiki with Tahoe-LAFS plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/tahoelafs \ ./editions/tahoelafs \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/tahoelafs/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/tahoelafs/index.html text/plain \
@ -342,7 +307,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/d3/empty.html Empty wiki with D3 plugin # /plugins/tiddlywiki/d3/empty.html Empty wiki with D3 plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/d3demo \ ./editions/d3demo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/d3/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/d3/index.html text/plain \
@ -353,7 +317,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/codemirror/empty.html Empty wiki with codemirror plugin # /plugins/tiddlywiki/codemirror/empty.html Empty wiki with codemirror plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/codemirrordemo \ ./editions/codemirrordemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \
@ -364,7 +327,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/markdown/empty.html Empty wiki with Markdown plugin # /plugins/tiddlywiki/markdown/empty.html Empty wiki with Markdown plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/markdowndemo \ ./editions/markdowndemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \
@ -375,7 +337,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/tw2parser/empty.html Empty wiki with tw2parser plugin # /plugins/tiddlywiki/tw2parser/empty.html Empty wiki with tw2parser plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/classicparserdemo \ ./editions/classicparserdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \
@ -386,7 +347,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/highlight/empty.html Empty wiki with highlight plugin # /plugins/tiddlywiki/highlight/empty.html Empty wiki with highlight plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/highlightdemo \ ./editions/highlightdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \
@ -397,7 +357,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/geospatial/empty.html Empty wiki with geospatial plugin # /plugins/tiddlywiki/geospatial/empty.html Empty wiki with geospatial plugin
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/geospatialdemo \ ./editions/geospatialdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \ --output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/geospatial/index.html text/plain \ --rendertiddler $:/core/save/all plugins/tiddlywiki/geospatial/index.html text/plain \
@ -425,7 +384,6 @@ rm -rf $TW5_BUILD_OUTPUT/languages/zh-Hant/static/*
# /languages/de-AT/empty.html Empty wiki with de-AT language # /languages/de-AT/empty.html Empty wiki with de-AT language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/de-AT \ ./editions/de-AT \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/de-AT \ --output $TW5_BUILD_OUTPUT/languages/de-AT \
--build favicon empty static index \ --build favicon empty static index \
@ -435,7 +393,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/de-DE/empty.html Empty wiki with de-DE language # /languages/de-DE/empty.html Empty wiki with de-DE language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/de-DE \ ./editions/de-DE \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/de-DE \ --output $TW5_BUILD_OUTPUT/languages/de-DE \
--build favicon empty static index \ --build favicon empty static index \
@ -445,7 +402,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/es-ES/empty.html Empty wiki with es-ES language # /languages/es-ES/empty.html Empty wiki with es-ES language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/es-ES \ ./editions/es-ES \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/es-ES \ --output $TW5_BUILD_OUTPUT/languages/es-ES \
--build favicon empty static index \ --build favicon empty static index \
@ -455,7 +411,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/fr-FR/empty.html Empty wiki with fr-FR language # /languages/fr-FR/empty.html Empty wiki with fr-FR language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/fr-FR \ ./editions/fr-FR \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/fr-FR \ --output $TW5_BUILD_OUTPUT/languages/fr-FR \
--build favicon empty static index \ --build favicon empty static index \
@ -465,7 +420,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/ja-JP/empty.html Empty wiki with ja-JP language # /languages/ja-JP/empty.html Empty wiki with ja-JP language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/ja-JP \ ./editions/ja-JP \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/ja-JP \ --output $TW5_BUILD_OUTPUT/languages/ja-JP \
--build empty index \ --build empty index \
@ -475,7 +429,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/ko-KR/empty.html Empty wiki with ko-KR language # /languages/ko-KR/empty.html Empty wiki with ko-KR language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/ko-KR \ ./editions/ko-KR \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/ko-KR \ --output $TW5_BUILD_OUTPUT/languages/ko-KR \
--build favicon empty static index \ --build favicon empty static index \
@ -485,7 +438,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/zh-Hans/empty.html Empty wiki with zh-Hans language # /languages/zh-Hans/empty.html Empty wiki with zh-Hans language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/zh-Hans \ ./editions/zh-Hans \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/zh-Hans \ --output $TW5_BUILD_OUTPUT/languages/zh-Hans \
--build empty index \ --build empty index \
@ -495,7 +447,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/zh-Hant/empty.html Empty wiki with zh-Hant language # /languages/zh-Hant/empty.html Empty wiki with zh-Hant language
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/zh-Hant \ ./editions/zh-Hant \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/zh-Hant \ --output $TW5_BUILD_OUTPUT/languages/zh-Hant \
--build empty index \ --build empty index \
@ -509,7 +460,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \ node $TW5_BUILD_TIDDLYWIKI \
./editions/pluginlibrary \ ./editions/pluginlibrary \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \ --load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/library/$TW5_BUILD_VERSION \ --output $TW5_BUILD_OUTPUT/library/$TW5_BUILD_VERSION \
--build library\ --build library\

View File

@ -133,6 +133,7 @@ Excise/Caption/Replace/Link: link
Excise/Caption/Replace/Transclusion: transclusion Excise/Caption/Replace/Transclusion: transclusion
Excise/Caption/Tag: Tag new tiddler with the title of this tiddler Excise/Caption/Tag: Tag new tiddler with the title of this tiddler
Excise/Caption/TiddlerExists: Warning: tiddler already exists Excise/Caption/TiddlerExists: Warning: tiddler already exists
Excise/DefaultTitle: New Excision
Excise/Hint: Excise the selected text into a new tiddler Excise/Hint: Excise the selected text into a new tiddler
Heading1/Caption: heading 1 Heading1/Caption: heading 1
Heading1/Hint: Apply heading level 1 formatting to lines containing selection Heading1/Hint: Apply heading level 1 formatting to lines containing selection

View File

@ -96,6 +96,10 @@ Plugins/PluginWillRequireReload: (requires reload)
Plugins/Plugins/Caption: Plugins Plugins/Plugins/Caption: Plugins
Plugins/Plugins/Hint: Plugins Plugins/Plugins/Hint: Plugins
Plugins/Reinstall/Caption: reinstall Plugins/Reinstall/Caption: reinstall
Plugins/Stability/Deprecated: DEPRECATED
Plugins/Stability/Experimental: EXPERIMENTAL
Plugins/Stability/Legacy: LEGACY
Plugins/Stability/Stable: STABLE
Plugins/Themes/Caption: Themes Plugins/Themes/Caption: Themes
Plugins/Themes/Hint: Theme plugins Plugins/Themes/Hint: Theme plugins
Plugins/Update/Caption: update Plugins/Update/Caption: update
@ -171,6 +175,8 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Update addres
Settings/PerformanceInstrumentation/Caption: Performance Instrumentation Settings/PerformanceInstrumentation/Caption: Performance Instrumentation
Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect
Settings/PerformanceInstrumentation/Description: Enable performance instrumentation 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/Caption: Toolbar Button Style
Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons: Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons:
Settings/ToolbarButtonStyle/Styles/Borderless: Borderless Settings/ToolbarButtonStyle/Styles/Borderless: Borderless
@ -200,10 +206,10 @@ Settings/MissingLinks/Hint: Choose whether to link to tiddlers that do not exist
Settings/MissingLinks/Description: Enable links to missing tiddlers Settings/MissingLinks/Description: Enable links to missing tiddlers
SocialCard/Caption: Social Media Card SocialCard/Caption: Social Media Card
SocialCard/Domain/Prompt: Domain name to display for the link (for example, ''tiddlywiki.com'') 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/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/Prompt: Full URL to preview image for this ~TiddlyWiki
SocialCard/PreviewUrl/Preview: Preview image: 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/Caption: Story Tiddler
StoryTiddler/Hint: This rule cascade is used to dynamically choose the template for displaying a tiddler in the story river. StoryTiddler/Hint: This rule cascade is used to dynamically choose the template for displaying a tiddler in the story river.
StoryView/Caption: Story View StoryView/Caption: Story View

View File

@ -26,6 +26,8 @@ Tags/ClearInput/Caption: clear input
Tags/ClearInput/Hint: Clear tag input Tags/ClearInput/Hint: Clear tag input
Tags/Dropdown/Caption: tag list Tags/Dropdown/Caption: tag list
Tags/Dropdown/Hint: Show tag list Tags/Dropdown/Hint: Show tag list
Tags/EmptyMessage: No tags found
Tags/EmptyMessage/System: No system tags found
Title/BadCharacterWarning: Warning: avoid using any of the characters <<bad-chars>> in tiddler titles Title/BadCharacterWarning: Warning: avoid using any of the characters <<bad-chars>> in tiddler titles
Title/Exists/Prompt: Target tiddler already exists Title/Exists/Prompt: Target tiddler already exists
Title/Relink/Prompt: Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers Title/Relink/Prompt: Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers

View File

@ -6,6 +6,8 @@ Filter/Hint: Search via a [[filter expression|https://tiddlywiki.com/static/Filt
Filter/Matches: //<small><<resultCount>> matches</small>// Filter/Matches: //<small><<resultCount>> matches</small>//
Matches: //<small><<resultCount>> matches</small>// Matches: //<small><<resultCount>> matches</small>//
Matches/All: All matches: Matches/All: All matches:
Matches/NoMatch: //No match//
Matches/NoResult: //No search result//
Matches/Title: Title matches: Matches/Title: Title matches:
Search: Search Search: Search
Search/TooShort: Search text too short Search/TooShort: Search text too short

View File

@ -24,7 +24,7 @@ var Command = function(params,commander) {
Command.prototype.execute = function() { Command.prototype.execute = function() {
// Get the build targets defined in the wiki // 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) { if(!buildTargets) {
return "No build targets defined"; return "No build targets defined";
} }

View File

@ -12,20 +12,27 @@ Text editor operation to excise the selection to a new tiddler
/*global $tw: false */ /*global $tw: false */
"use strict"; "use strict";
function isMarkdown(mediaType) {
return mediaType === 'text/markdown' || mediaType === 'text/x-markdown';
}
exports["excise"] = function(event,operation) { exports["excise"] = function(event,operation) {
var editTiddler = this.wiki.getTiddler(this.editTitle), var editTiddler = this.wiki.getTiddler(this.editTitle),
editTiddlerTitle = this.editTitle; editTiddlerTitle = this.editTitle,
wikiLinks = !isMarkdown(editTiddler.fields.type),
excisionBaseTitle = $tw.language.getString("Buttons/Excise/DefaultTitle");
if(editTiddler && editTiddler.fields["draft.of"]) { if(editTiddler && editTiddler.fields["draft.of"]) {
editTiddlerTitle = editTiddler.fields["draft.of"]; editTiddlerTitle = editTiddler.fields["draft.of"];
} }
var excisionTitle = event.paramObject.title || this.wiki.generateNewTitle("New Excision"); var excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(excisionBaseTitle);
this.wiki.addTiddler(new $tw.Tiddler( this.wiki.addTiddler(new $tw.Tiddler(
this.wiki.getCreationFields(), this.wiki.getCreationFields(),
this.wiki.getModificationFields(), this.wiki.getModificationFields(),
{ {
title: excisionTitle, title: excisionTitle,
text: operation.selection, text: operation.selection,
tags: event.paramObject.tagnew === "yes" ? [editTiddlerTitle] : [] tags: event.paramObject.tagnew === "yes" ? [editTiddlerTitle] : [],
type: editTiddler.fields.type
} }
)); ));
operation.replacement = excisionTitle; operation.replacement = excisionTitle;
@ -34,7 +41,8 @@ exports["excise"] = function(event,operation) {
operation.replacement = "{{" + operation.replacement+ "}}"; operation.replacement = "{{" + operation.replacement+ "}}";
break; break;
case "link": case "link":
operation.replacement = "[[" + operation.replacement+ "]]"; operation.replacement = wikiLinks ? "[[" + operation.replacement+ "]]"
: ("[" + operation.replacement + "](<#" + operation.replacement + ">)");
break; break;
case "macro": case "macro":
operation.replacement = "<<" + (event.paramObject.macro || "translink") + " \"\"\"" + operation.replacement + "\"\"\">>"; operation.replacement = "<<" + (event.paramObject.macro || "translink") + " \"\"\"" + operation.replacement + "\"\"\">>";

View File

@ -13,37 +13,125 @@ Text editor operation to wrap the selection with the specified prefix and suffix
"use strict"; "use strict";
exports["wrap-selection"] = function(event,operation) { exports["wrap-selection"] = function(event,operation) {
if(operation.selStart === operation.selEnd) { var o = operation,
// No selection; check if we're within the prefix/suffix prefix = event.paramObject.prefix,
if(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) { suffix = event.paramObject.suffix,
trimSelection = event.paramObject.trimSelection || "no",
selLength = o.selEnd - o.selStart;
// This function detects, if trailing spaces are part of the selection __and__ if the user wants to handle them
// Returns "yes", "start", "end", "no" (default)
// yes .. there are trailing spaces at both ends
// start .. there are trailing spaces at the start
// end .. there are trailing spaces at the end
// no .. no trailing spaces are taken into account
var trailingSpaceAt = function(sel) {
var _start,
_end,
result;
// trimSelection is a user parameter, which this evaluations takes into account
switch(trimSelection) {
case "end":
result = (sel.trimEnd().length !== selLength) ? "end" : "no";
break;
case "yes":
_start = sel.trimStart().length !== selLength;
_end = sel.trimEnd().length !== selLength;
result = (_start && _end) ? "yes" : (_start) ? "start" : (_end) ? "end" : "no";
break;
case "start":
result = (sel.trimStart().length !== selLength) ? "start" : "no";
break;
default:
result = "no";
break;
}
return result;
}
function togglePrefixSuffix() {
if(o.text.substring(o.selStart - prefix.length, o.selStart + suffix.length) === prefix + suffix) {
// Remove the prefix and suffix // Remove the prefix and suffix
operation.cutStart = operation.selStart - event.paramObject.prefix.length; o.cutStart = o.selStart - prefix.length;
operation.cutEnd = operation.selEnd + event.paramObject.suffix.length; o.cutEnd = o.selEnd + suffix.length;
operation.replacement = ""; o.replacement = "";
operation.newSelStart = operation.cutStart; o.newSelStart = o.cutStart;
operation.newSelEnd = operation.newSelStart; o.newSelEnd = o.newSelStart;
} else { } else {
// Wrap the cursor instead // Wrap the cursor instead
operation.cutStart = operation.selStart; o.cutStart = o.selStart;
operation.cutEnd = operation.selEnd; o.cutEnd = o.selEnd;
operation.replacement = event.paramObject.prefix + event.paramObject.suffix; o.replacement = prefix + suffix;
operation.newSelStart = operation.selStart + event.paramObject.prefix.length; o.newSelStart = o.selStart + prefix.length;
operation.newSelEnd = operation.newSelStart; o.newSelEnd = o.newSelStart;
} }
} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) { }
// options: lenPrefix, lenSuffix
function removePrefixSuffix(options) {
options = options || {};
var _lenPrefix = options.lenPrefix || 0;
var _lenSuffix = options.lenSuffix || 0;
o.cutStart = o.selStart - _lenPrefix;
o.cutEnd = o.selEnd + _lenSuffix;
o.replacement = (_lenPrefix || _lenSuffix) ? o.selection : o.selection.substring(prefix.length, o.selection.length - suffix.length);
o.newSelStart = o.cutStart;
o.newSelEnd = o.cutStart + o.replacement.length;
}
function addPrefixSuffix() {
// remove trailing space if requested
switch(trailingSpaceAt(o.selection)) {
case "no":
// has no trailing spaces
o.cutStart = o.selStart;
o.cutEnd = o.selEnd;
o.replacement = prefix + o.selection + suffix;
o.newSelStart = o.selStart;
o.newSelEnd = o.selStart + o.replacement.length;
break;
case "yes":
// handle both ends
o.cutStart = o.selEnd - (o.selection.trimStart().length);
o.cutEnd = o.selection.trimEnd().length + o.selStart;
o.replacement = prefix + o.selection.trim() + suffix;
o.newSelStart = o.cutStart;
o.newSelEnd = o.cutStart + o.replacement.length;
break;
case "start":
// handle leading
o.cutStart = o.selEnd - (o.selection.trimStart().length);
o.cutEnd = o.selEnd;
o.replacement = prefix + o.selection.trimStart() + suffix;
o.newSelStart = o.cutStart;
o.newSelEnd = o.cutStart + o.replacement.length;
break;
case "end":
// handle trailing
o.cutStart = o.selStart;
o.cutEnd = o.selection.trimEnd().length + o.selStart;
o.replacement = prefix + o.selection.trimEnd() + suffix;
o.newSelStart = o.selStart;
o.newSelEnd = o.selStart + o.replacement.length;
break;
}
}
if(o.selStart === o.selEnd) {
// No selection; Create prefix and suffix. Set cursor in between them: ""|""
togglePrefixSuffix();
} else if(o.text.substring(o.selStart, o.selStart + prefix.length) === prefix &&
o.text.substring(o.selEnd - suffix.length,o.selEnd) === suffix) {
// Prefix and suffix are already present, so remove them // Prefix and suffix are already present, so remove them
operation.cutStart = operation.selStart; removePrefixSuffix();
operation.cutEnd = operation.selEnd; } else if(o.text.substring(o.selStart - prefix.length, o.selStart) === prefix &&
operation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length); o.text.substring(o.selEnd, o.selEnd + suffix.length) === suffix) {
operation.newSelStart = operation.selStart; // Prefix and suffix are present BUT not selected -> remove them
operation.newSelEnd = operation.selStart + operation.replacement.length; removePrefixSuffix({"lenPrefix": prefix.length, "lenSuffix": suffix.length});
} else { } else {
// Add the prefix and suffix // Add the prefix and suffix
operation.cutStart = operation.selStart; addPrefixSuffix();
operation.cutEnd = operation.selEnd;
operation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;
operation.newSelStart = operation.selStart;
operation.newSelEnd = operation.selStart + operation.replacement.length;
} }
}; };

View File

@ -18,8 +18,8 @@ Export our filter functions
exports.decodebase64 = function(source,operator,options) { exports.decodebase64 = function(source,operator,options) {
var results = []; var results = [];
var binary = operator.suffixes && operator.suffixes.indexOf("binary") !== -1; var binary = operator.suffixes && operator.suffixes[0].indexOf("binary") !== -1;
var urlsafe = operator.suffixes && operator.suffixes.indexOf("urlsafe") !== -1; var urlsafe = operator.suffixes && operator.suffixes[0].indexOf("urlsafe") !== -1;
source(function(tiddler,title) { source(function(tiddler,title) {
results.push($tw.utils.base64Decode(title,binary,urlsafe)); results.push($tw.utils.base64Decode(title,binary,urlsafe));
}); });
@ -28,8 +28,8 @@ exports.decodebase64 = function(source,operator,options) {
exports.encodebase64 = function(source,operator,options) { exports.encodebase64 = function(source,operator,options) {
var results = []; var results = [];
var binary = operator.suffixes && operator.suffixes.indexOf("binary") !== -1; var binary = operator.suffixes && operator.suffixes[0].indexOf("binary") !== -1;
var urlsafe = operator.suffixes && operator.suffixes.indexOf("urlsafe") !== -1; var urlsafe = operator.suffixes && operator.suffixes[0].indexOf("urlsafe") !== -1;
source(function(tiddler,title) { source(function(tiddler,title) {
results.push($tw.utils.base64Encode(title,binary,urlsafe)); results.push($tw.utils.base64Encode(title,binary,urlsafe));
}); });

View File

@ -16,20 +16,22 @@ exports.name = "unusedtitle";
exports.params = [ exports.params = [
{name: "baseName"}, {name: "baseName"},
{name: "separator"}, {name: "separator"},
{name: "template"} {name: "template"},
{name: "startCount"}
]; ];
/* /*
Run the macro Run the macro
*/ */
exports.run = function(baseName,separator,template) { exports.run = function(baseName,separator,template,startCount) {
separator = separator || " "; separator = separator || " ";
startCount = startCount || 0;
if(!baseName) { if(!baseName) {
baseName = $tw.language.getString("DefaultNewTiddlerTitle"); baseName = $tw.language.getString("DefaultNewTiddlerTitle");
} }
// $tw.wiki.generateNewTitle = function(baseTitle,options) // $tw.wiki.generateNewTitle = function(baseTitle,options)
// options.prefix must be a string! // options.prefix must be a string!
return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template}); return this.wiki.generateNewTitle(baseName, {"prefix": separator, "template": template, "startCount": startCount});
}; };
})(); })();

View File

@ -6,7 +6,7 @@ module-type: wikirule
Conditional shortcut syntax Conditional shortcut syntax
``` ```
This is a <% if [{something}] %>Elephant<% elseif [{else}] %>Pelican<% else %>Crocodile<% endif %> This is a <%if [{something}] %>Elephant<%elseif [{else}] %>Pelican<%else%>Crocodile<%endif%>
``` ```
\*/ \*/
@ -27,7 +27,7 @@ exports.init = function(parser) {
}; };
exports.findNextMatch = function(startPos) { exports.findNextMatch = function(startPos) {
// Look for the next <% if shortcut // Look for the next <%if shortcut
this.matchRegExp.lastIndex = startPos; this.matchRegExp.lastIndex = startPos;
this.match = this.matchRegExp.exec(this.parser.source); this.match = this.matchRegExp.exec(this.parser.source);
// If not found then return no match // If not found then return no match

View File

@ -20,7 +20,7 @@ Retrieve ETag if available
*/ */
var retrieveETag = function(self) { var retrieveETag = function(self) {
var headers = { var headers = {
Accept: "*/*;charset=UTF-8" Accept: "*/*"
}; };
$tw.utils.httpRequest({ $tw.utils.httpRequest({
url: self.uri(), url: self.uri(),
@ -55,7 +55,7 @@ var PutSaver = function(wiki) {
callback: function(err,data,xhr) { callback: function(err,data,xhr) {
// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1 // Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1
if(!err) { if(!err) {
self.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader("dav"); self.serverAcceptsPuts = xhr.status >= 200 && xhr.status < 300 && !!xhr.getResponseHeader("dav");
} }
} }
}); });

View File

@ -52,7 +52,9 @@ exports.startup = function() {
basicAuthUsername: params["basic-auth-username"], basicAuthUsername: params["basic-auth-username"],
basicAuthUsernameFromStore: params["basic-auth-username-from-store"], basicAuthUsernameFromStore: params["basic-auth-username-from-store"],
basicAuthPassword: params["basic-auth-password"], basicAuthPassword: params["basic-auth-password"],
basicAuthPasswordFromStore: params["basic-auth-password-from-store"] basicAuthPasswordFromStore: params["basic-auth-password-from-store"],
bearerAuthToken: params["bearer-auth-token"],
bearerAuthTokenFromStore: params["bearer-auth-token-from-store"]
}); });
}); });
$tw.rootWidget.addEventListener("tm-http-cancel-all-requests",function(event) { $tw.rootWidget.addEventListener("tm-http-cancel-all-requests",function(event) {

View File

@ -104,6 +104,8 @@ basicAuthUsername: plain username for basic authentication
basicAuthUsernameFromStore: name of password store entry containing username basicAuthUsernameFromStore: name of password store entry containing username
basicAuthPassword: plain password for basic authentication basicAuthPassword: plain password for basic authentication
basicAuthPasswordFromStore: name of password store entry containing password basicAuthPasswordFromStore: name of password store entry containing password
bearerAuthToken: plain text token for bearer authentication
bearerAuthTokenFromStore: name of password store entry contain bear authorization token
*/ */
function HttpClientRequest(options) { function HttpClientRequest(options) {
var self = this; var self = this;
@ -135,8 +137,11 @@ function HttpClientRequest(options) {
}); });
this.basicAuthUsername = options.basicAuthUsername || (options.basicAuthUsernameFromStore && $tw.utils.getPassword(options.basicAuthUsernameFromStore)) || ""; this.basicAuthUsername = options.basicAuthUsername || (options.basicAuthUsernameFromStore && $tw.utils.getPassword(options.basicAuthUsernameFromStore)) || "";
this.basicAuthPassword = options.basicAuthPassword || (options.basicAuthPasswordFromStore && $tw.utils.getPassword(options.basicAuthPasswordFromStore)) || ""; this.basicAuthPassword = options.basicAuthPassword || (options.basicAuthPasswordFromStore && $tw.utils.getPassword(options.basicAuthPasswordFromStore)) || "";
this.bearerAuthToken = options.bearerAuthToken || (options.bearerAuthTokenFromStore && $tw.utils.getPassword(options.bearerAuthTokenFromStore)) || "";
if(this.basicAuthUsername && this.basicAuthPassword) { if(this.basicAuthUsername && this.basicAuthPassword) {
this.requestHeaders.Authorization = "Basic " + $tw.utils.base64Encode(this.basicAuthUsername + ":" + this.basicAuthPassword); this.requestHeaders.Authorization = "Basic " + $tw.utils.base64Encode(this.basicAuthUsername + ":" + this.basicAuthPassword);
} else if(this.bearerAuthToken) {
this.requestHeaders.Authorization = "Bearer " + this.bearerAuthToken;
} }
} }

View File

@ -56,23 +56,14 @@ Object.defineProperty(TW_TextNode.prototype, "formattedTextContent", {
} }
}); });
var TW_Element = function(tag,namespace) { var TW_Style = function(el) {
bumpSequenceNumber(this); // Define the internal style object
this.isTiddlyWikiFakeDom = true; var styleObject = {
this.tag = tag; // Method to get the entire style object
this.attributes = {};
this.isRaw = false;
this.children = [];
this._style = {};
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() { get: function() {
return this._style; return el._style;
}, },
// Method to set styles using a string (e.g. "color:red; background-color:blue;")
set: function(str) { set: function(str) {
var self = this; var self = this;
str = str || ""; str = str || "";
@ -81,11 +72,48 @@ Object.defineProperty(TW_Element.prototype, "style", {
name = $tw.utils.trim(parts[0]), name = $tw.utils.trim(parts[0]),
value = $tw.utils.trim(parts[1]); value = $tw.utils.trim(parts[1]);
if(name && value) { if(name && value) {
self._style[$tw.utils.convertStyleNameToPropertyName(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 = {}; // 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, "nodeType", { Object.defineProperty(TW_Element.prototype, "nodeType", {
get: function() { get: function() {
@ -105,7 +133,7 @@ TW_Element.prototype.setAttribute = function(name,value) {
throw "Cannot setAttribute on a raw TW_Element"; throw "Cannot setAttribute on a raw TW_Element";
} }
if(name === "style") { if(name === "style") {
this.style = value; this.style.set(value);
} else { } else {
this.attributes[name] = value + ""; this.attributes[name] = value + "";
} }

View File

@ -330,16 +330,18 @@ exports.formatTitleString = function(template,options) {
}] }]
]; ];
while(t.length){ while(t.length){
var matchString = ""; var matchString = "",
found = false;
$tw.utils.each(matches, function(m) { $tw.utils.each(matches, function(m) {
var match = m[0].exec(t); var match = m[0].exec(t);
if(match) { if(match) {
found = true;
matchString = m[1].call(null,match); matchString = m[1].call(null,match);
t = t.substr(match[0].length); t = t.substr(match[0].length);
return false; return false;
} }
}); });
if(matchString) { if(found) {
result += matchString; result += matchString;
} else { } else {
result += t.charAt(0); result += t.charAt(0);

View File

@ -125,11 +125,23 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
// Remove highlighting // Remove highlighting
$tw.utils.removeClass(this.domNodes[0],"tc-dragover"); $tw.utils.removeClass(this.domNodes[0],"tc-dragover");
// Try to import the various data types we understand // Try to import the various data types we understand
if(this.droppableActions) {
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) { $tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
fieldsArray.forEach(function(fields) { fieldsArray.forEach(function(fields) {
self.performActions(fields.title || fields.text,event); 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 // Tell the browser that we handled the drop
event.preventDefault(); event.preventDefault();
// Stop the drop ripple up to any parent handlers // Stop the drop ripple up to any parent handlers
@ -137,6 +149,13 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
return false; 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) { DroppableWidget.prototype.performActions = function(title,event) {
if(this.droppableActions) { if(this.droppableActions) {
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event); var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
@ -149,6 +168,7 @@ Compute the internal state of the widget
*/ */
DroppableWidget.prototype.execute = function() { DroppableWidget.prototype.execute = function() {
this.droppableActions = this.getAttribute("actions"); this.droppableActions = this.getAttribute("actions");
this.droppableListActions = this.getAttribute("listActions");
this.droppableEffect = this.getAttribute("effect","copy"); this.droppableEffect = this.getAttribute("effect","copy");
this.droppableTag = this.getAttribute("tag"); this.droppableTag = this.getAttribute("tag");
this.droppableEnable = (this.getAttribute("enable") || "yes") === "yes"; 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) { DroppableWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes(); 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(); this.refreshSelf();
return true; return true;
} else { } else {

View File

@ -65,6 +65,16 @@ GenesisWidget.prototype.execute = function() {
children: this.parseTreeNode.children || [], children: this.parseTreeNode.children || [],
isNotRemappable: !this.genesisRemappable 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 // Apply explicit attributes
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) { $tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
var name = attribute.name; var name = attribute.name;
@ -79,16 +89,6 @@ GenesisWidget.prototype.execute = function() {
} }
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],$tw.utils.extend({},attribute,{name: name})); $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 // Construct the child widgets
this.makeChildWidgets(parseTreeNodes); this.makeChildWidgets(parseTreeNodes);
}; };

View File

@ -96,6 +96,7 @@ KeyboardWidget.prototype.execute = function() {
this.param = this.getAttribute("param",""); this.param = this.getAttribute("param","");
this.key = this.getAttribute("key",""); this.key = this.getAttribute("key","");
this.tag = this.getAttribute("tag",""); this.tag = this.getAttribute("tag","");
if($tw.keyboardManager) {
this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key); this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);
if(this.key.substr(0,2) === "((" && this.key.substr(-2,2) === "))") { if(this.key.substr(0,2) === "((" && this.key.substr(-2,2) === "))") {
this.shortcutTiddlers = []; this.shortcutTiddlers = [];
@ -104,6 +105,7 @@ KeyboardWidget.prototype.execute = function() {
self.shortcutTiddlers.push("$:/config/" + platformDescriptor + "/" + name); self.shortcutTiddlers.push("$:/config/" + platformDescriptor + "/" + name);
}); });
} }
}
// Make child widgets // Make child widgets
this.makeChildWidgets(); this.makeChildWidgets();
}; };
@ -126,7 +128,7 @@ KeyboardWidget.prototype.refresh = function(changedTiddlers) {
this.assignDomNodeClasses(); this.assignDomNodeClasses();
} }
// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed // Update the keyInfoArray if one of its shortcut-config-tiddlers has changed
if(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) { if(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) && $tw.keyboardManager) {
this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key); this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);
} }
return this.refreshChildren(changedTiddlers); return this.refreshChildren(changedTiddlers);

View File

@ -412,7 +412,8 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
event = $tw.hooks.invokeHook("th-new-tiddler", event); event = $tw.hooks.invokeHook("th-new-tiddler", event);
// Get the story details // Get the story details
var storyList = this.getStoryList(), var storyList = this.getStoryList(),
templateTiddler, additionalFields, title, draftTitle, existingTiddler; templateTiddler, additionalFields, title, draftTitle, existingTiddler,
templateHasTags = false;
// Get the template tiddler (if any) // Get the template tiddler (if any)
if(typeof event.param === "string") { if(typeof event.param === "string") {
// Get the template tiddler // Get the template tiddler
@ -457,8 +458,10 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
// Merge tags // Merge tags
mergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags)); mergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));
} }
var additionalFieldsHasTags = !!(additionalFields && (additionalFields.tags === ""));
if(templateTiddler && templateTiddler.fields.tags) { if(templateTiddler && templateTiddler.fields.tags) {
// Merge tags // Merge tags
templateHasTags = true;
mergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags); mergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);
} }
// Save the draft tiddler // Save the draft tiddler
@ -474,7 +477,8 @@ NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
{ {
title: draftTitle, title: draftTitle,
"draft.of": title, "draft.of": title,
tags: mergedTags // If template or additionalFields have "tags" even if empty a tags field will be created.
tags: ((mergedTags.length > 0) || templateHasTags || additionalFieldsHasTags) ? mergedTags : undefined
},this.wiki.getModificationFields()); },this.wiki.getModificationFields());
this.wiki.addTiddler(draftTiddler); this.wiki.addTiddler(draftTiddler);
// Update the story to insert the new draft at the top and remove any existing tiddler // Update the story to insert the new draft at the top and remove any existing tiddler
@ -526,7 +530,7 @@ NavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {
var systemMessage = $tw.language.getString("Import/Upgrader/Tiddler/Unselected"); var systemMessage = $tw.language.getString("Import/Upgrader/Tiddler/Unselected");
$tw.utils.each(messages,function(message,title) { $tw.utils.each(messages,function(message,title) {
newFields["message-" + title] = message; newFields["message-" + title] = message;
if (message.indexOf(systemMessage) !== -1) { if(message.indexOf(systemMessage) !== -1) {
newFields["selection-" + title] = "unchecked"; newFields["selection-" + title] = "unchecked";
} }
}); });

View File

@ -335,7 +335,7 @@ Widget.prototype.makeFakeWidgetWithVariables = function(variables) {
}; };
} else { } else {
opts = opts || {}; opts = opts || {};
opts.variables = $tw.utils.extend(variables,opts.variables); opts.variables = $tw.utils.extend({},variables,opts.variables);
return self.getVariableInfo(name,opts); return self.getVariableInfo(name,opts);
}; };
}, },
@ -428,6 +428,11 @@ Widget.prototype.assignAttributes = function(domNode,options) {
destPrefix = options.destPrefix || "", destPrefix = options.destPrefix || "",
EVENT_ATTRIBUTE_PREFIX = "on"; EVENT_ATTRIBUTE_PREFIX = "on";
var assignAttribute = function(name,value) { 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 // Process any style attributes before considering sourcePrefix and destPrefix
if(name.substr(0,6) === "style." && name.length > 6) { if(name.substr(0,6) === "style." && name.length > 6) {
domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value; domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;

View File

@ -194,18 +194,24 @@ options.prefix must be a string
*/ */
exports.generateNewTitle = function(baseTitle,options) { exports.generateNewTitle = function(baseTitle,options) {
options = options || {}; options = options || {};
var c = 0, var title = baseTitle,
title = baseTitle, template = options.template || "",
template = options.template, // test if .startCount is a positive integer. If not set to 0
c = (parseInt(options.startCount,10) > 0) ? parseInt(options.startCount,10) : 0,
prefix = (typeof(options.prefix) === "string") ? options.prefix : " "; prefix = (typeof(options.prefix) === "string") ? options.prefix : " ";
if (template) { if (template) {
// "count" is important to avoid an endless loop in while(...)!! // "count" is important to avoid an endless loop in while(...)!!
template = (/\$count:?(\d+)?\$/i.test(template)) ? template : template + "$count$"; template = (/\$count:?(\d+)?\$/i.test(template)) ? template : template + "$count$";
title = $tw.utils.formatTitleString(template,{"base":baseTitle,"separator":prefix,"counter":c}); // .formatTitleString() expects strings as input
title = $tw.utils.formatTitleString(template,{"base":baseTitle,"separator":prefix,"counter":c+""});
while(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) { while(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {
title = $tw.utils.formatTitleString(template,{"base":baseTitle,"separator":prefix,"counter":(++c)}); title = $tw.utils.formatTitleString(template,{"base":baseTitle,"separator":prefix,"counter":(++c)+""});
} }
} else { } else {
if (c > 0) {
title = baseTitle + prefix + c;
}
while(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) { while(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {
title = baseTitle + prefix + (++c); title = baseTitle + prefix + (++c);
} }

View 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-100>>
alert-border: <<colour flexoki-ye-2>>
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-paper>>
diff-equal-background:
diff-equal-foreground: inherit
diff-insert-background: <<colour flexoki-gr>>
diff-insert-foreground: <<colour flexoki-paper>>
diff-invisible-background: <<colour flexoki-ye>>
diff-invisible-foreground: <<colour flexoki-paper>>
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: #ffff00
highlight-foreground: #000000
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-ui-3>>
notification-border: <<colour flexoki-ui>>
page-background: <<colour flexoki-bg-2>>
pre-background: <<colour flexoki-ui-3>>
pre-border: <<colour flexoki-ui-2>>
primary: <<colour flexoki-cy>>
selection-background: #2b7b73
selection-foreground: <<colour flexoki-tx>>
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: #e5e5e5
wikilist-item: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000

View 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: #fff
dropdown-tab-background: #ececec
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: #ffff00
highlight-foreground: #000000
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>>
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: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000

View File

@ -32,7 +32,7 @@ dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>> dragger-foreground: <<colour background>>
dropdown-background: <<colour background>> dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>> dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff dropdown-tab-background-selected: #ffffff
dropdown-tab-background: #ececec dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7) dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit external-link-background-hover: inherit
@ -54,7 +54,7 @@ modal-border: #999999
modal-footer-background: #f5f5f5 modal-footer-background: #f5f5f5
modal-footer-border: #dddddd modal-footer-border: #dddddd
modal-header-border: #eeeeee modal-header-border: #eeeeee
muted-foreground: #bbb muted-foreground: #bbbbbb
network-activity-foreground: #448844 network-activity-foreground: #448844
notification-background: #ffffdd notification-background: #ffffdd
notification-border: #999999 notification-border: #999999
@ -98,7 +98,7 @@ tab-foreground: #666666
table-border: #dddddd table-border: #dddddd
table-footer-background: #a8a8a8 table-footer-background: #a8a8a8
table-header-background: #f0f0f0 table-header-background: #f0f0f0
tag-background: #ec6 tag-background: #eecc66
tag-foreground: #ffffff tag-foreground: #ffffff
testcase-accent-level-1: #c1eaff testcase-accent-level-1: #c1eaff
testcase-accent-level-2: #E3B740 testcase-accent-level-2: #E3B740
@ -132,11 +132,11 @@ toolbar-done-button:
untagged-background: #999999 untagged-background: #999999
very-muted-foreground: #888888 very-muted-foreground: #888888
wikilist-background: #e5e5e5 wikilist-background: #e5e5e5
wikilist-item: #fff wikilist-item: #ffffff
wikilist-info: #000 wikilist-info: #000000
wikilist-title: #666 wikilist-title: #666666
wikilist-title-svg: <<colour wikilist-title>> wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa wikilist-url: #aaaaaa
wikilist-button-open: #4fb82b wikilist-button-open: #4fb82b
wikilist-button-open-hover: green wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8 wikilist-button-reveal: #5778d8
@ -144,7 +144,7 @@ wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778 wikilist-button-remove: #d85778
wikilist-button-remove-hover: red wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3 wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888 wikilist-toolbar-foreground: #888888
wikilist-droplink-dragover: rgba(255,192,192,0.5) wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac wikilist-button-background: #acacac
wikilist-button-foreground: #000 wikilist-button-foreground: #000000

View File

@ -1,23 +1,23 @@
title: $:/core/templates/server/static.tiddler.wikitext title: $:/core/templates/server/static.tiddler.wikitext
\whitespace trim \whitespace trim
<div class="tc-tiddler-title"> <div class="tc-tiddler-title tc-clearfix">
<div class="tc-titlebar"> <div class="tc-titlebar">
<h2><$text text=<<currentTiddler>>/></h2> <h2><$text text=<<currentTiddler>>/></h2>
</div> </div>
</div> </div>
<div class="tc-subtitle"> <div class="tc-subtitle tc-clearfix">
<$link to={{!!modifier}}> <$link to={{!!modifier}}>
<$view field="modifier"/> <$view field="modifier"/>
</$link> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/> </$link> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div> </div>
<div class="tc-tags-wrapper"> <div class="tc-tags-wrapper" tc-clearfix>
<$list filter="[all[current]tags[]sort[title]]"> <$list filter="[all[current]tags[]sort[title]]">
<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}> <a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>
<$macrocall $name="tag-pill" tag=<<currentTiddler>>/> <$macrocall $name="tag-pill" tag=<<currentTiddler>>/>
</a> </a>
</$list> </$list>
</div> </div>
<div class="tc-tiddler-body"> <div class="tc-tiddler-body tc-clearfix">
<$transclude mode="block"/> <$transclude mode="block"/>
</div> </div>

View File

@ -4,7 +4,7 @@ tags: $:/tags/RawMarkupWikified
\procedure meta-plain(name,source,name-attribute:"name") \procedure meta-plain(name,source,name-attribute:"name")
\whitespace trim \whitespace trim
<%if [<source>has[text]] %> <%if [<source>has[text]] %>
&lt;meta <$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<source>get[text]encodehtml[]] }}}/>"&gt; &lt;meta&#32;<$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<source>get[text]encodehtml[]] }}}/>"&gt;
<$text text={{{ [charcode[10]] }}}/> <$text text={{{ [charcode[10]] }}}/>
<%endif%> <%endif%>
\end meta-plain \end meta-plain
@ -13,7 +13,7 @@ tags: $:/tags/RawMarkupWikified
\whitespace trim \whitespace trim
<%if [<source>has[text]] %> <%if [<source>has[text]] %>
<$wikify name="html" text={{{ [<source>get[text]] }}} output="text"> <$wikify name="html" text={{{ [<source>get[text]] }}} output="text">
&lt;meta <$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<html>encodehtml[]] }}}/>"&gt; &lt;meta&#32;<$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<html>encodehtml[]] }}}/>"&gt;
<$text text={{{ [charcode[10]] }}}/> <$text text={{{ [charcode[10]] }}}/>
</$wikify> </$wikify>
<%endif%> <%endif%>

View File

@ -57,3 +57,4 @@ title: $:/core/templates/tiddlywiki5.html
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}` `{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`
</body> </body>
</html>` </html>`
</$set>

View File

@ -2,10 +2,10 @@ title: $:/core/ui/Actions/new-journal
tags: $:/tags/Actions tags: $:/tags/Actions
description: create a new journal tiddler description: create a new journal tiddler
\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$
\whitespace trim \whitespace trim
<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}> \function get-tags() [<textFieldTags>] [<tagsFieldTags>] +[join[ ]]
<$wikify name="journalTitle" text="<$macrocall $name='now' format=<<journalTitleTemplate>>/>"> <$let journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>
<$wikify name="journalTitle" text="<$transclude $variable='now' format=<<journalTitleTemplate>>/>">
<$reveal type="nomatch" state=<<journalTitle>> text=""> <$reveal type="nomatch" state=<<journalTitle>> text="">
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>
</$reveal> </$reveal>
@ -13,4 +13,4 @@ description: create a new journal tiddler
<$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/> <$action-sendmessage $message="tm-new-tiddler" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>
</$reveal> </$reveal>
</$wikify> </$wikify>
</$vars> </$let>

View File

@ -2,8 +2,8 @@ title: $:/core/ui/Actions/new-tiddler
tags: $:/tags/Actions tags: $:/tags/Actions
description: create a new empty tiddler description: create a new empty tiddler
\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$
\whitespace trim \whitespace trim
<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}> \function get-tags() [<textFieldTags>] [<tagsFieldTags>] +[join[ ]]
<$let textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>
<$action-sendmessage $message="tm-new-tiddler" tags=<<get-tags>>/> <$action-sendmessage $message="tm-new-tiddler" tags=<<get-tags>>/>
</$vars> </$let>

View File

@ -2,50 +2,74 @@ title: $:/core/ui/AdvancedSearch/Filter
tags: $:/tags/AdvancedSearch tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Filter/Caption}} caption: {{$:/language/Search/Filter/Caption}}
\define lingo-base() $:/language/Search/ \procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after") \procedure set-next-input-tab()
<$macrocall $name="change-input-tab" <$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803" stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch" tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$" beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System" defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/> actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
/>
\end \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 \whitespace trim
<$list <$list filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]">
filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]" <$list-empty>
emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"> <$action-deletetiddler $filter="[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]"/>
</$list-empty>
<$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/> <$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/>
<$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/> <$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/>
</$list> </$list>
\end \end
\define input-accept-actions() \procedure input-accept-actions()
\whitespace trim \whitespace trim
<$list <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" <$list-empty>
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"> <$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list>
<$/list-empty>
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
\end \end
\define input-accept-variant-actions() \procedure input-accept-variant-actions()
\whitespace trim \whitespace trim
<$list <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" <$list-empty>
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]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
<$list filter="[<__tiddler__>get[text]minlength[1]]"> <$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>
</$list>
</$list-empty>
<$list filter="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list>
</$list>
\end \end
\whitespace trim \whitespace trim
<<lingo Filter/Hint>> <<lingo Filter/Hint>>
<div class="tc-search tc-advanced-search"> <div class="tc-search tc-advanced-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$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">>> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -57,21 +81,22 @@ caption: {{$:/language/Search/Filter/Caption}}
firstSearchFilterField="text" firstSearchFilterField="text"
inputAcceptActions=<<input-accept-actions>> inputAcceptActions=<<input-accept-actions>>
inputAcceptVariantActions=<<input-accept-variant-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>>
inputCancelActions=<<cancel-search-actions>>/> inputCancelActions=<<cancel-search-actions>>
</$keyboard> />
</$keyboard> </$keyboard>
&#32; </$keyboard>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]"><$transclude/></$list> <$list filter="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]">
<$transclude/>
</$list>
</div> </div>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>"> <$reveal state="$:/temp/advancedsearch" type="nomatch" text="" tag="div" class="tc-search-results">
<div class="tc-search-results"> <$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>">
<p><<lingo Filter/Matches>></p> <p><<lingo Filter/Matches>></p>
<$list filter={{$:/temp/advancedsearch}}> <$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"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
</$list> </$list>
</div> </$set>
</$set>
</$reveal> </$reveal>

View File

@ -3,18 +3,27 @@ tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Shadows/Caption}} caption: {{$:/language/Search/Shadows/Caption}}
first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] 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") \procedure set-next-input-tab()
<$macrocall $name="change-input-tab" <$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803" stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch" tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$" beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System" defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/> actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end \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 \whitespace trim
<$list <$list
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" 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"/> <$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\end \end
\define input-accept-actions() \procedure input-accept-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" 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>"> 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]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
\end \end
\define input-accept-variant-actions() \procedure input-accept-variant-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" 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>"> 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]]"> <$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></$list>
\end \end
@ -50,8 +59,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$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>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -79,14 +88,18 @@ 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"> <$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="<$count filter='[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]'/>"> <$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :and[count[]]}}}>
<div class="tc-search-results"> <div class="tc-search-results">
<<lingo Shadows/Matches>> <%if [<resultCount>match[0]] %>
{{$:/language/Search/Matches/NoMatch}}
<%else%>
<<lingo Shadows/Matches>>
<%endif%>
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]"> <$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]]">
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
</$list> </$list>

View File

@ -2,16 +2,20 @@ title: $:/core/ui/AdvancedSearch/Standard
tags: $:/tags/AdvancedSearch tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Standard/Caption}} caption: {{$:/language/Search/Standard/Caption}}
\define lingo-base() $:/language/Search/ \procedure 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 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 \whitespace trim
@ -19,10 +23,10 @@ caption: {{$:/language/Search/Standard/Caption}}
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$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-Right" actions=<<next-search-tab>>>
<$keyboard key="shift-alt-Left" actions=<<next-search-tab "before">>> <$keyboard key="shift-alt-Left" actions=<<previous-search-tab>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -33,7 +37,7 @@ caption: {{$:/language/Search/Standard/Caption}}
inputCancelActions=<<cancel-search-actions>> inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<input-accept-actions>> inputAcceptActions=<<input-accept-actions>>
inputAcceptVariantActions=<<input-accept-variant-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}}/> filterMinLength={{$:/config/Search/MinLength}}/>
</$keyboard> </$keyboard>
</$keyboard> </$keyboard>
@ -55,18 +59,18 @@ caption: {{$:/language/Search/Standard/Caption}}
variable="listItem"> variable="listItem">
<$vars <$vars
userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} 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"> searchListState="$:/temp/advancedsearch/selected-item">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]">
<$macrocall $name="tabs" <$list-empty>
<$list filter='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'><$transclude mode="block"/></$list>
</$list-empty>
<$transclude $variable="tabs"
tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]" tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"
default={{$:/config/SearchResults/Default}} default={{$:/config/SearchResults/Default}}
actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<currentTab>>/>" actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<currentTab>>/>"
explicitState="$:/state/tab/search-results/advancedsearch" /> explicitState="$:/state/tab/search-results/advancedsearch" />
</$list> </$list>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]] :else[[]]">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"><$transclude mode="block"/></$list>
</$list>
</$vars> </$vars>
</$list> </$list>
</$reveal> </$reveal>

View File

@ -1,19 +1,28 @@
title: $:/core/ui/AdvancedSearch/System title: $:/core/ui/AdvancedSearch/System
tags: $:/tags/AdvancedSearch tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/System/Caption}} 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/ \procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after",stateTitle,tag,defaultState,currentTabTiddler) \procedure set-next-input-tab()
<$macrocall $name="change-input-tab" <$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803" stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch" tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$" beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System" defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/> actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end \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 \whitespace trim
<$list <$list
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" 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"/> <$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\end \end
\define input-accept-actions() \procedure input-accept-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" 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>"> 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]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
\end \end
\define input-accept-variant-actions() \procedure input-accept-variant-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" 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>"> 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]]"> <$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></$list>
\end \end
@ -49,8 +58,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$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>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -78,14 +87,18 @@ 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"> <$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="<$count filter='[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]'/>"> <$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"> <div class="tc-search-results">
<<lingo System/Matches>> <%if [<resultCount>match[0]] %>
{{$:/language/Search/Matches/NoMatch}}
<%else%>
<<lingo System/Matches>>
<%endif%>
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]"> <$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]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
</$list> </$list>

View File

@ -47,13 +47,13 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
<h2> <h2>
<div> <div>
<%if [<currentTiddler>get[stability]match[STABILITY_0_DEPRECATED]] %> <%if [<currentTiddler>get[stability]match[STABILITY_0_DEPRECATED]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-deprecated">DEPRECATED</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-deprecated"><<lingo "Stability/Deprecated">></span>
<%elseif [<currentTiddler>get[stability]match[STABILITY_1_EXPERIMENTAL]] %> <%elseif [<currentTiddler>get[stability]match[STABILITY_1_EXPERIMENTAL]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-experimental">EXPERIMENTAL</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-experimental"><<lingo "Stability/Experimental">></span>
<%elseif [<currentTiddler>get[stability]match[STABILITY_2_STABLE]] %> <%elseif [<currentTiddler>get[stability]match[STABILITY_2_STABLE]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-stable">STABLE</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-stable"><<lingo "Stability/Stable">></span>
<%elseif [<currentTiddler>get[stability]match[STABILITY_3_LEGACY]] %> <%elseif [<currentTiddler>get[stability]match[STABILITY_3_LEGACY]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-legacy">LEGACY</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-legacy"><<lingo "Stability/Legacy">></span>
<%endif%> <%endif%>
<em><$view field="version"/></em></div> <em><$view field="version"/></em></div>
</h2> </h2>

View File

@ -2,22 +2,7 @@ title: $:/core/ui/ControlPanel/Basics
tags: $:/tags/ControlPanel/Info tags: $:/tags/ControlPanel/Info
caption: {{$:/language/ControlPanel/Basics/Caption}} caption: {{$:/language/ControlPanel/Basics/Caption}}
\define lingo-base() $:/language/ControlPanel/Basics/ \procedure lingo-base() $:/language/ControlPanel/Basics/
\define show-filter-count(filter)
\whitespace trim
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/advancedsearch" $value="""$filter$"""/>
<$action-setfield $tiddler="$:/temp/advancedsearch/input" $value="""$filter$"""/>
<$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/>
<$action-setfield $tiddler="$:/state/tab--1498284803" $value="$:/core/ui/AdvancedSearch/Filter"/>
<$action-navigate $to="$:/AdvancedSearch"/>
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
''<$count filter="""$filter$"""/>''
&#32;
{{$:/core/images/advanced-search-button}}
</$button>
\end
\whitespace trim \whitespace trim
|tc-max-width tc-edit-max-width|k |tc-max-width tc-edit-max-width|k

View File

@ -75,13 +75,13 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
<h2><$view tiddler=<<assetInfo>> field="original-title"/></h2> <h2><$view tiddler=<<assetInfo>> field="original-title"/></h2>
<div> <div>
<%if [<assetInfo>get[stability]match[STABILITY_0_DEPRECATED]] %> <%if [<assetInfo>get[stability]match[STABILITY_0_DEPRECATED]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-deprecated">DEPRECATED</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-deprecated">{{$:/language/ControlPanel/Plugins/Stability/Deprecated}}</span>
<%elseif [<assetInfo>get[stability]match[STABILITY_1_EXPERIMENTAL]] %> <%elseif [<assetInfo>get[stability]match[STABILITY_1_EXPERIMENTAL]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-experimental">EXPERIMENTAL</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-experimental">{{$:/language/ControlPanel/Plugins/Stability/Experimental}}</span>
<%elseif [<assetInfo>get[stability]match[STABILITY_2_STABLE]] %> <%elseif [<assetInfo>get[stability]match[STABILITY_2_STABLE]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-stable">STABLE</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-stable">{{$:/language/ControlPanel/Plugins/Stability/Stable}}</span>
<%elseif [<assetInfo>get[stability]match[STABILITY_3_LEGACY]] %> <%elseif [<assetInfo>get[stability]match[STABILITY_3_LEGACY]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-legacy">LEGACY</span> <span class="tc-plugin-info-stability tc-plugin-info-stability-legacy">{{$:/language/ControlPanel/Plugins/Stability/Legacy}}</span>
<%endif%> <%endif%>
<em><$view tiddler=<<assetInfo>> field="version"/></em></div> <em><$view tiddler=<<assetInfo>> field="version"/></em></div>
<$list filter="[<assetInfo>get[original-title]get[version]]" variable="installedVersion"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list> <$list filter="[<assetInfo>get[original-title]get[version]]" variable="installedVersion"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>

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

View File

@ -9,7 +9,7 @@ second-search-filter: [!is[system]search<userInput>sort[title]limit[250]]
//<small>{{$:/language/Search/Matches/Title}}</small>// //<small>{{$:/language/Search/Matches/Title}}</small>//
<$list filter="[<userInput>minlength[1]]" variable="ignore"> <$list filter="[<userInput>minlength[1]]" variable="ignore">
<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}> <$list filter={{{ [<configTiddler>get[first-search-filter]] }}} emptyMessage={{$:/language/Search/Matches/NoResult}}>
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
@ -19,7 +19,7 @@ second-search-filter: [!is[system]search<userInput>sort[title]limit[250]]
//<small>{{$:/language/Search/Matches/All}}</small>// //<small>{{$:/language/Search/Matches/All}}</small>//
<$list filter="[<userInput>minlength[1]]" variable="ignore"> <$list filter="[<userInput>minlength[1]]" variable="ignore">
<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}> <$list filter={{{ [<configTiddler>get[second-search-filter]] }}} emptyMessage={{$:/language/Search/Matches/NoResult}}>
<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>

View File

@ -3,7 +3,7 @@ tags: $:/tags/EditTemplate
\define config-title() $:/config/EditToolbarButtons/Visibility/$(listItem)$ \define config-title() $:/config/EditToolbarButtons/Visibility/$(listItem)$
\whitespace trim \whitespace trim
<div class="tc-tiddler-title tc-tiddler-edit-title"> <div class="tc-tiddler-title tc-tiddler-edit-title tc-clearfix">
<$view field="title"/> <$view field="title"/>
<span class="tc-tiddler-controls tc-titlebar"> <span class="tc-tiddler-controls tc-titlebar">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem">
@ -14,5 +14,4 @@ tags: $:/tags/EditTemplate
</$let> </$let>
</$list> </$list>
</span> </span>
<div style="clear: both;"></div>
</div> </div>

View File

@ -1,35 +1,32 @@
title: $:/core/ui/EditTemplate/fields title: $:/core/ui/EditTemplate/fields
tags: $:/tags/EditTemplate tags: $:/tags/EditTemplate
\define lingo-base() $:/language/EditTemplate/ \procedure lingo-base() $:/language/EditTemplate/
\define config-title() \function tf.config-title() [[$:/config/EditTemplateFields/Visibility/]addsuffix[$(currentField)$]substitute[]get[text]]
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end
\define config-filter() \function tf.config-filter() [[hide]] :except[title<tf.config-title>]
[[hide]] -[title{$(config-title)$}]
\end
<!-- Beware this is duplicated from EditTemplate.tid. For details see bug #7054 --> <!-- 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>] \procedure 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-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() \procedure prefix.bracket() [
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input \procedure suffix.bracket() ]
\end
\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 \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]] }}}/> <$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">> > <$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/> <$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/>
</$set> </$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 \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 \whitespace trim
<$list <$list
filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]" filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]"
@ -39,7 +36,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
</$list> </$list>
\end \end
\define cancel-search-actions() \procedure cancel-search-actions()
\whitespace trim \whitespace trim
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}> <$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
<$list <$list
@ -50,7 +47,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
</$set> </$set>
\end \end
\define new-field() \procedure new-field()
\whitespace trim \whitespace trim
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}> <$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
<$reveal type="nomatch" text="" default=<<name>>> <$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">> > <$set name="newFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
<div class="tc-edit-fields"> <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> <tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop"> <$list filter="[all[current]fields[]] :and[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<config-filter>> variable="temp"> <$list filter=<<tf.config-filter>> variable="temp">
<tr class="tc-edit-field"> <tr class="tc-edit-field">
<td class="tc-edit-field-name"> <td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td> <$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value"> <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}] }}} /> <$transclude tiddler={{{ [<currentField>] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] }}} />
</$keyboard> </$keyboard>
</td> </td>
@ -107,10 +104,10 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
</em> </em>
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>> <$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
<div class="tc-edit-field-add-name-wrapper"> <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}} 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}} 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>> /> 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> <$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=""> <$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>> <<lingo Fields/Add/Dropdown/User>>
</div> </div>
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}> <$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="[!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]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>"""> <$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>>> <$link to=<<currentField>>>
<$text text=<<currentField>>/> <$text text=<<currentField>>/>
</$link> </$link>
@ -131,8 +128,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<div class="tc-dropdown-item"> <div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>> <<lingo Fields/Add/Dropdown/System>>
</div> </div>
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField"> <$list filter="[fields[]search:title<newFieldName>sort[]] :except[!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="[<currentField>addsuffix[-secondaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>> <$link to=<<currentField>>>
<$text text=<<currentField>>/> <$text text=<<currentField>>/>
</$link> </$link>
@ -151,7 +148,7 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
</$keyboard> </$keyboard>
</span> </span>
<span class="tc-edit-field-add-button"> <span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/> <$transclude $variable="new-field"/>
</span> </span>
</$let> </$let>
</$vars> </$vars>

View File

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

View File

@ -4,11 +4,15 @@ caption: {{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}
description: {{$:/language/Buttons/Cancel/Hint}} description: {{$:/language/Buttons/Cancel/Hint}}
\whitespace trim \whitespace trim
<$button actions=<<cancel-delete-tiddler-actions "cancel">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>> <$button actions=<<cancel-delete-tiddler-actions "cancel">>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> tooltip={{$:/language/Buttons/Cancel/Hint}}
{{$:/core/images/cancel-button}} aria-label={{$:/language/Buttons/Cancel/Hint}}
</$list> class=<<tv-config-toolbar-class>>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> >
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span> <%if [<tv-config-toolbar-icons>match[yes]] %>
</$list> {{$:/core/images/cancel-button}}
<%endif%>
<%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>
<%endif%>
</$button> </$button>

View File

@ -4,11 +4,15 @@ caption: {{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}
description: {{$:/language/Buttons/Delete/Hint}} description: {{$:/language/Buttons/Delete/Hint}}
\whitespace trim \whitespace trim
<$button actions=<<cancel-delete-tiddler-actions "delete">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>> <$button actions=<<cancel-delete-tiddler-actions "delete">>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> tooltip={{$:/language/Buttons/Delete/Hint}}
{{$:/core/images/delete-button}} aria-label={{$:/language/Buttons/Delete/Hint}}
</$list> class=<<tv-config-toolbar-class>>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> >
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Delete/Caption}}/></span> <%if [<tv-config-toolbar-icons>match[yes]] %>
</$list> {{$:/core/images/delete-button}}
<%endif%>
<%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>
<%endif%>
</$button> </$button>

View File

@ -4,21 +4,20 @@ caption: {{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}
description: {{$:/language/Buttons/Save/Hint}} description: {{$:/language/Buttons/Save/Hint}}
\whitespace trim \whitespace trim
\define save-tiddler-button() \procedure save-tiddler-button()
\whitespace trim
<$fieldmangler> <$fieldmangler>
<$button <$button
tooltip={{$:/language/Buttons/Save/Hint}} tooltip={{$:/language/Buttons/Save/Hint}}
aria-label={{$:/language/Buttons/Save/Caption}} aria-label={{$:/language/Buttons/Save/Hint}}
class=<<tv-config-toolbar-class>> class=<<tv-config-toolbar-class>>
> >
<<save-tiddler-actions>> <<save-tiddler-actions>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/done-button}} {{$:/core/images/done-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
</$fieldmangler> </$fieldmangler>
\end \end

View File

@ -11,4 +11,5 @@ shortcuts: ((bold))
$param="wrap-selection" $param="wrap-selection"
prefix="''" prefix="''"
suffix="''" suffix="''"
trimSelection="yes"
/> />

View File

@ -3,7 +3,7 @@ tags: $:/tags/EditorToolbar
icon: $:/core/images/excise icon: $:/core/images/excise
caption: {{$:/language/Buttons/Excise/Caption}} caption: {{$:/language/Buttons/Excise/Caption}}
description: {{$:/language/Buttons/Excise/Hint}} description: {{$:/language/Buttons/Excise/Hint}}
condition: [<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/vnd.tiddlywiki]] +[first[]] condition: [<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] [<targetTiddler>type[text/markdown]] [<targetTiddler>type[text/x-markdown]] +[first[]]
shortcuts: ((excise)) shortcuts: ((excise))
dropdown: $:/core/ui/EditorToolbar/excise-dropdown dropdown: $:/core/ui/EditorToolbar/excise-dropdown

View File

@ -1,20 +1,30 @@
title: $:/core/ui/EditorToolbar/file-import title: $:/core/ui/EditorToolbar/file-import
tags: $:/tags/EditorTools tags: $:/tags/EditorTools
condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]] condition: [<targetTiddler>filter{$:/config/Editor/EnableImportFilter}]
\define lingo-base() $:/language/Import/ \procedure lingo-base() $:/language/Import/
\define closePopupActions() \procedure closePopupActions()
<$action-deletetiddler $filter="[title<importState>] [title<importTitle>]"/> <$action-deletetiddler $filter="[title<importState>] [title<importTitle>]"/>
\end \end closePopupActions
\define replacement-text-image() [img[$title$]] \procedure tw5-ImageTemplate() [img[$(currentTiddler)$]]
\procedure tw5-FileTemplate() [[$(currentTiddler)$]]
\define replacement-text-file() [[$title$]] <!-- The following characters must be escaped in markdown: <>()\ -->
\function escape.title() [search-replace:g:regexp[\(|\)|<|>|\\],[\$&]]
\procedure markdown-ImageTemplate() ![](<#${ [<currentTiddler>escape.title[]] }$>)
\procedure markdown-FileTemplate() [](<#${ [<currentTiddler>escape.title[]] }$>)
\define postImportActions() \function is.markdown.tiddler() [all[]type[text/x-markdown]] [all[]type[text/markdown]]
\function is.image() [get[type]prefix[image]]
\function get.markdown.link() [is.image[]then<markdown-ImageTemplate>else<markdown-FileTemplate>]
\function get.tw5.link() [is.image[]then<tw5-ImageTemplate>else<tw5-FileTemplate>]
\function get.link.template() [<storyTiddler>is.markdown.tiddler[]then<get.markdown.link>else<get.tw5.link>]
\procedure postImportActions()
\whitespace trim \whitespace trim
<$list filter="[<importTitle>links[]] :reduce[get[type]prefix[image]then<replacement-text-image>else<replacement-text-file>search-replace[$title$],<currentTiddler>addprefix<accumulator>]" variable="imageTitle"> <$list filter="[<importTitle>links[]] :reduce[get.link.template[]substitute[]addprefix<accumulator>]" variable="imageTitle">
<$action-sendmessage <$action-sendmessage
$message="tm-edit-text-operation" $message="tm-edit-text-operation"
$param="insert-text" $param="insert-text"
@ -22,14 +32,14 @@ condition: [<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]
/> />
</$list> </$list>
<<closePopupActions>> <<closePopupActions>>
\end \end postImportActions
\define buttons() \procedure buttons()
\whitespace trim \whitespace trim
<$button class="tc-btn-invisible" actions=<<closePopupActions>> ><<lingo Listing/Cancel/Caption>></$button> <$button class="tc-btn-invisible" actions=<<closePopupActions>> ><<lingo Listing/Cancel/Caption>></$button>
&#32; &#32;
<$button class="tc-btn-invisible" message="tm-perform-import" param=<<importTitle>> actions=<<postImportActions>> ><<lingo Listing/Import/Caption>></$button> <$button class="tc-btn-invisible" message="tm-perform-import" param=<<importTitle>> actions=<<postImportActions>> ><<lingo Listing/Import/Caption>></$button>
\end \end buttons
\whitespace trim \whitespace trim
<$reveal type="popup" state=<<importState>> tag="div" class="tc-editor-importpopup"> <$reveal type="popup" state=<<importState>> tag="div" class="tc-editor-importpopup">

View File

@ -11,4 +11,5 @@ shortcuts: ((italic))
$param="wrap-selection" $param="wrap-selection"
prefix="//" prefix="//"
suffix="//" suffix="//"
trimSelection="yes"
/> />

View File

@ -1,44 +1,49 @@
title: $:/core/ui/EditorToolbar/link-dropdown 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 \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>]"/> <$action-deletetiddler $filter="[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]"/>
\end \end
\define get-focus-selector() [data-tiddler-title="$(cssEscapedTitle)$"] .tc-create-wikitext-link input \procedure prefix.bracket() [
\procedure suffix.bracket() ]
\define cancel-search-actions-inner() \function tf.get-focus-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<cssEscapedTitle>addsuffix[$(suffix.bracket)$]substitute[]] .tc-create-wikitext-link input :and[join[ ]]
\procedure 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> <$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>
\end \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 \whitespace trim
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;" actions=<<add-link-actions>>> <$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}} {{$:/core/images/chevron-right}}
</$button> </$button>
\end \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 \whitespace trim
''<<lingo Hint>>'' ''<<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">>> <$vars searchTiddler={{{ [<config-title>addsuffix[/search]] }}} linkTiddler={{{ [<config-title>addsuffix[/link]] }}} linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>>
<$vars linkTiddler=<<searchTiddler>>> <$vars linkTiddler=<<searchTiddler>>>
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$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"> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>> class="tc-create-wikitext-link">
<$macrocall $name="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>> <$transclude $variable="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>
selectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type="search" filterMinLength="1" selectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type="search" filterMinLength="1"
tag="input" focus="true" class="tc-popup-handle" inputCancelActions=<<cancel-search-actions>> tag="input" focus="true" class="tc-popup-handle" inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default="" 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>
</$keyboard> </$keyboard>
&#32; &#32;
@ -46,7 +51,7 @@ title: $:/core/ui/EditorToolbar/link-dropdown
<<external-link>> <<external-link>>
&#32; &#32;
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;"> <$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>><$set name="cssEscapedTitle" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.get-focus-selector>>/></$set>
{{$:/core/images/close-button}} {{$:/core/images/close-button}}
</$button> </$button>
</$reveal> </$reveal>
@ -56,7 +61,7 @@ title: $:/core/ui/EditorToolbar/link-dropdown
<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>> <$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>
<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}> <$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
{{$:/core/ui/SearchResults}} {{$:/core/ui/SearchResults}}
@ -70,4 +75,4 @@ title: $:/core/ui/EditorToolbar/link-dropdown
\end \end
<$macrocall $name="body" config-title=<<qualify "$:/state/Link/">>/> <$transclude $variable="body" config-title=<<qualify "$:/state/Link/">>/>

View File

@ -12,4 +12,5 @@ tags: $:/tags/EditorToolbar
$param="wrap-selection" $param="wrap-selection"
prefix="[[" prefix="[["
suffix="]]" suffix="]]"
trimSelection="yes"
/> />

View File

@ -11,4 +11,5 @@ shortcuts: ((mono-line))
$param="wrap-selection" $param="wrap-selection"
prefix="`" prefix="`"
suffix="`" suffix="`"
trimSelection="yes"
/> />

View File

@ -11,4 +11,5 @@ shortcuts: ((strikethrough))
$param="wrap-selection" $param="wrap-selection"
prefix="~~" prefix="~~"
suffix="~~" suffix="~~"
trimSelection="yes"
/> />

View File

@ -11,4 +11,5 @@ shortcuts: ((subscript))
$param="wrap-selection" $param="wrap-selection"
prefix=",," prefix=",,"
suffix=",," suffix=",,"
trimSelection="yes"
/> />

View File

@ -11,4 +11,5 @@ shortcuts: ((superscript))
$param="wrap-selection" $param="wrap-selection"
prefix="^^" prefix="^^"
suffix="^^" suffix="^^"
trimSelection="yes"
/> />

View File

@ -12,4 +12,5 @@ tags: $:/tags/EditorToolbar
$param="wrap-selection" $param="wrap-selection"
prefix="{{" prefix="{{"
suffix="}}" suffix="}}"
trimSelection="yes"
/> />

View File

@ -11,4 +11,5 @@ shortcuts: ((underline))
$param="wrap-selection" $param="wrap-selection"
prefix="__" prefix="__"
suffix="__" suffix="__"
trimSelection="yes"
/> />

View File

@ -4,15 +4,14 @@ caption: {{$:/core/images/advanced-search-button}} {{$:/language/Buttons/Advance
description: {{$:/language/Buttons/AdvancedSearch/Hint}} description: {{$:/language/Buttons/AdvancedSearch/Hint}}
\whitespace trim \whitespace trim
\define advanced-search-button(class) \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)$`>
<$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]] %>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/advanced-search-button}} {{$:/core/images/advanced-search-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
\end \end

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/CloseAll/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-close-all-tiddlers" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-close-all-tiddlers" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/close-all-button}} {{$:/core/images/close-all-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/CloseAll/Caption}}/> <$text text={{$:/language/Buttons/CloseAll/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -4,15 +4,14 @@ caption: {{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Ca
description: {{$:/language/Buttons/ControlPanel/Hint}} description: {{$:/language/Buttons/ControlPanel/Hint}}
\whitespace trim \whitespace trim
\define control-panel-button(class) \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)$`>
<$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]] %>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/options-button}} {{$:/core/images/options-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
\end \end

View File

@ -6,25 +6,25 @@ description: {{$:/language/Buttons/Encryption/Hint}}
\whitespace trim \whitespace trim
<$reveal type="match" state="$:/isEncrypted" text="yes"> <$reveal type="match" state="$:/isEncrypted" text="yes">
<$button message="tm-clear-password" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-clear-password" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/locked-padlock}} {{$:/core/images/locked-padlock}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/> <$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
</$reveal> </$reveal>
<$reveal type="nomatch" state="$:/isEncrypted" text="yes"> <$reveal type="nomatch" state="$:/isEncrypted" text="yes">
<$button message="tm-set-password" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-set-password" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/unlocked-padlock}} {{$:/core/images/unlocked-padlock}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/> <$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
</$reveal> </$reveal>

View File

@ -3,4 +3,4 @@ tags: $:/tags/PageControls
caption: {{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}} caption: {{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}
description: {{$:/language/Buttons/ExportPage/Hint}} description: {{$:/language/Buttons/ExportPage/Hint}}
<$macrocall $name="exportButton" exportFilter="[!is[system]sort[title]]" lingoBase="$:/language/Buttons/ExportPage/"/> <$transclude $variable="exportButton" exportFilter="[!is[system]sort[title]]" lingoBase="$:/language/Buttons/ExportPage/"/>

View File

@ -6,12 +6,12 @@ description: {{$:/language/Buttons/FoldAll/Hint}}
\whitespace trim \whitespace trim
<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>> <$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-fold-all-tiddlers" $param=<<currentTiddler>> foldedStatePrefix="$:/state/folded/"/> <$action-sendmessage $message="tm-fold-all-tiddlers" $param=<<currentTiddler>> foldedStatePrefix="$:/state/folded/"/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]" variable="listItem"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/fold-all-button}} {{$:/core/images/fold-all-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/FoldAll/Caption}}/> <$text text={{$:/language/Buttons/FoldAll/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/FullScreen/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-full-screen" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-full-screen" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/full-screen-button}} {{$:/core/images/full-screen-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/FullScreen/Caption}}/> <$text text={{$:/language/Buttons/FullScreen/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/Home/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-home" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-home" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/home-button}} {{$:/core/images/home-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Home/Caption}}/> <$text text={{$:/language/Buttons/Home/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -6,14 +6,14 @@ description: {{$:/language/Buttons/Import/Hint}}
\whitespace trim \whitespace trim
<div class="tc-file-input-wrapper"> <div class="tc-file-input-wrapper">
<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>> <$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/import-button}} {{$:/core/images/import-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Import/Caption}}/> <$text text={{$:/language/Buttons/Import/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
<$browse tooltip={{$:/language/Buttons/Import/Hint}}/> <$browse tooltip={{$:/language/Buttons/Import/Hint}}/>
</div> </div>

View File

@ -4,21 +4,18 @@ caption: {{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}
description: {{$:/language/Buttons/Language/Hint}} description: {{$:/language/Buttons/Language/Hint}}
\whitespace trim \whitespace trim
\define flag-title()
$(languagePluginTitle)$/icon
\end
<span class="tc-popup-keep"> <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"> <$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">
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
<span class="tc-image-button"> <span class="tc-image-button">
<$set name="languagePluginTitle" value={{$:/language}}> <$set name="languagePluginTitle" value={{$:/language}}>
<$image source=<<flag-title>>/> <$image source=`$(languagePluginTitle)$/icon`/>
</$set> </$set>
</span> </span>
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Language/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/Language/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
</span> </span>
<$reveal state=<<qualify "$:/state/popup/language">> type="popup" position="below" animate="yes"> <$reveal state=<<qualify "$:/state/popup/language">> type="popup" position="below" animate="yes">

View File

@ -6,10 +6,10 @@ description: {{$:/language/LayoutSwitcher/Description}}
\whitespace trim \whitespace trim
<$button tooltip={{$:/language/Buttons/LayoutSwitcher/Hint}} aria-label={{$:/language/Buttons/LayoutSwitcher/Caption}} class=<<tv-config-toolbar-class>>> <$button tooltip={{$:/language/Buttons/LayoutSwitcher/Hint}} aria-label={{$:/language/Buttons/LayoutSwitcher/Caption}} class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-show-switcher" switch="layout"/> <$action-sendmessage $message="tm-show-switcher" switch="layout"/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/layout-button}} {{$:/core/images/layout-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/LayoutSwitcher/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/LayoutSwitcher/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>

View File

@ -4,17 +4,16 @@ caption: {{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}
description: {{$:/language/Buttons/Manager/Hint}} description: {{$:/language/Buttons/Manager/Hint}}
\whitespace trim \whitespace trim
\define manager-button(class) \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)$`>
<$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]] %>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/list}} {{$:/core/images/list}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Manager/Caption}}/> <$text text={{$:/language/Buttons/Manager/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
\end \end

View File

@ -12,20 +12,18 @@ description: {{$:/language/Buttons/More/Hint}}
class=<<tv-config-toolbar-class>> class=<<tv-config-toolbar-class>>
selectedClass="tc-selected" selectedClass="tc-selected"
> >
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/down-arrow}} {{$:/core/images/down-arrow}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/More/Caption}}/> <$text text={{$:/language/Buttons/More/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes"> <$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="below" animate="yes">
<div class="tc-drop-down"> <div class="tc-drop-down">
<$set name="tv-config-toolbar-icons" value="yes"> <$let tv-config-toolbar-icons="yes" tv-config-toolbar-text="yes" tv-config-toolbar-class="tc-btn-invisible">
<$set name="tv-config-toolbar-text" value="yes">
<$set name="tv-config-toolbar-class" value="tc-btn-invisible">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]" <$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]"
variable="listItem" variable="listItem"
> >
@ -37,8 +35,6 @@ description: {{$:/language/Buttons/More/Hint}}
</$set> </$set>
</$reveal> </$reveal>
</$list> </$list>
</$set> </$let>
</$set>
</$set>
</div> </div>
</$reveal> </$reveal>

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/NetworkActivity/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-http-cancel-all-requests" tooltip={{$:/language/Buttons/NetworkActivity/Hint}} aria-label={{$:/language/Buttons/NetworkActivity/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-http-cancel-all-requests" tooltip={{$:/language/Buttons/NetworkActivity/Hint}} aria-label={{$:/language/Buttons/NetworkActivity/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/network-activity}} {{$:/core/images/network-activity}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/NetworkActivity/Caption}}/> <$text text={{$:/language/Buttons/NetworkActivity/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/NewImage/Hint}}
\whitespace trim \whitespace trim
<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}> <$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/new-image-button}} {{$:/core/images/new-image-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/NewImage/Caption}}/> <$text text={{$:/language/Buttons/NewImage/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -4,17 +4,16 @@ caption: {{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/
description: {{$:/language/Buttons/NewJournal/Hint}} description: {{$:/language/Buttons/NewJournal/Hint}}
\whitespace trim \whitespace trim
\define journalButton() \procedure journalButton()
\whitespace trim
<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}> <$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/new-journal-button}} {{$:/core/images/new-journal-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/NewJournal/Caption}}/> <$text text={{$:/language/Buttons/NewJournal/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
\end \end
<<journalButton>> <<journalButton>>

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/NewTiddler/Hint}}
\whitespace trim \whitespace trim
<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>> <$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/new-button}} {{$:/core/images/new-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/NewTiddler/Caption}}/> <$text text={{$:/language/Buttons/NewTiddler/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -6,12 +6,12 @@ description: {{$:/language/Buttons/Palette/Hint}}
\whitespace trim \whitespace trim
<span class="tc-popup-keep"> <span class="tc-popup-keep">
<$button popup=<<qualify "$:/state/popup/palette">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> <$button popup=<<qualify "$:/state/popup/palette">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/palette}} {{$:/core/images/palette}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Palette/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
</span> </span>
<$reveal state=<<qualify "$:/state/popup/palette">> type="popup" position="below" animate="yes"> <$reveal state=<<qualify "$:/state/popup/palette">> type="popup" position="below" animate="yes">

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/Print/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-print" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-print" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/print-button}} {{$:/core/images/print-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Print/Caption}}/> <$text text={{$:/language/Buttons/Print/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -5,12 +5,12 @@ description: {{$:/language/Buttons/Refresh/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-browser-refresh" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-browser-refresh" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/refresh-button}} {{$:/core/images/refresh-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Refresh/Caption}}/> <$text text={{$:/language/Buttons/Refresh/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -9,13 +9,13 @@ description: {{$:/language/Buttons/SaveWiki/Hint}}
<$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> </$wikify>
<span class="tc-dirty-indicator"> <span class="tc-dirty-indicator">
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/save-button-dynamic}} {{$:/core/images/save-button-dynamic}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/SaveWiki/Caption}}/> <$text text={{$:/language/Buttons/SaveWiki/Caption}}/>
</span> </span>
</$list> <%endif%>
</span> </span>
</$button> </$button>

View File

@ -4,19 +4,16 @@ caption: {{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Ca
description: {{$:/language/Buttons/StoryView/Hint}} description: {{$:/language/Buttons/StoryView/Hint}}
\whitespace trim \whitespace trim
\define icon()
$:/core/images/storyview-$(storyview)$
\end
<span class="tc-popup-keep"> <span class="tc-popup-keep">
<$button popup=<<qualify "$:/state/popup/storyview">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> <$button popup=<<qualify "$:/state/popup/storyview">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
<$set name="storyview" value={{$:/view}}> <$set name="storyview" value={{$:/view}}>
<$transclude tiddler=<<icon>>/> <$transclude tiddler=`$:/core/images/storyview-$(storyview)$`/>
</$set> </$set>
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
</span> </span>
<$reveal state=<<qualify "$:/state/popup/storyview">> type="popup" position="below" animate="yes"> <$reveal state=<<qualify "$:/state/popup/storyview">> type="popup" position="below" animate="yes">

View File

@ -4,17 +4,16 @@ caption: {{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}
description: {{$:/language/Buttons/TagManager/Hint}} description: {{$:/language/Buttons/TagManager/Hint}}
\whitespace trim \whitespace trim
\define control-panel-button(class) \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)$`>
<$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]] %>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/tag-button}} {{$:/core/images/tag-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/TagManager/Caption}}/> <$text text={{$:/language/Buttons/TagManager/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
\end \end

View File

@ -6,12 +6,12 @@ description: {{$:/language/Buttons/Theme/Hint}}
\whitespace trim \whitespace trim
<span class="tc-popup-keep"> <span class="tc-popup-keep">
<$button popup=<<qualify "$:/state/popup/theme">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected"> <$button popup=<<qualify "$:/state/popup/theme">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/theme-button}} {{$:/core/images/theme-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Theme/Caption}}/></span> <span class="tc-btn-text"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>
</$list> <%endif%>
</$button> </$button>
</span> </span>
<$reveal state=<<qualify "$:/state/popup/theme">> type="popup" position="below" animate="yes"> <$reveal state=<<qualify "$:/state/popup/theme">> type="popup" position="below" animate="yes">

View File

@ -7,26 +7,26 @@ description: {{$:/language/Buttons/Timestamp/Hint}}
<$reveal type="nomatch" state="$:/config/TimestampDisable" text="yes"> <$reveal type="nomatch" state="$:/config/TimestampDisable" text="yes">
<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>> <$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>
<$action-setfield $tiddler="$:/config/TimestampDisable" $value="yes"/> <$action-setfield $tiddler="$:/config/TimestampDisable" $value="yes"/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/timestamp-on}} {{$:/core/images/timestamp-on}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Timestamp/On/Caption}}/> <$text text={{$:/language/Buttons/Timestamp/On/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
</$reveal> </$reveal>
<$reveal type="match" state="$:/config/TimestampDisable" text="yes"> <$reveal type="match" state="$:/config/TimestampDisable" text="yes">
<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>> <$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>
<$action-setfield $tiddler="$:/config/TimestampDisable" $value="no"/> <$action-setfield $tiddler="$:/config/TimestampDisable" $value="no"/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/timestamp-off}} {{$:/core/images/timestamp-off}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/> <$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>
</$reveal> </$reveal>

View File

@ -6,12 +6,12 @@ description: {{$:/language/Buttons/UnfoldAll/Hint}}
\whitespace trim \whitespace trim
<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>> <$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-unfold-all-tiddlers" $param=<<currentTiddler>> foldedStatePrefix="$:/state/folded/"/> <$action-sendmessage $message="tm-unfold-all-tiddlers" $param=<<currentTiddler>> foldedStatePrefix="$:/state/folded/"/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]" variable="listItem"> <%if [<tv-config-toolbar-icons>match[yes]] %>
{{$:/core/images/unfold-all-button}} {{$:/core/images/unfold-all-button}}
</$list> <%endif%>
<$list filter="[<tv-config-toolbar-text>match[yes]]"> <%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text"> <span class="tc-btn-text">
<$text text={{$:/language/Buttons/UnfoldAll/Caption}}/> <$text text={{$:/language/Buttons/UnfoldAll/Caption}}/>
</span> </span>
</$list> <%endif%>
</$button> </$button>

View File

@ -2,4 +2,4 @@ title: $:/core/ui/SideBar/Recent
tags: $:/tags/SideBar tags: $:/tags/SideBar
caption: {{$:/language/SideBar/Recent/Caption}} caption: {{$:/language/SideBar/Recent/Caption}}
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/> <$transclude $variable="timeline" format={{$:/language/RecentChanges/DateFormat}} limit={{$:/config/RecentLimit}}/>

View File

@ -3,12 +3,12 @@ tags: $:/tags/SideBarSegment
\whitespace trim \whitespace trim
\define count-popup-button() \procedure count-popup-button()
\whitespace trim \whitespace trim
<$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible"> <$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
{{$:/core/images/down-arrow}} {{$:/core/images/down-arrow}}
<$list filter="[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem"> <$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]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]"> <$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>,[]] }}}> <$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>]"/>"""> <$set name="resultCount" value="""<$count filter="[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]"/>""">
{{$:/language/Search/Matches}} {{$:/language/Search/Matches}}
@ -19,9 +19,9 @@ tags: $:/tags/SideBarSegment
</$button> </$button>
\end \end
\define search-results-list() \procedure search-results-list()
\whitespace trim \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"> <$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>>> <$tiddler tiddler=<<configTiddler>>>
@ -34,30 +34,32 @@ tags: $:/tags/SideBarSegment
</$vars> </$vars>
\end \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"> <div class="tc-sidebar-lists tc-sidebar-search">
<$vars editTiddler="$:/temp/search" searchTiddler="$:/temp/search/input" searchListState=<<qualify "$:/state/search-list/selected-item">>> <$vars editTiddler="$:/temp/search" searchTiddler="$:/temp/search/input" searchListState=<<qualify "$:/state/search-list/selected-item">>>
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$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>>> <$keyboard key="((advanced-search-sidebar))" actions=<<advanced-search-actions>>>
<form class="tc-form-inline"> <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" selectionStateTitle=<<searchListState>> refreshTitle="$:/temp/search/refresh" type="search"
tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> 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>> 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" 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> </form>
</$keyboard> </$keyboard>
</$keyboard> </$keyboard>

View File

@ -46,6 +46,21 @@ color: #bbb
</$reveal> </$reveal>
\end \end
\procedure color-picker-actions()
\whitespace trim
<$action-setfield $tiddler=<<currentTiddler>> color=<<colour-picker-value>>/>
\end
\procedure color-picker-button()
\whitespace trim
<div class="tc-drop-down-wrapper">
<$button class="tc-btn-invisible" popup={{{ [[$:/state/tag-manager/color/]addsuffix<currentTiddler>] }}}>{{$:/core/images/palette}}</$button>
<$reveal type="popup" tag="div" class="tc-drop-down tc-popup-keep" state={{{ [[$:/state/tag-manager/color/]addsuffix<currentTiddler>] }}}>
<$transclude $variable="colour-picker" actions=<<color-picker-actions>>/>
</$reveal>
</div>
\end
\whitespace trim \whitespace trim
<table class="tc-tag-manager-table"> <table class="tc-tag-manager-table">
<tbody> <tbody>
@ -58,7 +73,7 @@ color: #bbb
</tr> </tr>
<$list filter="[tags[]!is[system]sort[title]]"> <$list filter="[tags[]!is[system]sort[title]]">
<tr> <tr>
<td><$edit-text field="color" tag="input" type="color"/></td> <td><$transclude $variable="color-picker-button"/></td>
<td>{{||$:/core/ui/TagTemplate}}</td> <td>{{||$:/core/ui/TagTemplate}}</td>
<td><$count filter="[all[current]tagging[]]"/></td> <td><$count filter="[all[current]tagging[]]"/></td>
<td> <td>

View File

@ -13,6 +13,7 @@ title: $:/core/ui/TestCaseTemplate
testActions="Actions" testActions="Actions"
testHideIfPass=<<hideIfPass>> testHideIfPass=<<hideIfPass>>
> >
<$data $filter={{!!import}}/>
<$data $compound-filter={{!!import-compound}}/> <$data $compound-filter={{!!import-compound}}/>
<$data $compound-tiddler=<<currentTiddler>>/> <$data $compound-tiddler=<<currentTiddler>>/>
<%if [{!!description}!is[blank]] %><$data title="Description" text={{!!description}}/><%endif%> <%if [{!!description}!is[blank]] %><$data title="Description" text={{!!description}}/><%endif%>

View File

@ -3,7 +3,7 @@ tags: $:/tags/ViewTemplate
\import [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View/Body]!is[draft]] \import [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View/Body]!is[draft]]
<$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes"> <$reveal tag="div" class="tc-tiddler-body tc-clearfix" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes">
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateBodyFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]] }}} /> <$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateBodyFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]] }}} />

View File

@ -1,4 +1,8 @@
title: $:/core/ui/ViewTemplate/body/code title: $:/core/ui/ViewTemplate/body/code
<%if [<currentTiddler>is[missing]] :and[!is[shadow]] %>
<$transclude tiddler="$:/language/MissingTiddler/Hint"/>
<%else%>
<$transclude $variable="copy-to-clipboard-above-right" src={{{ [<currentTiddler>get[text]] }}} /> <$transclude $variable="copy-to-clipboard-above-right" src={{{ [<currentTiddler>get[text]] }}} />
<$codeblock code={{{ [<currentTiddler>get[text]] }}} language={{{ [<currentTiddler>get[type]else[text/vnd.tiddlywiki]] }}}/> <$codeblock code={{{ [<currentTiddler>get[text]] }}} language={{{ [<currentTiddler>get[type]else[text/vnd.tiddlywiki]] }}}/>
<%endif%>

View File

@ -0,0 +1,10 @@
title: $:/core/ui/ViewTemplate/lazy-loading
tags: $:/tags/ViewTemplate
\whitespace trim
<%if [<currentTiddler>has:field[_is_skinny]] %>
<!-- Render the text to trigger lazy-loading -->
{{||$:/core/ui/ViewTemplate/body/default}}
<!-- Indicator of loading state -->
<div class="tc-tiddler-lazy-loading" />
<%endif%>

View File

@ -2,9 +2,9 @@ title: $:/core/ui/ViewTemplate/subtitle/default
\whitespace trim \whitespace trim
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes"> <$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle"> <div class="tc-subtitle tc-clearfix">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate/Subtitle]!has[draft.of]]" variable="subtitleTiddler"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate/Subtitle]!has[draft.of]]" variable="subtitleTiddler">
<$transclude tiddler=<<subtitleTiddler>> mode="inline"/><$list-join>&nbsp;</$list-join> <$transclude tiddler=<<subtitleTiddler>> mode="inline"/>
</$list> </$list>
</div> </div>
</$reveal> </$reveal>

View File

@ -1,4 +1,4 @@
title: $:/core/ui/ViewTemplate/subtitle/modifier title: $:/core/ui/ViewTemplate/subtitle/modifier
tags: $:/tags/ViewTemplate/Subtitle tags: $:/tags/ViewTemplate/Subtitle
<$link to={{!!modifier}}/> <%if [{!!modifier}!is[blank]] %><$link to={{!!modifier}}/><%endif%>

View File

@ -4,7 +4,7 @@ tags: $:/tags/ViewTemplate
\whitespace trim \whitespace trim
\define title-styles() fill:$(foregroundColor)$; \define title-styles() fill:$(foregroundColor)$;
<div class="tc-tiddler-title"> <div class="tc-tiddler-title tc-clearfix">
<div class="tc-titlebar"> <div class="tc-titlebar">
<span class="tc-tiddler-controls"> <span class="tc-tiddler-controls">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] :filter[lookup[$:/config/ViewToolbarButtons/Visibility/]!match[hide]]" <$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] :filter[lookup[$:/config/ViewToolbarButtons/Visibility/]!match[hide]]"

View File

@ -4,13 +4,18 @@ caption: {{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}
description: {{$:/language/Buttons/Clone/Hint}} description: {{$:/language/Buttons/Clone/Hint}}
\whitespace trim \whitespace trim
<$button message="tm-new-tiddler" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>> <$button message="tm-new-tiddler"
<$list filter="[<tv-config-toolbar-icons>match[yes]]"> param=<<currentTiddler>>
{{$:/core/images/clone-button}} tooltip={{$:/language/Buttons/Clone/Hint}}
</$list> aria-label={{$:/language/Buttons/Clone/Hint}}
<$list filter="[<tv-config-toolbar-text>match[yes]]"> class=<<tv-config-toolbar-class>>
<span class="tc-btn-text"> >
<$text text={{$:/language/Buttons/Clone/Caption}}/> <%if [<tv-config-toolbar-icons>match[yes]] %>
</span> {{$:/core/images/clone-button}}
</$list> <%endif%>
<%if [<tv-config-toolbar-text>match[yes]] %>
<span class="tc-btn-text">
<$text text={{$:/language/Buttons/Clone/Caption}}/>
</span>
<%endif%>
</$button> </$button>

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