mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-24 03:44:41 +00:00
Compare commits
234 Commits
v5.1.18
...
wikitext-v
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b799d924f0 | ||
|
|
1c436cbbf3 | ||
|
|
94607aa9cd | ||
|
|
62477c9fbb | ||
|
|
b1edcdb757 | ||
|
|
d38b42f7c7 | ||
|
|
fffd0ee9e1 | ||
|
|
9f0d726f7d | ||
|
|
7709192cc8 | ||
|
|
02ae8969b2 | ||
|
|
a01dc6cb3d | ||
|
|
f99fb4f9f5 | ||
|
|
e52a616891 | ||
|
|
a89991cc46 | ||
|
|
f4fe254038 | ||
|
|
9f630b5829 | ||
|
|
c904aeb05f | ||
|
|
efd7aa3a53 | ||
|
|
a4b24670f6 | ||
|
|
2e0b2c8045 | ||
|
|
d068cb3625 | ||
|
|
0d8c749f37 | ||
|
|
0303b7871b | ||
|
|
44d1a00bb0 | ||
|
|
784db30614 | ||
|
|
26c6d6035e | ||
|
|
b82cf3d070 | ||
|
|
f07ffb2b41 | ||
|
|
c9b16d88f3 | ||
|
|
256321cd42 | ||
|
|
71aed78e2e | ||
|
|
0ab29e2c09 | ||
|
|
648c7ccd1f | ||
|
|
2dc70682cd | ||
|
|
441011885c | ||
|
|
449fd02cda | ||
|
|
a7dc8b5583 | ||
|
|
7478ba9165 | ||
|
|
12630d4a91 | ||
|
|
07635d7b3e | ||
|
|
e61c71961b | ||
|
|
f047e7cbf5 | ||
|
|
2c2d03f7a7 | ||
|
|
c036c22826 | ||
|
|
6de13e2f60 | ||
|
|
0c2689dd78 | ||
|
|
a9e595c3f6 | ||
|
|
348a0bc8bc | ||
|
|
477c41f843 | ||
|
|
0b1ce30a04 | ||
|
|
e8b50df4a6 | ||
|
|
2104017249 | ||
|
|
148c1a0355 | ||
|
|
dd4305d520 | ||
|
|
638eb53429 | ||
|
|
b6e2985ac6 | ||
|
|
87eab62b7e | ||
|
|
fb0713ae78 | ||
|
|
16bb474fef | ||
|
|
77e6f5c0e3 | ||
|
|
41e338dc41 | ||
|
|
a6875df7ef | ||
|
|
655fc31cee | ||
|
|
18c00c2ef0 | ||
|
|
b862348b06 | ||
|
|
36e76429b1 | ||
|
|
181897514f | ||
|
|
810033bd71 | ||
|
|
6aab4d5524 | ||
|
|
72f2a94251 | ||
|
|
6dedcd958d | ||
|
|
f97d18bb6e | ||
|
|
9d7d3fefa0 | ||
|
|
6ff7a7d261 | ||
|
|
2710fae71d | ||
|
|
0e6855eba8 | ||
|
|
8b04cfd4d5 | ||
|
|
2c37c25c28 | ||
|
|
adb07ccba0 | ||
|
|
b64216cfa7 | ||
|
|
9601e570af | ||
|
|
5c5628e10b | ||
|
|
cdeabbaf56 | ||
|
|
5577f7a4fe | ||
|
|
51b4f63c5c | ||
|
|
7df58a6813 | ||
|
|
158f96a207 | ||
|
|
dc29acd656 | ||
|
|
af40485e37 | ||
|
|
9b2d52716a | ||
|
|
64b665e706 | ||
|
|
f709641967 | ||
|
|
94f143bf64 | ||
|
|
22fe4451c8 | ||
|
|
1c982fba2d | ||
|
|
0ea00b59b0 | ||
|
|
5e9fc661a9 | ||
|
|
e5f3301c1c | ||
|
|
b08a7e3f04 | ||
|
|
44c66b98a9 | ||
|
|
ce256102a7 | ||
|
|
6f5f9ca2fb | ||
|
|
e31c5563ff | ||
|
|
70f5dff81e | ||
|
|
689e172e79 | ||
|
|
5ffcd7e5da | ||
|
|
5a37a84a54 | ||
|
|
4228c3f9cc | ||
|
|
a4eb139f99 | ||
|
|
7bc1458749 | ||
|
|
92b8368115 | ||
|
|
c4bb2110e3 | ||
|
|
f7d938e4bc | ||
|
|
8defe41458 | ||
|
|
6753a1485a | ||
|
|
7f97e3080c | ||
|
|
b6d901f888 | ||
|
|
90b7961629 | ||
|
|
c5aa855ce6 | ||
|
|
036ea400c5 | ||
|
|
049244e8a8 | ||
|
|
95aca11719 | ||
|
|
02fbae4200 | ||
|
|
fc3227831f | ||
|
|
72ec4d05e4 | ||
|
|
07aeaaa1a4 | ||
|
|
790d606885 | ||
|
|
c6f1fb7627 | ||
|
|
44816ea0da | ||
|
|
ca7b62a5f6 | ||
|
|
353821f442 | ||
|
|
4c1e3aa8d6 | ||
|
|
952826e0fa | ||
|
|
e6aaafbc8d | ||
|
|
79eb6a5ec1 | ||
|
|
7c0528340d | ||
|
|
273768da1d | ||
|
|
52a30be7c6 | ||
|
|
479726c46e | ||
|
|
3afb251b3a | ||
|
|
1f829dd5a8 | ||
|
|
95dbdff08a | ||
|
|
bfd09133de | ||
|
|
dc74fc4306 | ||
|
|
557053ab35 | ||
|
|
317d75171c | ||
|
|
0e568fe69a | ||
|
|
e2fe40a282 | ||
|
|
193fb32423 | ||
|
|
e14e69bedc | ||
|
|
af9f90e8cd | ||
|
|
b899563971 | ||
|
|
d0afbe50a1 | ||
|
|
0aac98f361 | ||
|
|
fa638b8b5b | ||
|
|
4d5a79acb8 | ||
|
|
fcfdb0632b | ||
|
|
d14d7f0168 | ||
|
|
83bea2a270 | ||
|
|
2b8efdc3ea | ||
|
|
27d0b2b491 | ||
|
|
824930682a | ||
|
|
d8104e2c41 | ||
|
|
06f1f1a532 | ||
|
|
6121c0b5a7 | ||
|
|
2c5b1c4a8c | ||
|
|
3d687a7935 | ||
|
|
5d20a54713 | ||
|
|
14623d33d2 | ||
|
|
37b335a136 | ||
|
|
d5a25c9a96 | ||
|
|
6c48c24332 | ||
|
|
86e27d64f2 | ||
|
|
decbe33f1f | ||
|
|
8205893af9 | ||
|
|
75158c0366 | ||
|
|
a2d4239db0 | ||
|
|
1d9c932e16 | ||
|
|
58f7e7bd85 | ||
|
|
8f54231d62 | ||
|
|
97f7f8f111 | ||
|
|
4e0b03b19f | ||
|
|
097b0e2d4a | ||
|
|
87f077314b | ||
|
|
7a07c84eac | ||
|
|
512d5662cc | ||
|
|
32974eebdb | ||
|
|
eca5df9f01 | ||
|
|
c42eba3308 | ||
|
|
77d286213f | ||
|
|
da864e23d6 | ||
|
|
d58bc33df4 | ||
|
|
c97c3cea74 | ||
|
|
e9f2a24f30 | ||
|
|
0b7f72ce5c | ||
|
|
52d328ee1b | ||
|
|
ddf22ec2a4 | ||
|
|
6b4294923f | ||
|
|
2dd76007d3 | ||
|
|
31470f676c | ||
|
|
d6bffad8ab | ||
|
|
6195069c5e | ||
|
|
8e3f9d6aba | ||
|
|
1793dc5e34 | ||
|
|
21f4d05ca0 | ||
|
|
653604ae86 | ||
|
|
1aea7b075d | ||
|
|
1dce674e51 | ||
|
|
5b6a468757 | ||
|
|
4f71c9072f | ||
|
|
04ba91ce2f | ||
|
|
9acff8f21c | ||
|
|
ed714ab731 | ||
|
|
f3e17c365a | ||
|
|
98a395095b | ||
|
|
5f1e8acbc0 | ||
|
|
3827feee3f | ||
|
|
172751605e | ||
|
|
d8b291bc04 | ||
|
|
d5618ca60a | ||
|
|
500fd8c062 | ||
|
|
d5ac2ee49e | ||
|
|
a4937224b7 | ||
|
|
42cf077639 | ||
|
|
f71a3b72d7 | ||
|
|
eea036f803 | ||
|
|
2cfdf59b77 | ||
|
|
a8b8fb3b6f | ||
|
|
aa1c6a9872 | ||
|
|
a7cdb94957 | ||
|
|
f6b1e27281 | ||
|
|
de808ac66d | ||
|
|
18ed2faf82 | ||
|
|
38b088eabf |
34
.travis.yml
Normal file
34
.travis.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
language: node_js
|
||||
- "node"
|
||||
|
||||
stages:
|
||||
- name: test
|
||||
- name: build-prerelease
|
||||
if: branch = "master"
|
||||
- name: build-tiddlywiki-com
|
||||
if: branch = "tiddlywiki-com"
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- stage: test
|
||||
script: ./bin/test.sh
|
||||
- stage: build-prerelease
|
||||
script:
|
||||
- ./bin/travis-pre-build.sh
|
||||
- export TW5_BUILD_TIDDLYWIKI='./tiddlywiki.js'
|
||||
- export TW5_BUILD_VERSION=$(./bin/get-plugin-library-version-number)
|
||||
- export TW5_BUILD_DETAILS="Prerelease built from branch '$TRAVIS_BRANCH' at commit $(git rev-parse HEAD) of $(git remote get-url origin) at $(date +'%F %T %Z')"
|
||||
- export TW5_BUILD_MAIN_EDITION='./editions/prerelease'
|
||||
- export TW5_BUILD_OUTPUT='./output/prerelease'
|
||||
- ./bin/build-site.sh
|
||||
- ./bin/travis-push.sh
|
||||
- stage: build-tiddlywiki-com
|
||||
script:
|
||||
- ./bin/travis-pre-build.sh
|
||||
- export TW5_BUILD_TIDDLYWIKI='./node_modules/tiddlywiki/tiddlywiki.js'
|
||||
- export TW5_BUILD_VERSION=$(./bin/get-plugin-library-version-number)
|
||||
- export TW5_BUILD_DETAILS="Built from branch '$TRAVIS_BRANCH' at commit $(git rev-parse HEAD) of $(git remote get-url origin) at $(date +'%F %T %Z')"
|
||||
- export TW5_BUILD_MAIN_EDITION='./editions/tw5.com'
|
||||
- export TW5_BUILD_OUTPUT='./output'
|
||||
- ./bin/build-site.sh
|
||||
- ./bin/travis-push.sh
|
||||
15
bin/2bld.cmd
15
bin/2bld.cmd
@@ -1,15 +0,0 @@
|
||||
@echo off
|
||||
|
||||
rem build TiddlyWiki 2.x
|
||||
|
||||
rem cook the TiddlyWiki 2.x.x index file
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
editions\tw2 ^
|
||||
--verbose ^
|
||||
--output tmp\tw2 ^
|
||||
--load editions\tw2\source\tiddlywiki.com\index.html.recipe ^
|
||||
--rendertiddler $:/core/templates/tiddlywiki2.template.html index.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
fc tmp\tw2\index.html editions\tw2\target\prebuilt.html
|
||||
15
bin/2bld.sh
15
bin/2bld.sh
@@ -1,15 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# build TiddlyWiki 2.x
|
||||
|
||||
# cook the TiddlyWiki 2.x.x index file
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
editions/tw2 \
|
||||
--verbose \
|
||||
--output tmp/tw2 \
|
||||
--load editions/tw2/source/tiddlywiki.com/index.html.recipe \
|
||||
--rendertiddler $:/core/templates/tiddlywiki2.template.html index.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
diff -q tmp/tw2/index.html editions/tw2/target/prebuilt.html
|
||||
443
bin/build-site.sh
Executable file
443
bin/build-site.sh
Executable file
@@ -0,0 +1,443 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Build all tiddlywiki.com assets.
|
||||
|
||||
# Default to the current version number for building the plugin library
|
||||
|
||||
if [ -z "$TW5_BUILD_VERSION" ]; then
|
||||
TW5_BUILD_VERSION=v5.1.19
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||
|
||||
# Default to using tw5.com as the main edition for /index.html
|
||||
|
||||
if [ -z "$TW5_BUILD_MAIN_EDITION" ]; then
|
||||
TW5_BUILD_MAIN_EDITION=./editions/tw5.com
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_MAIN_EDITION as [$TW5_BUILD_MAIN_EDITION]"
|
||||
|
||||
# Default to the version of TiddlyWiki installed in this repo
|
||||
|
||||
if [ -z "$TW5_BUILD_TIDDLYWIKI" ]; then
|
||||
TW5_BUILD_TIDDLYWIKI=./tiddlywiki.js
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_TIDDLYWIKI as [$TW5_BUILD_TIDDLYWIKI]"
|
||||
|
||||
# Set up the build details
|
||||
|
||||
if [ -z "$TW5_BUILD_DETAILS" ]; then
|
||||
TW5_BUILD_DETAILS="$(git symbolic-ref --short HEAD)-$(git rev-parse HEAD) from $(git remote get-url origin)"
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_DETAILS as [$TW5_BUILD_DETAILS]"
|
||||
|
||||
# Set up the build output directory
|
||||
|
||||
if [ -z "$TW5_BUILD_OUTPUT" ]; then
|
||||
TW5_BUILD_OUTPUT=./output
|
||||
fi
|
||||
|
||||
mkdir -p $TW5_BUILD_OUTPUT
|
||||
|
||||
if [ ! -d "$TW5_BUILD_OUTPUT" ]; then
|
||||
echo 'A valid TW5_BUILD_OUTPUT environment variable must be set'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_OUTPUT as [$TW5_BUILD_OUTPUT]"
|
||||
|
||||
echo "Build details: $TW5_BUILD_DETAILS"
|
||||
|
||||
# Make the CNAME file that GitHub Pages requires
|
||||
|
||||
echo "tiddlywiki.com" > $TW5_BUILD_OUTPUT/CNAME
|
||||
|
||||
# Delete any existing static content
|
||||
|
||||
mkdir -p $TW5_BUILD_OUTPUT/static
|
||||
mkdir -p $TW5_BUILD_OUTPUT/dev
|
||||
mkdir -p $TW5_BUILD_OUTPUT/dev/static
|
||||
rm $TW5_BUILD_OUTPUT/static/*
|
||||
rm $TW5_BUILD_OUTPUT/dev/static/*
|
||||
|
||||
# Redirects
|
||||
|
||||
echo "<a href='./plugins/tiddlywiki/tw2parser/index.html'>Moved to http://tiddlywiki.com/plugins/tiddlywiki/tw2parser/index.html</a>" > $TW5_BUILD_OUTPUT/classicparserdemo.html
|
||||
echo "<a href='./plugins/tiddlywiki/codemirror/index.html'>Moved to http://tiddlywiki.com/plugins/tiddlywiki/codemirror/index.html</a>" > $TW5_BUILD_OUTPUT/codemirrordemo.html
|
||||
echo "<a href='./plugins/tiddlywiki/d3/index.html'>Moved to http://tiddlywiki.com/plugins/tiddlywiki/d3/index.html</a>" > $TW5_BUILD_OUTPUT/d3demo.html
|
||||
echo "<a href='./plugins/tiddlywiki/highlight/index.html'>Moved to http://tiddlywiki.com/plugins/tiddlywiki/highlight/index.html</a>" > $TW5_BUILD_OUTPUT/highlightdemo.html
|
||||
echo "<a href='./plugins/tiddlywiki/markdown/index.html'>Moved to http://tiddlywiki.com/plugins/tiddlywiki/markdown/index.html</a>" > $TW5_BUILD_OUTPUT/markdowndemo.html
|
||||
echo "<a href='./plugins/tiddlywiki/tahoelafs/index.html'>Moved to http://tiddlywiki.com/plugins/tiddlywiki/tahoelafs/index.html</a>" > $TW5_BUILD_OUTPUT/tahoelafs.html
|
||||
|
||||
# Put the build details into a .tid file so that it can be included in each build (deleted at the end of this script)
|
||||
|
||||
echo -e -n "title: $:/build\n\n$TW5_BUILD_DETAILS\n" > $TW5_BUILD_OUTPUT/build.tid
|
||||
|
||||
######################################################
|
||||
#
|
||||
# Core distribution
|
||||
#
|
||||
######################################################
|
||||
|
||||
# /index.html Main site
|
||||
# /favicon.ico Favicon for main site
|
||||
# /static.html Static rendering of default tiddlers
|
||||
# /alltiddlers.html Static rendering of all tiddlers
|
||||
# /static/* Static single tiddlers
|
||||
# /static/static.css Static stylesheet
|
||||
# /static/favicon.ico Favicon for static pages
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
$TW5_BUILD_MAIN_EDITION \
|
||||
--verbose \
|
||||
--version \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build favicon static index \
|
||||
|| exit 1
|
||||
|
||||
# /empty.html Empty
|
||||
# /empty.hta For Internet Explorer
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/empty \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build empty \
|
||||
|| exit 1
|
||||
|
||||
|
||||
# /test.html Test edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/test \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all test.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /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
|
||||
|
||||
# /upgrade.html Custom edition for performing upgrades
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/upgrade \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build upgrade \
|
||||
|| exit 1
|
||||
|
||||
# /encrypted.html Copy of the main file encrypted with the password "password"
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
$TW5_BUILD_MAIN_EDITION \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build encrypted \
|
||||
|| exit 1
|
||||
|
||||
|
||||
######################################################
|
||||
#
|
||||
# Editions
|
||||
#
|
||||
######################################################
|
||||
|
||||
# /editions/xlsx-utils/index.html xlsx-utils edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/xlsx-utils \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
# /editions/resumebuilder/index.html Resume builder edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/resumebuilder \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/resumebuilder/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
# /editions/text-slicer/index.html Text slicer edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/text-slicer \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/text-slicer/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
# /editions/translators/index.html Translators edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/translators \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/translators/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
# /editions/introduction/index.html Introduction edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/introduction \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/introduction/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
# /editions/full/index.html Full edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/full \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/full/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
# /editions/tw5.com-docs/index.html tiddlywiki.com docs edition
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/tw5.com-docs \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \
|
||||
--build index \
|
||||
|| exit 1
|
||||
|
||||
######################################################
|
||||
#
|
||||
# Plugin demos
|
||||
#
|
||||
######################################################
|
||||
|
||||
# /plugins/tiddlywiki/innerwiki/index.html Demo wiki with Innerwiki plugin
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/innerwikidemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/dynaview/index.html Demo wiki with DynaView plugin
|
||||
# /plugins/tiddlywiki/dynaview/empty.html Empty wiki with DynaView plugin
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/dynaviewdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/dynaview/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/katex/index.html Demo wiki with KaTeX plugin
|
||||
# /plugins/tiddlywiki/katex/empty.html Empty wiki with KaTeX plugin
|
||||
|
||||
# TODO: Build the static file with the release of 5.1.3
|
||||
# --rendertiddler $:/core/templates/static.template.html plugins/tiddlywiki/katex/static.html text/plain \
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/katexdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/katex/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/tahoelafs/index.html Demo wiki with Tahoe-LAFS plugin
|
||||
# /plugins/tiddlywiki/tahoelafs/empty.html Empty wiki with Tahoe-LAFS plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/tahoelafs \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/tahoelafs/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/tahoelafs/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/d3/index.html Demo wiki with D3 plugin
|
||||
# /plugins/tiddlywiki/d3/empty.html Empty wiki with D3 plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/d3demo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/d3/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/d3/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/codemirror/index.html Demo wiki with codemirror plugin
|
||||
# /plugins/tiddlywiki/codemirror/empty.html Empty wiki with codemirror plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/codemirrordemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/codemirror/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/markdown/index.html Demo wiki with Markdown plugin
|
||||
# /plugins/tiddlywiki/markdown/empty.html Empty wiki with Markdown plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/markdowndemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/markdown/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/tw2parser/index.html Demo wiki with tw2parser plugin
|
||||
# /plugins/tiddlywiki/tw2parser/empty.html Empty wiki with tw2parser plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/classicparserdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/tw2parser/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# /plugins/tiddlywiki/highlight/index.html Demo wiki with highlight plugin
|
||||
# /plugins/tiddlywiki/highlight/empty.html Empty wiki with highlight plugin
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/highlightdemo \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \
|
||||
--rendertiddler $:/core/save/empty plugins/tiddlywiki/highlight/empty.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
######################################################
|
||||
#
|
||||
# Language editions
|
||||
#
|
||||
######################################################
|
||||
|
||||
# Delete any existing static content
|
||||
|
||||
rm $TW5_BUILD_OUTPUT/languages/de-AT/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/de-DE/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/es-ES/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/fr-FR/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/ja-JP/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/ko-KR/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/zh-Hans/static/*
|
||||
rm $TW5_BUILD_OUTPUT/languages/zh-Hant/static/*
|
||||
|
||||
# /languages/de-AT/index.html Demo wiki with de-AT language
|
||||
# /languages/de-AT/empty.html Empty wiki with de-AT language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/de-AT \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/de-AT \
|
||||
--build favicon empty static index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/de-DE/index.html Demo wiki with de-DE language
|
||||
# /languages/de-DE/empty.html Empty wiki with de-DE language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/de-DE \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/de-DE \
|
||||
--build favicon empty static index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/es-ES/index.html Demo wiki with es-ES language
|
||||
# /languages/es-ES/empty.html Empty wiki with es-ES language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/es-ES \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/es-ES \
|
||||
--build favicon empty static index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/fr-FR/index.html Demo wiki with fr-FR language
|
||||
# /languages/fr-FR/empty.html Empty wiki with fr-FR language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/fr-FR \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/fr-FR \
|
||||
--build favicon empty static index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/ja-JP/index.html Demo wiki with ja-JP language
|
||||
# /languages/ja-JP/empty.html Empty wiki with ja-JP language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/ja-JP \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/ja-JP \
|
||||
--build empty index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/ko-KR/index.html Demo wiki with ko-KR language
|
||||
# /languages/ko-KR/empty.html Empty wiki with ko-KR language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/ko-KR \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/ko-KR \
|
||||
--build favicon empty static index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/zh-Hans/index.html Demo wiki with zh-Hans language
|
||||
# /languages/zh-Hans/empty.html Empty wiki with zh-Hans language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/zh-Hans \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/zh-Hans \
|
||||
--build empty index \
|
||||
|| exit 1
|
||||
|
||||
# /languages/zh-Hant/index.html Demo wiki with zh-Hant language
|
||||
# /languages/zh-Hant/empty.html Empty wiki with zh-Hant language
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/zh-Hant \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/languages/zh-Hant \
|
||||
--build empty index \
|
||||
|| exit 1
|
||||
|
||||
######################################################
|
||||
#
|
||||
# Plugin library
|
||||
#
|
||||
######################################################
|
||||
|
||||
node $TW5_BUILD_TIDDLYWIKI \
|
||||
./editions/pluginlibrary \
|
||||
--verbose \
|
||||
--load $TW5_BUILD_OUTPUT/build.tid \
|
||||
--output $TW5_BUILD_OUTPUT/library/$TW5_BUILD_VERSION \
|
||||
--build \
|
||||
|| exit 1
|
||||
|
||||
# Delete the temporary build tiddler
|
||||
|
||||
rm $TW5_BUILD_OUTPUT/build.tid || exit 1
|
||||
19
bin/get-plugin-library-version-number
Executable file
19
bin/get-plugin-library-version-number
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
// Extract raw version number from package.json (without the optional "-prerelease" suffix)
|
||||
|
||||
if(!process.env["TW5_BUILD_TIDDLYWIKI"]) {
|
||||
throw "TW5_BUILD_TIDDLYWIKI environment variable not set";
|
||||
}
|
||||
|
||||
var fs = require("fs"),
|
||||
path = require("path");
|
||||
|
||||
var filename = path.resolve(path.dirname(process.env["TW5_BUILD_TIDDLYWIKI"]),"./package.json"),
|
||||
json = JSON.parse(fs.readFileSync(filename,"utf8"));
|
||||
|
||||
if(!json.version) {
|
||||
throw "Missing version number in package.json";
|
||||
}
|
||||
|
||||
process.stdout.write("v" + json.version.split("-")[0]);
|
||||
@@ -7,6 +7,7 @@
|
||||
node ./tiddlywiki.js \
|
||||
./editions/test \
|
||||
--verbose \
|
||||
--version \
|
||||
--rendertiddler $:/core/save/all test.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
|
||||
10
bin/travis-pre-build.sh
Executable file
10
bin/travis-pre-build.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Install latest current release from npm
|
||||
# (we need to force because otherwise npm will refuse to install a module of the same name)
|
||||
|
||||
npm --force install tiddlywiki || exit 1
|
||||
|
||||
# Pull existing GitHub pages content
|
||||
|
||||
git clone --depth=1 --branch=master "https://github.com/Jermolene/jermolene.github.io.git" output
|
||||
20
bin/travis-push.sh
Executable file
20
bin/travis-push.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Push output back to GitHub
|
||||
|
||||
|
||||
cd output || exit 1
|
||||
|
||||
git config --global user.email "travis@travis-ci.org" || exit 1
|
||||
|
||||
git config --global user.name "Travis CI" || exit 1
|
||||
|
||||
git add -A . || exit 1
|
||||
|
||||
git commit --message "Travis build: $TRAVIS_BUILD_NUMBER of $TRAVIS_BRANCH ($(date +'%F %T %Z'))" || exit 1
|
||||
|
||||
git remote add deploy "https://$GH_TOKEN@github.com/Jermolene/jermolene.github.io.git" &>/dev/null || exit 1
|
||||
|
||||
git push deploy master &>/dev/null || exit 1
|
||||
|
||||
cd .. || exit 1
|
||||
121
boot/boot.js
121
boot/boot.js
@@ -51,6 +51,63 @@ $tw.utils.isArray = function(value) {
|
||||
return Object.prototype.toString.call(value) == "[object Array]";
|
||||
};
|
||||
|
||||
/*
|
||||
Check if an array is equal by value and by reference.
|
||||
*/
|
||||
$tw.utils.isArrayEqual = function(array1,array2) {
|
||||
if(array1 === array2) {
|
||||
return true;
|
||||
}
|
||||
array1 = array1 || [];
|
||||
array2 = array2 || [];
|
||||
if(array1.length !== array2.length) {
|
||||
return false;
|
||||
}
|
||||
return array1.every(function(value,index) {
|
||||
return value === array2[index];
|
||||
});
|
||||
};
|
||||
|
||||
/*
|
||||
Push entries onto an array, removing them first if they already exist in the array
|
||||
array: array to modify (assumed to be free of duplicates)
|
||||
value: a single value to push or an array of values to push
|
||||
*/
|
||||
$tw.utils.pushTop = function(array,value) {
|
||||
var t,p;
|
||||
if($tw.utils.isArray(value)) {
|
||||
// Remove any array entries that are duplicated in the new values
|
||||
if(value.length !== 0) {
|
||||
if(array.length !== 0) {
|
||||
if(value.length < array.length) {
|
||||
for(t=0; t<value.length; t++) {
|
||||
p = array.indexOf(value[t]);
|
||||
if(p !== -1) {
|
||||
array.splice(p,1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for(t=array.length-1; t>=0; t--) {
|
||||
p = value.indexOf(array[t]);
|
||||
if(p !== -1) {
|
||||
array.splice(t,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Push the values on top of the main array
|
||||
array.push.apply(array,value);
|
||||
}
|
||||
} else {
|
||||
p = array.indexOf(value);
|
||||
if(p !== -1) {
|
||||
array.splice(p,1);
|
||||
}
|
||||
array.push(value);
|
||||
}
|
||||
return array;
|
||||
};
|
||||
|
||||
/*
|
||||
Determine if a value is a date
|
||||
*/
|
||||
@@ -89,7 +146,9 @@ Helper for making DOM elements
|
||||
tag: tag name
|
||||
options: see below
|
||||
Options include:
|
||||
namespace: defaults to http://www.w3.org/1999/xhtml
|
||||
attributes: hashmap of attribute values
|
||||
style: hashmap of styles
|
||||
text: text to add as a child node
|
||||
children: array of further child nodes
|
||||
innerHTML: optional HTML for element
|
||||
@@ -99,7 +158,7 @@ eventListeners: array of event listeners (this option won't work until $tw.utils
|
||||
*/
|
||||
$tw.utils.domMaker = function(tag,options) {
|
||||
var doc = options.document || document;
|
||||
var element = doc.createElement(tag);
|
||||
var element = doc.createElementNS(options.namespace || "http://www.w3.org/1999/xhtml",tag);
|
||||
if(options["class"]) {
|
||||
element.className = options["class"];
|
||||
}
|
||||
@@ -115,6 +174,9 @@ $tw.utils.domMaker = function(tag,options) {
|
||||
$tw.utils.each(options.attributes,function(attribute,name) {
|
||||
element.setAttribute(name,attribute);
|
||||
});
|
||||
$tw.utils.each(options.style,function(value,name) {
|
||||
element.style[name] = value;
|
||||
});
|
||||
if(options.eventListeners) {
|
||||
$tw.utils.addEventListeners(element,options.eventListeners);
|
||||
}
|
||||
@@ -862,6 +924,61 @@ $tw.Tiddler.prototype.hasField = function(field) {
|
||||
return $tw.utils.hop(this.fields,field);
|
||||
};
|
||||
|
||||
/*
|
||||
Compare two tiddlers for equality
|
||||
tiddler: the tiddler to compare
|
||||
excludeFields: array of field names to exclude from the comparison
|
||||
*/
|
||||
$tw.Tiddler.prototype.isEqual = function(tiddler,excludeFields) {
|
||||
if(!(tiddler instanceof $tw.Tiddler)) {
|
||||
return false;
|
||||
}
|
||||
excludeFields = excludeFields || [];
|
||||
var self = this,
|
||||
differences = []; // Fields that have differences
|
||||
// Add to the differences array
|
||||
function addDifference(fieldName) {
|
||||
// Check for this field being excluded
|
||||
if(excludeFields.indexOf(fieldName) === -1) {
|
||||
// Save the field as a difference
|
||||
$tw.utils.pushTop(differences,fieldName);
|
||||
}
|
||||
}
|
||||
// Returns true if the two values of this field are equal
|
||||
function isFieldValueEqual(fieldName) {
|
||||
var valueA = self.fields[fieldName],
|
||||
valueB = tiddler.fields[fieldName];
|
||||
// Check for identical string values
|
||||
if(typeof(valueA) === "string" && typeof(valueB) === "string" && valueA === valueB) {
|
||||
return true;
|
||||
}
|
||||
// Check for identical array values
|
||||
if($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {
|
||||
return true;
|
||||
}
|
||||
// Check for identical date values
|
||||
if($tw.utils.isDate(valueA) && $tw.utils.isDate(valueB) && valueA.getTime() === valueB.getTime()) {
|
||||
return true;
|
||||
}
|
||||
// Otherwise the fields must be different
|
||||
return false;
|
||||
}
|
||||
// Compare our fields
|
||||
for(var fieldName in this.fields) {
|
||||
if(!isFieldValueEqual(fieldName)) {
|
||||
addDifference(fieldName);
|
||||
}
|
||||
}
|
||||
// There's a difference for every field in the other tiddler that we don't have
|
||||
for(fieldName in tiddler.fields) {
|
||||
if(!(fieldName in this.fields)) {
|
||||
addDifference(fieldName);
|
||||
}
|
||||
}
|
||||
// Return whether there were any differences
|
||||
return differences.length === 0;
|
||||
};
|
||||
|
||||
/*
|
||||
Register and install the built in tiddler field modules
|
||||
*/
|
||||
@@ -2037,6 +2154,8 @@ $tw.boot.startup = function(options) {
|
||||
if($tw.preloadTiddlers) {
|
||||
$tw.wiki.addTiddlers($tw.preloadTiddlers);
|
||||
}
|
||||
// Give hooks a chance to modify the store
|
||||
$tw.hooks.invokeHook("th-boot-tiddlers-loaded");
|
||||
// Unpack plugin tiddlers
|
||||
$tw.wiki.readPluginInfo();
|
||||
$tw.wiki.registerPluginTiddlers("plugin",$tw.safeMode ? ["$:/core"] : undefined);
|
||||
|
||||
9
core/images/gitter.tid
Normal file
9
core/images/gitter.tid
Normal file
@@ -0,0 +1,9 @@
|
||||
title: $:/core/images/gitter
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-gitter tc-image-button" width="22pt" height="22pt" viewBox="0 0 18 25">
|
||||
<rect x="15" y="5" width="2" height="10"></rect>
|
||||
<rect x="10" y="5" width="2" height="20"></rect>
|
||||
<rect x="5" y="5" width="2" height="20"></rect>
|
||||
<rect width="2" height="15"></rect>
|
||||
</svg>
|
||||
@@ -14,8 +14,9 @@ draft.of: For draft tiddlers, contains the title of the tiddler of which this is
|
||||
draft.title: For draft tiddlers, contains the proposed new title of the tiddler
|
||||
footer: The footer text for a wizard
|
||||
hack-to-give-us-something-to-compare-against: A temporary storage field used in [[$:/core/templates/static.content]]
|
||||
hide-body: The view template will hide bodies of tiddlers if set to: ''yes''
|
||||
icon: The title of the tiddler containing the icon associated with a tiddler
|
||||
library: If set to "yes" indicates that a tiddler should be saved as a JavaScript library
|
||||
library: Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''
|
||||
list: An ordered list of tiddler titles associated with a tiddler
|
||||
list-before: If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty
|
||||
list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty
|
||||
@@ -31,5 +32,6 @@ subtitle: The subtitle text for a wizard
|
||||
tags: A list of tags associated with a tiddler
|
||||
text: The body text of a tiddler
|
||||
title: The unique name of a tiddler
|
||||
toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''
|
||||
type: The content type of a tiddler
|
||||
version: Version information for a plugin
|
||||
|
||||
@@ -10,6 +10,7 @@ Orphans: Orphan tiddlers
|
||||
SystemTiddlers: System tiddlers
|
||||
ShadowTiddlers: Shadow tiddlers
|
||||
OverriddenShadowTiddlers: Overridden shadow tiddlers
|
||||
SessionTiddlers: Tiddlers modified since the wiki was loaded
|
||||
SystemTags: System tags
|
||||
StoryList: Tiddlers in the story river, excluding <$text text="$:/AdvancedSearch"/>
|
||||
TypedTiddlers: Non wiki-text tiddlers
|
||||
@@ -28,6 +28,7 @@ All parameters are optional with safe defaults, and can be specified in any orde
|
||||
* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)
|
||||
* ''tls-key'' - pathname of TLS key file (relative to wiki folder)
|
||||
* ''debug-level'' - optional debug level; set to "debug" to view request details (defaults to "none")
|
||||
* ''gzip'' - set to "yes" to enable gzip compression for some http endpoints (defaults to "no")
|
||||
|
||||
For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.
|
||||
|
||||
|
||||
@@ -4,10 +4,12 @@ description: Load tiddlers from a file
|
||||
Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.
|
||||
|
||||
```
|
||||
--load <filepath>
|
||||
--load <dirpath>
|
||||
--load <filepath> [noerror]
|
||||
--load <dirpath> [noerror]
|
||||
```
|
||||
|
||||
By default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional "noerror" parameter.
|
||||
|
||||
To load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:
|
||||
|
||||
```
|
||||
|
||||
@@ -13,8 +13,8 @@ A name and value for an additional variable may optionally also be specified.
|
||||
|
||||
* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered
|
||||
* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename
|
||||
* ''template'': Optional template through which each tiddler is rendered
|
||||
* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)
|
||||
* ''template'': Optional template through which each tiddler is rendered
|
||||
* ''name'': Name of optional variable
|
||||
* ''value'': Value of optional variable
|
||||
|
||||
|
||||
@@ -18,4 +18,6 @@ Upgrader/Plugins/Suppressed/Version: Blocked plugin (due to incoming <<incoming>
|
||||
Upgrader/Plugins/Upgraded: Upgraded plugin from <<incoming>> to <<upgraded>>
|
||||
Upgrader/State/Suppressed: Blocked temporary state tiddler
|
||||
Upgrader/System/Suppressed: Blocked system tiddler
|
||||
Upgrader/System/Warning: Core module tiddler
|
||||
Upgrader/System/Alert: You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable
|
||||
Upgrader/ThemeTweaks/Created: Migrated theme tweak from <$text text=<<from>>/>
|
||||
|
||||
@@ -38,7 +38,7 @@ Command.prototype.execute = function() {
|
||||
count++;
|
||||
});
|
||||
});
|
||||
if(!count) {
|
||||
if(!count && self.params[1] !== "noerror") {
|
||||
self.callback("No tiddlers found in file \"" + self.params[0] + "\"");
|
||||
} else {
|
||||
self.callback(null);
|
||||
|
||||
@@ -70,6 +70,9 @@ function FramedEngine(options) {
|
||||
if(this.widget.editRows) {
|
||||
this.domNode.setAttribute("rows",this.widget.editRows);
|
||||
}
|
||||
if(this.widget.editTabIndex) {
|
||||
this.iframeNode.setAttribute("tabindex",this.widget.editTabIndex);
|
||||
}
|
||||
// Copy the styles from the dummy textarea
|
||||
this.copyStyles();
|
||||
// Add event listeners
|
||||
|
||||
@@ -49,6 +49,9 @@ function SimpleEngine(options) {
|
||||
if(this.widget.editClass) {
|
||||
this.domNode.className = this.widget.editClass;
|
||||
}
|
||||
if(this.widget.editTabIndex) {
|
||||
this.domNode.setAttribute("tabindex",this.widget.editTabIndex);
|
||||
}
|
||||
// Add an input event handler
|
||||
$tw.utils.addEventListeners(this.domNode,[
|
||||
{name: "focus", handlerObject: this, handlerMethod: "handleFocusEvent"},
|
||||
|
||||
@@ -176,6 +176,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||
this.editMinHeight = this.getAttribute("minHeight",DEFAULT_MIN_TEXT_AREA_HEIGHT);
|
||||
this.editFocusPopup = this.getAttribute("focusPopup");
|
||||
this.editFocus = this.getAttribute("focus");
|
||||
this.editTabIndex = this.getAttribute("tabindex");
|
||||
// Get the default editor element tag and type
|
||||
var tag,type;
|
||||
if(this.editField === "text") {
|
||||
@@ -207,7 +208,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||
EditTextWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
// Completely rerender if any of our attributes have changed
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else if(changedTiddlers[this.editTitle]) {
|
||||
@@ -216,7 +217,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||
}
|
||||
this.engine.fixHeight();
|
||||
if(this.editShowToolbar) {
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -266,7 +267,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
|
||||
el.dispatchEvent(clickEvent);
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,12 @@ exports["wrap-selection"] = function(event,operation) {
|
||||
if(operation.selStart === operation.selEnd) {
|
||||
// No selection; check if we're within the prefix/suffix
|
||||
if(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {
|
||||
// Remove the prefix and suffix unless they comprise the entire text
|
||||
if(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {
|
||||
operation.cutStart = operation.selStart - event.paramObject.prefix.length;
|
||||
operation.cutEnd = operation.selEnd + event.paramObject.suffix.length;
|
||||
operation.replacement = "";
|
||||
operation.newSelStart = operation.cutStart;
|
||||
operation.newSelEnd = operation.newSelStart;
|
||||
}
|
||||
// Remove the prefix and suffix
|
||||
operation.cutStart = operation.selStart - event.paramObject.prefix.length;
|
||||
operation.cutEnd = operation.selEnd + event.paramObject.suffix.length;
|
||||
operation.replacement = "";
|
||||
operation.newSelStart = operation.cutStart;
|
||||
operation.newSelEnd = operation.newSelStart;
|
||||
} else {
|
||||
// Wrap the cursor instead
|
||||
operation.cutStart = operation.selStart;
|
||||
|
||||
36
core/modules/filters/is/variable.js
Normal file
36
core/modules/filters/is/variable.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/is/variable.js
|
||||
type: application/javascript
|
||||
module-type: isfilteroperator
|
||||
|
||||
Filter function for [is[variable]]
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.variable = function(source,prefix,options) {
|
||||
var results = [];
|
||||
if(prefix === "!") {
|
||||
source(function(tiddler,title) {
|
||||
if(!(title in options.widget.variables)) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
source(function(tiddler,title) {
|
||||
if(title in options.widget.variables) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
142
core/modules/filters/math.js
Normal file
142
core/modules/filters/math.js
Normal file
@@ -0,0 +1,142 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/math.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operators for math. Unary/binary operators work on each item in turn, and return a new item list.
|
||||
|
||||
Sum/product/maxall/minall operate on the entire list, returning a single item.
|
||||
|
||||
Note that strings are converted to numbers automatically. Trailing non-digits are ignored.
|
||||
|
||||
* "" converts to 0
|
||||
* "12kk" converts to 12
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.negate = makeNumericBinaryOperator(
|
||||
function(a) {return -a}
|
||||
);
|
||||
|
||||
exports.abs = makeNumericBinaryOperator(
|
||||
function(a) {return Math.abs(a)}
|
||||
);
|
||||
|
||||
exports.ceil = makeNumericBinaryOperator(
|
||||
function(a) {return Math.ceil(a)}
|
||||
);
|
||||
|
||||
exports.floor = makeNumericBinaryOperator(
|
||||
function(a) {return Math.floor(a)}
|
||||
);
|
||||
|
||||
exports.round = makeNumericBinaryOperator(
|
||||
function(a) {return Math.round(a)}
|
||||
);
|
||||
|
||||
exports.trunc = makeNumericBinaryOperator(
|
||||
function(a) {return Math.trunc(a)}
|
||||
);
|
||||
|
||||
exports.sign = makeNumericBinaryOperator(
|
||||
function(a) {return Math.sign(a)}
|
||||
);
|
||||
|
||||
exports.add = makeNumericBinaryOperator(
|
||||
function(a,b) {return a + b;}
|
||||
);
|
||||
|
||||
exports.subtract = makeNumericBinaryOperator(
|
||||
function(a,b) {return a - b;}
|
||||
);
|
||||
|
||||
exports.multiply = makeNumericBinaryOperator(
|
||||
function(a,b) {return a * b;}
|
||||
);
|
||||
|
||||
exports.divide = makeNumericBinaryOperator(
|
||||
function(a,b) {return a / b;}
|
||||
);
|
||||
|
||||
exports.remainder = makeNumericBinaryOperator(
|
||||
function(a,b) {return a % b;}
|
||||
);
|
||||
|
||||
exports.max = makeNumericBinaryOperator(
|
||||
function(a,b) {return Math.max(a,b);}
|
||||
);
|
||||
|
||||
exports.min = makeNumericBinaryOperator(
|
||||
function(a,b) {return Math.min(a,b);}
|
||||
);
|
||||
|
||||
exports.fixed = makeNumericBinaryOperator(
|
||||
function(a,b) {return Number.prototype.toFixed.call(a,b);}
|
||||
);
|
||||
|
||||
exports.precision = makeNumericBinaryOperator(
|
||||
function(a,b) {return Number.prototype.toPrecision.call(a,b);}
|
||||
);
|
||||
|
||||
exports.exponential = makeNumericBinaryOperator(
|
||||
function(a,b) {return Number.prototype.toExponential.call(a,b);}
|
||||
);
|
||||
|
||||
exports.sum = makeNumericArrayOperator(
|
||||
function(accumulator,value) {return accumulator + value},
|
||||
0 // Initial value
|
||||
);
|
||||
|
||||
exports.product = makeNumericArrayOperator(
|
||||
function(accumulator,value) {return accumulator * value},
|
||||
1 // Initial value
|
||||
);
|
||||
|
||||
exports.maxall = makeNumericArrayOperator(
|
||||
function(accumulator,value) {return Math.max(accumulator,value)},
|
||||
-Infinity // Initial value
|
||||
);
|
||||
|
||||
exports.minall = makeNumericArrayOperator(
|
||||
function(accumulator,value) {return Math.min(accumulator,value)},
|
||||
Infinity // Initial value
|
||||
);
|
||||
|
||||
function makeNumericBinaryOperator(fnCalc) {
|
||||
return function(source,operator,options) {
|
||||
var result = [],
|
||||
numOperand = parseNumber(operator.operand);
|
||||
source(function(tiddler,title) {
|
||||
result.push(stringifyNumber(fnCalc(parseNumber(title),numOperand)));
|
||||
});
|
||||
return result;
|
||||
};
|
||||
}
|
||||
|
||||
function makeNumericArrayOperator(fnCalc,initialValue) {
|
||||
initialValue = initialValue || 0;
|
||||
return function(source,operator,options) {
|
||||
var result = [];
|
||||
source(function(tiddler,title) {
|
||||
result.push(title);
|
||||
});
|
||||
return [stringifyNumber(result.reduce(function(accumulator,currentValue) {
|
||||
return fnCalc(accumulator,parseNumber(currentValue));
|
||||
},initialValue))];
|
||||
};
|
||||
}
|
||||
|
||||
function parseNumber(str) {
|
||||
return parseFloat(str) || 0;
|
||||
}
|
||||
|
||||
function stringifyNumber(num) {
|
||||
return num + "";
|
||||
}
|
||||
|
||||
})();
|
||||
@@ -18,7 +18,7 @@ Export our filter function
|
||||
exports.removesuffix = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
if(title.substr(-operator.operand.length) === operator.operand) {
|
||||
if(title && title.substr(-operator.operand.length) === operator.operand) {
|
||||
results.push(title.substr(0,title.length - operator.operand.length));
|
||||
}
|
||||
});
|
||||
|
||||
70
core/modules/filters/strings.js
Normal file
70
core/modules/filters/strings.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/strings.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.
|
||||
|
||||
Sum/product/maxall/minall operate on the entire list, returning a single item.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.length = makeStringBinaryOperator(
|
||||
function(a) {return ["" + ("" + a).length];}
|
||||
);
|
||||
|
||||
exports.uppercase = makeStringBinaryOperator(
|
||||
function(a) {return [("" + a).toUpperCase()];}
|
||||
);
|
||||
|
||||
exports.lowercase = makeStringBinaryOperator(
|
||||
function(a) {return [("" + a).toLowerCase()];}
|
||||
);
|
||||
|
||||
exports.trim = makeStringBinaryOperator(
|
||||
function(a) {return [$tw.utils.trim(a)];}
|
||||
);
|
||||
|
||||
exports.concat = makeStringBinaryOperator(
|
||||
function(a,b) {return ["" + a + b];}
|
||||
);
|
||||
|
||||
exports.split = makeStringBinaryOperator(
|
||||
function(a,b) {return ("" + a).split(b).filter(function(str) {return !!str;});}
|
||||
);
|
||||
|
||||
exports.join = makeStringArrayOperator(
|
||||
function(accumulator,value,operand) {
|
||||
return "" + (accumulator ? accumulator + (operand || "") + value : value);
|
||||
}
|
||||
);
|
||||
|
||||
function makeStringBinaryOperator(fnCalc) {
|
||||
return function(source,operator,options) {
|
||||
var result = [];
|
||||
source(function(tiddler,title) {
|
||||
Array.prototype.push.apply(result,fnCalc(title,operator.operand || ""));
|
||||
});
|
||||
return result;
|
||||
};
|
||||
}
|
||||
|
||||
function makeStringArrayOperator(fnCalc,initialValue) {
|
||||
initialValue = initialValue || "";
|
||||
return function(source,operator,options) {
|
||||
var result = [];
|
||||
source(function(tiddler,title) {
|
||||
result.push(title);
|
||||
});
|
||||
return [result.reduce(function(accumulator,currentValue) {
|
||||
return fnCalc(accumulator,currentValue,operator.operand || "");
|
||||
},initialValue)];
|
||||
};
|
||||
}
|
||||
|
||||
})();
|
||||
@@ -35,6 +35,8 @@ exports.getInfoTiddlerFields = function() {
|
||||
// Screen size
|
||||
infoTiddlerFields.push({title: "$:/info/browser/screen/width", text: window.screen.width.toString()});
|
||||
infoTiddlerFields.push({title: "$:/info/browser/screen/height", text: window.screen.height.toString()});
|
||||
// Language
|
||||
infoTiddlerFields.push({title: "$:/info/browser/language", text: navigator.language || ""});
|
||||
}
|
||||
return infoTiddlerFields;
|
||||
};
|
||||
|
||||
34
core/modules/macros/uniquetitle.js
Normal file
34
core/modules/macros/uniquetitle.js
Normal file
@@ -0,0 +1,34 @@
|
||||
/*\
|
||||
title: $:/core/modules/macros/unusedtitle.js
|
||||
type: application/javascript
|
||||
module-type: macro
|
||||
Macro to return a new title that is unused in the wiki. It can be given a name as a base.
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Information about this macro
|
||||
*/
|
||||
|
||||
exports.name = "unusedtitle";
|
||||
|
||||
exports.params = [
|
||||
{name: "baseName"},
|
||||
{name: "options"}
|
||||
];
|
||||
|
||||
/*
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function(baseName, options) {
|
||||
if(!baseName) {
|
||||
baseName = $tw.language.getString("DefaultNewTiddlerTitle");
|
||||
}
|
||||
return this.wiki.generateNewTitle(baseName, options);
|
||||
};
|
||||
|
||||
})();
|
||||
13
core/modules/parsers/wikiparser/macros/prettylink.tid
Normal file
13
core/modules/parsers/wikiparser/macros/prettylink.tid
Normal file
@@ -0,0 +1,13 @@
|
||||
title: $:/core/macros/shortcuts/prettylink
|
||||
tags: $:/tags/Macro
|
||||
|
||||
\define x-tm-prettylink-internal(to,text)
|
||||
<$link to=<<__to__>>><$text text=<<__text__>>/></$link>
|
||||
\end
|
||||
|
||||
\define tm-prettylink-internal(to,text)
|
||||
<$button>
|
||||
<$action-navigate $to=<<__to__>>/>
|
||||
<$text text=<<__text__>>/>
|
||||
</$button>
|
||||
\end
|
||||
@@ -49,13 +49,12 @@ exports.parse = function() {
|
||||
}];
|
||||
} else {
|
||||
return [{
|
||||
type: "link",
|
||||
attributes: {
|
||||
to: {type: "string", value: link}
|
||||
},
|
||||
children: [{
|
||||
type: "text", text: text
|
||||
}]
|
||||
type: "macrocall",
|
||||
name: "tm-prettylink-internal",
|
||||
params: [
|
||||
{name: "to", value: link},
|
||||
{name: "text", value: text}
|
||||
]
|
||||
}];
|
||||
}
|
||||
};
|
||||
|
||||
@@ -21,6 +21,7 @@ function SaverHandler(options) {
|
||||
var self = this;
|
||||
this.wiki = options.wiki;
|
||||
this.dirtyTracking = options.dirtyTracking;
|
||||
this.preloadDirty = options.preloadDirty || [];
|
||||
this.pendingAutoSave = false;
|
||||
// Make a logger
|
||||
this.logger = new $tw.utils.Logger("saver-handler");
|
||||
@@ -33,7 +34,13 @@ function SaverHandler(options) {
|
||||
// Compile the dirty tiddler filter
|
||||
this.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));
|
||||
// Count of changes that have not yet been saved
|
||||
this.numChanges = 0;
|
||||
var filteredChanges = self.filterFn.call(self.wiki,function(iterator) {
|
||||
$tw.utils.each(self.preloadDirty,function(title) {
|
||||
var tiddler = self.wiki.getTiddler(title);
|
||||
iterator(tiddler,title);
|
||||
});
|
||||
});
|
||||
this.numChanges = filteredChanges.length;
|
||||
// Listen out for changes to tiddlers
|
||||
this.wiki.addEventListener("change",function(changes) {
|
||||
// Filter the changes so that we only count changes to tiddlers that we care about
|
||||
@@ -144,8 +151,12 @@ Save the wiki contents. Options are:
|
||||
SaverHandler.prototype.saveWiki = function(options) {
|
||||
options = options || {};
|
||||
var self = this,
|
||||
method = options.method || "save",
|
||||
variables = options.variables || {},
|
||||
method = options.method || "save";
|
||||
// Ignore autosave if disabled
|
||||
if(method === "autosave" && this.wiki.getTiddlerText(this.titleAutoSave,"yes") !== "yes") {
|
||||
return false;
|
||||
}
|
||||
var variables = options.variables || {},
|
||||
template = options.template || "$:/core/save/all",
|
||||
downloadType = options.downloadType || "text/plain",
|
||||
text = this.wiki.renderTiddler(downloadType,template,options),
|
||||
@@ -164,10 +175,6 @@ SaverHandler.prototype.saveWiki = function(options) {
|
||||
}
|
||||
}
|
||||
};
|
||||
// Ignore autosave if disabled
|
||||
if(method === "autosave" && this.wiki.getTiddlerText(this.titleAutoSave,"yes") !== "yes") {
|
||||
return false;
|
||||
}
|
||||
// Call the highest priority saver that supports this method
|
||||
for(var t=this.savers.length-1; t>=0; t--) {
|
||||
var saver = this.savers[t];
|
||||
|
||||
@@ -12,14 +12,40 @@ GET /
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var zlib = require('zlib');
|
||||
|
||||
exports.method = "GET";
|
||||
|
||||
exports.path = /^\/$/;
|
||||
|
||||
exports.handler = function(request,response,state) {
|
||||
response.writeHead(200, {"Content-Type": state.server.get("root-serve-type")});
|
||||
var acceptEncoding = request.headers['accept-encoding'];
|
||||
if (!acceptEncoding) { acceptEncoding = ''; }
|
||||
|
||||
var text = state.wiki.renderTiddler(state.server.get("root-render-type"),state.server.get("root-tiddler"));
|
||||
response.end(text,"utf8");
|
||||
|
||||
var responseHeaders = {
|
||||
"Content-Type": state.server.get("root-serve-type")
|
||||
};
|
||||
|
||||
/*
|
||||
If the gzip=yes flag for `listen` is set, check if the user agent permits
|
||||
compression. If so, compress our response. Note that we use the synchronous
|
||||
functions from zlib to stay in the imperative style. The current `Server`
|
||||
doesn't depend on this, and we may just as well use the async versions.
|
||||
*/
|
||||
if(state.server.enableGzip) {
|
||||
if (/\bdeflate\b/.test(acceptEncoding)) {
|
||||
responseHeaders['Content-Encoding'] = 'deflate';
|
||||
text = zlib.deflateSync(text);
|
||||
} else if (/\bgzip\b/.test(acceptEncoding)) {
|
||||
responseHeaders['Content-Encoding'] = 'gzip';
|
||||
text = zlib.gzipSync(text);
|
||||
}
|
||||
}
|
||||
|
||||
response.writeHead(200, responseHeaders);
|
||||
response.end(text);
|
||||
};
|
||||
|
||||
}());
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
/*\
|
||||
title: $:/core/modules/server/routes/get-login/basic.js
|
||||
title: $:/core/modules/server/routes/get-login-basic.js
|
||||
type: application/javascript
|
||||
module-type: route
|
||||
|
||||
GET /login/basic -- force a Basic Authentication challenge
|
||||
GET /login-basic -- force a Basic Authentication challenge
|
||||
|
||||
\*/
|
||||
(function() {
|
||||
@@ -14,7 +14,7 @@ GET /login/basic -- force a Basic Authentication challenge
|
||||
|
||||
exports.method = "GET";
|
||||
|
||||
exports.path = /^\/login\/basic$/;
|
||||
exports.path = /^\/login-basic$/;
|
||||
|
||||
exports.handler = function(request,response,state) {
|
||||
if(!state.authenticatedUsername) {
|
||||
|
||||
@@ -43,6 +43,8 @@ function Server(options) {
|
||||
$tw.utils.extend({},this.defaultVariables,options.variables);
|
||||
// Initialise CSRF
|
||||
this.csrfDisable = this.get("csrf-disable") === "yes";
|
||||
// Initialize Gzip compression
|
||||
this.enableGzip = this.get("gzip") === "yes";
|
||||
// Initialise authorization
|
||||
var authorizedUserName = (this.get("username") && this.get("password")) ? this.get("username") : "(anon)";
|
||||
this.authorizationPrincipals = {
|
||||
@@ -84,7 +86,8 @@ Server.prototype.defaultVariables = {
|
||||
"tiddler-render-template": "$:/core/templates/server/static.tiddler.html",
|
||||
"system-tiddler-render-type": "text/plain",
|
||||
"system-tiddler-render-template": "$:/core/templates/wikified-tiddler",
|
||||
"debug-level": "none"
|
||||
"debug-level": "none",
|
||||
"gzip": "no"
|
||||
};
|
||||
|
||||
Server.prototype.get = function(name) {
|
||||
@@ -229,17 +232,19 @@ Server.prototype.requestHandler = function(request,response) {
|
||||
/*
|
||||
Listen for requests
|
||||
port: optional port number (falls back to value of "port" variable)
|
||||
host: optional host address (falls back to value of "hist" variable)
|
||||
host: optional host address (falls back to value of "host" variable)
|
||||
prefix: optional prefix (falls back to value of "path-prefix" variable)
|
||||
*/
|
||||
Server.prototype.listen = function(port,host) {
|
||||
Server.prototype.listen = function(port,host,prefix) {
|
||||
// Handle defaults for port and host
|
||||
port = port || this.get("port");
|
||||
host = host || this.get("host");
|
||||
prefix = prefix || this.get("path-prefix") || "";
|
||||
// Check for the port being a string and look it up as an environment variable
|
||||
if(parseInt(port,10).toString() !== port) {
|
||||
port = process.env[port] || 8080;
|
||||
}
|
||||
$tw.utils.log("Serving on " + this.protocol + "://" + host + ":" + port,"brown/orange");
|
||||
$tw.utils.log("Serving on " + this.protocol + "://" + host + ":" + port + prefix,"brown/orange");
|
||||
$tw.utils.log("(press ctrl-C to exit)","red");
|
||||
// Warn if required plugins are missing
|
||||
if(!$tw.wiki.getTiddler("$:/plugins/tiddlywiki/tiddlyweb") || !$tw.wiki.getTiddler("$:/plugins/tiddlywiki/filesystem")) {
|
||||
|
||||
@@ -71,9 +71,10 @@ exports.startup = function() {
|
||||
timerId;
|
||||
function refresh() {
|
||||
// Process the refresh
|
||||
$tw.hooks.invokeHook("th-page-refreshing");
|
||||
$tw.pageWidgetNode.refresh(deferredChanges);
|
||||
deferredChanges = Object.create(null);
|
||||
$tw.hooks.invokeHook("th-page-refreshed");
|
||||
$tw.hooks.invokeHook("th-page-refreshed");
|
||||
}
|
||||
// Add the change event handler
|
||||
$tw.wiki.addEventListener("change",$tw.perf.report("mainRefresh",function(changes) {
|
||||
|
||||
@@ -42,15 +42,16 @@ exports.startup = function() {
|
||||
var fullscreen = $tw.utils.getFullScreenApis();
|
||||
if(fullscreen) {
|
||||
$tw.rootWidget.addEventListener("tm-full-screen",function(event) {
|
||||
var fullScreenDocument = event.event ? event.event.target.ownerDocument : document;
|
||||
if(event.param === "enter") {
|
||||
event.event.target.ownerDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);
|
||||
fullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);
|
||||
} else if(event.param === "exit") {
|
||||
event.event.target.ownerDocument[fullscreen._exitFullscreen]();
|
||||
fullScreenDocument[fullscreen._exitFullscreen]();
|
||||
} else {
|
||||
if(event.event.target.ownerDocument[fullscreen._fullscreenElement]) {
|
||||
event.event.target.ownerDocument[fullscreen._exitFullscreen]();
|
||||
if(fullScreenDocument[fullscreen._fullscreenElement]) {
|
||||
fullScreenDocument[fullscreen._exitFullscreen]();
|
||||
} else {
|
||||
event.event.target.ownerDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);
|
||||
fullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -55,6 +55,27 @@ exports.startup = function() {
|
||||
$tw.version = $tw.utils.extractVersionInfo();
|
||||
// Set up the performance framework
|
||||
$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,"no") === "yes");
|
||||
// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers
|
||||
$tw.rootWidget = new widget.widget({
|
||||
type: "widget",
|
||||
children: []
|
||||
},{
|
||||
wiki: $tw.wiki,
|
||||
document: $tw.browser ? document : $tw.fakeDocument
|
||||
});
|
||||
// Execute any startup actions
|
||||
var executeStartupTiddlers = function(tag) {
|
||||
$tw.utils.each($tw.wiki.filterTiddlers("[all[shadows+tiddlers]tag[" + tag + "]!has[draft.of]]"),function(title) {
|
||||
$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);
|
||||
});
|
||||
};
|
||||
executeStartupTiddlers("$:/tags/StartupAction");
|
||||
if($tw.browser) {
|
||||
executeStartupTiddlers("$:/tags/StartupAction/Browser");
|
||||
}
|
||||
if($tw.node) {
|
||||
executeStartupTiddlers("$:/tags/StartupAction/Node");
|
||||
}
|
||||
// Kick off the language manager and switcher
|
||||
$tw.language = new $tw.Language();
|
||||
$tw.languageSwitcher = new $tw.PluginSwitcher({
|
||||
@@ -62,7 +83,7 @@ exports.startup = function() {
|
||||
pluginType: "language",
|
||||
controllerTitle: "$:/language",
|
||||
defaultPlugins: [
|
||||
"$:/languages/en-US"
|
||||
"$:/languages/en-GB"
|
||||
],
|
||||
onSwitch: function(plugins) {
|
||||
if($tw.browser) {
|
||||
@@ -95,27 +116,6 @@ exports.startup = function() {
|
||||
handlerMethod: "handleKeydownEvent"
|
||||
}]);
|
||||
}
|
||||
// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers
|
||||
$tw.rootWidget = new widget.widget({
|
||||
type: "widget",
|
||||
children: []
|
||||
},{
|
||||
wiki: $tw.wiki,
|
||||
document: $tw.browser ? document : $tw.fakeDocument
|
||||
});
|
||||
// Execute any startup actions
|
||||
var executeStartupTiddlers = function(tag) {
|
||||
$tw.utils.each($tw.wiki.filterTiddlers("[all[shadows+tiddlers]tag[" + tag + "]!has[draft.of]]"),function(title) {
|
||||
$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);
|
||||
});
|
||||
};
|
||||
executeStartupTiddlers("$:/tags/StartupAction");
|
||||
if($tw.browser) {
|
||||
executeStartupTiddlers("$:/tags/StartupAction/Browser");
|
||||
}
|
||||
if($tw.node) {
|
||||
executeStartupTiddlers("$:/tags/StartupAction/Node");
|
||||
}
|
||||
// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup
|
||||
$tw.wiki.clearTiddlerEventQueue();
|
||||
// Find a working syncadaptor
|
||||
@@ -130,7 +130,11 @@ exports.startup = function() {
|
||||
$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});
|
||||
}
|
||||
// Setup the saver handler
|
||||
$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});
|
||||
$tw.saverHandler = new $tw.SaverHandler({
|
||||
wiki: $tw.wiki,
|
||||
dirtyTracking: !$tw.syncadaptor,
|
||||
preloadDirty: $tw.boot.preloadDirty || []
|
||||
});
|
||||
// Host-specific startup
|
||||
if($tw.browser) {
|
||||
// Install the popup manager
|
||||
|
||||
@@ -36,7 +36,9 @@ var HELP_OPEN_EXTERNAL_WINDOW = "http://tiddlywiki.com/#WidgetMessage%3A%20tm-op
|
||||
|
||||
exports.startup = function() {
|
||||
// Open startup tiddlers
|
||||
openStartupTiddlers();
|
||||
openStartupTiddlers({
|
||||
disableHistory: $tw.boot.disableStartupNavigation
|
||||
});
|
||||
if($tw.browser) {
|
||||
// Set up location hash update
|
||||
$tw.wiki.addEventListener("change",function(changes) {
|
||||
@@ -106,6 +108,7 @@ exports.startup = function() {
|
||||
|
||||
/*
|
||||
Process the location hash to open the specified tiddlers. Options:
|
||||
disableHistory: if true $:/History is NOT updated
|
||||
defaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers
|
||||
*/
|
||||
function openStartupTiddlers(options) {
|
||||
@@ -146,15 +149,18 @@ function openStartupTiddlers(options) {
|
||||
}
|
||||
// Save the story list
|
||||
$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: "", list: storyList},$tw.wiki.getModificationFields());
|
||||
// If a target tiddler was specified add it to the history stack
|
||||
if(target && target !== "") {
|
||||
// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present
|
||||
if(target.indexOf("[[") === 0 && target.substr(-2) === "]]") {
|
||||
target = target.substr(2,target.length - 4);
|
||||
}
|
||||
$tw.wiki.addToHistory(target);
|
||||
} else if(storyList.length > 0) {
|
||||
$tw.wiki.addToHistory(storyList[0]);
|
||||
// Update history
|
||||
if(!options.disableHistory) {
|
||||
// If a target tiddler was specified add it to the history stack
|
||||
if(target && target !== "") {
|
||||
// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present
|
||||
if(target.indexOf("[[") === 0 && target.substr(-2) === "]]") {
|
||||
target = target.substr(2,target.length - 4);
|
||||
}
|
||||
$tw.wiki.addToHistory(target);
|
||||
} else if(storyList.length > 0) {
|
||||
$tw.wiki.addToHistory(storyList[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -87,57 +87,6 @@ exports.getFieldStringBlock = function(options) {
|
||||
return fields.join("\n");
|
||||
};
|
||||
|
||||
/*
|
||||
Compare two tiddlers for equality
|
||||
tiddler: the tiddler to compare
|
||||
excludeFields: array of field names to exclude from the comparison
|
||||
*/
|
||||
exports.isEqual = function(tiddler,excludeFields) {
|
||||
if(!(tiddler instanceof $tw.Tiddler)) {
|
||||
return false;
|
||||
}
|
||||
excludeFields = excludeFields || [];
|
||||
var self = this,
|
||||
differences = []; // Fields that have differences
|
||||
// Add to the differences array
|
||||
function addDifference(fieldName) {
|
||||
// Check for this field being excluded
|
||||
if(excludeFields.indexOf(fieldName) === -1) {
|
||||
// Save the field as a difference
|
||||
$tw.utils.pushTop(differences,fieldName);
|
||||
}
|
||||
}
|
||||
// Returns true if the two values of this field are equal
|
||||
function isFieldValueEqual(fieldName) {
|
||||
var valueA = self.fields[fieldName],
|
||||
valueB = tiddler.fields[fieldName];
|
||||
// Check for identical string values
|
||||
if(typeof(valueA) === "string" && typeof(valueB) === "string" && valueA === valueB) {
|
||||
return true;
|
||||
}
|
||||
// Check for identical array values
|
||||
if($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {
|
||||
return true;
|
||||
}
|
||||
// Otherwise the fields must be different
|
||||
return false;
|
||||
}
|
||||
// Compare our fields
|
||||
for(var fieldName in this.fields) {
|
||||
if(!isFieldValueEqual(fieldName)) {
|
||||
addDifference(fieldName);
|
||||
}
|
||||
}
|
||||
// There's a difference for every field in the other tiddler that we don't have
|
||||
for(fieldName in tiddler.fields) {
|
||||
if(!(fieldName in this.fields)) {
|
||||
addDifference(fieldName);
|
||||
}
|
||||
}
|
||||
// Return whether there were any differences
|
||||
return differences.length === 0;
|
||||
};
|
||||
|
||||
exports.getFieldDay = function(field) {
|
||||
if(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {
|
||||
return this.cache.day[field];
|
||||
|
||||
@@ -13,11 +13,13 @@ Upgrader module that suppresses certain system tiddlers that shouldn't be import
|
||||
"use strict";
|
||||
|
||||
var DONT_IMPORT_LIST = ["$:/StoryList","$:/HistoryList"],
|
||||
DONT_IMPORT_PREFIX_LIST = ["$:/temp/","$:/state/"];
|
||||
DONT_IMPORT_PREFIX_LIST = ["$:/temp/","$:/state/","$:/Import"],
|
||||
WARN_IMPORT_PREFIX_LIST = ["$:/core/modules/"];
|
||||
|
||||
exports.upgrade = function(wiki,titles,tiddlers) {
|
||||
var self = this,
|
||||
messages = {};
|
||||
messages = {},
|
||||
showAlert = false;
|
||||
// Check for tiddlers on our list
|
||||
$tw.utils.each(titles,function(title) {
|
||||
if(DONT_IMPORT_LIST.indexOf(title) !== -1) {
|
||||
@@ -31,6 +33,17 @@ exports.upgrade = function(wiki,titles,tiddlers) {
|
||||
messages[title] = $tw.language.getString("Import/Upgrader/State/Suppressed");
|
||||
}
|
||||
}
|
||||
for(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {
|
||||
var prefix = WARN_IMPORT_PREFIX_LIST[t];
|
||||
if(title.substr(0,prefix.length) === prefix) {
|
||||
showAlert = true;
|
||||
messages[title] = $tw.language.getString("Import/Upgrader/System/Warning");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(showAlert) {
|
||||
var logger = new $tw.utils.Logger("import");
|
||||
logger.alert($tw.language.getString("Import/Upgrader/System/Alert"));
|
||||
}
|
||||
});
|
||||
return messages;
|
||||
|
||||
@@ -30,7 +30,7 @@ Modal.prototype.display = function(title,options) {
|
||||
options = options || {};
|
||||
this.srcDocument = options.variables && (options.variables.rootwindow === "true" ||
|
||||
options.variables.rootwindow === "yes") ? document :
|
||||
(options.event.event ? options.event.event.target.ownerDocument : document);
|
||||
(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);
|
||||
this.srcWindow = this.srcDocument.defaultView;
|
||||
var self = this,
|
||||
refreshHandler,
|
||||
|
||||
@@ -33,6 +33,10 @@ var PageScroller = function() {
|
||||
};
|
||||
};
|
||||
|
||||
PageScroller.prototype.isScrolling = function() {
|
||||
return this.idRequestFrame !== null;
|
||||
}
|
||||
|
||||
PageScroller.prototype.cancelScroll = function(srcWindow) {
|
||||
if(this.idRequestFrame) {
|
||||
this.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);
|
||||
|
||||
@@ -45,10 +45,28 @@ var TW_Element = function(tag,namespace) {
|
||||
this.attributes = {};
|
||||
this.isRaw = false;
|
||||
this.children = [];
|
||||
this.style = {};
|
||||
this._style = {};
|
||||
this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml";
|
||||
};
|
||||
|
||||
Object.defineProperty(TW_Element.prototype, "style", {
|
||||
get: function() {
|
||||
return this._style;
|
||||
},
|
||||
set: function(str) {
|
||||
var self = this;
|
||||
str = str || "";
|
||||
$tw.utils.each(str.split(";"),function(declaration) {
|
||||
var parts = declaration.split(":"),
|
||||
name = $tw.utils.trim(parts[0]),
|
||||
value = $tw.utils.trim(parts[1]);
|
||||
if(name && value) {
|
||||
self._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(TW_Element.prototype, "nodeType", {
|
||||
get: function() {
|
||||
return 1;
|
||||
@@ -169,13 +187,13 @@ Object.defineProperty(TW_Element.prototype, "outerHTML", {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(this.style) {
|
||||
if(this._style) {
|
||||
var style = [];
|
||||
for(var s in this.style) {
|
||||
style.push(s + ":" + this.style[s] + ";");
|
||||
for(var s in this._style) {
|
||||
style.push($tw.utils.convertPropertyNameToStyleName(s) + ":" + this._style[s] + ";");
|
||||
}
|
||||
if(style.length > 0) {
|
||||
output.push(" style=\"",style.join(""),"\"")
|
||||
output.push(" style=\"",style.join(""),"\"");
|
||||
}
|
||||
}
|
||||
output.push(">");
|
||||
|
||||
@@ -132,23 +132,6 @@ exports.count = function(object) {
|
||||
return Object.keys(object || {}).length;
|
||||
};
|
||||
|
||||
/*
|
||||
Check if an array is equal by value and by reference.
|
||||
*/
|
||||
exports.isArrayEqual = function(array1,array2) {
|
||||
if(array1 === array2) {
|
||||
return true;
|
||||
}
|
||||
array1 = array1 || [];
|
||||
array2 = array2 || [];
|
||||
if(array1.length !== array2.length) {
|
||||
return false;
|
||||
}
|
||||
return array1.every(function(value,index) {
|
||||
return value === array2[index];
|
||||
});
|
||||
};
|
||||
|
||||
/*
|
||||
Determine whether an array-item is an object-property
|
||||
*/
|
||||
@@ -161,46 +144,6 @@ exports.hopArray = function(object,array) {
|
||||
return false;
|
||||
};
|
||||
|
||||
/*
|
||||
Push entries onto an array, removing them first if they already exist in the array
|
||||
array: array to modify (assumed to be free of duplicates)
|
||||
value: a single value to push or an array of values to push
|
||||
*/
|
||||
exports.pushTop = function(array,value) {
|
||||
var t,p;
|
||||
if($tw.utils.isArray(value)) {
|
||||
// Remove any array entries that are duplicated in the new values
|
||||
if(value.length !== 0) {
|
||||
if(array.length !== 0) {
|
||||
if(value.length < array.length) {
|
||||
for(t=0; t<value.length; t++) {
|
||||
p = array.indexOf(value[t]);
|
||||
if(p !== -1) {
|
||||
array.splice(p,1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for(t=array.length-1; t>=0; t--) {
|
||||
p = value.indexOf(array[t]);
|
||||
if(p !== -1) {
|
||||
array.splice(t,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Push the values on top of the main array
|
||||
array.push.apply(array,value);
|
||||
}
|
||||
} else {
|
||||
p = array.indexOf(value);
|
||||
if(p !== -1) {
|
||||
array.splice(p,1);
|
||||
}
|
||||
array.push(value);
|
||||
}
|
||||
return array;
|
||||
};
|
||||
|
||||
/*
|
||||
Remove entries from an array
|
||||
array: array to modify
|
||||
@@ -708,7 +651,7 @@ exports.extractVersionInfo = function() {
|
||||
Get the animation duration in ms
|
||||
*/
|
||||
exports.getAnimationDuration = function() {
|
||||
return parseInt($tw.wiki.getTiddlerText("$:/config/AnimationDuration","400"),10);
|
||||
return parseInt($tw.wiki.getTiddlerText("$:/config/AnimationDuration","400"),10) || 0;
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -214,7 +214,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
*/
|
||||
ButtonWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes["class"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedAttributes[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {
|
||||
if(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes["class"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -42,7 +42,8 @@ DropZoneWidget.prototype.render = function(parent,nextSibling) {
|
||||
{name: "dragover", handlerObject: this, handlerMethod: "handleDragOverEvent"},
|
||||
{name: "dragleave", handlerObject: this, handlerMethod: "handleDragLeaveEvent"},
|
||||
{name: "drop", handlerObject: this, handlerMethod: "handleDropEvent"},
|
||||
{name: "paste", handlerObject: this, handlerMethod: "handlePasteEvent"}
|
||||
{name: "paste", handlerObject: this, handlerMethod: "handlePasteEvent"},
|
||||
{name: "dragend", handlerObject: this, handlerMethod: "handleDragEndEvent"}
|
||||
]);
|
||||
domNode.addEventListener("click",function (event) {
|
||||
},false);
|
||||
@@ -103,6 +104,10 @@ DropZoneWidget.prototype.handleDragLeaveEvent = function(event) {
|
||||
this.leaveDrag(event);
|
||||
};
|
||||
|
||||
DropZoneWidget.prototype.handleDragEndEvent = function(event) {
|
||||
$tw.utils.removeClass(this.domNodes[0],"tc-dragover");
|
||||
};
|
||||
|
||||
DropZoneWidget.prototype.handleDropEvent = function(event) {
|
||||
var self = this,
|
||||
readFileCallback = function(tiddlerFieldsArray) {
|
||||
|
||||
@@ -57,6 +57,10 @@ EditShortcutWidget.prototype.render = function(parent,nextSibling) {
|
||||
// Link into the DOM
|
||||
parent.insertBefore(this.inputNode,nextSibling);
|
||||
this.domNodes.push(this.inputNode);
|
||||
// Focus the input Node if focus === "yes" or focus === "true"
|
||||
if(this.shortcutFocus === "yes" || this.shortcutFocus === "true") {
|
||||
this.focus();
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -72,6 +76,7 @@ EditShortcutWidget.prototype.execute = function() {
|
||||
this.shortcutStyle = this.getAttribute("style");
|
||||
this.shortcutTooltip = this.getAttribute("tooltip");
|
||||
this.shortcutAriaLabel = this.getAttribute("aria-label");
|
||||
this.shortcutFocus = this.getAttribute("focus");
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -118,12 +123,22 @@ EditShortcutWidget.prototype.handleKeydownEvent = function(event) {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
focus the input node
|
||||
*/
|
||||
EditShortcutWidget.prototype.focus = function() {
|
||||
if(this.inputNode.focus && this.inputNode.select) {
|
||||
this.inputNode.focus();
|
||||
this.inputNode.select();
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Selectively refreshes the widget if needed. Returns true if the widget needed re-rendering
|
||||
*/
|
||||
EditShortcutWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes["aria-label"]) {
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes["aria-label"] || changedAttributes.focus) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else if(changedTiddlers[this.shortcutTiddler]) {
|
||||
|
||||
@@ -46,6 +46,7 @@ EditWidget.prototype.execute = function() {
|
||||
this.editIndex = this.getAttribute("index");
|
||||
this.editClass = this.getAttribute("class");
|
||||
this.editPlaceholder = this.getAttribute("placeholder");
|
||||
this.editTabIndex = this.getAttribute("tabindex");
|
||||
// Choose the appropriate edit widget
|
||||
this.editorType = this.getEditorType();
|
||||
// Make the child widgets
|
||||
@@ -56,7 +57,8 @@ EditWidget.prototype.execute = function() {
|
||||
field: {type: "string", value: this.editField},
|
||||
index: {type: "string", value: this.editIndex},
|
||||
"class": {type: "string", value: this.editClass},
|
||||
"placeholder": {type: "string", value: this.editPlaceholder}
|
||||
"placeholder": {type: "string", value: this.editPlaceholder},
|
||||
"tabindex": {type: "string", value: this.editTabIndex}
|
||||
},
|
||||
children: this.parseTreeNode.children
|
||||
}]);
|
||||
@@ -90,11 +92,11 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
EditWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
// Refresh if an attribute has changed, or the type associated with the target tiddler has changed
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {
|
||||
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
} else {
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -590,7 +590,7 @@ NavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {
|
||||
NavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {
|
||||
var self = this,
|
||||
paramObject = event.paramObject || {},
|
||||
prefix = paramObject.foldedStatePrefix;
|
||||
prefix = paramObject.foldedStatePrefix || "$:/state/folded/";
|
||||
$tw.utils.each(this.getStoryList(),function(title) {
|
||||
self.wiki.setText(prefix + title,"text",null,"hide");
|
||||
});
|
||||
|
||||
@@ -118,10 +118,22 @@ Read the state tiddler
|
||||
*/
|
||||
RevealWidget.prototype.readState = function() {
|
||||
// Read the information from the state tiddler
|
||||
var state = this.stateTitle ? (this.stateField ? this.wiki.getTiddler(this.stateTitle).getFieldString(this.stateField) :
|
||||
(this.stateIndex ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) :
|
||||
this.wiki.getTiddlerText(this.stateTitle))) || this["default"] || this.getVariable("currentTiddler") :
|
||||
(this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this["default"],this.getVariable("currentTiddler")) : this["default"]);
|
||||
var state,
|
||||
defaultState = this["default"];
|
||||
if(this.stateTitle) {
|
||||
var stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);
|
||||
if(this.stateField) {
|
||||
state = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;
|
||||
} else if(this.stateIndex) {
|
||||
state = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;
|
||||
} else if(stateTitleTiddler) {
|
||||
state = this.wiki.getTiddlerText(this.stateTitle) || defaultState;
|
||||
} else {
|
||||
state = defaultState;
|
||||
}
|
||||
} else {
|
||||
state = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this["default"],this.getVariable("currentTiddler")) : this["default"];
|
||||
}
|
||||
if(state === null) {
|
||||
state = this["default"];
|
||||
}
|
||||
|
||||
@@ -145,6 +145,7 @@ SelectWidget.prototype.execute = function() {
|
||||
this.selectDefault = this.getAttribute("default");
|
||||
this.selectMultiple = this.getAttribute("multiple", false);
|
||||
this.selectSize = this.getAttribute("size");
|
||||
this.selectTooltip = this.getAttribute("tooltip");
|
||||
// Make the child widgets
|
||||
var selectNode = {
|
||||
type: "element",
|
||||
@@ -160,6 +161,9 @@ SelectWidget.prototype.execute = function() {
|
||||
if(this.selectSize) {
|
||||
$tw.utils.addAttributeToParseTreeNode(selectNode,"size",this.selectSize);
|
||||
}
|
||||
if(this.selectTooltip) {
|
||||
$tw.utils.addAttributeToParseTreeNode(selectNode,"title",this.selectTooltip);
|
||||
}
|
||||
this.makeChildWidgets([selectNode]);
|
||||
};
|
||||
|
||||
@@ -169,7 +173,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
|
||||
SelectWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
// If we're using a different tiddler/field/index then completely refresh ourselves
|
||||
if(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {
|
||||
if(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
// If the target tiddler value has changed, just update setting and refresh the children
|
||||
|
||||
@@ -22,15 +22,17 @@ Options include:
|
||||
document: optional document object to use instead of global document
|
||||
*/
|
||||
var Widget = function(parseTreeNode,options) {
|
||||
if(arguments.length > 0) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
}
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Initialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses
|
||||
*/
|
||||
Widget.prototype.initialise = function(parseTreeNode,options) {
|
||||
// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed
|
||||
if(parseTreeNode === undefined) {
|
||||
return;
|
||||
}
|
||||
options = options || {};
|
||||
// Save widget info
|
||||
this.parseTreeNode = parseTreeNode;
|
||||
@@ -46,7 +48,21 @@ Widget.prototype.initialise = function(parseTreeNode,options) {
|
||||
this.eventListeners = {};
|
||||
// Hashmap of the widget classes
|
||||
if(!this.widgetClasses) {
|
||||
// Get widget classes
|
||||
Widget.prototype.widgetClasses = $tw.modules.applyMethods("widget");
|
||||
// Process any subclasses
|
||||
$tw.modules.forEachModuleOfType("widget-subclass",function(title,module) {
|
||||
if(module.baseClass) {
|
||||
var baseClass = Widget.prototype.widgetClasses[module.baseClass];
|
||||
if(!baseClass) {
|
||||
throw "Module '" + title + "' is attemping to extend a non-existent base class '" + module.baseClass + "'";
|
||||
}
|
||||
var subClass = module.constructor;
|
||||
subClass.prototype = new baseClass();
|
||||
$tw.utils.extend(subClass.prototype,module.prototype);
|
||||
Widget.prototype.widgetClasses[module.name || module.baseClass] = subClass;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1119,6 +1119,8 @@ exports.search = function(text,options) {
|
||||
if(!searchTermsRegExps) {
|
||||
return true;
|
||||
}
|
||||
var notYetFound = searchTermsRegExps.slice();
|
||||
|
||||
var tiddler = self.getTiddler(title);
|
||||
if(!tiddler) {
|
||||
tiddler = new $tw.Tiddler({title: title, text: "", type: "text/vnd.tiddlywiki"});
|
||||
@@ -1137,50 +1139,40 @@ exports.search = function(text,options) {
|
||||
} else {
|
||||
searchFields = fields;
|
||||
}
|
||||
for(var fieldIndex=0; fieldIndex<searchFields.length; fieldIndex++) {
|
||||
for(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {
|
||||
// Don't search the text field if the content type is binary
|
||||
var fieldName = searchFields[fieldIndex];
|
||||
if(fieldName === "text" && contentTypeInfo.encoding !== "utf8") {
|
||||
break;
|
||||
}
|
||||
var matches = true,
|
||||
str = tiddler.fields[fieldName],
|
||||
var str = tiddler.fields[fieldName],
|
||||
t;
|
||||
if(str) {
|
||||
if($tw.utils.isArray(str)) {
|
||||
// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry
|
||||
for(t=0; t<searchTermsRegExps.length; t++) {
|
||||
var thisRegExpMatches = false
|
||||
for(var s=0; s<str.length; s++) {
|
||||
if(searchTermsRegExps[t].test(str[s])) {
|
||||
thisRegExpMatches = true;
|
||||
break;
|
||||
for(var s=0; s<str.length; s++) {
|
||||
for(t=0; t<notYetFound.length;) {
|
||||
if(notYetFound[t].test(str[s])) {
|
||||
notYetFound.splice(t, 1);
|
||||
} else {
|
||||
t++;
|
||||
}
|
||||
}
|
||||
// Bail if the current search expression doesn't match any entry in the current field array
|
||||
if(!thisRegExpMatches) {
|
||||
matches = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match
|
||||
str = tiddler.getFieldString(fieldName);
|
||||
for(t=0; t<searchTermsRegExps.length; t++) {
|
||||
if(!searchTermsRegExps[t].test(str)) {
|
||||
matches = false;
|
||||
break;
|
||||
for(t=0; t<notYetFound.length;) {
|
||||
if(notYetFound[t].test(str)) {
|
||||
notYetFound.splice(t, 1);
|
||||
} else {
|
||||
t++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
matches = false;
|
||||
}
|
||||
if(matches) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
return false;
|
||||
return notYetFound.length == 0;
|
||||
};
|
||||
// Loop through all the tiddlers doing the search
|
||||
var results = [],
|
||||
|
||||
120
core/palettes/Nord.tid
Normal file
120
core/palettes/Nord.tid
Normal file
@@ -0,0 +1,120 @@
|
||||
title: $:/palettes/Nord
|
||||
name: Nord
|
||||
description: An arctic, north-bluish color palette.
|
||||
tags: $:/tags/Palette
|
||||
type: application/x-tiddler-dictionary
|
||||
license: MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md
|
||||
|
||||
alert-background: #D08770
|
||||
alert-border: #D08770
|
||||
alert-highlight: #B48EAD
|
||||
alert-muted-foreground: #4C566A
|
||||
background: #3b4252
|
||||
blockquote-bar: <<colour muted-foreground>>
|
||||
button-background: #4C566A
|
||||
button-foreground: #D8DEE9
|
||||
button-border: transparent
|
||||
code-background: #2E3440
|
||||
code-border: #2E3440
|
||||
code-foreground: #BF616A
|
||||
diff-delete-background: #BF616A
|
||||
diff-delete-foreground: <<colour foreground>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: #A3BE8C
|
||||
diff-insert-foreground: <<colour foreground>>
|
||||
diff-invisible-background:
|
||||
diff-invisible-foreground: <<colour muted-foreground>>
|
||||
dirty-indicator: #BF616A
|
||||
download-background: #A3BE8C
|
||||
download-foreground: <<colour background>>
|
||||
dragger-background: <<colour foreground>>
|
||||
dragger-foreground: <<colour background>>
|
||||
dropdown-background: <<colour background>>
|
||||
dropdown-border: <<colour background>>
|
||||
dropdown-tab-background-selected: #ECEFF4
|
||||
dropdown-tab-background: #4C566A
|
||||
dropzone-background: #A3BE8C
|
||||
external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-background: inherit
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #5E81AC
|
||||
external-link-foreground: #8FBCBB
|
||||
foreground: #d8dee9
|
||||
message-background: #2E3440
|
||||
message-border: #2E3440
|
||||
message-foreground: #547599
|
||||
modal-backdrop: <<colour foreground>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: #3b4252
|
||||
modal-footer-background: #3b4252
|
||||
modal-footer-border: #3b4252
|
||||
modal-header-border: #3b4252
|
||||
muted-foreground: #4C566A
|
||||
notification-background: #D08770
|
||||
notification-border: #EBCB8B
|
||||
page-background: #2e3440
|
||||
pre-background: #2E3440
|
||||
pre-border: #2E3440
|
||||
primary: #5E81AC
|
||||
select-tag-background: #3b4252
|
||||
select-tag-foreground: <<colour foreground>>
|
||||
sidebar-button-foreground: <<colour foreground>>
|
||||
sidebar-controls-foreground-hover: #4C566A
|
||||
sidebar-controls-foreground: #3B4252
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-foreground: #D8DEE9
|
||||
sidebar-muted-foreground-hover: #4C566A
|
||||
sidebar-muted-foreground: #4C566A
|
||||
sidebar-tab-background-selected: #ECEFF4
|
||||
sidebar-tab-background: #4C566A
|
||||
sidebar-tab-border-selected: <<colour tab-border-selected>>
|
||||
sidebar-tab-border: #4C566A
|
||||
sidebar-tab-divider: <<colour page-background>>
|
||||
sidebar-tab-foreground-selected: #4C566A
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #A3BE8C
|
||||
sidebar-tiddler-link-foreground: #81A1C1
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #B48EAD
|
||||
tab-background-selected: #ECEFF4
|
||||
tab-background: #4C566A
|
||||
tab-border-selected: #4C566A
|
||||
tab-border: #4C566A
|
||||
tab-divider: #4C566A
|
||||
tab-foreground-selected: #4C566A
|
||||
tab-foreground: #D8DEE9
|
||||
table-border: #4C566A
|
||||
table-footer-background: #2e3440
|
||||
table-header-background: #2e3440
|
||||
tag-background: #A3BE8C
|
||||
tag-foreground: #4C566A
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: <<colour background>>
|
||||
tiddler-controls-foreground-hover:
|
||||
tiddler-controls-foreground-selected: #EBCB8B
|
||||
tiddler-controls-foreground: #4C566A
|
||||
tiddler-editor-background: #2e3440
|
||||
tiddler-editor-border-image: #2e3440
|
||||
tiddler-editor-border: #2e3440
|
||||
tiddler-editor-fields-even: #2e3440
|
||||
tiddler-editor-fields-odd: #2e3440
|
||||
tiddler-info-background: #2e3440
|
||||
tiddler-info-border: #2e3440
|
||||
tiddler-info-tab-background: #2e3440
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: #4C566A
|
||||
tiddler-title-foreground: #81A1C1
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button:
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: #2d3038
|
||||
very-muted-foreground: #2d3038
|
||||
120
core/palettes/SolarizedLight.tid
Normal file
120
core/palettes/SolarizedLight.tid
Normal file
@@ -0,0 +1,120 @@
|
||||
title: $:/palettes/SolarizedLight
|
||||
tags: $:/tags/Palette
|
||||
type: application/x-tiddler-dictionary
|
||||
description: Precision colors for machines and people
|
||||
license: MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE
|
||||
name: SolarizedLight
|
||||
|
||||
alert-background: #eee8d5
|
||||
alert-border: #073642
|
||||
alert-highlight: #cb4b16
|
||||
alert-muted-foreground: #586e75
|
||||
background: #fdf6e3
|
||||
blockquote-bar: <<colour muted-foreground>>
|
||||
button-background: #cb4b16
|
||||
button-foreground: #fdf6e3
|
||||
button-border: transparent
|
||||
code-background: #eee8d5
|
||||
code-border: #93a1a1
|
||||
code-foreground: #d33682
|
||||
diff-delete-background: #BF616A
|
||||
diff-delete-foreground: <<colour foreground>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: #859900
|
||||
diff-insert-foreground: <<colour foreground>>
|
||||
diff-invisible-background:
|
||||
diff-invisible-foreground: <<colour muted-foreground>>
|
||||
dirty-indicator: #D08770
|
||||
download-background: #859900
|
||||
download-foreground: <<colour background>>
|
||||
dragger-background: <<colour foreground>>
|
||||
dragger-foreground: <<colour background>>
|
||||
dropdown-background: <<colour background>>
|
||||
dropdown-border: <<colour background>>
|
||||
dropdown-tab-background-selected: #fdf6e3
|
||||
dropdown-tab-background: #93a1a1
|
||||
dropzone-background: #859900
|
||||
external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-background: inherit
|
||||
external-link-foreground-hover: #d33682
|
||||
external-link-foreground-visited: #b58900
|
||||
external-link-foreground: #cb4b16
|
||||
foreground: #839496
|
||||
message-background: #586e75
|
||||
message-border: #586e75
|
||||
message-foreground: #eee8d5
|
||||
modal-backdrop: <<colour foreground>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: #eee8d5
|
||||
modal-footer-background: #eee8d5
|
||||
modal-footer-border: #eee8d5
|
||||
modal-header-border: #eee8d5
|
||||
muted-foreground: #93a1a1
|
||||
notification-background: #EBCB8B
|
||||
notification-border: #D08770
|
||||
page-background: #eee8d5
|
||||
pre-background: #eee8d5
|
||||
pre-border: #93a1a1
|
||||
primary: #2aa198
|
||||
select-tag-background: #eee8d5
|
||||
select-tag-foreground: <<colour foreground>>
|
||||
sidebar-button-foreground: #eee8d5
|
||||
sidebar-controls-foreground-hover: #268bd2
|
||||
sidebar-controls-foreground: #586e75
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-foreground: #839496
|
||||
sidebar-muted-foreground-hover: #657b83
|
||||
sidebar-muted-foreground: #93a1a1
|
||||
sidebar-tab-background-selected: #eee8d5
|
||||
sidebar-tab-background: #839496
|
||||
sidebar-tab-border-selected: <<colour tab-border-selected>>
|
||||
sidebar-tab-border: #657b83
|
||||
sidebar-tab-divider: <<colour page-background>>
|
||||
sidebar-tab-foreground-selected: #839496
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #859900
|
||||
sidebar-tiddler-link-foreground: #268bd2
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #dc322f
|
||||
tab-background-selected: #fdf6e3
|
||||
tab-background: #839496
|
||||
tab-border-selected: #93a1a1
|
||||
tab-border: #93a1a1
|
||||
tab-divider: #fdf6e3
|
||||
tab-foreground-selected: #839496
|
||||
tab-foreground: #eee8d5
|
||||
table-border: #657b83
|
||||
table-footer-background: #657b83
|
||||
table-header-background: #93a1a1
|
||||
tag-background: #6c71c4
|
||||
tag-foreground: #eee8d5
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: <<colour background>>
|
||||
tiddler-controls-foreground-hover: #b58900
|
||||
tiddler-controls-foreground-selected: #b58900
|
||||
tiddler-controls-foreground: #073642
|
||||
tiddler-editor-background: #eee8d5
|
||||
tiddler-editor-border-image: #eee8d5
|
||||
tiddler-editor-border: #eee8d5
|
||||
tiddler-editor-fields-even: #eee8d5
|
||||
tiddler-editor-fields-odd: #fdf6e3
|
||||
tiddler-info-background: #eee8d5
|
||||
tiddler-info-border: #eee8d5
|
||||
tiddler-info-tab-background: #586e75
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: #586e75
|
||||
tiddler-title-foreground: #073642
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button:
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: #839496
|
||||
very-muted-foreground: #93a1a1
|
||||
111
core/palettes/SpartanDay.tid
Normal file
111
core/palettes/SpartanDay.tid
Normal file
@@ -0,0 +1,111 @@
|
||||
title: $:/palettes/SpartanDay
|
||||
tags: $:/tags/Palette
|
||||
type: application/x-tiddler-dictionary
|
||||
description: Cold, spartan day colors
|
||||
name: Spartan Day
|
||||
|
||||
alert-background: <<colour background>>
|
||||
alert-border: <<colour very-muted-foreground>>
|
||||
alert-highlight: <<colour very-muted-foreground>>
|
||||
alert-muted-foreground: <<colour muted-foreground>>
|
||||
background: #FAFAFA
|
||||
blockquote-bar: <<colour page-background>>
|
||||
button-background: transparent
|
||||
button-foreground: inherit
|
||||
button-border: <<colour tag-background>>
|
||||
code-background: #ececec
|
||||
code-border: #ececec
|
||||
code-foreground:
|
||||
dirty-indicator: #c80000
|
||||
download-background: <<colour primary>>
|
||||
download-foreground: <<colour background>>
|
||||
dragger-background: <<colour foreground>>
|
||||
dragger-foreground: <<colour background>>
|
||||
dropdown-background: #FFFFFF
|
||||
dropdown-border: <<colour dropdown-background>>
|
||||
dropdown-tab-background-selected: <<colour dropdown-background>>
|
||||
dropdown-tab-background: #F5F5F5
|
||||
dropzone-background: <<colour tag-background>>
|
||||
external-link-background-hover: transparent
|
||||
external-link-background-visited: transparent
|
||||
external-link-background: transparent
|
||||
external-link-foreground-hover:
|
||||
external-link-foreground-visited:
|
||||
external-link-foreground:
|
||||
foreground: rgba(0, 0, 0, 0.87)
|
||||
message-background: <<colour background>>
|
||||
message-border: <<colour very-muted-foreground>>
|
||||
message-foreground: rgba(0, 0, 0, 0.54)
|
||||
modal-backdrop: <<colour foreground>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: <<colour very-muted-foreground>>
|
||||
modal-footer-background: <<colour background>>
|
||||
modal-footer-border: <<colour very-muted-foreground>>
|
||||
modal-header-border: <<colour very-muted-foreground>>
|
||||
muted-foreground: rgba(0, 0, 0, 0.54)
|
||||
notification-background: <<colour dropdown-background>>
|
||||
notification-border: <<colour dropdown-background>>
|
||||
page-background: #f4f4f4
|
||||
pre-background: #ececec
|
||||
pre-border: #ececec
|
||||
primary: #3949ab
|
||||
select-tag-background: <<colour background>>
|
||||
select-tag-foreground: <<colour foreground>>
|
||||
sidebar-button-foreground: <<colour foreground>>
|
||||
sidebar-controls-foreground-hover: #aeaeae
|
||||
sidebar-controls-foreground: #c6c6c6
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-foreground: rgba(0, 0, 0, 0.54)
|
||||
sidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)
|
||||
sidebar-muted-foreground: rgba(0, 0, 0, 0.38)
|
||||
sidebar-tab-background-selected: <<colour page-background>>
|
||||
sidebar-tab-background: transparent
|
||||
sidebar-tab-border-selected: <<colour table-border>>
|
||||
sidebar-tab-border: transparent
|
||||
sidebar-tab-divider: <<colour table-border>>
|
||||
sidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)
|
||||
sidebar-tab-foreground: rgba(0, 0, 0, 0.54)
|
||||
sidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)
|
||||
sidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)
|
||||
site-title-foreground: rgba(0, 0, 0, 0.87)
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: <<colour background>>
|
||||
tab-background: transparent
|
||||
tab-border-selected: <<colour table-border>>
|
||||
tab-border: transparent
|
||||
tab-divider: <<colour table-border>>
|
||||
tab-foreground-selected: rgba(0, 0, 0, 0.87)
|
||||
tab-foreground: rgba(0, 0, 0, 0.54)
|
||||
table-border: #d8d8d8
|
||||
table-footer-background: <<colour tiddler-editor-fields-odd>>
|
||||
table-header-background: <<colour tiddler-editor-fields-even>>
|
||||
tag-background: #ec6
|
||||
tag-foreground: <<colour button-foreground>>
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: #f9f9f9
|
||||
tiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>
|
||||
tiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>
|
||||
tiddler-controls-foreground: <<colour sidebar-controls-foreground>>
|
||||
tiddler-editor-background: transparent
|
||||
tiddler-editor-border-image:
|
||||
tiddler-editor-border: #e8e7e7
|
||||
tiddler-editor-fields-even: rgba(0, 0, 0, 0.1)
|
||||
tiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)
|
||||
tiddler-info-background: #F5F5F5
|
||||
tiddler-info-border: #F5F5F5
|
||||
tiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: <<colour muted-foreground>>
|
||||
tiddler-title-foreground: #000000
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button:
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: <<colour very-muted-foreground>>
|
||||
very-muted-foreground: rgba(0, 0, 0, 0.12)
|
||||
111
core/palettes/SpartanNight.tid
Normal file
111
core/palettes/SpartanNight.tid
Normal file
@@ -0,0 +1,111 @@
|
||||
title: $:/palettes/SpartanNight
|
||||
tags: $:/tags/Palette
|
||||
type: application/x-tiddler-dictionary
|
||||
description: Dark spartan colors
|
||||
name: Spartan Night
|
||||
|
||||
alert-background: <<colour background>>
|
||||
alert-border: <<colour very-muted-foreground>>
|
||||
alert-highlight: <<colour very-muted-foreground>>
|
||||
alert-muted-foreground: <<colour muted-foreground>>
|
||||
background: #303030
|
||||
blockquote-bar: <<colour page-background>>
|
||||
button-background: transparent
|
||||
button-foreground: inherit
|
||||
button-border: <<colour tag-background>>
|
||||
code-background: <<colour pre-background>>
|
||||
code-border: <<colour pre-border>>
|
||||
code-foreground: rgba(255, 255, 255, 0.54)
|
||||
dirty-indicator: #c80000
|
||||
download-background: <<colour primary>>
|
||||
download-foreground: <<colour foreground>>
|
||||
dragger-background: <<colour foreground>>
|
||||
dragger-foreground: <<colour background>>
|
||||
dropdown-background: #424242
|
||||
dropdown-border: <<colour dropdown-background>>
|
||||
dropdown-tab-background-selected: <<colour dropdown-background>>
|
||||
dropdown-tab-background: #050505
|
||||
dropzone-background: <<colour tag-background>>
|
||||
external-link-background-hover: transparent
|
||||
external-link-background-visited: transparent
|
||||
external-link-background: transparent
|
||||
external-link-foreground-hover:
|
||||
external-link-foreground-visited: #7c318c
|
||||
external-link-foreground: #9e3eb3
|
||||
foreground: rgba(255, 255, 255, 0.7)
|
||||
message-background: <<colour background>>
|
||||
message-border: <<colour very-muted-foreground>>
|
||||
message-foreground: rgba(255, 255, 255, 0.54)
|
||||
modal-backdrop: <<colour page-background>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: <<colour very-muted-foreground>>
|
||||
modal-footer-background: <<colour background>>
|
||||
modal-footer-border: <<colour background>>
|
||||
modal-header-border: <<colour very-muted-foreground>>
|
||||
muted-foreground: rgba(255, 255, 255, 0.54)
|
||||
notification-background: <<colour dropdown-background>>
|
||||
notification-border: <<colour dropdown-background>>
|
||||
page-background: #212121
|
||||
pre-background: #2a2a2a
|
||||
pre-border: transparent
|
||||
primary: #5656f3
|
||||
select-tag-background: <<colour background>>
|
||||
select-tag-foreground: <<colour foreground>>
|
||||
sidebar-button-foreground: <<colour foreground>>
|
||||
sidebar-controls-foreground-hover: #494949
|
||||
sidebar-controls-foreground: #5d5d5d
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-foreground: rgba(255, 255, 255, 0.54)
|
||||
sidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)
|
||||
sidebar-muted-foreground: rgba(255, 255, 255, 0.38)
|
||||
sidebar-tab-background-selected: <<colour page-background>>
|
||||
sidebar-tab-background: transparent
|
||||
sidebar-tab-border-selected: <<colour table-border>>
|
||||
sidebar-tab-border: transparent
|
||||
sidebar-tab-divider: <<colour table-border>>
|
||||
sidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)
|
||||
sidebar-tab-foreground: rgba(255, 255, 255, 0.54)
|
||||
sidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)
|
||||
sidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)
|
||||
site-title-foreground: rgba(255, 255, 255, 0.7)
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: <<colour background>>
|
||||
tab-background: transparent
|
||||
tab-border-selected: <<colour table-border>>
|
||||
tab-border: transparent
|
||||
tab-divider: <<colour table-border>>
|
||||
tab-foreground-selected: rgba(255, 255, 255, 0.87)
|
||||
tab-foreground: rgba(255, 255, 255, 0.54)
|
||||
table-border: #3a3a3a
|
||||
table-footer-background: <<colour tiddler-editor-fields-odd>>
|
||||
table-header-background: <<colour tiddler-editor-fields-even>>
|
||||
tag-background: #ec6
|
||||
tag-foreground: <<colour button-foreground>>
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: rgb(55,55,55)
|
||||
tiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>
|
||||
tiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>
|
||||
tiddler-controls-foreground: <<colour sidebar-controls-foreground>>
|
||||
tiddler-editor-background: transparent
|
||||
tiddler-editor-border-image:
|
||||
tiddler-editor-border: rgba(255, 255, 255, 0.08)
|
||||
tiddler-editor-fields-even: rgba(255, 255, 255, 0.1)
|
||||
tiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)
|
||||
tiddler-info-background: #454545
|
||||
tiddler-info-border: #454545
|
||||
tiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: <<colour muted-foreground>>
|
||||
tiddler-title-foreground: #FFFFFF
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button:
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: <<colour very-muted-foreground>>
|
||||
very-muted-foreground: rgba(255, 255, 255, 0.12)
|
||||
120
core/palettes/Twilight.tid
Normal file
120
core/palettes/Twilight.tid
Normal file
@@ -0,0 +1,120 @@
|
||||
title: $:/palettes/Twilight
|
||||
tags: $:/tags/Palette
|
||||
author: Thomas Elmiger
|
||||
type: application/x-tiddler-dictionary
|
||||
name: Twilight
|
||||
description: Delightful, soft darkness.
|
||||
|
||||
alert-background: rgb(255, 255, 102)
|
||||
alert-border: rgb(232, 232, 125)
|
||||
alert-highlight: rgb(255, 51, 51)
|
||||
alert-muted-foreground: rgb(224, 82, 82)
|
||||
background: rgb(38, 38, 38)
|
||||
blockquote-bar: rgba(240, 196, 117, 0.7)
|
||||
button-background: rgb(63, 63, 63)
|
||||
button-border: rgb(127, 127, 127)
|
||||
button-foreground: rgb(179, 179, 179)
|
||||
code-background: rgba(0,0,0,0.03)
|
||||
code-border: rgba(0,0,0,0.08)
|
||||
code-foreground: rgb(255, 94, 94)
|
||||
diff-delete-background: #ffc9c9
|
||||
diff-delete-foreground: <<colour foreground>>
|
||||
diff-equal-background:
|
||||
diff-equal-foreground: <<colour foreground>>
|
||||
diff-insert-background: #aaefad
|
||||
diff-insert-foreground: <<colour foreground>>
|
||||
diff-invisible-background:
|
||||
diff-invisible-foreground: <<colour muted-foreground>>
|
||||
dirty-indicator: rgb(255, 94, 94)
|
||||
download-background: #19a974
|
||||
download-foreground: rgb(38, 38, 38)
|
||||
dragger-background: rgb(179, 179, 179)
|
||||
dragger-foreground: rgb(38, 38, 38)
|
||||
dropdown-background: rgb(38, 38, 38)
|
||||
dropdown-border: rgb(255, 255, 255)
|
||||
dropdown-tab-background: rgba(0,0,0,.1)
|
||||
dropdown-tab-background-selected: rgba(255,255,255,1)
|
||||
dropzone-background: #9eebcf
|
||||
external-link-background: inherit
|
||||
external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-foreground: rgb(179, 179, 255)
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: rgb(153, 153, 255)
|
||||
foreground: rgb(179, 179, 179)
|
||||
message-background: <<colour tag-foreground>>
|
||||
message-border: #96ccff
|
||||
message-foreground: <<colour tag-background>>
|
||||
modal-backdrop: rgb(179, 179, 179)
|
||||
modal-background: rgb(38, 38, 38)
|
||||
modal-border: rgba(0,0,0,.5)
|
||||
modal-footer-background: #f4f4f4
|
||||
modal-footer-border: rgba(0,0,0,.1)
|
||||
modal-header-border: rgba(0,0,0,.2)
|
||||
muted-foreground: rgb(255, 255, 255)
|
||||
notification-background: <<colour tag-foreground>>
|
||||
notification-border: <<colour tag-background>>
|
||||
page-background: rgb(26, 26, 26)
|
||||
pre-background: rgb(25, 25, 25)
|
||||
pre-border: rgba(0,0,0,.2)
|
||||
primary: rgb(255, 201, 102)
|
||||
select-tag-background:
|
||||
select-tag-foreground:
|
||||
sidebar-button-foreground: rgb(179, 179, 179)
|
||||
sidebar-controls-foreground: rgb(153, 153, 153)
|
||||
sidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>
|
||||
sidebar-foreground: rgb(141, 141, 141)
|
||||
sidebar-foreground-shadow: transparent
|
||||
sidebar-muted-foreground: rgba(0, 0, 0, 0.5)
|
||||
sidebar-muted-foreground-hover: rgb(141, 141, 141)
|
||||
sidebar-tab-background: rgba(141, 141, 141, 0.2)
|
||||
sidebar-tab-background-selected: rgb(26, 26, 26)
|
||||
sidebar-tab-border: rgb(127, 127, 127)
|
||||
sidebar-tab-border-selected: rgb(127, 127, 127)
|
||||
sidebar-tab-divider: rgb(127, 127, 127)
|
||||
sidebar-tab-foreground: rgb(179, 179, 179)
|
||||
sidebar-tab-foreground-selected: rgb(179, 179, 179)
|
||||
sidebar-tiddler-link-foreground: rgb(179, 179, 179)
|
||||
sidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)
|
||||
site-title-foreground: rgb(255, 201, 102)
|
||||
static-alert-foreground: rgba(0,0,0,.3)
|
||||
tab-background: rgba(0,0,0,0.125)
|
||||
tab-background-selected: rgb(38, 38, 38)
|
||||
tab-border: rgb(255, 201, 102)
|
||||
tab-border-selected: rgb(255, 201, 102)
|
||||
tab-divider: rgb(255, 201, 102)
|
||||
tab-foreground: rgb(179, 179, 179)
|
||||
tab-foreground-selected: rgb(179, 179, 179)
|
||||
table-border: rgba(255,255,255,.3)
|
||||
table-footer-background: rgba(0,0,0,.4)
|
||||
table-header-background: rgba(0,0,0,.1)
|
||||
tag-background: rgb(255, 201, 102)
|
||||
tag-foreground: rgb(25, 25, 25)
|
||||
tiddler-background: rgb(38, 38, 38)
|
||||
tiddler-border: rgba(240, 196, 117, 0.7)
|
||||
tiddler-controls-foreground: rgb(128, 128, 128)
|
||||
tiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)
|
||||
tiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)
|
||||
tiddler-editor-background: rgb(33, 33, 33)
|
||||
tiddler-editor-border: rgb(63, 63, 63)
|
||||
tiddler-editor-border-image: rgb(25, 25, 25)
|
||||
tiddler-editor-fields-even: rgb(33, 33, 33)
|
||||
tiddler-editor-fields-odd: rgb(28, 28, 28)
|
||||
tiddler-info-background: rgb(43, 43, 43)
|
||||
tiddler-info-border: rgb(25, 25, 25)
|
||||
tiddler-info-tab-background: rgb(43, 43, 43)
|
||||
tiddler-link-background: rgb(38, 38, 38)
|
||||
tiddler-link-foreground: rgb(204, 204, 255)
|
||||
tiddler-subtitle-foreground: rgb(255, 255, 255)
|
||||
tiddler-title-foreground: rgb(255, 192, 76)
|
||||
toolbar-cancel-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button:
|
||||
toolbar-done-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-info-button:
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
untagged-background: rgb(255, 255, 255)
|
||||
very-muted-foreground: rgba(240, 196, 117, 0.7)
|
||||
@@ -4,8 +4,10 @@ title: $:/core/templates/tiddlywiki5-external-js.html
|
||||
<!doctype html>
|
||||
{{$:/core/templates/MOTW.html}}<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<!--~~ Raw markup for the top of the head section ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
||||
<meta name="application-name" content="TiddlyWiki" />
|
||||
<meta name="generator" content="TiddlyWiki" />
|
||||
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
||||
@@ -24,6 +26,8 @@ title: $:/core/templates/tiddlywiki5-external-js.html
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
</head>
|
||||
<body class="tc-body">
|
||||
<!--~~ Raw markup for the top of the body section ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
<!--~~ Static styles ~~-->
|
||||
<div id="styleArea">
|
||||
{{$:/boot/boot.css||$:/core/templates/css-tiddler}}
|
||||
@@ -36,6 +40,8 @@ title: $:/core/templates/tiddlywiki5-external-js.html
|
||||
</noscript>
|
||||
<!--~~ Ordinary tiddlers ~~-->
|
||||
{{$:/core/templates/store.area.template.html}}
|
||||
<!--~~ Raw markup for the bottom of the body section ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
</body>
|
||||
<script src="%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js" onerror="alert('Error: Cannot load tiddlywiki.js');"></script>
|
||||
</html>
|
||||
|
||||
@@ -1,58 +1,59 @@
|
||||
title: $:/core/templates/tiddlywiki5.html
|
||||
|
||||
\rules only filteredtranscludeinline transcludeinline
|
||||
<!doctype html>
|
||||
{{$:/core/templates/MOTW.html}}<html>
|
||||
<$set name="saveTiddlerAndShadowsFilter" filter="[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]">
|
||||
`<!doctype html>
|
||||
`{{$:/core/templates/MOTW.html}}`<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<!--~~ Raw markup for the top of the head section ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
||||
<meta name="application-name" content="TiddlyWiki" />
|
||||
<meta name="generator" content="TiddlyWiki" />
|
||||
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
||||
<meta name="tiddlywiki-version" content="`{{$:/core/templates/version}}`" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="mobile-web-app-capable" content="yes"/>
|
||||
<meta name="format-detection" content="telephone=no" />
|
||||
<meta name="copyright" content="{{$:/core/copyright.txt}}" />
|
||||
<meta name="copyright" content="`{{$:/core/copyright.txt}}`" />
|
||||
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
||||
<title>{{$:/core/wiki/title}}</title>
|
||||
<title>`{{$:/core/wiki/title}}`</title>
|
||||
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
|
||||
|
||||
<!--~~ Raw markup ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}
|
||||
{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}
|
||||
{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`
|
||||
</head>
|
||||
<body class="tc-body">
|
||||
<!--~~ Raw markup for the top of the body section ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`
|
||||
<!--~~ Static styles ~~-->
|
||||
<div id="styleArea">
|
||||
{{$:/boot/boot.css||$:/core/templates/css-tiddler}}
|
||||
`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`
|
||||
</div>
|
||||
<!--~~ Static content for Google and browsers without JavaScript ~~-->
|
||||
<noscript>
|
||||
<div id="splashArea">
|
||||
{{$:/core/templates/static.area}}
|
||||
`{{$:/core/templates/static.area}}`
|
||||
</div>
|
||||
</noscript>
|
||||
<!--~~ Ordinary tiddlers ~~-->
|
||||
{{$:/core/templates/store.area.template.html}}
|
||||
`{{$:/core/templates/store.area.template.html}}`
|
||||
<!--~~ Library modules ~~-->
|
||||
<div id="libraryModules" style="display:none;">
|
||||
{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}
|
||||
`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`
|
||||
</div>
|
||||
<!--~~ Boot kernel prologue ~~-->
|
||||
<div id="bootKernelPrefix" style="display:none;">
|
||||
{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}
|
||||
`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`
|
||||
</div>
|
||||
<!--~~ Boot kernel ~~-->
|
||||
<div id="bootKernel" style="display:none;">
|
||||
{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}
|
||||
`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`
|
||||
</div>
|
||||
<!--~~ Raw markup for the bottom of the body section ~~-->
|
||||
{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}
|
||||
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`
|
||||
</body>
|
||||
</html>
|
||||
</html>`
|
||||
|
||||
@@ -6,7 +6,7 @@ caption: {{$:/language/Search/Filter/Caption}}
|
||||
<<lingo Filter/Hint>>
|
||||
|
||||
<div class="tc-search tc-advanced-search">
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input" focus={{$:/config/Search/AutoFocus}}/>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]"><$transclude/></$list>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ caption: {{$:/language/Search/Shadows/Caption}}
|
||||
<<lingo Shadows/Hint>>
|
||||
|
||||
<div class="tc-search">
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input" focus={{$:/config/Search/AutoFocus}}/>
|
||||
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
|
||||
<$button class="tc-btn-invisible">
|
||||
<$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/>
|
||||
|
||||
@@ -8,7 +8,7 @@ caption: {{$:/language/Search/Standard/Caption}}
|
||||
<<lingo Standard/Hint>>
|
||||
|
||||
<div class="tc-search">
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input" focus={{$:/config/Search/AutoFocus}}/>
|
||||
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
|
||||
<$button class="tc-btn-invisible">
|
||||
<$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/>
|
||||
|
||||
@@ -8,7 +8,7 @@ caption: {{$:/language/Search/System/Caption}}
|
||||
<<lingo System/Hint>>
|
||||
|
||||
<div class="tc-search">
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
|
||||
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input" focus={{$:/config/Search/AutoFocus}}/>
|
||||
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
|
||||
<$button class="tc-btn-invisible">
|
||||
<$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/>
|
||||
|
||||
@@ -6,7 +6,7 @@ caption: {{$:/language/ControlPanel/KeyboardShortcuts/Caption}}
|
||||
|
||||
\define new-shortcut(title)
|
||||
<div class="tc-dropdown-item-plain">
|
||||
<$edit-shortcut tiddler="$title$" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} style="width:auto;"/> <$button>
|
||||
<$edit-shortcut tiddler="$title$" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus="true" style="width:auto;"/> <$button>
|
||||
<<lingo Add/Caption>>
|
||||
<$action-listops
|
||||
$tiddler="$(shortcutTitle)$"
|
||||
|
||||
@@ -76,7 +76,7 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
|
||||
</$button>
|
||||
</$reveal>
|
||||
<div class="tc-plugin-library-listing">
|
||||
<$list filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]" variable="assetInfo">
|
||||
<$list filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]" variable="assetInfo">
|
||||
<<display-plugin-info "$type$">>
|
||||
</$list>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@ title: $:/core/ui/EditTemplate/body/editor
|
||||
field="text"
|
||||
class="tc-edit-texteditor"
|
||||
placeholder={{$:/language/EditTemplate/Body/Placeholder}}
|
||||
tabindex={{$:/config/EditTabIndex}}
|
||||
|
||||
><$set
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ $:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$
|
||||
|
||||
<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>
|
||||
|
||||
<$edit-text field="_canonical_uri" class="tc-edit-fields"></$edit-text>
|
||||
<$edit-text field="_canonical_uri" class="tc-edit-fields" tabindex={{$:/config/EditTabIndex}}></$edit-text>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
<td class="tc-edit-field-name">
|
||||
<$text text=<<currentField>>/>:</td>
|
||||
<td class="tc-edit-field-value">
|
||||
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>
|
||||
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>
|
||||
</td>
|
||||
<td class="tc-edit-field-remove">
|
||||
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
|
||||
@@ -60,7 +60,7 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
<<lingo Fields/Add/Prompt>>
|
||||
</em>
|
||||
<span class="tc-edit-field-add-name">
|
||||
<$edit-text tiddler="$:/temp/newfieldname" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle"/>
|
||||
<$edit-text tiddler="$:/temp/newfieldname" 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}}/>
|
||||
</span>
|
||||
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown" 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="">
|
||||
@@ -88,7 +88,7 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
</div>
|
||||
</$reveal>
|
||||
<span class="tc-edit-field-add-value">
|
||||
<$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor"/>
|
||||
<$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}}/>
|
||||
</span>
|
||||
<span class="tc-edit-field-add-button">
|
||||
<$macrocall $name="new-field"/>
|
||||
|
||||
@@ -39,5 +39,7 @@ color:$(foregroundColor)$;
|
||||
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>
|
||||
</$list>
|
||||
</$fieldmangler>
|
||||
<$set name="tabIndex" value={{$:/config/EditTabIndex}}>
|
||||
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
|
||||
</$set>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
title: $:/core/ui/EditTemplate/title
|
||||
tags: $:/tags/EditTemplate
|
||||
|
||||
<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus="true"/>
|
||||
<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus="true" tabindex={{$:/config/EditTabIndex}}/>
|
||||
|
||||
<$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`""">
|
||||
|
||||
@@ -35,6 +35,8 @@ tags: $:/tags/EditTemplate
|
||||
|
||||
<$checkbox tiddler="$:/config/RelinkOnRename" field="text" checked="yes" unchecked="no" default="no"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>
|
||||
|
||||
<$list filter="[title<fromTitle>backlinks[]limit[1]]" variable="listItem">
|
||||
|
||||
<$vars stateTiddler=<<qualify "$:/state/edit/references">> >
|
||||
|
||||
<$reveal type="nomatch" state=<<stateTiddler>> text="show">
|
||||
@@ -54,6 +56,8 @@ tags: $:/tags/EditTemplate
|
||||
|
||||
</$vars>
|
||||
|
||||
</$list>
|
||||
|
||||
</$vars>
|
||||
|
||||
</$list>
|
||||
|
||||
@@ -3,7 +3,7 @@ tags: $:/tags/EditTemplate
|
||||
|
||||
\define lingo-base() $:/language/EditTemplate/
|
||||
<div class="tc-type-selector"><$fieldmangler>
|
||||
<em class="tc-edit"><<lingo Type/Prompt>></em> <$edit-text field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-popup-handle"/> <$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown" 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}}</$button>
|
||||
<em class="tc-edit"><<lingo Type/Prompt>></em> <$edit-text field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}/> <$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown" 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}}</$button>
|
||||
</$fieldmangler></div>
|
||||
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
|
||||
5
core/ui/Filters/SessionTiddlers.tid
Normal file
5
core/ui/Filters/SessionTiddlers.tid
Normal file
@@ -0,0 +1,5 @@
|
||||
title: $:/core/Filters/SessionTiddlers
|
||||
tags: $:/tags/Filter
|
||||
filter: [haschanged[]]
|
||||
description: {{$:/language/Filters/SessionTiddlers}}
|
||||
|
||||
@@ -4,7 +4,7 @@ caption: {{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}
|
||||
description: {{$:/language/Buttons/SaveWiki/Hint}}
|
||||
|
||||
<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
|
||||
<$wikify name="site-title" text="{{$:/SiteTitle}}.html">
|
||||
<$wikify name="site-title" text={{$:/config/SaveWikiButton/Filename}}>
|
||||
<$action-sendmessage $message="tm-save-wiki" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>
|
||||
</$wikify>
|
||||
<span class="tc-dirty-indicator">
|
||||
|
||||
@@ -9,23 +9,29 @@ caption: {{$:/language/SideBar/Open/Caption}}
|
||||
<$action-listops $tiddler="$:/StoryList" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
|
||||
\end
|
||||
|
||||
<$list filter="[list[$:/StoryList]]" history="$:/HistoryList" storyview="pop">
|
||||
<div style="position: relative;">
|
||||
\define placeholder()
|
||||
<div class="tc-droppable-placeholder"/>
|
||||
\end
|
||||
|
||||
\define droppable-item(button)
|
||||
\whitespace trim
|
||||
<$droppable actions=<<drop-actions>>>
|
||||
<div class="tc-droppable-placeholder">
|
||||
|
||||
</div>
|
||||
<<placeholder>>
|
||||
<div>
|
||||
<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/></$link>
|
||||
$button$
|
||||
</div>
|
||||
</$droppable>
|
||||
\end
|
||||
|
||||
<div class="tc-sidebar-tab-open">
|
||||
<$list filter="[list[$:/StoryList]]" history="$:/HistoryList" storyview="pop">
|
||||
<div class="tc-sidebar-tab-open-item">
|
||||
<$macrocall $name="droppable-item" button="""<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini">{{$:/core/images/close-button}}</$button> <$link to={{!!title}}><$view field="title"/></$link>"""/>
|
||||
</div>
|
||||
</$list>
|
||||
<$tiddler tiddler="">
|
||||
<$droppable actions=<<drop-actions>>>
|
||||
<div class="tc-droppable-placeholder">
|
||||
|
||||
<div>
|
||||
<$macrocall $name="droppable-item" button="""<$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button>"""/>
|
||||
</div>
|
||||
<$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button>
|
||||
</$droppable>
|
||||
</$tiddler>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
title: $:/TagManager
|
||||
icon: $:/core/images/tag-button
|
||||
color: #bbb
|
||||
caption: {{$:/language/TagManager/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TagManager/
|
||||
\define iconEditorTab(type)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: https://tiddlywiki.com/library/v5.1.18/index.html
|
||||
url: https://tiddlywiki.com/library/v5.1.19/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}}
|
||||
|
||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||
|
||||
@@ -20,13 +20,13 @@ tags: $:/tags/Macro
|
||||
\end
|
||||
|
||||
\define list-links-draggable(tiddler,field:"list",type:"ul",subtype:"li",class:"",itemTemplate)
|
||||
\whitespace trim
|
||||
<span class="tc-links-draggable-list">
|
||||
<$vars targetTiddler="""$tiddler$""" targetField="""$field$""">
|
||||
<$type$ class="$class$">
|
||||
<$list filter="[list[$tiddler$!!$field$]]">
|
||||
<$droppable actions=<<list-links-draggable-drop-actions>> tag="""$subtype$""">
|
||||
<div class="tc-droppable-placeholder">
|
||||
|
||||
</div>
|
||||
<div class="tc-droppable-placeholder"/>
|
||||
<div>
|
||||
<$transclude tiddler="""$itemTemplate$""">
|
||||
<$link to={{!!title}}>
|
||||
@@ -48,6 +48,7 @@ tags: $:/tags/Macro
|
||||
</$droppable>
|
||||
</$tiddler>
|
||||
</$vars>
|
||||
</span>
|
||||
\end
|
||||
|
||||
\define list-tagged-draggable-drop-actions(tag)
|
||||
@@ -73,13 +74,13 @@ tags: $:/tags/Macro
|
||||
\end
|
||||
|
||||
\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:"div")
|
||||
\whitespace trim
|
||||
<span class="tc-tagged-draggable-list">
|
||||
<$set name="tag" value=<<__tag__>>>
|
||||
<$list filter="[<__tag__>tagging[]$subFilter$]" emptyMessage=<<__emptyMessage__>>>
|
||||
<$elementTag$ class="tc-menu-list-item">
|
||||
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""">
|
||||
<$elementTag$ class="tc-droppable-placeholder">
|
||||
|
||||
</$elementTag$>
|
||||
<$elementTag$ class="tc-droppable-placeholder"/>
|
||||
<$elementTag$>
|
||||
<$transclude tiddler="""$itemTemplate$""">
|
||||
<$link to={{!!title}}>
|
||||
@@ -92,12 +93,11 @@ tags: $:/tags/Macro
|
||||
</$list>
|
||||
<$tiddler tiddler="">
|
||||
<$droppable actions="""<$macrocall $name="list-tagged-draggable-drop-actions" tag=<<__tag__>>/>""">
|
||||
<$elementTag$ class="tc-droppable-placeholder">
|
||||
|
||||
</$elementTag$>
|
||||
<$elementTag$ class="tc-droppable-placeholder"/>
|
||||
<$elementTag$ style="height:0.5em;">
|
||||
</$elementTag$>
|
||||
</$droppable>
|
||||
</$tiddler>
|
||||
</$set>
|
||||
</span>
|
||||
\end
|
||||
|
||||
@@ -24,7 +24,7 @@ $(actions)$
|
||||
<div class="tc-edit-add-tag">
|
||||
<span class="tc-add-tag-name">
|
||||
<$keyboard key="ENTER" actions=<<add-tag-actions>>>
|
||||
<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle"/>
|
||||
<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>>/>
|
||||
</$keyboard>
|
||||
</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button">
|
||||
<$set name="tag" value={{$:/temp/NewTagName}}>
|
||||
|
||||
@@ -12,14 +12,16 @@ tags: $:/tags/Macro
|
||||
\define toc-body(tag,sort:"",itemClassFilter,exclude,path)
|
||||
<ol class="tc-toc">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
|
||||
<$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}} excluded="""[enlist<__exclude__>] -[<__tag__>]""">
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected">
|
||||
<li class=<<toc-item-class>>>
|
||||
<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link><$view field='caption'><$view field='title'/></$view></$link>">
|
||||
<<toc-caption>>
|
||||
</$list>
|
||||
<$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
|
||||
</li>
|
||||
<$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected">
|
||||
<li class=<<toc-item-class>>>
|
||||
<$list filter="[all[current]toc-link[no]]" emptyMessage="<$link><$view field='caption'><$view field='title'/></$view></$link>">
|
||||
<<toc-caption>>
|
||||
</$list>
|
||||
<$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
|
||||
</li>
|
||||
</$set>
|
||||
</$set>
|
||||
</$vars>
|
||||
</$list>
|
||||
@@ -30,7 +32,7 @@ tags: $:/tags/Macro
|
||||
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />
|
||||
\end
|
||||
|
||||
\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
|
||||
\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,path)
|
||||
<!-- helper function -->
|
||||
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected">
|
||||
@@ -49,14 +51,14 @@ tags: $:/tags/Macro
|
||||
<<toc-caption>>
|
||||
</$link>
|
||||
<$reveal type="match" stateTitle=<<toc-state>> text="open">
|
||||
<$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
|
||||
<$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path=<<__path__>>/>
|
||||
</$reveal>
|
||||
</li>
|
||||
</$set>
|
||||
</$qualify>
|
||||
\end
|
||||
|
||||
\define toc-unlinked-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path)
|
||||
\define toc-unlinked-expandable-body(tag,sort:"",itemClassFilter:" ",path)
|
||||
<!-- helper function -->
|
||||
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected">
|
||||
@@ -74,7 +76,7 @@ tags: $:/tags/Macro
|
||||
</$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" stateTitle=<<toc-state>> text="open">
|
||||
<$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
|
||||
<$macrocall $name="toc-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path=<<__path__>>/>
|
||||
</$reveal>
|
||||
</li>
|
||||
</$set>
|
||||
@@ -82,22 +84,22 @@ tags: $:/tags/Macro
|
||||
\end
|
||||
|
||||
\define toc-expandable-empty-message()
|
||||
<$macrocall $name="toc-linked-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>
|
||||
<$macrocall $name="toc-linked-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> path=<<path>>/>
|
||||
\end
|
||||
|
||||
\define toc-expandable(tag,sort:"",itemClassFilter:" ",exclude,path)
|
||||
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> excluded="""[enlist<__exclude__>] -[<__tag__>]""" path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
\define toc-expandable(tag,sort:"",itemClassFilter:" ",path)
|
||||
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<ol class="tc-toc toc-expandable">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>]""">
|
||||
<$list filter="[all[current]toc-link[no]]" emptyMessage=<<toc-expandable-empty-message>> >
|
||||
<$macrocall $name="toc-unlinked-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="""itemClassFilter""" exclude=<<excluded>> path=<<path>> />
|
||||
<$macrocall $name="toc-unlinked-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="""itemClassFilter""" path=<<path>> />
|
||||
</$list>
|
||||
</$list>
|
||||
</ol>
|
||||
</$vars>
|
||||
\end
|
||||
|
||||
\define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path)
|
||||
\define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",path)
|
||||
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected" >
|
||||
<li class=<<toc-item-class>>>
|
||||
@@ -117,14 +119,14 @@ tags: $:/tags/Macro
|
||||
<<toc-caption>>
|
||||
</$link>
|
||||
<$reveal type="match" stateTitle=<<toc-state>> text="open">
|
||||
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
|
||||
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path=<<__path__>>/>
|
||||
</$reveal>
|
||||
</li>
|
||||
</$set>
|
||||
</$qualify>
|
||||
\end
|
||||
|
||||
\define toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",exclude,path)
|
||||
\define toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter:" ",path)
|
||||
<$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>
|
||||
<$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item" value="toc-item-selected">
|
||||
<li class=<<toc-item-class>>>
|
||||
@@ -143,7 +145,7 @@ tags: $:/tags/Macro
|
||||
</$reveal>
|
||||
</$list>
|
||||
<$reveal type="match" stateTitle=<<toc-state>> text="open">
|
||||
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
|
||||
<$macrocall $name="toc-selective-expandable" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path=<<__path__>>/>
|
||||
</$reveal>
|
||||
</li>
|
||||
</$set>
|
||||
@@ -151,15 +153,15 @@ tags: $:/tags/Macro
|
||||
\end
|
||||
|
||||
\define toc-selective-expandable-empty-message()
|
||||
<$macrocall $name="toc-linked-selective-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>
|
||||
<$macrocall $name="toc-linked-selective-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> path=<<path>>/>
|
||||
\end
|
||||
|
||||
\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path)
|
||||
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> excluded="""[enlist<__exclude__>] -[<__tag__>]""" path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
\define toc-selective-expandable(tag,sort:"",itemClassFilter,path)
|
||||
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<ol class="tc-toc toc-selective-expandable">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>]""">
|
||||
<$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<<toc-selective-expandable-empty-message>> >
|
||||
<$macrocall $name="toc-unlinked-selective-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>
|
||||
<$macrocall $name="toc-unlinked-selective-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path=<<path>>/>
|
||||
</$list>
|
||||
</$list>
|
||||
</ol>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
title: $:/snippets/paletteswitcher
|
||||
|
||||
<$linkcatcher to="$:/palette">
|
||||
<div class="tc-chooser"><$list filter="[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]"><$set name="cls" filter="[all[current]prefix{$:/palette}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item"><div class=<<cls>>><$link to={{!!title}}>''<$view field="name" format="text"/>'' - <$view field="description" format="text"/>{{||$:/snippets/currpalettepreview}}</$link>
|
||||
<div class="tc-chooser"><$list filter="[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]"><$set name="cls" filter="[all[current]prefix{$:/palette}]" value="tc-chooser-item tc-chosen" emptyValue="tc-chooser-item"><div class=<<cls>>><$link to={{!!title}}>''<$view field="name" format="text"/>'' - <$view field="description" format="text"/>{{||$:/snippets/currpalettepreview}}</$link>
|
||||
</div></$set>
|
||||
</$list>
|
||||
</div>
|
||||
</$linkcatcher>
|
||||
</$linkcatcher>
|
||||
|
||||
8
editions/dev/tiddlers/Continuous Deployment.tid
Normal file
8
editions/dev/tiddlers/Continuous Deployment.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
created: 20190115173727727
|
||||
modified: 20190115173903645
|
||||
title: Continuous Deployment
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
TiddlyWiki 5 uses [[Travis CI|https://travis-ci.org/]] for continuous deployment. It is driven by the `.travis.yml` file in the root of the repo, along with the scripts in the `bin` folder that it invokes.
|
||||
|
||||
The build history can be seen at https://travis-ci.org/Jermolene/TiddlyWiki5
|
||||
11
editions/dev/tiddlers/GitHub Branches.tid
Normal file
11
editions/dev/tiddlers/GitHub Branches.tid
Normal file
@@ -0,0 +1,11 @@
|
||||
created: 20190115173458112
|
||||
modified: 20190115173645658
|
||||
title: GitHub Branches
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Development of TiddlyWiki 5 in the GitHub repo at https://github.com/Jermolene/TiddlyWiki5 uses two branches:
|
||||
|
||||
* `master` contains the latest version of the code, and is deployed to https://tiddlywiki.com/prerelease
|
||||
* `tiddlywiki-com` contains the latest version of the documentation, and is deployed to https://tiddlywiki.com/, built by the latest released version of TiddlyWiki
|
||||
|
||||
When preparing pull requests it is important to target the correct branch.
|
||||
@@ -1,10 +1,18 @@
|
||||
modified: 20141122200310516
|
||||
created: 20190115173333457
|
||||
modified: 20190115173723915
|
||||
tags: TableOfContents
|
||||
title: HelloThere
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Welcome to the developer documentation for TiddlyWiki (https://tiddlywiki.com/). It is currently a work in progress as material from two different sources is adapted and merged in addition to original content being added:
|
||||
|
||||
* An assignment by Christian Jurke and Christian Heigele, two students working on their Master's degree in Information Technology at the Gießen University of Applied Sciences (Technische Hochschule Mittelhessen). Their work can be seen in the [[Introduction]] and the tiddlers that link from it.
|
||||
* New developer documentation
|
||||
** [[Continuous Deployment]]
|
||||
** [[GitHub Branches]]
|
||||
** HookMechanism
|
||||
** [[Using ES2016 for Writing Plugins]]
|
||||
** [[Adding Babel Polyfill to TiddlyWiki]]
|
||||
* The original developer documentation from https://tiddlywiki.com:
|
||||
** [[TiddlyWiki for Developers]]
|
||||
** [[TiddlyWiki Coding Style Guidelines]]
|
||||
@@ -21,6 +29,4 @@ Welcome to the developer documentation for TiddlyWiki (https://tiddlywiki.com/).
|
||||
** [[Scripts for building tiddlywiki.com]]
|
||||
** SyncAdaptorModules
|
||||
** WidgetModules
|
||||
** WikiRuleModules
|
||||
*Original developer documentation
|
||||
** HookMechanism
|
||||
** WikiRuleModules
|
||||
15
editions/dev/tiddlers/new/Hook_ th-page-refreshing.tid
Normal file
15
editions/dev/tiddlers/new/Hook_ th-page-refreshing.tid
Normal file
@@ -0,0 +1,15 @@
|
||||
created: 20190111150102847
|
||||
modified: 20190111150102847
|
||||
tags: HookMechanism
|
||||
title: Hook: th-page-refreshing
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
This hook notifies plugins that a page refresh is just about to occur. It is typically used to apply pre-rendering effects.
|
||||
|
||||
Hook function parameters:
|
||||
|
||||
* (none)
|
||||
|
||||
Return value:
|
||||
|
||||
* (none)
|
||||
54
editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid
Normal file
54
editions/dev/tiddlers/new/WidgetSubclassingMechanism.tid
Normal file
@@ -0,0 +1,54 @@
|
||||
created: 20190317121937335
|
||||
modified: 20190317121937335
|
||||
title: WidgetSubclassingMechanism
|
||||
|
||||
!! Introduction
|
||||
|
||||
The widget subclassing mechanism allows widgets to be subclassed with additional methods and properties. The subclassed widgets can either overwrite the existing definition of the baseclass widget, or it can be made available as a new widget
|
||||
|
||||
Widget subclasses are defined in modules of module-type `widget-subclass`. They should export the following properties:
|
||||
|
||||
* ''baseClass'': the name of the widget class being subclassed
|
||||
* ''name'': (optional) the name to be used for the subclassed widget (defaults to overwriting the baseclass widget)
|
||||
* ''constructor'': constructor function for creating the widget object
|
||||
* ''prototype'': object whose properties are added to the subclass
|
||||
|
||||
!! Example
|
||||
|
||||
Here is an example of a subclass of the checkbox widget that adds logging to the event handler:
|
||||
|
||||
```
|
||||
/*\
|
||||
title: $:/my-customised-checkbox-widget.js
|
||||
type: application/javascript
|
||||
module-type: widget-subclass
|
||||
|
||||
Widget base class
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.baseClass = "checkbox"; // Extend the <$checkbox> widget
|
||||
|
||||
// Specify a different name to make the subclass available as a new widget instead of overwriting the baseclass:
|
||||
// exports.name = "my-enhanced-checkbox";
|
||||
|
||||
exports.constructor = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
exports.prototype = {};
|
||||
|
||||
exports.prototype.handleChangeEvent = function(event) {
|
||||
// Call the base class handleChangeEvent function
|
||||
Object.getPrototypeOf(Object.getPrototypeOf(this)).handleChangeEvent.call(this,event);
|
||||
// Print our message
|
||||
console.log("Checkbox status:",this.inputDomNode.checked);
|
||||
};
|
||||
|
||||
})();
|
||||
```
|
||||
2
editions/dynaviewdemo/tiddlers/AnimationDuration.tid
Normal file
2
editions/dynaviewdemo/tiddlers/AnimationDuration.tid
Normal file
@@ -0,0 +1,2 @@
|
||||
title: $:/config/AnimationDuration
|
||||
text: 0
|
||||
@@ -1,2 +1,2 @@
|
||||
title: $:/config/Performance/Instrumentation
|
||||
text: yes
|
||||
text: no
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
title: $:/config/DynaView/PreserveScrollPosition
|
||||
text: yes
|
||||
@@ -0,0 +1,2 @@
|
||||
title: $:/config/DynaView/RestoreScrollPositionAtStartup
|
||||
text: yes
|
||||
@@ -18,9 +18,15 @@ caption: {{$:/language/SideBar/Open/Caption}}
|
||||
<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/></$link>
|
||||
|
||||
<$set name="state" value={{{ [[$:/state/viewtemplate/visibility/]addsuffix<currentTiddler>] }}}>
|
||||
<$set name="visibility" tiddler=<<state>>>
|
||||
- <$text text=<<visibility>>/>
|
||||
</$set>
|
||||
<$reveal type="match" stateTitle=<<state>> text="0">
|
||||
<span style="display: inline-block; background: red; color: white; padding: 2px; border-radius: 2px;font-size: 0.5em;line-height: 1;text-shadow: none;font-weight: bold;vertical-align: middle;">OUT OF VIEW</span>
|
||||
</$reveal>
|
||||
<$reveal type="match" stateTitle=<<state>> text="1">
|
||||
<span style="display: inline-block; background: green; color: white; padding: 2px; border-radius: 2px;font-size: 0.5em;line-height: 1;text-shadow: none;font-weight: bold;vertical-align: middle;">NEAR</span>
|
||||
</$reveal>
|
||||
<$reveal type="match" stateTitle=<<state>> text="2">
|
||||
<span style="display: inline-block; background: purple; color: white; padding: 2px; border-radius: 2px;font-size: 0.5em;line-height: 1;text-shadow: none;font-weight: bold;vertical-align: middle;">VISIBLE</span>
|
||||
</$reveal>
|
||||
</$set>
|
||||
</div>
|
||||
</$droppable>
|
||||
|
||||
33
editions/dynaviewdemo/tiddlers/TableOfContents.tid
Normal file
33
editions/dynaviewdemo/tiddlers/TableOfContents.tid
Normal file
@@ -0,0 +1,33 @@
|
||||
title: $:/_Sidebar/TableOfContents
|
||||
tags: $:/tags/SideBar
|
||||
caption: Contents
|
||||
|
||||
\define toc-body(tag,sort:"",exclude,path)
|
||||
<ol class="tc-toc">
|
||||
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]""">
|
||||
<$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}} excluded="""[enlist<__exclude__>] -[<__tag__>]""">
|
||||
<li>
|
||||
<$link to={{{ [enlist{!!story-tiddlers}] }}}>
|
||||
<$list filter="[enlist{!!story-tiddlers}addprefix[$:/state/viewtemplate/visibility/]text[2]limit[1]]" variable="listItem" emptyMessage="""<div style="display:inline-block;width:4px;height:1em;background-color:transparent;"></div>""">
|
||||
<div style="display:inline-block;width:4px;height:1em;background-color:red;"></div>
|
||||
</$list>
|
||||
<$view field='caption'>
|
||||
<$view field='title'/>
|
||||
</$view>
|
||||
</$link>
|
||||
<$macrocall $name="toc-body" tag=<<item>> sort=<<__sort__>> exclude=<<excluded>> path=<<path>>/>
|
||||
</li>
|
||||
</$vars>
|
||||
</$list>
|
||||
</ol>
|
||||
\end
|
||||
|
||||
\define toc(tag,sort:"")
|
||||
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> />
|
||||
\end
|
||||
|
||||
<div class='tc-table-of-contents'>
|
||||
|
||||
<<toc "TableOfContents">>
|
||||
|
||||
</div>
|
||||
@@ -10,21 +10,19 @@ $:/state/folded/$(currentTiddler)$
|
||||
<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify "$:/state/popup/tiddler-info">> userClass={{!!class}}>
|
||||
<$tiddler tiddler=<<currentTiddler>>>
|
||||
<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class=<<frame-classes>>>
|
||||
|
||||
<$set name="state" value={{{ [[$:/state/viewtemplate/visibility/]addsuffix<currentTiddler>] }}}>
|
||||
<$reveal stateTitle=<<state>> type="match" text="true" tag="div">
|
||||
<div class="tc-dynaview-set-tiddler-when-visible tc-dynaview-expand-viewport" data-dynaview-set-tiddler=<<state>> data-dynaview-set-value="true" data-dynaview-unset-tiddler=<<state>> data-dynaview-unset-value="false" data-dynaview-has-triggered={{{ [<state>get[text]] }}}>
|
||||
<$reveal stateTitle=<<state>> type="nomatch" text="" default="" tag="div">
|
||||
<div class="tc-dynaview-track-tiddler-when-visible" data-dynaview-track-tiddler=<<state>>>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem">
|
||||
<$transclude tiddler=<<listItem>>/>
|
||||
</$list>
|
||||
</div>
|
||||
</$reveal>
|
||||
<$reveal stateTitle=<<state>> type="nomatch" text="true" tag="div">
|
||||
<div class="tc-dynaview-set-tiddler-when-visible tc-dynaview-expand-viewport" style="min-height: 5em;" data-dynaview-set-tiddler=<<state>> data-dynaview-set-value="true" data-dynaview-unset-tiddler=<<state>> data-dynaview-unset-value="false" data-dynaview-has-triggered={{{ [<state>get[text]] }}}>
|
||||
<$reveal stateTitle=<<state>> type="match" text="" default="" tag="div">
|
||||
<div class="tc-dynaview-track-tiddler-when-visible" style="min-height: 5em;" data-dynaview-track-tiddler=<<state>>>
|
||||
</div>
|
||||
</$reveal>
|
||||
</$set>
|
||||
|
||||
</div>
|
||||
</$tiddler>
|
||||
</$vars>
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
[
|
||||
{"title": "TableOfContents", "text": "", "list": "[[Chapter 1]] [[Chapter 2]] [[Chapter 3]] [[Chapter 4]] [[Chapter 5]] [[Chapter 6]] [[Chapter 7]] [[Chapter 8]] [[Chapter 9]] [[Chapter 10]] [[Chapter 11]] [[Chapter 12]]"},
|
||||
{"title": "Chapter 1", "story-tiddlers": "[[Alice in Wonderland:-anchor-]] [[Alice in Wonderland:-paragraph-1]] [[Alice in Wonderland:-paragraph-2]] [[Alice in Wonderland:-paragraph-3]] [[Alice in Wonderland:-paragraph-4]] [[Alice in Wonderland:-paragraph-5]] [[Alice in Wonderland:-paragraph-6]] [[Alice in Wonderland:-paragraph-7]] [[Alice in Wonderland:-paragraph-8]] [[Alice in Wonderland:-paragraph-9]] [[Alice in Wonderland:-paragraph-10]] [[Alice in Wonderland:-paragraph-11]] [[Alice in Wonderland:-paragraph-12]] [[Alice in Wonderland:-paragraph-13]] [[Alice in Wonderland:-paragraph-14]] [[Alice in Wonderland:-paragraph-15]] [[Alice in Wonderland:-paragraph-16]] [[Alice in Wonderland:-paragraph-17]] [[Alice in Wonderland:-paragraph-18]] [[Alice in Wonderland:-paragraph-19]] [[Alice in Wonderland:-paragraph-20]] [[Alice in Wonderland:-paragraph-21]] [[Alice in Wonderland:-paragraph-22]] [[Alice in Wonderland:-paragraph-23]] [[Alice in Wonderland:-paragraph-24]] [[Alice in Wonderland:-paragraph-25]] [[Alice in Wonderland:-paragraph-26]] [[Alice in Wonderland:-paragraph-27]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 2", "story-tiddlers": "[[Alice in Wonderland:-paragraph-28]] [[Alice in Wonderland:-paragraph-29]] [[Alice in Wonderland:-paragraph-30]] [[Alice in Wonderland:-paragraph-31]] [[Alice in Wonderland:-paragraph-32]] [[Alice in Wonderland:-paragraph-33]] [[Alice in Wonderland:-paragraph-34]] [[Alice in Wonderland:-paragraph-35]] [[Alice in Wonderland:-paragraph-36]] [[Alice in Wonderland:-paragraph-37]] [[Alice in Wonderland:-paragraph-38]] [[Alice in Wonderland:-paragraph-39]] [[Alice in Wonderland:-paragraph-40]] [[Alice in Wonderland:-paragraph-41]] [[Alice in Wonderland:-paragraph-42]] [[Alice in Wonderland:-paragraph-43]] [[Alice in Wonderland:-paragraph-44]] [[Alice in Wonderland:-paragraph-45]] [[Alice in Wonderland:-paragraph-46]] [[Alice in Wonderland:-paragraph-47]] [[Alice in Wonderland:-paragraph-48]] [[Alice in Wonderland:-paragraph-49]] [[Alice in Wonderland:-paragraph-50]] [[Alice in Wonderland:-paragraph-51]] [[Alice in Wonderland:-paragraph-52]] [[Alice in Wonderland:-paragraph-53]] [[Alice in Wonderland:-paragraph-54]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 3", "story-tiddlers": "[[Alice in Wonderland:-paragraph-55]] [[Alice in Wonderland:-paragraph-56]] [[Alice in Wonderland:-paragraph-57]] [[Alice in Wonderland:-paragraph-58]] [[Alice in Wonderland:-paragraph-59]] [[Alice in Wonderland:-paragraph-60]] [[Alice in Wonderland:-paragraph-61]] [[Alice in Wonderland:-paragraph-62]] [[Alice in Wonderland:-paragraph-63]] [[Alice in Wonderland:-paragraph-64]] [[Alice in Wonderland:-paragraph-65]] [[Alice in Wonderland:-paragraph-66]] [[Alice in Wonderland:-paragraph-67]] [[Alice in Wonderland:-paragraph-68]] [[Alice in Wonderland:-paragraph-69]] [[Alice in Wonderland:-paragraph-70]] [[Alice in Wonderland:-paragraph-71]] [[Alice in Wonderland:-paragraph-72]] [[Alice in Wonderland:-paragraph-73]] [[Alice in Wonderland:-paragraph-74]] [[Alice in Wonderland:-paragraph-75]] [[Alice in Wonderland:-paragraph-76]] [[Alice in Wonderland:-paragraph-77]] [[Alice in Wonderland:-paragraph-78]] [[Alice in Wonderland:-paragraph-79]] [[Alice in Wonderland:-paragraph-80]] [[Alice in Wonderland:-paragraph-81]] [[Alice in Wonderland:-paragraph-82]] [[Alice in Wonderland:-paragraph-83]] [[Alice in Wonderland:-paragraph-84]] [[Alice in Wonderland:-paragraph-85]] [[Alice in Wonderland:-paragraph-86]] [[Alice in Wonderland:-paragraph-87]] [[Alice in Wonderland:-paragraph-88]] [[Alice in Wonderland:-paragraph-89]] [[Alice in Wonderland:-paragraph-90]] [[Alice in Wonderland:-paragraph-91]] [[Alice in Wonderland:-paragraph-92]] [[Alice in Wonderland:-paragraph-93]] [[Alice in Wonderland:-paragraph-94]] [[Alice in Wonderland:-paragraph-95]] [[Alice in Wonderland:-paragraph-96]] [[Alice in Wonderland:-paragraph-97]] [[Alice in Wonderland:-paragraph-98]] [[Alice in Wonderland:-paragraph-99]] [[Alice in Wonderland:-paragraph-100]] [[Alice in Wonderland:-paragraph-101]] [[Alice in Wonderland:-paragraph-102]] [[Alice in Wonderland:-paragraph-103]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 4", "story-tiddlers": "[[Alice in Wonderland:-paragraph-104]] [[Alice in Wonderland:-paragraph-105]] [[Alice in Wonderland:-paragraph-106]] [[Alice in Wonderland:-paragraph-107]] [[Alice in Wonderland:-paragraph-108]] [[Alice in Wonderland:-paragraph-109]] [[Alice in Wonderland:-paragraph-110]] [[Alice in Wonderland:-paragraph-111]] [[Alice in Wonderland:-paragraph-112]] [[Alice in Wonderland:-paragraph-113]] [[Alice in Wonderland:-paragraph-114]] [[Alice in Wonderland:-paragraph-115]] [[Alice in Wonderland:-paragraph-116]] [[Alice in Wonderland:-paragraph-117]] [[Alice in Wonderland:-paragraph-118]] [[Alice in Wonderland:-paragraph-119]] [[Alice in Wonderland:-paragraph-120]] [[Alice in Wonderland:-paragraph-121]] [[Alice in Wonderland:-paragraph-122]] [[Alice in Wonderland:-paragraph-123]] [[Alice in Wonderland:-paragraph-124]] [[Alice in Wonderland:-paragraph-125]] [[Alice in Wonderland:-paragraph-126]] [[Alice in Wonderland:-paragraph-127]] [[Alice in Wonderland:-paragraph-128]] [[Alice in Wonderland:-paragraph-129]] [[Alice in Wonderland:-paragraph-130]] [[Alice in Wonderland:-paragraph-131]] [[Alice in Wonderland:-paragraph-132]] [[Alice in Wonderland:-paragraph-133]] [[Alice in Wonderland:-paragraph-134]] [[Alice in Wonderland:-paragraph-135]] [[Alice in Wonderland:-paragraph-136]] [[Alice in Wonderland:-paragraph-137]] [[Alice in Wonderland:-paragraph-138]] [[Alice in Wonderland:-paragraph-139]] [[Alice in Wonderland:-paragraph-140]] [[Alice in Wonderland:-paragraph-141]] [[Alice in Wonderland:-paragraph-142]] [[Alice in Wonderland:-paragraph-143]] [[Alice in Wonderland:-paragraph-144]] [[Alice in Wonderland:-paragraph-145]] [[Alice in Wonderland:-paragraph-146]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 5", "story-tiddlers": "[[Alice in Wonderland:-paragraph-147]] [[Alice in Wonderland:-paragraph-148]] [[Alice in Wonderland:-paragraph-149]] [[Alice in Wonderland:-paragraph-150]] [[Alice in Wonderland:-paragraph-151]] [[Alice in Wonderland:-paragraph-152]] [[Alice in Wonderland:-paragraph-153]] [[Alice in Wonderland:-paragraph-154]] [[Alice in Wonderland:-paragraph-155]] [[Alice in Wonderland:-paragraph-156]] [[Alice in Wonderland:-paragraph-157]] [[Alice in Wonderland:-paragraph-158]] [[Alice in Wonderland:-paragraph-159]] [[Alice in Wonderland:-paragraph-160]] [[Alice in Wonderland:-paragraph-161]] [[Alice in Wonderland:-paragraph-162]] [[Alice in Wonderland:-paragraph-163]] [[Alice in Wonderland:-paragraph-164]] [[Alice in Wonderland:-paragraph-165]] [[Alice in Wonderland:-paragraph-166]] [[Alice in Wonderland:-paragraph-167]] [[Alice in Wonderland:-paragraph-168]] [[Alice in Wonderland:-paragraph-169]] [[Alice in Wonderland:-paragraph-170]] [[Alice in Wonderland:-paragraph-171]] [[Alice in Wonderland:-paragraph-172]] [[Alice in Wonderland:-paragraph-173]] [[Alice in Wonderland:-paragraph-174]] [[Alice in Wonderland:-paragraph-175]] [[Alice in Wonderland:-paragraph-176]] [[Alice in Wonderland:-paragraph-177]] [[Alice in Wonderland:-paragraph-178]] [[Alice in Wonderland:-paragraph-179]] [[Alice in Wonderland:-paragraph-180]] [[Alice in Wonderland:-paragraph-181]] [[Alice in Wonderland:-paragraph-182]] [[Alice in Wonderland:-paragraph-183]] [[Alice in Wonderland:-paragraph-184]] [[Alice in Wonderland:-paragraph-185]] [[Alice in Wonderland:-paragraph-186]] [[Alice in Wonderland:-paragraph-187]] [[Alice in Wonderland:-paragraph-188]] [[Alice in Wonderland:-paragraph-189]] [[Alice in Wonderland:-paragraph-190]] [[Alice in Wonderland:-paragraph-191]] [[Alice in Wonderland:-paragraph-192]] [[Alice in Wonderland:-paragraph-193]] [[Alice in Wonderland:-paragraph-194]] [[Alice in Wonderland:-paragraph-195]] [[Alice in Wonderland:-paragraph-196]] [[Alice in Wonderland:-paragraph-197]] [[Alice in Wonderland:-paragraph-198]] [[Alice in Wonderland:-paragraph-199]] [[Alice in Wonderland:-paragraph-200]] [[Alice in Wonderland:-paragraph-201]] [[Alice in Wonderland:-paragraph-202]] [[Alice in Wonderland:-paragraph-203]] [[Alice in Wonderland:-paragraph-204]] [[Alice in Wonderland:-paragraph-205]] [[Alice in Wonderland:-paragraph-206]] [[Alice in Wonderland:-paragraph-207]] [[Alice in Wonderland:-paragraph-208]] [[Alice in Wonderland:-paragraph-209]] [[Alice in Wonderland:-paragraph-210]] [[Alice in Wonderland:-paragraph-211]] [[Alice in Wonderland:-paragraph-212]] [[Alice in Wonderland:-paragraph-213]] [[Alice in Wonderland:-paragraph-214]] [[Alice in Wonderland:-paragraph-215]] [[Alice in Wonderland:-paragraph-216]] [[Alice in Wonderland:-paragraph-217]] [[Alice in Wonderland:-paragraph-218]] [[Alice in Wonderland:-paragraph-219]] [[Alice in Wonderland:-paragraph-220]] [[Alice in Wonderland:-paragraph-221]] [[Alice in Wonderland:-paragraph-222]] [[Alice in Wonderland:-paragraph-223]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 6", "story-tiddlers": "[[Alice in Wonderland:-paragraph-224]] [[Alice in Wonderland:-paragraph-225]] [[Alice in Wonderland:-paragraph-226]] [[Alice in Wonderland:-paragraph-227]] [[Alice in Wonderland:-paragraph-228]] [[Alice in Wonderland:-paragraph-229]] [[Alice in Wonderland:-paragraph-230]] [[Alice in Wonderland:-paragraph-231]] [[Alice in Wonderland:-paragraph-232]] [[Alice in Wonderland:-paragraph-233]] [[Alice in Wonderland:-paragraph-234]] [[Alice in Wonderland:-paragraph-235]] [[Alice in Wonderland:-paragraph-236]] [[Alice in Wonderland:-paragraph-237]] [[Alice in Wonderland:-paragraph-238]] [[Alice in Wonderland:-paragraph-239]] [[Alice in Wonderland:-paragraph-240]] [[Alice in Wonderland:-paragraph-241]] [[Alice in Wonderland:-paragraph-242]] [[Alice in Wonderland:-paragraph-243]] [[Alice in Wonderland:-paragraph-244]] [[Alice in Wonderland:-paragraph-245]] [[Alice in Wonderland:-paragraph-246]] [[Alice in Wonderland:-paragraph-247]] [[Alice in Wonderland:-paragraph-248]] [[Alice in Wonderland:-paragraph-249]] [[Alice in Wonderland:-paragraph-250]] [[Alice in Wonderland:-paragraph-251]] [[Alice in Wonderland:-paragraph-252]] [[Alice in Wonderland:-paragraph-253]] [[Alice in Wonderland:-paragraph-254]] [[Alice in Wonderland:-paragraph-255]] [[Alice in Wonderland:-paragraph-256]] [[Alice in Wonderland:-paragraph-257]] [[Alice in Wonderland:-paragraph-258]] [[Alice in Wonderland:-paragraph-259]] [[Alice in Wonderland:-paragraph-260]] [[Alice in Wonderland:-paragraph-261]] [[Alice in Wonderland:-paragraph-262]] [[Alice in Wonderland:-paragraph-263]] [[Alice in Wonderland:-paragraph-264]] [[Alice in Wonderland:-paragraph-265]] [[Alice in Wonderland:-paragraph-266]] [[Alice in Wonderland:-paragraph-267]] [[Alice in Wonderland:-paragraph-268]] [[Alice in Wonderland:-paragraph-269]] [[Alice in Wonderland:-paragraph-270]] [[Alice in Wonderland:-paragraph-271]] [[Alice in Wonderland:-paragraph-272]] [[Alice in Wonderland:-paragraph-273]] [[Alice in Wonderland:-paragraph-274]] [[Alice in Wonderland:-paragraph-275]] [[Alice in Wonderland:-paragraph-276]] [[Alice in Wonderland:-paragraph-277]] [[Alice in Wonderland:-paragraph-278]] [[Alice in Wonderland:-paragraph-279]] [[Alice in Wonderland:-paragraph-280]] [[Alice in Wonderland:-paragraph-281]] [[Alice in Wonderland:-paragraph-282]] [[Alice in Wonderland:-paragraph-283]] [[Alice in Wonderland:-paragraph-284]] [[Alice in Wonderland:-paragraph-285]] [[Alice in Wonderland:-paragraph-286]] [[Alice in Wonderland:-paragraph-287]] [[Alice in Wonderland:-paragraph-288]] [[Alice in Wonderland:-paragraph-289]] [[Alice in Wonderland:-paragraph-290]] [[Alice in Wonderland:-paragraph-291]] [[Alice in Wonderland:-paragraph-292]] [[Alice in Wonderland:-paragraph-293]] [[Alice in Wonderland:-paragraph-294]] [[Alice in Wonderland:-paragraph-295]] [[Alice in Wonderland:-paragraph-296]] [[Alice in Wonderland:-paragraph-297]] [[Alice in Wonderland:-paragraph-298]] [[Alice in Wonderland:-paragraph-299]] [[Alice in Wonderland:-paragraph-300]] [[Alice in Wonderland:-paragraph-301]] [[Alice in Wonderland:-paragraph-302]] [[Alice in Wonderland:-paragraph-303]] [[Alice in Wonderland:-paragraph-304]] [[Alice in Wonderland:-paragraph-305]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 7", "story-tiddlers": "[[Alice in Wonderland:-paragraph-306]] [[Alice in Wonderland:-paragraph-307]] [[Alice in Wonderland:-paragraph-308]] [[Alice in Wonderland:-paragraph-309]] [[Alice in Wonderland:-paragraph-310]] [[Alice in Wonderland:-paragraph-311]] [[Alice in Wonderland:-paragraph-312]] [[Alice in Wonderland:-paragraph-313]] [[Alice in Wonderland:-paragraph-314]] [[Alice in Wonderland:-paragraph-315]] [[Alice in Wonderland:-paragraph-316]] [[Alice in Wonderland:-paragraph-317]] [[Alice in Wonderland:-paragraph-318]] [[Alice in Wonderland:-paragraph-319]] [[Alice in Wonderland:-paragraph-320]] [[Alice in Wonderland:-paragraph-321]] [[Alice in Wonderland:-paragraph-322]] [[Alice in Wonderland:-paragraph-323]] [[Alice in Wonderland:-paragraph-324]] [[Alice in Wonderland:-paragraph-325]] [[Alice in Wonderland:-paragraph-326]] [[Alice in Wonderland:-paragraph-327]] [[Alice in Wonderland:-paragraph-328]] [[Alice in Wonderland:-paragraph-329]] [[Alice in Wonderland:-paragraph-330]] [[Alice in Wonderland:-paragraph-331]] [[Alice in Wonderland:-paragraph-332]] [[Alice in Wonderland:-paragraph-333]] [[Alice in Wonderland:-paragraph-334]] [[Alice in Wonderland:-paragraph-335]] [[Alice in Wonderland:-paragraph-336]] [[Alice in Wonderland:-paragraph-337]] [[Alice in Wonderland:-paragraph-338]] [[Alice in Wonderland:-paragraph-339]] [[Alice in Wonderland:-paragraph-340]] [[Alice in Wonderland:-paragraph-341]] [[Alice in Wonderland:-paragraph-342]] [[Alice in Wonderland:-paragraph-343]] [[Alice in Wonderland:-paragraph-344]] [[Alice in Wonderland:-paragraph-345]] [[Alice in Wonderland:-paragraph-346]] [[Alice in Wonderland:-paragraph-347]] [[Alice in Wonderland:-paragraph-348]] [[Alice in Wonderland:-paragraph-349]] [[Alice in Wonderland:-paragraph-350]] [[Alice in Wonderland:-paragraph-351]] [[Alice in Wonderland:-paragraph-352]] [[Alice in Wonderland:-paragraph-353]] [[Alice in Wonderland:-paragraph-354]] [[Alice in Wonderland:-paragraph-355]] [[Alice in Wonderland:-paragraph-356]] [[Alice in Wonderland:-paragraph-357]] [[Alice in Wonderland:-paragraph-358]] [[Alice in Wonderland:-paragraph-359]] [[Alice in Wonderland:-paragraph-360]] [[Alice in Wonderland:-paragraph-361]] [[Alice in Wonderland:-paragraph-362]] [[Alice in Wonderland:-paragraph-363]] [[Alice in Wonderland:-paragraph-364]] [[Alice in Wonderland:-paragraph-365]] [[Alice in Wonderland:-paragraph-366]] [[Alice in Wonderland:-paragraph-367]] [[Alice in Wonderland:-paragraph-368]] [[Alice in Wonderland:-paragraph-369]] [[Alice in Wonderland:-paragraph-370]] [[Alice in Wonderland:-paragraph-371]] [[Alice in Wonderland:-paragraph-372]] [[Alice in Wonderland:-paragraph-373]] [[Alice in Wonderland:-paragraph-374]] [[Alice in Wonderland:-paragraph-375]] [[Alice in Wonderland:-paragraph-376]] [[Alice in Wonderland:-paragraph-377]] [[Alice in Wonderland:-paragraph-378]] [[Alice in Wonderland:-paragraph-379]] [[Alice in Wonderland:-paragraph-380]] [[Alice in Wonderland:-paragraph-381]] [[Alice in Wonderland:-paragraph-382]] [[Alice in Wonderland:-paragraph-383]] [[Alice in Wonderland:-paragraph-384]] [[Alice in Wonderland:-paragraph-385]] [[Alice in Wonderland:-paragraph-386]] [[Alice in Wonderland:-paragraph-387]] [[Alice in Wonderland:-paragraph-388]] [[Alice in Wonderland:-paragraph-389]] [[Alice in Wonderland:-paragraph-390]] [[Alice in Wonderland:-paragraph-391]] [[Alice in Wonderland:-paragraph-392]] [[Alice in Wonderland:-paragraph-393]] [[Alice in Wonderland:-paragraph-394]] [[Alice in Wonderland:-paragraph-395]] [[Alice in Wonderland:-paragraph-396]] [[Alice in Wonderland:-paragraph-397]] [[Alice in Wonderland:-paragraph-398]] [[Alice in Wonderland:-paragraph-399]] [[Alice in Wonderland:-paragraph-400]] [[Alice in Wonderland:-paragraph-401]] [[Alice in Wonderland:-paragraph-402]] [[Alice in Wonderland:-paragraph-403]] [[Alice in Wonderland:-paragraph-404]] [[Alice in Wonderland:-paragraph-405]] [[Alice in Wonderland:-paragraph-406]] [[Alice in Wonderland:-paragraph-407]] [[Alice in Wonderland:-paragraph-408]] [[Alice in Wonderland:-paragraph-409]] [[Alice in Wonderland:-paragraph-410]] [[Alice in Wonderland:-paragraph-411]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 8", "story-tiddlers": "[[Alice in Wonderland:-paragraph-412]] [[Alice in Wonderland:-paragraph-413]] [[Alice in Wonderland:-paragraph-414]] [[Alice in Wonderland:-paragraph-415]] [[Alice in Wonderland:-paragraph-416]] [[Alice in Wonderland:-paragraph-417]] [[Alice in Wonderland:-paragraph-418]] [[Alice in Wonderland:-paragraph-419]] [[Alice in Wonderland:-paragraph-420]] [[Alice in Wonderland:-paragraph-421]] [[Alice in Wonderland:-paragraph-422]] [[Alice in Wonderland:-paragraph-423]] [[Alice in Wonderland:-paragraph-424]] [[Alice in Wonderland:-paragraph-425]] [[Alice in Wonderland:-paragraph-426]] [[Alice in Wonderland:-paragraph-427]] [[Alice in Wonderland:-paragraph-428]] [[Alice in Wonderland:-paragraph-429]] [[Alice in Wonderland:-paragraph-430]] [[Alice in Wonderland:-paragraph-431]] [[Alice in Wonderland:-paragraph-432]] [[Alice in Wonderland:-paragraph-433]] [[Alice in Wonderland:-paragraph-434]] [[Alice in Wonderland:-paragraph-435]] [[Alice in Wonderland:-paragraph-436]] [[Alice in Wonderland:-paragraph-437]] [[Alice in Wonderland:-paragraph-438]] [[Alice in Wonderland:-paragraph-439]] [[Alice in Wonderland:-paragraph-440]] [[Alice in Wonderland:-paragraph-441]] [[Alice in Wonderland:-paragraph-442]] [[Alice in Wonderland:-paragraph-443]] [[Alice in Wonderland:-paragraph-444]] [[Alice in Wonderland:-paragraph-445]] [[Alice in Wonderland:-paragraph-446]] [[Alice in Wonderland:-paragraph-447]] [[Alice in Wonderland:-paragraph-448]] [[Alice in Wonderland:-paragraph-449]] [[Alice in Wonderland:-paragraph-450]] [[Alice in Wonderland:-paragraph-451]] [[Alice in Wonderland:-paragraph-452]] [[Alice in Wonderland:-paragraph-453]] [[Alice in Wonderland:-paragraph-454]] [[Alice in Wonderland:-paragraph-455]] [[Alice in Wonderland:-paragraph-456]] [[Alice in Wonderland:-paragraph-457]] [[Alice in Wonderland:-paragraph-458]] [[Alice in Wonderland:-paragraph-459]] [[Alice in Wonderland:-paragraph-460]] [[Alice in Wonderland:-paragraph-461]] [[Alice in Wonderland:-paragraph-462]] [[Alice in Wonderland:-paragraph-463]] [[Alice in Wonderland:-paragraph-464]] [[Alice in Wonderland:-paragraph-465]] [[Alice in Wonderland:-paragraph-466]] [[Alice in Wonderland:-paragraph-467]] [[Alice in Wonderland:-paragraph-468]] [[Alice in Wonderland:-paragraph-469]] [[Alice in Wonderland:-paragraph-470]] [[Alice in Wonderland:-paragraph-471]] [[Alice in Wonderland:-paragraph-472]] [[Alice in Wonderland:-paragraph-473]] [[Alice in Wonderland:-paragraph-474]] [[Alice in Wonderland:-paragraph-475]] [[Alice in Wonderland:-paragraph-476]] [[Alice in Wonderland:-paragraph-477]] [[Alice in Wonderland:-paragraph-478]] [[Alice in Wonderland:-paragraph-479]] [[Alice in Wonderland:-paragraph-480]] [[Alice in Wonderland:-paragraph-481]] [[Alice in Wonderland:-paragraph-482]] [[Alice in Wonderland:-paragraph-483]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 9", "story-tiddlers": "[[Alice in Wonderland:-paragraph-484]] [[Alice in Wonderland:-paragraph-485]] [[Alice in Wonderland:-paragraph-486]] [[Alice in Wonderland:-paragraph-487]] [[Alice in Wonderland:-paragraph-488]] [[Alice in Wonderland:-paragraph-489]] [[Alice in Wonderland:-paragraph-490]] [[Alice in Wonderland:-paragraph-491]] [[Alice in Wonderland:-paragraph-492]] [[Alice in Wonderland:-paragraph-493]] [[Alice in Wonderland:-paragraph-494]] [[Alice in Wonderland:-paragraph-495]] [[Alice in Wonderland:-paragraph-496]] [[Alice in Wonderland:-paragraph-497]] [[Alice in Wonderland:-paragraph-498]] [[Alice in Wonderland:-paragraph-499]] [[Alice in Wonderland:-paragraph-500]] [[Alice in Wonderland:-paragraph-501]] [[Alice in Wonderland:-paragraph-502]] [[Alice in Wonderland:-paragraph-503]] [[Alice in Wonderland:-paragraph-504]] [[Alice in Wonderland:-paragraph-505]] [[Alice in Wonderland:-paragraph-506]] [[Alice in Wonderland:-paragraph-507]] [[Alice in Wonderland:-paragraph-508]] [[Alice in Wonderland:-paragraph-509]] [[Alice in Wonderland:-paragraph-510]] [[Alice in Wonderland:-paragraph-511]] [[Alice in Wonderland:-paragraph-512]] [[Alice in Wonderland:-paragraph-513]] [[Alice in Wonderland:-paragraph-514]] [[Alice in Wonderland:-paragraph-515]] [[Alice in Wonderland:-paragraph-516]] [[Alice in Wonderland:-paragraph-517]] [[Alice in Wonderland:-paragraph-518]] [[Alice in Wonderland:-paragraph-519]] [[Alice in Wonderland:-paragraph-520]] [[Alice in Wonderland:-paragraph-521]] [[Alice in Wonderland:-paragraph-522]] [[Alice in Wonderland:-paragraph-523]] [[Alice in Wonderland:-paragraph-524]] [[Alice in Wonderland:-paragraph-525]] [[Alice in Wonderland:-paragraph-526]] [[Alice in Wonderland:-paragraph-527]] [[Alice in Wonderland:-paragraph-528]] [[Alice in Wonderland:-paragraph-529]] [[Alice in Wonderland:-paragraph-530]] [[Alice in Wonderland:-paragraph-531]] [[Alice in Wonderland:-paragraph-532]] [[Alice in Wonderland:-paragraph-533]] [[Alice in Wonderland:-paragraph-534]] [[Alice in Wonderland:-paragraph-535]] [[Alice in Wonderland:-paragraph-536]] [[Alice in Wonderland:-paragraph-537]] [[Alice in Wonderland:-paragraph-538]] [[Alice in Wonderland:-paragraph-539]] [[Alice in Wonderland:-paragraph-540]] [[Alice in Wonderland:-paragraph-541]] [[Alice in Wonderland:-paragraph-542]] [[Alice in Wonderland:-paragraph-543]] [[Alice in Wonderland:-paragraph-544]] [[Alice in Wonderland:-paragraph-545]] [[Alice in Wonderland:-paragraph-546]] [[Alice in Wonderland:-paragraph-547]] [[Alice in Wonderland:-paragraph-548]] [[Alice in Wonderland:-paragraph-549]] [[Alice in Wonderland:-paragraph-550]] [[Alice in Wonderland:-paragraph-551]] [[Alice in Wonderland:-paragraph-552]] [[Alice in Wonderland:-paragraph-553]] [[Alice in Wonderland:-paragraph-554]] [[Alice in Wonderland:-paragraph-555]] [[Alice in Wonderland:-paragraph-556]] [[Alice in Wonderland:-paragraph-557]] [[Alice in Wonderland:-paragraph-558]] [[Alice in Wonderland:-paragraph-559]] [[Alice in Wonderland:-paragraph-560]] [[Alice in Wonderland:-paragraph-561]] [[Alice in Wonderland:-paragraph-562]] [[Alice in Wonderland:-paragraph-563]] [[Alice in Wonderland:-paragraph-564]] [[Alice in Wonderland:-paragraph-565]] [[Alice in Wonderland:-paragraph-566]] [[Alice in Wonderland:-paragraph-567]] [[Alice in Wonderland:-paragraph-568]] [[Alice in Wonderland:-paragraph-569]] [[Alice in Wonderland:-paragraph-570]] [[Alice in Wonderland:-paragraph-571]] [[Alice in Wonderland:-paragraph-572]] [[Alice in Wonderland:-paragraph-573]] [[Alice in Wonderland:-paragraph-574]] [[Alice in Wonderland:-paragraph-575]] [[Alice in Wonderland:-paragraph-576]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 10", "story-tiddlers": "[[Alice in Wonderland:-paragraph-577]] [[Alice in Wonderland:-paragraph-578]] [[Alice in Wonderland:-paragraph-579]] [[Alice in Wonderland:-paragraph-580]] [[Alice in Wonderland:-paragraph-581]] [[Alice in Wonderland:-paragraph-582]] [[Alice in Wonderland:-paragraph-583]] [[Alice in Wonderland:-paragraph-584]] [[Alice in Wonderland:-paragraph-585]] [[Alice in Wonderland:-paragraph-586]] [[Alice in Wonderland:-paragraph-587]] [[Alice in Wonderland:-paragraph-588]] [[Alice in Wonderland:-paragraph-589]] [[Alice in Wonderland:-paragraph-590]] [[Alice in Wonderland:-paragraph-591]] [[Alice in Wonderland:-paragraph-592]] [[Alice in Wonderland:-paragraph-593]] [[Alice in Wonderland:-paragraph-594]] [[Alice in Wonderland:-paragraph-595]] [[Alice in Wonderland:-paragraph-596]] [[Alice in Wonderland:-paragraph-597]] [[Alice in Wonderland:-paragraph-598]] [[Alice in Wonderland:-paragraph-599]] [[Alice in Wonderland:-paragraph-600]] [[Alice in Wonderland:-paragraph-601]] [[Alice in Wonderland:-paragraph-602]] [[Alice in Wonderland:-paragraph-603]] [[Alice in Wonderland:-paragraph-604]] [[Alice in Wonderland:-paragraph-605]] [[Alice in Wonderland:-paragraph-606]] [[Alice in Wonderland:-paragraph-607]] [[Alice in Wonderland:-paragraph-608]] [[Alice in Wonderland:-paragraph-609]] [[Alice in Wonderland:-paragraph-610]] [[Alice in Wonderland:-paragraph-611]] [[Alice in Wonderland:-paragraph-612]] [[Alice in Wonderland:-paragraph-613]] [[Alice in Wonderland:-paragraph-614]] [[Alice in Wonderland:-paragraph-615]] [[Alice in Wonderland:-paragraph-616]] [[Alice in Wonderland:-paragraph-617]] [[Alice in Wonderland:-paragraph-618]] [[Alice in Wonderland:-paragraph-619]] [[Alice in Wonderland:-paragraph-620]] [[Alice in Wonderland:-paragraph-621]] [[Alice in Wonderland:-paragraph-622]] [[Alice in Wonderland:-paragraph-623]] [[Alice in Wonderland:-paragraph-624]] [[Alice in Wonderland:-paragraph-625]] [[Alice in Wonderland:-paragraph-626]] [[Alice in Wonderland:-paragraph-627]] [[Alice in Wonderland:-paragraph-628]] [[Alice in Wonderland:-paragraph-629]] [[Alice in Wonderland:-paragraph-630]] [[Alice in Wonderland:-paragraph-631]] [[Alice in Wonderland:-paragraph-632]] [[Alice in Wonderland:-paragraph-633]] [[Alice in Wonderland:-paragraph-634]] [[Alice in Wonderland:-paragraph-635]] [[Alice in Wonderland:-paragraph-636]] [[Alice in Wonderland:-paragraph-637]] [[Alice in Wonderland:-paragraph-638]] [[Alice in Wonderland:-paragraph-639]] [[Alice in Wonderland:-paragraph-640]] [[Alice in Wonderland:-paragraph-641]] [[Alice in Wonderland:-paragraph-642]] [[Alice in Wonderland:-paragraph-643]] [[Alice in Wonderland:-paragraph-644]] [[Alice in Wonderland:-paragraph-645]] [[Alice in Wonderland:-paragraph-646]] [[Alice in Wonderland:-paragraph-647]] [[Alice in Wonderland:-paragraph-648]] [[Alice in Wonderland:-paragraph-649]] [[Alice in Wonderland:-paragraph-650]] [[Alice in Wonderland:-paragraph-651]] [[Alice in Wonderland:-paragraph-652]] [[Alice in Wonderland:-paragraph-653]] [[Alice in Wonderland:-paragraph-654]] [[Alice in Wonderland:-paragraph-655]] [[Alice in Wonderland:-paragraph-656]] [[Alice in Wonderland:-paragraph-657]] [[Alice in Wonderland:-paragraph-658]] [[Alice in Wonderland:-paragraph-659]] [[Alice in Wonderland:-paragraph-660]] [[Alice in Wonderland:-paragraph-661]] [[Alice in Wonderland:-paragraph-662]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 11", "story-tiddlers": "[[Alice in Wonderland:-paragraph-663]] [[Alice in Wonderland:-paragraph-664]] [[Alice in Wonderland:-paragraph-665]] [[Alice in Wonderland:-paragraph-666]] [[Alice in Wonderland:-paragraph-667]] [[Alice in Wonderland:-paragraph-668]] [[Alice in Wonderland:-paragraph-669]] [[Alice in Wonderland:-paragraph-670]] [[Alice in Wonderland:-paragraph-671]] [[Alice in Wonderland:-paragraph-672]] [[Alice in Wonderland:-paragraph-673]] [[Alice in Wonderland:-paragraph-674]] [[Alice in Wonderland:-paragraph-675]] [[Alice in Wonderland:-paragraph-676]] [[Alice in Wonderland:-paragraph-677]] [[Alice in Wonderland:-paragraph-678]] [[Alice in Wonderland:-paragraph-679]] [[Alice in Wonderland:-paragraph-680]] [[Alice in Wonderland:-paragraph-681]] [[Alice in Wonderland:-paragraph-682]] [[Alice in Wonderland:-paragraph-683]] [[Alice in Wonderland:-paragraph-684]] [[Alice in Wonderland:-paragraph-685]] [[Alice in Wonderland:-paragraph-686]] [[Alice in Wonderland:-paragraph-687]] [[Alice in Wonderland:-paragraph-688]] [[Alice in Wonderland:-paragraph-689]] [[Alice in Wonderland:-paragraph-690]] [[Alice in Wonderland:-paragraph-691]] [[Alice in Wonderland:-paragraph-692]] [[Alice in Wonderland:-paragraph-693]] [[Alice in Wonderland:-paragraph-694]] [[Alice in Wonderland:-paragraph-695]] [[Alice in Wonderland:-paragraph-696]] [[Alice in Wonderland:-paragraph-697]] [[Alice in Wonderland:-paragraph-698]] [[Alice in Wonderland:-paragraph-699]] [[Alice in Wonderland:-paragraph-700]] [[Alice in Wonderland:-paragraph-701]] [[Alice in Wonderland:-paragraph-702]] [[Alice in Wonderland:-paragraph-703]] [[Alice in Wonderland:-paragraph-704]] [[Alice in Wonderland:-paragraph-705]] [[Alice in Wonderland:-paragraph-706]] [[Alice in Wonderland:-paragraph-707]] [[Alice in Wonderland:-paragraph-708]] [[Alice in Wonderland:-paragraph-709]] [[Alice in Wonderland:-paragraph-710]] [[Alice in Wonderland:-paragraph-711]] [[Alice in Wonderland:-paragraph-712]] [[Alice in Wonderland:-paragraph-713]] [[Alice in Wonderland:-paragraph-714]] [[Alice in Wonderland:-paragraph-715]] [[Alice in Wonderland:-paragraph-716]] [[Alice in Wonderland:-paragraph-717]] [[Alice in Wonderland:-paragraph-718]] [[Alice in Wonderland:-paragraph-719]] [[Alice in Wonderland:-paragraph-720]] [[Alice in Wonderland:-paragraph-721]] [[Alice in Wonderland:-paragraph-722]] [[Alice in Wonderland:-paragraph-723]] [[Alice in Wonderland:-paragraph-724]] [[Alice in Wonderland:-paragraph-725]] [[Alice in Wonderland:-paragraph-726]] [[Alice in Wonderland:-paragraph-727]] [[Alice in Wonderland:-paragraph-728]] [[Alice in Wonderland:-paragraph-729]] [[Alice in Wonderland:-paragraph-730]] [[Alice in Wonderland:-paragraph-731]] [[Alice in Wonderland:-paragraph-732]] [[Alice in Wonderland:-paragraph-733]] [[Alice in Wonderland:-paragraph-734]] [[Alice in Wonderland:-paragraph-735]] [[Alice in Wonderland:-paragraph-736]] [[Alice in Wonderland:-paragraph-737]]", "tags": "TableOfContents", "text": ""},
|
||||
{"title": "Chapter 12", "story-tiddlers": "[[Alice in Wonderland:-paragraph-738]] [[Alice in Wonderland:-paragraph-739]] [[Alice in Wonderland:-paragraph-740]] [[Alice in Wonderland:-paragraph-741]] [[Alice in Wonderland:-paragraph-742]] [[Alice in Wonderland:-paragraph-743]] [[Alice in Wonderland:-paragraph-744]] [[Alice in Wonderland:-paragraph-745]] [[Alice in Wonderland:-paragraph-746]] [[Alice in Wonderland:-paragraph-747]] [[Alice in Wonderland:-paragraph-748]] [[Alice in Wonderland:-paragraph-749]] [[Alice in Wonderland:-paragraph-750]] [[Alice in Wonderland:-paragraph-751]] [[Alice in Wonderland:-paragraph-752]] [[Alice in Wonderland:-paragraph-753]] [[Alice in Wonderland:-paragraph-754]] [[Alice in Wonderland:-paragraph-755]] [[Alice in Wonderland:-paragraph-756]] [[Alice in Wonderland:-paragraph-757]] [[Alice in Wonderland:-paragraph-758]] [[Alice in Wonderland:-paragraph-759]] [[Alice in Wonderland:-paragraph-760]] [[Alice in Wonderland:-paragraph-761]] [[Alice in Wonderland:-paragraph-762]] [[Alice in Wonderland:-paragraph-763]] [[Alice in Wonderland:-paragraph-764]] [[Alice in Wonderland:-paragraph-765]] [[Alice in Wonderland:-paragraph-766]] [[Alice in Wonderland:-paragraph-767]] [[Alice in Wonderland:-paragraph-768]] [[Alice in Wonderland:-paragraph-769]] [[Alice in Wonderland:-paragraph-770]] [[Alice in Wonderland:-paragraph-771]] [[Alice in Wonderland:-paragraph-772]] [[Alice in Wonderland:-paragraph-773]] [[Alice in Wonderland:-paragraph-774]] [[Alice in Wonderland:-paragraph-775]] [[Alice in Wonderland:-paragraph-776]] [[Alice in Wonderland:-paragraph-777]] [[Alice in Wonderland:-paragraph-778]] [[Alice in Wonderland:-paragraph-779]] [[Alice in Wonderland:-paragraph-780]] [[Alice in Wonderland:-paragraph-781]] [[Alice in Wonderland:-paragraph-782]] [[Alice in Wonderland:-paragraph-783]] [[Alice in Wonderland:-paragraph-784]] [[Alice in Wonderland:-paragraph-785]] [[Alice in Wonderland:-paragraph-786]] [[Alice in Wonderland:-paragraph-787]] [[Alice in Wonderland:-paragraph-788]] [[Alice in Wonderland:-paragraph-789]] [[Alice in Wonderland:-paragraph-790]] [[Alice in Wonderland:-paragraph-791]] [[Alice in Wonderland:-paragraph-792]] [[Alice in Wonderland:-paragraph-793]] [[Alice in Wonderland:-paragraph-794]] [[Alice in Wonderland:-paragraph-795]] [[Alice in Wonderland:-paragraph-796]] [[Alice in Wonderland:-paragraph-797]] [[Alice in Wonderland:-paragraph-798]] [[Alice in Wonderland:-paragraph-799]] [[Alice in Wonderland:-paragraph-800]] [[Alice in Wonderland:-paragraph-801]] [[Alice in Wonderland:-paragraph-802]] [[Alice in Wonderland:-paragraph-803]] [[Alice in Wonderland:-paragraph-804]] [[Alice in Wonderland:-paragraph-805]] [[Alice in Wonderland:-paragraph-806]] [[Alice in Wonderland:-paragraph-807]] [[Alice in Wonderland:-paragraph-808]] [[Alice in Wonderland:-paragraph-809]] [[Alice in Wonderland:-paragraph-810]]", "tags": "TableOfContents", "text": ""}
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
"build": {
|
||||
"index": [
|
||||
"--rendertiddler","$:/core/save/all","index.html","text/plain"],
|
||||
"empty": [
|
||||
"--rendertiddler","$:/core/save/all","empty.html","text/plain",
|
||||
"--rendertiddler","$:/core/save/all","empty.hta","text/plain"],
|
||||
"externalimages": [
|
||||
"--savetiddlers","[is[image]]","images",
|
||||
"--setfield","[is[image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
|
||||
|
||||
@@ -8,5 +8,5 @@ It is intended for use in testing TiddlyWiki - in particular, for switching betw
|
||||
|
||||
---
|
||||
|
||||
{{$:/core/ui/ControlPanel/Plugins/Installed}}
|
||||
{{$:/core/ui/ControlPanel/Plugins}}
|
||||
|
||||
|
||||
4
editions/full/tiddlers/Startup-SetLanguage.tid
Normal file
4
editions/full/tiddlers/Startup-SetLanguage.tid
Normal file
@@ -0,0 +1,4 @@
|
||||
title: $:/_Startup/SetLanguage
|
||||
tags: $:/tags/StartupAction
|
||||
|
||||
<$action-setfield $tiddler="$:/language" text={{{ [[$:/languages/en-GB]] [plugin-type[language]sort[description]removeprefix[$:/languages/]] +[prefix{$:/info/browser/language}] ~[[en-GB]] +[addprefix[$:/languages/]] }}}/>
|
||||
@@ -4,13 +4,16 @@
|
||||
"tiddlywiki/bibtex",
|
||||
"tiddlywiki/blog",
|
||||
"tiddlywiki/browser-sniff",
|
||||
"tiddlywiki/browser-storage",
|
||||
"tiddlywiki/cecily",
|
||||
"tiddlywiki/classictools",
|
||||
"tiddlywiki/codemirror",
|
||||
"tiddlywiki/comments",
|
||||
"tiddlywiki/d3",
|
||||
"tiddlywiki/github-fork-ribbon",
|
||||
"tiddlywiki/help",
|
||||
"tiddlywiki/highlight",
|
||||
"tiddlywiki/innerwiki",
|
||||
"tiddlywiki/internals",
|
||||
"tiddlywiki/jszip",
|
||||
"tiddlywiki/katex",
|
||||
@@ -21,6 +24,7 @@
|
||||
"tiddlywiki/railroad",
|
||||
"tiddlywiki/stacked-view",
|
||||
"tiddlywiki/text-slicer",
|
||||
"tiddlywiki/twitter",
|
||||
"tiddlywiki/xlsx-utils",
|
||||
"tiddlywiki/sax",
|
||||
"tiddlywiki/xmldom"
|
||||
|
||||
14
editions/innerwikidemo/tiddlers/HelloThere.tid
Normal file
14
editions/innerwikidemo/tiddlers/HelloThere.tid
Normal file
@@ -0,0 +1,14 @@
|
||||
title: HelloThere
|
||||
|
||||
This is a demo of TiddlyWiki 5's ''innerwiki'' plugin.
|
||||
|
||||
To try these examples under Node.js:
|
||||
|
||||
# Install Puppeteer, as described in the [[readme|$:/plugins/tiddlywiki/innerwiki/readme]]
|
||||
# Execute the following command in the root of the TiddlyWiki 5 repo:
|
||||
|
||||
```
|
||||
./tiddlywiki.js editions/innerwikidemo --screenshot '[[$:/plugins/tiddlywiki/innerwiki/examples]]' 4 --render '[[$:/plugins/tiddlywiki/innerwiki/examples]]' "examples.html"
|
||||
```
|
||||
|
||||
Open `examples.html` to see the generated static HTML rendering.
|
||||
@@ -0,0 +1,2 @@
|
||||
title: screenshot-7-anchor-1-x
|
||||
text: 100
|
||||
@@ -0,0 +1,2 @@
|
||||
title: screenshot-7-anchor-1-y
|
||||
text: 70
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user