mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-22 19:04:38 +00:00
Compare commits
699 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac716755e8 | ||
|
|
afb250cef3 | ||
|
|
b9ec50ecff | ||
|
|
ee81425968 | ||
|
|
4dbf46e3d7 | ||
|
|
b08a2080ee | ||
|
|
98011b611a | ||
|
|
0d259a5d3f | ||
|
|
bef333e52b | ||
|
|
6e2bfc8c77 | ||
|
|
8d231f4a9f | ||
|
|
f44bf1e458 | ||
|
|
534f2bc12d | ||
|
|
b9bccbf1ae | ||
|
|
3e966d4cf3 | ||
|
|
8dca128725 | ||
|
|
ba0ddb939c | ||
|
|
0b4ed3c72d | ||
|
|
b2cb992538 | ||
|
|
301bc4988d | ||
|
|
543e95a436 | ||
|
|
2dabb6a1fc | ||
|
|
89679c1b6a | ||
|
|
596caafd5f | ||
|
|
279ae2af79 | ||
|
|
13a5e8f31c | ||
|
|
5c6cee62e3 | ||
|
|
660090912b | ||
|
|
66a52c1308 | ||
|
|
a912b9b982 | ||
|
|
32ebb64638 | ||
|
|
fd9bbcd21e | ||
|
|
aacde0d703 | ||
|
|
dd68792282 | ||
|
|
4b60b4aa59 | ||
|
|
2140ae2b51 | ||
|
|
2cd10ad9c0 | ||
|
|
eb8d44e288 | ||
|
|
f3ed9bf7e4 | ||
|
|
6410f31aaa | ||
|
|
42debd489d | ||
|
|
21b6ce71ff | ||
|
|
b7465c5eb1 | ||
|
|
7c9976f1d9 | ||
|
|
22f4f07a16 | ||
|
|
a35425e579 | ||
|
|
515be0c22e | ||
|
|
816363408e | ||
|
|
a3f4221008 | ||
|
|
5101ae4ce6 | ||
|
|
987bfcfd5b | ||
|
|
5effb3fdc3 | ||
|
|
4f8982f44d | ||
|
|
46848b817c | ||
|
|
4f927cb492 | ||
|
|
ae817a441f | ||
|
|
6314d7f8ba | ||
|
|
b34530e86a | ||
|
|
ea5fb19fb2 | ||
|
|
57e71b5506 | ||
|
|
394830ad96 | ||
|
|
8185c29738 | ||
|
|
390b7553f6 | ||
|
|
05cb81a644 | ||
|
|
b460bac579 | ||
|
|
b9a2150f4e | ||
|
|
33953f2634 | ||
|
|
0071796546 | ||
|
|
93cc9af145 | ||
|
|
d0e6b1ddff | ||
|
|
ea943b551a | ||
|
|
6dc443f3ef | ||
|
|
bf67ea02ac | ||
|
|
7fa3803de8 | ||
|
|
47dc16a179 | ||
|
|
3e8d1b3955 | ||
|
|
8c7a6c5030 | ||
|
|
758ba5edc2 | ||
|
|
055a38ea4c | ||
|
|
2186a393a7 | ||
|
|
4eb2e3d3b4 | ||
|
|
0ea1dad2c8 | ||
|
|
c18e9d170b | ||
|
|
feefdefc6b | ||
|
|
e56f204633 | ||
|
|
8268087b48 | ||
|
|
ff103665cf | ||
|
|
843871e195 | ||
|
|
32c6d01943 | ||
|
|
958621f0c0 | ||
|
|
b31237c86d | ||
|
|
bd6472c1d1 | ||
|
|
b97336f171 | ||
|
|
5b38f2a17c | ||
|
|
66f4faaef4 | ||
|
|
171e6fcc92 | ||
|
|
9c27d22ea6 | ||
|
|
ec598d5cf4 | ||
|
|
542372c722 | ||
|
|
e00d417a31 | ||
|
|
ef729487c3 | ||
|
|
077e5378ef | ||
|
|
ffa7988fd0 | ||
|
|
cf57777556 | ||
|
|
fc315d1df7 | ||
|
|
9d2b782ae9 | ||
|
|
508eda72b5 | ||
|
|
0b2f1fb41f | ||
|
|
ababfa772e | ||
|
|
6ed53d6b93 | ||
|
|
7daddfc5ea | ||
|
|
17696e4505 | ||
|
|
a60ea1d89b | ||
|
|
00f35fe41a | ||
|
|
743c325b0d | ||
|
|
a7b1b3ec10 | ||
|
|
05d5f2d4fd | ||
|
|
1e88f2a22f | ||
|
|
b1ef8ba0dd | ||
|
|
17c1213635 | ||
|
|
9ae3b5588c | ||
|
|
586cdaae28 | ||
|
|
93a29b0999 | ||
|
|
b46ce419a7 | ||
|
|
f2a7f00870 | ||
|
|
2f8837a445 | ||
|
|
d1a8c683a2 | ||
|
|
2c367c5476 | ||
|
|
c200d10274 | ||
|
|
77db136d4f | ||
|
|
24435a46be | ||
|
|
421ac16389 | ||
|
|
22b7400de8 | ||
|
|
a4a9daa40b | ||
|
|
cf11741df9 | ||
|
|
d4d69d7dd3 | ||
|
|
055f6bdfa5 | ||
|
|
7ea0109961 | ||
|
|
1f11fd5128 | ||
|
|
f2a328950e | ||
|
|
c701e96427 | ||
|
|
faf9b30e9c | ||
|
|
1447c955a5 | ||
|
|
fe0e726c79 | ||
|
|
d1e75a3ad4 | ||
|
|
8e9cd447c1 | ||
|
|
afd30aec07 | ||
|
|
9cca8772a7 | ||
|
|
ae001a19e5 | ||
|
|
55ee327885 | ||
|
|
3165eb1429 | ||
|
|
0444420346 | ||
|
|
253859cc7c | ||
|
|
70e454fa6d | ||
|
|
374682a306 | ||
|
|
550ad4a1a9 | ||
|
|
0e75a6f41c | ||
|
|
c4da71e2fd | ||
|
|
6248c29a14 | ||
|
|
fc84ede773 | ||
|
|
b69dff861d | ||
|
|
d1a4855bfc | ||
|
|
e4cc5dca77 | ||
|
|
a64575f07f | ||
|
|
c33a17a475 | ||
|
|
c98990d3d6 | ||
|
|
3431b84625 | ||
|
|
07d0609083 | ||
|
|
2710049865 | ||
|
|
0f5cebc6b0 | ||
|
|
9097697c52 | ||
|
|
b430f46d78 | ||
|
|
657c266522 | ||
|
|
ab9bdb208e | ||
|
|
e80a08f43b | ||
|
|
e46d3d74be | ||
|
|
1141911a70 | ||
|
|
1808b1597e | ||
|
|
64e1a76987 | ||
|
|
d3954af478 | ||
|
|
8ab73894e9 | ||
|
|
49a9a2c44c | ||
|
|
bd175504f8 | ||
|
|
dcb9e161de | ||
|
|
f99a4e7664 | ||
|
|
74deae3c38 | ||
|
|
3e47f5c454 | ||
|
|
8ffe517736 | ||
|
|
6070c4abee | ||
|
|
d6ae9ea686 | ||
|
|
42499ea6ff | ||
|
|
320664a0c7 | ||
|
|
e369bc1eb2 | ||
|
|
27e6c7bb8d | ||
|
|
f73891c083 | ||
|
|
385533e528 | ||
|
|
7a326f022b | ||
|
|
27454dabb1 | ||
|
|
f89da8522f | ||
|
|
e884192baf | ||
|
|
bc0a25bc6c | ||
|
|
af34b1af05 | ||
|
|
999e0c3ba4 | ||
|
|
b30d43215c | ||
|
|
eb2b877b9b | ||
|
|
3b0e6102ec | ||
|
|
5713e48541 | ||
|
|
b001c7b558 | ||
|
|
1e02df61d0 | ||
|
|
65d81921f9 | ||
|
|
6fcca43fd2 | ||
|
|
8d46c18fc7 | ||
|
|
489bc7a50b | ||
|
|
13f02992f5 | ||
|
|
21b738936f | ||
|
|
61b8180562 | ||
|
|
e4525a95c5 | ||
|
|
40c6362fbe | ||
|
|
41696e725d | ||
|
|
b13d87fdf2 | ||
|
|
fdc635007b | ||
|
|
a2493f80a9 | ||
|
|
6a497eff6c | ||
|
|
4dd2b38faa | ||
|
|
23981bc2fd | ||
|
|
d7c0bda15d | ||
|
|
05c3de3245 | ||
|
|
950a86c7b7 | ||
|
|
0bd2ec50e1 | ||
|
|
682cfebe73 | ||
|
|
122a6f043d | ||
|
|
83011ddcff | ||
|
|
0da1f3f554 | ||
|
|
60e6b584bf | ||
|
|
ad9aa58528 | ||
|
|
a5591dc7a5 | ||
|
|
a507d58211 | ||
|
|
ccc2f6d153 | ||
|
|
73a188d411 | ||
|
|
70e419824f | ||
|
|
2d2924d918 | ||
|
|
d004c9f951 | ||
|
|
bba4794c0a | ||
|
|
7eeb286551 | ||
|
|
1901702557 | ||
|
|
a80b20e8df | ||
|
|
cf59e7a71b | ||
|
|
ee6b6a0f0c | ||
|
|
3df341621d | ||
|
|
3746b1b9e8 | ||
|
|
ead6eb00d4 | ||
|
|
b2b8006b58 | ||
|
|
e7e16137b2 | ||
|
|
9e9b9a3bf1 | ||
|
|
396efedc3f | ||
|
|
1e9e1a1fdc | ||
|
|
50cf85ae86 | ||
|
|
4931462981 | ||
|
|
6c62954116 | ||
|
|
28f78730ba | ||
|
|
13fa3fb849 | ||
|
|
e1b57bf9e5 | ||
|
|
0b8498bc6c | ||
|
|
d1809f352c | ||
|
|
6e0c7d9022 | ||
|
|
42d130d49d | ||
|
|
25442e349e | ||
|
|
e1a825f6b9 | ||
|
|
7d842bedd7 | ||
|
|
66808f11d7 | ||
|
|
01d9af8107 | ||
|
|
14789e1d21 | ||
|
|
e900b388b5 | ||
|
|
bb0f960ccc | ||
|
|
74f423af2a | ||
|
|
4ba53564e2 | ||
|
|
68165af081 | ||
|
|
e386e26b2d | ||
|
|
95d7a826f0 | ||
|
|
17c38b1ec5 | ||
|
|
c1977552a2 | ||
|
|
8e106966d3 | ||
|
|
2d07e3d661 | ||
|
|
18d45a302d | ||
|
|
435267080f | ||
|
|
ddac13317e | ||
|
|
4991c4d6dc | ||
|
|
c9ab873ba3 | ||
|
|
1534fed4f7 | ||
|
|
1924eda8a9 | ||
|
|
1b87d9134b | ||
|
|
691e5719a4 | ||
|
|
dc23963525 | ||
|
|
30f2c06c9e | ||
|
|
b166632bbb | ||
|
|
8b53839e4e | ||
|
|
956cc47cc2 | ||
|
|
fd84370d7a | ||
|
|
2305385c08 | ||
|
|
4b61cae262 | ||
|
|
cf36f6d090 | ||
|
|
921e184d4f | ||
|
|
81ff046555 | ||
|
|
5f3e569ad7 | ||
|
|
72160982ed | ||
|
|
3331f1d85f | ||
|
|
f0ad83e4e1 | ||
|
|
a548321a8e | ||
|
|
09afa8297a | ||
|
|
629c31eb51 | ||
|
|
120b1737a6 | ||
|
|
8dcd080cdd | ||
|
|
9cf1f8f96b | ||
|
|
d7d560897d | ||
|
|
0b68428bc5 | ||
|
|
950a90e235 | ||
|
|
f0fa33985b | ||
|
|
b66db0dca9 | ||
|
|
e7c418089d | ||
|
|
0c4fe6b602 | ||
|
|
2585f8932c | ||
|
|
8643278a45 | ||
|
|
ca6ab6388a | ||
|
|
aae56f20af | ||
|
|
f20a09532a | ||
|
|
e18825e897 | ||
|
|
96f5098f46 | ||
|
|
cfea481ce8 | ||
|
|
1191d60d61 | ||
|
|
d6b1525727 | ||
|
|
d6918d737f | ||
|
|
adbed21363 | ||
|
|
bb10e2b029 | ||
|
|
2017ae5ac4 | ||
|
|
568515fef7 | ||
|
|
68930f333a | ||
|
|
6c32ee578e | ||
|
|
412451170b | ||
|
|
9b600c23a2 | ||
|
|
dceb68818a | ||
|
|
a72581ba26 | ||
|
|
7deea0cbf3 | ||
|
|
6721a5eb1b | ||
|
|
b1bb52b67a | ||
|
|
9cfbc3b001 | ||
|
|
718ce3e4aa | ||
|
|
f2cd743c17 | ||
|
|
687d6350d4 | ||
|
|
a11264ebb0 | ||
|
|
bac5bc02e2 | ||
|
|
7ed5c3ccfc | ||
|
|
726ccdee49 | ||
|
|
a3d51ef7c3 | ||
|
|
c2d473fa29 | ||
|
|
42e72a7adc | ||
|
|
d340277cb2 | ||
|
|
32fd03d2f5 | ||
|
|
e4bd0c8633 | ||
|
|
6a01ec5770 | ||
|
|
a8a0d0d09e | ||
|
|
8746e1ede0 | ||
|
|
5987bad821 | ||
|
|
195cc99679 | ||
|
|
4049affb31 | ||
|
|
0ee06bb144 | ||
|
|
8cd0c2afcd | ||
|
|
48d9cad7c2 | ||
|
|
3dd4f943ce | ||
|
|
9a7bda28e9 | ||
|
|
a5d54a0ada | ||
|
|
4a05bd10e9 | ||
|
|
e9261a1b50 | ||
|
|
8b771555a5 | ||
|
|
2db6cbed2d | ||
|
|
3300ed9602 | ||
|
|
4cd8466adb | ||
|
|
a7a205a754 | ||
|
|
8c6d1c75c7 | ||
|
|
1f610c22f8 | ||
|
|
050b643948 | ||
|
|
040ed56de5 | ||
|
|
9a74c31e13 | ||
|
|
1e13eacd25 | ||
|
|
99f24eefa4 | ||
|
|
23a8c0115e | ||
|
|
ba971a2d2b | ||
|
|
7ec42f93ec | ||
|
|
d536030c5d | ||
|
|
b40da093af | ||
|
|
e6d204db0f | ||
|
|
08f6e7f624 | ||
|
|
618bc166ed | ||
|
|
01cd5302f3 | ||
|
|
bc87486ee1 | ||
|
|
3ec87a5c9c | ||
|
|
5ccbe961f9 | ||
|
|
05215f1bd3 | ||
|
|
35afbe9edf | ||
|
|
225b6ac950 | ||
|
|
f3e4d156ee | ||
|
|
95f2f1a8fa | ||
|
|
59db869deb | ||
|
|
6dbe0e310d | ||
|
|
be7cc50873 | ||
|
|
6179259958 | ||
|
|
e87aea6e1f | ||
|
|
bdc5a38a84 | ||
|
|
1afbd4c1f4 | ||
|
|
e9bdf6f542 | ||
|
|
b81432aee2 | ||
|
|
b845751d3c | ||
|
|
baceb21fbb | ||
|
|
89163e0e85 | ||
|
|
88ea60cc7e | ||
|
|
15f05b076c | ||
|
|
aac2a63e05 | ||
|
|
8d9f1e7477 | ||
|
|
8a3991a619 | ||
|
|
122e16d39c | ||
|
|
ad62d9a083 | ||
|
|
e504530005 | ||
|
|
910d59c166 | ||
|
|
e423c21912 | ||
|
|
211406b0c2 | ||
|
|
5e175ec7c1 | ||
|
|
16fe9fd5ce | ||
|
|
f9c4f6898e | ||
|
|
77c9918338 | ||
|
|
0d406966b3 | ||
|
|
a848c105a8 | ||
|
|
9e5eaed4a8 | ||
|
|
998361de59 | ||
|
|
1591b43066 | ||
|
|
e5676d058a | ||
|
|
ade1c40911 | ||
|
|
495d5f258f | ||
|
|
adfb31a572 | ||
|
|
9bd3fb7238 | ||
|
|
5cc68106ec | ||
|
|
6842a354ea | ||
|
|
172c7ef7dd | ||
|
|
6006ed0ecf | ||
|
|
a8ab08e8fa | ||
|
|
8fc404bbca | ||
|
|
07c1dcb685 | ||
|
|
82c0152e04 | ||
|
|
53953399c3 | ||
|
|
af7bbc0d06 | ||
|
|
34983dd874 | ||
|
|
2d86d8e47d | ||
|
|
35b99dccee | ||
|
|
42bd29fe0b | ||
|
|
f4005871b4 | ||
|
|
486827014f | ||
|
|
5a20ac98fa | ||
|
|
17f2e5e7e6 | ||
|
|
531f019669 | ||
|
|
d624066e73 | ||
|
|
33603e1bd2 | ||
|
|
d197af7995 | ||
|
|
7067ba0326 | ||
|
|
28b6302a83 | ||
|
|
76a3a44d4c | ||
|
|
d5278866fd | ||
|
|
6a75c4623a | ||
|
|
e87dadd61d | ||
|
|
557d1e9207 | ||
|
|
9e167dc468 | ||
|
|
f16f66cc5b | ||
|
|
a58e800f24 | ||
|
|
b95f78196a | ||
|
|
c44a349f1e | ||
|
|
948756cdde | ||
|
|
77ff5ce86b | ||
|
|
6a75732c6c | ||
|
|
88cf991ec5 | ||
|
|
df719e3295 | ||
|
|
f1ca5936e3 | ||
|
|
e6daa6c4f0 | ||
|
|
b768dc332b | ||
|
|
3bbbda0819 | ||
|
|
0fdfbc482c | ||
|
|
80631b35ea | ||
|
|
b43d4a33d6 | ||
|
|
9c7936413a | ||
|
|
99499c0403 | ||
|
|
5822954eb7 | ||
|
|
ddb8daa15a | ||
|
|
048b50924f | ||
|
|
3657bbe920 | ||
|
|
be06cb1019 | ||
|
|
4c7916b0e1 | ||
|
|
9a89fd1753 | ||
|
|
280909bb68 | ||
|
|
fd649fc33a | ||
|
|
f6c8a334e5 | ||
|
|
903f7db0b2 | ||
|
|
795a929187 | ||
|
|
31824f043e | ||
|
|
575c11ee95 | ||
|
|
8ba3e8973e | ||
|
|
3b2882cb48 | ||
|
|
391768ae3f | ||
|
|
978cc2e173 | ||
|
|
b0314a7e9d | ||
|
|
df3d346792 | ||
|
|
2ff7e0c6c6 | ||
|
|
3d61dd1aa9 | ||
|
|
b68276e219 | ||
|
|
d03f4585f6 | ||
|
|
f920e9e243 | ||
|
|
dbf945dbcb | ||
|
|
39dfcc43d3 | ||
|
|
8c2eba03a3 | ||
|
|
ea07b558a3 | ||
|
|
ec829180f4 | ||
|
|
b6aa5bf78a | ||
|
|
0dd3ad5e38 | ||
|
|
a1ca53fa9b | ||
|
|
2f42c9fb8d | ||
|
|
ed85fdddea | ||
|
|
39d888b688 | ||
|
|
90e43d5f5a | ||
|
|
a7d2fd4175 | ||
|
|
203cb17271 | ||
|
|
d19e2fa217 | ||
|
|
ea4b282ed8 | ||
|
|
71357a8e39 | ||
|
|
548c99a984 | ||
|
|
5e5330b315 | ||
|
|
a8b9d2455c | ||
|
|
ea6e60e669 | ||
|
|
95897103ef | ||
|
|
7d6769f6fd | ||
|
|
e319e65574 | ||
|
|
388464190d | ||
|
|
4f3cb8b9ae | ||
|
|
c296f14210 | ||
|
|
5adcf928e6 | ||
|
|
3f5e46011f | ||
|
|
7acbad43fe | ||
|
|
809a59920a | ||
|
|
785e1c7789 | ||
|
|
dcbe2d657e | ||
|
|
cc85368fd4 | ||
|
|
652ca2a807 | ||
|
|
24e9b7cbfa | ||
|
|
42efd4116d | ||
|
|
75fd33070e | ||
|
|
31781d7dda | ||
|
|
31c9998c62 | ||
|
|
544ee4668e | ||
|
|
bb51e399ff | ||
|
|
a2ac4ddd6c | ||
|
|
ef6a6fea87 | ||
|
|
8707d51b7d | ||
|
|
43250e028a | ||
|
|
a8854662e4 | ||
|
|
b8f090e0c6 | ||
|
|
6672af7c62 | ||
|
|
051bafaf41 | ||
|
|
399a80643a | ||
|
|
afda1c5344 | ||
|
|
6d87b505b1 | ||
|
|
b83d311951 | ||
|
|
21df296c2f | ||
|
|
43c40d93d8 | ||
|
|
e6ede67282 | ||
|
|
cb8caf6a01 | ||
|
|
597a5fb2f2 | ||
|
|
79a3beeaa6 | ||
|
|
4f1d6f71fc | ||
|
|
9aafed511b | ||
|
|
117d10275f | ||
|
|
e9c6610d74 | ||
|
|
7290be9e47 | ||
|
|
bbcca4c784 | ||
|
|
bae00fcbf6 | ||
|
|
5d947ed582 | ||
|
|
fa9fc38be8 | ||
|
|
42050e1b03 | ||
|
|
c5650708a7 | ||
|
|
bcee212195 | ||
|
|
439154c0ea | ||
|
|
e415edb440 | ||
|
|
1366ef3e1c | ||
|
|
dfd4c480d2 | ||
|
|
f952b8f1df | ||
|
|
421d75a207 | ||
|
|
4f34f24111 | ||
|
|
7abe9aa53d | ||
|
|
9f087e7667 | ||
|
|
7481b6c49c | ||
|
|
1905093411 | ||
|
|
5f3de6ec17 | ||
|
|
cc2688bf44 | ||
|
|
25e447f69e | ||
|
|
70cbb5efc5 | ||
|
|
7ca37739aa | ||
|
|
d33b525067 | ||
|
|
304848f258 | ||
|
|
39c786b042 | ||
|
|
8e47a20069 | ||
|
|
1d344dba69 | ||
|
|
e4d9a67756 | ||
|
|
e450777b94 | ||
|
|
626163df69 | ||
|
|
ff11f4c43e | ||
|
|
b9129d77e9 | ||
|
|
e1138d94c9 | ||
|
|
a83bd4ec61 | ||
|
|
5a2d262c80 | ||
|
|
e41285ae56 | ||
|
|
1b61ad13d2 | ||
|
|
25bcc13fa8 | ||
|
|
b4e4ca714b | ||
|
|
efda54465e | ||
|
|
cbc20a40de | ||
|
|
333100aa33 | ||
|
|
e56e2a2450 | ||
|
|
3cd18d7410 | ||
|
|
edaa86aa0e | ||
|
|
0efb8e9a09 | ||
|
|
2c8e2df599 | ||
|
|
e569a71f03 | ||
|
|
16ffef01ff | ||
|
|
db37f6030f | ||
|
|
7f0fb08203 | ||
|
|
f715286035 | ||
|
|
c6fbaadfeb | ||
|
|
6fe1024fe8 | ||
|
|
2871c5fcb2 | ||
|
|
0f0ecd3d9e | ||
|
|
09cd827a51 | ||
|
|
3c5dc7061a | ||
|
|
fb86f3ec5a | ||
|
|
1ceb15db77 | ||
|
|
a9829d50e0 | ||
|
|
059c32aa24 | ||
|
|
7fc102eea7 | ||
|
|
4d2e4fc0bb | ||
|
|
93c9d8f0bf | ||
|
|
689a334d36 | ||
|
|
e3a711e2de | ||
|
|
07e9d91aed | ||
|
|
49b1f77e5c | ||
|
|
0f334d2321 | ||
|
|
a465f19ca0 | ||
|
|
3c6481e3d7 | ||
|
|
3ca2a113e3 | ||
|
|
9c0611582f | ||
|
|
c66d9339ab | ||
|
|
8d8a7c9e03 | ||
|
|
94a8e3802e | ||
|
|
412557f9a8 | ||
|
|
0513812863 | ||
|
|
3b9677c052 | ||
|
|
676a7b6805 | ||
|
|
4242c471a4 | ||
|
|
c142350f86 | ||
|
|
1adfe20508 | ||
|
|
1a8376eeaf | ||
|
|
9fad60beb3 | ||
|
|
5706d8afe1 | ||
|
|
5f9f0764bd | ||
|
|
176a372314 | ||
|
|
313f731f77 | ||
|
|
8cb7090c40 | ||
|
|
8e9c698721 | ||
|
|
4e1539e1f3 | ||
|
|
941bab2893 | ||
|
|
44beefb317 | ||
|
|
21719fcfbe | ||
|
|
d16dfdb12f | ||
|
|
aed34ebaba | ||
|
|
85b6147a2a | ||
|
|
d7cd94dbd6 | ||
|
|
a473c85a48 | ||
|
|
230066eeae | ||
|
|
56838637ac | ||
|
|
90ebffed3b | ||
|
|
4482373122 | ||
|
|
cb42ccf409 | ||
|
|
bef7e0e93c | ||
|
|
f64ed6e48c | ||
|
|
63ad0793cf | ||
|
|
8f50706e95 | ||
|
|
cd3f741bb6 | ||
|
|
ee17bf765c | ||
|
|
c87235cd40 | ||
|
|
bd59cd760d | ||
|
|
1915bd3a2f | ||
|
|
1c0f0591fe | ||
|
|
031ada4c69 | ||
|
|
07d0679476 | ||
|
|
5f50f9b29d | ||
|
|
e00534635e | ||
|
|
438db4d868 | ||
|
|
5cee932833 |
84
boot/boot.js
84
boot/boot.js
@@ -362,21 +362,20 @@ Returns true if the version string A is greater than the version string B. Retur
|
||||
*/
|
||||
$tw.utils.checkVersions = function(versionStringA,versionStringB) {
|
||||
var defaultVersion = {
|
||||
major: 0,
|
||||
minor: 0,
|
||||
patch: 0
|
||||
},
|
||||
versionA = $tw.utils.parseVersion(versionStringA) || defaultVersion,
|
||||
versionB = $tw.utils.parseVersion(versionStringB) || defaultVersion,
|
||||
diff = [
|
||||
versionA.major - versionB.major,
|
||||
versionA.minor - versionB.minor,
|
||||
versionA.patch - versionB.patch
|
||||
];
|
||||
major: 0,
|
||||
minor: 0,
|
||||
patch: 0
|
||||
},
|
||||
versionA = $tw.utils.parseVersion(versionStringA) || defaultVersion,
|
||||
versionB = $tw.utils.parseVersion(versionStringB) || defaultVersion,
|
||||
diff = [
|
||||
versionA.major - versionB.major,
|
||||
versionA.minor - versionB.minor,
|
||||
versionA.patch - versionB.patch
|
||||
];
|
||||
return (diff[0] > 0) ||
|
||||
(diff[0] === 0 && diff[1] > 0) ||
|
||||
(diff[0] === 0 && diff[1] === 0 && diff[2] > 0) ||
|
||||
(diff[0] === 0 && diff[1] === 0 && diff[2] === 0);
|
||||
(diff[0] === 0 && diff[1] === 0 && diff[2] >= 0);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -398,12 +397,20 @@ $tw.utils.registerFileType = function(type,encoding,extension,options) {
|
||||
$tw.config.contentTypeInfo[type] = {encoding: encoding, extension: extension, flags: options.flags || [], deserializerType: options.deserializerType || type};
|
||||
};
|
||||
|
||||
/*
|
||||
Given an extension, always access the $tw.config.fileExtensionInfo
|
||||
using a lowercase extension only.
|
||||
*/
|
||||
$tw.utils.getFileExtensionInfo = function(ext) {
|
||||
return ext ? $tw.config.fileExtensionInfo[ext.toLowerCase()] : null;
|
||||
}
|
||||
|
||||
/*
|
||||
Given an extension, get the correct encoding for that file.
|
||||
defaults to utf8
|
||||
*/
|
||||
$tw.utils.getTypeEncoding = function(ext) {
|
||||
var extensionInfo = $tw.config.fileExtensionInfo[ext],
|
||||
var extensionInfo = $tw.utils.getFileExtensionInfo(ext),
|
||||
type = extensionInfo ? extensionInfo.type : null,
|
||||
typeInfo = type ? $tw.config.contentTypeInfo[type] : null;
|
||||
return typeInfo ? typeInfo.encoding : "utf8";
|
||||
@@ -483,20 +490,28 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
||||
children = [dm("h1",{text: options.serviceName})];
|
||||
if(!options.noUserName) {
|
||||
children.push(dm("input",{
|
||||
attributes: {type: "text", name: "username", placeholder: "Username"}
|
||||
attributes: {type: "text", name: "username", placeholder: $tw.language.getString("Encryption/Username")}
|
||||
}));
|
||||
}
|
||||
children.push(dm("input",{
|
||||
attributes: {type: "password", name: "password", placeholder: "Password"}
|
||||
attributes: {
|
||||
type: "password",
|
||||
name: "password",
|
||||
placeholder: ( $tw.language == undefined ? "Password" : $tw.language.getString("Encryption/Password") )
|
||||
}
|
||||
}));
|
||||
if(options.repeatPassword) {
|
||||
children.push(dm("input",{
|
||||
attributes: {type: "password", name: "password2", placeholder: "Repeat password"}
|
||||
attributes: {
|
||||
type: "password",
|
||||
name: "password2",
|
||||
placeholder: $tw.language.getString("Encryption/RepeatPassword")
|
||||
}
|
||||
}));
|
||||
}
|
||||
if(options.canCancel) {
|
||||
children.push(dm("button",{
|
||||
text: "Cancel",
|
||||
text: $tw.language.getString("Encryption/Cancel"),
|
||||
eventListeners: [{
|
||||
name: "click",
|
||||
handlerFunction: function(event) {
|
||||
@@ -530,7 +545,7 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
||||
});
|
||||
// Check that the passwords match
|
||||
if(options.repeatPassword && data.password !== data.password2) {
|
||||
alert("Passwords do not match");
|
||||
alert($tw.language.getString("Encryption/PasswordNoMatch"));
|
||||
} else {
|
||||
// Call the callback
|
||||
if(options.callback(data)) {
|
||||
@@ -544,7 +559,7 @@ $tw.utils.PasswordPrompt.prototype.createPrompt = function(options) {
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
event.preventDefault();
|
||||
return false;
|
||||
},true);
|
||||
@@ -786,7 +801,7 @@ $tw.Tiddler = function(/* [fields,] fields */) {
|
||||
value = src[t];
|
||||
}
|
||||
// Freeze the field to keep it immutable
|
||||
if(typeof value === "object") {
|
||||
if(value != null && typeof value === "object") {
|
||||
Object.freeze(value);
|
||||
}
|
||||
this.fields[t] = value;
|
||||
@@ -854,6 +869,8 @@ $tw.Wiki = function(options) {
|
||||
if(tiddler) {
|
||||
var title = tiddler.fields.title;
|
||||
if(title) {
|
||||
// Uncomment the following line for detailed logs of all tiddler writes
|
||||
// console.log("Adding",title,tiddler)
|
||||
tiddlers[title] = tiddler;
|
||||
this.clearCache(title);
|
||||
this.clearGlobalCache();
|
||||
@@ -1138,9 +1155,9 @@ $tw.Wiki.prototype.deserializeTiddlers = function(type,text,srcFields) {
|
||||
srcFields = srcFields || Object.create(null);
|
||||
var deserializer = $tw.Wiki.tiddlerDeserializerModules[type],
|
||||
fields = Object.create(null);
|
||||
if(!deserializer && $tw.config.fileExtensionInfo[type]) {
|
||||
if(!deserializer && $tw.utils.getFileExtensionInfo(type)) {
|
||||
// If we didn't find the serializer, try converting it from an extension to a content type
|
||||
type = $tw.config.fileExtensionInfo[type].type;
|
||||
type = $tw.utils.getFileExtensionInfo(type).type;
|
||||
deserializer = $tw.Wiki.tiddlerDeserializerModules[type];
|
||||
}
|
||||
if(!deserializer && $tw.config.contentTypeInfo[type]) {
|
||||
@@ -1387,7 +1404,7 @@ Load the tiddlers contained in a particular file (and optionally extract fields
|
||||
*/
|
||||
$tw.loadTiddlersFromFile = function(filepath,fields) {
|
||||
var ext = path.extname(filepath),
|
||||
extensionInfo = $tw.config.fileExtensionInfo[ext],
|
||||
extensionInfo = $tw.utils.getFileExtensionInfo(ext),
|
||||
type = extensionInfo ? extensionInfo.type : null,
|
||||
typeInfo = type ? $tw.config.contentTypeInfo[type] : null,
|
||||
data = fs.readFileSync(filepath,typeInfo ? typeInfo.encoding : "utf8"),
|
||||
@@ -1537,7 +1554,11 @@ $tw.getLibraryItemSearchPaths = function(libraryPath,envVar) {
|
||||
var pluginPaths = [path.resolve($tw.boot.corePath,libraryPath)],
|
||||
env = process.env[envVar];
|
||||
if(env) {
|
||||
Array.prototype.push.apply(pluginPaths,env.split(path.delimiter));
|
||||
env.split(path.delimiter).map(function(item) {
|
||||
if(item) {
|
||||
pluginPaths.push(item)
|
||||
}
|
||||
});
|
||||
}
|
||||
return pluginPaths;
|
||||
};
|
||||
@@ -1741,7 +1762,7 @@ $tw.boot.startup = function(options) {
|
||||
// Read package info
|
||||
$tw.packageInfo = require("../package.json");
|
||||
// Check node version number
|
||||
if($tw.utils.checkVersions($tw.packageInfo.engines.node.substr(2),process.version.substr(1))) {
|
||||
if(!$tw.utils.checkVersions(process.version.substr(1),$tw.packageInfo.engines.node.substr(2))) {
|
||||
$tw.utils.error("TiddlyWiki5 requires node.js version " + $tw.packageInfo.engines.node);
|
||||
}
|
||||
}
|
||||
@@ -1758,6 +1779,7 @@ $tw.boot.startup = function(options) {
|
||||
$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("application/zip","base64",".zip");
|
||||
$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"]});
|
||||
@@ -1911,9 +1933,9 @@ $tw.boot.isStartupTaskEligible = function(taskModule) {
|
||||
Global Hooks mechanism which allows plugins to modify default functionality
|
||||
*/
|
||||
$tw.hooks = $tw.hooks || { names: {}};
|
||||
|
||||
|
||||
/*
|
||||
Add hooks to the hashmap
|
||||
Add hooks to the hashmap
|
||||
*/
|
||||
$tw.hooks.addHook = function(hookName,definition) {
|
||||
if($tw.utils.hop($tw.hooks.names,hookName)) {
|
||||
@@ -1923,9 +1945,9 @@ $tw.hooks.addHook = function(hookName,definition) {
|
||||
$tw.hooks.names[hookName] = [definition];
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
Invoke the hook by key
|
||||
Invoke the hook by key
|
||||
*/
|
||||
$tw.hooks.invokeHook = function(hookName, value) {
|
||||
if($tw.utils.hop($tw.hooks.names,hookName)) {
|
||||
@@ -1966,4 +1988,4 @@ if(typeof(exports) !== "undefined") {
|
||||
exports.TiddlyWiki = _boot;
|
||||
} else {
|
||||
_boot(window.$tw);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,15 @@ $tw = $tw || Object.create(null);
|
||||
$tw.boot = $tw.boot || Object.create(null);
|
||||
|
||||
// Detect platforms
|
||||
$tw.browser = typeof(window) !== "undefined" ? {} : null;
|
||||
$tw.node = typeof(process) === "object" ? {} : null;
|
||||
$tw.nodeWebKit = $tw.node && global.window && global.window.nwDispatcher ? {} : null;
|
||||
if(!("browser" in $tw)) {
|
||||
$tw.browser = typeof(window) !== "undefined" ? {} : null;
|
||||
}
|
||||
if(!("node" in $tw)) {
|
||||
$tw.node = typeof(process) === "object" ? {} : null;
|
||||
}
|
||||
if(!("nodeWebKit" in $tw)) {
|
||||
$tw.nodeWebKit = $tw.node && global.window && global.window.nwDispatcher ? {} : null;
|
||||
}
|
||||
|
||||
// Set default boot tasks
|
||||
$tw.boot.tasks = {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<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>
|
||||
<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>Remarks
|
||||
----—</p><ul><li><ul><li>When not owning the copyright in the entire work of authorship**</li></ul></li></ul><p>In this case, please clearly state so, since otherwise we assume that you are the legal copyright holder of the contributed work! Please provide links and additional information that clarify under which license the rest of the code is distributed.
|
||||
</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>
|
||||
@@ -1,8 +1,4 @@
|
||||
title: $:/core/icon
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z M85.1274062,95.4080042 C81.5494069,95.3047989 79.9756384,95.3136745 78.1534289,92.2560668 L76.733228,92.2975844 C75.0801573,92.2226776 75.7690718,92.256631 74.6662332,92.2006037 C72.822332,92.1273894 73.1177105,90.3396383 72.7933215,89.3950941 C72.2744094,86.1888106 73.4800004,82.9659571 73.4419681,79.7590415 C73.428503,78.6206623 71.8498363,74.5912119 71.2858469,73.150598 C69.5178104,73.490271 67.7401827,73.5550323 65.9465048,73.6462337 C61.8120677,73.6358996 57.7056703,73.1192806 53.628962,72.4632293 C52.8345141,75.8119659 50.473106,80.4990751 52.4249964,83.9024219 C54.794228,87.4227874 56.45684,88.3980868 59.0339286,88.6103485 C61.6109895,88.8224384 62.1929077,91.7913467 61.5694236,92.8517379 C61.0175661,93.5845847 60.0476425,93.7176093 59.2235739,93.8951553 L57.5752147,93.9742093 C56.2780933,93.9296822 55.1187057,93.5723203 53.9629071,93.0211763 C52.0327307,91.9217335 50.0392154,89.6360411 48.5580719,87.9950695 C48.9028934,88.6503604 49.1085703,89.9296134 48.7958122,90.5249222 C47.9200982,91.7907825 44.1326257,91.7830485 42.3980986,90.996433 C40.4277043,90.1030197 35.6664658,83.8299171 34.9303347,79.1316435 C36.8887135,75.3525836 39.7416856,72.0607931 41.1850909,67.9459622 C38.038852,65.8974525 36.3537697,62.5626501 36.5725198,58.7851619 L36.6514762,58.3478913 C33.5557196,58.9392548 35.1611076,58.7192345 31.8308843,58.9762949 C21.2252017,58.9431831 11.8983553,51.6054609 17.1501626,40.2013394 C17.4916881,39.5260388 17.8165752,38.9120742 18.3955298,39.205288 C18.8602051,39.440565 18.793457,40.3843583 18.5597268,41.4309776 C15.5577203,55.057365 30.2297484,55.161659 39.2489049,52.6401668 C40.1440491,52.3898612 41.9243599,50.7040626 43.1576153,50.1452033 C45.1734825,49.231769 47.3615008,48.8611654 49.5329344,48.5941256 C54.9337165,47.9661653 61.4247946,50.8693254 64.7228943,50.9641212 C68.0210328,51.0589131 72.7127563,50.1582941 75.5928121,50.3479196 C77.6825379,50.4454833 79.734518,50.8303777 81.7507717,51.3786556 C83.0558682,44.8897102 83.1481363,40.1071855 86.2420439,39 C88.0578592,39.2926449 89.4570618,41.8175853 90.4927503,43.1666676 C92.6062592,43.0809984 94.6134653,43.6270518 96.6091885,44.233091 C100.222332,43.7098824 103.254293,41.6394732 106.445091,40.0288813 C103.211767,42.7223157 102.77315,47.1042714 103.142605,51.1564486 C103.280001,53.2591496 102.697713,55.5420684 101.977868,57.6949551 C100.630795,61.2025356 98.0292951,64.8997754 95.009908,64.7101481 C93.868464,64.673306 93.2053722,64.0138 92.3570101,63.3096933 C92.1924386,64.7358711 91.5456263,66.0084523 90.9221089,67.2697748 C89.4822206,70.066388 85.7194927,71.2987762 82.2354164,74.2849828 C78.7515768,77.2712347 83.3502408,87.9363951 84.4652464,89.8796277 C85.5800708,91.8230453 88.6922789,92.5339992 87.484639,94.28798 C87.1151913,94.8672415 86.5502884,95.0744181 85.9465544,95.2991347 L85.1274062,95.4080042 Z M45.0303574,86.5575217 L45.5828655,86.699414 C46.277142,86.4290005 47.6727292,86.8469317 48.4130246,87.0512628 C47.0498362,85.7357167 44.9960929,83.8038623 43.5164417,82.5859671 C43.0307739,81.1115156 43.2380006,79.6278431 43.3424927,78.122648 L43.3634516,77.9981264 C42.7802099,79.2030731 42.040056,80.3743566 41.6422405,81.6426885 C41.176708,83.3537773 43.7112632,85.1999538 44.6940603,86.2580263 L45.0303574,86.5575217 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
<svg width="22pt" height="22pt" viewBox="0 0 128 128"><path d="M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z" fill-rule="evenodd"/></svg>
|
||||
@@ -1,4 +1,4 @@
|
||||
title: $:/core/images/blank
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-blank tc-image-button" viewBox="63 152 64 64" width="22pt" height="22pt"></svg>
|
||||
<svg class="tc-image-blank tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"></svg>
|
||||
@@ -1,7 +1,7 @@
|
||||
title: $:/core/images/close-others-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-close-others-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 127">
|
||||
<svg class="tc-image-close-others-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z"></path>
|
||||
</g>
|
||||
|
||||
@@ -11,4 +11,4 @@ tags: $:/tags/Image
|
||||
<rect x="56" y="16" width="16" height="112" rx="8"></rect>
|
||||
<rect x="32" y="16" width="16" height="112" rx="8"></rect>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z" id="Rectangle-285" transform="translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) "></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -3,4 +3,4 @@ tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-down-arrow tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
|
||||
<path d="M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z" transform="translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) "></path>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -1,4 +1,4 @@
|
||||
title: $:/core/images/download-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-download-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 129 128"><g fill-rule="evenodd"><path class="tc-image-download-button-ring" d="M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z"/><path d="M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z"/></g></svg>
|
||||
<svg class="tc-image-download-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"><g fill-rule="evenodd"><path class="tc-image-download-button-ring" d="M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z"/><path d="M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z"/></g></svg>
|
||||
@@ -6,4 +6,4 @@ tags: $:/tags/Image
|
||||
<path d="M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z" transform="translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) "></path>
|
||||
<path d="M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
8
core/images/github.tid
Normal file
8
core/images/github.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/github
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-github tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328"></path>
|
||||
</g>
|
||||
</svg>
|
||||
8
core/images/help.tid
Normal file
8
core/images/help.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/help
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-help tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -10,4 +10,4 @@ tags: $:/tags/Image
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
8
core/images/left-arrow.tid
Normal file
8
core/images/left-arrow.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
created: 20150315234410875
|
||||
modified: 20150315235324760
|
||||
tags: $:/tags/Image
|
||||
title: $:/core/images/left-arrow
|
||||
|
||||
<svg class="tc-image-left-arrow tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<path transform="rotate(135, 63.8945, 64.1752)" d="m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z"/>
|
||||
</svg>
|
||||
8
core/images/mail.tid
Normal file
8
core/images/mail.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/mail
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-mail tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<rect x="0" y="16" width="128" height="16" rx="8"></rect>
|
||||
<rect x="0" y="56" width="128" height="16" rx="8"></rect>
|
||||
<rect x="0" y="96" width="128" height="16" rx="8"></rect>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -11,4 +11,4 @@ tags: $:/tags/Image
|
||||
<rect x="80" y="96" width="48" height="16" rx="8"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -13,4 +13,4 @@ tags: $:/tags/Image
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -5,4 +5,4 @@ tags: $:/tags/Image
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -1,7 +1,7 @@
|
||||
title: $:/core/images/storyview-classic
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-storyview-classic tc-image-button" width="22pt" height="22pt" viewBox="0 0 129 128">
|
||||
<svg class="tc-image-storyview-classic tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z"></path>
|
||||
</g>
|
||||
|
||||
@@ -6,4 +6,4 @@ tags: $:/tags/Image
|
||||
<path d="M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z"></path>
|
||||
<path d="M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
@@ -1,7 +1,7 @@
|
||||
title: $:/core/images/theme-button
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-theme-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 129">
|
||||
<svg class="tc-image-theme-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<g transform="translate(6.762422, 19.968999)">
|
||||
<path d="M0.824945506,108.186742 C0.664785639,108.187747 0.504640965,108.188251 0.344516735,108.188251 C24.6927592,97.3230528 16.4618388,61.4785938 43.121606,61.4785936 C43.3514982,62.5099075 43.5895175,63.6196137 43.8937798,64.7474092 C25.0518979,61.7172401 26.754298,99.6790423 0.824939051,108.186742 Z M1.34304326,108.181747 C29.613352,107.814217 58.1805158,91.9297101 58.1805151,75.5906019 C51.4386888,75.5906018 47.9457839,73.0599394 45.9513275,69.8149659 C33.880418,64.7217657 23.8678719,103.061726 1.34301955,108.181748 Z"></path>
|
||||
|
||||
8
core/images/tip.tid
Normal file
8
core/images/tip.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/tip
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-tip tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
8
core/images/twitter.tid
Normal file
8
core/images/twitter.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/twitter
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-twitter tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477"></path>
|
||||
</g>
|
||||
</svg>
|
||||
9
core/images/up-arrow.tid
Normal file
9
core/images/up-arrow.tid
Normal file
@@ -0,0 +1,9 @@
|
||||
created: 20150316000544368
|
||||
modified: 20150316000831867
|
||||
tags: $:/tags/Image
|
||||
title: $:/core/images/up-arrow
|
||||
|
||||
<svg class="tc-image-up-arrow tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<path transform="rotate(-135, 63.8945, 64.1752)" d="m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z" />
|
||||
</svg>
|
||||
|
||||
8
core/images/warning.tid
Normal file
8
core/images/warning.tid
Normal file
@@ -0,0 +1,8 @@
|
||||
title: $:/core/images/warning
|
||||
tags: $:/tags/Image
|
||||
|
||||
<svg class="tc-image-warning tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z"></path>
|
||||
</g>
|
||||
</svg>
|
||||
@@ -3,7 +3,7 @@ title: $:/language/Buttons/
|
||||
AdvancedSearch/Caption: advanced search
|
||||
AdvancedSearch/Hint: Advanced search
|
||||
Cancel/Caption: cancel
|
||||
Cancel/Hint: Cancel editing this tiddler
|
||||
Cancel/Hint: Discard changes to this tiddler
|
||||
Clone/Caption: clone
|
||||
Clone/Hint: Clone this tiddler
|
||||
Close/Caption: close
|
||||
@@ -32,6 +32,8 @@ ExportTiddlers/Caption: export tiddlers
|
||||
ExportTiddlers/Hint: Export tiddlers
|
||||
FullScreen/Caption: full-screen
|
||||
FullScreen/Hint: Enter or leave full-screen mode
|
||||
Help/Caption: help
|
||||
Help/Hint: Show help panel
|
||||
Import/Caption: import
|
||||
Import/Hint: Import files
|
||||
Info/Caption: info
|
||||
@@ -56,8 +58,8 @@ Permaview/Caption: permaview
|
||||
Permaview/Hint: Set browser address bar to a direct link to all the tiddlers in this story
|
||||
Refresh/Caption: refresh
|
||||
Refresh/Hint: Perform a full refresh of the wiki
|
||||
Save/Caption: save
|
||||
Save/Hint: Save this tiddler
|
||||
Save/Caption: ok
|
||||
Save/Hint: Confirm changes to this tiddler
|
||||
SaveWiki/Caption: save changes
|
||||
SaveWiki/Hint: Save changes
|
||||
StoryView/Caption: storyview
|
||||
|
||||
@@ -38,6 +38,8 @@ Palette/Editor/Reset/Caption: reset
|
||||
Palette/HideEditor/Caption: hide editor
|
||||
Palette/Prompt: Current palette:
|
||||
Palette/ShowEditor/Caption: show editor
|
||||
Plugins/Add/Hint: Install plugins from the official library
|
||||
Plugins/Add/Caption: Get more plugins
|
||||
Plugins/Caption: Plugins
|
||||
Plugins/Disable/Caption: disable
|
||||
Plugins/Disable/Hint: Disable this plugin when reloading page
|
||||
@@ -45,9 +47,13 @@ Plugins/Disabled/Status: (disabled)
|
||||
Plugins/Empty/Hint: None
|
||||
Plugins/Enable/Caption: enable
|
||||
Plugins/Enable/Hint: Enable this plugin when reloading page
|
||||
Plugins/Language/Prompt: Languages
|
||||
Plugins/Plugin/Prompt: Plugins
|
||||
Plugins/Theme/Prompt: Themes
|
||||
Plugins/Installed/Hint: Currently installed plugins:
|
||||
Plugins/Languages/Caption: Languages
|
||||
Plugins/Languages/Hint: Language pack plugins
|
||||
Plugins/Plugins/Caption: Plugins
|
||||
Plugins/Plugins/Hint: Plugins
|
||||
Plugins/Themes/Caption: Themes
|
||||
Plugins/Themes/Hint: Theme plugins
|
||||
Saving/Caption: Saving
|
||||
Saving/Heading: Saving
|
||||
Saving/TiddlySpot/Advanced/Heading: Advanced Settings
|
||||
@@ -56,7 +62,7 @@ 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//
|
||||
Saving/TiddlySpot/Hint: //The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//
|
||||
Saving/TiddlySpot/Password: Password
|
||||
Saving/TiddlySpot/ServerURL: Server URL
|
||||
Saving/TiddlySpot/UploadDir: Upload Directory
|
||||
@@ -80,6 +86,8 @@ Settings/ToolbarButtons/Caption: Toolbar Buttons
|
||||
Settings/ToolbarButtons/Hint: Default toolbar button appearance:
|
||||
Settings/ToolbarButtons/Icons/Description: Include icon
|
||||
Settings/ToolbarButtons/Text/Description: Include text
|
||||
Settings/DefaultSidebarTab/Caption: Default Sidebar Tab
|
||||
Settings/DefaultSidebarTab/Hint: Specify which sidebar tab is displayed by default
|
||||
StoryView/Caption: Story View
|
||||
StoryView/Prompt: Current view:
|
||||
Theme/Caption: Theme
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/language/Exporters/
|
||||
|
||||
StaticRiver: River of tiddlers as static HTML file
|
||||
JsonFile: JSON tiddlers file
|
||||
CsvFile: CSV tiddlers file
|
||||
TidFile: Single tiddler ".tid" file
|
||||
StaticRiver: Static HTML
|
||||
JsonFile: JSON file
|
||||
CsvFile: CSV file
|
||||
TidFile: ".tid" file
|
||||
|
||||
@@ -11,3 +11,4 @@ SystemTiddlers: System tiddlers
|
||||
ShadowTiddlers: Shadow tiddlers
|
||||
OverriddenShadowTiddlers: Overridden shadow tiddlers
|
||||
SystemTags: System tags
|
||||
TypedTiddlers: Non wiki-text tiddlers
|
||||
@@ -7,8 +7,11 @@ Before you start storing important information in ~TiddlyWiki it is important to
|
||||
|
||||
!! Set up this ~TiddlyWiki
|
||||
|
||||
<div class="tc-control-panel">
|
||||
|
||||
|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
</div>
|
||||
|
||||
See the [[control panel|$:/ControlPanel]] for more options.
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Render tiddlers matching a filter to a specified ContentType
|
||||
Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).
|
||||
|
||||
```
|
||||
--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>]
|
||||
--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] ["noclean"]
|
||||
```
|
||||
|
||||
For example:
|
||||
@@ -15,4 +15,4 @@ For example:
|
||||
|
||||
By default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.
|
||||
|
||||
Any files in the target directory are deleted. The target directory is recursively created if it is missing.
|
||||
Any files in the target directory are deleted unless the "noclean" parameter is specified. The target directory is recursively created if it is missing.
|
||||
|
||||
@@ -9,11 +9,19 @@ 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)
|
||||
DropMessage: Drop here (or use the 'Escape' key to cancel)
|
||||
Encryption/Cancel: 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
|
||||
Encryption/Username: Username
|
||||
Encryption/Password: Password
|
||||
Encryption/RepeatPassword: Repeat password
|
||||
Encryption/PasswordNoMatch: Passwords do not match
|
||||
Encryption/SetPassword: Set password
|
||||
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
|
||||
OfficialPluginLibrary: Official ~TiddlyWiki Plugin Library
|
||||
PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect
|
||||
RecentChanges/DateFormat: DDth MMM YYYY
|
||||
SystemTiddler/Tooltip: This is a system tiddler
|
||||
TagManager/Colour/Heading: Colour
|
||||
|
||||
@@ -23,35 +23,12 @@ var Command = function(params,commander) {
|
||||
};
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
var fs = require("fs"),
|
||||
path = require("path"),
|
||||
self = this;
|
||||
// Enumerate the edition paths
|
||||
var editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar),
|
||||
editions = {};
|
||||
for(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {
|
||||
var editionPath = editionPaths[editionIndex];
|
||||
// Enumerate the folders
|
||||
var entries = fs.readdirSync(editionPath);
|
||||
for(var entryIndex=0; entryIndex<entries.length; entryIndex++) {
|
||||
var entry = entries[entryIndex];
|
||||
// Check if directories have a valid tiddlywiki.info
|
||||
if(!editions[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {
|
||||
var info;
|
||||
try {
|
||||
info = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,"tiddlywiki.info"),"utf8"));
|
||||
} catch(ex) {
|
||||
}
|
||||
if(info) {
|
||||
editions[entry] = info.description || "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var self = this;
|
||||
// Output the list
|
||||
this.commander.streams.output.write("Available editions:\n\n");
|
||||
$tw.utils.each(editions,function(description,name) {
|
||||
self.commander.streams.output.write(" " + name + ": " + description + "\n");
|
||||
var editionInfo = $tw.utils.getEditionInfo();
|
||||
$tw.utils.each(editionInfo,function(info,name) {
|
||||
self.commander.streams.output.write(" " + name + ": " + info.description + "\n");
|
||||
});
|
||||
this.commander.streams.output.write("\n");
|
||||
return null;
|
||||
|
||||
@@ -35,19 +35,31 @@ Command.prototype.execute = function() {
|
||||
wiki = this.commander.wiki,
|
||||
filter = this.params[0],
|
||||
template = this.params[1],
|
||||
pathname = path.resolve(this.commander.outputPath,this.params[2]),
|
||||
outputPath = this.commander.outputPath,
|
||||
pathname = path.resolve(outputPath,this.params[2]),
|
||||
type = this.params[3] || "text/html",
|
||||
extension = this.params[4] || ".html",
|
||||
deleteDirectory = (this.params[5] || "") != "noclean",
|
||||
tiddlers = wiki.filterTiddlers(filter);
|
||||
$tw.utils.deleteDirectory(pathname);
|
||||
$tw.utils.createDirectory(pathname);
|
||||
if(deleteDirectory) {
|
||||
$tw.utils.deleteDirectory(pathname);
|
||||
}
|
||||
$tw.utils.each(tiddlers,function(title) {
|
||||
var parser = wiki.parseTiddler(template),
|
||||
widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});
|
||||
var container = $tw.fakeDocument.createElement("div");
|
||||
widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),
|
||||
container = $tw.fakeDocument.createElement("div");
|
||||
widgetNode.render(container,null);
|
||||
var text = type === "text/html" ? container.innerHTML : container.textContent;
|
||||
fs.writeFileSync(path.resolve(pathname,encodeURIComponent(title) + extension),text,"utf8");
|
||||
var text = type === "text/html" ? container.innerHTML : container.textContent,
|
||||
exportPath = null;
|
||||
if($tw.utils.hop($tw.macros,"tv-get-export-path")) {
|
||||
var macroPath = $tw.macros["tv-get-export-path"].run.apply(self,[title]);
|
||||
if(macroPath) {
|
||||
exportPath = path.resolve(outputPath,macroPath + extension);
|
||||
}
|
||||
}
|
||||
var finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);
|
||||
$tw.utils.createFileDirectories(finalPath);
|
||||
fs.writeFileSync(finalPath,text,"utf8");
|
||||
});
|
||||
return null;
|
||||
};
|
||||
|
||||
90
core/modules/commands/savelibrarytiddlers.js
Normal file
90
core/modules/commands/savelibrarytiddlers.js
Normal file
@@ -0,0 +1,90 @@
|
||||
/*\
|
||||
title: $:/core/modules/commands/savelibrarytiddlers.js
|
||||
type: application/javascript
|
||||
module-type: command
|
||||
|
||||
Command to save the subtiddlers of a bundle tiddler as a series of JSON files
|
||||
|
||||
--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>
|
||||
|
||||
The tiddler identifies the bundle tiddler that contains the subtiddlers.
|
||||
|
||||
The pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.
|
||||
|
||||
The skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.info = {
|
||||
name: "savelibrarytiddlers",
|
||||
synchronous: true
|
||||
};
|
||||
|
||||
var Command = function(params,commander,callback) {
|
||||
this.params = params;
|
||||
this.commander = commander;
|
||||
this.callback = callback;
|
||||
};
|
||||
|
||||
Command.prototype.execute = function() {
|
||||
if(this.params.length < 2) {
|
||||
return "Missing filename";
|
||||
}
|
||||
var self = this,
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
containerTitle = this.params[0],
|
||||
filter = this.params[1],
|
||||
basepath = this.params[2],
|
||||
skinnyListTitle = this.params[3];
|
||||
// Get the container tiddler as data
|
||||
var containerData = self.commander.wiki.getTiddlerData(containerTitle,undefined);
|
||||
if(!containerData) {
|
||||
return "'" + containerTitle + "' is not a tiddler bundle";
|
||||
}
|
||||
// Filter the list of plugins
|
||||
var pluginList = [];
|
||||
$tw.utils.each(containerData.tiddlers,function(tiddler,title) {
|
||||
pluginList.push(title);
|
||||
});
|
||||
var filteredPluginList;
|
||||
if(filter) {
|
||||
filteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));
|
||||
} else {
|
||||
filteredPluginList = pluginList;
|
||||
}
|
||||
// Iterate through the plugins
|
||||
var skinnyList = [];
|
||||
$tw.utils.each(filteredPluginList,function(title) {
|
||||
var tiddler = containerData.tiddlers[title];
|
||||
// Save each JSON file and collect the skinny data
|
||||
var pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + ".json");
|
||||
$tw.utils.createFileDirectories(pathname);
|
||||
fs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),"utf8");
|
||||
// Collect the skinny list data
|
||||
var pluginTiddlers = JSON.parse(tiddler.text),
|
||||
readmeContent = (pluginTiddlers.tiddlers[title + "/readme"] || {}).text,
|
||||
iconTiddler = pluginTiddlers.tiddlers[title + "/icon"] || {},
|
||||
iconType = iconTiddler.type,
|
||||
iconText = iconTiddler.text,
|
||||
iconContent;
|
||||
if(iconType && iconText) {
|
||||
iconContent = $tw.utils.makeDataUri(iconText,iconType);
|
||||
}
|
||||
skinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));
|
||||
});
|
||||
// Save the catalogue tiddler
|
||||
if(skinnyListTitle) {
|
||||
self.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
exports.Command = Command;
|
||||
|
||||
})();
|
||||
@@ -13,8 +13,8 @@ Adds tiddler filtering methods to the $tw.Wiki object.
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Parses an operation within a filter string
|
||||
results: Array of array of operator nodes into which results should be inserted
|
||||
Parses an operation (i.e. a run) within a filter string
|
||||
operators: Array of array of operator nodes into which results should be inserted
|
||||
filterString: filter string
|
||||
p: start position within the string
|
||||
Returns the new start position, after the parsed operation
|
||||
@@ -108,7 +108,7 @@ exports.parseFilter = function(filterString) {
|
||||
p = 0, // Current position in the filter string
|
||||
match;
|
||||
var whitespaceRegExp = /(\s+)/mg,
|
||||
operandRegExp = /((?:\+|\-)?)(?:(\[)|("(?:[^"])*")|('(?:[^'])*')|([^\s\[\]]+))/mg;
|
||||
operandRegExp = /((?:\+|\-)?)(?:(\[)|(?:"([^"]*)")|(?:'([^']*)')|([^\s\[\]]+))/mg;
|
||||
while(p < filterString.length) {
|
||||
// Skip any whitespace
|
||||
whitespaceRegExp.lastIndex = p;
|
||||
@@ -202,6 +202,7 @@ exports.compileFilter = function(filterString) {
|
||||
if(operator.variable) {
|
||||
operand = widget.getVariable(operator.operand,{defaultValue: ""});
|
||||
}
|
||||
// Invoke the appropriate filteroperator module
|
||||
results = operatorFunction(accumulator,{
|
||||
operator: operator.operator,
|
||||
operand: operand,
|
||||
|
||||
@@ -17,15 +17,16 @@ Export our filter function
|
||||
*/
|
||||
exports.eachday = function(source,operator,options) {
|
||||
var results = [],
|
||||
values = [];
|
||||
values = [],
|
||||
fieldName = operator.operand || "modified";
|
||||
// Function to convert a date/time to a date integer
|
||||
var toDate = function(value) {
|
||||
value = (new Date(value)).setHours(0,0,0,0);
|
||||
return value+0;
|
||||
};
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && tiddler.fields[operator.operand]) {
|
||||
var value = toDate(tiddler.fields[operator.operand]);
|
||||
if(tiddler && tiddler.fields[fieldName]) {
|
||||
var value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));
|
||||
if(values.indexOf(value) === -1) {
|
||||
values.push(value);
|
||||
results.push(title);
|
||||
|
||||
31
core/modules/filters/editiondescription.js
Normal file
31
core/modules/filters/editiondescription.js
Normal file
@@ -0,0 +1,31 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/editiondescription.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator for returning the descriptions of the specified edition names
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.editiondescription = function(source,operator,options) {
|
||||
var results = [],
|
||||
editionInfo = $tw.utils.getEditionInfo();
|
||||
if(editionInfo) {
|
||||
source(function(tiddler,title) {
|
||||
if($tw.utils.hop(editionInfo,title)) {
|
||||
results.push(editionInfo[title].description || "");
|
||||
}
|
||||
});
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
30
core/modules/filters/editions.js
Normal file
30
core/modules/filters/editions.js
Normal file
@@ -0,0 +1,30 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/editions.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator for returning the names of the available editions in this wiki
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.editions = function(source,operator,options) {
|
||||
var results = [],
|
||||
editionInfo = $tw.utils.getEditionInfo();
|
||||
if(editionInfo) {
|
||||
$tw.utils.each(editionInfo,function(info,name) {
|
||||
results.push(name);
|
||||
});
|
||||
}
|
||||
results.sort();
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
32
core/modules/filters/getindex.js
Normal file
32
core/modules/filters/getindex.js
Normal file
@@ -0,0 +1,32 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/getindex.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
returns the value at a given index of datatiddlers
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.getindex = function(source,operator,options) {
|
||||
var data,title,results = [];
|
||||
if(operator.operand){
|
||||
source(function(tiddler,title) {
|
||||
title = tiddler ? tiddler.fields.title : title;
|
||||
data = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);
|
||||
if(data) {
|
||||
results.push(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
36
core/modules/filters/haschanged.js
Normal file
36
core/modules/filters/haschanged.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*\
|
||||
title: $:/core/modules/filters/haschanged.js
|
||||
type: application/javascript
|
||||
module-type: filteroperator
|
||||
|
||||
Filter operator returns tiddlers from the list that have a non-zero changecount.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
Export our filter function
|
||||
*/
|
||||
exports.haschanged = function(source,operator,options) {
|
||||
var results = [];
|
||||
if(operator.prefix === "!") {
|
||||
source(function(tiddler,title) {
|
||||
if(options.wiki.getChangeCount(title) === 0) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
source(function(tiddler,title) {
|
||||
if(options.wiki.getChangeCount(title) > 0) {
|
||||
results.push(title);
|
||||
}
|
||||
});
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -41,7 +41,11 @@ exports.regexp = function(source,operator,options) {
|
||||
regexpString = regexpString.substr(0,regexpString.length - match[0].length);
|
||||
}
|
||||
}
|
||||
regexp = new RegExp(regexpString,flags);
|
||||
try {
|
||||
regexp = new RegExp(regexpString,flags);
|
||||
} catch(e) {
|
||||
return ["" + e];
|
||||
}
|
||||
// Process the incoming tiddlers
|
||||
if(operator.prefix === "!") {
|
||||
source(function(tiddler,title) {
|
||||
|
||||
@@ -25,7 +25,7 @@ exports.sameday = function(source,operator,options) {
|
||||
};
|
||||
source(function(tiddler,title) {
|
||||
if(tiddler && tiddler.fields[fieldName]) {
|
||||
if(isSameDay(tiddler.fields[fieldName])) {
|
||||
if(isSameDay($tw.utils.parseDate(tiddler.fields[fieldName]))) {
|
||||
results.push(title);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,16 +29,7 @@ exports.params = [
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function(text,type) {
|
||||
type = type || "text/vnd.tiddlywiki";
|
||||
var typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo["text/plain"],
|
||||
isBase64 = typeInfo.encoding === "base64",
|
||||
parts = [];
|
||||
parts.push("data:");
|
||||
parts.push(type);
|
||||
parts.push(isBase64 ? ";base64" : "");
|
||||
parts.push(",");
|
||||
parts.push(isBase64 ? text : encodeURIComponent(text));
|
||||
return parts.join("");
|
||||
return $tw.utils.makeDataUri(text,type);
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
29
core/modules/macros/resolvepath.js
Normal file
29
core/modules/macros/resolvepath.js
Normal file
@@ -0,0 +1,29 @@
|
||||
/*\
|
||||
title: $:/core/modules/macros/resolvepath.js
|
||||
type: application/javascript
|
||||
module-type: macro
|
||||
|
||||
Resolves a relative path for an absolute rootpath.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.name = "resolvepath";
|
||||
|
||||
exports.params = [
|
||||
{name: "source"},
|
||||
{name: "root"}
|
||||
];
|
||||
|
||||
/*
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function(source, root) {
|
||||
return $tw.utils.resolvePath(source, root);
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -23,7 +23,8 @@ var HtmlParser = function(type,text,options) {
|
||||
type: "element",
|
||||
tag: "iframe",
|
||||
attributes: {
|
||||
src: {type: "string", value: src}
|
||||
src: {type: "string", value: src},
|
||||
sandbox: {type: "string", value: "sandbox"}
|
||||
}
|
||||
}];
|
||||
};
|
||||
|
||||
@@ -27,18 +27,13 @@ exports.init = function(parser) {
|
||||
this.matchRegExp = /\[\[(.*?)(?:\|(.*?))?\]\]/mg;
|
||||
};
|
||||
|
||||
var isLinkExternal = function(to) {
|
||||
var externalRegExp = /(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\s<>{}\[\]`|'"\\^~]+(?:\/|\b)/i;
|
||||
return externalRegExp.test(to);
|
||||
};
|
||||
|
||||
exports.parse = function() {
|
||||
// Move past the match
|
||||
this.parser.pos = this.matchRegExp.lastIndex;
|
||||
// Process the link
|
||||
var text = this.match[1],
|
||||
link = this.match[2] || text;
|
||||
if(isLinkExternal(link)) {
|
||||
if($tw.utils.isLinkExternal(link)) {
|
||||
return [{
|
||||
type: "element",
|
||||
tag: "a",
|
||||
|
||||
45
core/modules/parsers/wikiparser/rules/syslink.js
Normal file
45
core/modules/parsers/wikiparser/rules/syslink.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*\
|
||||
title: $:/core/modules/parsers/wikiparser/rules/syslink.js
|
||||
type: application/javascript
|
||||
module-type: wikirule
|
||||
|
||||
Wiki text inline rule for system tiddler links.
|
||||
Can be suppressed preceding them with `~`.
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports.name = "syslink";
|
||||
exports.types = {inline: true};
|
||||
|
||||
exports.init = function(parser) {
|
||||
this.parser = parser;
|
||||
// Regexp to match
|
||||
this.matchRegExp = /~?\$:[^\s<|]+(?:[^\s<|])/mg;
|
||||
};
|
||||
|
||||
exports.parse = function() {
|
||||
var match = this.match[0];
|
||||
// Move past the match
|
||||
this.parser.pos = this.matchRegExp.lastIndex;
|
||||
// Create the link unless it is suppressed
|
||||
if(match.substr(0,1) === "~") {
|
||||
return [{type: "text", text: match.substr(1)}];
|
||||
} else {
|
||||
return [{
|
||||
type: "link",
|
||||
attributes: {
|
||||
to: {type: "string", value: match}
|
||||
},
|
||||
children: [{
|
||||
type: "text",
|
||||
text: match
|
||||
}]
|
||||
}];
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -75,14 +75,14 @@ function SaverHandler(options) {
|
||||
}
|
||||
});
|
||||
// Set up our beforeunload handler
|
||||
window.addEventListener("beforeunload",function(event) {
|
||||
window.onbeforeunload = function(event) {
|
||||
var confirmationMessage;
|
||||
if(self.isDirty()) {
|
||||
confirmationMessage = $tw.language.getString("UnsavedChangesWarning");
|
||||
event.returnValue = confirmationMessage; // Gecko
|
||||
}
|
||||
return confirmationMessage;
|
||||
});
|
||||
};
|
||||
}
|
||||
// Install the save action handlers
|
||||
if($tw.browser) {
|
||||
|
||||
155
core/modules/startup/browser-messaging.js
Normal file
155
core/modules/startup/browser-messaging.js
Normal file
@@ -0,0 +1,155 @@
|
||||
/*\
|
||||
title: $:/core/modules/browser-messaging.js
|
||||
type: application/javascript
|
||||
module-type: startup
|
||||
|
||||
Browser message handling
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
// Export name and synchronous status
|
||||
exports.name = "browser-messaging";
|
||||
exports.platforms = ["browser"];
|
||||
exports.after = ["startup"];
|
||||
exports.synchronous = true;
|
||||
|
||||
/*
|
||||
Load a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used
|
||||
*/
|
||||
function loadIFrame(url,callback) {
|
||||
// Check if iframe already exists
|
||||
var iframeInfo = $tw.browserMessaging.iframeInfoMap[url];
|
||||
if(iframeInfo) {
|
||||
// We've already got the iframe
|
||||
callback(null,iframeInfo);
|
||||
} else {
|
||||
// Create the iframe and save it in the list
|
||||
var iframe = document.createElement("iframe"),
|
||||
iframeInfo = {
|
||||
url: url,
|
||||
status: "loading",
|
||||
domNode: iframe
|
||||
};
|
||||
$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;
|
||||
saveIFrameInfoTiddler(iframeInfo);
|
||||
// Add the iframe to the DOM and hide it
|
||||
iframe.style.display = "none";
|
||||
document.body.appendChild(iframe);
|
||||
// Set up onload
|
||||
iframe.onload = function() {
|
||||
iframeInfo.status = "loaded";
|
||||
saveIFrameInfoTiddler(iframeInfo);
|
||||
callback(null,iframeInfo);
|
||||
};
|
||||
iframe.onerror = function() {
|
||||
callback("Cannot load iframe");
|
||||
};
|
||||
try {
|
||||
iframe.src = url;
|
||||
} catch(ex) {
|
||||
callback(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function saveIFrameInfoTiddler(iframeInfo) {
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{
|
||||
title: "$:/temp/ServerConnection/" + iframeInfo.url,
|
||||
text: iframeInfo.status,
|
||||
tags: ["$:/tags/ServerConnection"],
|
||||
url: iframeInfo.url
|
||||
},$tw.wiki.getModificationFields()));
|
||||
}
|
||||
|
||||
exports.startup = function() {
|
||||
// Initialise the store of iframes we've created
|
||||
$tw.browserMessaging = {
|
||||
iframeInfoMap: {} // Hashmap by URL of {url:,status:"loading/loaded",domNode:}
|
||||
};
|
||||
// Listen for widget messages to control loading the plugin library
|
||||
$tw.rootWidget.addEventListener("tm-load-plugin-library",function(event) {
|
||||
var paramObject = event.paramObject || {},
|
||||
url = paramObject.url;
|
||||
if(url) {
|
||||
loadIFrame(url,function(err,iframeInfo) {
|
||||
if(err) {
|
||||
alert("Error loading plugin library: " + url);
|
||||
} else {
|
||||
iframeInfo.domNode.contentWindow.postMessage({
|
||||
verb: "GET",
|
||||
url: "recipes/library/tiddlers.json",
|
||||
cookies: {
|
||||
type: "save-info",
|
||||
infoTitlePrefix: paramObject.infoTitlePrefix || "$:/temp/RemoteAssetInfo/",
|
||||
url: url
|
||||
}
|
||||
},"*");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
$tw.rootWidget.addEventListener("tm-load-plugin-from-library",function(event) {
|
||||
var paramObject = event.paramObject || {},
|
||||
url = paramObject.url,
|
||||
title = paramObject.title;
|
||||
if(url && title) {
|
||||
loadIFrame(url,function(err,iframeInfo) {
|
||||
if(err) {
|
||||
alert("Error loading plugin library: " + url);
|
||||
} else {
|
||||
iframeInfo.domNode.contentWindow.postMessage({
|
||||
verb: "GET",
|
||||
url: "recipes/library/tiddlers/" + encodeURIComponent(title) + ".json",
|
||||
cookies: {
|
||||
type: "save-tiddler",
|
||||
url: url
|
||||
}
|
||||
},"*");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
// Listen for window messages from other windows
|
||||
window.addEventListener("message",function listener(event){
|
||||
console.log("browser-messaging: ",document.location.toString())
|
||||
console.log("browser-messaging: Received message from",event.origin);
|
||||
console.log("browser-messaging: Message content",event.data);
|
||||
switch(event.data.verb) {
|
||||
case "GET-RESPONSE":
|
||||
if(event.data.status.charAt(0) === "2") {
|
||||
if(event.data.cookies) {
|
||||
if(event.data.cookies.type === "save-info") {
|
||||
var tiddlers = JSON.parse(event.data.body);
|
||||
$tw.utils.each(tiddlers,function(tiddler) {
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{
|
||||
title: event.data.cookies.infoTitlePrefix + event.data.cookies.url + "/" + tiddler.title,
|
||||
"original-title": tiddler.title,
|
||||
text: "",
|
||||
type: "text/vnd.tiddlywiki",
|
||||
"original-type": tiddler.type,
|
||||
"plugin-type": undefined,
|
||||
"original-plugin-type": tiddler["plugin-type"],
|
||||
"module-type": undefined,
|
||||
"original-module-type": tiddler["module-type"],
|
||||
tags: ["$:/tags/RemoteAssetInfo"],
|
||||
"original-tags": $tw.utils.stringifyList(tiddler.tags || []),
|
||||
"server-url": event.data.cookies.url
|
||||
},$tw.wiki.getModificationFields()));
|
||||
});
|
||||
} else if(event.data.cookies.type === "save-tiddler") {
|
||||
var tiddler = JSON.parse(event.data.body);
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
},false);
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -23,7 +23,7 @@ exports.startup = function() {
|
||||
$tw.passwordPrompt.createPrompt({
|
||||
serviceName: $tw.language.getString("Encryption/PromptSetPassword"),
|
||||
noUserName: true,
|
||||
submitText: "Set password",
|
||||
submitText: $tw.language.getString("Encryption/SetPassword"),
|
||||
canCancel: true,
|
||||
repeatPassword: true,
|
||||
callback: function(data) {
|
||||
|
||||
@@ -62,7 +62,7 @@ exports.startup = function() {
|
||||
timerId;
|
||||
function refresh() {
|
||||
// Process the refresh
|
||||
$tw.pageWidgetNode.refresh(deferredChanges,$tw.pageContainer,null);
|
||||
$tw.pageWidgetNode.refresh(deferredChanges);
|
||||
deferredChanges = Object.create(null);
|
||||
}
|
||||
// Add the change event handler
|
||||
|
||||
@@ -30,7 +30,7 @@ var ZoominListView = function(listWidget) {
|
||||
if(!(domNode instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
if(targetTiddler !== itemWidget.parseTreeNode.itemTitle || (!targetTiddler && index)) {
|
||||
if((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {
|
||||
domNode.style.display = "none";
|
||||
} else {
|
||||
self.currentTiddlerDomNode = domNode;
|
||||
|
||||
@@ -39,14 +39,14 @@ function Syncer(options) {
|
||||
// Browser event handlers
|
||||
if($tw.browser) {
|
||||
// Set up our beforeunload handler
|
||||
window.addEventListener("beforeunload",function(event) {
|
||||
window.onbeforeunload = function(event) {
|
||||
var confirmationMessage;
|
||||
if(self.isDirty()) {
|
||||
confirmationMessage = $tw.language.getString("UnsavedChangesWarning");
|
||||
event.returnValue = confirmationMessage; // Gecko
|
||||
}
|
||||
return confirmationMessage;
|
||||
});
|
||||
};
|
||||
// Listen out for login/logout/refresh events in the browser
|
||||
$tw.rootWidget.addEventListener("tm-login",function() {
|
||||
self.handleLoginEvent();
|
||||
|
||||
@@ -15,6 +15,9 @@ Upgrader module that checks that plugins are newer than any already installed ve
|
||||
var UPGRADE_LIBRARY_TITLE = "$:/UpgradeLibrary";
|
||||
|
||||
var BLOCKED_PLUGINS = {
|
||||
"$:/themes/tiddlywiki/stickytitles": {
|
||||
versions: ["*"]
|
||||
},
|
||||
"$:/plugins/tiddlywiki/fullscreen": {
|
||||
versions: ["*"]
|
||||
}
|
||||
@@ -37,14 +40,12 @@ exports.upgrade = function(wiki,titles,tiddlers) {
|
||||
var incomingTiddler = tiddlers[title];
|
||||
// Check if we're dealing with a plugin
|
||||
if(incomingTiddler && incomingTiddler["plugin-type"] && incomingTiddler.version) {
|
||||
// Upgrade the incoming plugin if we've got a newer version in the upgrade library
|
||||
// Upgrade the incoming plugin if it is in the upgrade library
|
||||
var libraryTiddler = getLibraryTiddler(title);
|
||||
if(libraryTiddler && libraryTiddler["plugin-type"] && libraryTiddler.version) {
|
||||
if($tw.utils.checkVersions(libraryTiddler.version,incomingTiddler.version)) {
|
||||
tiddlers[title] = libraryTiddler;
|
||||
messages[title] = $tw.language.getString("Import/Upgrader/Plugins/Upgraded",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});
|
||||
return;
|
||||
}
|
||||
tiddlers[title] = libraryTiddler;
|
||||
messages[title] = $tw.language.getString("Import/Upgrader/Plugins/Upgraded",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});
|
||||
return;
|
||||
}
|
||||
// Suppress the incoming plugin if it is older than the currently installed one
|
||||
var existingTiddler = wiki.getTiddler(title);
|
||||
|
||||
@@ -148,9 +148,13 @@ exports.getFullScreenApis = function() {
|
||||
"_fullscreenElement": d.webkitFullscreenElement !== undefined ? "webkitFullscreenElement" :
|
||||
d.mozFullScreenElement !== undefined ? "mozFullScreenElement" :
|
||||
d.msFullscreenElement !== undefined ? "msFullscreenElement" :
|
||||
d.fullscreenElement !== undefined ? "fullscreenElement" : ""
|
||||
d.fullscreenElement !== undefined ? "fullscreenElement" : "",
|
||||
"_fullscreenChange": d.webkitFullscreenElement !== undefined ? "webkitfullscreenchange" :
|
||||
d.mozFullScreenElement !== undefined ? "mozfullscreenchange" :
|
||||
d.msFullscreenElement !== undefined ? "MSFullscreenChange" :
|
||||
d.fullscreenElement !== undefined ? "fullscreenchange" : ""
|
||||
};
|
||||
if(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement) {
|
||||
if(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {
|
||||
return null;
|
||||
} else {
|
||||
return result;
|
||||
|
||||
@@ -70,6 +70,7 @@ Modal.prototype.display = function(title,options) {
|
||||
// Render the title of the message
|
||||
var headerWidgetNode = this.wiki.makeTranscludeWidget(title,{
|
||||
field: "subtitle",
|
||||
mode: "inline",
|
||||
children: [{
|
||||
type: "text",
|
||||
attributes: {
|
||||
@@ -112,6 +113,7 @@ Modal.prototype.display = function(title,options) {
|
||||
}
|
||||
var footerWidgetNode = this.wiki.makeTranscludeWidget(title,{
|
||||
field: "footer",
|
||||
mode: "inline",
|
||||
children: [{
|
||||
type: "button",
|
||||
attributes: {
|
||||
|
||||
@@ -68,24 +68,33 @@ PageScroller.prototype.scrollIntoView = function(element) {
|
||||
height: clientBounds.height
|
||||
};
|
||||
// We'll consider the horizontal and vertical scroll directions separately via this function
|
||||
// targetPos/targetSize - position and size of the target element
|
||||
// currentPos/currentSize - position and size of the current scroll viewport
|
||||
// returns: new position of the scroll viewport
|
||||
var getEndPos = function(targetPos,targetSize,currentPos,currentSize) {
|
||||
var newPos = currentPos;
|
||||
// If the target is above/left of the current view, then scroll to it's top/left
|
||||
if(targetPos <= currentPos) {
|
||||
return targetPos;
|
||||
newPos = targetPos;
|
||||
// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window
|
||||
} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {
|
||||
return targetPos + targetSize - currentSize;
|
||||
newPos = targetPos + targetSize - currentSize;
|
||||
// If the target is big, then just scroll to the top
|
||||
} else if(currentPos < targetPos) {
|
||||
return targetPos;
|
||||
newPos = targetPos;
|
||||
// Otherwise, stay where we are
|
||||
} else {
|
||||
return currentPos;
|
||||
newPos = currentPos;
|
||||
}
|
||||
// If we are scrolling within 50 pixels of the top/left then snap to zero
|
||||
if(newPos < 50) {
|
||||
newPos = 0;
|
||||
}
|
||||
return newPos;
|
||||
},
|
||||
endX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth),
|
||||
endY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight);
|
||||
// Only scroll if necessary
|
||||
// Only scroll if the position has changed
|
||||
if(endX !== scrollPosition.x || endY !== scrollPosition.y) {
|
||||
var self = this,
|
||||
drawFrame;
|
||||
|
||||
48
core/modules/utils/edition-info.js
Normal file
48
core/modules/utils/edition-info.js
Normal file
@@ -0,0 +1,48 @@
|
||||
/*\
|
||||
title: $:/core/modules/utils/edition-info.js
|
||||
type: application/javascript
|
||||
module-type: utils-node
|
||||
|
||||
Information about the available editions
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var fs = require("fs"),
|
||||
path = require("path");
|
||||
|
||||
var editionInfo;
|
||||
|
||||
exports.getEditionInfo = function() {
|
||||
if(!editionInfo) {
|
||||
// Enumerate the edition paths
|
||||
var editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);
|
||||
editionInfo = {};
|
||||
for(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {
|
||||
var editionPath = editionPaths[editionIndex];
|
||||
// Enumerate the folders
|
||||
var entries = fs.readdirSync(editionPath);
|
||||
for(var entryIndex=0; entryIndex<entries.length; entryIndex++) {
|
||||
var entry = entries[entryIndex];
|
||||
// Check if directories have a valid tiddlywiki.info
|
||||
if(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {
|
||||
var info;
|
||||
try {
|
||||
info = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,"tiddlywiki.info"),"utf8"));
|
||||
} catch(ex) {
|
||||
}
|
||||
if(info) {
|
||||
editionInfo[entry] = info;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return editionInfo;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -134,7 +134,7 @@ Object.defineProperty(TW_Element.prototype, "outerHTML", {
|
||||
for(a=0; a<attr.length; a++) {
|
||||
v = this.attributes[attr[a]];
|
||||
if(v !== undefined) {
|
||||
output.push(" ",attr[a],"='",$tw.utils.htmlEncode(v),"'");
|
||||
output.push(" ",attr[a],"=\"",$tw.utils.htmlEncode(v),"\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -144,7 +144,7 @@ Object.defineProperty(TW_Element.prototype, "outerHTML", {
|
||||
style.push(s + ":" + this.style[s] + ";");
|
||||
}
|
||||
if(style.length > 0) {
|
||||
output.push(" style='",style.join(""),"'")
|
||||
output.push(" style=\"",style.join(""),"\"")
|
||||
}
|
||||
}
|
||||
output.push(">");
|
||||
|
||||
@@ -36,37 +36,43 @@ Alert a message
|
||||
Logger.prototype.alert = function(/* args */) {
|
||||
// Prepare the text of the alert
|
||||
var text = Array.prototype.join.call(arguments," ");
|
||||
// Check if there is an existing alert with the same text and the same component
|
||||
var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),
|
||||
alertFields,
|
||||
existingCount,
|
||||
self = this;
|
||||
$tw.utils.each(existingAlerts,function(title) {
|
||||
var tiddler = $tw.wiki.getTiddler(title);
|
||||
if(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {
|
||||
alertFields = $tw.utils.extend({},tiddler.fields);
|
||||
// Create alert tiddlers in the browser
|
||||
if($tw.browser) {
|
||||
// Check if there is an existing alert with the same text and the same component
|
||||
var existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),
|
||||
alertFields,
|
||||
existingCount,
|
||||
self = this;
|
||||
$tw.utils.each(existingAlerts,function(title) {
|
||||
var tiddler = $tw.wiki.getTiddler(title);
|
||||
if(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {
|
||||
alertFields = $tw.utils.extend({},tiddler.fields);
|
||||
}
|
||||
});
|
||||
if(alertFields) {
|
||||
existingCount = alertFields.count || 1;
|
||||
} else {
|
||||
alertFields = {
|
||||
title: $tw.wiki.generateNewTitle("$:/temp/alerts/alert",{prefix: ""}),
|
||||
text: text,
|
||||
tags: [ALERT_TAG],
|
||||
component: this.componentName
|
||||
};
|
||||
existingCount = 0;
|
||||
}
|
||||
});
|
||||
if(alertFields) {
|
||||
existingCount = alertFields.count || 1;
|
||||
alertFields.modified = new Date();
|
||||
if(++existingCount > 1) {
|
||||
alertFields.count = existingCount;
|
||||
} else {
|
||||
alertFields.count = undefined;
|
||||
}
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));
|
||||
// Log the alert as well
|
||||
this.log.apply(this,Array.prototype.slice.call(arguments,0));
|
||||
} else {
|
||||
alertFields = {
|
||||
title: $tw.wiki.generateNewTitle("$:/temp/alerts/alert",{prefix: ""}),
|
||||
text: text,
|
||||
tags: [ALERT_TAG],
|
||||
component: this.componentName
|
||||
};
|
||||
existingCount = 0;
|
||||
// Print an orange message to the console if not in the browser
|
||||
console.error("\x1b[1;33m" + text + "\x1b[0m");
|
||||
}
|
||||
alertFields.modified = new Date();
|
||||
if(++existingCount > 1) {
|
||||
alertFields.count = existingCount;
|
||||
} else {
|
||||
alertFields.count = undefined;
|
||||
}
|
||||
$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));
|
||||
// Log it too
|
||||
this.log.apply(this,Array.prototype.slice.call(arguments,0));
|
||||
};
|
||||
|
||||
exports.Logger = Logger;
|
||||
|
||||
@@ -363,7 +363,7 @@ exports.getRelativeDate = function(delta) {
|
||||
};
|
||||
};
|
||||
|
||||
// Convert & to "&", < to "<", > to ">" and " to """
|
||||
// Convert & to "&", < to "<", > to ">", " to """
|
||||
exports.htmlEncode = function(s) {
|
||||
if(s) {
|
||||
return s.toString().replace(/&/mg,"&").replace(/</mg,"<").replace(/>/mg,">").replace(/\"/mg,""");
|
||||
@@ -421,9 +421,9 @@ exports.stringify = function(s) {
|
||||
* line separator, paragraph separator, and line feed. Any character may
|
||||
* appear in the form of an escape sequence.
|
||||
*
|
||||
* For portability, we also escape escape all non-ASCII characters.
|
||||
* For portability, we also escape all non-ASCII characters.
|
||||
*/
|
||||
return s
|
||||
return (s || "")
|
||||
.replace(/\\/g, '\\\\') // backslash
|
||||
.replace(/"/g, '\\"') // double quote character
|
||||
.replace(/'/g, "\\'") // single quote character
|
||||
@@ -439,9 +439,15 @@ exports.escapeRegExp = function(s) {
|
||||
return s.replace(/[\-\/\\\^\$\*\+\?\.\(\)\|\[\]\{\}]/g, '\\$&');
|
||||
};
|
||||
|
||||
// Checks whether a link target is external, i.e. not a tiddler title
|
||||
exports.isLinkExternal = function(to) {
|
||||
var externalRegExp = /(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\s<>{}\[\]`|'"\\^~]+(?:\/|\b)/i;
|
||||
return externalRegExp.test(to);
|
||||
};
|
||||
|
||||
exports.nextTick = function(fn) {
|
||||
/*global window: false */
|
||||
if(typeof window !== "undefined") {
|
||||
if(typeof process === "undefined") {
|
||||
// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts
|
||||
window.setTimeout(fn,4);
|
||||
} else {
|
||||
@@ -600,4 +606,20 @@ exports.timer = function(base) {
|
||||
return m;
|
||||
};
|
||||
|
||||
/*
|
||||
Convert text and content type to a data URI
|
||||
*/
|
||||
exports.makeDataUri = function(text,type) {
|
||||
type = type || "text/vnd.tiddlywiki";
|
||||
var typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo["text/plain"],
|
||||
isBase64 = typeInfo.encoding === "base64",
|
||||
parts = [];
|
||||
parts.push("data:");
|
||||
parts.push(type);
|
||||
parts.push(isBase64 ? ";base64" : "");
|
||||
parts.push(",");
|
||||
parts.push(isBase64 ? text : encodeURIComponent(text));
|
||||
return parts.join("");
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -42,10 +42,13 @@ BrowseWidget.prototype.render = function(parent,nextSibling) {
|
||||
if(this.tooltip) {
|
||||
domNode.setAttribute("title",this.tooltip);
|
||||
}
|
||||
if(this.nwsaveas) {
|
||||
domNode.setAttribute("nwsaveas",this.nwsaveas);
|
||||
}
|
||||
// Add a click event handler
|
||||
domNode.addEventListener("change",function (event) {
|
||||
if(self.message) {
|
||||
self.dispatchEvent({type: self.message, param: event.target.files});
|
||||
self.dispatchEvent({type: self.message, param: self.param, files: event.target.files});
|
||||
} else {
|
||||
self.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {
|
||||
self.dispatchEvent({type: "tm-import-tiddlers", param: JSON.stringify(tiddlerFieldsArray)});
|
||||
@@ -65,7 +68,9 @@ Compute the internal state of the widget
|
||||
BrowseWidget.prototype.execute = function() {
|
||||
this.browseMultiple = this.getAttribute("multiple");
|
||||
this.message = this.getAttribute("message");
|
||||
this.param = this.getAttribute("param");
|
||||
this.tooltip = this.getAttribute("tooltip");
|
||||
this.nwsaveas = this.getAttribute("nwsaveas");
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -63,7 +63,7 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
|
||||
// Add a click event handler
|
||||
domNode.addEventListener("click",function (event) {
|
||||
var handled = false;
|
||||
if(self.invokeActions(event)) {
|
||||
if(self.invokeActions(this,event)) {
|
||||
handled = true;
|
||||
}
|
||||
if(self.to) {
|
||||
@@ -94,6 +94,13 @@ ButtonWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.domNodes.push(domNode);
|
||||
};
|
||||
|
||||
/*
|
||||
We don't allow actions to propagate because we trigger actions ourselves
|
||||
*/
|
||||
ButtonWidget.prototype.allowActionPropagation = function() {
|
||||
return false;
|
||||
};
|
||||
|
||||
ButtonWidget.prototype.getBoundingClientRect = function() {
|
||||
return this.domNodes[0].getBoundingClientRect();
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ CheckboxWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.execute();
|
||||
// Create our elements
|
||||
this.labelDomNode = this.document.createElement("label");
|
||||
this.labelDomNode.setAttribute("class",this.checkboxClass);
|
||||
this.inputDomNode = this.document.createElement("input");
|
||||
this.inputDomNode.setAttribute("type","checkbox");
|
||||
if(this.getValue()) {
|
||||
@@ -126,6 +127,7 @@ CheckboxWidget.prototype.execute = function() {
|
||||
this.checkboxChecked = this.getAttribute("checked");
|
||||
this.checkboxUnchecked = this.getAttribute("unchecked");
|
||||
this.checkboxDefault = this.getAttribute("default");
|
||||
this.checkboxClass = this.getAttribute("class","");
|
||||
// Make the child widgets
|
||||
this.makeChildWidgets();
|
||||
};
|
||||
|
||||
@@ -53,6 +53,10 @@ DropZoneWidget.prototype.render = function(parent,nextSibling) {
|
||||
};
|
||||
|
||||
DropZoneWidget.prototype.enterDrag = function() {
|
||||
// Check for this window being the source of the drag
|
||||
if($tw.dragInProgress) {
|
||||
return false;
|
||||
}
|
||||
// We count enter/leave events
|
||||
this.dragEnterCount = (this.dragEnterCount || 0) + 1;
|
||||
// If we're entering for the first time we need to apply highlighting
|
||||
@@ -83,6 +87,10 @@ DropZoneWidget.prototype.handleDragOverEvent = function(event) {
|
||||
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) {
|
||||
return false;
|
||||
}
|
||||
// Check for this window being the source of the drag
|
||||
if($tw.dragInProgress) {
|
||||
return false;
|
||||
}
|
||||
// Tell the browser that we're still interested in the drop
|
||||
event.preventDefault();
|
||||
event.dataTransfer.dropEffect = "copy"; // Explicitly show this is a copy
|
||||
@@ -98,6 +106,10 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
|
||||
if(["TEXTAREA","INPUT"].indexOf(event.target.tagName) !== -1) {
|
||||
return false;
|
||||
}
|
||||
// Check for this window being the source of the drag
|
||||
if($tw.dragInProgress) {
|
||||
return false;
|
||||
}
|
||||
var self = this,
|
||||
dataTransfer = event.dataTransfer;
|
||||
// Reset the enter count
|
||||
@@ -147,7 +159,7 @@ DropZoneWidget.prototype.importDataTypes = [
|
||||
}},
|
||||
{type: "URL", IECompatible: true, convertToFields: function(data) {
|
||||
// Check for tiddler data URI
|
||||
var match = decodeURI(data).match(/^data\:text\/vnd\.tiddler,(.*)/i);
|
||||
var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i);
|
||||
if(match) {
|
||||
return JSON.parse(match[1]);
|
||||
} else {
|
||||
@@ -158,7 +170,7 @@ DropZoneWidget.prototype.importDataTypes = [
|
||||
}},
|
||||
{type: "text/x-moz-url", IECompatible: false, convertToFields: function(data) {
|
||||
// Check for tiddler data URI
|
||||
var match = decodeURI(data).match(/^data\:text\/vnd\.tiddler,(.*)/i);
|
||||
var match = decodeURIComponent(data).match(/^data\:text\/vnd\.tiddler,(.*)/i);
|
||||
if(match) {
|
||||
return JSON.parse(match[1]);
|
||||
} else {
|
||||
|
||||
@@ -37,8 +37,12 @@ EditTextWidget.prototype.render = function(parent,nextSibling) {
|
||||
// Execute our logic
|
||||
this.execute();
|
||||
// Create our element
|
||||
var editInfo = this.getEditInfo();
|
||||
var domNode = this.document.createElement(this.editTag);
|
||||
var editInfo = this.getEditInfo(),
|
||||
tag = this.editTag;
|
||||
if($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {
|
||||
tag = "input";
|
||||
}
|
||||
var domNode = this.document.createElement(tag);
|
||||
if(this.editType) {
|
||||
domNode.setAttribute("type",this.editType);
|
||||
}
|
||||
@@ -73,8 +77,10 @@ EditTextWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.fixHeight();
|
||||
// Focus field
|
||||
if(this.editFocus === "true") {
|
||||
domNode.focus();
|
||||
domNode.select();
|
||||
if(domNode.focus && domNode.select) {
|
||||
domNode.focus();
|
||||
domNode.select();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ ImageWidget.prototype.render = function(parent,nextSibling) {
|
||||
tiddler = this.wiki.getTiddler(this.imageSource);
|
||||
if(!tiddler) {
|
||||
// The source isn't the title of a tiddler, so we'll assume it's a URL
|
||||
src = this.imageSource;
|
||||
src = this.getVariable("tv-get-export-image-link",{params: [{name: "src",value: this.imageSource}],defaultValue: this.imageSource});
|
||||
} else {
|
||||
// Check if it is an image tiddler
|
||||
if(this.wiki.isImageTiddler(this.imageSource)) {
|
||||
|
||||
@@ -53,8 +53,13 @@ Render this widget into the DOM
|
||||
*/
|
||||
LinkWidget.prototype.renderLink = function(parent,nextSibling) {
|
||||
var self = this;
|
||||
// Sanitise the specified tag
|
||||
var tag = this.linkTag;
|
||||
if($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {
|
||||
tag = "a";
|
||||
}
|
||||
// Create our element
|
||||
var domNode = this.document.createElement("a");
|
||||
var domNode = this.document.createElement(tag);
|
||||
// Assign classes
|
||||
var classes = [];
|
||||
if(this.linkClasses) {
|
||||
@@ -77,7 +82,13 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) {
|
||||
wikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : "#$uri_encoded$",
|
||||
wikiLinkText = wikiLinkTemplate.replace("$uri_encoded$",encodeURIComponent(this.to));
|
||||
wikiLinkText = wikiLinkText.replace("$uri_doubleencoded$",encodeURIComponent(encodeURIComponent(this.to)));
|
||||
domNode.setAttribute("href",wikiLinkText);
|
||||
wikiLinkText = this.getVariable("tv-get-export-link",{params: [{name: "to",value: this.to}],defaultValue: wikiLinkText});
|
||||
if(tag === "a") {
|
||||
domNode.setAttribute("href",wikiLinkText);
|
||||
}
|
||||
if(this.tabIndex) {
|
||||
domNode.setAttribute("tabindex",this.tabIndex);
|
||||
}
|
||||
// Set the tooltip
|
||||
// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to "<$transclude field='tooltip'><$transclude field='title'/></$transclude>"
|
||||
var tooltipWikiText = this.tooltip || this.getVariable("tv-wikilink-tooltip");
|
||||
@@ -97,17 +108,21 @@ LinkWidget.prototype.renderLink = function(parent,nextSibling) {
|
||||
// Add a click event handler
|
||||
$tw.utils.addEventListeners(domNode,[
|
||||
{name: "click", handlerObject: this, handlerMethod: "handleClickEvent"},
|
||||
{name: "dragstart", handlerObject: this, handlerMethod: "handleDragStartEvent"},
|
||||
{name: "dragend", handlerObject: this, handlerMethod: "handleDragEndEvent"}
|
||||
]);
|
||||
if(this.draggable === "yes") {
|
||||
$tw.utils.addEventListeners(domNode,[
|
||||
{name: "dragstart", handlerObject: this, handlerMethod: "handleDragStartEvent"},
|
||||
{name: "dragend", handlerObject: this, handlerMethod: "handleDragEndEvent"}
|
||||
]);
|
||||
}
|
||||
// Insert the link into the DOM and render any children
|
||||
parent.insertBefore(domNode,nextSibling);
|
||||
this.renderChildren(domNode,null);
|
||||
this.domNodes.push(domNode);
|
||||
};
|
||||
|
||||
LinkWidget.prototype.handleClickEvent = function (event) {
|
||||
// Send the click on it's way as a navigate event
|
||||
LinkWidget.prototype.handleClickEvent = function(event) {
|
||||
// Send the click on its way as a navigate event
|
||||
var bounds = this.domNodes[0].getBoundingClientRect();
|
||||
this.dispatchEvent({
|
||||
type: "tm-navigate",
|
||||
@@ -118,14 +133,17 @@ LinkWidget.prototype.handleClickEvent = function (event) {
|
||||
},
|
||||
navigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)
|
||||
});
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
if(this.domNodes[0].hasAttribute("href")) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
LinkWidget.prototype.handleDragStartEvent = function(event) {
|
||||
if(event.target === this.domNodes[0]) {
|
||||
if(this.to) {
|
||||
$tw.dragInProgress = true;
|
||||
// Set the dragging class on the element being dragged
|
||||
$tw.utils.addClass(event.target,"tc-tiddlylink-dragging");
|
||||
// Create the drag image elements
|
||||
@@ -160,9 +178,9 @@ LinkWidget.prototype.handleDragStartEvent = function(event) {
|
||||
if(!$tw.browser.isIE) {
|
||||
dataTransfer.setData("text/vnd.tiddler",jsonData);
|
||||
dataTransfer.setData("text/plain",title);
|
||||
dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURI(jsonData));
|
||||
dataTransfer.setData("text/x-moz-url","data:text/vnd.tiddler," + encodeURIComponent(jsonData));
|
||||
}
|
||||
dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURI(jsonData));
|
||||
dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(jsonData));
|
||||
dataTransfer.setData("Text",title);
|
||||
event.stopPropagation();
|
||||
} else {
|
||||
@@ -173,6 +191,7 @@ LinkWidget.prototype.handleDragStartEvent = function(event) {
|
||||
|
||||
LinkWidget.prototype.handleDragEndEvent = function(event) {
|
||||
if(event.target === this.domNodes[0]) {
|
||||
$tw.dragInProgress = false;
|
||||
// Remove the dragging class on the element being dragged
|
||||
$tw.utils.removeClass(event.target,"tc-tiddlylink-dragging");
|
||||
// Delete the drag image element
|
||||
@@ -186,13 +205,14 @@ LinkWidget.prototype.handleDragEndEvent = function(event) {
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
LinkWidget.prototype.execute = function() {
|
||||
// Get the target tiddler title
|
||||
// Pick up our attributes
|
||||
this.to = this.getAttribute("to",this.getVariable("currentTiddler"));
|
||||
// Get the link title and aria label
|
||||
this.tooltip = this.getAttribute("tooltip");
|
||||
this["aria-label"] = this.getAttribute("aria-label");
|
||||
// Get the link classes
|
||||
this.linkClasses = this.getAttribute("class");
|
||||
this.tabIndex = this.getAttribute("tabindex");
|
||||
this.draggable = this.getAttribute("draggable","yes");
|
||||
this.linkTag = this.getAttribute("tag","a");
|
||||
// Determine the link characteristics
|
||||
this.isMissing = !this.wiki.tiddlerExists(this.to);
|
||||
this.isShadow = this.wiki.isShadowTiddler(this.to);
|
||||
|
||||
@@ -126,20 +126,29 @@ ListWidget.prototype.makeItemTemplate = function(title) {
|
||||
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
|
||||
*/
|
||||
ListWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
var changedAttributes = this.computeAttributes(),
|
||||
result;
|
||||
// Call the storyview
|
||||
if(this.storyview && this.storyview.refreshStart) {
|
||||
this.storyview.refreshStart(changedTiddlers,changedAttributes);
|
||||
}
|
||||
// Completely refresh if any of our attributes have changed
|
||||
if(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
result = true;
|
||||
} else {
|
||||
// Handle any changes to the list
|
||||
var hasChanged = this.handleListChanges(changedTiddlers);
|
||||
result = this.handleListChanges(changedTiddlers);
|
||||
// Handle any changes to the history stack
|
||||
if(this.historyTitle && changedTiddlers[this.historyTitle]) {
|
||||
this.handleHistoryChanges();
|
||||
}
|
||||
return hasChanged;
|
||||
}
|
||||
// Call the storyview
|
||||
if(this.storyview && this.storyview.refreshEnd) {
|
||||
this.storyview.refreshEnd(changedTiddlers,changedAttributes);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -306,4 +315,4 @@ ListItemWidget.prototype.refresh = function(changedTiddlers) {
|
||||
|
||||
exports.listitem = ListItemWidget;
|
||||
|
||||
})();
|
||||
})();
|
||||
@@ -143,9 +143,11 @@ NavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {
|
||||
Handle a tm-navigate event
|
||||
*/
|
||||
NavigatorWidget.prototype.handleNavigateEvent = function(event) {
|
||||
this.addToStory(event.navigateTo,event.navigateFromTitle);
|
||||
if(!event.navigateSuppressNavigation) {
|
||||
this.addToHistory(event.navigateTo,event.navigateFromClientRect);
|
||||
if(event.navigateTo) {
|
||||
this.addToStory(event.navigateTo,event.navigateFromTitle);
|
||||
if(!event.navigateSuppressNavigation) {
|
||||
this.addToHistory(event.navigateTo,event.navigateFromClientRect);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
@@ -208,8 +210,11 @@ NavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {
|
||||
var title = event.param || event.tiddlerTitle,
|
||||
tiddler = this.wiki.getTiddler(title),
|
||||
storyList = this.getStoryList(),
|
||||
originalTitle = tiddler.fields["draft.of"],
|
||||
originalTitle = tiddler ? tiddler.fields["draft.of"] : "",
|
||||
confirmationTitle;
|
||||
if(!tiddler) {
|
||||
return false;
|
||||
}
|
||||
// Check if the tiddler we're deleting is in draft mode
|
||||
if(originalTitle) {
|
||||
// If so, we'll prompt for confirmation referencing the original tiddler
|
||||
@@ -333,12 +338,12 @@ NavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {
|
||||
// Flip the specified tiddler from draft back to the original
|
||||
var draftTitle = event.param || event.tiddlerTitle,
|
||||
draftTiddler = this.wiki.getTiddler(draftTitle),
|
||||
originalTitle = draftTiddler.fields["draft.of"],
|
||||
originalTiddler = this.wiki.getTiddler(originalTitle),
|
||||
storyList = this.getStoryList();
|
||||
originalTitle = draftTiddler && draftTiddler.fields["draft.of"];
|
||||
if(draftTiddler && originalTitle) {
|
||||
// Ask for confirmation if the tiddler text has changed
|
||||
var isConfirmed = true;
|
||||
var isConfirmed = true,
|
||||
originalTiddler = this.wiki.getTiddler(originalTitle),
|
||||
storyList = this.getStoryList();
|
||||
if(this.wiki.isDraftModified(draftTitle)) {
|
||||
isConfirmed = confirm($tw.language.getString(
|
||||
"ConfirmCancelTiddler",
|
||||
|
||||
@@ -30,10 +30,17 @@ RevealWidget.prototype.render = function(parent,nextSibling) {
|
||||
this.parentDomNode = parent;
|
||||
this.computeAttributes();
|
||||
this.execute();
|
||||
var domNode = this.document.createElement(this.parseTreeNode.isBlock ? "div" : "span");
|
||||
var tag = this.parseTreeNode.isBlock ? "div" : "span";
|
||||
if(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {
|
||||
tag = this.revealTag;
|
||||
}
|
||||
var domNode = this.document.createElement(tag);
|
||||
var classes = this["class"].split(" ") || [];
|
||||
classes.push("tc-reveal");
|
||||
domNode.className = classes.join(" ");
|
||||
if(this.style) {
|
||||
domNode.setAttribute("style",this.style);
|
||||
}
|
||||
parent.insertBefore(domNode,nextSibling);
|
||||
this.renderChildren(domNode,null);
|
||||
if(!domNode.isTiddlyWikiFakeDom && this.type === "popup" && this.isOpen) {
|
||||
@@ -83,10 +90,12 @@ Compute the internal state of the widget
|
||||
RevealWidget.prototype.execute = function() {
|
||||
// Get our parameters
|
||||
this.state = this.getAttribute("state");
|
||||
this.revealTag = this.getAttribute("tag");
|
||||
this.type = this.getAttribute("type");
|
||||
this.text = this.getAttribute("text");
|
||||
this.position = this.getAttribute("position");
|
||||
this["class"] = this.getAttribute("class","");
|
||||
this.style = this.getAttribute("style","");
|
||||
this["default"] = this.getAttribute("default","");
|
||||
this.animate = this.getAttribute("animate","no");
|
||||
this.retain = this.getAttribute("retain","no");
|
||||
|
||||
@@ -171,7 +171,7 @@ Widget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue)
|
||||
else for(var i=0; i<actualParams.length; ++i) {
|
||||
args.push(actualParams[i].value);
|
||||
}
|
||||
return macro.run.apply(this,args).toString();
|
||||
return (macro.run.apply(this,args) || "").toString();
|
||||
} else {
|
||||
return defaultValue;
|
||||
}
|
||||
@@ -476,19 +476,30 @@ Widget.prototype.removeChildDomNodes = function() {
|
||||
};
|
||||
|
||||
/*
|
||||
Invoke any action widgets that are immediate children of this widget
|
||||
Invoke the action widgets that are descendents of the current widget.
|
||||
*/
|
||||
Widget.prototype.invokeActions = function(event) {
|
||||
Widget.prototype.invokeActions = function(triggeringWidget,event) {
|
||||
var handled = false;
|
||||
// For each child widget
|
||||
for(var t=0; t<this.children.length; t++) {
|
||||
var child = this.children[t];
|
||||
if(child.invokeAction && child.invokeAction(this,event)) {
|
||||
// Invoke the child if it is an action widget
|
||||
if(child.invokeAction && child.invokeAction(triggeringWidget,event)) {
|
||||
handled = true;
|
||||
}
|
||||
// Propagate through through the child if it permits it
|
||||
if(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {
|
||||
handled = true;
|
||||
}
|
||||
}
|
||||
return handled;
|
||||
};
|
||||
|
||||
|
||||
Widget.prototype.allowActionPropagation = function() {
|
||||
return true;
|
||||
};
|
||||
|
||||
exports.widget = Widget;
|
||||
|
||||
})();
|
||||
|
||||
@@ -211,7 +211,7 @@ exports.importTiddler = function(tiddler) {
|
||||
// Check if we're dealing with a plugin
|
||||
if(tiddler && tiddler.hasField("plugin-type") && tiddler.hasField("version") && existingTiddler && existingTiddler.hasField("plugin-type") && existingTiddler.hasField("version")) {
|
||||
// Reject the incoming plugin if it is older
|
||||
if($tw.utils.checkVersions(existingTiddler.fields.version,tiddler.fields.version)) {
|
||||
if(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -316,6 +316,14 @@ Sort an array of tiddler titles by a specified field
|
||||
exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric) {
|
||||
var self = this;
|
||||
titles.sort(function(a,b) {
|
||||
var x,y,
|
||||
compareNumbers = function(x,y) {
|
||||
var result =
|
||||
isNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :
|
||||
!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :
|
||||
(isDescending ? y - x : x - y);
|
||||
return result;
|
||||
};
|
||||
if(sortField !== "title") {
|
||||
var tiddlerA = self.getTiddler(a),
|
||||
tiddlerB = self.getTiddler(b);
|
||||
@@ -330,10 +338,10 @@ exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,is
|
||||
b = "";
|
||||
}
|
||||
}
|
||||
if(isNumeric) {
|
||||
a = Number(a);
|
||||
b = Number(b);
|
||||
return isDescending ? b - a : a - b;
|
||||
x = Number(a);
|
||||
y = Number(b);
|
||||
if(isNumeric && (!isNaN(x) || !isNaN(y))) {
|
||||
return compareNumbers(x,y);
|
||||
} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {
|
||||
return isDescending ? b - a : a - b;
|
||||
} else {
|
||||
@@ -662,7 +670,7 @@ exports.setTiddlerData = function(title,data,fields) {
|
||||
newFields.type = "application/json";
|
||||
newFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);
|
||||
}
|
||||
this.addTiddler(new $tw.Tiddler(existingTiddler,fields,newFields,this.getModificationFields()));
|
||||
this.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -749,8 +757,8 @@ exports.old_parseText = function(type,text,options) {
|
||||
options = options || {};
|
||||
// Select a parser
|
||||
var Parser = $tw.Wiki.parsers[type];
|
||||
if(!Parser && $tw.config.fileExtensionInfo[type]) {
|
||||
Parser = $tw.Wiki.parsers[$tw.config.fileExtensionInfo[type].type];
|
||||
if(!Parser && $tw.utils.getFileExtensionInfo(type)) {
|
||||
Parser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];
|
||||
}
|
||||
if(!Parser) {
|
||||
Parser = $tw.Wiki.parsers[options.defaultType || "text/vnd.tiddlywiki"];
|
||||
@@ -897,6 +905,7 @@ Make a widget tree for transclusion
|
||||
title: target tiddler title
|
||||
options: as for wiki.makeWidget() plus:
|
||||
options.field: optional field to transclude (defaults to "text")
|
||||
options.mode: transclusion mode "inline" or "block"
|
||||
options.children: optional array of children for the transclude widget
|
||||
*/
|
||||
exports.makeTranscludeWidget = function(title,options) {
|
||||
@@ -916,6 +925,9 @@ exports.makeTranscludeWidget = function(title,options) {
|
||||
if(options.field) {
|
||||
parseTree.tree[0].children[0].attributes.field = {type: "string", value: options.field};
|
||||
}
|
||||
if(options.mode) {
|
||||
parseTree.tree[0].children[0].attributes.mode = {type: "string", value: options.mode};
|
||||
}
|
||||
if(options.children) {
|
||||
parseTree.tree[0].children[0].children = options.children;
|
||||
}
|
||||
@@ -1092,7 +1104,7 @@ exports.readFile = function(file,callback) {
|
||||
if(type === "" || !type) {
|
||||
var dotPos = file.name.lastIndexOf(".");
|
||||
if(dotPos !== -1) {
|
||||
var fileExtensionInfo = $tw.config.fileExtensionInfo[file.name.substr(dotPos)];
|
||||
var fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));
|
||||
if(fileExtensionInfo) {
|
||||
type = fileExtensionInfo.type;
|
||||
}
|
||||
|
||||
@@ -62,8 +62,9 @@ sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #444444
|
||||
sidebar-tiddler-link-foreground: #7897f3
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #fffffffff
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #eeeeee
|
||||
tab-border-selected: #cccccc
|
||||
tab-border: #cccccc
|
||||
|
||||
@@ -62,6 +62,7 @@ sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #444444
|
||||
sidebar-tiddler-link-foreground: #5959c0
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: <<colour background>>
|
||||
tab-background: #ccccdd
|
||||
|
||||
@@ -62,6 +62,7 @@ sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: #999
|
||||
sidebar-tiddler-link-foreground-hover: #444444
|
||||
sidebar-tiddler-link-foreground: #d1d0d2
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #d8d8d8
|
||||
|
||||
@@ -62,6 +62,7 @@ sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #444444
|
||||
sidebar-tiddler-link-foreground: #999999
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #d8d8d8
|
||||
|
||||
109
core/palettes/DarkPhotos.tid
Normal file
109
core/palettes/DarkPhotos.tid
Normal file
@@ -0,0 +1,109 @@
|
||||
@@ -0,0 +1,107 @@
|
||||
created: 20150402111612188
|
||||
description: Good with dark photo backgrounds
|
||||
modified: 20150402112344080
|
||||
name: DarkPhotos
|
||||
tags: $:/tags/Palette
|
||||
title: $:/palettes/DarkPhotos
|
||||
type: application/x-tiddler-dictionary
|
||||
|
||||
alert-background: #ffe476
|
||||
alert-border: #b99e2f
|
||||
alert-highlight: #881122
|
||||
alert-muted-foreground: #b99e2f
|
||||
background: #ffffff
|
||||
blockquote-bar: <<colour muted-foreground>>
|
||||
code-background: #f7f7f9
|
||||
code-border: #e1e1e8
|
||||
code-foreground: #dd1144
|
||||
dirty-indicator: #ff0000
|
||||
download-background: #34c734
|
||||
download-foreground: <<colour background>>
|
||||
dragger-background: <<colour foreground>>
|
||||
dragger-foreground: <<colour background>>
|
||||
dropdown-background: <<colour background>>
|
||||
dropdown-border: <<colour muted-foreground>>
|
||||
dropdown-tab-background-selected: #fff
|
||||
dropdown-tab-background: #ececec
|
||||
dropzone-background: rgba(0,200,0,0.7)
|
||||
external-link-background-hover: inherit
|
||||
external-link-background-visited: inherit
|
||||
external-link-background: inherit
|
||||
external-link-foreground-hover: inherit
|
||||
external-link-foreground-visited: #0000aa
|
||||
external-link-foreground: #0000ee
|
||||
foreground: #333333
|
||||
message-background: #ecf2ff
|
||||
message-border: #cfd6e6
|
||||
message-foreground: #547599
|
||||
modal-backdrop: <<colour foreground>>
|
||||
modal-background: <<colour background>>
|
||||
modal-border: #999999
|
||||
modal-footer-background: #f5f5f5
|
||||
modal-footer-border: #dddddd
|
||||
modal-header-border: #eeeeee
|
||||
muted-foreground: #ddd
|
||||
notification-background: #ffffdd
|
||||
notification-border: #999999
|
||||
page-background: #f4f4f4
|
||||
pre-background: #f5f5f5
|
||||
pre-border: #cccccc
|
||||
primary: #5778d8
|
||||
sidebar-button-foreground: <<colour foreground>>
|
||||
sidebar-controls-foreground-hover: #ccf
|
||||
sidebar-controls-foreground: #fff
|
||||
sidebar-foreground-shadow: rgba(0,0,0, 0.5)
|
||||
sidebar-foreground: #fff
|
||||
sidebar-muted-foreground-hover: #444444
|
||||
sidebar-muted-foreground: #eee
|
||||
sidebar-tab-background-selected: rgba(255,255,255, 0.8)
|
||||
sidebar-tab-background: rgba(255,255,255, 0.4)
|
||||
sidebar-tab-border-selected: <<colour tab-border-selected>>
|
||||
sidebar-tab-border: <<colour tab-border>>
|
||||
sidebar-tab-divider: rgba(255,255,255, 0.2)
|
||||
sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #aaf
|
||||
sidebar-tiddler-link-foreground: #ddf
|
||||
site-title-foreground: #fff
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #d8d8d8
|
||||
tab-border-selected: #d8d8d8
|
||||
tab-border: #cccccc
|
||||
tab-divider: #d8d8d8
|
||||
tab-foreground-selected: <<colour tab-foreground>>
|
||||
tab-foreground: #666666
|
||||
table-border: #dddddd
|
||||
table-footer-background: #a8a8a8
|
||||
table-header-background: #f0f0f0
|
||||
tag-background: #ec6
|
||||
tag-foreground: #ffffff
|
||||
tiddler-background: <<colour background>>
|
||||
tiddler-border: <<colour background>>
|
||||
tiddler-controls-foreground-hover: #888888
|
||||
tiddler-controls-foreground-selected: #444444
|
||||
tiddler-controls-foreground: #cccccc
|
||||
tiddler-editor-background: #f8f8f8
|
||||
tiddler-editor-border-image: #ffffff
|
||||
tiddler-editor-border: #cccccc
|
||||
tiddler-editor-fields-even: #e0e8e0
|
||||
tiddler-editor-fields-odd: #f0f4f0
|
||||
tiddler-info-background: #f8f8f8
|
||||
tiddler-info-border: #dddddd
|
||||
tiddler-info-tab-background: #f8f8f8
|
||||
tiddler-link-background: <<colour background>>
|
||||
tiddler-link-foreground: <<colour primary>>
|
||||
tiddler-subtitle-foreground: #c0c0c0
|
||||
tiddler-title-foreground: #182955
|
||||
toolbar-new-button:
|
||||
toolbar-options-button:
|
||||
toolbar-save-button:
|
||||
toolbar-info-button:
|
||||
toolbar-edit-button:
|
||||
toolbar-close-button:
|
||||
toolbar-delete-button:
|
||||
toolbar-cancel-button:
|
||||
toolbar-done-button:
|
||||
untagged-background: #999999
|
||||
very-muted-foreground: #888888
|
||||
@@ -62,6 +62,7 @@ sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #ffbb99
|
||||
sidebar-tiddler-link-foreground: #cc0000
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #d8d8d8
|
||||
|
||||
@@ -42,7 +42,7 @@ modal-header-border: #eeeeee
|
||||
muted-foreground: #bbb
|
||||
notification-background: #ffffdd
|
||||
notification-border: #999999
|
||||
page-background: #ececec
|
||||
page-background: #f4f4f4
|
||||
pre-background: #f5f5f5
|
||||
pre-border: #cccccc
|
||||
primary: #5778d8
|
||||
@@ -53,15 +53,16 @@ sidebar-foreground-shadow: rgba(255,255,255, 0.8)
|
||||
sidebar-foreground: #acacac
|
||||
sidebar-muted-foreground-hover: #444444
|
||||
sidebar-muted-foreground: #c0c0c0
|
||||
sidebar-tab-background-selected: #ececec
|
||||
sidebar-tab-background: <<colour tab-background>>
|
||||
sidebar-tab-background-selected: #f4f4f4
|
||||
sidebar-tab-background: #e0e0e0
|
||||
sidebar-tab-border-selected: <<colour tab-border-selected>>
|
||||
sidebar-tab-border: <<colour tab-border>>
|
||||
sidebar-tab-divider: #e4e4e4
|
||||
sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground-selected:
|
||||
sidebar-tab-foreground: <<colour tab-foreground>>
|
||||
sidebar-tiddler-link-foreground-hover: #444444
|
||||
sidebar-tiddler-link-foreground: #999999
|
||||
site-title-foreground: <<colour tiddler-title-foreground>>
|
||||
static-alert-foreground: #aaaaaa
|
||||
tab-background-selected: #ffffff
|
||||
tab-background: #d8d8d8
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "$:/core",
|
||||
"description": "TiddlyWiki5 core plugin",
|
||||
"description": "TiddlyWiki5 core",
|
||||
"author": "JeremyRuston",
|
||||
"core-version": ">=5.0.0",
|
||||
"plugin-priority": "0",
|
||||
|
||||
@@ -12,6 +12,9 @@ type: text/vnd.tiddlywiki-html
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="generator" content="TiddlyWiki" />
|
||||
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
||||
<title>{{$:/core/wiki/title}}</title>
|
||||
|
||||
@@ -10,6 +10,9 @@ title: $:/core/templates/static.tiddler.html
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="generator" content="TiddlyWiki" />
|
||||
<meta name="tiddlywiki-version" content="`{{$:/core/templates/version}}`" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
|
||||
<link rel="stylesheet" href="static.css">
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
title: $:/AdvancedSearch
|
||||
icon: $:/core/images/advanced-search-button
|
||||
color: #bbb
|
||||
|
||||
<div class="tc-advanced-search">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]" "$:/core/ui/AdvancedSearch/System">>
|
||||
|
||||
9
core/ui/Components/tag-link.tid
Normal file
9
core/ui/Components/tag-link.tid
Normal file
@@ -0,0 +1,9 @@
|
||||
title: $:/core/ui/Components/tag-link
|
||||
|
||||
<$link>
|
||||
<$set name="backgroundColor" value={{!!color}}>
|
||||
<span style=<<tag-styles>> class="tc-tag-label">
|
||||
<$view field="title" format="text"/>
|
||||
</span>
|
||||
</$set>
|
||||
</$link>
|
||||
@@ -1,4 +1,6 @@
|
||||
title: $:/ControlPanel
|
||||
icon: $:/core/images/options-button
|
||||
color: #bbb
|
||||
|
||||
<div class="tc-control-panel">
|
||||
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" "$:/core/ui/ControlPanel/Info">>
|
||||
|
||||
116
core/ui/ControlPanel/Modals/AddPlugins.tid
Normal file
116
core/ui/ControlPanel/Modals/AddPlugins.tid
Normal file
@@ -0,0 +1,116 @@
|
||||
title: $:/core/ui/ControlPanel/Modals/AddPlugins
|
||||
subtitle: {{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Plugins/
|
||||
|
||||
\define install-plugin-button()
|
||||
<$button>
|
||||
<$action-sendmessage $message="tm-load-plugin-from-library" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>
|
||||
<$list filter="[<assetInfo>get[original-title]get[version]]" variable="installedVersion" emptyMessage="""install""">
|
||||
reinstall
|
||||
</$list>
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\define popup-state-macro()
|
||||
$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
|
||||
\end
|
||||
|
||||
\define display-plugin-info(type)
|
||||
<$set name="popup-state" value=<<popup-state-macro>>>
|
||||
<div class="tc-plugin-info">
|
||||
<div class="tc-plugin-info-chunk tc-small-icon">
|
||||
<$reveal type="nomatch" state=<<popup-state>> text="yes">
|
||||
<$button class="tc-btn-invisible tc-btn-dropdown" set=<<popup-state>> setTo="yes">
|
||||
{{$:/core/images/right-arrow}}
|
||||
</$button>
|
||||
</$reveal>
|
||||
<$reveal type="match" state=<<popup-state>> text="yes">
|
||||
<$button class="tc-btn-invisible tc-btn-dropdown" set=<<popup-state>> setTo="no">
|
||||
{{$:/core/images/down-arrow}}
|
||||
</$button>
|
||||
</$reveal>
|
||||
</div>
|
||||
<div class="tc-plugin-info-chunk">
|
||||
<$list filter="[<assetInfo>has[icon]]" emptyMessage="""<$transclude tiddler="$:/core/images/plugin-generic-$type$"/>""">
|
||||
<img src={{$(assetInfo)$!!icon}}/>
|
||||
</$list>
|
||||
</div>
|
||||
<div class="tc-plugin-info-chunk">
|
||||
<h1><$view tiddler=<<assetInfo>> field="description"/></h1>
|
||||
<h2><$view tiddler=<<assetInfo>> field="original-title"/></h2>
|
||||
<div><em><$view tiddler=<<assetInfo>> field="version"/></em></div>
|
||||
</div>
|
||||
<div class="tc-plugin-info-chunk">
|
||||
<<install-plugin-button>>
|
||||
</div>
|
||||
</div>
|
||||
<$reveal type="match" text="yes" state=<<popup-state>>>
|
||||
<div class="tc-plugin-info-dropdown">
|
||||
<div class="tc-plugin-info-dropdown-message">
|
||||
<$list filter="[<assetInfo>get[original-title]get[version]]" variable="installedVersion" emptyMessage="""This plugin is not currently installed""">
|
||||
<em>
|
||||
This plugin is already installed at version <$text text=<<installedVersion>>/>
|
||||
</em>
|
||||
</$list>
|
||||
</div>
|
||||
<div class="tc-plugin-info-dropdown-body">
|
||||
<$transclude tiddler=<<assetInfo>> field="readme" mode="block"/>
|
||||
</div>
|
||||
</div>
|
||||
</$reveal>
|
||||
</$set>
|
||||
\end
|
||||
|
||||
\define load-plugin-library-button()
|
||||
<$button class="tc-btn-big-green">
|
||||
<$action-sendmessage $message="tm-load-plugin-library" url={{!!url}} infoTitlePrefix="$:/temp/RemoteAssetInfo/"/>
|
||||
{{$:/core/images/chevron-right}} open plugin library
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\define display-server-assets(type)
|
||||
Search: <$edit-text tiddler="""$:/temp/RemoteAssetSearch/$(currentTiddler)$""" default="" type="search" tag="input" focus="true"/>
|
||||
<$reveal state="""$:/temp/RemoteAssetSearch/$(currentTiddler)$""" type="nomatch" text="">
|
||||
<$button class="tc-btn-invisible">
|
||||
<$action-setfield $tiddler="""$:/temp/RemoteAssetSearch/$(currentTiddler)$""" $field="text" $value=""/>
|
||||
{{$:/core/images/close-button}}
|
||||
</$button>
|
||||
</$reveal>
|
||||
<div class="tc-plugin-library-listing">
|
||||
<$list filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]" variable="assetInfo">
|
||||
<<display-plugin-info "$type$">>
|
||||
</$list>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define display-server-connection()
|
||||
<$list filter="[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]" variable="connectionTiddler" emptyMessage=<<load-plugin-library-button>>>
|
||||
|
||||
<<tabs "[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]" "$:/core/ui/ControlPanel/Plugins/Add/Plugins">>
|
||||
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define plugin-library-listing()
|
||||
<$list filter="[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]">
|
||||
<div class="tc-plugin-library">
|
||||
|
||||
!! <$link><$transclude field="caption"><$view field="title"/></$transclude></$link>
|
||||
|
||||
//<$view field="url"/>//
|
||||
|
||||
<$transclude/>
|
||||
|
||||
<<display-server-connection>>
|
||||
</div>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
<$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]">
|
||||
|
||||
<div>
|
||||
<<plugin-library-listing>>
|
||||
</div>
|
||||
|
||||
</$importvariables>
|
||||
@@ -3,20 +3,25 @@ tags: $:/tags/ControlPanel
|
||||
caption: {{$:/language/ControlPanel/Plugins/Caption}}
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Plugins/
|
||||
|
||||
\define popup-state-macro()
|
||||
$(qualified-state)$-$(currentTiddler)$
|
||||
\end
|
||||
|
||||
\define tabs-state-macro()
|
||||
$(popup-state)$-$(pluginInfoType)$
|
||||
\end
|
||||
|
||||
\define plugin-icon-title()
|
||||
$(currentTiddler)$/icon
|
||||
\end
|
||||
|
||||
\define plugin-disable-title()
|
||||
$:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
\end
|
||||
|
||||
\define plugin-table-body(type,disabledMessage)
|
||||
<div class="tc-plugin-info-chunk">
|
||||
<div class="tc-plugin-info-chunk tc-small-icon">
|
||||
<$reveal type="nomatch" state=<<popup-state>> text="yes">
|
||||
<$button class="tc-btn-invisible tc-btn-dropdown" set=<<popup-state>> setTo="yes">
|
||||
{{$:/core/images/right-arrow}}
|
||||
@@ -34,17 +39,18 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
</$transclude>
|
||||
</div>
|
||||
<div class="tc-plugin-info-chunk">
|
||||
<div>
|
||||
<h1>
|
||||
''<$view field="description"><$view field="title"/></$view>'' $disabledMessage$
|
||||
</div>
|
||||
<div>
|
||||
</h1>
|
||||
<h2>
|
||||
<$view field="title"/>
|
||||
</div>
|
||||
<div>
|
||||
<$view field="version"/>
|
||||
</div>
|
||||
</h2>
|
||||
<h2>
|
||||
<div><em><$view field="version"/></em></div>
|
||||
</h2>
|
||||
</div>
|
||||
\end
|
||||
|
||||
\define plugin-table(type)
|
||||
<$set name="qualified-state" value=<<qualify "$:/state/plugin-info">>>
|
||||
<$list filter="[!has[draft.of]plugin-type[$type$]sort[description]]" emptyMessage=<<lingo "Empty/Hint">>>
|
||||
@@ -61,6 +67,7 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
</$reveal>
|
||||
<$reveal type="match" text="yes" state=<<popup-state>>>
|
||||
<div class="tc-plugin-info-dropdown">
|
||||
<div class="tc-plugin-info-dropdown-body">
|
||||
<$list filter="[all[current]] -[[$:/core]]">
|
||||
<div style="float:right;">
|
||||
<$reveal type="nomatch" state=<<plugin-disable-title>> text="yes">
|
||||
@@ -82,20 +89,17 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
|
||||
No information provided
|
||||
</$reveal>
|
||||
</div>
|
||||
</div>
|
||||
</$reveal>
|
||||
</$set>
|
||||
</$list>
|
||||
</$set>
|
||||
\end
|
||||
|
||||
! <<lingo Plugin/Prompt>>
|
||||
<$button message="tm-modal" param="$:/core/ui/ControlPanel/Modals/AddPlugins" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class="tc-btn-big-green" style="background:blue;">
|
||||
{{$:/core/images/download-button}} <<lingo Add/Caption>>
|
||||
</$button>
|
||||
|
||||
<<plugin-table plugin>>
|
||||
<<lingo Installed/Hint>>
|
||||
|
||||
! <<lingo Theme/Prompt>>
|
||||
|
||||
<<plugin-table theme>>
|
||||
|
||||
! <<lingo Language/Prompt>>
|
||||
|
||||
<<plugin-table language>>
|
||||
<<tabs "[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]" "$:/core/ui/ControlPanel/Plugins/Installed/Plugins">>
|
||||
|
||||
4
core/ui/ControlPanel/Plugins/Add/Languages.tid
Normal file
4
core/ui/ControlPanel/Plugins/Add/Languages.tid
Normal file
@@ -0,0 +1,4 @@
|
||||
title: $:/core/ui/ControlPanel/Plugins/Add/Languages
|
||||
caption: {{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]"/>)
|
||||
|
||||
<<display-server-assets language>>
|
||||
4
core/ui/ControlPanel/Plugins/Add/Plugins.tid
Normal file
4
core/ui/ControlPanel/Plugins/Add/Plugins.tid
Normal file
@@ -0,0 +1,4 @@
|
||||
title: $:/core/ui/ControlPanel/Plugins/Add/Plugins
|
||||
caption: {{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]"/>)
|
||||
|
||||
<<display-server-assets plugin>>
|
||||
4
core/ui/ControlPanel/Plugins/Add/Themes.tid
Normal file
4
core/ui/ControlPanel/Plugins/Add/Themes.tid
Normal file
@@ -0,0 +1,4 @@
|
||||
title: $:/core/ui/ControlPanel/Plugins/Add/Themes
|
||||
caption: {{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]"/>)
|
||||
|
||||
<<display-server-assets theme>>
|
||||
4
core/ui/ControlPanel/Plugins/Installed/Languages.tid
Normal file
4
core/ui/ControlPanel/Plugins/Installed/Languages.tid
Normal file
@@ -0,0 +1,4 @@
|
||||
title: $:/core/ui/ControlPanel/Plugins/Installed/Languages
|
||||
caption: {{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter="[!has[draft.of]plugin-type[language]]"/>)
|
||||
|
||||
<<plugin-table language>>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user