mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-23 19:34:39 +00:00
Compare commits
732 Commits
v5.0.16-be
...
v5.1.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72bf150eac | ||
|
|
deebb90b46 | ||
|
|
7dce3c3ecc | ||
|
|
d83666c24b | ||
|
|
561aaa925b | ||
|
|
5c137b9002 | ||
|
|
71bc78b176 | ||
|
|
f6883e5365 | ||
|
|
9bc4345cb4 | ||
|
|
cf12bcd58a | ||
|
|
0bbd5eb292 | ||
|
|
f25053490e | ||
|
|
244b3256a9 | ||
|
|
b8ac80fd1a | ||
|
|
aec4c3cd91 | ||
|
|
4314fb478d | ||
|
|
66765ce158 | ||
|
|
6833bfb220 | ||
|
|
1914b3d8e1 | ||
|
|
f9cab4bc12 | ||
|
|
12e26009ee | ||
|
|
299bef2a77 | ||
|
|
02b8a8b9d4 | ||
|
|
55397e0ab1 | ||
|
|
9d53a1b5c4 | ||
|
|
e1ac85ddd5 | ||
|
|
744245ea32 | ||
|
|
9a4bda9c85 | ||
|
|
18ceb63f18 | ||
|
|
3305874235 | ||
|
|
6c76670137 | ||
|
|
9a36dc61ec | ||
|
|
da9f634cf7 | ||
|
|
ae7cce3c59 | ||
|
|
67dbbc8d65 | ||
|
|
2ffe53f191 | ||
|
|
ea3bdb5556 | ||
|
|
159a310bab | ||
|
|
15f3c284ae | ||
|
|
7121828980 | ||
|
|
b2dd87f44a | ||
|
|
564457de1c | ||
|
|
4194c7e3dd | ||
|
|
21a791cdcd | ||
|
|
ad13d57523 | ||
|
|
713792831e | ||
|
|
209c018c38 | ||
|
|
a4c1fee075 | ||
|
|
fc2d3ce56a | ||
|
|
f20286fb26 | ||
|
|
dcc33e52b3 | ||
|
|
e188662438 | ||
|
|
7672fb37a7 | ||
|
|
b0b89fac72 | ||
|
|
d91e4be74e | ||
|
|
ec7eddfc4e | ||
|
|
b94fc7b647 | ||
|
|
5211f9c40c | ||
|
|
c1e60736d8 | ||
|
|
9a43f9df7c | ||
|
|
b0bd5ba96f | ||
|
|
ca650e2012 | ||
|
|
5dfda99388 | ||
|
|
230f2d96de | ||
|
|
ed5a87c019 | ||
|
|
f721e25b8c | ||
|
|
86ec42c8c7 | ||
|
|
62c31ed37a | ||
|
|
49dc5694a3 | ||
|
|
4b3d634b25 | ||
|
|
2d25c40227 | ||
|
|
6ec87efb5a | ||
|
|
a501115afb | ||
|
|
5154a83cf9 | ||
|
|
18fa5a4a5d | ||
|
|
90ac41b9ec | ||
|
|
316e1eca3f | ||
|
|
c39b5b913c | ||
|
|
d053b960b6 | ||
|
|
554d2c689c | ||
|
|
0cbe396efb | ||
|
|
601884d894 | ||
|
|
73bc2a1848 | ||
|
|
4519c47551 | ||
|
|
473b28585a | ||
|
|
6fc14e5c1f | ||
|
|
2fe095fcd1 | ||
|
|
824f9c1d8c | ||
|
|
b81095349f | ||
|
|
7f7ab768f7 | ||
|
|
1695d5fe29 | ||
|
|
4840357ea0 | ||
|
|
ca2afd9eef | ||
|
|
0671e59fed | ||
|
|
06f9ed8bad | ||
|
|
644ced6d4e | ||
|
|
a671e72706 | ||
|
|
f7bdb1c04d | ||
|
|
9a6f1f66be | ||
|
|
6e4dccda4c | ||
|
|
03defe4256 | ||
|
|
39b7771f87 | ||
|
|
087a0aec58 | ||
|
|
f37a7101a7 | ||
|
|
e90e588621 | ||
|
|
353f641bcc | ||
|
|
a8d83096d3 | ||
|
|
1e02a9f0db | ||
|
|
d74fc931c1 | ||
|
|
1460b6ec12 | ||
|
|
a7c9112c40 | ||
|
|
9cd420290b | ||
|
|
5f08f89956 | ||
|
|
ea7d9652c5 | ||
|
|
515b556b48 | ||
|
|
25f4ce93ac | ||
|
|
d6dc4c14d7 | ||
|
|
fcf843d5b1 | ||
|
|
3827f98a43 | ||
|
|
612e05a247 | ||
|
|
00cdd04edd | ||
|
|
5010859ed6 | ||
|
|
7ed7cbc948 | ||
|
|
b05ff2a5d7 | ||
|
|
804c7de635 | ||
|
|
4e37a9fb09 | ||
|
|
4255084913 | ||
|
|
c538712a2e | ||
|
|
f2b8d0b2f9 | ||
|
|
3682c26817 | ||
|
|
36a43c3f41 | ||
|
|
896b7c2585 | ||
|
|
01b515a4f4 | ||
|
|
e8c56e57cc | ||
|
|
c6951ee912 | ||
|
|
8b1d6d235b | ||
|
|
9075495cc8 | ||
|
|
be3239ecc0 | ||
|
|
e34b4f18e5 | ||
|
|
90997020e7 | ||
|
|
18877f9237 | ||
|
|
e5f20d1a9c | ||
|
|
b486846a74 | ||
|
|
70984aa39f | ||
|
|
c322dc82c3 | ||
|
|
b53074a0cc | ||
|
|
d778a90eb0 | ||
|
|
e872f17842 | ||
|
|
0dcf54c3b5 | ||
|
|
3b69b7b6e8 | ||
|
|
a361ab0608 | ||
|
|
96d1981dcc | ||
|
|
a604afe871 | ||
|
|
dc9981322a | ||
|
|
ff23a84d28 | ||
|
|
bbc1d18e25 | ||
|
|
b3c3442024 | ||
|
|
b3dcd7d625 | ||
|
|
70c8659948 | ||
|
|
ef1d531091 | ||
|
|
a0460c391b | ||
|
|
09b6540998 | ||
|
|
c475302663 | ||
|
|
dd829d9140 | ||
|
|
cda495d692 | ||
|
|
e108799791 | ||
|
|
811e92c0eb | ||
|
|
766ec38487 | ||
|
|
002b07d096 | ||
|
|
68b7212150 | ||
|
|
65504d5d41 | ||
|
|
548776e828 | ||
|
|
63c174d7ed | ||
|
|
cbe2a53d6a | ||
|
|
f6f9c74fe9 | ||
|
|
651ed60987 | ||
|
|
f2e97eeb25 | ||
|
|
0d7209ff2f | ||
|
|
3630a2191e | ||
|
|
a2ddf6c4a0 | ||
|
|
e6d59ece6f | ||
|
|
b7bbcfa056 | ||
|
|
0c8e538077 | ||
|
|
67db9d57a2 | ||
|
|
61acea7e8d | ||
|
|
5dd6ebff05 | ||
|
|
2b236ceed3 | ||
|
|
c126294ae5 | ||
|
|
3048b79a45 | ||
|
|
b9ed7e52c2 | ||
|
|
cc576b052e | ||
|
|
535b695167 | ||
|
|
4d732c5733 | ||
|
|
02d37dcfcc | ||
|
|
cf6efa7ee5 | ||
|
|
15905f3b7a | ||
|
|
1c5c899096 | ||
|
|
e624f52374 | ||
|
|
46749d5f46 | ||
|
|
cf6c8e23fb | ||
|
|
90ac097f38 | ||
|
|
e14d151273 | ||
|
|
443dae39ba | ||
|
|
2188ecb91d | ||
|
|
3fd52fab0c | ||
|
|
a81375b432 | ||
|
|
9a5c7a063c | ||
|
|
352c3189da | ||
|
|
40cc1fcf5e | ||
|
|
ad71a102c2 | ||
|
|
b311409924 | ||
|
|
65ba441e81 | ||
|
|
10e7e53a10 | ||
|
|
9add946484 | ||
|
|
fb799a57ff | ||
|
|
25cf30b946 | ||
|
|
3ca8d7b6cc | ||
|
|
52a2d5ade2 | ||
|
|
d9ccac21d0 | ||
|
|
f85b07e70b | ||
|
|
6071f3d385 | ||
|
|
e343ccc458 | ||
|
|
3acb5de407 | ||
|
|
05280f09d7 | ||
|
|
459133cc57 | ||
|
|
860a7070a9 | ||
|
|
c26bd4c5a8 | ||
|
|
6626da9b3b | ||
|
|
e51c4fcb92 | ||
|
|
e028b87ce8 | ||
|
|
7ccf43d3ca | ||
|
|
1f7a4e3336 | ||
|
|
59f04ffd31 | ||
|
|
32fcd2e21b | ||
|
|
1a9f042c25 | ||
|
|
d9bdc89dfd | ||
|
|
eaf41f3f18 | ||
|
|
46f6dd02f8 | ||
|
|
1c8d62c3aa | ||
|
|
42abef6fbf | ||
|
|
18a2b48b3b | ||
|
|
10040f51e1 | ||
|
|
81fc8ef570 | ||
|
|
f8f3d0fb9b | ||
|
|
23c2d90ee8 | ||
|
|
115245a632 | ||
|
|
9dff0c4b12 | ||
|
|
27728f397c | ||
|
|
580e046e7d | ||
|
|
b1fb0a2a07 | ||
|
|
f604a0ac8e | ||
|
|
a4b9032d9c | ||
|
|
beb360d992 | ||
|
|
8d48e194cf | ||
|
|
0799c06b1b | ||
|
|
eacb9e53eb | ||
|
|
e2046ce4ff | ||
|
|
c9f692d671 | ||
|
|
88199ffd62 | ||
|
|
a159b5baf3 | ||
|
|
8a0309a4bd | ||
|
|
f8e11da0fc | ||
|
|
6b3646a025 | ||
|
|
b3df07ae3e | ||
|
|
61af1f9379 | ||
|
|
4264fe66ca | ||
|
|
6bc2e18cbd | ||
|
|
aaaed439f7 | ||
|
|
143d4c1ae4 | ||
|
|
ccce478b3a | ||
|
|
113d8efb80 | ||
|
|
f0e638ea62 | ||
|
|
972f91182d | ||
|
|
49f0989db8 | ||
|
|
b73006a5e9 | ||
|
|
22bc2dd9d7 | ||
|
|
3088d50e87 | ||
|
|
3dfc569c00 | ||
|
|
b7ce56e3ce | ||
|
|
9059ea5211 | ||
|
|
4ebccbe468 | ||
|
|
32d55cf072 | ||
|
|
5139c82f53 | ||
|
|
6ea18cb61a | ||
|
|
13290692de | ||
|
|
1007ec2ad6 | ||
|
|
f00c4c164b | ||
|
|
d0deacbdc4 | ||
|
|
f81b0a6fa9 | ||
|
|
3a43de2272 | ||
|
|
96b7d0eeba | ||
|
|
378e687a42 | ||
|
|
14179c9734 | ||
|
|
d047ccdc84 | ||
|
|
62edd1e8a3 | ||
|
|
d4617ffbe4 | ||
|
|
3dc99e9605 | ||
|
|
e536516e81 | ||
|
|
e95c87f068 | ||
|
|
f4f263ea69 | ||
|
|
e0a00f360a | ||
|
|
658a0e5f0a | ||
|
|
962a865347 | ||
|
|
0ea7f7589b | ||
|
|
ff0b2afef7 | ||
|
|
bde00aa455 | ||
|
|
1c86a8e0bb | ||
|
|
2ee82a289a | ||
|
|
15e9e21d2a | ||
|
|
ebb911f934 | ||
|
|
dac046c133 | ||
|
|
ab1def7d94 | ||
|
|
c900c71f8a | ||
|
|
15c527802b | ||
|
|
055dda9ee2 | ||
|
|
d3ad7a52c1 | ||
|
|
5e5c416ead | ||
|
|
9c71756738 | ||
|
|
50a7b20cf0 | ||
|
|
6fbef65ded | ||
|
|
1075770bf7 | ||
|
|
dfd35e8c12 | ||
|
|
59bbf3d56b | ||
|
|
15a28bc0a5 | ||
|
|
390a6759ea | ||
|
|
1a75fd0e21 | ||
|
|
9eb2db791f | ||
|
|
889f8c43e2 | ||
|
|
c5d0ae4c9b | ||
|
|
3c58426ff2 | ||
|
|
06cc8ed5ef | ||
|
|
e40f4ff630 | ||
|
|
3ad4febc15 | ||
|
|
8610a9c064 | ||
|
|
cda1e916bf | ||
|
|
9e6dab06cc | ||
|
|
7ed7aba8d0 | ||
|
|
e3fee7d56d | ||
|
|
449d12ff60 | ||
|
|
0a3c399305 | ||
|
|
f2791f7d5d | ||
|
|
1297c6e820 | ||
|
|
b82806d33d | ||
|
|
d39760fa21 | ||
|
|
b22c682ab3 | ||
|
|
1c018183db | ||
|
|
401d18e0d7 | ||
|
|
f9ff7c44ea | ||
|
|
b239b3d623 | ||
|
|
5dbcc5f601 | ||
|
|
9aee46a8f0 | ||
|
|
4ff9346f3a | ||
|
|
b0d83301ab | ||
|
|
026ddb7081 | ||
|
|
02601a02fc | ||
|
|
b31300c59c | ||
|
|
cbb16df47a | ||
|
|
ca211094a2 | ||
|
|
ac08f5f4a7 | ||
|
|
de02d5ce9d | ||
|
|
88a9115042 | ||
|
|
3ad8742db8 | ||
|
|
4199fc9683 | ||
|
|
194f525478 | ||
|
|
ba7422b407 | ||
|
|
22006f995e | ||
|
|
ea17e339f3 | ||
|
|
c63488d155 | ||
|
|
c20e6b9d1e | ||
|
|
4f0ce1a835 | ||
|
|
28b2ac4fb3 | ||
|
|
a9f46525a0 | ||
|
|
8cc236b4dc | ||
|
|
1b0eec143e | ||
|
|
813bd2fe1d | ||
|
|
2d6c6fd208 | ||
|
|
6d9bd4df8a | ||
|
|
2b78d5a977 | ||
|
|
60541c5a6e | ||
|
|
cbfc9fcc56 | ||
|
|
3472721dbc | ||
|
|
57693efce7 | ||
|
|
67a90cdfad | ||
|
|
d859fc2f58 | ||
|
|
d27e157cec | ||
|
|
40567c2f88 | ||
|
|
ef28630d9a | ||
|
|
4e0b5faa4c | ||
|
|
ea6493d70b | ||
|
|
cd713bf0c2 | ||
|
|
600b49efd1 | ||
|
|
73a4747d05 | ||
|
|
6ceec9fb44 | ||
|
|
1e573f7a8d | ||
|
|
199aa1c2e7 | ||
|
|
4373f48731 | ||
|
|
775482a242 | ||
|
|
2571f534aa | ||
|
|
320e0af68c | ||
|
|
b0a4bd5479 | ||
|
|
4ed990b701 | ||
|
|
0d175338c3 | ||
|
|
a4db140dc8 | ||
|
|
a0a8a457f4 | ||
|
|
7105a3a353 | ||
|
|
c4123ba374 | ||
|
|
c44a3bb4a4 | ||
|
|
c743f15457 | ||
|
|
c7e3e36564 | ||
|
|
a00d21a6b3 | ||
|
|
c0e420051b | ||
|
|
dd6659d393 | ||
|
|
fc11e8cd13 | ||
|
|
af019623e0 | ||
|
|
0903c35f61 | ||
|
|
2588f996f1 | ||
|
|
d65f80efbb | ||
|
|
68b19a48f7 | ||
|
|
9093f04ba3 | ||
|
|
65f242f857 | ||
|
|
1b11e4e949 | ||
|
|
f187122c35 | ||
|
|
c713eddbef | ||
|
|
af8c435487 | ||
|
|
a878f0a5c9 | ||
|
|
2e72162b0c | ||
|
|
2d188c2436 | ||
|
|
06ef809cf2 | ||
|
|
3d4a3a0f54 | ||
|
|
872e6fc253 | ||
|
|
c8a131ffd4 | ||
|
|
905c793964 | ||
|
|
22060fc198 | ||
|
|
1bcada1f4b | ||
|
|
bda349801e | ||
|
|
fe83d289f4 | ||
|
|
c430f9d2c3 | ||
|
|
5351102990 | ||
|
|
9ca6b6bfb8 | ||
|
|
fcf65433ea | ||
|
|
45f7b6cc45 | ||
|
|
54eb85218b | ||
|
|
a464256e18 | ||
|
|
022eba9c75 | ||
|
|
8b0c471736 | ||
|
|
bc985553ed | ||
|
|
ed4597f12d | ||
|
|
05dfddeb04 | ||
|
|
184b9817b4 | ||
|
|
e20ef97c27 | ||
|
|
def4aca200 | ||
|
|
f72bb66f6a | ||
|
|
a95bb2b6ec | ||
|
|
f781b2b8d0 | ||
|
|
0ee4d21d0d | ||
|
|
b7ce2a8ab6 | ||
|
|
9adc30f69f | ||
|
|
ccd916ca7c | ||
|
|
50be85287b | ||
|
|
08d588fb08 | ||
|
|
673ede5b3c | ||
|
|
ffb26956b5 | ||
|
|
411ed76c70 | ||
|
|
6a952387d2 | ||
|
|
5d0c32b454 | ||
|
|
58ff092d4a | ||
|
|
9840b8783b | ||
|
|
ab944bbf02 | ||
|
|
5e81684b5b | ||
|
|
c9f9de3e18 | ||
|
|
1a95ec9ac4 | ||
|
|
faafeca02c | ||
|
|
e8ae77e738 | ||
|
|
c3eeaeb89f | ||
|
|
04df2a4a20 | ||
|
|
b7f638aef3 | ||
|
|
7ed1a2ebc7 | ||
|
|
f6ff0a7f71 | ||
|
|
d45c417c18 | ||
|
|
418be0fda8 | ||
|
|
d56d4b0c65 | ||
|
|
f4fff7a330 | ||
|
|
04a5f7f002 | ||
|
|
24e7c7fc0f | ||
|
|
df2cf8bf06 | ||
|
|
3119254373 | ||
|
|
10482d993e | ||
|
|
b84fee6285 | ||
|
|
9e56a9a5c1 | ||
|
|
1be8ca4a40 | ||
|
|
c9384f6fdf | ||
|
|
8b6ae7164b | ||
|
|
15debf7d6a | ||
|
|
3c951476ee | ||
|
|
97a4612916 | ||
|
|
3014fa0b61 | ||
|
|
b8167633ef | ||
|
|
36b47b962e | ||
|
|
15d75dfef5 | ||
|
|
80179968a1 | ||
|
|
ad0cc031b8 | ||
|
|
b3b4567fc4 | ||
|
|
7140ed997e | ||
|
|
4b1ccc4171 | ||
|
|
469affa2a5 | ||
|
|
7d16691035 | ||
|
|
d70182a7f7 | ||
|
|
8e838bb7a5 | ||
|
|
9eb542da20 | ||
|
|
179cba3425 | ||
|
|
00b3fd1761 | ||
|
|
e8e04aa1f9 | ||
|
|
efd4d2afef | ||
|
|
3e1a64f99c | ||
|
|
1e8aeb0d9f | ||
|
|
7d2cb13377 | ||
|
|
2c3aa4e723 | ||
|
|
e04cddced8 | ||
|
|
8432a9f0fb | ||
|
|
22feaa55f2 | ||
|
|
3dd7c66597 | ||
|
|
4637119b96 | ||
|
|
7c561ac191 | ||
|
|
f818b1c923 | ||
|
|
af169bf434 | ||
|
|
c3b5c06c3e | ||
|
|
be2dd6e8cb | ||
|
|
6a2f4092a1 | ||
|
|
4ea2a1b5e1 | ||
|
|
307ecbdef4 | ||
|
|
a115a8c168 | ||
|
|
6cc8b2d06e | ||
|
|
8fcaf7c628 | ||
|
|
53b55e6949 | ||
|
|
20f3e38da3 | ||
|
|
15a078d0a7 | ||
|
|
bd123b01e0 | ||
|
|
a70e928921 | ||
|
|
257accb7bf | ||
|
|
aadab77a08 | ||
|
|
d13e23132a | ||
|
|
ac54fe3326 | ||
|
|
210d7fbc23 | ||
|
|
7c356a300c | ||
|
|
58d05af356 | ||
|
|
8dceb7206e | ||
|
|
7cfe62e566 | ||
|
|
1fca2792b8 | ||
|
|
f1f9db9378 | ||
|
|
0e03bace94 | ||
|
|
e51d78187f | ||
|
|
c8bc314a33 | ||
|
|
219f305fae | ||
|
|
5ea7cc0f83 | ||
|
|
5a0a7146b9 | ||
|
|
fdabb5ce4a | ||
|
|
880fe59c80 | ||
|
|
0f8e877f73 | ||
|
|
d7d2b7a846 | ||
|
|
c6c4cf2289 | ||
|
|
8e0a58ddf6 | ||
|
|
6b06cbd7b2 | ||
|
|
1764300000 | ||
|
|
507e1bbaf7 | ||
|
|
8dd8db86b8 | ||
|
|
57967769f4 | ||
|
|
c8d2af7f2b | ||
|
|
8534171c41 | ||
|
|
cead56f92f | ||
|
|
efe562e6a9 | ||
|
|
375549c68c | ||
|
|
1bbe440856 | ||
|
|
f020ba0e2a | ||
|
|
5ef9140463 | ||
|
|
dbbf283673 | ||
|
|
c1de85838f | ||
|
|
a599b76b0c | ||
|
|
0a481e4b93 | ||
|
|
051ea8ac82 | ||
|
|
d34968b494 | ||
|
|
c58975e97a | ||
|
|
9221b575ce | ||
|
|
b14744c20c | ||
|
|
43dcb02a88 | ||
|
|
cba737f4ca | ||
|
|
ea929d445b | ||
|
|
20ff91f615 | ||
|
|
a875269a56 | ||
|
|
a41ae54b41 | ||
|
|
285aa33739 | ||
|
|
32b660d1b9 | ||
|
|
671f783c9b | ||
|
|
6fe19d5f42 | ||
|
|
9292a41751 | ||
|
|
52027e5028 | ||
|
|
5fba012f6a | ||
|
|
2e55a9fae9 | ||
|
|
3d5ad42ac8 | ||
|
|
9e8617c56f | ||
|
|
3f0606990a | ||
|
|
bb6ad83cfa | ||
|
|
cf5d4998a9 | ||
|
|
63c109280a | ||
|
|
c41b7806c6 | ||
|
|
6e9cd59437 | ||
|
|
278f58c19e | ||
|
|
87449ff156 | ||
|
|
917ed9752f | ||
|
|
d22ed1d10d | ||
|
|
e395f96ad0 | ||
|
|
9126fb6afa | ||
|
|
ba0a2f185f | ||
|
|
52c6ae8505 | ||
|
|
3ca4b34c6e | ||
|
|
64b60445b8 | ||
|
|
1b4274d7e5 | ||
|
|
1c1a5c7252 | ||
|
|
1a18e361cc | ||
|
|
2cb85e045a | ||
|
|
63a2eafe5f | ||
|
|
1a0b567458 | ||
|
|
d7e774562e | ||
|
|
ead4e9276a | ||
|
|
f16d1832aa | ||
|
|
5cb4e69839 | ||
|
|
d5c6f3cecf | ||
|
|
d7b1dd2315 | ||
|
|
7f9c7b441f | ||
|
|
95229674a1 | ||
|
|
756e05504b | ||
|
|
4749718ba0 | ||
|
|
5ce4c4ab7b | ||
|
|
6a508e580d | ||
|
|
3aaa71a513 | ||
|
|
6cc442e7b5 | ||
|
|
efad7ba896 | ||
|
|
16e59ab78b | ||
|
|
4888d12099 | ||
|
|
1f2f5d3ed8 | ||
|
|
2a15e7d473 | ||
|
|
0ce99cdf49 | ||
|
|
477d1da1ce | ||
|
|
60ef76612b | ||
|
|
ed36658291 | ||
|
|
328e068ea8 | ||
|
|
74afa06394 | ||
|
|
e1d4e2739c | ||
|
|
48bb73f036 | ||
|
|
6e577a02d8 | ||
|
|
f36e58a315 | ||
|
|
b4e0a6de1e | ||
|
|
1e5ca780a1 | ||
|
|
ba3f800235 | ||
|
|
7e93c93785 | ||
|
|
ede244f0a4 | ||
|
|
f90c649d2a | ||
|
|
9826562e8f | ||
|
|
a976b312b3 | ||
|
|
94a885fe2d | ||
|
|
cf1ae23c28 | ||
|
|
3ee587b6a0 | ||
|
|
23157ffac4 | ||
|
|
e114a1df24 | ||
|
|
924c685215 | ||
|
|
296c9b8c31 | ||
|
|
3713b17955 | ||
|
|
47012fa61b | ||
|
|
b88ead37b0 | ||
|
|
7460fab46e | ||
|
|
c15ba77be0 | ||
|
|
7bd8d6f02b | ||
|
|
47ae6be590 | ||
|
|
f461b1ab91 | ||
|
|
914cc6e8d7 | ||
|
|
5a5fe75289 | ||
|
|
465b3ac1de | ||
|
|
48d4c615d6 | ||
|
|
f64e25cb44 | ||
|
|
28b4e0951e | ||
|
|
22ec703f5f | ||
|
|
656a0070ef | ||
|
|
b2ceee3be6 | ||
|
|
19caee517e | ||
|
|
abe9a0dbc2 | ||
|
|
cbab2b6245 | ||
|
|
3f07e6b220 | ||
|
|
aa6e317435 | ||
|
|
a7e45c221f | ||
|
|
b0ddb54e09 | ||
|
|
341db4e4d2 | ||
|
|
0f5dcfe1a9 | ||
|
|
d1fe83cd4c | ||
|
|
f738972f12 | ||
|
|
4bbfef72b2 | ||
|
|
f44a538bcf | ||
|
|
4ccc0fc262 | ||
|
|
d2f0cd6321 | ||
|
|
9b657bc1d6 | ||
|
|
8961e2ba19 | ||
|
|
66fd1ed1ea | ||
|
|
5910afae4f | ||
|
|
474d2ddb72 | ||
|
|
e9519d7ad5 | ||
|
|
169a38164f | ||
|
|
94c9f303b1 | ||
|
|
efd3d1b089 | ||
|
|
42f1a04cd7 | ||
|
|
47c53f924f | ||
|
|
6f4af4fc27 | ||
|
|
487c4a40ab | ||
|
|
8ae0c583b0 | ||
|
|
542788bfeb | ||
|
|
bb97bc11fd | ||
|
|
7f75d651d4 | ||
|
|
a375d2d9b6 | ||
|
|
e7358c9b31 | ||
|
|
f87ce7e98a | ||
|
|
e34e83db0b | ||
|
|
f8ae0bf3e6 | ||
|
|
2428111daf | ||
|
|
c1f80ab05d | ||
|
|
2690d2cb7c | ||
|
|
c956d9c1dc | ||
|
|
5b7dbfc5fb | ||
|
|
3788571802 | ||
|
|
ad045a28db | ||
|
|
b498726561 | ||
|
|
d7b40b235d | ||
|
|
2136d1de5a | ||
|
|
7c8f50c898 | ||
|
|
cb607820dd | ||
|
|
cda0b542f9 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.DS_Store
|
||||
.c9/
|
||||
tmp/
|
||||
output/
|
||||
|
||||
@@ -2,15 +2,6 @@
|
||||
|
||||
rem build TiddlyWiki 2.x
|
||||
|
||||
rem Prepare the readme file from the revelant content in the tw5.com wiki
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
editions\tw5.com ^
|
||||
--verbose ^
|
||||
--output editions\tw2 ^
|
||||
--rendertiddler TiddlyWiki2ReadMe readme.md text/html ^
|
||||
|| exit 1
|
||||
|
||||
rem cook the TiddlyWiki 2.x.x index file
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
@@ -2,15 +2,6 @@
|
||||
|
||||
# build TiddlyWiki 2.x
|
||||
|
||||
# Prepare the readme file from the revelant content in the tw5.com wiki
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
editions/tw5.com \
|
||||
--verbose \
|
||||
--output editions/tw2 \
|
||||
--rendertiddler TiddlyWiki2ReadMe readme.md text/html \
|
||||
|| exit 1
|
||||
|
||||
# cook the TiddlyWiki 2.x.x index file
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
3
bin/readme.md
Normal file
3
bin/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
<h1 class=''>Script Files</h1><p>The <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a> repository contains several scripts in the <code>bin</code> folder that you can use to automate common tasks, or as a useful starting point for your own scripts. See <a class='tc-tiddlylink tc-tiddlylink-missing' href='http://tiddlywiki.com/static/Scripts%2520for%2520building%2520tiddlywiki.com.html'>Scripts for building tiddlywiki.com</a> for details of the scripts used to build and release <a class='tc-tiddlylink-external' href='http://tiddlywiki.com/' target='_blank'>http://tiddlywiki.com/</a>.</p><p>All the scripts expect to be run from the root folder of the repository.</p><h2 class=''><code>serve</code>: serves tw5.com</h2><pre><code>./bin/serve.sh -h
|
||||
./bin/serve.sh [edition dir] [username] [password] [host] [port]</code></pre><p>Or:</p><pre><code>./bin/serve.cmd -h
|
||||
./bin/serve.cmd [edition dir] [username] [password] [host] [port]</code></pre><p>This script starts <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a> running as an HTTP server, defaulting to the content from the <code>tw5.com-server</code> edition. By default, the Node.js serves on port 8080. If the optional <code>username</code> parameter is provided, it is used for signing edits. If the <code>password</code> is provided then HTTP basic authentication is used. Run the script with the <code>-h</code> parameter to see online help.</p><p>To experiment with this configuration, run the script and then visit <code>http://127.0.0.1:8080</code> in a browser.</p><p>Changes made in the browser propagate to the server over HTTP (use the browser developer console to see these requests). The server then syncs changes to the file system (and logs each change to the screen).</p><h2 class=''><code>test</code>: build and run tests</h2><p>This script runs the <code>test</code> edition of <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> on the server to perform the server-side tests and to build <code>test.html</code> for running the tests in the browser.</p><h2 class=''><code>lazy</code>: serves tw5.com with lazily loaded images</h2><pre><code>./bin/lazy.sh <username> [<password>]</code></pre><p>Or:</p><pre><code>./bin/lazy.cmd <username> [<password>]</code></pre><p>This script serves the <code>tw5.com-server</code> edition content with <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/LazyLoading.html'>LazyLoading</a> applied to images.</p><h2 class=''><code>2bld</code>: builds <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> 2.6.5</h2><p>This script builds <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> 2.6.5 from the original source and then displays the differences between them (<code>diff</code> is used for *nix, <code>fc</code> for Windows).</p>
|
||||
95
bin/serve.cmd
Normal file
95
bin/serve.cmd
Normal file
@@ -0,0 +1,95 @@
|
||||
:: This script allows you to serve different TiddlyWiki editions.
|
||||
::
|
||||
:: It respects a TW_SERVE_EDITION_PATH environment variable.
|
||||
:: If this variable is set it will be used. A command line parameter will overwrite it.
|
||||
::
|
||||
:: Ensure your server tiddlywiki.info configuration contains
|
||||
:: these plugins, otherwise saving is not possible:
|
||||
:: - "tiddlywiki/tiddlyweb"
|
||||
:: - "tiddlywiki/filesystem"
|
||||
|
||||
@echo off
|
||||
echo.
|
||||
|
||||
:: Help Wanted!!
|
||||
:: If you know how to improve -help and -version handling let us know
|
||||
|
||||
if "%1" == "--help" call :help
|
||||
if "%1" == "-h" call :help
|
||||
|
||||
if "%1" == "--version" call :version
|
||||
if "%1" == "-v" call :version
|
||||
|
||||
if "%1" == "help" (
|
||||
call :help
|
||||
) else (
|
||||
call :main %1 %2 %3 %4 %5
|
||||
)
|
||||
exit 0
|
||||
|
||||
:version
|
||||
echo TiddlyWiki serve.cmd script version 0.0.2"
|
||||
echo.
|
||||
exit 0
|
||||
goto:eof
|
||||
|
||||
:help
|
||||
echo Serve TiddlyWiki over HTTP
|
||||
echo.
|
||||
echo Optional parameters
|
||||
echo - %%1 .. edition directory .. full or relative path to edition directory
|
||||
echo - %%2 .. username .. for signing edits - can be empty like this: '""'
|
||||
echo - %%3 .. password .. can be empty like this: '""'
|
||||
echo - %%4 .. IP address or HOST .. defaults to localhost
|
||||
echo - %%5 .. PORT .. defaults to 8080
|
||||
echo.
|
||||
echo Example 1 .\serve .\editions\tw5.com-server username
|
||||
echo Example 2 .\serve .\editions\tw5.com-server '""' '""' localhost 9090
|
||||
echo .. Example 2 defines: empty username, empty password
|
||||
echo.
|
||||
echo Help information
|
||||
echo -v, --version .. shows the script version
|
||||
echo -h, --help, help .. shows this help information
|
||||
echo.
|
||||
|
||||
exit 0
|
||||
goto:eof
|
||||
|
||||
:main
|
||||
if [%1] NEQ [] (
|
||||
:: if there is a editions parameter .. use it.
|
||||
set TW_SERVE_EDITION_PATH=%1
|
||||
) else (
|
||||
if [%TW_SERVE_EDITION_PATH%] == [] (
|
||||
echo Please provide an edition path as your first parameter or
|
||||
echo define a valid TW_SERVE_EDITION_PATH environment variable.
|
||||
echo.
|
||||
echo Using default edition path 'editions\tw5.com-server' because no environment variable is set
|
||||
echo.
|
||||
set TW_SERVE_EDITION_PATH= editions\tw5.com-server
|
||||
)
|
||||
)
|
||||
|
||||
:: The editions path must exist!
|
||||
if not exist %TW_SERVE_EDITION_PATH%\nul (
|
||||
echo The Path: "%TW_SERVE_EDITION_PATH%" does not exist
|
||||
exit 1
|
||||
)
|
||||
|
||||
if [%5] == [] (
|
||||
echo Using default port 8080
|
||||
set PORT=8080
|
||||
) else (
|
||||
echo Using port %5
|
||||
set PORT=%5
|
||||
)
|
||||
|
||||
echo Using edition: %TW_SERVE_EDITION_PATH%
|
||||
echo.
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
%TW_SERVE_EDITION_PATH% ^
|
||||
--verbose ^
|
||||
--server %PORT% $:/core/save/all text/plain text/html %2 %3 %4^
|
||||
|| exit 1
|
||||
goto:eof
|
||||
124
bin/serve.sh
Executable file
124
bin/serve.sh
Executable file
@@ -0,0 +1,124 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This script allows you to serve different TiddlyWiki editions.
|
||||
#
|
||||
# It respects a TW_SERVE_EDITION_PATH environment variable.
|
||||
# If this variable is set it will be used. A command line parameter will overwrite it.
|
||||
#
|
||||
# Ensure your server tiddlywiki.info configuration contains
|
||||
# these plugins, otherwise saving is not possible:
|
||||
# - "tiddlywiki/tiddlyweb"
|
||||
# - "tiddlywiki/filesystem"
|
||||
|
||||
# Global settings
|
||||
# set -o nounset #exit if a variable is not set
|
||||
set -o errexit #exit on error
|
||||
|
||||
# Get command name and path info needed for help text
|
||||
ARG0=$(basename $0)
|
||||
#ARG0DIR=$(dirname $0)
|
||||
#[ $ARG0DIR == "." ] && ARG0DIR=$PWD
|
||||
|
||||
# ---- helper functions ----
|
||||
version () {
|
||||
echo "$ARG0, TiddlyWiki serve script version 0.0.2"
|
||||
echo
|
||||
}
|
||||
|
||||
usage() {
|
||||
version
|
||||
echo Usage:$'\t'$ARG0 [edition dir] [username] [password] [host] [port]
|
||||
echo
|
||||
}
|
||||
|
||||
help() {
|
||||
usage
|
||||
|
||||
echo Optional parameters
|
||||
echo
|
||||
echo $'\t'\$1 .. edition directory .. full or relative path to edition directory
|
||||
echo $'\t'\$2 .. username for signing edits - can be empty like this: \"\"
|
||||
echo $'\t'\$3 .. password - can be empty like this: \"\"
|
||||
echo $'\t'\$4 .. IP address or HOST name .. defaults to: localhost
|
||||
echo $'\t'\$5 .. PORT .. defaults to: 8080
|
||||
echo
|
||||
echo $'\t'-v .. Version
|
||||
echo $'\t'-h .. Help
|
||||
echo
|
||||
echo Example 1 ./serve ./editions/tw5.com-server username
|
||||
echo Example 2 ./serve ./editions/tw5.com-server \"\" \"\" localhost 9090
|
||||
echo .. Example 2 defines: empty username, empty password
|
||||
echo
|
||||
}
|
||||
|
||||
_log () {
|
||||
echo
|
||||
echo "---> $1"
|
||||
}
|
||||
|
||||
# error handling for wrong parameters
|
||||
error() {
|
||||
echo "$ARG0: $*" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# start the server
|
||||
serve () {
|
||||
#echo 1:$1 2:$2 3:$3 4:$4 5:$5
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
"$1" \
|
||||
--verbose \
|
||||
--server "$5" $:/core/save/all text/plain text/html "$2" "$3" "$4" \
|
||||
|| exit 1
|
||||
}
|
||||
|
||||
check_edition_directory () {
|
||||
# The editions directory must exist and should contain a tiddlywiki.info file
|
||||
if [ ! -d $TW_SERVE_EDITION_PATH ]; then
|
||||
_log "Edition directory: '$TW_SERVE_EDITION_PATH' does not exist"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------------------------------
|
||||
# command line parameter handler
|
||||
while getopts vh flag
|
||||
do
|
||||
case "$flag" in
|
||||
(h) help; exit 0;;
|
||||
(v) version; exit 0;;
|
||||
(*) help
|
||||
error
|
||||
exit 1;;
|
||||
esac
|
||||
done
|
||||
shift $(expr $OPTIND - 1)
|
||||
|
||||
#----------------------------------------------------
|
||||
|
||||
# If no edition parameter is provided, use Jeremy's defaults
|
||||
if [ $# -eq 0 ]; then
|
||||
# check if the edition path environment variable is set. If yes use it.
|
||||
[ -z $TW_SERVE_EDITION_PATH ] && TW_SERVE_EDITION_PATH="./editions/tw5.com-server"
|
||||
|
||||
# directory must exist
|
||||
check_edition_directory
|
||||
|
||||
# serve the default settings.
|
||||
serve "$TW_SERVE_EDITION_PATH" "" "" localhost 8080
|
||||
else
|
||||
if [ -z "$5" ]; then
|
||||
PORT=8080
|
||||
else
|
||||
PORT=$5
|
||||
fi
|
||||
|
||||
# If the 1st parameter (edition) is set, it has priority.
|
||||
TW_SERVE_EDITION_PATH=$1
|
||||
|
||||
# directory must exist
|
||||
check_edition_directory
|
||||
|
||||
serve "$TW_SERVE_EDITION_PATH" "$2" "$3" "$4" $PORT
|
||||
fi
|
||||
11
bin/test.cmd
Normal file
11
bin/test.cmd
Normal file
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
|
||||
rem test TiddlyWiki5 for tiddlywiki.com
|
||||
|
||||
rem Run the test edition to run the node.js tests and to generate test.html for tests in the browser
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\test ^
|
||||
--verbose ^
|
||||
--rendertiddler $:/core/save/all test.html text/plain ^
|
||||
|| exit 1
|
||||
13
bin/test.sh
Executable file
13
bin/test.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
# test TiddlyWiki5 for tiddlywiki.com
|
||||
|
||||
# Run the test edition to run the node.js tests and to generate test.html for tests in the browser
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/test \
|
||||
--verbose \
|
||||
--rendertiddler $:/core/save/all test.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
echo To run the tests in a browser, open "editions/test/output/test.html"
|
||||
@@ -1,56 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Abbreviated version of bld.sh for quicker builds
|
||||
|
||||
# Set up the build output directory
|
||||
|
||||
if [ -z "$TW5_BUILD_OUTPUT" ]; then
|
||||
TW5_BUILD_OUTPUT=../jermolene.github.com
|
||||
fi
|
||||
|
||||
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]"
|
||||
|
||||
# Make the CNAME file that GitHub Pages requires
|
||||
|
||||
echo "tiddlywiki.com" > $TW5_BUILD_OUTPUT/CNAME
|
||||
|
||||
# The tw5.com wiki
|
||||
# index.html: the main file, including content
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/de-AT-DE \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all de-AT-DE.html text/plain \
|
||||
--savetiddler $:/favicon.ico favicon.ico \
|
||||
|| exit 1
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/zh-Hant \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all zh-Hant.html text/plain \
|
||||
--savetiddler $:/favicon.ico favicon.ico \
|
||||
|| exit 1
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/zh-Hans \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all zh-Hans.html text/plain \
|
||||
--savetiddler $:/favicon.ico favicon.ico \
|
||||
|| exit 1
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/fr-FR \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all fr-FR.html text/plain \
|
||||
--savetiddler $:/favicon.ico favicon.ico \
|
||||
|| exit 1
|
||||
|
||||
121
bld.cmd
121
bld.cmd
@@ -1,121 +0,0 @@
|
||||
@echo off
|
||||
|
||||
rem build TiddlyWiki5 for tiddlywiki.com
|
||||
|
||||
rem Set up the build output directory
|
||||
|
||||
if "x%TW5_BUILD_OUTPUT%" == "x" (
|
||||
set TW5_BUILD_OUTPUT=..\jermolene.github.com
|
||||
)
|
||||
|
||||
if not exist %TW5_BUILD_OUTPUT%\nul (
|
||||
echo A valid TW5_BUILD_OUTPUT environment variable must be set
|
||||
exit 1
|
||||
)
|
||||
|
||||
echo Using TW5_BUILD_OUTPUT as %TW5_BUILD_OUTPUT%
|
||||
echo.
|
||||
|
||||
rem Create the `static` directories if necessary
|
||||
|
||||
setlocal enableextensions
|
||||
mkdir %TW5_BUILD_OUTPUT%\static
|
||||
setlocal disableextensions
|
||||
|
||||
rem Delete any existing content
|
||||
|
||||
del /q /s %TW5_BUILD_OUTPUT%\static
|
||||
|
||||
rem The tw5.com wiki
|
||||
rem index.html: the main file, including content
|
||||
rem empty.html: the main file, excluding content
|
||||
rem static.html: the static version of the default tiddlers
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\tw5.com ^
|
||||
--verbose ^
|
||||
--output . ^
|
||||
--build readmes ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--build favicon empty static index ^
|
||||
|| exit 1
|
||||
|
||||
rem upgrade.html: custom edition for handling upgrades
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\upgrade ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--build upgrade ^
|
||||
|| exit 1
|
||||
|
||||
rem encrypted.html: a version of the main file encrypted with the password "password"
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\tw5.com ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--build encrypted ^
|
||||
|| exit 1
|
||||
|
||||
rem tahoelafs.html: empty wiki with plugin for Tahoe-LAFS
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\tahoelafs ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--rendertiddler $:/core/save/all tahoelafs.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
rem d3demo.html: wiki to demo d3 plugin
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\d3demo ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--rendertiddler $:/core/save/all d3demo.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
rem codemirrordemo.html: wiki to demo codemirror plugin
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\codemirrordemo ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--rendertiddler $:/core/save/all codemirrordemo.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
rem markdowndemo.html: wiki to demo markdown plugin
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\markdowndemo ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--rendertiddler $:/core/save/all markdowndemo.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
rem classicparserdemo.html: wiki to demo classicparser plugin
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\classicparserdemo ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--rendertiddler $:/core/save/all classicparserdemo.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
rem highlightdemo.html: wiki to demo highlight plugin
|
||||
|
||||
node .\tiddlywiki.js ^
|
||||
.\editions\highlightdemo ^
|
||||
--verbose ^
|
||||
--output %TW5_BUILD_OUTPUT% ^
|
||||
--rendertiddler $:/core/save/all highlightdemo.html text/plain ^
|
||||
|| exit 1
|
||||
|
||||
rem Make the CNAME file that GitHub Pages requires
|
||||
|
||||
echo tiddlywiki.com > %TW5_BUILD_OUTPUT%\CNAME
|
||||
|
||||
rem Run the test edition to run the Node.js tests and to generate test.html for tests in the browser
|
||||
|
||||
.\test.cmd
|
||||
118
bld.sh
118
bld.sh
@@ -1,118 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# build TiddlyWiki5 for tiddlywiki.com
|
||||
|
||||
# Set up the build output directory
|
||||
|
||||
if [ -z "$TW5_BUILD_OUTPUT" ]; then
|
||||
TW5_BUILD_OUTPUT=../jermolene.github.com
|
||||
fi
|
||||
|
||||
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]"
|
||||
|
||||
# Make the CNAME file that GitHub Pages requires
|
||||
|
||||
echo "tiddlywiki.com" > $TW5_BUILD_OUTPUT/CNAME
|
||||
|
||||
# Create the `static` directories if necessary
|
||||
|
||||
mkdir -p $TW5_BUILD_OUTPUT/static
|
||||
|
||||
# Delete any existing content
|
||||
|
||||
rm $TW5_BUILD_OUTPUT/static/*
|
||||
|
||||
# The tw5.com wiki
|
||||
# index.html: the main file, including content
|
||||
# empty.html: the main file, excluding content
|
||||
# static.html: the static version of the default tiddlers
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/tw5.com \
|
||||
--verbose \
|
||||
--output . \
|
||||
--build readmes \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build favicon empty static index \
|
||||
|| exit 1
|
||||
|
||||
# upgrade.html: custom edition for handling upgrades
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/upgrade \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build upgrade \
|
||||
|| exit 1
|
||||
|
||||
# encrypted.html: a version of the main file encrypted with the password "password"
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/tw5.com \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--build encrypted \
|
||||
|| exit 1
|
||||
|
||||
# tahoelafs.html: empty wiki with plugin for Tahoe-LAFS
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/tahoelafs \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all tahoelafs.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# d3demo.html: wiki to demo d3 plugin
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/d3demo \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all d3demo.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# codemirrordemo.html: wiki to demo codemirror plugin
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/codemirrordemo \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all codemirrordemo.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# markdowndemo.html: wiki to demo markdown plugin
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/markdowndemo \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all markdowndemo.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# classicparserdemo.html: wiki to demo classicparser plugin
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/classicparserdemo \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all classicparserdemo.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# highlightdemo.html: wiki to demo highlight plugin
|
||||
|
||||
node ./tiddlywiki.js \
|
||||
./editions/highlightdemo \
|
||||
--verbose \
|
||||
--output $TW5_BUILD_OUTPUT \
|
||||
--rendertiddler $:/core/save/all highlightdemo.html text/plain \
|
||||
|| exit 1
|
||||
|
||||
# Run the test edition to run the Node.js tests and to generate test.html for tests in the browser
|
||||
|
||||
./test.sh
|
||||
88
boot/boot.js
88
boot/boot.js
@@ -4,20 +4,7 @@ type: application/javascript
|
||||
|
||||
The main boot kernel for TiddlyWiki. This single file creates a barebones TW environment that is just sufficient to bootstrap the modules containing the main logic of the application.
|
||||
|
||||
On the server this file is executed directly to boot TiddlyWiki. In the browser, this file is packed into a single HTML file along with other elements:
|
||||
|
||||
# bootprefix.js
|
||||
# <module definitions>
|
||||
# boot.js
|
||||
|
||||
The module definitions on the browser look like this:
|
||||
|
||||
$tw.defineModule("MyModule","moduletype",function(module,exports,require) {
|
||||
// Module code inserted here
|
||||
return exports;
|
||||
});
|
||||
|
||||
In practice, each module is wrapped in a separate script block.
|
||||
On the server this file is executed directly to boot TiddlyWiki. In the browser, this file is packed into a single HTML file.
|
||||
|
||||
\*/
|
||||
|
||||
@@ -392,7 +379,14 @@ options: {flags: flags,deserializerType: deserializerType}
|
||||
*/
|
||||
$tw.utils.registerFileType = function(type,encoding,extension,options) {
|
||||
options = options || {};
|
||||
$tw.config.fileExtensionInfo[extension] = {type: type};
|
||||
if($tw.utils.isArray(extension)) {
|
||||
$tw.utils.each(extension,function(extension) {
|
||||
$tw.config.fileExtensionInfo[extension] = {type: type};
|
||||
});
|
||||
extension = extension[0];
|
||||
} else {
|
||||
$tw.config.fileExtensionInfo[extension] = {type: type};
|
||||
}
|
||||
$tw.config.contentTypeInfo[type] = {encoding: encoding, extension: extension, flags: options.flags || [], deserializerType: options.deserializerType || type};
|
||||
};
|
||||
|
||||
@@ -470,6 +464,7 @@ submitText: text to use for submit button (defaults to "Login")
|
||||
serviceName: text of the human readable service name
|
||||
noUserName: set true to disable username prompt
|
||||
canCancel: set true to enable a cancel button (callback called with null)
|
||||
repeatPassword: set true to prompt for the password twice
|
||||
callback: function to be called on submission with parameter of object {username:,password:}. Callback must return `true` to remove the password prompt
|
||||
*/
|
||||
$tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
||||
@@ -486,6 +481,11 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
||||
children.push(dm("input",{
|
||||
attributes: {type: "password", name: "password", placeholder: "Password"}
|
||||
}));
|
||||
if(options.repeatPassword) {
|
||||
children.push(dm("input",{
|
||||
attributes: {type: "password", name: "password2", placeholder: "Repeat password"}
|
||||
}));
|
||||
}
|
||||
if(options.canCancel) {
|
||||
children.push(dm("button",{
|
||||
text: "Cancel",
|
||||
@@ -520,18 +520,23 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
||||
data[element.name] = element.value;
|
||||
}
|
||||
});
|
||||
// Call the callback
|
||||
if(options.callback(data)) {
|
||||
// Remove the prompt if the callback returned true
|
||||
self.removePrompt(promptInfo);
|
||||
// Check that the passwords match
|
||||
if(options.repeatPassword && data.password !== data.password2) {
|
||||
alert("Passwords do not match");
|
||||
} else {
|
||||
// Clear the password if the callback returned false
|
||||
$tw.utils.each(form.elements,function(element) {
|
||||
if(element.name === "password") {
|
||||
element.value = "";
|
||||
}
|
||||
});
|
||||
}
|
||||
// Call the callback
|
||||
if(options.callback(data)) {
|
||||
// Remove the prompt if the callback returned true
|
||||
self.removePrompt(promptInfo);
|
||||
} else {
|
||||
// Clear the password if the callback returned false
|
||||
$tw.utils.each(form.elements,function(element) {
|
||||
if(element.name === "password" || element.name === "password2") {
|
||||
element.value = "";
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
event.preventDefault();
|
||||
return false;
|
||||
},true);
|
||||
@@ -1103,7 +1108,7 @@ $tw.Wiki.prototype.processSafeMode = function() {
|
||||
// Assemble a report tiddler
|
||||
var titleReportTiddler = "TiddlyWiki Safe Mode",
|
||||
report = [];
|
||||
report.push("TiddlyWiki has been started in [[safe mode|http://tiddlywiki.com/static/SafeMode.html]]. Most customisations have been disabled by renaming the following tiddlers:")
|
||||
report.push("TiddlyWiki has been started in [[safe mode|http://tiddlywiki.com/static/SafeMode.html]]. All plugins are temporarily disabled. Most customisations have been disabled by renaming the following tiddlers:")
|
||||
// Delete the overrides
|
||||
overrides.forEach(function(title) {
|
||||
var tiddler = self.getTiddler(title),
|
||||
@@ -1237,10 +1242,14 @@ Decrypt any tiddlers stored within the element with the ID "encryptedArea". The
|
||||
$tw.boot.decryptEncryptedTiddlers = function(callback) {
|
||||
var encryptedArea = document.getElementById("encryptedStoreArea");
|
||||
if(encryptedArea) {
|
||||
var encryptedText = encryptedArea.innerHTML;
|
||||
var encryptedText = encryptedArea.innerHTML,
|
||||
prompt = "Enter a password to decrypt this TiddlyWiki";
|
||||
// Prompt for the password
|
||||
if($tw.utils.hop($tw.boot,"encryptionPrompts")) {
|
||||
prompt = $tw.boot.encryptionPrompts.decrypt;
|
||||
}
|
||||
$tw.passwordPrompt.createPrompt({
|
||||
serviceName: "Enter a password to decrypt this TiddlyWiki",
|
||||
serviceName: prompt,
|
||||
noUserName: true,
|
||||
submitText: "Decrypt",
|
||||
callback: function(data) {
|
||||
@@ -1561,7 +1570,9 @@ $tw.loadWikiTiddlers = function(wikiPath,parentPaths) {
|
||||
$tw.utils.each(wikiInfo.includeWikis,function(includedWikiPath) {
|
||||
var resolvedIncludedWikiPath = path.resolve(wikiPath,includedWikiPath);
|
||||
if(parentPaths.indexOf(resolvedIncludedWikiPath) === -1) {
|
||||
$tw.loadWikiTiddlers(resolvedIncludedWikiPath,parentPaths);
|
||||
var subWikiInfo = $tw.loadWikiTiddlers(resolvedIncludedWikiPath,parentPaths);
|
||||
// Merge the build targets
|
||||
wikiInfo.build = $tw.utils.extend([],subWikiInfo.build,wikiInfo.build);
|
||||
} else {
|
||||
$tw.utils.error("Cannot recursively include wiki " + resolvedIncludedWikiPath);
|
||||
}
|
||||
@@ -1703,7 +1714,9 @@ $tw.boot.startup = function(options) {
|
||||
// If the first command line argument doesn't start with `--` then we
|
||||
// interpret it as the path to the wiki folder, which will otherwise default
|
||||
// to the current folder
|
||||
var explicitWikiPath;
|
||||
if($tw.boot.argv[0] && $tw.boot.argv[0].indexOf("--") !== 0) {
|
||||
explicitWikiPath = true;
|
||||
$tw.boot.wikiPath = $tw.boot.argv[0];
|
||||
$tw.boot.argv = $tw.boot.argv.slice(1);
|
||||
} else {
|
||||
@@ -1724,19 +1737,21 @@ $tw.boot.startup = function(options) {
|
||||
$tw.utils.registerFileType("text/vnd.tiddlywiki2-recipe","utf8",".recipe");
|
||||
$tw.utils.registerFileType("text/plain","utf8",".txt");
|
||||
$tw.utils.registerFileType("text/css","utf8",".css");
|
||||
$tw.utils.registerFileType("text/html","utf8",".html");
|
||||
$tw.config.fileExtensionInfo[".htm"] = {type: "text/html"};
|
||||
$tw.config.fileExtensionInfo[".hta"] = {type: "text/html"};
|
||||
$tw.utils.registerFileType("text/html","utf8",[".html",".htm"]);
|
||||
$tw.utils.registerFileType("application/hta","utf16le",".hta",{deserializerType:"text/html"});
|
||||
$tw.utils.registerFileType("application/javascript","utf8",".js");
|
||||
$tw.utils.registerFileType("application/json","utf8",".json");
|
||||
$tw.utils.registerFileType("application/pdf","base64",".pdf",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/jpeg","base64",".jpg",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/jpeg","base64",[".jpg",".jpeg"],{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/png","base64",".png",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/gif","base64",".gif",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/svg+xml","utf8",".svg",{flags:["image"]});
|
||||
$tw.utils.registerFileType("image/x-icon","base64",".ico",{flags:["image"]});
|
||||
$tw.utils.registerFileType("application/font-woff","base64",".woff");
|
||||
$tw.utils.registerFileType("audio/ogg","base64",".ogg");
|
||||
$tw.utils.registerFileType("audio/mp3","base64",".mp3");
|
||||
$tw.utils.registerFileType("audio/mp4","base64",[".mp4",".m4a"]);
|
||||
$tw.utils.registerFileType("text/x-markdown","utf8",[".md",".markdown"]);
|
||||
// Create the wiki store for the app
|
||||
$tw.wiki = new $tw.Wiki();
|
||||
// Install built in tiddler fields modules
|
||||
@@ -1749,10 +1764,13 @@ $tw.boot.startup = function(options) {
|
||||
$tw.loadTiddlersBrowser();
|
||||
} else {
|
||||
$tw.loadTiddlersNode();
|
||||
if(!$tw.boot.wikiInfo && explicitWikiPath) {
|
||||
return $tw.utils.error("Wiki folder '" + $tw.boot.wikiPath + "' is missing a 'tiddlywiki.info' file");
|
||||
}
|
||||
}
|
||||
// Unpack plugin tiddlers
|
||||
$tw.wiki.readPluginInfo();
|
||||
$tw.wiki.registerPluginTiddlers("plugin");
|
||||
$tw.wiki.registerPluginTiddlers("plugin",$tw.safeMode ? ["$:/core"] : undefined);
|
||||
$tw.wiki.unpackPluginTiddlers();
|
||||
// Process "safe mode"
|
||||
if($tw.safeMode) {
|
||||
|
||||
@@ -99,7 +99,7 @@ return $tw
|
||||
|
||||
if(typeof(exports) === "undefined") {
|
||||
// Set up $tw global for the browser
|
||||
window.$tw = _bootprefix();
|
||||
window.$tw = _bootprefix(window.$tw);
|
||||
} else {
|
||||
// Export functionality as a module
|
||||
exports.bootprefix = _bootprefix;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<h1 class=''>Contributing to <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a></h1><p><a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a> welcomes contributions to its code and documentation via <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5' target='_blank'>GitHub</a>. Please take a moment to read these notes to help make the process as smooth as possible.</p><h2 class=''>Coding Style</h2><p>Code contributions should follow the <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki%2520Coding%2520Style%2520Guidelines.html'>TiddlyWiki Coding Style Guidelines</a>.</p><h2 class=''><a class='tc-tiddlylink tc-tiddlylink-missing' href='http://tiddlywiki.com/static/GitHub.html'>GitHub</a> Issues</h2><p>See <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/ReportingBugs.html'>ReportingBugs</a> for information about how <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> handles bug reports.</p><h2 class=''>Contributor License Agreement</h2><p>Like other <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/OpenSource.html'>OpenSource</a> projects, <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class='tc-tiddlylink tc-tiddlylink-missing' href='http://tiddlywiki.com/static/UnaMesa.html'>UnaMesa</a> Association (the legal entity that owns <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md' target='_blank'>licenses/CLA-individual</a></li><li>For entities use: <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md' target='_blank'>licenses/CLA-entity</a></li></ul><p><em>This is a first pass at a CLA for <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a>. Please let us know if we missed something important. If we do have to make essential changes to the CLA, there is a possibility that all contributors will need to sign it again</em></p><h3 class=''>How to sign the CLA</h3><p>Create a <a class='tc-tiddlylink tc-tiddlylink-missing' href='http://tiddlywiki.com/static/GitHub.html'>GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></p><p><strong>Thank you!</strong></p><h4 class=''>Attribution</h4><p>The CLA documents used for this project were created using <a class='tc-tiddlylink-external' href='http://www.harmonyagreements.org' target='_blank'>Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity"
|
||||
<h1 class=''>Contributing to <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a></h1><p>We welcome contributions to the code and documentation of <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> in several ways:</p><ul><li><a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/ReportingBugs.html'>ReportingBugs</a></li><li>Helping to <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html'>improve our documentation</a></li><li>Contributing to the code via <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5' target='_blank'>GitHub</a><ul><li>See <a class='tc-tiddlylink-external' href='http://tiddlywiki.com/dev' target='_blank'>http://tiddlywiki.com/dev</a> for more details</li></ul></li></ul><p>There are other ways to <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/HelpingTiddlyWiki.html'>help TiddlyWiki</a> too.</p><h1 class=''>Contributor License Agreement</h1><p>Like other <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/OpenSource.html'>OpenSource</a> projects, <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class='tc-tiddlylink tc-tiddlylink-missing' href='http://tiddlywiki.com/static/UnaMesa.html'>UnaMesa</a> Association (the legal entity that owns <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki.html'>TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md' target='_blank'>licenses/CLA-individual</a></li><li>For entities use: <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md' target='_blank'>licenses/CLA-entity</a></li></ul><h1 class=''>How to sign the CLA</h1><p>Create a <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/GitHub.html'>GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>click <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md' target='_blank'>licenses/CLA-individual</a> or <a class='tc-tiddlylink-external' href='https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md' target='_blank'>licenses/CLA-entity</a></li><li>in <code>cla-individual.md</code> or <code>cla-entity.md</code> click icon on the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>add your name at the bottom</li></ol><p>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></p><hr><p><em>The CLA documents used for this project were created using <a class='tc-tiddlylink-external' href='http://www.harmonyagreements.org' target='_blank'>Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em>
|
||||
</p><p><em>This file was automatically generated by <a class='tc-tiddlylink tc-tiddlylink-resolves' href='http://tiddlywiki.com/static/TiddlyWiki5.html'>TiddlyWiki5</a></em>
|
||||
</p>
|
||||
8
core/images/new-here-button.tid
Normal file
8
core/images/new-here-button.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/new-here-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-new-here-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M56.5301831,72 L48.53728,72 C44.1183542,72 40.5301831,68.418278 40.5301831,64 C40.5301831,59.5907123 44.1150825,56 48.53728,56 L56.5301831,56 L56.5301831,48.0070969 C56.5301831,43.5881712 60.1119051,40 64.5301831,40 C68.9394708,40 72.5301831,43.5848994 72.5301831,48.0070969 L72.5301831,56 L80.5230862,56 C84.9420119,56 88.5301831,59.581722 88.5301831,64 C88.5301831,68.4092877 84.9452837,72 80.5230862,72 L72.5301831,72 L72.5301831,79.9929031 C72.5301831,84.4118288 68.9484611,88 64.5301831,88 C60.1208954,88 56.5301831,84.4151006 56.5301831,79.9929031 L56.5301831,72 Z M64.5301831,128 C99.8764071,128 128.530183,99.346224 128.530183,64 C128.530183,28.653776 99.8764071,0 64.5301831,0 C29.1839591,0 0.530183077,28.653776 0.530183077,64 C0.530183077,99.346224 29.1839591,128 64.5301831,128 Z M64.5301831,118 C94.3535596,118 118.530183,93.8233765 118.530183,64 C118.530183,34.1766235 94.3535596,10 64.5301831,10 C34.7068066,10 10.5301831,34.1766235 10.5301831,64 C10.5301831,93.8233765 34.7068066,118 64.5301831,118 Z M64.5301831,108 C88.8307121,108 108.530183,88.300529 108.530183,64 C108.530183,39.699471 88.8307121,20 64.5301831,20 C40.2296541,20 20.5301831,39.699471 20.5301831,64 C20.5301831,88.300529 40.2296541,108 64.5301831,108 Z M64.5301831,98 C83.3078646,98 98.5301831,82.7776815 98.5301831,64 C98.5301831,45.2223185 83.3078646,30 64.5301831,30 C45.7525016,30 30.5301831,45.2223185 30.5301831,64 C30.5301831,82.7776815 45.7525016,98 64.5301831,98 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
16
core/images/new-journal-button.tid
Normal file
16
core/images/new-journal-button.tid
Normal file
@@ -0,0 +1,16 @@
|
||||
title: $:/core/images/new-journal-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-new-journal-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z"></path>
|
||||
<g transform="translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)">
|
||||
<g transform="translate(0.000000, 0.000000)">
|
||||
<path d="M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z"></path>
|
||||
<text font-family="Helvetica" font-size="47.1724138" font-weight="bold" fill="#FFFFFF">
|
||||
<tspan x="42" y="77.4847912" text-anchor="middle"><<now "DD">></tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
@@ -34,10 +34,16 @@ Home/Caption: home
|
||||
Home/Hint: Open the default tiddlers
|
||||
Language/Caption: language
|
||||
Language/Hint: Choose the user interface language
|
||||
NewTiddler/Caption: new tiddler
|
||||
NewTiddler/Hint: Create a new tiddler
|
||||
More/Caption: more
|
||||
More/Hint: More actions
|
||||
NewHere/Caption: new here
|
||||
NewHere/Hint: Create a new tiddler tagged with this one
|
||||
NewJournal/Caption: new journal
|
||||
NewJournal/Hint: Create a new journal tiddler
|
||||
NewJournalHere/Caption: new journal here
|
||||
NewJournalHere/Hint: Create a new journal tiddler tagged with this one
|
||||
NewTiddler/Caption: new tiddler
|
||||
NewTiddler/Hint: Create a new tiddler
|
||||
Permalink/Caption: permalink
|
||||
Permalink/Hint: Set browser address bar to a direct link to this tiddler
|
||||
Permaview/Caption: permaview
|
||||
|
||||
@@ -1,59 +1,17 @@
|
||||
title: $:/language/ControlPanel/
|
||||
|
||||
Advanced/Caption: Advanced
|
||||
Advanced/EditorTypes/Caption: Editor Types
|
||||
Advanced/EditorTypes/Editor/Caption: Editor
|
||||
Advanced/EditorTypes/Hint: These tiddlers determine which editor is used to edit specific tiddler types.
|
||||
Advanced/EditorTypes/Type/Caption: Type
|
||||
Advanced/Hint: Internal information about this TiddlyWiki
|
||||
Advanced/LoadedModules/Caption: Loaded Modules
|
||||
Advanced/LoadedModules/Hint: These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process.
|
||||
Advanced/Settings/Caption: Settings
|
||||
Advanced/Settings/Hint: These advanced settings let you customise the behaviour of TiddlyWiki.
|
||||
Advanced/Settings/NavigationAddressBar/Caption: Navigation Address Bar
|
||||
Advanced/Settings/NavigationAddressBar/Hint: Behaviour of the browser address bar when navigating to a tiddler:
|
||||
Advanced/Settings/NavigationAddressBar/No/Description: Do not update the address bar
|
||||
Advanced/Settings/NavigationAddressBar/Permalink/Description: Include the target tiddler
|
||||
Advanced/Settings/NavigationAddressBar/Permaview/Description: Include the target tiddler and the current story sequence
|
||||
Advanced/Settings/NavigationHistory/Caption: Navigation History
|
||||
Advanced/Settings/NavigationHistory/Hint: Update browser history when navigating to a tiddler:
|
||||
Advanced/Settings/NavigationHistory/No/Description: Do not update history
|
||||
Advanced/Settings/NavigationHistory/Yes/Description: Update history
|
||||
Advanced/Settings/ToolbarButtons/Caption: Toolbar Buttons
|
||||
Advanced/Settings/ToolbarButtons/Hint: Default toolbar button appearance:
|
||||
Advanced/Settings/ToolbarButtons/Text/Description: Include text
|
||||
Advanced/Settings/ToolbarButtons/Icons/Description: Include icon
|
||||
Advanced/TiddlerFields/Caption: Tiddler Fields
|
||||
Advanced/TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers).
|
||||
Appearance/Caption: Appearance
|
||||
Appearance/Hint: Ways to customise the appearance of your TiddlyWiki.
|
||||
Appearance/Palette/Caption: Palette
|
||||
Appearance/Palette/Editor/Clone/Caption: clone
|
||||
Appearance/Palette/Editor/Clone/Prompt: It is recommended that you clone this shadow palette before editing it
|
||||
Appearance/Palette/Editor/Prompt/Modified: This shadow palette has been modified
|
||||
Appearance/Palette/Editor/Prompt: Editing
|
||||
Appearance/Palette/Editor/Reset/Caption: reset
|
||||
Appearance/Palette/HideEditor/Caption: hide editor
|
||||
Appearance/Palette/Prompt: Current palette:
|
||||
Appearance/Palette/ShowEditor/Caption: show editor
|
||||
Appearance/StoryView/Caption: Story View
|
||||
Appearance/StoryView/Prompt: Current view:
|
||||
Appearance/Theme/Caption: Theme
|
||||
Appearance/Theme/Prompt: Current theme:
|
||||
Appearance/Toolbars/Caption: Toolbars
|
||||
Appearance/Toolbars/Hint: Select which toolbar buttons are displayed
|
||||
Appearance/Toolbars/EditToolbar/Caption: Edit Toolbar
|
||||
Appearance/Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode
|
||||
Appearance/Toolbars/ViewToolbar/Caption: View Toolbar
|
||||
Appearance/Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode
|
||||
Appearance/Toolbars/PageControls/Caption: Page Toolbar
|
||||
Appearance/Toolbars/PageControls/Hint: Choose which buttons are displayed on the main page toolbar
|
||||
Basics/AnimDuration/Prompt: Animation duration:
|
||||
Basics/Caption: Basics
|
||||
Basics/DefaultTiddlers/BottomHint: Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">retain story ordering</$button>
|
||||
Basics/DefaultTiddlers/Prompt: Default tiddlers:
|
||||
Basics/DefaultTiddlers/TopHint: Choose which tiddlers are displayed at startup:
|
||||
Basics/Language/Prompt: Hello! Current language:
|
||||
Basics/NewJournal/Title/Prompt: Title of new journal tiddlers
|
||||
Basics/NewJournal/Tags/Prompt: Tags for new journal tiddlers
|
||||
Basics/OverriddenShadowTiddlers/Prompt: Number of overridden shadow tiddlers:
|
||||
Basics/ShadowTiddlers/Prompt: Number of shadow tiddlers:
|
||||
Basics/Subtitle/Prompt: Subtitle:
|
||||
@@ -63,6 +21,23 @@ Basics/Tiddlers/Prompt: Number of tiddlers:
|
||||
Basics/Title/Prompt: Title of this ~TiddlyWiki:
|
||||
Basics/Username/Prompt: Username for signing edits:
|
||||
Basics/Version/Prompt: ~TiddlyWiki version:
|
||||
EditorTypes/Caption: Editor Types
|
||||
EditorTypes/Editor/Caption: Editor
|
||||
EditorTypes/Hint: These tiddlers determine which editor is used to edit specific tiddler types.
|
||||
EditorTypes/Type/Caption: Type
|
||||
Info/Caption: Info
|
||||
Info/Hint: Information about this TiddlyWiki
|
||||
LoadedModules/Caption: Loaded Modules
|
||||
LoadedModules/Hint: These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process.
|
||||
Palette/Caption: Palette
|
||||
Palette/Editor/Clone/Caption: clone
|
||||
Palette/Editor/Clone/Prompt: It is recommended that you clone this shadow palette before editing it
|
||||
Palette/Editor/Prompt/Modified: This shadow palette has been modified
|
||||
Palette/Editor/Prompt: Editing
|
||||
Palette/Editor/Reset/Caption: reset
|
||||
Palette/HideEditor/Caption: hide editor
|
||||
Palette/Prompt: Current palette:
|
||||
Palette/ShowEditor/Caption: show editor
|
||||
Plugins/Caption: Plugins
|
||||
Plugins/Disable/Caption: disable
|
||||
Plugins/Disable/Hint: Disable this plugin when reloading page
|
||||
@@ -73,16 +48,12 @@ Plugins/Enable/Hint: Enable this plugin when reloading page
|
||||
Plugins/Language/Prompt: Languages
|
||||
Plugins/Plugin/Prompt: Plugins
|
||||
Plugins/Theme/Prompt: Themes
|
||||
Saving/AutoSave/Disabled/Button: enable
|
||||
Saving/AutoSave/Disabled/Prompt: Autosave is currently disabled
|
||||
Saving/AutoSave/Enabled/Button: disable
|
||||
Saving/AutoSave/Enabled/Prompt: Autosave is currently enabled
|
||||
Saving/AutoSave: Autosave
|
||||
Saving/Caption: Saving
|
||||
Saving/Heading: Saving
|
||||
Saving/TiddlySpot/Advanced/Heading: Advanced Settings
|
||||
Saving/TiddlySpot/BackupDir: Backup Directory
|
||||
Saving/TiddlySpot/Backups: Backups
|
||||
Saving/TiddlySpot/Description: These settings are only used when saving to http://tiddlyspot.com or a compatible remote server
|
||||
Saving/TiddlySpot/Filename: Upload Filename
|
||||
Saving/TiddlySpot/Heading: ~TiddlySpot
|
||||
Saving/TiddlySpot/Hint: //The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address//
|
||||
@@ -90,16 +61,40 @@ Saving/TiddlySpot/Password: Password
|
||||
Saving/TiddlySpot/ServerURL: Server URL
|
||||
Saving/TiddlySpot/UploadDir: Upload Directory
|
||||
Saving/TiddlySpot/UserName: Wiki Name
|
||||
Settings/AutoSave/Caption: Autosave
|
||||
Settings/AutoSave/Disabled/Description: Do not save changes automatically
|
||||
Settings/AutoSave/Enabled/Description: Save changes automatically
|
||||
Settings/AutoSave/Hint: Automatically save changes during editing
|
||||
Settings/Caption: Settings
|
||||
Settings/Hint: These settings let you customise the behaviour of TiddlyWiki.
|
||||
Settings/NavigationAddressBar/Caption: Navigation Address Bar
|
||||
Settings/NavigationAddressBar/Hint: Behaviour of the browser address bar when navigating to a tiddler:
|
||||
Settings/NavigationAddressBar/No/Description: Do not update the address bar
|
||||
Settings/NavigationAddressBar/Permalink/Description: Include the target tiddler
|
||||
Settings/NavigationAddressBar/Permaview/Description: Include the target tiddler and the current story sequence
|
||||
Settings/NavigationHistory/Caption: Navigation History
|
||||
Settings/NavigationHistory/Hint: Update browser history when navigating to a tiddler:
|
||||
Settings/NavigationHistory/No/Description: Do not update history
|
||||
Settings/NavigationHistory/Yes/Description: Update history
|
||||
Settings/ToolbarButtons/Caption: Toolbar Buttons
|
||||
Settings/ToolbarButtons/Hint: Default toolbar button appearance:
|
||||
Settings/ToolbarButtons/Icons/Description: Include icon
|
||||
Settings/ToolbarButtons/Text/Description: Include text
|
||||
StoryView/Caption: Story View
|
||||
StoryView/Prompt: Current view:
|
||||
Theme/Caption: Theme
|
||||
Theme/Prompt: Current theme:
|
||||
TiddlerFields/Caption: Tiddler Fields
|
||||
TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers).
|
||||
Toolbars/Caption: Toolbars
|
||||
Toolbars/EditToolbar/Caption: Edit Toolbar
|
||||
Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode
|
||||
Toolbars/Hint: Select which toolbar buttons are displayed
|
||||
Toolbars/PageControls/Caption: Page Toolbar
|
||||
Toolbars/PageControls/Hint: Choose which buttons are displayed on the main page toolbar
|
||||
Toolbars/ViewToolbar/Caption: View Toolbar
|
||||
Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode
|
||||
Tools/Caption: Tools
|
||||
Tools/Download/Full/Caption: Download full wiki
|
||||
Tools/Encryption/ChangePassword/Button: change password
|
||||
Tools/Encryption/ClearPassword/Button: clear password
|
||||
Tools/Encryption/Disabled/Prompt: This wiki is not encrypted
|
||||
Tools/Encryption/Enabled/Prompt: This wiki is encrypted
|
||||
Tools/Encryption/Heading: Encryption
|
||||
Tools/Encryption/SetPassword/Button: set password
|
||||
Tools/Export/AllAsStaticHTML/Caption: Download all tiddlers as static HTML
|
||||
Tools/Export/Heading: Export
|
||||
Tools/Import/Heading: Import
|
||||
Tools/Import/Hint: Browse for files on your computer to import their contents (the individual tiddlers within TiddlyWiki HTML files are imported separately). You can also drag and drop files directly to the browser window.
|
||||
Tools/Import/Prompt: Import:
|
||||
|
||||
87
core/language/en-GB/Dates.multids
Normal file
87
core/language/en-GB/Dates.multids
Normal file
@@ -0,0 +1,87 @@
|
||||
title: $:/language/
|
||||
|
||||
Date/DaySuffix/1: st
|
||||
Date/DaySuffix/2: nd
|
||||
Date/DaySuffix/3: rd
|
||||
Date/DaySuffix/4: th
|
||||
Date/DaySuffix/5: th
|
||||
Date/DaySuffix/6: th
|
||||
Date/DaySuffix/7: th
|
||||
Date/DaySuffix/8: th
|
||||
Date/DaySuffix/9: th
|
||||
Date/DaySuffix/10: th
|
||||
Date/DaySuffix/11: th
|
||||
Date/DaySuffix/12: th
|
||||
Date/DaySuffix/13: th
|
||||
Date/DaySuffix/14: th
|
||||
Date/DaySuffix/15: th
|
||||
Date/DaySuffix/16: th
|
||||
Date/DaySuffix/17: th
|
||||
Date/DaySuffix/18: th
|
||||
Date/DaySuffix/19: th
|
||||
Date/DaySuffix/20: th
|
||||
Date/DaySuffix/21: st
|
||||
Date/DaySuffix/22: nd
|
||||
Date/DaySuffix/23: rd
|
||||
Date/DaySuffix/24: th
|
||||
Date/DaySuffix/25: th
|
||||
Date/DaySuffix/26: th
|
||||
Date/DaySuffix/27: th
|
||||
Date/DaySuffix/28: th
|
||||
Date/DaySuffix/29: th
|
||||
Date/DaySuffix/30: th
|
||||
Date/DaySuffix/31: st
|
||||
Date/Long/Day/0: Sunday
|
||||
Date/Long/Day/1: Monday
|
||||
Date/Long/Day/2: Tuesday
|
||||
Date/Long/Day/3: Wednesday
|
||||
Date/Long/Day/4: Thursday
|
||||
Date/Long/Day/5: Friday
|
||||
Date/Long/Day/6: Saturday
|
||||
Date/Long/Month/1: January
|
||||
Date/Long/Month/2: February
|
||||
Date/Long/Month/3: March
|
||||
Date/Long/Month/4: April
|
||||
Date/Long/Month/5: May
|
||||
Date/Long/Month/6: June
|
||||
Date/Long/Month/7: July
|
||||
Date/Long/Month/8: August
|
||||
Date/Long/Month/9: September
|
||||
Date/Long/Month/10: October
|
||||
Date/Long/Month/11: November
|
||||
Date/Long/Month/12: December
|
||||
Date/Period/am: am
|
||||
Date/Period/pm: pm
|
||||
Date/Short/Day/0: Sun
|
||||
Date/Short/Day/1: Mon
|
||||
Date/Short/Day/2: Tue
|
||||
Date/Short/Day/3: Wed
|
||||
Date/Short/Day/4: Thu
|
||||
Date/Short/Day/5: Fri
|
||||
Date/Short/Day/6: Sat
|
||||
Date/Short/Month/1: Jan
|
||||
Date/Short/Month/2: Feb
|
||||
Date/Short/Month/3: Mar
|
||||
Date/Short/Month/4: Apr
|
||||
Date/Short/Month/5: May
|
||||
Date/Short/Month/6: Jun
|
||||
Date/Short/Month/7: Jul
|
||||
Date/Short/Month/8: Aug
|
||||
Date/Short/Month/9: Sep
|
||||
Date/Short/Month/10: Oct
|
||||
Date/Short/Month/11: Nov
|
||||
Date/Short/Month/12: Dec
|
||||
RelativeDate/Future/Days: <<period>> days from now
|
||||
RelativeDate/Future/Hours: <<period>> hours from now
|
||||
RelativeDate/Future/Minutes: <<period>> minutes from now
|
||||
RelativeDate/Future/Months: <<period>> months from now
|
||||
RelativeDate/Future/Second: 1 second from now
|
||||
RelativeDate/Future/Seconds: <<period>> seconds from now
|
||||
RelativeDate/Future/Years: <<period>> years from now
|
||||
RelativeDate/Past/Days: <<period>> days ago
|
||||
RelativeDate/Past/Hours: <<period>> hours ago
|
||||
RelativeDate/Past/Minutes: <<period>> minutes ago
|
||||
RelativeDate/Past/Months: <<period>> months ago
|
||||
RelativeDate/Past/Second: 1 second ago
|
||||
RelativeDate/Past/Seconds: <<period>> seconds ago
|
||||
RelativeDate/Past/Years: <<period>> years ago
|
||||
@@ -14,6 +14,7 @@ storyview: Story views customise the animation and behaviour of list widgets.
|
||||
tiddlerdeserializer: Converts different content types into tiddlers.
|
||||
tiddlerfield: Defines the behaviour of an individual tiddler field.
|
||||
tiddlermethod: Adds methods to the `$tw.Tiddler` prototype.
|
||||
upgrader: Applies upgrade processing to tiddlers during an upgrade/import.
|
||||
utils: Adds methods to `$tw.utils`.
|
||||
utils-node: Adds Node.js-specific methods to `$tw.utils`.
|
||||
widget: Widgets encapsulate DOM rendering and refreshing.
|
||||
|
||||
14
core/language/en-GB/Help/makelibrary.tid
Normal file
14
core/language/en-GB/Help/makelibrary.tid
Normal file
@@ -0,0 +1,14 @@
|
||||
title: $:/language/Help/makelibrary
|
||||
description: Construct library plugin required by upgrade process
|
||||
|
||||
Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.
|
||||
|
||||
The upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.
|
||||
|
||||
This command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.
|
||||
|
||||
```
|
||||
--makelibrary <title>
|
||||
```
|
||||
|
||||
The title argument defaults to `$:/UpgradeLibrary`.
|
||||
@@ -28,4 +28,10 @@ For example:
|
||||
--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd
|
||||
```
|
||||
|
||||
The username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:
|
||||
|
||||
```
|
||||
--server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245
|
||||
```
|
||||
|
||||
To run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
title: $:/language/Help/setfield
|
||||
description: Prepares external tiddlers for use
|
||||
|
||||
//Note that this command is experimental and may change or be replaced during the TiddlyWiki version 5 beta//
|
||||
//Note that this command is experimental and may change or be replaced before being finalised//
|
||||
|
||||
Sets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.
|
||||
|
||||
|
||||
@@ -8,27 +8,15 @@ ConfirmCancelTiddler: Do you wish to discard changes to the tiddler "<$text text
|
||||
ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<<title>>/>"?
|
||||
ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<<title>>/>"?
|
||||
ConfirmEditShadowTiddler: You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit "<$text text=<<title>>/>"?
|
||||
DefaultNewTiddlerTitle: New Tiddler
|
||||
DropMessage: Drop here (or click escape to cancel)
|
||||
Encryption/ConfirmClearPassword: Do you wish to clear the password? This will remove the encryption applied when saving this wiki
|
||||
Encryption/PromptSetPassword: Set a new password for this TiddlyWiki
|
||||
InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)
|
||||
MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" - click {{$:/core/images/edit-button}} to create
|
||||
RecentChanges/DateFormat: DDth MMM YYYY
|
||||
RelativeDate/Future/Days: <<period>> days from now
|
||||
RelativeDate/Future/Hours: <<period>> hours from now
|
||||
RelativeDate/Future/Minutes: <<period>> minutes from now
|
||||
RelativeDate/Future/Months: <<period>> months from now
|
||||
RelativeDate/Future/Second: 1 second from now
|
||||
RelativeDate/Future/Seconds: <<period>> seconds from now
|
||||
RelativeDate/Future/Years: <<period>> years from now
|
||||
RelativeDate/Past/Days: <<period>> days ago
|
||||
RelativeDate/Past/Hours: <<period>> hours ago
|
||||
RelativeDate/Past/Minutes: <<period>> minutes ago
|
||||
RelativeDate/Past/Months: <<period>> months ago
|
||||
RelativeDate/Past/Second: 1 second ago
|
||||
RelativeDate/Past/Seconds: <<period>> seconds ago
|
||||
RelativeDate/Past/Years: <<period>> years ago
|
||||
SystemTiddler/Tooltip: This is a system tiddler
|
||||
TagManager/Colour/Heading: Colour
|
||||
TagManager/Count/Heading: Count
|
||||
TagManager/Icon/Heading: Icon
|
||||
TagManager/Tag/Heading: Tag
|
||||
UnsavedChangesWarning: You have unsaved changes in TiddlyWiki
|
||||
|
||||
4
core/language/en-GB/NewJournal.multids
Normal file
4
core/language/en-GB/NewJournal.multids
Normal file
@@ -0,0 +1,4 @@
|
||||
title: $:/config/NewJournal/
|
||||
|
||||
Title: DDth MMM YYYY
|
||||
Tags: Journal
|
||||
@@ -1,7 +1,7 @@
|
||||
title: $:/language/Search/
|
||||
|
||||
Filter/Caption: Filter
|
||||
Filter/Hint: Search via a [[filter expression|http://tiddlywiki.com/static/TiddlerFilters.html]]
|
||||
Filter/Hint: Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]
|
||||
Filter/Matches: //<small><$count filter={{$:/temp/advancedsearch}}/> matches</small>//
|
||||
Matches: //<small><$count filter="[!is[system]search{$:/temp/search}]"/> matches</small>//
|
||||
Shadows/Caption: Shadows
|
||||
|
||||
@@ -17,20 +17,6 @@ exports.preferences = {};
|
||||
exports.preferences.notificationDuration = 3 * 1000;
|
||||
exports.preferences.jsonSpaces = 4;
|
||||
|
||||
exports.dateFormats = {
|
||||
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"],
|
||||
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||||
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
||||
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
|
||||
daySuffixes: ["st","nd","rd","th","th","th","th","th","th","th",
|
||||
"th","th","th","th","th","th","th","th","th","th",
|
||||
"st","nd","rd","th","th","th","th","th","th","th",
|
||||
"st"],
|
||||
am: "am",
|
||||
pm: "pm"
|
||||
};
|
||||
|
||||
exports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };
|
||||
|
||||
exports.htmlVoidElements = "area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr".split(",");
|
||||
|
||||
@@ -70,6 +70,8 @@ function parseFilterOperation(operators,filterString,p) {
|
||||
rexMatch = rex.exec(filterString.substring(p));
|
||||
if(rexMatch) {
|
||||
operator.regexp = new RegExp(rexMatch[1], rexMatch[2]);
|
||||
// DEPRECATION WARNING
|
||||
console.log("WARNING: Filter",operator.operator,"has a deprecated regexp operand",operator.regexp);
|
||||
nextBracketPos = p + rex.lastIndex - 1;
|
||||
}
|
||||
else {
|
||||
|
||||
28
core/modules/filters/addprefix.js
Normal file
28
core/modules/filters/addprefix.js
Normal file
@@ -0,0 +1,28 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/addprefix.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator for adding a prefix to each title in the list. This is
|
||||
especially useful in contexts where only a filter expression is allowed
|
||||
and macro substitution isn't available.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.addprefix = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push(operator.operand + title);
|
||||
});
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
28
core/modules/filters/addsuffix.js
Normal file
28
core/modules/filters/addsuffix.js
Normal file
@@ -0,0 +1,28 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/addsuffix.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator for adding a suffix to each title in the list. This is
|
||||
especially useful in contexts where only a filter expression is allowed
|
||||
and macro substitution isn't available.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.addsuffix = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
results.push(title + operator.operand);
|
||||
});
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -20,7 +20,12 @@ exports.each = function(source,operator,options) {
|
||||
values = {};
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler) {
|
||||
var value = tiddler.getFieldString(operator.operand);
|
||||
var value;
|
||||
if((operator.operand === "") || (operator.operand === "title")) {
|
||||
value = title;
|
||||
} else {
|
||||
value = tiddler.getFieldString(operator.operand);
|
||||
}
|
||||
if(!$tw.utils.hop(values,value)) {
|
||||
values[value] = true;
|
||||
results.push(title);
|
||||
|
||||
@@ -19,7 +19,7 @@ exports.plugintiddlers = function(source,operator,options) {
|
||||
var results = [];
|
||||
source(function(tiddler,title) {
|
||||
var pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerData(title,{tiddlers:[]});
|
||||
if(pluginInfo) {
|
||||
if(pluginInfo && pluginInfo.tiddlers) {
|
||||
$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {
|
||||
results.push(title);
|
||||
});
|
||||
|
||||
68
core/modules/filters/regexp.js
Normal file
68
core/modules/filters/regexp.js
Normal file
@@ -0,0 +1,68 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/regexp.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator for regexp matching
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.regexp = function(source,operator,options) {
|
||||
var results = [],
|
||||
fieldname = (operator.suffix || "title").toLowerCase(),
|
||||
regexpString, regexp, flags = "", match,
|
||||
getFieldString = function(tiddler,title) {
|
||||
if(tiddler) {
|
||||
return tiddler.getFieldString(fieldname);
|
||||
} else if(fieldname === "title") {
|
||||
return title;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
// Process flags and construct regexp
|
||||
regexpString = operator.operand;
|
||||
match = /^\(\?([gim]+)\)/.exec(regexpString);
|
||||
if(match) {
|
||||
flags = match[1];
|
||||
regexpString = regexpString.substr(match[0].length);
|
||||
} else {
|
||||
match = /\(\?([gim]+)\)$/.exec(regexpString);
|
||||
if(match) {
|
||||
flags = match[1];
|
||||
regexpString = regexpString.substr(0,regexpString.length - match[0].length);
|
||||
}
|
||||
}
|
||||
regexp = new RegExp(regexpString,flags);
|
||||
// Process the incoming tiddlers
|
||||
if(operator.prefix === "!") {
|
||||
source(function(tiddler,title) {
|
||||
var text = getFieldString(tiddler,title);
|
||||
if(text !== null) {
|
||||
if(!regexp.exec(text)) {
|
||||
results.push(title);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
source(function(tiddler,title) {
|
||||
var text = getFieldString(tiddler,title);
|
||||
if(text !== null) {
|
||||
if(!!regexp.exec(text)) {
|
||||
results.push(title);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
41
core/modules/macros/dumpvariables.js
Normal file
41
core/modules/macros/dumpvariables.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/*\
|
||||
title: $:/core/modules/macros/dumpvariables.js
|
||||
type: application/javascript
|
||||
module-type: macro
|
||||
|
||||
Macro to dump all active variable values
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Information about this macro
|
||||
*/
|
||||
|
||||
exports.name = "dumpvariables";
|
||||
|
||||
exports.params = [
|
||||
];
|
||||
|
||||
/*
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function() {
|
||||
var output = ["|!Variable |!Value |"],
|
||||
variables = [], variable;
|
||||
for(variable in this.variables) {
|
||||
variables.push(variable);
|
||||
}
|
||||
variables.sort();
|
||||
for(var index=0; index<variables.length; index++) {
|
||||
var variable = variables[index];
|
||||
output.push("|" + variable + " |<input size=50 value=<<" + variable + ">>/> |")
|
||||
}
|
||||
return output.join("\n");
|
||||
};
|
||||
|
||||
})();
|
||||
32
core/modules/macros/now.js
Normal file
32
core/modules/macros/now.js
Normal file
@@ -0,0 +1,32 @@
|
||||
/*\
|
||||
title: $:/core/modules/macros/now.js
|
||||
type: application/javascript
|
||||
module-type: macro
|
||||
|
||||
Macro to return a formatted version of the current time
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Information about this macro
|
||||
*/
|
||||
|
||||
exports.name = "now";
|
||||
|
||||
exports.params = [
|
||||
{name: "format"}
|
||||
];
|
||||
|
||||
/*
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function(format) {
|
||||
return $tw.utils.formatDateString(new Date(),format || "0hh:0mm, DDth MMM YYYY");
|
||||
};
|
||||
|
||||
})();
|
||||
38
core/modules/parsers/audioparser.js
Normal file
38
core/modules/parsers/audioparser.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/*\
|
||||
title: $:/core/modules/parsers/audioparser.js
|
||||
type: application/javascript
|
||||
module-type: parser
|
||||
|
||||
The audio parser parses an audio tiddler into an embeddable HTML element
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var AudioParser = function(type,text,options) {
|
||||
var element = {
|
||||
type: "element",
|
||||
tag: "audio",
|
||||
attributes: {
|
||||
controls: {type: "string", value: "controls"}
|
||||
}
|
||||
},
|
||||
src;
|
||||
if(options._canonical_uri) {
|
||||
element.attributes.src = {type: "string", value: options._canonical_uri};
|
||||
} else if(text) {
|
||||
element.attributes.src = {type: "string", value: "data:" + type + ";base64," + text};
|
||||
}
|
||||
this.tree = [element];
|
||||
};
|
||||
|
||||
exports["audio/ogg"] = AudioParser;
|
||||
exports["audio/mpeg"] = AudioParser;
|
||||
exports["audio/mp3"] = AudioParser;
|
||||
exports["audio/mp4"] = AudioParser;
|
||||
|
||||
})();
|
||||
|
||||
@@ -25,7 +25,7 @@ exports.types = {inline: true};
|
||||
|
||||
var textPrimitives = {
|
||||
upperLetter: "[A-Z\u00c0-\u00d6\u00d8-\u00de\u0150\u0170]",
|
||||
lowerLetter: "[a-z0-9\u00df-\u00f6\u00f8-\u00ff\u0151\u0171]",
|
||||
lowerLetter: "[a-z\u00df-\u00f6\u00f8-\u00ff\u0151\u0171]",
|
||||
anyLetter: "[A-Za-z0-9\u00c0-\u00d6\u00d8-\u00de\u00df-\u00f6\u00f8-\u00ff\u0150\u0170\u0151\u0171]",
|
||||
blockPrefixLetters: "[A-Za-z0-9-_\u00c0-\u00d6\u00d8-\u00de\u00df-\u00f6\u00f8-\u00ff\u0150\u0170\u0151\u0171]"
|
||||
};
|
||||
|
||||
@@ -64,7 +64,11 @@ UploadSaver.prototype.save = function(text,method,callback) {
|
||||
}
|
||||
}
|
||||
};
|
||||
http.send(data);
|
||||
try {
|
||||
http.send(data);
|
||||
} catch(ex) {
|
||||
return callback("Error:" + ex);
|
||||
}
|
||||
$tw.notifier.display("$:/language/Notifications/Save/Starting");
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -21,10 +21,11 @@ exports.synchronous = true;
|
||||
exports.startup = function() {
|
||||
$tw.rootWidget.addEventListener("tm-set-password",function(event) {
|
||||
$tw.passwordPrompt.createPrompt({
|
||||
serviceName: "Set a new password for this TiddlyWiki",
|
||||
serviceName: $tw.language.getString("Encryption/PromptSetPassword"),
|
||||
noUserName: true,
|
||||
submitText: "Set password",
|
||||
canCancel: true,
|
||||
repeatPassword: true,
|
||||
callback: function(data) {
|
||||
if(data) {
|
||||
$tw.crypto.setPassword(data.password);
|
||||
@@ -34,6 +35,11 @@ exports.startup = function() {
|
||||
});
|
||||
});
|
||||
$tw.rootWidget.addEventListener("tm-clear-password",function(event) {
|
||||
if($tw.browser) {
|
||||
if(!confirm($tw.language.getString("Encryption/ConfirmClearPassword"))) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
$tw.crypto.setPassword(null);
|
||||
});
|
||||
// Ensure that $:/isEncrypted is maintained properly
|
||||
|
||||
@@ -59,6 +59,9 @@ exports.startup = function() {
|
||||
var storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),
|
||||
storyList = $tw.wiki.filterTiddlers(storyFilter);
|
||||
$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: "", list: storyList},$tw.wiki.getModificationFields());
|
||||
if(storyList[0]) {
|
||||
$tw.wiki.addToHistory(storyList[0]);
|
||||
}
|
||||
});
|
||||
// Listen for the tm-permalink message
|
||||
$tw.rootWidget.addEventListener("tm-permalink",function(event) {
|
||||
|
||||
@@ -25,6 +25,10 @@ ClassicStoryView.prototype.navigateTo = function(historyInfo) {
|
||||
}
|
||||
var listItemWidget = this.listWidget.children[listElementIndex],
|
||||
targetElement = listItemWidget.findFirstDomNode();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
// Scroll the node into view
|
||||
this.listWidget.dispatchEvent({type: "tm-scroll", target: targetElement});
|
||||
};
|
||||
@@ -32,6 +36,10 @@ ClassicStoryView.prototype.navigateTo = function(historyInfo) {
|
||||
ClassicStoryView.prototype.insert = function(widget) {
|
||||
var targetElement = widget.findFirstDomNode(),
|
||||
duration = $tw.utils.getAnimationDuration();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
// Get the current height of the tiddler
|
||||
var computedStyle = window.getComputedStyle(targetElement),
|
||||
currMarginBottom = parseInt(computedStyle.marginBottom,10),
|
||||
@@ -62,7 +70,15 @@ ClassicStoryView.prototype.insert = function(widget) {
|
||||
|
||||
ClassicStoryView.prototype.remove = function(widget) {
|
||||
var targetElement = widget.findFirstDomNode(),
|
||||
duration = $tw.utils.getAnimationDuration();
|
||||
duration = $tw.utils.getAnimationDuration(),
|
||||
removeElement = function() {
|
||||
widget.removeChildDomNodes();
|
||||
};
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
removeElement();
|
||||
return;
|
||||
}
|
||||
// Get the current height of the tiddler
|
||||
var currWidth = targetElement.offsetWidth,
|
||||
computedStyle = window.getComputedStyle(targetElement),
|
||||
@@ -70,9 +86,7 @@ ClassicStoryView.prototype.remove = function(widget) {
|
||||
currMarginTop = parseInt(computedStyle.marginTop,10),
|
||||
currHeight = targetElement.offsetHeight + currMarginTop;
|
||||
// Remove the dom nodes of the widget at the end of the transition
|
||||
setTimeout(function() {
|
||||
widget.removeChildDomNodes();
|
||||
},duration);
|
||||
setTimeout(removeElement,duration);
|
||||
// Animate the closure
|
||||
$tw.utils.setStyle(targetElement,[
|
||||
{transition: "none"},
|
||||
|
||||
@@ -23,6 +23,10 @@ PopStoryView.prototype.navigateTo = function(historyInfo) {
|
||||
}
|
||||
var listItemWidget = this.listWidget.children[listElementIndex],
|
||||
targetElement = listItemWidget.findFirstDomNode();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
// Scroll the node into view
|
||||
this.listWidget.dispatchEvent({type: "tm-scroll", target: targetElement});
|
||||
};
|
||||
@@ -30,6 +34,10 @@ PopStoryView.prototype.navigateTo = function(historyInfo) {
|
||||
PopStoryView.prototype.insert = function(widget) {
|
||||
var targetElement = widget.findFirstDomNode(),
|
||||
duration = $tw.utils.getAnimationDuration();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
// Reset once the transition is over
|
||||
setTimeout(function() {
|
||||
$tw.utils.setStyle(targetElement,[
|
||||
@@ -55,13 +63,19 @@ PopStoryView.prototype.insert = function(widget) {
|
||||
|
||||
PopStoryView.prototype.remove = function(widget) {
|
||||
var targetElement = widget.findFirstDomNode(),
|
||||
duration = $tw.utils.getAnimationDuration();
|
||||
duration = $tw.utils.getAnimationDuration(),
|
||||
removeElement = function() {
|
||||
if(targetElement.parentNode) {
|
||||
widget.removeChildDomNodes();
|
||||
}
|
||||
};
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
removeElement();
|
||||
return;
|
||||
}
|
||||
// Remove the element at the end of the transition
|
||||
setTimeout(function() {
|
||||
if(targetElement.parentNode) {
|
||||
widget.removeChildDomNodes();
|
||||
}
|
||||
},duration);
|
||||
setTimeout(removeElement,duration);
|
||||
// Animate the closure
|
||||
$tw.utils.setStyle(targetElement,[
|
||||
{transition: "none"},
|
||||
|
||||
@@ -26,12 +26,16 @@ var ZoominListView = function(listWidget) {
|
||||
// Make all the tiddlers position absolute, and hide all but the top (or first) one
|
||||
$tw.utils.each(this.listWidget.children,function(itemWidget,index) {
|
||||
var domNode = itemWidget.findFirstDomNode();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(domNode instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
if(targetTiddler !== itemWidget.parseTreeNode.itemTitle || (!targetTiddler && index)) {
|
||||
domNode.style.display = "none";
|
||||
} else {
|
||||
self.currentTiddlerDomNode = domNode;
|
||||
}
|
||||
domNode.style.position = "absolute";
|
||||
$tw.utils.addClass(domNode,"tc-storyview-zoomin-tiddler");
|
||||
});
|
||||
};
|
||||
|
||||
@@ -43,9 +47,13 @@ ZoominListView.prototype.navigateTo = function(historyInfo) {
|
||||
}
|
||||
var listItemWidget = this.listWidget.children[listElementIndex],
|
||||
targetElement = listItemWidget.findFirstDomNode();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
// Make the new tiddler be position absolute and visible so that we can measure it
|
||||
$tw.utils.addClass(targetElement,"tc-storyview-zoomin-tiddler");
|
||||
$tw.utils.setStyle(targetElement,[
|
||||
{position: "absolute"},
|
||||
{display: "block"},
|
||||
{transformOrigin: "0 0"},
|
||||
{transform: "translateX(0px) translateY(0px) scale(1)"},
|
||||
@@ -121,19 +129,31 @@ function findTitleDomNode(widget,targetClass) {
|
||||
|
||||
ZoominListView.prototype.insert = function(widget) {
|
||||
var targetElement = widget.findFirstDomNode();
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
// Make the newly inserted node position absolute and hidden
|
||||
$tw.utils.addClass(targetElement,"tc-storyview-zoomin-tiddler");
|
||||
$tw.utils.setStyle(targetElement,[
|
||||
{display: "none"},
|
||||
{position: "absolute"}
|
||||
{display: "none"}
|
||||
]);
|
||||
};
|
||||
|
||||
ZoominListView.prototype.remove = function(widget) {
|
||||
var targetElement = widget.findFirstDomNode(),
|
||||
duration = $tw.utils.getAnimationDuration();
|
||||
duration = $tw.utils.getAnimationDuration(),
|
||||
removeElement = function() {
|
||||
widget.removeChildDomNodes();
|
||||
};
|
||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||
if(!(targetElement instanceof Element)) {
|
||||
removeElement();
|
||||
return;
|
||||
}
|
||||
// Set up the tiddler that is being closed
|
||||
$tw.utils.addClass(targetElement,"tc-storyview-zoomin-tiddler");
|
||||
$tw.utils.setStyle(targetElement,[
|
||||
{position: "absolute"},
|
||||
{display: "block"},
|
||||
{transformOrigin: "50% 50%"},
|
||||
{transform: "translateX(0px) translateY(0px) scale(1)"},
|
||||
@@ -148,8 +168,8 @@ ZoominListView.prototype.remove = function(widget) {
|
||||
var toWidgetDomNode = toWidget && toWidget.findFirstDomNode();
|
||||
// Set up the tiddler we're moving back in
|
||||
if(toWidgetDomNode) {
|
||||
$tw.utils.addClass(toWidgetDomNode,"tc-storyview-zoomin-tiddler");
|
||||
$tw.utils.setStyle(toWidgetDomNode,[
|
||||
{position: "absolute"},
|
||||
{display: "block"},
|
||||
{transformOrigin: "50% 50%"},
|
||||
{transform: "translateX(0px) translateY(0px) scale(10)"},
|
||||
@@ -170,10 +190,7 @@ ZoominListView.prototype.remove = function(widget) {
|
||||
{opacity: "0"},
|
||||
{zIndex: "0"}
|
||||
]);
|
||||
setTimeout(function() {
|
||||
// Delete the DOM node when the transition is over
|
||||
widget.removeChildDomNodes();
|
||||
},duration);
|
||||
setTimeout(removeElement,duration);
|
||||
// Now the tiddler we're going back to
|
||||
if(toWidgetDomNode) {
|
||||
$tw.utils.setStyle(toWidgetDomNode,[
|
||||
|
||||
@@ -467,6 +467,8 @@ Syncer.prototype.dispatchTask = function(task,callback) {
|
||||
};
|
||||
// Invoke the callback
|
||||
callback(null);
|
||||
},{
|
||||
tiddlerInfo: self.tiddlerInfo[task.title]
|
||||
});
|
||||
} else {
|
||||
this.logger.log(" Not Dispatching 'save' task:",task.title,"tiddler does not exist");
|
||||
@@ -493,6 +495,7 @@ Syncer.prototype.dispatchTask = function(task,callback) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
delete self.tiddlerInfo[task.title];
|
||||
// Invoke the callback
|
||||
callback(null);
|
||||
},{
|
||||
|
||||
@@ -39,7 +39,7 @@ exports.httpRequest = function(options) {
|
||||
// Set up the state change handler
|
||||
request.onreadystatechange = function() {
|
||||
if(this.readyState === 4) {
|
||||
if(this.status === 200 || this.status === 204) {
|
||||
if(this.status === 200 || this.status === 201 || this.status === 204) {
|
||||
// Success!
|
||||
options.callback(null,this.responseText,this);
|
||||
return;
|
||||
|
||||
@@ -60,11 +60,12 @@ exports.parseKeyDescriptor = function(keyDescriptor) {
|
||||
};
|
||||
|
||||
exports.checkKeyDescriptor = function(event,keyInfo) {
|
||||
var metaKeyStatus = !!keyInfo.metaKey; // Using a temporary variable to keep JSHint happy
|
||||
return event.keyCode === keyInfo.keyCode &&
|
||||
event.shiftKey === keyInfo.shiftKey &&
|
||||
event.altKey === keyInfo.altKey &&
|
||||
event.ctrlKey === keyInfo.ctrlKey &&
|
||||
event.metaKey === keyInfo.metaKey;
|
||||
event.metaKey === metaKeyStatus;
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
@@ -39,6 +39,7 @@ var TW_Element = function(tag,namespace) {
|
||||
this.attributes = {};
|
||||
this.isRaw = false;
|
||||
this.children = [];
|
||||
this.style = {};
|
||||
this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml";
|
||||
};
|
||||
|
||||
@@ -137,6 +138,15 @@ Object.defineProperty(TW_Element.prototype, "outerHTML", {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(this.style) {
|
||||
var style = [];
|
||||
for(var s in this.style) {
|
||||
style.push(s + ":" + this.style[s] + ";");
|
||||
}
|
||||
if(style.length > 0) {
|
||||
output.push(" style='",style.join(""),"'")
|
||||
}
|
||||
}
|
||||
output.push(">");
|
||||
if($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {
|
||||
output.push(this.innerHTML);
|
||||
@@ -179,6 +189,9 @@ Object.defineProperty(TW_Element.prototype, "textContent", {
|
||||
});
|
||||
return b.join("");
|
||||
}
|
||||
},
|
||||
set: function(value) {
|
||||
this.children = [new TW_TextNode(value)];
|
||||
}
|
||||
});
|
||||
|
||||
@@ -219,6 +232,7 @@ var document = {
|
||||
createTextNode: function(text) {
|
||||
return new TW_TextNode(text);
|
||||
},
|
||||
compatMode: "CSS1Compat", // For KaTeX to know that we're not a browser in quirks mode
|
||||
isTiddlyWikiFakeDom: true
|
||||
};
|
||||
|
||||
|
||||
@@ -87,6 +87,7 @@ exports.pushTop = function(array,value) {
|
||||
}
|
||||
array.push(value);
|
||||
}
|
||||
return array;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -167,61 +168,118 @@ exports.slowInSlowOut = function(t) {
|
||||
return (1 - ((Math.cos(t * Math.PI) + 1) / 2));
|
||||
};
|
||||
|
||||
exports.formatDateString = function (date,template) {
|
||||
var t = template.replace(/0hh12/g,$tw.utils.pad($tw.utils.getHours12(date)));
|
||||
t = t.replace(/hh12/g,$tw.utils.getHours12(date));
|
||||
t = t.replace(/0hh/g,$tw.utils.pad(date.getHours()));
|
||||
t = t.replace(/hh/g,date.getHours());
|
||||
t = t.replace(/mmm/g,$tw.config.dateFormats.shortMonths[date.getMonth()]);
|
||||
t = t.replace(/0mm/g,$tw.utils.pad(date.getMinutes()));
|
||||
t = t.replace(/mm/g,date.getMinutes());
|
||||
t = t.replace(/0ss/g,$tw.utils.pad(date.getSeconds()));
|
||||
t = t.replace(/ss/g,date.getSeconds());
|
||||
t = t.replace(/[ap]m/g,$tw.utils.getAmPm(date).toLowerCase());
|
||||
t = t.replace(/[AP]M/g,$tw.utils.getAmPm(date).toUpperCase());
|
||||
t = t.replace(/wYYYY/g,$tw.utils.getYearForWeekNo(date));
|
||||
t = t.replace(/wYY/g,$tw.utils.pad($tw.utils.getYearForWeekNo(date)-2000));
|
||||
t = t.replace(/YYYY/g,date.getFullYear());
|
||||
t = t.replace(/YY/g,$tw.utils.pad(date.getFullYear()-2000));
|
||||
t = t.replace(/MMM/g,$tw.config.dateFormats.months[date.getMonth()]);
|
||||
t = t.replace(/0MM/g,$tw.utils.pad(date.getMonth()+1));
|
||||
t = t.replace(/MM/g,date.getMonth()+1);
|
||||
t = t.replace(/0WW/g,$tw.utils.pad($tw.utils.getWeek(date)));
|
||||
t = t.replace(/WW/g,$tw.utils.getWeek(date));
|
||||
t = t.replace(/DDD/g,$tw.config.dateFormats.days[date.getDay()]);
|
||||
t = t.replace(/ddd/g,$tw.config.dateFormats.shortDays[date.getDay()]);
|
||||
t = t.replace(/0DD/g,$tw.utils.pad(date.getDate()));
|
||||
t = t.replace(/DDth/g,date.getDate()+$tw.utils.getDaySuffix(date));
|
||||
t = t.replace(/DD/g,date.getDate());
|
||||
var tz = date.getTimezoneOffset();
|
||||
var atz = Math.abs(tz);
|
||||
t = t.replace(/TZD/g,(tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60));
|
||||
exports.formatDateString = function(date,template) {
|
||||
var t = template;
|
||||
t = t.replace(/0hh12/g,function() {
|
||||
return $tw.utils.pad($tw.utils.getHours12(date));
|
||||
});
|
||||
t = t.replace(/hh12/g,function() {
|
||||
return $tw.utils.getHours12(date);
|
||||
});
|
||||
t = t.replace(/0hh/g,function() {
|
||||
return $tw.utils.pad(date.getHours());
|
||||
});
|
||||
t = t.replace(/hh/g,function() {
|
||||
return date.getHours();
|
||||
});
|
||||
t = t.replace(/mmm/g,function() {
|
||||
return $tw.language.getString("Date/Short/Month/" + (date.getMonth() + 1));
|
||||
});
|
||||
t = t.replace(/0mm/g,function() {
|
||||
return $tw.utils.pad(date.getMinutes());
|
||||
});
|
||||
t = t.replace(/mm/g,function() {
|
||||
return date.getMinutes();
|
||||
});
|
||||
t = t.replace(/0ss/g,function() {
|
||||
return $tw.utils.pad(date.getSeconds());
|
||||
});
|
||||
t = t.replace(/ss/g,function() {
|
||||
return date.getSeconds();
|
||||
});
|
||||
t = t.replace(/[ap]m/g,function() {
|
||||
return $tw.utils.getAmPm(date).toLowerCase();
|
||||
});
|
||||
t = t.replace(/[AP]M/g,function() {
|
||||
return $tw.utils.getAmPm(date).toUpperCase();
|
||||
});
|
||||
t = t.replace(/wYYYY/g,function() {
|
||||
return $tw.utils.getYearForWeekNo(date);
|
||||
});
|
||||
t = t.replace(/wYY/g,function() {
|
||||
return $tw.utils.pad($tw.utils.getYearForWeekNo(date)-2000);
|
||||
});
|
||||
t = t.replace(/YYYY/g,function() {
|
||||
return date.getFullYear();
|
||||
});
|
||||
t = t.replace(/YY/g,function() {
|
||||
return $tw.utils.pad(date.getFullYear()-2000);
|
||||
});
|
||||
t = t.replace(/MMM/g,function() {
|
||||
return $tw.language.getString("Date/Long/Month/" + (date.getMonth() + 1));
|
||||
});
|
||||
t = t.replace(/0MM/g,function() {
|
||||
return $tw.utils.pad(date.getMonth()+1);
|
||||
});
|
||||
t = t.replace(/MM/g,function() {
|
||||
return date.getMonth() + 1;
|
||||
});
|
||||
t = t.replace(/0WW/g,function() {
|
||||
return $tw.utils.pad($tw.utils.getWeek(date));
|
||||
});
|
||||
t = t.replace(/WW/g,function() {
|
||||
return $tw.utils.getWeek(date);
|
||||
});
|
||||
t = t.replace(/DDD/g,function() {
|
||||
return $tw.language.getString("Date/Long/Day/" + date.getDay());
|
||||
});
|
||||
t = t.replace(/ddd/g,function() {
|
||||
return $tw.language.getString("Date/Short/Day/" + date.getDay());
|
||||
});
|
||||
t = t.replace(/0DD/g,function() {
|
||||
return $tw.utils.pad(date.getDate());
|
||||
});
|
||||
t = t.replace(/DDth/g,function() {
|
||||
return date.getDate() + $tw.utils.getDaySuffix(date);
|
||||
});
|
||||
t = t.replace(/DD/g,function() {
|
||||
return date.getDate();
|
||||
});
|
||||
t = t.replace(/TZD/g,function() {
|
||||
var tz = date.getTimezoneOffset(),
|
||||
atz = Math.abs(tz);
|
||||
return (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);
|
||||
});
|
||||
t = t.replace(/\\(.)/g,"$1");
|
||||
return t;
|
||||
};
|
||||
|
||||
exports.getAmPm = function(date) {
|
||||
return date.getHours() >= 12 ? $tw.config.dateFormats.pm : $tw.config.dateFormats.am;
|
||||
return $tw.language.getString("Date/Period/" + (date.getHours() >= 12 ? "pm" : "am"));
|
||||
};
|
||||
|
||||
exports.getDaySuffix = function(date) {
|
||||
return $tw.config.dateFormats.daySuffixes[date.getDate()-1];
|
||||
return $tw.language.getString("Date/DaySuffix/" + date.getDate());
|
||||
};
|
||||
|
||||
exports.getWeek = function(date) {
|
||||
var dt = new Date(date.getTime());
|
||||
var d = dt.getDay();
|
||||
if(d === 0) d=7;// JavaScript Sun=0, ISO Sun=7
|
||||
dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week to calculate weekNo
|
||||
var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1)+3600000)/86400000);
|
||||
return Math.floor(n/7)+1;
|
||||
if(d === 0) {
|
||||
d = 7; // JavaScript Sun=0, ISO Sun=7
|
||||
}
|
||||
dt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo
|
||||
var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1) + 3600000) / 86400000);
|
||||
return Math.floor(n / 7) + 1;
|
||||
};
|
||||
|
||||
exports.getYearForWeekNo = function(date) {
|
||||
var dt = new Date(date.getTime());
|
||||
var d = dt.getDay();
|
||||
if(d === 0) d=7;// JavaScript Sun=0, ISO Sun=7
|
||||
dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week
|
||||
if(d === 0) {
|
||||
d = 7; // JavaScript Sun=0, ISO Sun=7
|
||||
}
|
||||
dt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week
|
||||
return dt.getFullYear();
|
||||
};
|
||||
|
||||
|
||||
79
core/modules/widgets/action-navigate.js
Normal file
79
core/modules/widgets/action-navigate.js
Normal file
@@ -0,0 +1,79 @@
|
||||
/*\
|
||||
title: $:/core/modules/widgets/action-navigate.js
|
||||
type: application/javascript
|
||||
module-type: widget
|
||||
|
||||
Action widget to navigate to a tiddler
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var NavigateWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Inherit from the base widget class
|
||||
*/
|
||||
NavigateWidget.prototype = new Widget();
|
||||
|
||||
/*
|
||||
Render this widget into the DOM
|
||||
*/
|
||||
NavigateWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.computeAttributes();
|
||||
this.execute();
|
||||
};
|
||||
|
||||
/*
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
NavigateWidget.prototype.execute = function() {
|
||||
this.actionTo = this.getAttribute("$to");
|
||||
this.actionScroll = this.getAttribute("$scroll");
|
||||
};
|
||||
|
||||
/*
|
||||
Refresh the widget by ensuring our attributes are up to date
|
||||
*/
|
||||
NavigateWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes["$to"] || changedAttributes["$scroll"]) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
}
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
};
|
||||
|
||||
/*
|
||||
Invoke the action associated with this widget
|
||||
*/
|
||||
NavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {
|
||||
var bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),
|
||||
suppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);
|
||||
if(this.actionScroll === "yes") {
|
||||
suppressNavigation = false;
|
||||
} else if(this.actionScroll === "no") {
|
||||
suppressNavigation = true;
|
||||
}
|
||||
this.dispatchEvent({
|
||||
type: "tm-navigate",
|
||||
navigateTo: this.actionTo === undefined ? this.getVariable("currentTiddler") : this.actionTo,
|
||||
navigateFromTitle: this.getVariable("storyTiddler"),
|
||||
navigateFromNode: triggeringWidget,
|
||||
navigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height
|
||||
},
|
||||
navigateSuppressNavigation: suppressNavigation
|
||||
});
|
||||
return true; // Action was invoked
|
||||
};
|
||||
|
||||
exports["action-navigate"] = NavigateWidget;
|
||||
|
||||
})();
|
||||
82
core/modules/widgets/action-sendmessage.js
Normal file
82
core/modules/widgets/action-sendmessage.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/*\
|
||||
title: $:/core/modules/widgets/action-sendmessage.js
|
||||
type: application/javascript
|
||||
module-type: widget
|
||||
|
||||
Action widget to send a message
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
|
||||
var SendMessageWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Inherit from the base widget class
|
||||
*/
|
||||
SendMessageWidget.prototype = new Widget();
|
||||
|
||||
/*
|
||||
Render this widget into the DOM
|
||||
*/
|
||||
SendMessageWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.computeAttributes();
|
||||
this.execute();
|
||||
};
|
||||
|
||||
/*
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
SendMessageWidget.prototype.execute = function() {
|
||||
this.actionMessage = this.getAttribute("$message");
|
||||
this.actionParam = this.getAttribute("$param");
|
||||
};
|
||||
|
||||
/*
|
||||
Refresh the widget by ensuring our attributes are up to date
|
||||
*/
|
||||
SendMessageWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes["$message"] || changedAttributes["$param"]) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
}
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
};
|
||||
|
||||
/*
|
||||
Invoke the action associated with this widget
|
||||
*/
|
||||
SendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {
|
||||
// Get the parameter
|
||||
var param = this.actionParam;
|
||||
// If the parameter is missing then we'll assemble the attributes as a hashmap
|
||||
if(!param) {
|
||||
param = Object.create(null);
|
||||
var count = 0;
|
||||
$tw.utils.each(this.attributes,function(attribute,name) {
|
||||
if(name.charAt(0) !== "$") {
|
||||
param[name] = attribute;
|
||||
count++;
|
||||
}
|
||||
});
|
||||
// Revert to an empty parameter if no values were found
|
||||
if(!count) {
|
||||
param = undefined;
|
||||
}
|
||||
}
|
||||
// Dispatch the message
|
||||
this.dispatchEvent({type: this.actionMessage, param: param, tiddlerTitle: this.getVariable("currentTiddler")});
|
||||
return true; // Action was invoked
|
||||
};
|
||||
|
||||
exports["action-sendmessage"] = SendMessageWidget;
|
||||
|
||||
})();
|
||||
@@ -36,12 +36,18 @@ BrowseWidget.prototype.render = function(parent,nextSibling) {
|
||||
// Create element
|
||||
var domNode = this.document.createElement("input");
|
||||
domNode.setAttribute("type","file");
|
||||
domNode.setAttribute("multiple","multiple");
|
||||
if(this.browseMultiple) {
|
||||
domNode.setAttribute("multiple","multiple");
|
||||
}
|
||||
// Add a click event handler
|
||||
domNode.addEventListener("change",function (event) {
|
||||
self.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
});
|
||||
if(self.message) {
|
||||
self.dispatchEvent({type: self.message, param: event.target.files});
|
||||
} else {
|
||||
self.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
});
|
||||
}
|
||||
return false;
|
||||
},false);
|
||||
// Insert element
|
||||
@@ -54,6 +60,8 @@ BrowseWidget.prototype.render = function(parent,nextSibling) {
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
BrowseWidget.prototype.execute = function() {
|
||||
this.browseMultiple = this.getAttribute("multiple");
|
||||
this.message = this.getAttribute("message");
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -50,8 +50,8 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.style) {
|
||||
domNode.setAttribute("style",this.style);
|
||||
}
|
||||
if(this.title) {
|
||||
domNode.setAttribute("title",this.title);
|
||||
if(this.tooltip) {
|
||||
domNode.setAttribute("title",this.tooltip);
|
||||
}
|
||||
if(this["aria-label"]) {
|
||||
domNode.setAttribute("aria-label",this["aria-label"]);
|
||||
@@ -59,6 +59,9 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
|
||||
// Add a click event handler
|
||||
domNode.addEventListener("click",function (event) {
|
||||
var handled = false;
|
||||
if(self.invokeActions(event)) {
|
||||
handled = true;
|
||||
}
|
||||
if(self.to) {
|
||||
self.navigateTo(event);
|
||||
handled = true;
|
||||
@@ -87,6 +90,10 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.domNodes.push(domNode);
|
||||
};
|
||||
|
||||
ButtonWidget.prototype.getBoundingClientRect = function() {
|
||||
return this.domNodes[0].getBoundingClientRect();
|
||||
}
|
||||
|
||||
ButtonWidget.prototype.isSelected = function() {
|
||||
var tiddler = this.wiki.getTiddler(this.set);
|
||||
return tiddler ? tiddler.fields.text === this.setTo : this.defaultSetValue === this.setTo;
|
||||
@@ -99,7 +106,7 @@ ButtonWidget.prototype.isPoppedUp = function() {
|
||||
};
|
||||
|
||||
ButtonWidget.prototype.navigateTo = function(event) {
|
||||
var bounds = this.domNodes[0].getBoundingClientRect();
|
||||
var bounds = this.getBoundingClientRect();
|
||||
this.dispatchEvent({
|
||||
type: "tm-navigate",
|
||||
navigateTo: this.to,
|
||||
@@ -141,7 +148,7 @@ ButtonWidget.prototype.execute = function() {
|
||||
this.hover = this.getAttribute("hover");
|
||||
this["class"] = this.getAttribute("class","");
|
||||
this["aria-label"] = this.getAttribute("aria-label");
|
||||
this.title = this.getAttribute("title");
|
||||
this.tooltip = this.getAttribute("tooltip");
|
||||
this.style = this.getAttribute("style");
|
||||
this.selectedClass = this.getAttribute("selectedClass");
|
||||
this.defaultSetValue = this.getAttribute("default");
|
||||
|
||||
@@ -97,10 +97,10 @@ ImageWidget.prototype.render = function(parent,nextSibling) {
|
||||
domNode.setAttribute("class",this.imageClass);
|
||||
}
|
||||
if(this.imageWidth) {
|
||||
domNode.setAttribute("width",parseInt(this.imageWidth,10) + "px");
|
||||
domNode.setAttribute("width",this.imageWidth);
|
||||
}
|
||||
if(this.imageHeight) {
|
||||
domNode.setAttribute("height",parseInt(this.imageHeight,10) + "px");
|
||||
domNode.setAttribute("height",this.imageHeight);
|
||||
}
|
||||
if(this.imageTooltip) {
|
||||
domNode.setAttribute("title",this.imageTooltip);
|
||||
|
||||
@@ -124,56 +124,60 @@ LinkWidget.prototype.handleClickEvent = function (event) {
|
||||
};
|
||||
|
||||
LinkWidget.prototype.handleDragStartEvent = function(event) {
|
||||
if(this.to) {
|
||||
// Set the dragging class on the element being dragged
|
||||
$tw.utils.addClass(event.target,"tc-tiddlylink-dragging");
|
||||
// Create the drag image elements
|
||||
this.dragImage = this.document.createElement("div");
|
||||
this.dragImage.className = "tc-tiddler-dragger";
|
||||
var inner = this.document.createElement("div");
|
||||
inner.className = "tc-tiddler-dragger-inner";
|
||||
inner.appendChild(this.document.createTextNode(this.to));
|
||||
this.dragImage.appendChild(inner);
|
||||
this.document.body.appendChild(this.dragImage);
|
||||
// Astoundingly, we need to cover the dragger up: http://www.kryogenix.org/code/browser/custom-drag-image.html
|
||||
var cover = this.document.createElement("div");
|
||||
cover.className = "tc-tiddler-dragger-cover";
|
||||
cover.style.left = (inner.offsetLeft - 16) + "px";
|
||||
cover.style.top = (inner.offsetTop - 16) + "px";
|
||||
cover.style.width = (inner.offsetWidth + 32) + "px";
|
||||
cover.style.height = (inner.offsetHeight + 32) + "px";
|
||||
this.dragImage.appendChild(cover);
|
||||
// Set the data transfer properties
|
||||
var dataTransfer = event.dataTransfer;
|
||||
// First the image
|
||||
dataTransfer.effectAllowed = "copy";
|
||||
if(dataTransfer.setDragImage) {
|
||||
dataTransfer.setDragImage(this.dragImage.firstChild,-16,-16);
|
||||
if(event.target === this.domNodes[0]) {
|
||||
if(this.to) {
|
||||
// Set the dragging class on the element being dragged
|
||||
$tw.utils.addClass(event.target,"tc-tiddlylink-dragging");
|
||||
// Create the drag image elements
|
||||
this.dragImage = this.document.createElement("div");
|
||||
this.dragImage.className = "tc-tiddler-dragger";
|
||||
var inner = this.document.createElement("div");
|
||||
inner.className = "tc-tiddler-dragger-inner";
|
||||
inner.appendChild(this.document.createTextNode(this.to));
|
||||
this.dragImage.appendChild(inner);
|
||||
this.document.body.appendChild(this.dragImage);
|
||||
// Astoundingly, we need to cover the dragger up: http://www.kryogenix.org/code/browser/custom-drag-image.html
|
||||
var cover = this.document.createElement("div");
|
||||
cover.className = "tc-tiddler-dragger-cover";
|
||||
cover.style.left = (inner.offsetLeft - 16) + "px";
|
||||
cover.style.top = (inner.offsetTop - 16) + "px";
|
||||
cover.style.width = (inner.offsetWidth + 32) + "px";
|
||||
cover.style.height = (inner.offsetHeight + 32) + "px";
|
||||
this.dragImage.appendChild(cover);
|
||||
// Set the data transfer properties
|
||||
var dataTransfer = event.dataTransfer;
|
||||
// First the image
|
||||
dataTransfer.effectAllowed = "copy";
|
||||
if(dataTransfer.setDragImage) {
|
||||
dataTransfer.setDragImage(this.dragImage.firstChild,-16,-16);
|
||||
}
|
||||
// Then the data
|
||||
dataTransfer.clearData();
|
||||
var jsonData = this.wiki.getTiddlerAsJson(this.to),
|
||||
textData = this.wiki.getTiddlerText(this.to,"");
|
||||
// IE doesn't like these content types
|
||||
if(!$tw.browser.isIE) {
|
||||
dataTransfer.setData("text/vnd.tiddler",jsonData);
|
||||
dataTransfer.setData("text/plain",textData);
|
||||
dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURI(jsonData));
|
||||
}
|
||||
dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURI(jsonData));
|
||||
dataTransfer.setData("Text",textData);
|
||||
event.stopPropagation();
|
||||
} else {
|
||||
event.preventDefault();
|
||||
}
|
||||
// Then the data
|
||||
dataTransfer.clearData();
|
||||
var jsonData = this.wiki.getTiddlerAsJson(this.to),
|
||||
textData = this.wiki.getTiddlerText(this.to,"");
|
||||
// IE doesn't like these content types
|
||||
if(!$tw.browser.isIE) {
|
||||
dataTransfer.setData("text/vnd.tiddler",jsonData);
|
||||
dataTransfer.setData("text/plain",textData);
|
||||
dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURI(jsonData));
|
||||
}
|
||||
dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURI(jsonData));
|
||||
dataTransfer.setData("Text",textData);
|
||||
event.stopPropagation();
|
||||
} else {
|
||||
event.preventDefault();
|
||||
}
|
||||
};
|
||||
|
||||
LinkWidget.prototype.handleDragEndEvent = function(event) {
|
||||
// Remove the dragging class on the element being dragged
|
||||
$tw.utils.removeClass(event.target,"tc-tiddlylink-dragging");
|
||||
// Delete the drag image element
|
||||
if(this.dragImage) {
|
||||
this.dragImage.parentNode.removeChild(this.dragImage);
|
||||
if(event.target === this.domNodes[0]) {
|
||||
// Remove the dragging class on the element being dragged
|
||||
$tw.utils.removeClass(event.target,"tc-tiddlylink-dragging");
|
||||
// Delete the drag image element
|
||||
if(this.dragImage) {
|
||||
this.dragImage.parentNode.removeChild(this.dragImage);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -177,12 +177,7 @@ NavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {
|
||||
NavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {
|
||||
var self = this;
|
||||
function isUnmodifiedShadow(title) {
|
||||
// jshint eqnull:true
|
||||
var tiddler = self.wiki.getTiddler(title);
|
||||
return (
|
||||
self.wiki.isShadowTiddler(title) &&
|
||||
tiddler.fields.modified == null
|
||||
);
|
||||
return self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);
|
||||
}
|
||||
function confirmEditShadow(title) {
|
||||
return confirm($tw.language.getString(
|
||||
@@ -253,19 +248,14 @@ Create/reuse the draft tiddler for a given title
|
||||
*/
|
||||
NavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {
|
||||
// See if there is already a draft tiddler for this tiddler
|
||||
var drafts = [];
|
||||
this.wiki.forEachTiddler({includeSystem: true},function(title,tiddler) {
|
||||
if(tiddler.fields["draft.title"] && tiddler.fields["draft.of"] === targetTitle) {
|
||||
drafts.push(tiddler);
|
||||
}
|
||||
});
|
||||
if(drafts.length > 0) {
|
||||
return drafts[0];
|
||||
var draftTitle = this.wiki.findDraft(targetTitle);
|
||||
if(draftTitle) {
|
||||
return this.wiki.getTiddler(draftTitle);
|
||||
}
|
||||
// Get the current value of the tiddler we're editing
|
||||
var tiddler = this.wiki.getTiddler(targetTitle),
|
||||
draftTitle = this.generateDraftTitle(targetTitle);
|
||||
var tiddler = this.wiki.getTiddler(targetTitle);
|
||||
// Save the initial value of the draft tiddler
|
||||
draftTitle = this.generateDraftTitle(targetTitle);
|
||||
var draftTiddler = new $tw.Tiddler(
|
||||
tiddler,
|
||||
{
|
||||
@@ -372,29 +362,76 @@ NavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {
|
||||
};
|
||||
|
||||
// Create a new draft tiddler
|
||||
// event.param can either be the title of a template tiddler, or a hashmap of fields.
|
||||
//
|
||||
// The title of the newly created tiddler follows these rules:
|
||||
// * If a hashmap was used and a title field was specified, use that title
|
||||
// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix
|
||||
// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix
|
||||
//
|
||||
// If a draft of the target tiddler already exists then it is reused
|
||||
NavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {
|
||||
// Get the story details
|
||||
var storyList = this.getStoryList();
|
||||
// Get the template tiddler if there is one
|
||||
var templateTiddler = this.wiki.getTiddler(event.param);
|
||||
// Title the new tiddler
|
||||
var title = this.wiki.generateNewTitle((templateTiddler && templateTiddler.fields.title) || "New Tiddler");
|
||||
// Create the draft tiddler
|
||||
var draftTitle = this.generateDraftTitle(title),
|
||||
draftTiddler = new $tw.Tiddler({
|
||||
text: ""
|
||||
},templateTiddler,
|
||||
var storyList = this.getStoryList(),
|
||||
templateTiddler, title, draftTitle, existingTiddler, mergedTags;
|
||||
// Work out the title of the target tiddler
|
||||
if(typeof event.param === "object") {
|
||||
// If we got a hashmap use it as the template
|
||||
templateTiddler = event.param;
|
||||
if(templateTiddler.title) {
|
||||
// Use the provided title
|
||||
title = templateTiddler.title
|
||||
} else {
|
||||
// Generate a new unique title
|
||||
title = this.wiki.generateNewTitle($tw.language.getString("DefaultNewTiddlerTitle"));
|
||||
}
|
||||
} else {
|
||||
// If we got a string, use it as the template and generate a new title
|
||||
templateTiddler = this.wiki.getTiddler(event.param);
|
||||
title = this.wiki.generateNewTitle(event.param || $tw.language.getString("DefaultNewTiddlerTitle"));
|
||||
}
|
||||
// Find any existing draft for this tiddler
|
||||
draftTitle = this.wiki.findDraft(title);
|
||||
// Pull in any existing tiddler
|
||||
if(draftTitle) {
|
||||
existingTiddler = this.wiki.getTiddler(draftTitle);
|
||||
} else {
|
||||
draftTitle = this.generateDraftTitle(title);
|
||||
existingTiddler = this.wiki.getTiddler(title);
|
||||
}
|
||||
// Merge the tags
|
||||
if(existingTiddler && existingTiddler.fields.tags && templateTiddler && templateTiddler.tags) {
|
||||
// Merge tags
|
||||
mergedTags = $tw.utils.pushTop($tw.utils.parseStringArray(templateTiddler.tags),existingTiddler.fields.tags);
|
||||
} else if(existingTiddler && existingTiddler.fields.tags) {
|
||||
mergedTags = existingTiddler.fields.tags;
|
||||
} else if(templateTiddler && templateTiddler.tags) {
|
||||
mergedTags = templateTiddler.tags;
|
||||
} else if(templateTiddler && templateTiddler.fields && templateTiddler.fields.tags) {
|
||||
mergedTags = templateTiddler.fields.tags;
|
||||
}
|
||||
// Save the draft tiddler
|
||||
var draftTiddler = new $tw.Tiddler({
|
||||
text: "",
|
||||
"draft.title": title
|
||||
},
|
||||
templateTiddler,
|
||||
existingTiddler,
|
||||
this.wiki.getCreationFields(),
|
||||
{
|
||||
title: draftTitle,
|
||||
"draft.title": title,
|
||||
"draft.of": title
|
||||
"draft.of": title,
|
||||
tags: mergedTags
|
||||
},this.wiki.getModificationFields());
|
||||
this.wiki.addTiddler(draftTiddler);
|
||||
// Update the story to insert the new draft at the top
|
||||
var slot = storyList.indexOf(event.navigateFromTitle);
|
||||
storyList.splice(slot + 1,0,draftTitle);
|
||||
// Save the updated story
|
||||
// Update the story to insert the new draft at the top and remove any existing tiddler
|
||||
if(storyList.indexOf(draftTitle) === -1) {
|
||||
var slot = storyList.indexOf(event.navigateFromTitle);
|
||||
storyList.splice(slot + 1,0,draftTitle);
|
||||
}
|
||||
if(storyList.indexOf(title) !== -1) {
|
||||
storyList.splice(storyList.indexOf(title),1);
|
||||
}
|
||||
this.saveStoryList(storyList);
|
||||
// Add a new record to the top of the history stack
|
||||
this.addToHistory(draftTitle);
|
||||
|
||||
@@ -79,7 +79,7 @@ RadioWidget.prototype.setValue = function() {
|
||||
var tiddler = this.wiki.getTiddler(this.radioTitle),
|
||||
addition = {};
|
||||
addition[this.radioField] = this.radioValue;
|
||||
this.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));
|
||||
this.wiki.addTiddler(new $tw.Tiddler({title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -65,7 +65,11 @@ TranscludeWidget.prototype.execute = function() {
|
||||
// Check for recursion
|
||||
if(parser) {
|
||||
if(this.parentWidget && this.parentWidget.hasVariable("transclusion",recursionMarker)) {
|
||||
parseTreeNodes = [{type: "text", text: "Recursive transclusion error in transclude widget"}];
|
||||
parseTreeNodes = [{type: "element", tag: "span", attributes: {
|
||||
"class": {type: "string", value: "tc-error"}
|
||||
}, children: [
|
||||
{type: "text", text: "Recursive transclusion error in transclude widget"}
|
||||
]}];
|
||||
}
|
||||
}
|
||||
// Construct the child widgets
|
||||
|
||||
@@ -204,7 +204,7 @@ Widget.prototype.getStateQualifier = function(name) {
|
||||
}
|
||||
node = node.parentWidget;
|
||||
}
|
||||
return "{" + $tw.utils.hashString(output.join("")) + "}";
|
||||
return $tw.utils.hashString(output.join(""));
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -475,6 +475,20 @@ Widget.prototype.removeChildDomNodes = function() {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Invoke any action widgets that are immediate children of this widget
|
||||
*/
|
||||
Widget.prototype.invokeActions = function(event) {
|
||||
var handled = false;
|
||||
for(var t=0; t<this.children.length; t++) {
|
||||
var child = this.children[t];
|
||||
if(child.invokeAction && child.invokeAction(this,event)) {
|
||||
handled = true;
|
||||
}
|
||||
}
|
||||
return handled;
|
||||
};
|
||||
|
||||
exports.widget = Widget;
|
||||
|
||||
})();
|
||||
|
||||
@@ -177,7 +177,7 @@ exports.generateNewTitle = function(baseTitle,options) {
|
||||
options = options || {};
|
||||
var c = 0,
|
||||
title = baseTitle;
|
||||
while(this.tiddlerExists(title) || this.isShadowTiddler(title)) {
|
||||
while(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {
|
||||
title = baseTitle +
|
||||
(options.prefix || " ") +
|
||||
(++c);
|
||||
@@ -317,8 +317,18 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is
|
||||
var self = this;
|
||||
titles.sort(function(a,b) {
|
||||
if(sortField !== "title") {
|
||||
a = self.getTiddler(a).fields[sortField] || "";
|
||||
b = self.getTiddler(b).fields[sortField] || "";
|
||||
var tiddlerA = self.getTiddler(a),
|
||||
tiddlerB = self.getTiddler(b);
|
||||
if(tiddlerA) {
|
||||
a = tiddlerA.fields[sortField] || "";
|
||||
} else {
|
||||
a = "";
|
||||
}
|
||||
if(tiddlerB) {
|
||||
b = tiddlerB.fields[sortField] || "";
|
||||
} else {
|
||||
b = "";
|
||||
}
|
||||
}
|
||||
if(isNumeric) {
|
||||
a = Number(a);
|
||||
@@ -560,7 +570,7 @@ exports.sortByList = function(array,listTitle) {
|
||||
|
||||
exports.getSubTiddler = function(title,subTiddlerTitle) {
|
||||
var bundleInfo = this.getPluginInfo(title) || this.getTiddlerData(title);
|
||||
if(bundleInfo) {
|
||||
if(bundleInfo && bundleInfo.tiddlers) {
|
||||
var subTiddler = bundleInfo.tiddlers[subTiddlerTitle];
|
||||
if(subTiddler) {
|
||||
return new $tw.Tiddler(subTiddler);
|
||||
@@ -1122,6 +1132,19 @@ exports.readFile = function(file,callback) {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
Find any existing draft of a specified tiddler
|
||||
*/
|
||||
exports.findDraft = function(targetTitle) {
|
||||
var draftTitle = undefined;
|
||||
this.forEachTiddler({includeSystem: true},function(title,tiddler) {
|
||||
if(tiddler.fields["draft.title"] && tiddler.fields["draft.of"] === targetTitle) {
|
||||
draftTitle = title;
|
||||
}
|
||||
});
|
||||
return draftTitle;
|
||||
}
|
||||
|
||||
/*
|
||||
Check whether the specified draft tiddler has been modified
|
||||
*/
|
||||
|
||||
@@ -17,7 +17,7 @@ caption: {{$:/language/Search/Shadows/Caption}}
|
||||
|
||||
<<lingo Shadows/Matches>>
|
||||
|
||||
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ caption: {{$:/language/Search/Standard/Caption}}
|
||||
|
||||
<<lingo Standard/Matches>>
|
||||
|
||||
<$list filter="[!is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
<$list filter="[!is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ caption: {{$:/language/Search/System/Caption}}
|
||||
|
||||
<<lingo System/Matches>>
|
||||
|
||||
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]" template="$:/core/ui/ListItemTemplate"/>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
title: $:/ControlPanel
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" "$:/core/ui/ControlPanel/Basics">>
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" "$:/core/ui/ControlPanel/Info">>
|
||||
</div>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced
|
||||
tags: $:/tags/ControlPanel
|
||||
tags: $:/tags/ControlPanel/Info
|
||||
caption: {{$:/language/ControlPanel/Advanced/Caption}}
|
||||
|
||||
{{$:/language/ControlPanel/Advanced/Hint}}
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]" "$:/core/ui/ControlPanel/Advanced/TiddlerFields">>
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]" "$:/core/ui/ControlPanel/TiddlerFields">>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/LoadedModules
|
||||
tags: $:/tags/ControlPanel/Advanced
|
||||
caption: {{$:/language/ControlPanel/Advanced/LoadedModules/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/
|
||||
<<lingo LoadedModules/Hint>>
|
||||
|
||||
{{$:/snippets/modules}}
|
||||
@@ -1,19 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/Settings
|
||||
tags: $:/tags/ControlPanel/Advanced
|
||||
caption: {{$:/language/ControlPanel/Advanced/Settings/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/Settings/
|
||||
|
||||
<<lingo Hint>>
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced/Settings]]">
|
||||
|
||||
<div style="border-top:1px solid #eee;">
|
||||
|
||||
!! <$link><$transclude field="caption"/></$link>
|
||||
|
||||
<$transclude/>
|
||||
|
||||
</div>
|
||||
|
||||
</$list>
|
||||
@@ -1,10 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/Settings/NavigationHistory
|
||||
tags: $:/tags/ControlPanel/Advanced/Settings
|
||||
caption: {{$:/language/ControlPanel/Advanced/Settings/NavigationHistory/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/Settings/NavigationHistory/
|
||||
<$link to="$:/config/Navigation/UpdateHistory"><<lingo Hint>></$link>
|
||||
|
||||
<$radio tiddler="$:/config/Navigation/UpdateHistory" value="yes"> <<lingo Yes/Description>> </$radio>
|
||||
|
||||
<$radio tiddler="$:/config/Navigation/UpdateHistory" value="no"> <<lingo No/Description>> </$radio>
|
||||
@@ -1,9 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/TiddlerFields
|
||||
tags: $:/tags/ControlPanel/Advanced
|
||||
caption: {{$:/language/ControlPanel/Advanced/TiddlerFields/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/
|
||||
|
||||
<<lingo TiddlerFields/Hint>>
|
||||
|
||||
{{$:/snippets/allfields}}
|
||||
@@ -5,5 +5,5 @@ caption: {{$:/language/ControlPanel/Appearance/Caption}}
|
||||
{{$:/language/ControlPanel/Appearance/Hint}}
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]" "$:/core/ui/ControlPanel/Appearance/Theme">>
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]" "$:/core/ui/ControlPanel/Theme">>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/StoryView
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/Appearance/StoryView/Caption}}
|
||||
|
||||
{{$:/snippets/viewswitcher}}
|
||||
@@ -1,5 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/Theme
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/Appearance/Theme/Caption}}
|
||||
|
||||
{{$:/snippets/themeswitcher}}
|
||||
@@ -1,9 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/Toolbars
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/Appearance/Toolbars/Caption}}
|
||||
|
||||
{{$:/language/ControlPanel/Appearance/Toolbars/Hint}}
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance/Toolbars]!has[draft.of]]" "$:/core/ui/ControlPanel/Appearance/Toolbars/ViewToolbar" "$:/state/tabs/controlpanel/toolbars" "tc-vertical">>
|
||||
</div>
|
||||
@@ -1,24 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/Toolbars/EditToolbar
|
||||
tags: $:/tags/ControlPanel/Appearance/Toolbars
|
||||
caption: {{$:/language/ControlPanel/Appearance/Toolbars/EditToolbar/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TiddlerInfo/
|
||||
\define config-title()
|
||||
$:/config/EditToolbarButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
|
||||
{{$:/language/ControlPanel/Appearance/Toolbars/EditToolbar/Hint}}
|
||||
|
||||
<$set name="tv-config-toolbar-icons" value="yes">
|
||||
|
||||
<$set name="tv-config-toolbar-text" value="yes">
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i></$checkbox>
|
||||
|
||||
</$list>
|
||||
|
||||
</$set>
|
||||
|
||||
</$set>
|
||||
@@ -1,24 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/Toolbars/PageControls
|
||||
tags: $:/tags/ControlPanel/Appearance/Toolbars
|
||||
caption: {{$:/language/ControlPanel/Appearance/Toolbars/PageControls/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TiddlerInfo/
|
||||
\define config-title()
|
||||
$:/config/PageControlButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
|
||||
{{$:/language/ControlPanel/Appearance/Toolbars/PageControls/Hint}}
|
||||
|
||||
<$set name="tv-config-toolbar-icons" value="yes">
|
||||
|
||||
<$set name="tv-config-toolbar-text" value="yes">
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i></$checkbox>
|
||||
|
||||
</$list>
|
||||
|
||||
</$set>
|
||||
|
||||
</$set>
|
||||
@@ -1,24 +0,0 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/Toolbars/ViewToolbar
|
||||
tags: $:/tags/ControlPanel/Appearance/Toolbars
|
||||
caption: {{$:/language/ControlPanel/Appearance/Toolbars/ViewToolbar/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TiddlerInfo/
|
||||
\define config-title()
|
||||
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
|
||||
{{$:/language/ControlPanel/Appearance/Toolbars/ViewToolbar/Hint}}
|
||||
|
||||
<$set name="tv-config-toolbar-icons" value="yes">
|
||||
|
||||
<$set name="tv-config-toolbar-text" value="yes">
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i></$checkbox>
|
||||
|
||||
</$list>
|
||||
|
||||
</$set>
|
||||
|
||||
</$set>
|
||||
@@ -1,5 +1,5 @@
|
||||
title: $:/core/ui/ControlPanel/Basics
|
||||
tags: $:/tags/ControlPanel
|
||||
tags: $:/tags/ControlPanel/Info
|
||||
caption: {{$:/language/ControlPanel/Basics/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Basics/
|
||||
@@ -9,6 +9,8 @@ caption: {{$:/language/ControlPanel/Basics/Caption}}
|
||||
|<$link to="$:/status/UserName"><<lingo Username/Prompt>></$link> |<$edit-text tiddler="$:/status/UserName" default="" tag="input"/> |
|
||||
|<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input"/> |
|
||||
|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
|<$link to="$:/config/NewJournal/Title"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Title" default="" tag="input"/> |
|
||||
|<$link to="$:/config/NewJournal/Tags"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Tags" default="" tag="input"/> |
|
||||
|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |
|
||||
|<<lingo Tiddlers/Prompt>> |''<$count filter="[!is[system]]"/>'' |
|
||||
|<<lingo Tags/Prompt>> |''<$count filter="[tags[]]"/>'' |
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/EditorTypes
|
||||
title: $:/core/ui/ControlPanel/EditorTypes
|
||||
tags: $:/tags/ControlPanel/Advanced
|
||||
caption: {{$:/language/ControlPanel/Advanced/EditorTypes/Caption}}
|
||||
caption: {{$:/language/ControlPanel/EditorTypes/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/EditorTypes/
|
||||
\define lingo-base() $:/language/ControlPanel/EditorTypes/
|
||||
|
||||
<<lingo Hint>>
|
||||
|
||||
9
core/ui/ControlPanel/Info.tid
Normal file
9
core/ui/ControlPanel/Info.tid
Normal file
@@ -0,0 +1,9 @@
|
||||
title: $:/core/ui/ControlPanel/Info
|
||||
tags: $:/tags/ControlPanel
|
||||
caption: {{$:/language/ControlPanel/Info/Caption}}
|
||||
|
||||
{{$:/language/ControlPanel/Info/Hint}}
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]" "$:/core/ui/ControlPanel/Basics">>
|
||||
</div>
|
||||
8
core/ui/ControlPanel/LoadedModules.tid
Normal file
8
core/ui/ControlPanel/LoadedModules.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/ui/ControlPanel/LoadedModules
|
||||
tags: $:/tags/ControlPanel/Advanced
|
||||
caption: {{$:/language/ControlPanel/LoadedModules/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/
|
||||
<<lingo LoadedModules/Hint>>
|
||||
|
||||
{{$:/snippets/modules}}
|
||||
@@ -1,8 +1,8 @@
|
||||
title: $:/core/ui/ControlPanel/Appearance/Palette
|
||||
title: $:/core/ui/ControlPanel/Palette
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/Appearance/Palette/Caption}}
|
||||
caption: {{$:/language/ControlPanel/Palette/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Appearance/Palette/
|
||||
\define lingo-base() $:/language/ControlPanel/Palette/
|
||||
|
||||
{{$:/snippets/paletteswitcher}}
|
||||
|
||||
@@ -64,12 +64,12 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
<$list filter="[all[current]] -[[$:/core]]">
|
||||
<div style="float:right;">
|
||||
<$reveal type="nomatch" state=<<plugin-disable-title>> text="yes">
|
||||
<$button set=<<plugin-disable-title>> setTo="yes" title={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>
|
||||
<$button set=<<plugin-disable-title>> setTo="yes" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>
|
||||
<<lingo Disable/Caption>>
|
||||
</$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" state=<<plugin-disable-title>> text="yes">
|
||||
<$button set=<<plugin-disable-title>> setTo="no" title={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>
|
||||
<$button set=<<plugin-disable-title>> setTo="no" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>
|
||||
<<lingo Enable/Caption>>
|
||||
</$button>
|
||||
</$reveal>
|
||||
|
||||
@@ -13,17 +13,15 @@ http://$(userName)$.tiddlyspot.com/backup/
|
||||
</$set>
|
||||
</$reveal>
|
||||
\end
|
||||
! <<lingo Heading>>
|
||||
|
||||
|<<lingo AutoSave>> |{{$:/snippets/autosavestatus}} |
|
||||
|
||||
! <<lingo TiddlySpot/Heading>>
|
||||
|
||||
<<lingo TiddlySpot/Description>>
|
||||
|
||||
|<<lingo TiddlySpot/UserName>> |<$edit-text tiddler="$:/UploadName" default="" tag="input"/> |
|
||||
|<<lingo TiddlySpot/Password>> |<$password name="upload"/> |
|
||||
|<<lingo TiddlySpot/Backups>> |<<backupLink>> |
|
||||
|
||||
!! <<lingo TiddlySpot/Advanced/Heading>>
|
||||
''<<lingo TiddlySpot/Advanced/Heading>>''
|
||||
|
||||
|<<lingo TiddlySpot/ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input"/> |
|
||||
|<<lingo TiddlySpot/Filename>> |<$edit-text tiddler="$:/UploadFilename" default="index.html" tag="input"/> |
|
||||
|
||||
19
core/ui/ControlPanel/Settings.tid
Normal file
19
core/ui/ControlPanel/Settings.tid
Normal file
@@ -0,0 +1,19 @@
|
||||
title: $:/core/ui/ControlPanel/Settings
|
||||
tags: $:/tags/ControlPanel
|
||||
caption: {{$:/language/ControlPanel/Settings/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Settings/
|
||||
|
||||
<<lingo Hint>>
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]">
|
||||
|
||||
<div style="border-top:1px solid #eee;">
|
||||
|
||||
!! <$link><$transclude field="caption"/></$link>
|
||||
|
||||
<$transclude/>
|
||||
|
||||
</div>
|
||||
|
||||
</$list>
|
||||
11
core/ui/ControlPanel/Settings/AutoSave.tid
Normal file
11
core/ui/ControlPanel/Settings/AutoSave.tid
Normal file
@@ -0,0 +1,11 @@
|
||||
title: $:/core/ui/ControlPanel/Settings/AutoSave
|
||||
tags: $:/tags/ControlPanel/Settings
|
||||
caption: {{$:/language/ControlPanel/Settings/AutoSave/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Settings/AutoSave/
|
||||
|
||||
<$link to="$:/config/AutoSave"><<lingo Hint>></$link>
|
||||
|
||||
<$radio tiddler="$:/config/AutoSave" value="yes"> <<lingo Enabled/Description>> </$radio>
|
||||
|
||||
<$radio tiddler="$:/config/AutoSave" value="no"> <<lingo Disabled/Description>> </$radio>
|
||||
@@ -1,8 +1,8 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/Settings/NavigationAddressBar
|
||||
tags: $:/tags/ControlPanel/Advanced/Settings
|
||||
caption: {{$:/language/ControlPanel/Advanced/Settings/NavigationAddressBar/Caption}}
|
||||
title: $:/core/ui/ControlPanel/Settings/NavigationAddressBar
|
||||
tags: $:/tags/ControlPanel/Settings
|
||||
caption: {{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/Settings/NavigationAddressBar/
|
||||
\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/
|
||||
|
||||
<$link to="$:/config/Navigation/UpdateAddressBar"><<lingo Hint>></$link>
|
||||
|
||||
10
core/ui/ControlPanel/Settings/NavigationHistory.tid
Normal file
10
core/ui/ControlPanel/Settings/NavigationHistory.tid
Normal file
@@ -0,0 +1,10 @@
|
||||
title: $:/core/ui/ControlPanel/Settings/NavigationHistory
|
||||
tags: $:/tags/ControlPanel/Settings
|
||||
caption: {{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/
|
||||
<$link to="$:/config/Navigation/UpdateHistory"><<lingo Hint>></$link>
|
||||
|
||||
<$radio tiddler="$:/config/Navigation/UpdateHistory" value="yes"> <<lingo Yes/Description>> </$radio>
|
||||
|
||||
<$radio tiddler="$:/config/Navigation/UpdateHistory" value="no"> <<lingo No/Description>> </$radio>
|
||||
@@ -1,8 +1,8 @@
|
||||
title: $:/core/ui/ControlPanel/Advanced/Settings/ToolbarButtons
|
||||
tags: $:/tags/ControlPanel/Advanced/Settings
|
||||
caption: {{$:/language/ControlPanel/Advanced/Settings/ToolbarButtons/Caption}}
|
||||
title: $:/core/ui/ControlPanel/Settings/ToolbarButtons
|
||||
tags: $:/tags/ControlPanel/Settings
|
||||
caption: {{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Advanced/Settings/ToolbarButtons/
|
||||
\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/
|
||||
<<lingo Hint>>
|
||||
|
||||
<$checkbox tiddler="$:/config/Toolbar/Icons" field="text" checked="yes" unchecked="no" default="yes"> <$link to="$:/config/Toolbar/Icons"><<lingo Icons/Description>></$link> </$checkbox>
|
||||
5
core/ui/ControlPanel/StoryView.tid
Normal file
5
core/ui/ControlPanel/StoryView.tid
Normal file
@@ -0,0 +1,5 @@
|
||||
title: $:/core/ui/ControlPanel/StoryView
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/StoryView/Caption}}
|
||||
|
||||
{{$:/snippets/viewswitcher}}
|
||||
5
core/ui/ControlPanel/Theme.tid
Normal file
5
core/ui/ControlPanel/Theme.tid
Normal file
@@ -0,0 +1,5 @@
|
||||
title: $:/core/ui/ControlPanel/Theme
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/Theme/Caption}}
|
||||
|
||||
{{$:/snippets/themeswitcher}}
|
||||
9
core/ui/ControlPanel/TiddlerFields.tid
Normal file
9
core/ui/ControlPanel/TiddlerFields.tid
Normal file
@@ -0,0 +1,9 @@
|
||||
title: $:/core/ui/ControlPanel/TiddlerFields
|
||||
tags: $:/tags/ControlPanel/Advanced
|
||||
caption: {{$:/language/ControlPanel/TiddlerFields/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/
|
||||
|
||||
<<lingo TiddlerFields/Hint>>
|
||||
|
||||
{{$:/snippets/allfields}}
|
||||
9
core/ui/ControlPanel/Toolbars.tid
Normal file
9
core/ui/ControlPanel/Toolbars.tid
Normal file
@@ -0,0 +1,9 @@
|
||||
title: $:/core/ui/ControlPanel/Toolbars
|
||||
tags: $:/tags/ControlPanel/Appearance
|
||||
caption: {{$:/language/ControlPanel/Toolbars/Caption}}
|
||||
|
||||
{{$:/language/ControlPanel/Toolbars/Hint}}
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]" "$:/core/ui/ControlPanel/Toolbars/ViewToolbar" "$:/state/tabs/controlpanel/toolbars" "tc-vertical">>
|
||||
</div>
|
||||
24
core/ui/ControlPanel/Toolbars/EditToolbar.tid
Normal file
24
core/ui/ControlPanel/Toolbars/EditToolbar.tid
Normal file
@@ -0,0 +1,24 @@
|
||||
title: $:/core/ui/ControlPanel/Toolbars/EditToolbar
|
||||
tags: $:/tags/ControlPanel/Toolbars
|
||||
caption: {{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TiddlerInfo/
|
||||
\define config-title()
|
||||
$:/config/EditToolbarButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
|
||||
{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}
|
||||
|
||||
<$set name="tv-config-toolbar-icons" value="yes">
|
||||
|
||||
<$set name="tv-config-toolbar-text" value="yes">
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i>
|
||||
|
||||
</$list>
|
||||
|
||||
</$set>
|
||||
|
||||
</$set>
|
||||
24
core/ui/ControlPanel/Toolbars/PageControls.tid
Normal file
24
core/ui/ControlPanel/Toolbars/PageControls.tid
Normal file
@@ -0,0 +1,24 @@
|
||||
title: $:/core/ui/ControlPanel/Toolbars/PageControls
|
||||
tags: $:/tags/ControlPanel/Toolbars
|
||||
caption: {{$:/language/ControlPanel/Toolbars/PageControls/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TiddlerInfo/
|
||||
\define config-title()
|
||||
$:/config/PageControlButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
|
||||
{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}
|
||||
|
||||
<$set name="tv-config-toolbar-icons" value="yes">
|
||||
|
||||
<$set name="tv-config-toolbar-text" value="yes">
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i>
|
||||
|
||||
</$list>
|
||||
|
||||
</$set>
|
||||
|
||||
</$set>
|
||||
24
core/ui/ControlPanel/Toolbars/ViewToolbar.tid
Normal file
24
core/ui/ControlPanel/Toolbars/ViewToolbar.tid
Normal file
@@ -0,0 +1,24 @@
|
||||
title: $:/core/ui/ControlPanel/Toolbars/ViewToolbar
|
||||
tags: $:/tags/ControlPanel/Toolbars
|
||||
caption: {{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/TiddlerInfo/
|
||||
\define config-title()
|
||||
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
|
||||
\end
|
||||
|
||||
{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}
|
||||
|
||||
<$set name="tv-config-toolbar-icons" value="yes">
|
||||
|
||||
<$set name="tv-config-toolbar-text" value="yes">
|
||||
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem">
|
||||
|
||||
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>> field="caption"/> <i class="tc-muted">-- <$transclude tiddler=<<listItem>> field="description"/></i>
|
||||
|
||||
</$list>
|
||||
|
||||
</$set>
|
||||
|
||||
</$set>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user