1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-22 10:54:46 +00:00

Compare commits

...

732 Commits

Author SHA1 Message Date
Jermolene
39fac54e06 Version number update for 5.0.15-beta 2014-08-20 22:58:09 +01:00
Jermolene
d0654c3211 Docs updates for 5.0.15 2014-08-20 22:56:25 +01:00
Jermolene
8041e3bef2 Add a sort parameter to the TOC macro
As requested by @giffmex
2014-08-20 22:48:07 +01:00
Jermolene
81a426659e Extraneous wikilink in docs 2014-08-20 22:25:55 +01:00
Jermolene
7c3bac4780 Fix fill star icon 2014-08-20 22:25:33 +01:00
Jermolene
bbd0f7841b Move improvement banner to the edit template
Thanks to @xcazin for the most excellent suggestion.
2014-08-20 22:07:39 +01:00
Jermolene
085e60c0f7 Improved documentation on improving the documentation 2014-08-20 22:07:12 +01:00
Jermolene
34d22f631d Temporarily disable the improvement banner
We should perhaps discuss this at the next hangout…
2014-08-20 20:46:59 +01:00
Jermolene
73ef104b11 Fix regression with tag label styling in edit template 2014-08-20 20:46:24 +01:00
Jermolene
56bf3924f5 Tweaks to the improvement banner
I think it looks pretty terrible, and am minded not to include it in
5.0.15. Interested in other views.
2014-08-20 17:06:39 +01:00
Jermolene
2bbe9f76ec Block temporary state tiddlers from import/upgrade 2014-08-20 13:52:59 +01:00
Jeremy Ruston
a9279fcfed Merge pull request #742 from xcazin/fr-FR
Recent fr-FR translations plus small typo in RevealWidget documentation
2014-08-20 13:40:52 +01:00
Jermolene
b0c6babd8d Add banner soliciting documentation improvements
A first pass
2014-08-20 11:25:56 +01:00
Jermolene
4e65bbc405 Add star image 2014-08-20 11:25:30 +01:00
Jermolene
c912fed55d Use a JSON tiddler for $:/config/OriginalTiddlerPaths
Otherwise things go wrong when we have tiddler titles containing colons
2014-08-20 10:11:40 +01:00
Jermolene
1075bd2084 Add content to "Contents" tiddler
Leaving it with no text content means that it triggers a lazy load with
the client server edition
2014-08-20 10:03:40 +01:00
Jermolene
a105b52399 Refactor saver handler
Fixing problems caused by c4b76ceb0b:

* We still need to initialise the saver-handler even when syncing to a
server, otherwise offline snapshots can’t be saved
* We need to override the default save template a bit further up the
stack, to avoid the server side serving the offline version of the wiki
at `/`
2014-08-20 10:02:44 +01:00
Jermolene
fbf307c648 Add alt attribute to image widget 2014-08-20 10:00:34 +01:00
Xavier Cazin
c16f5b6b67 Typo in RevealWidget documentation 2014-08-19 17:08:15 +02:00
Jermolene
1973df0809 Update release note 2014-08-19 16:03:31 +01:00
Xavier Cazin
a0e61b89a3 fr-FR translation for the Drop message 2014-08-19 16:52:19 +02:00
Xavier Cazin
12f894df7c fr-FR translation for Refresh and Home button strings 2014-08-19 16:51:34 +02:00
Jermolene
0dfe23e0db Rename tw-refresh message to tw-browser-refresh 2014-08-19 13:11:18 +01:00
Jermolene
25777b147f Make dropzone text translateable
Also make the text sticky for browsers that support it, ensuring that
it is always visible even after scrolling
2014-08-19 13:07:57 +01:00
Jermolene
58730b7452 Add selective expandable table of contents macro
And improve the layout of the examples
2014-08-19 12:30:22 +01:00
Jermolene
c4b76ceb0b Improve offline saving with TiddlyWeb
Now the usual “save changes” button in the sidebar will save an offline
copy of the wiki that excludes the TiddlyWeb plugin. Previously, this
functionality was only available in the control panel, leading to
several problems such as that discussed here:

https://groups.google.com/d/topic/tiddlywikidev/U61pO-TR854/discussion
2014-08-19 12:20:26 +01:00
Jermolene
920e11e792 Introduce refresh button and revert home button
Now the home button behaves as it did in 5.0.13, and the new refresh
button does a full page refresh.
2014-08-19 12:12:36 +01:00
Jermolene
074cbf2606 Release note update 2014-08-18 21:48:03 +01:00
Jermolene
1e1622273b More table of content macro docs 2014-08-18 21:44:31 +01:00
Jermolene
bd56e4b960 Fix ordering for the table of contents example 2014-08-18 21:44:22 +01:00
Jermolene
8cf726275c First pass at table of contents macros
Introduce macros for automatically generating table of contents
2014-08-18 20:52:36 +01:00
Jermolene
a2acb1462b Update release note 2014-08-18 20:43:16 +01:00
Jermolene
fe6623d7fe Restore foreground colour for sidebar tag pills 2014-08-18 13:22:38 +01:00
Jermolene
a3d0f84ff7 Update startup modules diagram 2014-08-18 10:45:27 +01:00
Jermolene
c57b009968 Simpler default defaulttiddlers 2014-08-18 10:27:48 +01:00
Jermolene
727638c12d Clean up CSS macros
Move the CSS macros into global macros, and allow the colour macro to
fallback to the vanilla palette if the required colour isn’t found in
the current palette.
2014-08-18 10:14:19 +01:00
Jermolene
a637af022d Fix problem with parseTextReference not recognising missing indices 2014-08-18 10:13:30 +01:00
Jermolene
d7cb82d65d Add GuerillaWiki docs 2014-08-17 15:10:43 +01:00
Jermolene
bea83bfe55 Fix problem with refreshing the edit widget 2014-08-16 15:01:04 +01:00
Jermolene
bba3fe586b Fix padding for plugin dropdown 2014-08-16 14:44:46 +01:00
Jermolene
4044ba0d2d Add full download link to GettingStarted 2014-08-16 14:44:11 +01:00
Jeremy Ruston
d76352d873 Merge pull request #736 from BramChen/master
Update chinese translations
2014-08-16 09:42:03 +01:00
Jeremy Ruston
a4cfc17d7d Merge pull request #737 from xcazin/fr-FR
More fr-FR translations for Plugins-related strings in ControlPanel
2014-08-16 09:41:50 +01:00
Bram Chen
f8ad9fd590 Add chinese translations for the new functionality of enable/disable plugins in control panel 2014-08-16 09:05:45 +08:00
Xavier Cazin
7ff7f5508c More fr-FR translations for Plugins-related strings in ControlPanel 2014-08-15 22:54:58 +02:00
Jeremy Ruston
dd8d6913fc Merge pull request #734 from xcazin/fr-FR
fr-FR translations for new translateable strings since 5.0.14
2014-08-15 21:19:17 +01:00
Jermolene
87b7677a0f Release note update 2014-08-15 21:15:28 +01:00
Jermolene
32a7ee2683 Make it possible to disable plugins 2014-08-15 21:10:40 +01:00
Xavier Cazin
9e86dd07bc fr-FR translation of the Readme file for the core plugin 2014-08-15 19:20:21 +02:00
Xavier Cazin
850378ceb2 fr-FR translation for Unsaved Changes Warning 2014-08-15 19:07:31 +02:00
Xavier Cazin
6b91c354c3 Merge remote-tracking branch 'upstream/master' into fr-FR 2014-08-15 18:59:28 +02:00
Jermolene
04e049df97 Add message for empty plugin lists 2014-08-15 16:48:02 +01:00
Jermolene
18592fe8f8 Fix problem with edit widget not refreshing
One symptom of this problem was that changing the type field of a
tiddler didn’t immediately switch to the bitmap editor
2014-08-15 10:06:52 +01:00
Jermolene
0aeb9d36a0 Fix content type typo 2014-08-15 10:06:19 +01:00
Jermolene
95926b85b9 Move editor type mappings into a single file 2014-08-15 10:06:05 +01:00
Jermolene
ea83149746 Release note updates 2014-08-15 09:52:57 +01:00
Jermolene
c0c52f5bcb Revert to putting the version number in the corner ribbon
Based on two bits of feedback:

1. The version number should be displayed prominently on the page
2. Ordinary users don’t know what “Find me on GitHub” means
2014-08-15 09:50:33 +01:00
Jermolene
e88dcfacd6 More release note updates 2014-08-15 09:42:54 +01:00
Jermolene
c8830d32f7 Fixed problem with building TW under Windows
Fixes #717

The issue was that under Windows we generate text nodes that contained
CRLF as a linebreak (rather than just LF as usual).

The subtle problem is that when these strings are placed in the DOM via
createTextNode(), the CR character is treated as a printable character,
not whitespace. When creating DOM notes with innerHTML or as part of a
static HTML document the HTML parser will strip out the CR characters.

The hacky solution is to manually remove CRs before building the text
node.
2014-08-15 09:40:22 +01:00
Jermolene
592cdc4617 Release note updates 2014-08-15 09:36:36 +01:00
Jermolene
837f36aa86 Docs update 2014-08-14 12:00:12 +01:00
Jermolene
9e85ddfec7 Ensure we have a default language in empty.html 2014-08-14 12:00:07 +01:00
Jermolene
f75af2c983 Separate the saver handling out of the syncer 2014-08-14 11:43:07 +01:00
Jermolene
27f1f82a70 Rejigging syncer structuring
The goal is to separate out the saver handling from the syncadaptor
handling; it will take a few steps to get there
2014-08-14 11:12:25 +01:00
Jermolene
82860aea33 Tweaked tag button 2014-08-14 11:10:55 +01:00
Jeremy Ruston
24998f2990 Merge pull request #731 from BramChen/master
Update chinese translations
2014-08-14 08:56:58 +01:00
Jermolene
d57446f1e4 Remove $tw.syncer global from syncer.js 2014-08-14 08:54:31 +01:00
Jermolene
4b05608ad5 Add tag manager button 2014-08-14 08:49:03 +01:00
Bram Chen
fd61814a7d Add chinese translations of unsaved changes message 2014-08-14 15:20:45 +08:00
Bram Chen
deddb4cc5f Merge remote-tracking branch 'upstream/master' 2014-08-14 14:36:37 +08:00
Jermolene
35fcdd270e Move syncer event handlers into syncer module 2014-08-13 20:25:23 +01:00
Jermolene
449edf99b5 Fix rootwidget handling 2014-08-13 20:20:58 +01:00
Jermolene
7c1cb97f7f Move syncer-browser startup handling into syncer.js 2014-08-13 20:07:08 +01:00
Jermolene
d16bff7787 Move construction of rootwidget into main startup 2014-08-13 20:06:44 +01:00
Jermolene
34461cb2fe Fix unclickable download link in upgrade wizard 2014-08-13 19:59:48 +01:00
Jermolene
c9ce606b7c Move the unsaved changes warning into the syncer 2014-08-13 19:29:00 +01:00
Jermolene
57ab9f6167 Translatability for the unsaved changes message
Another bit of #491
2014-08-13 19:14:23 +01:00
Jermolene
2bdf84e58f Preparing for 5.0.15-beta 2014-08-13 19:13:30 +01:00
Jermolene
932d3950c8 Version number update for 5.0.14-beta 2014-08-13 17:12:42 +01:00
Jermolene
554f235305 Update dates for 5.0.14 2014-08-13 17:09:49 +01:00
Jermolene
bf748eafec Correct width for vertical tab content 2014-08-13 17:06:18 +01:00
Bram Chen
4b0e0475ea Merge remote-tracking branch 'upstream/master' 2014-08-12 11:32:55 +08:00
Jermolene
65014a8d6c Docs updates 2014-08-11 23:48:29 +01:00
Jermolene
65b2852c7f Release note update 2014-08-11 17:55:24 +01:00
Bram Chen
0d3dc5e10e Merge remote-tracking branch 'upstream/master' 2014-08-11 21:49:54 +08:00
Jermolene
b2e1dd2138 Allow whitespace after first line of multiline macro
Fixes the remaining part of #482
2014-08-11 13:52:10 +01:00
Jermolene
57878631e4 Don't sync the pending import tiddler to the server 2014-08-11 13:38:10 +01:00
Jermolene
1c44ea8941 More widget message documentation 2014-08-11 13:17:11 +01:00
Bram Chen
d608462ae5 Merge remote-tracking branch 'upstream/master' 2014-08-10 19:35:21 +08:00
Jeremy Ruston
c38d682d7d Merge pull request #725 from BramChen/master
Update chinese translations
2014-08-10 12:24:50 +01:00
Jeremy Ruston
7a18417d81 Merge pull request #692 from ssokolow/issue-692
"Manually create an external image" instructions do not work 5.0.14-prerelease
2014-08-10 12:20:58 +01:00
Jermolene
d7aeb7e932 Docs update 2014-08-10 12:20:46 +01:00
Jermolene
be8c753f28 Fix formatting of edit fields 2014-08-10 09:13:56 +01:00
Jermolene
1892f33ae6 Hide "revision" and "bag" fields from field editor 2014-08-10 09:13:48 +01:00
Jermolene
af70f7be6b An export button
The plan is to have dropdowns of export formats for both individual
tiddlers and the whole page.
2014-08-10 08:54:12 +01:00
Jermolene
961089f266 Remove obsolete control panel localisable strings
My apologies to the translators!
2014-08-10 08:43:28 +01:00
Bram Chen
d7e1b68679 Merge remote-tracking branch 'upstream/master' 2014-08-10 07:55:39 +08:00
Stephan Sokolow
2bf5398eaa Add an attention-drawing warning regarding the spelling of _canonical_uri 2014-08-09 17:17:57 -04:00
Jermolene
69de66ef80 Avoid localisable strings in the tag manager icon dropdown 2014-08-09 20:52:31 +01:00
Jermolene
e74a598aeb Better organisation for the tag image dropdown 2014-08-09 20:50:28 +01:00
Bram Chen
d0e33cb2d9 Merge remote-tracking branch 'upstream/master' 2014-08-09 20:34:02 +08:00
Jermolene
f6d7d87a3d Add icon previews to tag manager 2014-08-09 13:12:23 +01:00
Jermolene
ba0accf4f5 Docs updates 2014-08-09 12:41:02 +01:00
Jermolene
c590f9de8b More formatting improvements for plugins control panel 2014-08-09 11:54:07 +01:00
Bram Chen
4379c57ffa Merge remote-tracking branch 'upstream/master' 2014-08-09 14:03:58 +08:00
Jermolene
2ff2092615 More improvements to control panel plugin formatting 2014-08-08 17:19:48 +01:00
Jermolene
5e06ef871a Docs update 2014-08-08 16:48:40 +01:00
Jermolene
76914c4045 Minor icon tweaks 2014-08-08 16:35:48 +01:00
Jermolene
bcf89d533d Docs update 2014-08-08 16:35:33 +01:00
Jermolene
cc4552f544 Readme update 2014-08-08 16:35:28 +01:00
Jermolene
878689f92e Improved formatting for control panel plugins 2014-08-08 16:35:17 +01:00
Jermolene
2526bfb078 Disable wikilinking when preceded with dash or underscore
“HelloThere” in “My-HelloThere” shouldn’t be wikified.

Part of #337
2014-08-08 16:20:15 +01:00
Jermolene
f8548cc8f2 Stop classifyinh "÷" (\u00f7) as an upper case letter
Part of #337
2014-08-08 16:12:23 +01:00
Jermolene
9c8564d5b0 Stop classifying "×" (\u00d7) as a lower case letter
Part of #337
2014-08-08 16:09:56 +01:00
Jermolene
d7390dbbe1 Remove support for underscore and dash in wikilinks
Starting to fix #337
2014-08-08 11:13:41 +01:00
Jermolene
bd92dc3692 Improve plugin tab layout
It’s still a bit of a mess, and the vertical alignment isn’t working
properly
2014-08-08 10:01:21 +01:00
Jermolene
d01efe8698 Generic fallback icons for plugins 2014-08-08 10:00:59 +01:00
Jermolene
b64b1ab9cc Better icon for the core plugin 2014-08-08 10:00:40 +01:00
Bram Chen
38431507d2 Typos 2014-08-08 14:52:53 +08:00
Jermolene
3d7e43fa7a Move the Cecily icon 2014-08-08 07:50:00 +01:00
Jermolene
7cd13f7163 Give Cecily a readme 2014-08-08 07:49:48 +01:00
Bram Chen
737b6adc7d Add chinese translations of the core plugin readme 2014-08-08 14:40:12 +08:00
Jermolene
5260899d8b Relax requirement for newline after macro definition 2014-08-07 16:00:20 +01:00
Jermolene
7528f3d3cd Update plugin documentation 2014-08-07 15:50:02 +01:00
Jermolene
3842657392 Add/update plugin readmes
Notice that translators need to translate the core plugin readme
2014-08-07 15:49:52 +01:00
Jermolene
017ba740e5 Temporary icon for core plugin 2014-08-07 15:48:50 +01:00
Jermolene
2c4e9a64e9 Extend control panel plugins tab
Now we display plugin icons, and an accordion containing information
tabs exposed by the plugin.
2014-08-07 15:48:38 +01:00
Jermolene
c5b941dc1a Update author of German translations
Shouldn’t really credit @jermolene, since it is actually @pmario who
has done the work.
2014-08-07 15:46:30 +01:00
Jermolene
e38f924eb5 Update language flags to generic plugin icon convention 2014-08-07 15:45:56 +01:00
Jermolene
7953b95d13 Include subtiddler in transclusion recursion detection 2014-08-07 15:43:48 +01:00
Jermolene
08f775eac8 Recognise .HTA as synonym for .HTML files
Fixes #513
2014-08-04 15:12:33 +01:00
Jermolene
ec3827e5a4 Docs typo 2014-08-04 13:31:52 +01:00
Jermolene
edc14f44d2 Add latest release to table of contents 2014-08-04 13:31:45 +01:00
Jeremy Ruston
86bf754933 Merge pull request #724 from pmario/fix-austrian-flag
austrian flag now preserves aspect ratio in page toolbar button
2014-08-03 16:42:58 +01:00
Jeremy Ruston
826b0f58f0 Merge pull request #723 from pmario/de-DE
german translation till #3529625a6
2014-08-03 16:42:23 +01:00
Mario Pietsch
7d87d73b0b austrian flag now preserves aspect ratio in page toolbar button 2014-08-03 15:51:26 +02:00
Mario Pietsch
c3a1af8649 german translation till #3529625a6 2014-08-03 15:15:44 +02:00
Jermolene
3529625a6c Fix full screen button not supported 2014-08-03 12:35:53 +01:00
Jermolene
bf9a87dc0e Fix CR handling by HTML parser
@pmario and @welford - I’m not presenting this as a fix for #717
because I’m still not in a position to reproduce it.

However, I found this during a review of newline handling code, and
would be interested if it is implicated in the problems you are
reporting.
2014-08-03 09:43:22 +01:00
Jeremy Ruston
f7287718a7 Merge pull request #721 from BramChen/master
Update chinese translations
2014-08-03 09:33:38 +01:00
Jeremy Ruston
14fd8282dc Merge pull request #722 from xcazin/fr-FR
fr-FR translations for latest Buttons- and Import- related strings
2014-08-03 09:33:23 +01:00
Xavier Cazin
5a704de14a Merge branch 'master' into fr-FR 2014-08-03 09:27:42 +02:00
Bram Chen
5782bbf21f Add chinese translations for theme button 2014-08-03 12:18:56 +08:00
Jermolene
83bae92a29 Refine page control button colour 2014-08-02 22:51:04 +01:00
Jermolene
a0266bdb2a Fix table-of-contents button colour 2014-08-02 22:49:30 +01:00
Xavier Cazin
8779936182 fr-FR translation for Theme-related Button strings 2014-08-02 23:40:21 +02:00
Xavier Cazin
33b4851d0f Merge branch 'master' into fr-FR 2014-08-02 23:37:58 +02:00
Jermolene
1573f5840e Fix styling of "more" page button 2014-08-02 22:31:09 +01:00
Jermolene
1a9bd683e4 Add theme toolbar button 2014-08-02 22:13:54 +01:00
Jeremy Ruston
19028fee0a Merge pull request #719 from BramChen/master
Update chinese translations
2014-08-02 21:38:55 +01:00
Jermolene
fead253e9c Fix colour of import button 2014-08-02 21:37:48 +01:00
Xavier Cazin
87c899d842 fr-FR translation of the Import button strings. 2014-08-02 19:45:52 +02:00
Xavier Cazin
73e65d8590 New Import-related strings gives the opportunity to improve previous fr-FR translations 2014-08-02 19:44:17 +02:00
Xavier Cazin
2a6caa42fc Merge branch 'master' into fr-FR 2014-08-02 16:53:21 +02:00
Bram Chen
f09ba1114b Add chinese translations for import button
and update upgrader messages
2014-08-02 21:17:10 +08:00
Bram Chen
0f79dfea17 Merge remote-tracking branch 'upstream/master' 2014-08-02 21:11:09 +08:00
Jeremy Ruston
d5625ceaab Merge pull request #718 from BramChen/master
Update chinese translations
2014-08-02 13:43:25 +01:00
Bram Chen
3b612fe758 Merge remote-tracking branch 'upstream/master' 2014-08-02 20:41:05 +08:00
Jermolene
17f78ae9c1 Docs update 2014-08-02 13:39:02 +01:00
Jermolene
c8bba8caea Switch to "tw-tagged-" prefix for CSS tags 2014-08-02 13:38:39 +01:00
Jermolene
1d8e3ef288 Trim sidebar tools
Just got to add a theme button
2014-08-02 13:38:22 +01:00
Jermolene
9b9f7d32a0 Add plugin blocklist
Starting with blocking the old fullscreen plugin
2014-08-02 12:42:05 +01:00
Jermolene
748e4ccddc Update button image sizes 2014-08-02 12:28:09 +01:00
Jermolene
1cc85fa3cb Add description for github ribbon 2014-08-02 12:27:52 +01:00
Jermolene
bf39a45fc0 Fixes for import button position 2014-08-02 12:16:14 +01:00
Jermolene
bdd33be001 Fixes for file input styling 2014-08-02 12:05:01 +01:00
Jermolene
7816c1d944 Add import button 2014-08-02 11:59:07 +01:00
Jermolene
120203a8e0 Refactor sidebar tools tab
It’s going to be like the tools tab of tiddler info
2014-08-02 11:58:55 +01:00
Xavier Cazin
7316795238 fr-FR translation for StoryView related strings 2014-08-02 11:44:41 +02:00
Xavier Cazin
0d9acad12a Merge remote-tracking branch 'origin/fr-FR' into fr-FR 2014-08-02 11:27:59 +02:00
Bram Chen
dee4836ded Add chinese translations for fullscreen and storyview buttons 2014-08-02 10:24:08 +08:00
Jermolene
5291f33c84 Clearer current selection for language and storyview 2014-08-01 22:07:07 +01:00
Jermolene
9774c763b1 Add a storyview button 2014-08-01 21:40:13 +01:00
Xavier Cazin
b8fba1fcb9 fr-FR translation for Full-screen related strings 2014-08-01 19:28:46 +02:00
Jeremy Ruston
ae469c3f87 Merge pull request #702 from pmario/701-split-emphasis
splited emphasis.js into several modules to have fine grained control with rules pragma
2014-08-01 18:24:16 +01:00
Jermolene
c23f6af4b5 Add CSS classes for each tag 2014-08-01 17:48:26 +01:00
Jermolene
6a2f1be9d7 Typo in stylesheet processing 2014-08-01 17:48:11 +01:00
Jermolene
d357e1706c Allow visible edit fields to be configured
Create a tiddler “$:/config/EditTemplateFields/Visibility/fieldname”
with the text “hide” to hide a particular field
2014-08-01 17:03:53 +01:00
Jermolene
52bbd6d583 Add tick alongside current language 2014-08-01 16:52:24 +01:00
Jermolene
799a5b059a Move fullscreen button into core from plugin 2014-08-01 16:52:12 +01:00
Jeremy Ruston
6d06a54530 Merge pull request #714 from xcazin/fr-FR
fr-FR translations for latest modifications on Buttons- and ControlPanel- related strings
2014-08-01 12:30:10 +01:00
Jermolene
17ec15750e Add plugin-priority to German translations
We need to make sure de-AT is loaded after de-DE
2014-08-01 10:26:44 +01:00
Jermolene
688760c4b3 Add Chinese flags
Thanks @BramChen
2014-08-01 08:47:31 +01:00
Jeremy Ruston
e98d3f86c2 Merge pull request #716 from BramChen/master
Update chinese translations
2014-08-01 08:43:19 +01:00
Jermolene
099919f61e Fix whitespace issues 2014-08-01 08:43:00 +01:00
Jermolene
1bd4ab945d Reorganise acknowledgements
We want the core acknowledgements to be part of the plugin, rather than
the tw5.com edition
2014-08-01 08:42:52 +01:00
Bram Chen
0d8b82ce37 Update chinese translations
* Add language toolbar butotn
* Update descriptions of toolbar buttons
2014-08-01 11:01:28 +08:00
Xavier Cazin
a54476fd55 Last minute fr-FR correction to the language-related string 2014-07-31 20:08:19 +02:00
Xavier Cazin
a6da7bfe6a Plural also required in French when speaking of several toolbars 2014-07-31 19:55:41 +02:00
Xavier Cazin
50b73c5264 New additions and corrections for the fr-FR translation of the Buttons-related strings 2014-07-31 19:40:15 +02:00
Xavier Cazin
3ff66c9fef Merge branch 'fr-FR' of https://github.com/xcazin/TiddlyWiki5 into fr-FR 2014-07-31 19:22:25 +02:00
Jermolene
a61169e7e8 Fix problem with parsing missing tiddlers 2014-07-31 18:07:52 +01:00
Jermolene
789ba1e85d Add language toolbar button
Also adds flag icon for each language.

One limitation is that the language button doesn’t work properly when
accessed via the “more” menu of the page controls.

@BramChen - could you help me choose the most appropriate flags to use
for the variants of Chinese?
2014-07-31 18:07:37 +01:00
Jermolene
8adcfc97c5 Updated translation instructions 2014-07-31 09:40:25 +01:00
Jermolene
2d43003841 Add descriptions to toolbar buttons 2014-07-31 09:28:46 +01:00
Jermolene
3732f7b564 Correct description of home button 2014-07-31 09:16:28 +01:00
Jeremy Ruston
258c97d4b0 Merge pull request #713 from BramChen/master
Update chinese translations
2014-07-31 08:09:05 +01:00
Jermolene
f589e56692 Highlight savewiki text as well as icon 2014-07-31 08:07:31 +01:00
Bram Chen
1ba5d17613 Add chinese translations for unsaved changes indicator 2014-07-31 11:19:10 +08:00
Jermolene
18f1634802 Make the tw-home message refresh the page 2014-07-30 22:31:15 +01:00
Jermolene
c4c4c3d270 Add "more" page control button 2014-07-30 22:25:52 +01:00
Xavier Cazin
ac4a104bac Merge branch 'master' into fr-FR 2014-07-30 18:14:20 +02:00
Xavier Cazin
2a88ff9add fr-FR translation for the dirty-indicator description 2014-07-30 18:13:14 +02:00
Jermolene
56945d91d3 Add unsaved changes indicator
The “save” icon changes to red to indicate that there are unsaved
changes.
2014-07-30 16:46:13 +01:00
Xavier Cazin
a45690a876 fr-FR translations for the CloseAll-related strings 2014-07-30 14:46:05 +02:00
Xavier Cazin
121835a697 Merge branch 'master' into fr-FR 2014-07-30 14:43:39 +02:00
Xavier Cazin
1e30da2c6a fix for fr-FR Encryption-related strings 2014-07-30 13:28:11 +02:00
Jermolene
73d7e85e11 Ensure sticky titles theme works in edit mode 2014-07-30 12:19:15 +01:00
Jeremy Ruston
74bf2a053d Merge pull request #710 from BramChen/master
Update chinese translations for toolbars
2014-07-30 12:04:13 +01:00
Jeremy Ruston
ec2020e888 Merge pull request #712 from pmario/de-DE
german translation including commit 2380392
2014-07-30 12:03:58 +01:00
Mario Pietsch
0db4d93c21 add close all button 2014-07-30 12:59:25 +02:00
Mario Pietsch
0534270194 Merge branch 'master' of https://github.com/Jermolene/TiddlyWiki5 into de-DE 2014-07-30 12:57:42 +02:00
Bram Chen
d7767b1f1f Add chinese translations for close-all page control button 2014-07-30 18:56:10 +08:00
Jermolene
aea06f7df4 Fix checkbox setting text field to empty string 2014-07-30 11:52:45 +01:00
Bram Chen
8e91bdeca9 Merge remote-tracking branch 'upstream/master' 2014-07-30 18:47:05 +08:00
Jermolene
f4b834aa2a Add close-all page control button 2014-07-30 11:40:06 +01:00
Xavier Cazin
6af6a77c3c fr-FR translation of Encryption-related strings 2014-07-30 12:02:51 +02:00
Mario Pietsch
74038c0687 german translation including commit 2380392 2014-07-30 09:09:43 +02:00
Bram Chen
e689e904ac Update chinese translations for toolbars
* New 'home', 'more' and 'encryption' buttons
* New toolbar tabs in control panel
* New tools tab in tiddler info
2014-07-29 23:31:35 +08:00
Bram Chen
458071a2f1 Merge remote-tracking branch 'upstream/master' 2014-07-29 23:07:06 +08:00
Jeremy Ruston
8faf839bdd Merge pull request #709 from xcazin/fr-FR
fr-FR translations for new ToolBars-related & import-related strings
2014-07-29 15:43:22 +01:00
Jermolene
2380392f35 Add a page control for encryption 2014-07-29 15:43:10 +01:00
Xavier Cazin
7e7a0a18b9 fr-FR translations for new ToolBars-related strings 2014-07-29 16:09:25 +02:00
Bram Chen
e5e503fe17 Merge remote-tracking branch 'upstream/master' 2014-07-29 21:07:22 +08:00
Jermolene
4de1a1adbe Normalise titles of toolbar button tiddlers
The title shouldn’t include the toolbar name if we’re starting to have
buttons which can be placed on more than one toolbar.
2014-07-29 13:37:57 +01:00
Jermolene
0d5380d4a6 Set vertical alignment for SVG in buttons
Makes the buttons in the info panel “tools” tab look more like buttons
on Chrome.
2014-07-29 12:06:04 +01:00
Jermolene
4bb8c4e8a7 Add toolbar tabs to control panel 2014-07-29 10:20:13 +01:00
Jermolene
758762eee3 Autosave after an import 2014-07-29 10:03:43 +01:00
Jermolene
f1589e707f Move the github ribbon into the sidebar
Which makes it scroll with the sidebar, rather that with the main page
2014-07-28 15:57:27 +01:00
Jermolene
30f60c400e Add tiddler info tools tab 2014-07-28 14:38:17 +01:00
Jermolene
46ae9bd34e Add tiddler info tools tab 2014-07-28 14:37:42 +01:00
Jermolene
4be5c28ed4 Try the "more" button on the left 2014-07-28 14:21:11 +01:00
Jermolene
536c697c9f 'more' toolbar button highlights when selected 2014-07-28 14:20:45 +01:00
Jermolene
cb0eba73c2 Typo 2014-07-28 14:20:18 +01:00
Jermolene
5f018c2092 More defensive dom utility hasClass()
It was failing on SVG elements such as `<path>`
2014-07-28 14:19:52 +01:00
Jermolene
ad4db0de97 Add 'more' toolbar button 2014-07-28 11:29:06 +01:00
Bram Chen
4fd111e8ea Merge remote-tracking branch 'upstream/master' 2014-07-27 21:36:59 +08:00
Jermolene
497d9812c8 More buttons for the view toolbar
The arrangement of disabling and enabling buttons within the tiddler
info panel is temporary.
2014-07-27 11:43:26 +01:00
Bram Chen
1d81d52f52 Merge remote-tracking branch 'upstream/master' 2014-07-26 17:27:21 +08:00
Jeremy Ruston
0485e3fa02 Merge pull request #706 from BramChen/master
Add chinese translations for close other button
2014-07-26 09:19:26 +01:00
Bram Chen
6800e1d3e2 Merge remote-tracking branch 'upstream/master' 2014-07-26 14:28:26 +08:00
Jermolene
71ae63e24f Temporary commit losing power 2014-07-25 17:17:02 +01:00
Jermolene
40b4259e86 Clarify widget constructor docs 2014-07-25 15:26:53 +01:00
Jermolene
be040ea8a2 Add support for variable filter operands
Fixes #583
2014-07-25 15:26:44 +01:00
Bram Chen
40368062e3 Add chinese translations for close other button 2014-07-25 20:52:48 +08:00
Jermolene
d6cafa9da1 Updated docs for the edit text widget 2014-07-25 13:09:30 +01:00
Jermolene
3d5f68f7a8 Add a close others button 2014-07-25 13:09:20 +01:00
Jermolene
7d435cf850 Improved tabs examples 2014-07-25 08:49:58 +01:00
Jermolene
8600445100 Update tabs macro docs 2014-07-25 08:45:57 +01:00
Jeremy Ruston
7c7671e4ca Merge pull request #704 from BramChen/master
Add chinese translations for Permeview, PermaLink and Clone buttons
2014-07-25 08:29:27 +01:00
Bram Chen
33a070c5b1 Add chinese translations for Permeview, PermaLink and Clone buttons 2014-07-25 11:55:58 +08:00
Jermolene
69af30bf0d tw-new-tiddler example docs 2014-07-24 23:07:02 +01:00
Mario Pietsch
6de453d796 remove stricethrough.js 2014-07-24 23:51:37 +02:00
Mario Pietsch
bb47f1dbad fix whitespace and filename 2014-07-24 23:49:42 +02:00
Mario Pietsch
95f6c92192 fixed whitespace 2014-07-24 23:47:13 +02:00
Jermolene
c73853288c Allow .htm as an alias for .html files 2014-07-24 19:53:51 +01:00
Jermolene
0c34459d75 Updated architecture docs from @ssokolow
I’ve mismerged things again I’m afraid.
2014-07-24 17:11:28 +01:00
Jermolene
8888993ba3 Remove Page Composition diagram 2014-07-24 17:09:30 +01:00
Mario Pietsch
7aa6c7c06d splited emphasis.js into several modules to have fine grained control with wikification rules eg: rules except bold ... This fixes #701 2014-07-24 17:43:03 +02:00
Jermolene
218ce09605 Add permalink/permaview/clone to tiddler info bar
I’m open to suggestions for better ways to expose this functionality
2014-07-24 15:50:18 +01:00
Jermolene
9d69c38611 Docs for permalink and permaview 2014-07-24 15:49:18 +01:00
Jermolene
1f16ef6fa8 Add support for permalink and permaview 2014-07-24 15:49:09 +01:00
Jermolene
eecb9126cd Fix checkbox widget to work with missing tiddlers 2014-07-24 15:43:37 +01:00
Jermolene
2a887a5bac Add version number to one-shot upgrading UI 2014-07-23 21:01:19 +01:00
Jermolene
22468990a2 Fix typo 2014-07-23 20:51:06 +01:00
Jermolene
99eb556645 Remove broken info tiddlers
We can’t currently detect TiddlyFox or TiddlyDesktop so we’’ll remove
the corresponding info tiddlers and documentation
2014-07-23 09:14:21 +01:00
Jermolene
6298ffc516 Avoid "fork" wording
Our reasoning at Hangout #55 was that TiddlyWiki needs to present
itself as a consumer product, and that ordinary consumers were likely
to be confused by the “Fork me” wording.
2014-07-23 09:05:19 +01:00
Jermolene
9424001054 Add GitHub releases Atom/RSS feed 2014-07-22 15:17:15 +01:00
Jermolene
fd82112700 Sort out info mechanism docs
Some of it belongs in the browser-sniff plugin

Also add a `$:/info/node` info tiddler.
2014-07-22 15:16:18 +01:00
Jermolene
7916553b99 Switch to using flexbox for the community links
Not sure whether it’s really better, but it does mean that the number
of horizontal boxes increases as you remove the sidebar.
2014-07-22 14:21:45 +01:00
Jermolene
85952e6f59 Refactor community tiddler into tabs 2014-07-21 13:22:44 +01:00
Jermolene
40d44ba4e5 Rejib location of community tiddlers 2014-07-21 13:18:20 +01:00
Jermolene
b3bbdfbfd8 Switch tiddlywiki.com to a normal github fork ribbon 2014-07-21 13:18:00 +01:00
Jermolene
4f3ee7e7ca Update github ribbon plugin readme 2014-07-21 13:17:43 +01:00
Jermolene
507cda234e Docs update 2014-07-21 13:17:24 +01:00
Jermolene
3d8626dafa Move browser sniffing into a plugin 2014-07-21 13:17:16 +01:00
Jeremy Ruston
80e5c65681 Merge pull request #694 from BramChen/master
Add chinese translations for Import lists and Upgrader messages
2014-07-21 09:58:17 +01:00
Jermolene
ad57272324 Docs update 2014-07-21 09:54:59 +01:00
Bram Chen
e54b94a744 Add chinese translations for Import lists and Upgrader messages 2014-07-21 10:24:24 +08:00
Bram Chen
84b2a48544 Merge remote-tracking branch 'upstream/master' 2014-07-21 08:32:48 +08:00
Jermolene
da3f955aa4 Merge branch 'issue-680' of https://github.com/ssokolow/TiddlyWiki5 into ssokolow-issue-680 2014-07-20 20:19:42 +01:00
Jermolene
ef67cc3fd9 Make default location for new tiddlers configurable 2014-07-20 20:19:09 +01:00
Jermolene
67faf3fe5d Move info mechanism docs to correct place 2014-07-20 18:15:14 +01:00
Jermolene
89e2859007 Start refactoring tw5.com GettingStarted content 2014-07-20 18:07:51 +01:00
Jermolene
b4d47858e5 Introduce info mechanism
We expose browser information as shadow tiddlers so that wiki
applications can adapt to available features.
2014-07-20 18:07:30 +01:00
Jermolene
9ddff6d8c0 Move startup.js into the startup folder
Neater.
2014-07-20 18:06:33 +01:00
Jermolene
beabae8d2b Expose module.exports to tiddler modules
Needed to incorporate an upcoming third-party library.

@natecain - do you think this is OK from a compatibility perspective?
2014-07-20 18:06:19 +01:00
Stephan Sokolow
1a9f34203c Extend "TiddlyWiki Architecture" with details on the model and view. 2014-07-19 22:29:12 -04:00
Bram Chen
7e8aedd865 Merge remote-tracking branch 'upstream/master' 2014-07-20 00:01:49 +08:00
Jeremy Ruston
e3dc00573d Merge pull request #691 from xcazin/XC-doc
Add information regarding operands for sort* operators
2014-07-19 15:43:36 +01:00
Bram Chen
1657b82a16 Merge remote-tracking branch 'upstream/master' 2014-07-19 22:42:53 +08:00
Jermolene
d85bc46ca4 Release note updates 2014-07-19 15:38:52 +01:00
Jermolene
1bef4b8d8d Merge branch 'upgrade-mechanism' 2014-07-19 15:28:26 +01:00
Jermolene
0cf63ab9f0 Add theme tweaks upgrader 2014-07-18 20:00:05 +01:00
Xavier Cazin
608999a97a Add information regarding operands for sort* operators 2014-07-18 14:46:31 +02:00
Jermolene
8612bc4006 Rename $:/tags/AboveStory and $:/tags/BelowStory 2014-07-18 11:29:09 +01:00
Jermolene
310e119bb4 Add links to theme tweak tiddlers 2014-07-18 08:47:58 +01:00
Jermolene
2322be3f41 Add preview to upgrade wizard
The tiddlers are wikified in the context of the host wiki, which means
that mutual transclusions between imported tiddlers won’t appear
correct in the preview.
2014-07-17 18:42:04 +01:00
Jermolene
f793816dfa Add subtiddler support to the transclude widget
Useful to be able to reach into plugins. It will enable us to do things
like extract readmes from themes that are not active.
2014-07-17 18:41:20 +01:00
Jermolene
ed0bf7aed1 Stop defaulting to automatically updating the address bar 2014-07-17 18:40:26 +01:00
Jermolene
f8296bdf6c Styling adjustments for the upgrade wizard 2014-07-17 18:39:54 +01:00
Jermolene
89989c737e Fix bug with import tiddler handling 2014-07-17 15:02:42 +01:00
Jermolene
0a716ca0ef Fix problem with file picker overflow
On Chrome the invisible file picker was extending below its container.
2014-07-17 11:26:11 +01:00
Jermolene
b440e67f68 Upgrading docs update 2014-07-17 08:33:19 +01:00
Jermolene
7a034560d1 Refactor ImportListing
Better to avoid relying on the storyTiddler variable, which is a pain
for people trying to reuse the import listing.
2014-07-16 20:31:10 +01:00
Jermolene
cee81ed44b Docs update 2014-07-16 20:30:15 +01:00
Jermolene
eda09ba1c4 Fix typo 2014-07-16 11:09:39 +01:00
Jermolene
cfc326a827 Styling for upgrade wizard 2014-07-16 11:09:30 +01:00
Jermolene
6b457ee499 Docs update 2014-07-16 10:06:31 +01:00
Jermolene
e40a0c07b8 Fix support for upgrading encrypted wikis
Importing an encrypted wiki ordinarily doesn’t place the password in
the password vault on the basis that one ought to be able to import
from a file without automatically inheriting its password.

Now there’s a configuration option that can be used by the upgrade
plugin to cause the password vault to be updated with any password
entered by the user. The end result is that the user only needs to
enter their password once.
2014-07-16 10:06:24 +01:00
Jermolene
85f37a7d35 More upgrade wizard styling 2014-07-15 14:04:12 +01:00
Jermolene
a58e1d01ca Remove the fill transition
It looked terrible, presumably because it requires repaints.
2014-07-15 13:17:28 +01:00
Jermolene
7e7c9592be Tweak upgrade wizard layout 2014-07-15 13:11:40 +01:00
Jermolene
32ea939809 Docs update 2014-07-15 13:11:25 +01:00
Jermolene
98bf08d155 Tweak drop button colours 2014-07-15 13:11:13 +01:00
Jeremy Ruston
1b6a593b71 Merge pull request #687 from ssokolow/master
Signing the CLA
2014-07-15 11:34:22 +01:00
Stephan Sokolow
9d5e112922 Signing the CLA 2014-07-15 05:56:40 -04:00
Jermolene
cf273129ef Add a privacy note to the upgrade wizard 2014-07-15 09:16:32 +01:00
Jermolene
4a810f209f Favicon for the upgrade wizard 2014-07-14 22:38:12 +01:00
Jermolene
ac21faed3e CSS fixes and improvements for upgrade wizard 2014-07-14 22:26:01 +01:00
Jermolene
3233a10c34 Upgrade wizard refinements 2014-07-14 22:11:40 +01:00
Jermolene
85d9f38ed8 Correct copy/paste error 2014-07-14 22:06:23 +01:00
Jermolene
58cd874f22 Missed off last commit 2014-07-14 21:52:46 +01:00
Jermolene
4d948c575f Improvements to one-shot upgrade UI 2014-07-14 21:52:32 +01:00
Jermolene
c92a21ff14 Remove extraneous debugger statement 2014-07-14 21:51:56 +01:00
Jermolene
bc87fac600 Docs updates 2014-07-14 17:58:50 +01:00
Jermolene
7f721ffece Docs update 2014-07-14 14:53:27 +01:00
Jermolene
c0edca78c8 Beginning of one-shot UI for upgrade.html 2014-07-14 14:53:21 +01:00
Jermolene
07f13b310d Display plugin content in view template 2014-07-14 14:52:31 +01:00
Jermolene
5a23c883e2 More defensive checks
We’ve had a few bugs with the symptom of ‘text’ being undefined.
2014-07-14 14:52:00 +01:00
Jermolene
7998686cb3 Fix typo affecting transclusion recursion detection 2014-07-14 14:50:46 +01:00
Jermolene
5891a61bfc Add instructions for the Google Analytics plugin 2014-07-14 14:50:23 +01:00
Jermolene
1f6e16318a First pass at upgrade mechanism 2014-07-12 09:09:36 +01:00
Jermolene
f08f57c5d2 Extend checkbox widget to toggle fields 2014-07-12 09:09:13 +01:00
Jermolene
4743d0a863 Fix transclusion recursion detection
We were inadvertantly doing the recursion check before we were checking
if the transclusion target exists.
2014-07-12 09:08:52 +01:00
Jermolene
b9bf1ff574 Add plugin.info to tw2parser
Every plugin must have a plugin.info file to be valid
2014-07-12 09:08:38 +01:00
Jermolene
9de679b84b Fix tiddler widget to refresh properly
Previously wasn’t refreshing for changes to the tiddler that it refers
to
2014-07-12 09:08:20 +01:00
Jermolene
0f78c4afbf Fix problem with tabs macro changing current tiddler
The problem was introduced in e18d8a8866
2014-07-12 09:07:51 +01:00
Bram Chen
786bfc6e24 Merge remote-tracking branch 'upstream/master' 2014-07-10 00:13:48 +08:00
Jermolene
d5e4b9b5d1 Further refinements to print stylesheet
Try this @giffmex
2014-07-09 17:00:41 +01:00
Jermolene
73cf1bfdb3 Hide page background when printing 2014-07-09 15:22:53 +01:00
Bram Chen
73dcc577e5 Merge remote-tracking branch 'upstream/master' 2014-07-08 18:47:32 +08:00
Jermolene
91acad0f7c Add support for story backdrop and frontdrop
Allows elements to be added above or below the story river
2014-07-08 10:16:10 +01:00
Jermolene
811df7bbf0 Refactor animation easings 2014-07-08 10:07:17 +01:00
Bram Chen
4292d09651 Merge remote-tracking branch 'upstream/master' 2014-07-07 15:36:07 +08:00
Jermolene
21c137a66c Refactor theme tweaks as individual tiddlers
The trouble with the previous approach of storing several settings in a
single data tiddler was that it made it hard to introduce new settings.
Users who already have a custom copy of the settings/metrics tiddler
wouldn’t get the default settings. The new approach uses individual
tiddlers for each setting.

This commit also introduces a new theme tweak for the cutoff width for
switching between responsive views.
2014-07-06 16:55:51 +01:00
Jeremy Ruston
241d19bef8 Merge pull request #675 from BramChen/master
Typo
2014-07-06 16:01:27 +01:00
Jermolene
5b5fb18161 Docs update 2014-07-06 15:37:50 +01:00
Bram Chen
529345f08b Merge remote-tracking branch 'upstream/master' 2014-07-06 20:32:13 +08:00
Jermolene
3351ae7e29 Fix issue with localStorage error on Firefox
Firefox raises an error if window.localStorage is accessed when cookies
are disabled:

https://bugzilla.mozilla.org/show_bug.cgi?id=771890
2014-07-06 10:11:21 +01:00
Jermolene
465f4ac469 Fix problem with refreshing modal dialogues
Previously any refreshing of the content of a modal would cause a
crash. The problem is the way that we steal the root widget for the
render trees used in the modal. The root widget is tied to the
container DOM node for the main content area, which isn’t actually a
parent of the modal DOM nodes, hence the confusion for the refresh
mechanism.
2014-07-04 21:07:35 +01:00
Jermolene
c9d4714e98 Extend makeTranscludeWidget
Add support for specifying the filename, and the fallback content
within the transclude widget that is used if the transclusion target
isn’t found
2014-07-04 21:03:11 +01:00
Bram Chen
856110374f Typo 2014-07-04 10:59:41 +08:00
Jermolene
3ff7462afd Avoid saving $:/HistoryList
Otherwise it just keeps growing on each navigation.
2014-07-03 14:33:20 +01:00
Jermolene
a3de93b4eb Improve revision history tabs 2014-07-02 12:16:10 +01:00
Jermolene
e18d8a8866 Extend the tabs macro to allow tab contents to be templated 2014-07-02 12:15:52 +01:00
Jermolene
f43cd5ba9c Put release history in vertical tabs 2014-07-02 08:43:11 +01:00
Jermolene
367b14f70d Docs update 2014-06-27 07:26:39 +01:00
Jermolene
d93da81671 Restore link hover colours 2014-06-27 07:26:34 +01:00
Jeremy Ruston
1735970ffd Merge pull request #672 from BramChen/master
Correct typos
2014-06-25 16:07:36 +01:00
Bram Chen
4936be5b86 Correct typos 2014-06-25 22:37:43 +08:00
Jermolene
35055509c2 Typo
Fixes #671

Thanks @Evolena
2014-06-24 14:37:11 +01:00
Jermolene
791471c4f4 Readme update 2014-06-24 13:27:54 +01:00
Jermolene
5b3b62f93d Fix bug handling of build command
We were taking the commands expanded from the build targets and placing
them at the end of the queue. That caused a problem whereby the
prevailing output folder was always the last one in the command token
list.

Now we splice the new commands into the command token list at the
current position.
2014-06-24 12:09:10 +01:00
Jermolene
e018d8e0ef Preparation for 5.0.14 2014-06-24 12:07:28 +01:00
Jermolene
0cca9092ef Version number update for 5.0.13-beta 2014-06-24 10:44:51 +01:00
Jermolene
b594eb5b36 Update release dates 2014-06-24 10:42:46 +01:00
Jermolene
917c4404e5 Update batch files to use build system 2014-06-24 10:39:45 +01:00
Jermolene
6f3e31abe5 Fixed problems with detecting changes to draft tiddlers 2014-06-23 23:28:22 +01:00
Jermolene
5962600cb6 Update release note 2014-06-23 18:13:50 +01:00
Jeremy Ruston
cf3f11a4c0 Merge pull request #669 from jayfresh/patch-1
Typo fix
2014-06-23 18:12:34 +01:00
Jeremy Ruston
bcf37c765f Merge pull request #670 from jayfresh/patch-2
Adding Jonathan Lister to individuals list
2014-06-23 18:12:02 +01:00
Jonathan Lister
248029b53a Adding Jonathan Lister to individuals list 2014-06-23 12:51:08 +01:00
Jonathan Lister
57c534b97d Typo fix 2014-06-23 12:34:05 +01:00
Jermolene
6d1eaeb0fc Fix detection of draft changes
We were getting a lot of problems where changes to a tiddler were not
being recognised
2014-06-23 08:10:32 +01:00
Jermolene
680fe41ed7 Add isEqual() method to tiddlers 2014-06-23 08:09:59 +01:00
Jermolene
32a1da7673 Fixed problem with pasted items lacking a type 2014-06-22 11:58:00 +01:00
Jermolene
8d78336e9b Docs update 2014-06-22 11:45:07 +01:00
Jermolene
9987e6de22 Fix problem with overwriting existing tiddlers 2014-06-22 11:45:00 +01:00
Jermolene
38530f14f2 Docs updates 2014-06-22 11:14:24 +01:00
Jermolene
0fae9ee992 Improve handling of popup state
An improvement to 6fb992690d

By making sure that all the popup state tiddlers have the prefix
$:/state/popup/ we can be more selective and just exclude popup state
tiddlers when we save. The end result is that once again other kinds of
state are persisted as expected (eg tabs, and sidebar visibility).
2014-06-22 11:14:11 +01:00
Jermolene
12b5ebb946 A new colour palette 2014-06-22 11:11:09 +01:00
Jeremy Ruston
5120a1b32b Merge pull request #664 from BramChen/master
Add chinese translations of the TOC tab caption
2014-06-21 20:44:14 +01:00
Jeremy Ruston
9a2d650868 Merge pull request #665 from xcazin/fr-FR
fr-FR missing captions for Sidebar
2014-06-21 20:34:15 +01:00
Jeremy Ruston
ad74877dad Merge pull request #666 from pmario/de-DE
german translations
2014-06-21 20:33:47 +01:00
Mario Pietsch
b77ad3061d german translations 2014-06-21 17:35:02 +02:00
Xavier Cazin
31b1e073a6 Missing Sidebar fr-FR caption, plus better translation for Contents 2014-06-21 17:20:01 +02:00
Xavier Cazin
5d88f19ec6 fr-FR translation for TableOfContents caption 2014-06-21 17:09:44 +02:00
Bram Chen
133c24e9c7 Add chinese translations of the TOC tab caption 2014-06-21 22:04:43 +08:00
Jermolene
f15eba66fe Use SVG icons for expand/collapse 2014-06-21 11:49:42 +01:00
Jermolene
911a64221a Docs update 2014-06-21 11:49:30 +01:00
Jermolene
424c0737a2 Update release note 2014-06-21 11:21:27 +01:00
Jermolene
0b38cd640c Reverse accidentally making Contents the default tab 2014-06-21 11:18:59 +01:00
Jermolene
32099b85d3 Add table of contents to tw5.com 2014-06-21 11:17:04 +01:00
Jermolene
71aa2bbe5f Docs update 2014-06-21 11:16:48 +01:00
Jermolene
fb5c44a875 Remove indenting
It didn’t work very well, and was giving us spans where there should be
divs in the tab control.
2014-06-21 11:16:35 +01:00
Jermolene
f12d7bb6c0 Update to version 8.0 of highlight.js 2014-06-21 10:11:04 +01:00
Jeremy Ruston
665e490d33 Merge pull request #662 from xcazin/fr-FR
fr-FR translation of new Buttons-related strings plus type editors and c...
2014-06-20 18:52:15 +01:00
Jeremy Ruston
76f637d57a Merge pull request #661 from buggyj/jsonparams2
added missing regex update for triple double-quotes macro params
2014-06-20 18:51:51 +01:00
Xavier Cazin
2ccc13b936 fr-FR translation of new Buttons-related strings plus type editors and canonical_uri related strings 2014-06-20 17:14:16 +02:00
buggyj
0206358a1c added missing regex update for triple double-quotes macro params 2014-06-19 19:17:26 +02:00
Jermolene
f3a466ee86 Docs update 2014-06-19 12:37:54 +01:00
Jeremy Ruston
0c48502e8e Merge pull request #660 from buggyj/jsonparams
added triple double-quotes delimiters for marco/widget parameters (to su...
2014-06-19 12:06:00 +01:00
Jermolene
19061650de Refactoring for hygeine 2014-06-19 12:05:41 +01:00
Jermolene
c2b08b43b5 Docs updates 2014-06-19 08:53:24 +01:00
buggyj
a2ec4c55e3 added triple double-quotes delimiters for marco/widget parameters (to support json strings) 2014-06-19 07:29:14 +02:00
Jeremy Ruston
5eae2f0fb6 Merge pull request #659 from BramChen/master
Update chinese translations
2014-06-18 14:57:30 +01:00
Jermolene
b8aedf2ca3 Fixed problem with Markdown image handling 2014-06-18 14:56:32 +01:00
Bram Chen
2d24d05f61 Update chinese translations
* for adding editor type mappings to control panel
2014-06-18 21:47:45 +08:00
Jeremy Ruston
44cb3bc100 Merge pull request #658 from csugden/patch-1
Fixes undefined loop variables (fixes #657)
2014-06-18 13:57:54 +01:00
Jermolene
0cf4e5514c Docs tweak 2014-06-18 13:54:24 +01:00
Jermolene
1717c93d00 Refactor codemirror plugin
It no longer overrides the edit-text widget. Instead we use the editor
type mappings to select which content types should be handled by which
editor.
2014-06-18 13:54:19 +01:00
Jermolene
0bdc5b5c70 Add editor type mappings to control panel 2014-06-18 13:52:22 +01:00
csugden
1945af0b2d Fixes undefined loop variables (fixes #657) 2014-06-18 11:56:27 +01:00
Jermolene
e6b783154f Allow arbitrary fields in plugin.info files
Fixes #642
2014-06-18 08:52:31 +01:00
Jermolene
d2d0b09235 Refactoring plugin loading on Node.js 2014-06-18 08:34:49 +01:00
Jermolene
e28c2e8b06 Remove extraneous tag
Tiddlers tagged “resources” show up in the Community tiddler, which we
don’t want here.
2014-06-17 22:26:55 +01:00
Jermolene
2e2d30bae9 Docs for environment variable support
Fixes #531
2014-06-17 22:26:27 +01:00
Jermolene
a9b7df96c2 Add support for TIDDLYWIKI_EDITION_PATH 2014-06-17 21:59:20 +01:00
Jermolene
b2e48d00e9 Add environment variables for locating plugins
Start of fixing #531 (we still need to deal with
TIDDLYWIKI_EDITION_PATH)
2014-06-17 21:33:44 +01:00
Jermolene
9147cadd3c Remove the cat from the server architecture diagram 2014-06-17 16:14:00 +01:00
Jeremy Ruston
4951a53063 Merge pull request #656 from BramChen/master
Update chinese translations
2014-06-17 15:47:45 +01:00
Bram Chen
36556b817f Update chinese translations
* add Buttons.multids
* add description of _canonical_uri to filds.multids
2014-06-17 21:22:29 +08:00
Jermolene
8bd19c4e6a Merge branch 'accessibility' 2014-06-17 11:49:06 +01:00
Jermolene
34e4166dc5 Add label and title for show/hide sidebar buttons
More fixes for #650
2014-06-17 11:39:18 +01:00
Jermolene
617963bd88 Update button widget docs 2014-06-17 10:49:13 +01:00
Jermolene
346b2f8611 Add label for advanced search link 2014-06-17 07:56:36 +01:00
Jermolene
6f859c8d44 Add label for close button in open sidebar tab 2014-06-17 07:56:27 +01:00
Jermolene
325a93f3c3 Move button language to $:/language/Buttons 2014-06-17 07:56:13 +01:00
Jermolene
06b0f9adb7 Added aria-label attribute to link widget
And document it for the button widget
2014-06-17 07:54:10 +01:00
Jermolene
401349a1d6 Improve a11y of close buttons in open tab
a11y === accessibility
2014-06-16 17:40:38 +01:00
Jermolene
bc9b67cbc3 Use H1 for page title and H2 for tiddler titles
Ideally, we’d also rebase the headings within tiddlers so that `!
Heading` would be an H3. Hopefully we’ll do that later.
2014-06-16 17:34:20 +01:00
Jermolene
6fb992690d Exclude state tiddlers when saving changes
This might be a controversial change as it also means that it is no
longer possible to include `$:/state/…` tiddlers in a wiki to set up
the initial configuration.
2014-06-16 17:21:41 +01:00
Jeremy Ruston
57f3eb0b2c Merge pull request #653 from BramChen/master
Correct chinese translations of Help text for savetiddlers
2014-06-15 08:40:01 +01:00
Jermolene
bf2f88ba8b Use H1 for tiddler titles
Part of #650
2014-06-15 08:37:58 +01:00
Bram Chen
00d041b778 Correct chinese translations of Help text for savetiddlers 2014-06-15 08:17:12 +08:00
Jermolene
eeedcb6d94 First pass at accessibility improvements for #650 2014-06-14 18:06:56 +01:00
Jermolene
b4ddaccd1d Docs and image updates
These two architecture diagrams are a few hundred kilobytes, so we
don’t want them baked into the HTML file
2014-06-14 13:41:09 +01:00
Jermolene
d83c26fe3b Add external image support to tiddlywiki.com 2014-06-14 13:24:48 +01:00
Jermolene
1c484f59bd Add external image build target for empty edition 2014-06-14 13:24:27 +01:00
Jeremy Ruston
149ca0fc63 Merge pull request #651 from BramChen/master
Update chinese translations of Help text for server command
2014-06-14 08:20:09 +01:00
Jeremy Ruston
f467ae288b Merge pull request #652 from xcazin/fr-FR
fr-FR translations of recently added commands and type, plus suggestion for en-GB/Help/savetiddlers.tid
2014-06-14 08:20:02 +01:00
Jermolene
457764077b Recommitting the old tw2parser plugin 2014-06-14 08:17:16 +01:00
Xavier Cazin
892900c9c5 fr-FR translation of setfield and savetiddlers docs, plus javascript type 2014-06-14 07:40:12 +02:00
Xavier Cazin
d880cb135a Update what was left from a copy/paste of savetiddler.tid :-) 2014-06-14 07:35:53 +02:00
Bram Chen
a858329742 Update chinese translations of Help text for server command
...
2014-06-14 09:19:00 +08:00
Jermolene
e44450edc4 Correct typo 2014-06-13 17:02:39 +01:00
Jermolene
f09d69d1b7 Remove debugging code 2014-06-13 14:44:43 +01:00
Jermolene
eee3a0cf8e Extend server command to allow a path prefix
Thereby making the number of parameters to the command ludicrous
2014-06-13 14:44:34 +01:00
Jermolene
4238af2a40 Extend listed filter operator to use any field 2014-06-13 10:58:19 +01:00
Jeremy Ruston
f54f0d1c3e Merge pull request #649 from BramChen/master
Update translated group of application Javascript in type dropdown
2014-06-13 10:08:10 +01:00
Jermolene
ca34cc437c Rename $:/core/templates/canonical-uri-external-image
As per @pmario’s suggestion.
2014-06-13 10:04:31 +01:00
Bram Chen
71c886e3a1 Update translated group of application Javascript in type dropdown 2014-06-13 16:36:23 +08:00
Jeremy Ruston
db147e3673 Merge pull request #648 from BramChen/master
Update chinese translations
2014-06-13 08:51:42 +01:00
Bram Chen
525613750b Update chinese translations 2014-06-13 09:42:27 +08:00
Jermolene
f751e2ecb4 Added application JavaScript to type dropdown
Fixes #646
2014-06-12 19:12:58 +01:00
Jeremy Ruston
ea5989048c Merge pull request #640 from danielo515/patch-2
Update instructions.tid to use one of the included addons
2014-06-12 19:10:12 +01:00
Jeremy Ruston
eec849c69e Merge pull request #647 from BramChen/master
Update chinese translations for Help tiddlers
2014-06-12 19:09:36 +01:00
Jermolene
666f243a82 Release note and doc updates for 5.0.13 2014-06-12 19:03:12 +01:00
Jermolene
4e5fa2c6e6 Docs update 2014-06-12 18:01:39 +01:00
Jermolene
9ab0c84140 Support global macros via the importvariables widget
The new importvariables widget imports macro/variable definitions from
the specified tiddlers and makes them available to its children.

Allows us to split PageMacros up into separate tiddlers.

We still support loading macros from $:/core/ui/PageMacros to help
people upgrading.

Fixes #644 and #559
2014-06-12 18:01:33 +01:00
Bram Chen
9261bdaa43 Merge remote-tracking branch 'upstream/master' 2014-06-12 20:19:05 +08:00
Jermolene
0e09fbf46a Start using the build command in batch files 2014-06-12 08:36:53 +01:00
Jermolene
9547a1f01c First pass at external image support
A bunch of little changes that together enable external image support.
Try:

```
tiddlywiki editions/tw5.com --verbose --build externalimages
```

Then open `externalimages.html`, look for the images in the more/types
tab of the sidebar, open them and verify that they are set with an
external SRC attribute, not a data URI.
2014-06-12 08:36:30 +01:00
Bram Chen
0e4afc3986 Update chinese translations for Help tiddlers 2014-06-12 10:59:19 +08:00
Bram Chen
10fa72d15e Update chinese translations for Help tiddlers 2014-06-12 10:56:04 +08:00
Jermolene
f131c37893 Update HTML parser to use an IFRAME
Gives us better sandboxing of unsafe HTML content
2014-06-11 23:04:58 +01:00
Jermolene
d2796d0c9c Introduce setfield command
This new command will let us do the manipulations needed to set up
external image tiddlers
2014-06-11 10:05:35 +01:00
Jermolene
460f476aef Docs update 2014-06-10 23:15:42 +01:00
Jermolene
2989c9b133 Typo in 305617b632
Tsk
2014-06-10 23:05:08 +01:00
Jermolene
3105afe6e8 Add demo PDF image
That cat again
2014-06-10 23:03:41 +01:00
Jermolene
a03a15e7de Allow the text widget to refresh if needed 2014-06-10 19:32:55 +01:00
Jermolene
305617b632 Introduce savetiddlers command
Allows us to save tiddlers in their raw format.
2014-06-09 14:45:41 +01:00
Jermolene
b446ef5d4e Docs updates on Reporting Bugs 2014-06-09 14:16:21 +01:00
danielo515
8dd30e97ac Update instructions.tid to use one of the included addons
This addon is already included into the plugin, but is not used, neither mentioned how to use it. It is a very useful but lightweight addon. I consider it is better to include the full functionality of the current configuration in the config example.
2014-06-07 17:04:43 +02:00
Jermolene
fc6d96672d Another select widget demo 2014-06-06 09:33:24 +01:00
Jermolene
78791192c3 Style updates missed off the last commit 2014-06-06 09:32:45 +01:00
Jermolene
9b576f2a8d Add group headings to type dropdown
We’re also reverting to the old custom dropdown. Using the select
widget didn’t work out because it couldn’t cleanly work with a text box
allowing custom types to be specified.
2014-06-06 09:32:14 +01:00
Jeremy Ruston
08ed0017af Merge pull request #637 from mwfogleman/emacs-helper-functions
Add docs for open- and browse-wiki Emacs functions.
2014-06-03 23:14:11 +01:00
Michael Fogleman
450c646c31 Add docs for open- and browse-wiki Emacs functions.
These helper functions supplement tid-mode.
2014-06-03 23:04:29 +08:00
Jeremy Ruston
0c6c5002c1 Merge pull request #635 from danielo515/patch-1
Added Daniel Rodríguez to contributors list
2014-06-02 20:38:03 +01:00
danielo515
9b3b08a176 Added Daniel Rodríguez to contributors list
The date is the original when I tried to add myself at first instance.
2014-06-02 17:05:22 +02:00
Jeremy Ruston
6386bf84a5 Merge pull request #630 from xcazin/fr-FR
Add fr-FR translated groups to Tiddler types
2014-06-02 12:17:28 +01:00
Jeremy Ruston
c3dfa3f27e Merge pull request #631 from BramChen/master
Add chinese translations of 'group' field to tiddler types
2014-06-02 12:17:09 +01:00
Bram Chen
50223562ea Add chinese translations of 'group' field to tiddler types 2014-06-01 12:31:25 +08:00
Xavier Cazin
85c7da95bb Add fr-FR translated groups to Tiddler types 2014-06-01 00:38:58 +02:00
Jermolene
c8e98c1567 Use the select widget tiddler content types 2014-05-31 22:39:32 +01:00
Jermolene
13463a47c5 Attention Translators! Add "group" field to tiddler types
Apologies to the translators for the extra work. Each translated
tiddler type needs a new “group” field that contains a locale-specific
group name that in English are “Image”, “Developer” and “Text”.
2014-05-31 22:38:50 +01:00
Jermolene
ffd9df670d Fix problem with tabs switching on language change
In 5.0.12-beta, if you change the current language setting then the
current sidebar tab setting is lost. This was because the qualified
title generated for the tabs was incorporating the current language
title, by virtue of a trick used in the PageTemplate to set the
“languageTitle” variable to a field of the current language plugin.
This trick left the current tiddler set to the current language, and
this current tiddler was still in force for the transclusion of the
page template segments.
2014-05-31 19:20:51 +01:00
Jermolene
d2edd9291e Standardise whitespace 2014-05-31 19:18:46 +01:00
Jermolene
247eb04b11 Extraneous semi-colon 2014-05-31 19:18:01 +01:00
Jermolene
954946352a Docs update 2014-05-31 18:38:25 +01:00
Jermolene
0ccaedd7d2 Use the select widget in the various switchers 2014-05-31 18:38:17 +01:00
Jermolene
3182a2d599 Add first pass at select widget 2014-05-31 18:37:43 +01:00
Jermolene
f999b2e931 Add wiki.setText() method 2014-05-31 18:37:27 +01:00
Jermolene
4d70d5780e Use radio buttons in navigation settings
Radio buttons are much clearer
2014-05-31 18:36:59 +01:00
Jermolene
a330cb543e Better defaults for radio widget
Now the “field” attribute defaults to “text”.
2014-05-31 18:35:41 +01:00
Jermolene
64a6544b02 Update the first rule of TiddlyWiki 2014-05-30 11:38:42 +01:00
Jermolene
3f25db0abe More permalink tweaks
And more documentation this time!
2014-05-29 23:17:21 +01:00
Jermolene
412cde6f53 Move "storyviews" filter operator to correct folder 2014-05-28 17:17:47 +01:00
Jermolene
f7b8813a27 Change permalink behaviour
Now a link to a single tiddler like http://tiddlywiki.com/#HelloThere
will just open that single tiddler (the old behaviour was to also open
the default tiddlers)
2014-05-28 17:07:41 +01:00
Jermolene
62c602e9d2 Fix for running under node-webkit 2014-05-28 08:57:29 +01:00
Jermolene
d8a142fed5 Fix vertical tabs in Safari
Current versions of Safari on OS X and iOS are still prefixed.
2014-05-27 19:06:27 +01:00
Jermolene
1b37d660ea Restore "escape" as shortcut to abandon edits
Thus reverting a defensive change back in January:
d72d245523
2014-05-27 15:42:33 +01:00
Jermolene
da273be054 Workaround Firefox "no element found" bug
See https://bugzilla.mozilla.org/show_bug.cgi?id=884693

Fixes #468
2014-05-27 09:49:48 +01:00
Jermolene
a463859a28 Retract inadvertant change from previous commit 2014-05-26 22:56:58 +01:00
Jermolene
9aaa000d3f Fixed default tiddler not appearing in zoomin view
See https://groups.google.com/d/topic/tiddlywiki/c-z7f-h1CAo/discussion
2014-05-26 22:56:28 +01:00
Jermolene
f14ecf4eb8 Add support for $:/tags/RawMarkup 2014-05-26 22:50:54 +01:00
Jermolene
128ad01866 Fix for inability to scroll modal wizards 2014-05-26 22:33:42 +01:00
Jermolene
ecbda326cb Add keyboard shortcut documentation 2014-05-26 21:50:04 +01:00
Jeremy Ruston
e24600f9bb Merge pull request #617 from IreneKnapp/Irene-contributor
Sign the contributor agreement.
2014-05-26 19:19:01 +01:00
Jermolene
6436dc22a7 Fix obsolete transclude widget docs 2014-05-26 18:01:53 +01:00
Jermolene
f44f2b33ed Fixed missing class on external pretty links 2014-05-26 17:57:35 +01:00
Jermolene
86d182fd51 Fix importing blank fields from TiddlyWiki files 2014-05-26 17:47:07 +01:00
Jermolene
3fa4b00ede Docs update 2014-05-26 17:38:36 +01:00
Jermolene
d30cb0f11d New ribbon colour for 5.0.13 2014-05-18 20:02:21 +01:00
Jermolene
906d2db57e Preparing for 5.0.13 2014-05-18 19:58:23 +01:00
Irene Knapp
3e6de03f15 Sign the contributor agreement. 2014-05-17 11:04:46 -07:00
Jermolene
aaec1b2854 Version number update for 5.0.12-beta 2014-05-17 01:17:04 +01:00
Jermolene
9edebc78e7 Tweak ribbon colour for 5.0.12 2014-05-17 01:14:20 +01:00
Jermolene
e228ac42db Fix problem with shadow tiddler iteration
See https://groups.google.com/d/topic/tiddlywiki/pNxZsSCVp7c/discussion
for more details of the bug.
2014-05-17 01:12:08 +01:00
Jermolene
be0bc04929 Fix typo 2014-05-17 01:11:41 +01:00
Jermolene
b415b0e90e Version number update for 5.0.11-beta 2014-05-16 14:55:32 +01:00
Jermolene
974aecba1f Fix build scripts 2014-05-16 14:53:16 +01:00
Jermolene
47fa18c2e0 Docs updates 2014-05-16 14:49:28 +01:00
Jermolene
d5094463f4 Temporarily revoke sorting tests
localeCompare seems to behave differently in the browser and under
Node.js, making it hard to get the tests consistent
2014-05-16 14:46:55 +01:00
Jermolene
5951dc5901 Fix problem with static renderings
The issue was that rendertiddlers always clears the output folder,
which meant that it was overwriting anything previously output by the
rendertiddler command.
2014-05-16 14:39:24 +01:00
Jermolene
1d15e4b7d3 Docs update 2014-05-16 14:37:05 +01:00
Jeremy Ruston
67e66b4698 Merge pull request #610 from BramChen/master
Update chinese translations
2014-05-16 11:24:47 +01:00
Jeremy Ruston
c00940f2d1 Merge pull request #614 from pmario/de-DE
add transcluded lingo :)
2014-05-16 09:22:13 +01:00
Jermolene
81ea326e16 Update release note 2014-05-16 09:22:00 +01:00
Jeremy Ruston
c2f52f8a4b Merge pull request #615 from nameanyone/master
Rename some system tiddlers to be consistent with Naming of System Tiddlers
2014-05-16 09:20:32 +01:00
Jeremy Ruston
ca03984663 Merge pull request #616 from xcazin/fr-FR
fr-FR edits: integration of standard search into 'Advanced Search'.
2014-05-16 09:19:42 +01:00
Jermolene
b2ff248d07 Correct typo 2014-05-16 09:18:43 +01:00
Jermolene
658bd2b8a3 Release note update 2014-05-16 09:18:37 +01:00
Xavier Cazin
a8b16c9c07 fr-FR edits: integration of standard search into 'Advanced Search'. 2014-05-16 09:37:54 +02:00
nameanyone
157ca0c8aa Rename $:/temp/NewFieldName to $:/temp/newfieldname
As per "Naming of System Tiddlers"
2014-05-15 22:54:46 -07:00
nameanyone
01b3962b2c Rename $:/ShowEditPreview to $:/state/showeditpreview
According to "Naming of System Tiddlers"
2014-05-15 22:47:21 -07:00
Bram Chen
19646c7f95 Add chinese translations of standard search 2014-05-16 08:38:13 +08:00
Mario Pietsch
dfb8a07204 add transcluded lingo :) 2014-05-16 00:26:12 +02:00
Jermolene
93566cdc33 Add standard search to advanced search 2014-05-15 23:09:31 +01:00
Jeremy Ruston
ad8a20bfed Merge pull request #613 from pmario/de-DE
update german texts
2014-05-15 22:49:17 +01:00
Jeremy Ruston
00cddd3713 Merge pull request #612 from xcazin/fr-FR
Edits to fr-FR strings to reflect fix in Advanced Search matches count
2014-05-15 22:48:50 +01:00
Mario Pietsch
23c8902e70 update german texts 2014-05-15 22:58:29 +02:00
Xavier Cazin
818fd598dc Edits to fr-FR strings to reflect fix in Advanced Search matches count 2014-05-15 22:37:33 +02:00
Jermolene
31e1088aa7 Clean up startup logging
Now we do boot logging to an array. We harvest it in the —verbose
command. We still need to provide a way to access the log in the
browser too.
2014-05-15 18:50:14 +01:00
Jermolene
f9f8ad725b Fix problem with advanced search counts
Apologies to TiddlyWiki’s translators for disrupting existing work!
2014-05-14 20:12:38 +01:00
Jermolene
81e1af1d35 Tabs appearance tweaks 2014-05-14 19:37:37 +01:00
Jermolene
c9c1b0fbb4 Get rid of the tweakParseTreeNode() hack
It’s an embarrassing hangover from a refactoring of the parsing
mechanism last year.
2014-05-14 08:51:08 +01:00
Bram Chen
f7ce0c0b8d Add chinese translations of Advanced Settings in the ControlPanel 2014-05-14 09:38:45 +08:00
Jermolene
92aa1f24be Fix tab button padding
Lack of padding caused a visual glitch in Firefox
2014-05-13 21:02:21 +01:00
Jermolene
e0a6c4e879 Update release note 2014-05-13 19:38:39 +01:00
Jermolene
f72c177ba5 Fix line height 2014-05-13 18:32:12 +01:00
Jermolene
9a26c4259a Fix problem with widget.getStateQualifier()
Fixed to take into account the recent change to read variables from the
parent widget: e60fc9f81f
2014-05-13 18:16:45 +01:00
Jeremy Ruston
6de6a43623 Merge pull request #609 from xcazin/fr-FR
fr-FR translations for new strings in the Control Panel, plus edits to an older one
2014-05-13 17:33:46 +01:00
Xavier Cazin
2fa3c8a4ed edits to the fr-FR translation for the Edit Template 2014-05-13 17:28:45 +02:00
Xavier Cazin
295094c9a3 fr-FR translation of Advanced Settings in the ControlPanel 2014-05-13 17:27:22 +02:00
Jermolene
da41879fc1 Fix dropdown behaviour in advanced settings 2014-05-13 16:21:01 +01:00
Jermolene
f8708874bc Update reveal widget docs 2014-05-13 14:50:45 +01:00
Jermolene
ad43958571 Make permalink behaviour configurable
In the process introducing a new advanced settings tab

Fixes #600
2014-05-13 14:16:58 +01:00
Jermolene
4e07b3335b Extend .tid files to allow single line text fields
To make it easier to create tiddlers that don’t include a terminating
newline in their text
2014-05-13 10:27:03 +01:00
Jermolene
b77d5f9725 Clean up whitespace 2014-05-13 10:26:02 +01:00
Jermolene
75fee26b58 Fix problem with variables containing an empty string
See
https://github.com/Jermolene/TiddlyWiki5/commit/e60fc9f81f2c8f0d115543d8
d330a1d68f9b890a#commitcomment-6301921
2014-05-13 10:15:55 +01:00
Jermolene
e8c9d78079 Update release note 2014-05-12 15:21:59 +01:00
Jermolene
d972988a53 Remove obsolete filter operators docs
It was overwritten by a later version in editions/tw5.com/filters.
2014-05-12 15:17:16 +01:00
Jermolene
e83759e86d Add "before" and "after" filter operators
Fixes #357 by adding new “before” and “after” filter operators.
2014-05-12 15:16:44 +01:00
Jermolene
2633247492 Use flexbox for vertical tabs
Thus stepping into a new world:

http://caniuse.com/flexbox

The vertical tabs are now completely reusable, with sensible wrapping
behaviour.
2014-05-12 08:41:47 +01:00
Jermolene
b3032d452f Refactor vertical tabs for reusability
In practice, if you look at TabsMacro you’ll see that the width of the
tab content is wrong, and will usually overflow the container. Next
step is to fix that by using flexbox…
2014-05-11 18:47:14 +01:00
Jermolene
e60fc9f81f Fixed problem with widgets variable access
Previously, widgets were reading variables from themselves or their
cascaded ancestors. That means that if a widget sets a variable and
then reads the same variable, it will get the same variable back. That
sounds reasonable, until you consider a widget that wants to modify a
variable - eg the tiddler macro. For example:

```
<$tiddler tiddler={{!!report}}>
<$transclude mode="block" />
</$tiddler>
```

Here we first evaluate the `{{!!report}}` reference, which involves
reading the currentTiddler variable, looking up the tiddler, and
retrieving it’s `report` field. The next the tiddler widget is
refreshed, it will use the newly set currentTiddler as the basis for
resolving the `{{!!reference}}` reference.

The fix is to get variables from ancestors, but continue to set them on
ourselves.
2014-05-08 11:51:02 +01:00
Jermolene
6ab68e0fca Remove erroneous global wiki references
$tw.wiki is used as a global reference in the outer initialisation
modules. It shouldn’t be used in widgets etc.
2014-05-07 14:49:14 +01:00
Jermolene
e548dd35af Restored drag and drop functionality within TEXTAREAs and INPUTs
As mentioned by @Skeeve in #592
2014-05-07 14:32:14 +01:00
Jermolene
8b20143b1b Pass content-type to codemirror mode option for syntax highlight
Fixes #605
2014-05-07 14:09:46 +01:00
Jeremy Ruston
711b76307c Merge pull request #604 from natecain/module_exports
Module exports
2014-05-07 14:05:45 +01:00
Jermolene
b858e9dc69 Fix incorrect filter in shadow $:/DefaultTiddlers
Fixes #606
2014-05-07 13:43:12 +01:00
Jermolene
a9411262f7 Improve TiddlyWiki as a library
1. Make it possible to disable specific boot tasks
2. Extend the startup mechanism to allow startup tasks to be disabled

Again, see Jermolene/TiddlyWiki5NodeWebkit to see how these features
fit together.
2014-05-07 12:51:16 +01:00
Jermolene
e676156b24 Fixes for running TiddlyWiki on node-webkit
See Jermolene/TiddlyWiki5NodeWebkit
2014-05-07 09:59:21 +01:00
natecain
c592e658e7 Fix up codemirror instructions to match new paths in config example 2014-05-06 23:57:10 +02:00
natecain
6b03789e06 Prioritize "module.exports" over "exports" in require sandbox
(Node-ism, inherited (temporarily?) to support codemirror upgrade)
2014-05-06 23:31:57 +02:00
natecain
51f54b06f9 Upgrade codemirror to current master 2014-05-06 23:30:40 +02:00
Jeremy Ruston
285ab41ccf Merge pull request #602 from BramChen/master
Add chinese translation of banner for binary tiddlers in edit mode
2014-05-06 20:15:43 +01:00
Jermolene
854b739a35 Implement explicit external links 2014-05-06 20:05:51 +01:00
Jermolene
abe0ce28b9 Fix typos in docs for image parser 2014-05-06 19:00:34 +01:00
Jermolene
76e8640c31 Fix problem with parsing lists contain non-breaking spaces
Some of the time we need to treat non-breaking spaces as though they
are not spaces (regexps treat them as spaces by default).
2014-05-06 18:10:27 +01:00
Jermolene
cc3d44aec1 Fix problem with list fields containing [[]]
Fixes #603 - thanks @xcazin!

It no longer crashes but unfortunately if you round trip a tiddler out
of edit mode and back you’ll lose any empty double square brackets.
2014-05-06 17:32:12 +01:00
Bram Chen
7b6cff0cca Fix incorrect charset for the previous commit 2014-05-06 17:36:59 +08:00
Jermolene
d1c85f53c0 Update release note 2014-05-06 10:33:08 +01:00
Bram Chen
e2b0da0b58 Add chinese translation of banner for binary tiddlers in edit mode 2014-05-06 17:23:27 +08:00
Jermolene
7c8c5cf745 Fix problem with parsing main UI boot tiddlers
We were parsing the boot tiddlers, making them into a widget and then
refreshing the widget tree. The problem is that subsequent chances to
the boot tiddlers themselves wouldn’t be picked up as part of the
refresh.

Now we indirectly parse those UI boot tiddlers through a transclusion,
which does get refreshed in the desired way.
2014-05-06 10:14:22 +01:00
Jermolene
38c60bd7d4 Fix tag colour 2014-05-05 23:19:49 +01:00
Jermolene
afb92c40fe Tweak ribbon colour for 5.0.11 2014-05-05 23:19:41 +01:00
Jermolene
6b45296ca9 Roadmap and release note updates 2014-05-05 23:19:30 +01:00
Jermolene
b84c663215 Add proper rendering of document title 2014-05-05 23:00:09 +01:00
Jermolene
4e101e240c Suppress history when changing the permalink URL 2014-05-05 21:51:54 +01:00
Jermolene
56251dc1f8 Fixes #598
Ensure we don’t generate permalinks with a target that is not in the
current story
2014-05-05 21:23:29 +01:00
Jermolene
f368175cb0 Remove debugging code 2014-05-05 20:58:47 +01:00
Jeremy Ruston
3e49dd65a0 Merge pull request #594 from xcazin/fr-FR
fr-FR translations for warnings about shadow tiddlers and binary content
2014-05-05 20:57:28 +01:00
Jermolene
f5ada72dac Ensure tag colours are specified in hex 2014-05-05 19:25:49 +01:00
Jermolene
986a20b22b Fixes for permalinks not working on Firefox
Sigh. It’s frustrating that the few browser differences I’m running
into in 2014 are mostly horribly familiar from 2005
2014-05-05 19:21:57 +01:00
Jermolene
ffb6c8ab81 Add hex colours to tag manager
Fixes #597
2014-05-05 18:42:25 +01:00
Jermolene
e58e68fa7c Add Matabele's gTD site 2014-05-05 17:31:52 +01:00
Jermolene
95def8b857 Add startup sequence diagram 2014-05-05 17:06:34 +01:00
Jermolene
b24ec8009d Missing dependency 2014-05-05 17:06:24 +01:00
Jermolene
9965c64b6f More refactoring of startup.js 2014-05-05 15:25:51 +01:00
Jermolene
2a50277219 Fix problem with syncer not being initialised on server 2014-05-05 14:44:32 +01:00
Jermolene
3cce12e13f More refactoring of startup.js 2014-05-05 14:41:46 +01:00
Jermolene
887e9d978b Fix problem with saving if URL contains # 2014-05-05 13:30:31 +01:00
Jermolene
a0022a1cd6 Refactoring more of startup.js into modules 2014-05-05 10:17:50 +01:00
Jermolene
519e1b4a44 Pull more of startup.js out into separate modules 2014-05-03 21:23:51 +01:00
Jermolene
b9dec37fb7 Split main rendering into it's own startup module 2014-05-03 19:50:05 +01:00
Jermolene
09156af475 Add support for "before" field on startup modules 2014-05-03 19:49:50 +01:00
Jermolene
5b5621a600 Fix googleanalytics plugin to be platform-specific 2014-05-03 18:07:20 +01:00
Jermolene
78ba57d55d Remove support for browser-startup modules
Instead support startup modules that stipulate which platform they
require.

Also include docs updates and fixes to fullscreen plugin
2014-05-03 17:49:20 +01:00
Jermolene
749582ede0 Split module loading into a separate startup task
Still a work in progress.
2014-05-03 17:10:55 +01:00
Jermolene
1c82348edb Docs typo 2014-05-03 16:56:29 +01:00
Jermolene
b96aade28a WIP: Add support for dependencies between startup modules
See StartupMechanism for details.
2014-05-03 16:32:18 +01:00
Jermolene
2f32621024 Docs updates 2014-05-03 16:27:22 +01:00
Jermolene
6ccf02ed96 Add support for onhashchange
Now we respond dynamically to changes in the location hash in the URL
bar. It means that you can do links in HTML as `<a
href=“#HelloThere”>go</a>` and in Markdown as `[example
link](#HelloThere).`

We still need to make startup.js more modular
2014-05-03 12:20:28 +01:00
Jermolene
b2c1331c11 Fix oversight in isDraftModified
If the original tiddler doesn’t exist then we should count the draft as
always having been modified
2014-05-03 12:12:07 +01:00
Xavier Cazin
f81df69395 Change references to editions/clientserver into editions/server 2014-05-03 13:10:36 +02:00
Jermolene
a5e9ef9b5f Adopt new URL scheme for permalinks
Instead of using `%00` as a separator we do the more conventional
`#!<target-title>:<story filter>`.
2014-05-03 11:32:55 +01:00
Xavier Cazin
7783378603 fr-FR translations for shadow tiddlers and binary content warnings 2014-05-02 23:00:13 +02:00
Jermolene
327b53a641 Start adding support for permalinks
At this point we respect any permalink at startup, but we don’t yet
dynamically update the permalink, nor do we respond to ongoing
permalink changes.

The permalink separator being `%00` seems like it might be a bit
controversial. It buys us not having to wrap tiddler titles in double
square brackets if they contain spaces.

Another thing is that this scheme doesn’t support tiddler filters; the
plan is to support them like this:

http://tiddlywiki.com/#!Target%00%00[tag[task]sort[created]]
2014-05-02 19:21:32 +01:00
Jermolene
cb914ae853 Remove dead code typo 2014-05-02 18:07:47 +01:00
Jermolene
a4294b55f0 Add banner for binary tiddlers in edit mode
Makes it easier to add tags to a binary tiddler (eg a PDF).
2014-05-02 09:43:39 +01:00
Jermolene
bced7124e4 Accept single quotes for attributes in TW files 2014-05-01 17:58:49 +01:00
Jermolene
f5848c395a Fix problem with editing tiddler titles
The check whether a draft has been modified was ignoring changes to the
title.

Fixes #593
2014-05-01 17:39:37 +01:00
Jermolene
f6bd3b8c37 Optimise the all filter operator
Seems like quite a decent optimisation.
2014-04-30 22:50:47 +01:00
Jermolene
21b2d6fdc7 Allow filter operators to return an iterator
Previously filter operators were only permitted to return an array of
tiddler titles
2014-04-30 22:50:17 +01:00
Jermolene
bd3e955821 Add compound iterators to boot wiki object 2014-04-30 22:49:28 +01:00
Jermolene
fcb26419a6 Clear the tiddler event queue on startup
To avoid an unnecessary refresh cycle
2014-04-30 22:49:02 +01:00
Jermolene
a6f7da6c1c Suppress refresh cycle if no tiddlers have changed 2014-04-30 22:48:36 +01:00
Jeremy Ruston
f82f8ae7c6 Merge pull request #589 from BramChen/master
Add chinese messages for editing/overridden a shadow tiddler
2014-04-29 09:04:44 +01:00
Jermolene
edb8c65d54 Update release note 2014-04-29 09:03:47 +01:00
Jermolene
031c0f4146 Update HelloThere 2014-04-29 09:03:39 +01:00
Bram Chen
e8316cf0ac Add chinese messages for editing/overridden a shadow tiddler 2014-04-29 15:32:19 +08:00
Jermolene
0ac4c2b554 Allow digits in field names 2014-04-28 15:54:32 +01:00
Jermolene
84cd296c58 Minor tweaks to shadow warning infrastructure
1. Moved some methods out of boot.js because they are not needed until
after bootup
2. Added alternate message for editing an overridden shadow tiddler
3. Minor style tweaks
2014-04-28 15:16:31 +01:00
Jeremy Ruston
a90339d1e5 Merge pull request #586 from sukima/feature/issue-570-cancle-unchanged-drafts
Fix issue #570 Make it harder to accidentally modify a shadow tiddler
2014-04-28 13:22:44 +01:00
Jermolene
d49495ab73 Add docs for "field" filter operator
Fixes #588
2014-04-28 12:54:34 +01:00
Jeremy Ruston
5fa6d001f8 Merge pull request #587 from BramChen/master
Update chinese editions
2014-04-28 09:36:32 +01:00
Jermolene
f17dafefcb Docs updates 2014-04-28 09:33:47 +01:00
Bram Chen
88314d968a Add build targets to chinese editions 2014-04-28 16:11:57 +08:00
Bram Chen
28bab707b9 Update chinese translations for Help tiddlers 2014-04-28 16:02:58 +08:00
Devin Weaver
075cf544e4 Use new get filter from commit 570cad1c 2014-04-27 17:15:42 -04:00
Devin Weaver
a505b6ffc0 Move isModified from Tiddler to Wiki
Replace this with a $tw.wiki.isModifiedTiddler(title) as part of the
wiki object. This allows it to be used outside of the current Wiki which
can change.
2014-04-27 17:15:42 -04:00
Devin Weaver
23a71b433e Rename isEqual to isArrayEqual 2014-04-27 17:15:42 -04:00
Devin Weaver
3bbe53a58e Move shadowWarning to it's own template segment 2014-04-27 17:15:42 -04:00
Devin Weaver
8556e0ea49 Fix coding style 2014-04-27 17:15:42 -04:00
Devin Weaver
3be21853e1 Add warning box while editing a shadow tiddler
This addresses the third line item of issue #570

TODO: The filter is not working.
TODO: The message is too genaric and needs help.
2014-04-27 17:15:42 -04:00
Devin Weaver
d0636f2124 Add a confirmation to edit a shadow tiddler
Should only display the confirmation if the shadow tiddler has not been
overridden in the first place. It checks this by looking for the
existence of a modified field for which the default system based shadow
do not have until a user changes them.

This addresses the second line item on issue #570

We will need new translations for the added string
`ConfirmEditShadowTiddler`
2014-04-27 17:15:42 -04:00
Devin Weaver
5226c7a2fa Prevent saving un-modified tiddlers
When saving a tiddler we check to see if the tiddler has changed
(isModified) if it hasn't then bounce the event to tw-cancel-tiddler
instead.

Addresses first line item in issue #570
2014-04-27 17:15:42 -04:00
Devin Weaver
3a78465d2d Add isModified to Tiddler object
Adds a check to see if this tiddler differers from the tiddler
referenced in the draft.of field. It iterates of the fields property
skiping those feilds that offer a false positives. Uses the isEqual util
for the tags array.
2014-04-27 17:15:42 -04:00
Devin Weaver
23640d7af4 Add isDraft to Tiddler object
Check to see if this tiddler is a draft (has a draft.of field)
2014-04-27 17:15:42 -04:00
Devin Weaver
540681b2bc Add $tw.util.isEqual
This checks to see if an array is equal. Should handle case where an
array is considered null or undefined. It short circuits when the
lengths are different and will only loop when needed.
2014-04-27 17:15:42 -04:00
Devin Weaver
8611867930 Remove dead code 💀 2014-04-27 17:15:41 -04:00
Jermolene
77152ac577 Update release note 2014-04-27 21:58:59 +01:00
Jermolene
f5bd99fa73 Fix tests for 385c7e207c 2014-04-27 21:58:41 +01:00
Jermolene
385c7e207c Refactor wiki.filterTiddlers()
Now we pass a widget instead of the current tiddler title. We can use
widget.getVariable(“currentTiddler”) to get the current tiddler.
2014-04-27 20:03:33 +01:00
Jermolene
61c204366f Replace hamburger icon with double chevron
Fixes #580

Seems much better, especially since the chevron gives us two clear
visual states (left vs. right). The hamburger doesn’t really have a
commonly accepted way of indicating whether the menu is currently open
or not.
2014-04-27 19:28:30 +01:00
Jermolene
570cad1c7f Add 'get' filter operator
Prompted by @sukima’s work on #586
2014-04-27 18:45:01 +01:00
Jeremy Ruston
1d0dc60a2d Merge pull request #574 from pekopeko1/japanese
Updated Japanese Translation
2014-04-27 08:47:59 +01:00
Jeremy Ruston
fac0affa7b Merge pull request #584 from xcazin/fr-FR
fr-FR translations for new Help tiddlers + changes to previous ones.
2014-04-27 08:46:59 +01:00
Jeremy Ruston
f57241abbd Merge pull request #585 from BramChen/master
Update chinese translations for Help tiddlers
2014-04-27 08:46:41 +01:00
Jermolene
e9557b578e Improve output directory handling
This change is likely to break most existing scripts that call
TiddlyWiki.

TL;DR - output paths are now relative to the editions/output folder,
rather than to the current folder

See [[Notes for upgrading to 5.0.11-beta]] for details.
2014-04-27 08:28:21 +01:00
Jermolene
649f68288a Add build targets to the core editions 2014-04-26 17:11:56 +01:00
pekopeko1
37c50bae61 merged with latest master 2014-04-27 00:14:41 +09:00
pekopeko1
9ab31e37ea fix plugin.info author 2014-04-26 23:11:31 +09:00
pekopeko1
30707e2f19 revert unnecessary .gitignore change 2014-04-26 23:09:42 +09:00
Bram Chen
1fb76ae56d Fix typo 2014-04-26 20:10:02 +08:00
Bram Chen
4008191459 Update chinese translations for Help tiddlers 2014-04-26 19:52:45 +08:00
Xavier Cazin
463bd0517c fr-FR translation for new Help tiddlers 2014-04-26 11:56:40 +02:00
Xavier Cazin
fb3a31ae43 Typo: Set => Clear 2014-04-26 11:12:59 +02:00
Jermolene
f7e50e0950 Add --build command
First pass at the build system described in #356.

To test it, move to a new, empty directory and try `tiddlywiki
editions/tw5.com --verbose --build`
2014-04-25 22:41:59 +01:00
Jermolene
552657fc58 Fix text parser to use codeblocks
This means that JavaScript and JSON tiddlers will be properly
highlighted if the highlight plugin is loaded.
2014-04-24 19:41:07 +01:00
Jermolene
d727046948 Revise number of tiddlers in recent changes list
Going back to 100; 250 was a typo.
2014-04-24 12:22:31 +01:00
Jermolene
f6ca7d92e5 Fix docs typo
Fixes #575
2014-04-24 11:59:51 +01:00
Jermolene
148e77b0e4 Clean up obsolete macro definition
Fixes #576
2014-04-24 11:58:42 +01:00
Jermolene
cc60ad1428 Fixed topbar hover for Firefox
Pesky Firefox browser crankiness.

Fixes #579
2014-04-24 11:33:14 +01:00
Jermolene
fecf3a556f Update JS macro docs 2014-04-24 11:08:23 +01:00
Jeremy Ruston
39ef0ad88f Merge pull request #581 from mwfogleman/tid-mode
Refer Emacs docs to tid-mode, not tid-time.
2014-04-24 09:01:27 +01:00
Michael Fogleman
f75826224b Refer Emacs docs to tid-mode, not tid-time. 2014-04-24 11:39:37 +05:30
Jeremy Ruston
52f28a1cc3 Merge pull request #578 from sukima/feature/sign-cla-sukima
Add @sukima to cla-individual.md
2014-04-22 15:49:35 +01:00
Jermolene
61c3f8a5ba Remove wikitext tiddlers from "types" sidebar tab 2014-04-22 11:44:27 +01:00
Devin Weaver
13da54b9bd Add @sukima to cla-individual.md 2014-04-21 18:26:04 -04:00
pekopeko1
680414d1c5 edited 'shadow' translation 2014-04-20 23:33:27 +09:00
pekopeko1
2c7d5c5964 merged @ogoshima's translation 2014-04-20 23:24:35 +09:00
Jermolene
3d69c929d9 Add more warnings about backups 2014-04-19 14:42:22 +01:00
Jeremy Ruston
8cbcfee346 Merge pull request #573 from pmario/fix-concepts-tiddlerfields-lingo
Fix "description" column in TiddlerFields
2014-04-19 14:23:06 +01:00
Jermolene
43173c801f Adjust version number for 5.0.11 2014-04-19 14:22:25 +01:00
Mario Pietsch
523faf71fb change modified date 2014-04-19 15:16:12 +02:00
Mario Pietsch
ad2bbb2c93 tiddler: TiddlerFields - fix the description column. 2014-04-19 15:11:20 +02:00
Jermolene
8756d25d78 Version number update for 5.0.10-beta 2014-04-19 14:07:48 +01:00
Jermolene
8a27c2759b Update 5.0.10 release date 2014-04-19 14:06:29 +01:00
Jermolene
beddcd7138 New ribbon colour for 5.0.10 2014-04-19 13:15:24 +01:00
Jermolene
2db90378a2 Release note updates for 5.0.10 2014-04-19 11:34:23 +01:00
Jermolene
7684891285 Move topbar out of the way of scrollbars
In the process getting rid of some extraneous `<p>` tags.

Fixes #566
2014-04-19 11:32:56 +01:00
Jermolene
821f1f1428 Fix hamburger and seamless behaviour
No longer remove the tiddler borders when hiding the sidebar; users can
select Seamless theme to get the same effect.

Fixes #566
2014-04-19 11:24:41 +01:00
Jermolene
4538f081ee Release note updates for 5.0.10 2014-04-19 11:22:59 +01:00
Jermolene
b4122be50c Update release note for 5.0.10 2014-04-19 11:18:08 +01:00
Jermolene
cd76514105 Update roadmap 2014-04-19 09:36:14 +01:00
Jermolene
ba576d9f1b Add support for safe mode 2014-04-19 09:36:08 +01:00
Jermolene
15d0c27e2a Add [is[tag]] filter operator 2014-04-18 17:57:55 +01:00
Jermolene
869cec1ccc Add docs for date format strings 2014-04-18 17:37:13 +01:00
Jermolene
d6054f1039 Fix problem with offline copy of server edition
We were accidentally including all the shadow tiddlers as well as
ordinary ones.
2014-04-18 15:23:00 +01:00
Jermolene
9fbe72a877 Rearrange system tag configuration
By rearranging the `[all[]]` operator we are able to ensure that shadow
tiddlers get processed before ordinary tiddlers. This makes it easier
to create custom stylesheets that override the core.
2014-04-18 09:28:14 +01:00
Jermolene
89165fc51d Fix problem with sorting date fields
Introduced a couple of commits ago when the localeCompare() stuff was
added.
2014-04-17 22:52:57 +01:00
Jermolene
4758874d13 Add path conversions from TiddlyWiki Classic
TiddlyWiki Classic converts local file URIs to various local native
formats. The same conversions are now performed by the TiddlyFox
adaptor for TW5.
2014-04-17 22:30:14 +01:00
Jermolene
0153fd2a30 Correct typos in 5.0.9 release note 2014-04-17 20:26:35 +01:00
Jermolene
bb42c0ab36 Use localCompare for sorting strings
So that accented characters get sorted correctly. Or at least as
correctly as browsers allow.
2014-04-17 20:15:52 +01:00
Jermolene
95d291daac Update print stylesheet to hide topbar 2014-04-17 19:50:12 +01:00
Jermolene
45b0966013 Support the image widget in markdown 2014-04-17 16:50:54 +01:00
Jermolene
de07da3797 Revise warning about backing up before upgrading 2014-04-17 16:26:57 +01:00
Jeremy Ruston
aebc1ea943 Merge pull request #562 from pmario/upgrade-backup-info
add a backup info for the Upgrade tiddler.
2014-04-17 16:24:57 +01:00
Jermolene
73cfd10218 Fix regression with untagged filter operator
Restored previous behaviour of considering a missing tiddler to be
untagged.
2014-04-17 16:10:50 +01:00
Jermolene
d336ffea02 Fix incorrect background colour for sidebar tag pills
Fixes #568.
2014-04-17 15:11:59 +01:00
Jermolene
6da28e7365 Docs update 2014-04-17 14:44:14 +01:00
Jermolene
d08a2d109f Fix html parser tests 2014-04-17 14:43:24 +01:00
Jermolene
f57e047877 Fix issues with tiddlers with null fields
Fixing #567
2014-04-17 14:43:12 +01:00
Jermolene
df5fe10a40 Start release note for 5.0.10 2014-04-17 12:52:52 +01:00
Jermolene
433ac8e96e Typo fix 2014-04-17 12:52:38 +01:00
Jermolene
ad4b03506a Added wikitext image support
We’ve added a parser to recognise the `[img[URL or tiddler title]]`
format, and an associated image widget.
2014-04-17 12:52:32 +01:00
Jermolene
ace57dd205 Refactor utilities out of HTML parser
Some of the functions are useful general purpose parser helpers.
2014-04-17 12:00:32 +01:00
Jermolene
bd4a031df8 Fix problem with version checking logic
Previously, importing a plugin with a semantically identical version
number was not rejected. This meant that attempts to import
5.0.9-prerelease wikis into 5.0.9-beta led to a corrupted wiki, with a
beta core and prerelease plugins.
2014-04-17 11:59:42 +01:00
Jermolene
6db94052c7 Prepare for 5.0.10 release 2014-04-17 11:58:16 +01:00
Mario Pietsch
dd8797223a add a backup info for the Upgrade tiddler. 2014-04-16 01:09:26 +02:00
Jermolene
e54b0d7129 Docs fixes 2014-04-15 21:50:36 +01:00
Jermolene
07ab8c75b8 Docs fixes 2014-04-15 21:48:19 +01:00
OGOSHI Masayuki
5bcc666f34 Update some translations. 2014-04-16 02:40:49 +09:00
OGOSHI Masayuki
6bef1d6b30 Update command line helps Japanese Translation. 2014-04-15 23:44:05 +09:00
OGOSHI Masayuki
09cf788063 Merge branch 'master' into ja-JP 2014-04-14 17:03:16 +09:00
OGOSHI Masayuki
4d0b08d464 some translations corrected. 2014-04-13 15:52:41 +09:00
OGOSHI Masayuki
5447420832 1st time ja-JP translation commit. 2014-04-13 15:35:36 +09:00
803 changed files with 23177 additions and 9659 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
.DS_Store
tmp/
output/

View File

@@ -2,22 +2,13 @@
rem build TiddlyWiki 2.x
rem create a temporary directory if it doesn't already exist
setlocal enableextensions
mkdir tmp\tw2
setlocal disableextensions
rem Delete any existing content
del /q /s tmp\tw2
echo.
rem Prepare the readme file from the revelant content in the tw5.com wiki
node .\tiddlywiki.js ^
editions\tw5.com ^
--verbose ^
--rendertiddler TiddlyWiki2ReadMe editions\tw2\readme.md text/html ^
--output editions\tw2 ^
--rendertiddler TiddlyWiki2ReadMe readme.md text/html ^
|| exit 1
rem cook the TiddlyWiki 2.x.x index file
@@ -25,8 +16,9 @@ rem cook the TiddlyWiki 2.x.x index file
node .\tiddlywiki.js ^
editions\tw2 ^
--verbose ^
--output tmp\tw2 ^
--load editions\tw2\source\tiddlywiki.com\index.html.recipe ^
--rendertiddler $:/core/templates/tiddlywiki2.template.html .\tmp\tw2\index.html text/plain ^
--rendertiddler $:/core/templates/tiddlywiki2.template.html index.html text/plain ^
|| exit 1
fc tmp\tw2\index.html editions\tw2\target\prebuilt.html

10
2bld.sh
View File

@@ -2,16 +2,13 @@
# build TiddlyWiki 2.x
# create a temporary directory if it doesn't already exist
mkdir -p tmp
mkdir -p tmp/tw2
# Prepare the readme file from the revelant content in the tw5.com wiki
node ./tiddlywiki.js \
editions/tw5.com \
--verbose \
--rendertiddler TiddlyWiki2ReadMe editions/tw2/readme.md text/html \
--output editions/tw2 \
--rendertiddler TiddlyWiki2ReadMe readme.md text/html \
|| exit 1
# cook the TiddlyWiki 2.x.x index file
@@ -19,8 +16,9 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
editions/tw2 \
--verbose \
--output tmp/tw2 \
--load editions/tw2/source/tiddlywiki.com/index.html.recipe \
--rendertiddler $:/core/templates/tiddlywiki2.template.html ./tmp/tw2/index.html text/plain \
--rendertiddler $:/core/templates/tiddlywiki2.template.html index.html text/plain \
|| exit 1
diff -q tmp/tw2/index.html editions/tw2/target/prebuilt.html

View File

@@ -25,28 +25,32 @@ echo "tiddlywiki.com" > $TW5_BUILD_OUTPUT/CNAME
node ./tiddlywiki.js \
./editions/de-AT-DE \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/de-AT-DE.html text/plain \
--savetiddler $:/favicon.ico $TW5_BUILD_OUTPUT/favicon.ico \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all de-AT-DE.html text/plain \
--savetiddler $:/favicon.ico favicon.ico \
|| exit 1
node ./tiddlywiki.js \
./editions/zh-Hant \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/zh-Hant.html text/plain \
--savetiddler $:/favicon.ico $TW5_BUILD_OUTPUT/favicon.ico \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all zh-Hant.html text/plain \
--savetiddler $:/favicon.ico favicon.ico \
|| exit 1
node ./tiddlywiki.js \
./editions/zh-Hans \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/zh-Hans.html text/plain \
--savetiddler $:/favicon.ico $TW5_BUILD_OUTPUT/favicon.ico \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all zh-Hans.html text/plain \
--savetiddler $:/favicon.ico favicon.ico \
|| exit 1
node ./tiddlywiki.js \
./editions/fr-FR \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/fr-FR.html text/plain \
--savetiddler $:/favicon.ico $TW5_BUILD_OUTPUT/favicon.ico \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all fr-FR.html text/plain \
--savetiddler $:/favicon.ico favicon.ico \
|| exit 1

44
bld.cmd
View File

@@ -34,18 +34,19 @@ rem static.html: the static version of the default tiddlers
node .\tiddlywiki.js ^
.\editions\tw5.com ^
--verbose ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\index.html text/plain ^
--savetiddler $:/favicon.ico %TW5_BUILD_OUTPUT%\favicon.ico ^
--rendertiddler ReadMe .\readme.md text/html ^
--rendertiddler ContributingTemplate .\contributing.md text/html ^
--rendertiddler $:/core/copyright.txt .\licenses\copyright.md text/plain ^
--rendertiddler $:/editions/tw5.com/download-empty %TW5_BUILD_OUTPUT%\empty.html text/plain ^
--rendertiddler $:/editions/tw5.com/download-empty %TW5_BUILD_OUTPUT%\empty.hta text/plain ^
--savetiddler $:/green_favicon.ico %TW5_BUILD_OUTPUT%/static/favicon.ico ^
--rendertiddler $:/core/templates/static.template.html %TW5_BUILD_OUTPUT%\static.html text/plain ^
--rendertiddler $:/core/templates/alltiddlers.template.html %TW5_BUILD_OUTPUT%\alltiddlers.html text/plain ^
--rendertiddler $:/core/templates/static.template.css %TW5_BUILD_OUTPUT%\static\static.css text/plain ^
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html %TW5_BUILD_OUTPUT%\static text/plain ^
--output . ^
--build readmes ^
--output %TW5_BUILD_OUTPUT% ^
--build favicon empty static index ^
|| exit 1
rem upgrade.html: custom edition for handling upgrades
node .\tiddlywiki.js ^
.\editions\upgrade ^
--verbose ^
--output %TW5_BUILD_OUTPUT% ^
--build upgrade ^
|| exit 1
rem encrypted.html: a version of the main file encrypted with the password "password"
@@ -53,8 +54,8 @@ rem encrypted.html: a version of the main file encrypted with the password "pass
node .\tiddlywiki.js ^
.\editions\tw5.com ^
--verbose ^
--password password ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\encrypted.html text/plain ^
--output %TW5_BUILD_OUTPUT% ^
--build encrypted ^
|| exit 1
rem tahoelafs.html: empty wiki with plugin for Tahoe-LAFS
@@ -62,7 +63,8 @@ rem tahoelafs.html: empty wiki with plugin for Tahoe-LAFS
node .\tiddlywiki.js ^
.\editions\tahoelafs ^
--verbose ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\tahoelafs.html text/plain ^
--output %TW5_BUILD_OUTPUT% ^
--rendertiddler $:/core/save/all tahoelafs.html text/plain ^
|| exit 1
rem d3demo.html: wiki to demo d3 plugin
@@ -70,7 +72,8 @@ rem d3demo.html: wiki to demo d3 plugin
node .\tiddlywiki.js ^
.\editions\d3demo ^
--verbose ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\d3demo.html text/plain ^
--output %TW5_BUILD_OUTPUT% ^
--rendertiddler $:/core/save/all d3demo.html text/plain ^
|| exit 1
rem codemirrordemo.html: wiki to demo codemirror plugin
@@ -78,7 +81,8 @@ rem codemirrordemo.html: wiki to demo codemirror plugin
node .\tiddlywiki.js ^
.\editions\codemirrordemo ^
--verbose ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\codemirrordemo.html text/plain ^
--output %TW5_BUILD_OUTPUT% ^
--rendertiddler $:/core/save/all codemirrordemo.html text/plain ^
|| exit 1
rem markdowndemo.html: wiki to demo markdown plugin
@@ -86,7 +90,8 @@ rem markdowndemo.html: wiki to demo markdown plugin
node .\tiddlywiki.js ^
.\editions\markdowndemo ^
--verbose ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\markdowndemo.html text/plain ^
--output %TW5_BUILD_OUTPUT% ^
--rendertiddler $:/core/save/all markdowndemo.html text/plain ^
|| exit 1
@@ -95,7 +100,8 @@ rem highlightdemo.html: wiki to demo highlight plugin
node .\tiddlywiki.js ^
.\editions\highlightdemo ^
--verbose ^
--rendertiddler $:/core/save/all %TW5_BUILD_OUTPUT%\highlightdemo.html text/plain ^
--output %TW5_BUILD_OUTPUT% ^
--rendertiddler $:/core/save/all highlightdemo.html text/plain ^
|| exit 1
rem Make the CNAME file that GitHub Pages requires

44
bld.sh
View File

@@ -35,18 +35,19 @@ rm $TW5_BUILD_OUTPUT/static/*
node ./tiddlywiki.js \
./editions/tw5.com \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/index.html text/plain \
--savetiddler $:/favicon.ico $TW5_BUILD_OUTPUT/favicon.ico \
--rendertiddler ReadMe ./readme.md text/html \
--rendertiddler ContributingTemplate ./contributing.md text/html \
--rendertiddler $:/core/copyright.txt ./licenses/copyright.md text/plain \
--rendertiddler $:/editions/tw5.com/download-empty $TW5_BUILD_OUTPUT/empty.html text/plain \
--rendertiddler $:/editions/tw5.com/download-empty $TW5_BUILD_OUTPUT/empty.hta text/plain \
--savetiddler $:/green_favicon.ico $TW5_BUILD_OUTPUT/static/favicon.ico \
--rendertiddler $:/core/templates/static.template.html $TW5_BUILD_OUTPUT/static.html text/plain \
--rendertiddler $:/core/templates/alltiddlers.template.html $TW5_BUILD_OUTPUT/alltiddlers.html text/plain \
--rendertiddler $:/core/templates/static.template.css $TW5_BUILD_OUTPUT/static/static.css text/plain \
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html $TW5_BUILD_OUTPUT/static text/plain \
--output . \
--build readmes \
--output $TW5_BUILD_OUTPUT \
--build favicon empty static index \
|| exit 1
# upgrade.html: custom edition for handling upgrades
node ./tiddlywiki.js \
./editions/upgrade \
--verbose \
--output $TW5_BUILD_OUTPUT \
--build upgrade \
|| exit 1
# encrypted.html: a version of the main file encrypted with the password "password"
@@ -54,8 +55,8 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
./editions/tw5.com \
--verbose \
--password password \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/encrypted.html text/plain \
--output $TW5_BUILD_OUTPUT \
--build encrypted \
|| exit 1
# tahoelafs.html: empty wiki with plugin for Tahoe-LAFS
@@ -63,7 +64,8 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
./editions/tahoelafs \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/tahoelafs.html text/plain \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all tahoelafs.html text/plain \
|| exit 1
# d3demo.html: wiki to demo d3 plugin
@@ -71,7 +73,8 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
./editions/d3demo \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/d3demo.html text/plain \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all d3demo.html text/plain \
|| exit 1
# codemirrordemo.html: wiki to demo codemirror plugin
@@ -79,7 +82,8 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
./editions/codemirrordemo \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/codemirrordemo.html text/plain \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all codemirrordemo.html text/plain \
|| exit 1
# markdowndemo.html: wiki to demo markdown plugin
@@ -87,7 +91,8 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
./editions/markdowndemo \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/markdowndemo.html text/plain \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all markdowndemo.html text/plain \
|| exit 1
# highlightdemo.html: wiki to demo highlight plugin
@@ -95,7 +100,8 @@ node ./tiddlywiki.js \
node ./tiddlywiki.js \
./editions/highlightdemo \
--verbose \
--rendertiddler $:/core/save/all $TW5_BUILD_OUTPUT/highlightdemo.html text/plain \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all highlightdemo.html text/plain \
|| exit 1
# Run the test edition to run the Node.js tests and to generate test.html for tests in the browser

View File

@@ -33,7 +33,6 @@ if(!$tw) {
}
$tw.utils = $tw.utils || Object.create(null);
$tw.boot = $tw.boot || Object.create(null);
/////////////////////////// Standard node.js libraries
@@ -46,6 +45,11 @@ if($tw.node) {
/////////////////////////// Utility functions
$tw.boot.log = function(str) {
$tw.boot.logMessages = $tw.boot.logMessages || [];
$tw.boot.logMessages.push(str);
}
/*
Check if an object has a property
*/
@@ -131,7 +135,7 @@ $tw.utils.error = function(err) {
promptMsg = "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser";
// Log the error to the console
console.error(err);
if($tw.browser) {
if($tw.browser && !$tw.node) {
// Display an error message to the user
var dm = $tw.utils.domMaker,
heading = dm("h1",{text: errHeading}),
@@ -146,7 +150,7 @@ $tw.utils.error = function(err) {
return false;
},true);
return null;
} else {
} else if(!$tw.browser) {
// Exit if we're under node.js
process.exit(1);
}
@@ -155,7 +159,7 @@ $tw.utils.error = function(err) {
/*
Use our custom error handler if we're in the browser
*/
if($tw.browser) {
if($tw.boot.tasks.trapErrors) {
window.onerror = function(errorMsg,url,lineNumber) {
$tw.utils.error(errorMsg);
return false;
@@ -183,11 +187,11 @@ $tw.utils.deepDefaults = function(object /*, sourceObjectList */) {
$tw.utils.each(Array.prototype.slice.call(arguments,1),function(source) {
if(source) {
for (var p in source) {
if(object[p] == null) {
if(object[p] === null || object[p] === undefined) {
object[p] = source[p];
}
if(typeof object[p] === "object" && typeof source[p] === "object") {
$tw.utils.deepDefaults(object[p],source[p]);
$tw.utils.deepDefaults(object[p],source[p]);
}
}
}
@@ -202,6 +206,14 @@ $tw.utils.htmlDecode = function(s) {
return s.toString().replace(/&lt;/mg,"<").replace(/&nbsp;/mg,"\xA0").replace(/&gt;/mg,">").replace(/&quot;/mg,"\"").replace(/&amp;/mg,"&");
};
/*
Get the browser location.hash. We don't use location.hash because of the way that Firefox auto-urldecodes it (see http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash)
*/
$tw.utils.getLocationHash = function() {
var parts = window.location.href.split('#');
return "#" + (parts.length > 1 ? parts[1] : "");
};
/*
Pad a string to a given length with "0"s. Length defaults to 2
*/
@@ -218,8 +230,8 @@ $tw.utils.pad = function(value,length) {
$tw.utils.stringifyDate = function(value) {
return value.getUTCFullYear() +
$tw.utils.pad(value.getUTCMonth() + 1) +
$tw.utils.pad(value.getUTCDate()) +
$tw.utils.pad(value.getUTCHours()) +
$tw.utils.pad(value.getUTCDate()) +
$tw.utils.pad(value.getUTCHours()) +
$tw.utils.pad(value.getUTCMinutes()) +
$tw.utils.pad(value.getUTCSeconds()) +
$tw.utils.pad(value.getUTCMilliseconds(),3);
@@ -258,14 +270,14 @@ $tw.utils.stringifyList = function(value) {
// Parse a string array from a bracketted list. For example "OneTiddler [[Another Tiddler]] LastOne"
$tw.utils.parseStringArray = function(value) {
if(typeof value === "string") {
var memberRegExp = /(?:^|\s)(?:\[\[(.*?)\]\])(?=\s|$)|(\S+)/mg,
var memberRegExp = /(?:^|[^\S\xA0])(?:\[\[(.*?)\]\])(?=[^\S\xA0]|$)|([\S\xA0]+)/mg,
results = [],
match;
do {
match = memberRegExp.exec(value);
if(match) {
var item = match[1] || match[2];
if(results.indexOf(item) === -1) {
if(item !== undefined && results.indexOf(item) === -1) {
results.push(item);
}
}
@@ -301,7 +313,6 @@ name `.` refers to the current directory
*/
$tw.utils.resolvePath = function(sourcepath,rootpath) {
// If the source path starts with ./ or ../ then it is relative to the root
if(sourcepath.substr(0,2) === "./" || sourcepath.substr(0,3) === "../" ) {
var src = sourcepath.split("/"),
root = rootpath.split("/");
@@ -352,7 +363,7 @@ $tw.utils.parseVersion = function(version) {
};
/*
Returns true if the version string A is greater than the version string B
Returns true if the version string A is greater than the version string B. Returns true if the versions are the same
*/
$tw.utils.checkVersions = function(versionStringA,versionStringB) {
var defaultVersion = {
@@ -369,7 +380,8 @@ $tw.utils.checkVersions = function(versionStringA,versionStringB) {
];
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);
};
/*
@@ -380,8 +392,8 @@ options: {flags: flags,deserializerType: deserializerType}
*/
$tw.utils.registerFileType = function(type,encoding,extension,options) {
options = options || {};
$tw.config.fileExtensionInfo[extension] = {type: type};
$tw.config.contentTypeInfo[type] = {encoding: encoding, extension: extension, flags: options.flags || [], deserializerType: options.deserializerType || type};
$tw.config.fileExtensionInfo[extension] = {type: type};
$tw.config.contentTypeInfo[type] = {encoding: encoding, extension: extension, flags: options.flags || [], deserializerType: options.deserializerType || type};
};
/*
@@ -413,7 +425,7 @@ $tw.utils.evalGlobal = function(code,context,filename) {
if($tw.browser) {
fn = window["eval"](code + "\n\n//# sourceURL=" + filename);
} else {
fn = vm.runInThisContext(code,filename);
fn = vm.runInThisContext(code,filename);
}
// Call the function and return the exports
return fn.apply(null,contextValues);
@@ -553,7 +565,7 @@ Crypto helper object for encrypted content. It maintains the password text in a
the password, and to encrypt/decrypt a block of text
*/
$tw.utils.Crypto = function() {
var sjcl = $tw.browser ? window.sjcl : require("./sjcl.js"),
var sjcl = $tw.node ? require("./sjcl.js") : window.sjcl,
currentPassword = null,
callSjcl = function(method,inputText,password) {
password = password || currentPassword;
@@ -564,7 +576,7 @@ $tw.utils.Crypto = function() {
}
} catch(ex) {
console.log("Crypto error:" + ex);
outputText = null;
outputText = null;
}
return outputText;
};
@@ -603,7 +615,7 @@ $tw.modules.execute = function(moduleName,moduleRoot) {
tiddler = $tw.wiki.getTiddler(name) || $tw.wiki.getTiddler(name + ".js") || $tw.wiki.getTiddler(moduleName) || $tw.wiki.getTiddler(moduleName + ".js") ,
_exports = {},
sandbox = {
module: {},
module: {exports: _exports},
//moduleInfo: moduleInfo,
exports: _exports,
console: console,
@@ -652,7 +664,7 @@ $tw.modules.execute = function(moduleName,moduleRoot) {
return window.require(moduleName);
} catch(e) {}
}
throw "Cannot find module named '" + moduleName + "' required by module '" + moduleRoot + "', resolved to " + name;
throw "Cannot find module named '" + moduleName + "' required by module '" + moduleRoot + "', resolved to " + name;
} else {
// If we don't have a module with that name, let node.js try to find it
return require(moduleName);
@@ -668,6 +680,9 @@ $tw.modules.execute = function(moduleName,moduleRoot) {
} else if(typeof moduleInfo.definition === "string") { // String
moduleInfo.exports = _exports;
$tw.utils.evalSandboxed(moduleInfo.definition,sandbox,tiddler.fields.title);
if(sandbox.module.exports) {
moduleInfo.exports = sandbox.module.exports; //more codemirror workaround
}
} else { // Object
moduleInfo.exports = moduleInfo.definition;
}
@@ -749,7 +764,7 @@ $tw.Tiddler = function(/* [fields,] fields */) {
var arg = arguments[c],
src = (arg instanceof $tw.Tiddler) ? arg.fields : arg;
for(var t in src) {
if(src[t] === undefined) {
if(src[t] === undefined || src[t] === null) {
if(t in this.fields) {
delete this.fields[t]; // If we get a field that's undefined, delete any previous field value
}
@@ -764,7 +779,7 @@ $tw.Tiddler = function(/* [fields,] fields */) {
}
// Freeze the field to keep it immutable
if(typeof value === "object") {
Object.freeze(value);
Object.freeze(value);
}
this.fields[t] = value;
}
@@ -834,7 +849,7 @@ $tw.Wiki = function(options) {
tiddlers[title] = tiddler;
this.clearCache(title);
this.clearGlobalCache();
this.enqueueTiddlerEvent(title);
this.enqueueTiddlerEvent(title);
}
}
};
@@ -884,6 +899,37 @@ $tw.Wiki = function(options) {
}
};
// Iterate through all tiddlers and then the shadows
this.eachTiddlerPlusShadows = function(callback) {
for(var title in tiddlers) {
callback(tiddlers[title],title);
}
for(var title in shadowTiddlers) {
if(!Object.prototype.hasOwnProperty.call(tiddlers,title)) {
var shadowInfo = shadowTiddlers[title];
callback(shadowInfo.tiddler,title);
}
}
};
// Iterate through all the shadows and then the tiddlers
this.eachShadowPlusTiddlers = function(callback) {
for(var title in shadowTiddlers) {
if(Object.prototype.hasOwnProperty.call(tiddlers,title)) {
callback(tiddlers[title],title);
} else {
var shadowInfo = shadowTiddlers[title];
callback(shadowInfo.tiddler,title);
}
}
for(var title in tiddlers) {
if(!Object.prototype.hasOwnProperty.call(shadowTiddlers,title)) {
callback(tiddlers[title],title);
}
}
};
// Test for the existence of a tiddler
this.tiddlerExists = function(title) {
return !!$tw.utils.hop(tiddlers,title);
@@ -921,19 +967,22 @@ $tw.Wiki = function(options) {
this.registerPluginTiddlers = function(pluginType,titles) {
var self = this,
registeredTitles = [],
checkTiddler = function(tiddler) {
checkTiddler = function(tiddler,title) {
if(tiddler && tiddler.fields.type === "application/json" && tiddler.fields["plugin-type"] === pluginType) {
pluginTiddlers.push(tiddler);
registeredTitles.push(tiddler.fields.title);
var disablingTiddler = self.getTiddler("$:/config/Plugins/Disabled/" + title);
if(title === "$:/core" || !disablingTiddler || (disablingTiddler.fields.text || "").trim() !== "yes") {
pluginTiddlers.push(tiddler);
registeredTitles.push(tiddler.fields.title);
}
}
};
if(titles) {
$tw.utils.each(titles,function(title) {
checkTiddler(self.getTiddler(title));
checkTiddler(self.getTiddler(title),title);
});
} else {
this.each(function(tiddler,title) {
checkTiddler(tiddler);
checkTiddler(tiddler,title);
});
}
return registeredTitles;
@@ -994,15 +1043,15 @@ $tw.Wiki = function(options) {
};
// Dummy methods that will be filled in after boot
$tw.Wiki.prototype.clearCache =
$tw.Wiki.prototype.clearGlobalCache =
$tw.Wiki.prototype.clearCache =
$tw.Wiki.prototype.clearGlobalCache =
$tw.Wiki.prototype.enqueueTiddlerEvent = function() {};
// Add an array of tiddlers
$tw.Wiki.prototype.addTiddlers = function(tiddlers) {
for(var t=0; t<tiddlers.length; t++) {
this.addTiddler(tiddlers[t]);
}
}
};
/*
@@ -1043,6 +1092,37 @@ $tw.Wiki.prototype.defineShadowModules = function() {
});
};
/*
Enable safe mode by deleting any tiddlers that override a shadow tiddler
*/
$tw.Wiki.prototype.processSafeMode = function() {
var self = this,
overrides = [];
// Find the overriding tiddlers
this.each(function(tiddler,title) {
if(self.isShadowTiddler(title)) {
console.log(title);
overrides.push(title);
}
});
// Assemble a report tiddler
var titleReportTiddler = "TiddlyWiki Safe Mode",
report = [];
report.push("TiddlyWiki has been started in [[safe mode|http://tiddlywiki.com/static/SafeMode.html]]. Most customisations have been disabled by renaming the following tiddlers:")
// Delete the overrides
overrides.forEach(function(title) {
var tiddler = self.getTiddler(title),
newTitle = "SAFE: " + title;
self.deleteTiddler(title);
self.addTiddler(new $tw.Tiddler(tiddler, {title: newTitle}));
report.push("* [[" + title + "|" + newTitle + "]]");
});
report.push()
this.addTiddler(new $tw.Tiddler({title: titleReportTiddler, text: report.join("\n\n")}));
// Set $:/DefaultTiddlers to point to our report
this.addTiddler(new $tw.Tiddler({title: "$:/DefaultTiddlers", text: "[[" + titleReportTiddler + "]]"}));
};
/*
Extracts tiddlers from a typed block of text, specifying default field values
*/
@@ -1098,8 +1178,6 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/tid","tiddlerdeserializer",{
}
if(split.length >= 2) {
fields.text = split.slice(1).join("\n\n");
} else {
fields.text = "";
}
return [fields];
}
@@ -1155,7 +1233,7 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/json","tiddlerdeserializer",{
/////////////////////////// Browser definitions
if($tw.browser) {
if($tw.browser && !$tw.node) {
/*
Decrypt any tiddlers stored within the element with the ID "encryptedArea". The function is asynchronous to allow the user to be prompted for a password
@@ -1274,13 +1352,10 @@ $tw.loadTiddlersBrowser = function() {
}
};
// End of if($tw.browser)
}
} else {
/////////////////////////// Server definitions
if(!$tw.browser) {
/*
Get any encrypted tiddlers
*/
@@ -1289,7 +1364,7 @@ $tw.boot.decryptEncryptedTiddlers = function(callback) {
callback();
};
}
} // End of if($tw.browser && !$tw.node)
/////////////////////////// Node definitions
@@ -1353,7 +1428,7 @@ $tw.loadTiddlersFromPath = function(filepath,excludeRegExp) {
} else {
// If not, read all the files in the directory
$tw.utils.each(files,function(file) {
if(!excludeRegExp.test(file)) {
if(!excludeRegExp.test(file) && file !== "plugin.info") {
tiddlers.push.apply(tiddlers,$tw.loadTiddlersFromPath(filepath + path.sep + file,excludeRegExp));
}
});
@@ -1370,53 +1445,102 @@ Load the tiddlers from a plugin folder, and package them up into a proper JSON p
*/
$tw.loadPluginFolder = function(filepath,excludeRegExp) {
excludeRegExp = excludeRegExp || $tw.boot.excludeRegExp;
var stat, files, pluginInfo, pluginTiddlers = [], f, file, titlePrefix, t;
if(fs.existsSync(filepath)) {
stat = fs.statSync(filepath);
if(stat.isDirectory()) {
// Read the plugin information
pluginInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "plugin.info","utf8"));
// Read the plugin files
files = fs.readdirSync(filepath);
for(f=0; f<files.length; f++) {
file = files[f];
if(!excludeRegExp.test(file) && file !== "plugin.info" && file !== "tiddlywiki.files") {
var tiddlerFiles = $tw.loadTiddlersFromPath(filepath + path.sep + file,excludeRegExp);
$tw.utils.each(tiddlerFiles,function(tiddlerFile) {
pluginTiddlers.push.apply(pluginTiddlers,tiddlerFile.tiddlers);
});
}
}
// Save the plugin tiddlers into the plugin info
pluginInfo.tiddlers = pluginInfo.tiddlers || Object.create(null);
for(t=0; t<pluginTiddlers.length; t++) {
if(pluginTiddlers[t].title) {
pluginInfo.tiddlers[pluginTiddlers[t].title] = pluginTiddlers[t];
if(fs.existsSync(filepath) && fs.statSync(filepath).isDirectory()) {
// Read the plugin information
var pluginInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "plugin.info","utf8"));
// Read the plugin files
var pluginFiles = $tw.loadTiddlersFromPath(filepath,excludeRegExp);
// Save the plugin tiddlers into the plugin info
pluginInfo.tiddlers = pluginInfo.tiddlers || Object.create(null);
for(var f=0; f<pluginFiles.length; f++) {
var tiddlers = pluginFiles[f].tiddlers;
for(var t=0; t<tiddlers.length; t++) {
var tiddler= tiddlers[t];
if(tiddler.title) {
pluginInfo.tiddlers[tiddler.title] = tiddler;
}
}
}
}
// Give the plugin the same version number as the core if it doesn't have one
if(pluginInfo && !("version" in pluginInfo)) {
pluginInfo.version = $tw.packageInfo.version;
}
// Save the plugin tiddler
if(pluginInfo) {
var fields = {
title: pluginInfo.title,
type: "application/json",
text: JSON.stringify({tiddlers: pluginInfo.tiddlers},null,4),
"plugin-priority": pluginInfo["plugin-priority"],
"name": pluginInfo["name"],
"version": pluginInfo["version"],
"thumbnail": pluginInfo["thumbnail"],
"description": pluginInfo["description"],
"plugin-type": pluginInfo["plugin-type"] || "plugin",
"dependents": $tw.utils.stringifyList(pluginInfo["dependents"] || [])
// Give the plugin the same version number as the core if it doesn't have one
if(!("version" in pluginInfo)) {
pluginInfo.version = $tw.packageInfo.version;
}
return fields;
// Use "plugin" as the plugin-type if we don't have one
if(!("plugin-type" in pluginInfo)) {
pluginInfo["plugin-type"] = "plugin";
}
pluginInfo.dependents = pluginInfo.dependents || [];
pluginInfo.type = "application/json";
// Set plugin text
pluginInfo.text = JSON.stringify({tiddlers: pluginInfo.tiddlers},null,4);
delete pluginInfo.tiddlers;
// Deserialise array fields (currently required for the dependents field)
for(var field in pluginInfo) {
if($tw.utils.isArray(pluginInfo[field])) {
pluginInfo[field] = $tw.utils.stringifyList(pluginInfo[field]);
}
}
return pluginInfo;
} else {
return null;
return null;
}
};
/*
name: Name of the plugin to find
paths: array of file paths to search for it
Returns the path of the plugin folder
*/
$tw.findLibraryItem = function(name,paths) {
var pathIndex = 0;
do {
var pluginPath = path.resolve(paths[pathIndex],"./" + name)
if(fs.existsSync(pluginPath) && fs.statSync(pluginPath).isDirectory()) {
return pluginPath;
}
} while(++pathIndex < paths.length);
return null;
};
/*
name: Name of the plugin to load
paths: array of file paths to search for it
*/
$tw.loadPlugin = function(name,paths) {
var pluginPath = $tw.findLibraryItem(name,paths);
if(pluginPath) {
var pluginFields = $tw.loadPluginFolder(pluginPath);
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
}
}
};
/*
libraryPath: Path of library folder for these plugins (relative to core path)
envVar: Environment variable name for these plugins
Returns an array of search paths
*/
$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(":"));
}
return pluginPaths;
};
/*
plugins: Array of names of plugins (eg, "tiddlywiki/filesystemadaptor")
libraryPath: Path of library folder for these plugins (relative to core path)
envVar: Environment variable name for these plugins
*/
$tw.loadPlugins = function(plugins,libraryPath,envVar) {
if(plugins) {
var pluginPaths = $tw.getLibraryItemSearchPaths(libraryPath,envVar);
for(var t=0; t<plugins.length; t++) {
$tw.loadPlugin(plugins[t],pluginPaths);
}
}
};
@@ -1448,36 +1572,10 @@ $tw.loadWikiTiddlers = function(wikiPath,parentPaths) {
}
});
}
// Load any plugins listed in the wiki info file
if(wikiInfo.plugins) {
var pluginBasePath = path.resolve($tw.boot.corePath,$tw.config.pluginsPath);
for(var t=0; t<wikiInfo.plugins.length; t++) {
pluginFields = $tw.loadPluginFolder(path.resolve(pluginBasePath,"./" + wikiInfo.plugins[t]));
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
}
}
}
// Load any themes listed in the wiki info file
if(wikiInfo.themes) {
var themesBasePath = path.resolve($tw.boot.corePath,$tw.config.themesPath);
for(var t=0; t<wikiInfo.themes.length; t++) {
pluginFields = $tw.loadPluginFolder(path.resolve(themesBasePath,"./" + wikiInfo.themes[t]));
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
}
}
}
// Load any languages listed in the wiki info file
if(wikiInfo.languages) {
var languagesBasePath = path.resolve($tw.boot.corePath,$tw.config.languagesPath);
for(var t=0; t<wikiInfo.languages.length; t++) {
pluginFields = $tw.loadPluginFolder(path.resolve(languagesBasePath,"./" + wikiInfo.languages[t]));
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
}
}
}
// Load any plugins, themes and languages listed in the wiki info file
$tw.loadPlugins(wikiInfo.plugins,$tw.config.pluginsPath,$tw.config.pluginsEnvVar);
$tw.loadPlugins(wikiInfo.themes,$tw.config.themesPath,$tw.config.themesEnvVar);
$tw.loadPlugins(wikiInfo.languages,$tw.config.languagesPath,$tw.config.languagesEnvVar);
// Load the wiki files, registering them as writable
var resolvedWikiPath = path.resolve(wikiPath,$tw.config.wikiTiddlersSubDir);
$tw.utils.each($tw.loadTiddlersFromPath(resolvedWikiPath),function(tiddlerFile) {
@@ -1493,20 +1591,21 @@ $tw.loadWikiTiddlers = function(wikiPath,parentPaths) {
$tw.wiki.addTiddlers(tiddlerFile.tiddlers);
});
// Save the original tiddler file locations if requested
if(wikiInfo.config && wikiInfo.config["retain-original-tiddler-path"]) {
var output = [];
var config = wikiInfo.config || {};
if(config["retain-original-tiddler-path"]) {
var output = {};
for(var title in $tw.boot.files) {
output.push(title + ": " + path.relative(resolvedWikiPath,$tw.boot.files[title].filepath) + "\n");
output[title] = path.relative(resolvedWikiPath,$tw.boot.files[title].filepath);
}
$tw.wiki.addTiddler({title: "$:/config/OriginalTiddlerPaths", type: "application/x-tiddler-dictionary", text: output.join("")});
$tw.wiki.addTiddler({title: "$:/config/OriginalTiddlerPaths", type: "application/json", text: JSON.stringify(output)});
}
// Save the path to the tiddlers folder for the filesystemadaptor
$tw.boot.wikiTiddlersPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiTiddlersSubDir);
$tw.boot.wikiTiddlersPath = path.resolve($tw.boot.wikiPath,config["default-tiddler-location"] || $tw.config.wikiTiddlersSubDir);
// Load any plugins within the wiki folder
var wikiPluginsPath = path.resolve(wikiPath,$tw.config.wikiPluginsSubDir);
if(fs.existsSync(wikiPluginsPath)) {
var pluginFolders = fs.readdirSync(wikiPluginsPath);
for(t=0; t<pluginFolders.length; t++) {
for(var t=0; t<pluginFolders.length; t++) {
pluginFields = $tw.loadPluginFolder(path.resolve(wikiPluginsPath,"./" + pluginFolders[t]));
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
@@ -1517,7 +1616,7 @@ $tw.loadWikiTiddlers = function(wikiPath,parentPaths) {
var wikiThemesPath = path.resolve(wikiPath,$tw.config.wikiThemesSubDir);
if(fs.existsSync(wikiThemesPath)) {
var themeFolders = fs.readdirSync(wikiThemesPath);
for(t=0; t<themeFolders.length; t++) {
for(var t=0; t<themeFolders.length; t++) {
pluginFields = $tw.loadPluginFolder(path.resolve(wikiThemesPath,"./" + themeFolders[t]));
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
@@ -1528,7 +1627,7 @@ $tw.loadWikiTiddlers = function(wikiPath,parentPaths) {
var wikiLanguagesPath = path.resolve(wikiPath,$tw.config.wikiLanguagesSubDir);
if(fs.existsSync(wikiLanguagesPath)) {
var languageFolders = fs.readdirSync(wikiLanguagesPath);
for(t=0; t<languageFolders.length; t++) {
for(var t=0; t<languageFolders.length; t++) {
pluginFields = $tw.loadPluginFolder(path.resolve(wikiLanguagesPath,"./" + languageFolders[t]));
if(pluginFields) {
$tw.wiki.addTiddler(pluginFields);
@@ -1551,17 +1650,25 @@ $tw.loadTiddlersNode = function() {
}
};
// End of if($tw.node)
// End of if($tw.node)
}
/////////////////////////// Main startup function called once tiddlers have been decrypted
/*
Startup TiddlyWiki. Options are:
readBrowserTiddlers: whether to read tiddlers from the HTML file we're executing within; if not, tiddlers are read from the file system with Node.js APIs
Startup TiddlyWiki
*/
$tw.boot.startup = function(options) {
options = options || {};
// Get the URL hash and check for safe mode
$tw.locationHash = "#";
if($tw.browser && !$tw.node) {
if(location.hash === "#:safe") {
$tw.safeMode = true;
} else {
$tw.locationHash = $tw.utils.getLocationHash();
}
}
// Initialise some more $tw properties
$tw.utils.deepDefaults($tw,{
modules: { // Information about each module
@@ -1578,12 +1685,17 @@ $tw.boot.startup = function(options) {
wikiThemesSubDir: "./themes",
wikiLanguagesSubDir: "./languages",
wikiTiddlersSubDir: "./tiddlers",
wikiOutputSubDir: "./output",
jsModuleHeaderRegExpString: "^\\/\\*\\\\(?:\\r?\\n)((?:^[^\\r\\n]*(?:\\r?\\n))+?)(^\\\\\\*\\/$(?:\\r?\\n)?)",
fileExtensionInfo: Object.create(null), // Map file extension to {type:}
contentTypeInfo: Object.create(null) // Map type to {encoding:,extension:}
contentTypeInfo: Object.create(null), // Map type to {encoding:,extension:}
pluginsEnvVar: "TIDDLYWIKI_PLUGIN_PATH",
themesEnvVar: "TIDDLYWIKI_THEME_PATH",
languagesEnvVar: "TIDDLYWIKI_LANGUAGE_PATH",
editionsEnvVar: "TIDDLYWIKI_EDITION_PATH"
}
});
if(!options.readBrowserTiddlers) {
if(!$tw.boot.tasks.readBrowserTiddlers) {
// For writable tiddler files, a hashmap of title to {filepath:,type:,hasMetaFile:}
$tw.boot.files = Object.create(null);
// System paths and filenames
@@ -1618,6 +1730,8 @@ $tw.boot.startup = function(options) {
$tw.utils.registerFileType("text/plain","utf8",".txt");
$tw.utils.registerFileType("text/css","utf8",".css");
$tw.utils.registerFileType("text/html","utf8",".html");
$tw.config.fileExtensionInfo[".htm"] = {type: "text/html"};
$tw.config.fileExtensionInfo[".hta"] = {type: "text/html"};
$tw.utils.registerFileType("application/hta","utf16le",".hta",{deserializerType:"text/html"});
$tw.utils.registerFileType("application/javascript","utf8",".js");
$tw.utils.registerFileType("application/json","utf8",".json");
@@ -1636,7 +1750,7 @@ $tw.boot.startup = function(options) {
$tw.Wiki.tiddlerDeserializerModules = Object.create(null);
$tw.modules.applyMethods("tiddlerdeserializer",$tw.Wiki.tiddlerDeserializerModules);
// Load tiddlers
if(options.readBrowserTiddlers) {
if($tw.boot.tasks.readBrowserTiddlers) {
$tw.loadTiddlersBrowser();
} else {
$tw.loadTiddlersNode();
@@ -1645,6 +1759,10 @@ $tw.boot.startup = function(options) {
$tw.wiki.readPluginInfo();
$tw.wiki.registerPluginTiddlers("plugin");
$tw.wiki.unpackPluginTiddlers();
// Process "safe mode"
if($tw.safeMode) {
$tw.wiki.processSafeMode();
}
// Register typed modules from the tiddlers we've just loaded
$tw.wiki.defineTiddlerModules();
// And any modules within plugins
@@ -1653,12 +1771,114 @@ $tw.boot.startup = function(options) {
if($tw.crypto) {
$tw.crypto.updateCryptoStateTiddler();
}
// Run any startup modules
// Gather up any startup modules
$tw.boot.remainingStartupModules = []; // Array of startup modules
$tw.modules.forEachModuleOfType("startup",function(title,module) {
if(module.startup) {
module.startup();
$tw.boot.remainingStartupModules.push(module);
}
});
// Keep track of the startup tasks that have been executed
$tw.boot.executedStartupModules = Object.create(null);
$tw.boot.disabledStartupModules = $tw.boot.disabledStartupModules || [];
// Repeatedly execute the next eligible task
$tw.boot.executeNextStartupTask();
};
/*
Execute the remaining eligible startup tasks
*/
$tw.boot.executeNextStartupTask = function() {
// Find the next eligible task
var taskIndex = 0, task,
asyncTaskCallback = function() {
if(task.name) {
$tw.boot.executedStartupModules[task.name] = true;
}
return $tw.boot.executeNextStartupTask();
};
while(taskIndex < $tw.boot.remainingStartupModules.length) {
task = $tw.boot.remainingStartupModules[taskIndex];
if($tw.boot.isStartupTaskEligible(task)) {
// Remove this task from the list
$tw.boot.remainingStartupModules.splice(taskIndex,1);
// Assemble log message
var s = ["Startup task:",task.name];
if(task.platforms) {
s.push("platforms:",task.platforms.join(","));
}
if(task.after) {
s.push("after:",task.after.join(","));
}
if(task.before) {
s.push("before:",task.before.join(","));
}
$tw.boot.log(s.join(" "));
// Execute task
if(!$tw.utils.hop(task,"synchronous") || task.synchronous) {
task.startup();
if(task.name) {
$tw.boot.executedStartupModules[task.name] = true;
}
return $tw.boot.executeNextStartupTask();
} else {
task.startup(asyncTaskCallback);
return true;
}
}
taskIndex++;
}
return false;
};
/*
Returns true if we are running on one platforms specified in a task modules `platforms` array
*/
$tw.boot.doesTaskMatchPlatform = function(taskModule) {
var platforms = taskModule.platforms;
if(platforms) {
for(var t=0; t<platforms.length; t++) {
if((platforms[t] === "browser" && !$tw.browser) || (platforms[t] === "node" && !$tw.node)) {
return false;
}
}
}
return true;
};
$tw.boot.isStartupTaskEligible = function(taskModule) {
var t;
// Check that the platform is correct
if(!$tw.boot.doesTaskMatchPlatform(taskModule)) {
return false;
}
var name = taskModule.name,
remaining = $tw.boot.remainingStartupModules;
if(name) {
// Fail if this module is disabled
if($tw.boot.disabledStartupModules.indexOf(name) !== -1) {
return false;
}
// Check that no other outstanding tasks must be executed before this one
for(t=0; t<remaining.length; t++) {
var task = remaining[t];
if(task.before && task.before.indexOf(name) !== -1) {
if($tw.boot.doesTaskMatchPlatform(task) || (task.name && $tw.boot.disabledStartupModules.indexOf(name) !== -1)) {
return false;
}
}
}
}
// Check that all of the tasks that we must be performed after has been done
var after = taskModule.after;
if(after) {
for(t=0; t<after.length; t++) {
if(!$tw.boot.executedStartupModules[after[t]]) {
return false;
}
}
}
return true;
};
/////////////////////////// Main boot function to decrypt tiddlers and then startup
@@ -1667,15 +1887,13 @@ $tw.boot.boot = function() {
// Initialise crypto object
$tw.crypto = new $tw.utils.Crypto();
// Initialise password prompter
if($tw.browser) {
if($tw.browser && !$tw.node) {
$tw.passwordPrompt = new $tw.utils.PasswordPrompt();
}
// Preload any encrypted tiddlers
$tw.boot.decryptEncryptedTiddlers(function() {
// Startup
$tw.boot.startup({
readBrowserTiddlers: !!$tw.browser
});
$tw.boot.startup();
});
};

View File

@@ -16,13 +16,20 @@ var _bootprefix = (function($tw) {
"use strict";
$tw = $tw || {};
$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;
// Set default boot tasks
$tw.boot.tasks = {
trapErrors: !!($tw.browser && !$tw.node),
readBrowserTiddlers: !!($tw.browser && !$tw.node)
};
/*
Information about each module is kept in an object with these members:
moduleType: type of module

File diff suppressed because one or more lines are too long

12
core/acknowledgements.tid Normal file
View File

@@ -0,0 +1,12 @@
title: $:/Acknowledgements
type: text/vnd.tiddlywiki
TiddlyWiki incorporates code from these fine OpenSource projects:
* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]
* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]
* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]
And media from these projects:
* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]

View File

@@ -1,3 +0,0 @@
title: $:/config/EditorTypeMappings/image/gif
bitmap

View File

@@ -1,3 +0,0 @@
title: $:/config/EditorTypeMappings/image/jpeg
bitmap

View File

@@ -1,3 +0,0 @@
title: $:/config/EditorTypeMappings/image/jpg
bitmap

View File

@@ -1,3 +0,0 @@
title: $:/config/EditorTypeMappings/image/png
bitmap

View File

@@ -1,3 +0,0 @@
title: $:/config/EditorTypeMappings/image/x-icon
bitmap

View File

@@ -1,3 +0,0 @@
title: $:/config/EditorTypeMappings/text/vnd.tiddlywiki
text

8
core/icon.tid Normal file
View File

@@ -0,0 +1,8 @@
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>

View File

@@ -0,0 +1,9 @@
title: $:/core/images/chevron-left
tags: $:/tags/Image
<svg class="tw-image-chevron-left tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128" version="1.1">
<g>
<path d="M97.7982405,98.1688105 L152.184015,43.4979042 C155.938662,39.7236635 155.938662,33.6043964 152.184015,29.8301557 C148.429583,26.0559364 142.342116,26.0559364 138.587684,29.8301557 L91.0000107,77.667222 L43.4123803,29.8301557 C39.6578195,26.0559364 33.5704813,26.0559364 29.8159206,29.8301557 C26.0613598,33.6043964 26.0613598,39.7236635 29.8159206,43.4979042 L84.2017595,98.1688105 C87.9563202,101.943051 94.0436798,101.943051 97.7982405,98.1688126 L97.7982405,98.1688105 Z" transform="translate(91.000000, 63.999491) rotate(-270.000000) translate(-91.000000, -63.999491) "></path>
<path d="M43.7982405,98.1688105 L98.1840153,43.4979042 C101.938662,39.7236635 101.938662,33.6043964 98.1840153,29.8301557 C94.4295828,26.0559364 88.3421164,26.0559364 84.5876838,29.8301557 L37.0000107,77.667222 L-10.5876197,29.8301557 C-14.3421805,26.0559364 -20.4295187,26.0559364 -24.1840794,29.8301557 C-27.9386402,33.6043964 -27.9386402,39.7236635 -24.1840794,43.4979042 L30.2017595,98.1688105 C33.9563202,101.943051 40.0436798,101.943051 43.7982405,98.1688126 L43.7982405,98.1688105 Z" transform="translate(37.000000, 63.999491) rotate(-270.000000) translate(-37.000000, -63.999491) "></path>
</g>
</svg>

View File

@@ -0,0 +1,9 @@
title: $:/core/images/chevron-right
tags: $:/tags/Image
<svg class="tw-image-chevron-right tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g>
<path d="M97.7982405,98.1688105 L152.184015,43.4979042 C155.938662,39.7236635 155.938662,33.6043964 152.184015,29.8301557 C148.429583,26.0559364 142.342116,26.0559364 138.587684,29.8301557 L91.0000107,77.667222 L43.4123803,29.8301557 C39.6578195,26.0559364 33.5704813,26.0559364 29.8159206,29.8301557 C26.0613598,33.6043964 26.0613598,39.7236635 29.8159206,43.4979042 L84.2017595,98.1688105 C87.9563202,101.943051 94.0436798,101.943051 97.7982405,98.1688126 L97.7982405,98.1688105 Z" transform="translate(91.000000, 63.999491) rotate(-90.000000) translate(-91.000000, -63.999491) "></path>
<path d="M43.7982405,98.1688105 L98.1840153,43.4979042 C101.938662,39.7236635 101.938662,33.6043964 98.1840153,29.8301557 C94.4295828,26.0559364 88.3421164,26.0559364 84.5876838,29.8301557 L37.0000107,77.667222 L-10.5876197,29.8301557 C-14.3421805,26.0559364 -20.4295187,26.0559364 -24.1840794,29.8301557 C-27.9386402,33.6043964 -27.9386402,39.7236635 -24.1840794,43.4979042 L30.2017595,98.1688105 C33.9563202,101.943051 40.0436798,101.943051 43.7982405,98.1688126 L43.7982405,98.1688105 Z" transform="translate(37.000000, 63.999491) rotate(-90.000000) translate(-37.000000, -63.999491) "></path>
</g>
</svg>

View File

@@ -0,0 +1,9 @@
title: $:/core/images/clone-button
tags: $:/tags/Image
<svg class="tw-clone-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z"></path>
<path d="M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,15 @@
title: $:/core/images/close-all-button
tags: $:/tags/Image
<svg class="tw-close-all-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M53.9827008,89.3556477 C56.4275461,87.3639978 57.9887999,84.3311393 57.9887999,80.9340168 C57.9887999,74.9354419 53.1208368,70.0726361 47.1158999,70.0726361 C44.078736,70.0726361 41.3324226,71.3165963 39.359689,73.3222993 L39.3567754,73.3194062 L3.099103,109.537527 L3.10272197,109.541128 C1.18328516,111.499774 0,114.181157 0,117.138619 C0,123.137194 4.86796314,128 10.8729,128 C13.8490664,128 16.5459476,126.805505 18.5093193,124.870257 L18.5232339,124.884102 L53.9827008,89.3556477 Z"></path>
<path d="M53.9827008,19.3556477 C56.4275461,17.3639978 57.9887999,14.3311393 57.9887999,10.9340168 C57.9887999,4.93544186 53.1208368,0.0726360641 47.1158999,0.0726360641 C44.078736,0.0726360641 41.3324226,1.31659634 39.359689,3.3222993 L39.3567754,3.31940621 L3.099103,39.5375274 L3.10272197,39.5411281 C1.18328516,41.4997737 0,44.1811574 0,47.1386193 C0,53.1371942 4.86796314,58 10.8729,58 C13.8490664,58 16.5459476,56.8055047 18.5093193,54.870257 L18.5232339,54.8841017 L53.9827008,19.3556477 Z"></path>
<path d="M123.982701,19.3556477 C126.427546,17.3639978 127.9888,14.3311393 127.9888,10.9340168 C127.9888,4.93544186 123.120837,0.0726360641 117.1159,0.0726360641 C114.078736,0.0726360641 111.332423,1.31659634 109.359689,3.3222993 L109.356775,3.31940621 L73.099103,39.5375274 L73.102722,39.5411281 C71.1832852,41.4997737 70,44.1811574 70,47.1386193 C70,53.1371942 74.8679631,58 80.8729,58 C83.8490664,58 86.5459476,56.8055047 88.5093193,54.870257 L88.5232339,54.8841017 L123.982701,19.3556477 Z"></path>
<path d="M123.982701,89.3556477 C126.427546,87.3639978 127.9888,84.3311393 127.9888,80.9340168 C127.9888,74.9354419 123.120837,70.0726361 117.1159,70.0726361 C114.078736,70.0726361 111.332423,71.3165963 109.359689,73.3222993 L109.356775,73.3194062 L73.099103,109.537527 L73.102722,109.541128 C71.1832852,111.499774 70,114.181157 70,117.138619 C70,123.137194 74.8679631,128 80.8729,128 C83.8490664,128 86.5459476,126.805505 88.5093193,124.870257 L88.5232339,124.884102 L123.982701,89.3556477 Z"></path>
<path d="M19.0968372,73.831398 C17.1051319,71.5224249 14.1594885,70.0611168 10.8729,70.0611168 C4.87432504,70.0611168 0.0115192444,74.92908 0.0115192444,80.9340168 C0.0115192444,84.1948309 1.44542995,87.1203819 3.71646837,89.1132541 L39.4956787,124.931536 L39.5183554,124.908745 C41.4770057,126.828213 44.1584112,128.011519 47.1158999,128.011519 C53.1144749,128.011519 57.9772807,123.143556 57.9772807,117.138619 C57.9772807,113.981762 56.6333409,111.139133 54.4869671,109.152809 L19.0968372,73.831398 Z"></path>
<path d="M19.0968372,3.83139798 C17.1051319,1.52242486 14.1594885,0.0611168197 10.8729,0.0611168197 C4.87432504,0.0611168197 0.0115192444,4.92907996 0.0115192444,10.9340168 C0.0115192444,14.1948309 1.44542995,17.1203819 3.71646837,19.1132541 L39.4956787,54.9315363 L39.5183554,54.908745 C41.4770057,56.8282126 44.1584112,58.0115192 47.1158999,58.0115192 C53.1144749,58.0115192 57.9772807,53.1435561 57.9772807,47.1386193 C57.9772807,43.9817625 56.6333409,41.1391325 54.4869671,39.1528094 L19.0968372,3.83139798 Z"></path>
<path d="M89.0968372,3.83139798 C87.1051319,1.52242486 84.1594885,0.0611168197 80.8729,0.0611168197 C74.874325,0.0611168197 70.0115192,4.92907996 70.0115192,10.9340168 C70.0115192,14.1948309 71.4454299,17.1203819 73.7164684,19.1132541 L109.495679,54.9315363 L109.518355,54.908745 C111.477006,56.8282126 114.158411,58.0115192 117.1159,58.0115192 C123.114475,58.0115192 127.977281,53.1435561 127.977281,47.1386193 C127.977281,43.9817625 126.633341,41.1391325 124.486967,39.1528094 L89.0968372,3.83139798 Z"></path>
<path d="M89.0968372,73.831398 C87.1051319,71.5224249 84.1594885,70.0611168 80.8729,70.0611168 C74.874325,70.0611168 70.0115192,74.92908 70.0115192,80.9340168 C70.0115192,84.1948309 71.4454299,87.1203819 73.7164684,89.1132541 L109.495679,124.931536 L109.518355,124.908745 C111.477006,126.828213 114.158411,128.011519 117.1159,128.011519 C123.114475,128.011519 127.977281,123.143556 127.977281,117.138619 C127.977281,113.981762 126.633341,111.139133 124.486967,109.152809 L89.0968372,73.831398 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/close-others-button
tags: $:/tags/Image
<svg class="tw-image-close-others-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 127">
<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>
</svg>

View File

@@ -0,0 +1,4 @@
title: $:/core/images/download-button
tags: $:/tags/Image
<svg class="tw-image-download-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 129 128"><g fill-rule="evenodd"><path class="tw-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>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/export-button
tags: $:/tags/Image
<svg class="tw-image-export-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M128.078948,81.2190241 L128.078948,103.072887 C128.078948,110.252507 122.258391,116.079527 115.07837,116.079527 L13.0007031,116.079527 C5.81517113,116.079527 0.0001254444,110.256256 0.0001254444,103.072887 L0.0001254444,60.043677 C0.0001254444,52.8640576 5.82068232,47.037037 13.0007031,47.037037 L50.9939627,47.037037 C46.9232966,53.1682159 47.3681412,61.433368 52.4317358,67.049353 L36.0221654,67.049353 C31.0486129,67.049353 27.016752,71.0784493 27.016752,76.0490922 L27.016752,86.0668561 C27.016752,91.0372749 31.0503474,95.0665954 36.0221654,95.0665954 L92.0569077,95.0665954 C97.0304602,95.0665954 101.062321,91.0374991 101.062321,86.0668561 L101.062321,76.6968446 L104.185741,73.5608014 L108.938546,78.3104149 C114.124001,83.4958696 121.907794,84.4351094 128.078948,81.2190241 L128.078948,81.2190241 Z M126.997239,16.6885444 C127.022653,13.3460126 124.333584,10.6569433 120.991052,10.682357 L71.0419165,11.0621275 C67.6993847,11.0875413 64.9691114,13.8178146 64.9436976,17.1603465 C64.9314934,18.7654933 65.5574285,20.3000438 66.6838081,21.4264234 L74.4804244,29.2230397 C76.8259808,31.5685961 76.7968452,35.4006519 74.4153482,37.7821489 L60.4010471,51.79645 C58.0195502,54.1779469 57.9904145,58.0100028 60.3359709,60.3555592 L77.324037,77.3436253 C79.6695934,79.6891817 83.5016493,79.6600461 85.8831462,77.2785491 L99.8974474,63.264248 C102.278944,60.8827511 106.111,60.8536154 108.456557,63.1991718 L116.253173,70.9957881 C118.598729,73.3413446 122.430785,73.3122089 124.812282,70.930712 C125.955921,69.7870731 126.605265,68.2428265 126.617469,66.6376797 L126.997239,16.6885444 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,19 @@
title: $:/core/images/full-screen-button
tags: $:/tags/Image
<svg class="tw-image-full-screen-button tw-image-button" class="tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g>
<g>
<path d="M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z"></path>
</g>
<g transform="translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)">
<path d="M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z"></path>
</g>
<g transform="translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)">
<path d="M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z"></path>
</g>
<g transform="translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)">
<path d="M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z"></path>
</g>
</g>
</svg>

10
core/images/globe.tid Normal file
View File

@@ -0,0 +1,10 @@
title: $:/core/images/globe
tags: $:/tags/Image
<svg class="tw-image-globe tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079"></path>
<path d="M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z"></path>
<path d="M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/import-button
tags: $:/tags/Image
<svg class="tw-image-import-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z" transform="translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) "></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/locked-padlock
tags: $:/tags/Image
<svg class="tw-image-locked-padlock tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/permalink-button
tags: $:/tags/Image
<svg class="tw-image-permalink-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 129 125">
<g fill-rule="evenodd">
<path d="M114,92.0520153 L85.0841463,92.0520153 L77.4459963,128.151367 L64.6248159,128.151367 L72.2629659,92.0520153 L47.8936301,92.0520153 L40.2554801,128.151367 L27.4342997,128.151367 L35.0724497,92.0520153 L17.7047515,92.0520153 L17.7047515,80.1401384 L37.6184997,80.1401384 L44.5292069,47.4961401 L17.7047515,47.4961401 L17.7047515,35.5842633 L46.9843266,35.5842633 L54.6224766,-0.151367188 L67.443657,-0.151367188 L59.805507,35.5842633 L84.1748428,35.5842633 L91.8129928,-0.151367188 L104.634173,-0.151367188 L97.0869535,35.5842633 L114,35.5842633 L114,47.4961401 L94.6318339,47.4961401 L87.7211267,80.1401384 L114,80.1401384 L114,92.0520153 Z M81.8106535,47.4961401 L57.3503873,47.4961401 L50.5306105,80.1401384 L74.8999463,80.1401384 L81.8106535,47.4961401 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,10 @@
title: $:/core/images/permaview-button
tags: $:/tags/Image
<svg class="tw-image-permaview-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M111.6744,92.2645264 L82.9006479,92.2645264 L75.300034,128.289805 L62.5418608,128.289805 L70.1424746,92.2645264 L45.8928971,92.2645264 L38.2922833,128.289805 L25.53411,128.289805 L33.1347239,92.2645264 L15.8523757,92.2645264 L15.8523757,80.3770918 L35.6682618,80.3770918 L42.5450077,47.8000762 L15.8523757,47.8000762 L15.8523757,35.9126416 L44.9880621,35.9126416 L52.588676,0.250337625 L65.3468492,0.250337625 L57.7462354,35.9126416 L81.9958129,35.9126416 L89.5964268,0.250337625 L102.3546,0.250337625 L94.8444696,35.9126416 L111.6744,35.9126416 L111.6744,47.8000762 L92.4014152,47.8000762 L85.5246693,80.3770918 L111.6744,80.3770918 L111.6744,92.2645264 Z M79.643242,47.8000762 L55.3031809,47.8000762 L48.5169186,80.3770918 L72.7664961,80.3770918 L79.643242,47.8000762 Z"></path>
<rect x="15.9992745" y="57.8809888" width="95.528227" height="11.975377"></rect>
<path d="M70.8113396,0.098602426 L83.5061663,0.219342965 L56.0934841,128.105958 L43.968839,128.22602 L70.8113396,0.098602426 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/plugin-generic-language
tags: $:/tags/Image
<svg width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/plugin-generic-plugin
tags: $:/tags/Image
<svg width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/plugin-generic-theme
tags: $:/tags/Image
<svg width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M27.6619958,98.5383065 C27.5690581,98.5388896 27.4761291,98.539182 27.383212,98.539182 C41.5122315,92.2342259 36.7359182,71.4340774 52.2062903,71.4340772 C52.3396942,72.0325374 52.4778143,72.6764878 52.6543744,73.3309353 C41.7206358,71.5725612 42.70852,93.6013809 27.6619958,98.5383065 Z M27.962646,98.5354078 C44.3675979,98.3221342 60.9448114,89.104528 60.944811,79.6231217 C57.0326028,79.6231217 55.0057081,78.1546059 53.8483468,76.2715831 C46.8437297,73.3160546 41.0335584,95.5643154 27.9626323,98.5354081 Z M60.4476718,66.8723739 C57.4632888,63.6421817 54.9582687,60.7541572 53.4305549,58.7453802 C47.3662923,50.7715364 44.307483,54.9700909 40.8462757,58.7453801 C37.3850684,62.5206692 41.7580858,65.5796149 38.4732643,68.2464352 C35.1884428,70.9132556 35.391237,71.8376623 29.8473278,66.9588778 C24.3034186,62.0800933 23.919977,60.7368279 26.4649349,57.9530299 C29.0098928,55.1692318 31.1369568,59.5524845 36.3357237,54.6053302 C41.5344905,49.6581758 37.1673192,45.2736183 37.1673192,45.2736183 C37.1673192,45.2736183 47.9916921,23.1463023 62.4556497,24.7805686 C76.9196074,26.4148348 56.9839048,22.6644011 52.0250205,40.0179431 C49.9018746,47.4478606 52.4201529,45.6971267 56.4460414,48.8353078 C57.8695188,49.9449088 63.120208,53.6842856 69.3136884,58.3372485 C77.8095419,50.1273311 87.3705002,40.8200581 90.1462007,38.0443577 C94.9225135,33.268045 99.6988262,38.0443577 94.9225134,42.8206705 C92.2168565,45.5263274 83.0052228,54.3768782 74.6585455,62.4104777 C84.7196352,70.2010353 95.1107413,79.0341049 95.1107416,82.5307694 C95.1107421,88.9149413 92.3944614,92.7263341 86.6764506,90.6368273 C83.0906414,89.3264812 73.3126471,80.2536547 65.0234105,71.7029822 C62.8994697,73.7599251 61.2357389,75.3821997 60.3189624,76.2989761 C57.6045976,78.4574835 53.6647127,73.2589589 55.5426497,71.5226634 C56.5140946,70.6244887 58.249291,68.9770292 60.4476718,66.8723739 L60.4476718,66.8723739 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/refresh-button
tags: $:/tags/Image
<svg class="tw-image-refresh-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<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>

View File

@@ -0,0 +1,4 @@
title: $:/core/images/right-arrow
tags: $:/tags/Image
<svg class="tw-image-right-arrow tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"><path d="M72.7982405,98.6541105 L127.184015,43.9832042 C130.938662,40.2089635 130.938662,34.0896964 127.184015,30.3154557 C123.429583,26.5412364 117.342116,26.5412364 113.587684,30.3154557 L66.0000107,78.152522 L18.4123803,30.3154557 C14.6578195,26.5412364 8.57048132,26.5412364 4.81592057,30.3154557 C1.06135981,34.0896964 1.06135981,40.2089635 4.81592057,43.9832042 L59.2017595,98.6541105 C62.9563202,102.428351 69.0436798,102.428351 72.7982405,98.6541126 L72.7982405,98.6541105 Z" transform="translate(66.000000, 64.484791) rotate(-90.000000) translate(-66.000000, -64.484791) "/></svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/star-filled
tags: $:/tags/Image
<svg class="tw-image-star-filled tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="nonzero">
<path d="M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,11 @@
title: $:/core/images/storyview-classic
tags: $:/tags/Image
<svg class="tw-image-storyview-classic tw-image-button" width="22pt" height="22pt" viewBox="0 0 129 128">
<g fill-rule="evenodd">
<path d="M9.99919566,0 C4.48152297,0 0.00856547772,4.48053479 0.00856547772,9.99063018 L0.00856547772,118.00937 C0.00856547772,123.527043 4.48910027,128 9.99919566,128 L118.017935,128 C123.535608,128 128.008565,123.519465 128.008565,118.00937 L128.008565,9.99063018 C128.008565,4.47295749 123.528031,0 118.017935,0 L9.99919566,0 Z M9.00856548,9 L9.00856548,119 L119.008565,119 L119.008565,9 L9.00856548,9 Z"></path>
<rect x="16.0098828" y="16" width="96.203165" height="32"></rect>
<rect x="16.0098828" y="55" width="96.203165" height="23"></rect>
<rect x="16.0207797" y="85" width="96.203165" height="24"></rect>
</g>
</svg>

View File

@@ -0,0 +1,12 @@
title: $:/core/images/storyview-pop
tags: $:/tags/Image
<svg class="tw-image-storyview-pop tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M9.99919566,0 C4.48152297,0 0.00856547772,4.48053479 0.00856547772,9.99063018 L0.00856547772,118.00937 C0.00856547772,123.527043 4.48910027,128 9.99919566,128 L118.017935,128 C123.535608,128 128.008565,123.519465 128.008565,118.00937 L128.008565,9.99063018 C128.008565,4.47295749 123.528031,0 118.017935,0 L9.99919566,0 Z M9.00856548,9 L9.00856548,119 L119.008565,119 L119.008565,9 L9.00856548,9 Z"></path>
<rect x="16.0098828" y="16" width="96.203165" height="32"></rect>
<path d="M16.0098828,55 L16.0098828,78 L112.213048,78 L112.213048,55 L16.0098828,55 Z M18.5049414,57.5 L18.5049414,75.5 L109.717989,75.5 L109.717989,57.5 L18.5049414,57.5 Z"></path>
<rect x="25.6164067" y="60.5" width="76.9901172" height="12"></rect>
<rect x="16.0207797" y="85" width="96.203165" height="24"></rect>
</g>
</svg>

View File

@@ -0,0 +1,9 @@
title: $:/core/images/storyview-zoomin
tags: $:/tags/Image
<svg class="tw-image-storyview-zoomin tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M9.99919566,0 C4.48152297,0 0.00856547772,4.48053479 0.00856547772,9.99063018 L0.00856547772,118.00937 C0.00856547772,123.527043 4.48910027,128 9.99919566,128 L118.017935,128 C123.535608,128 128.008565,123.519465 128.008565,118.00937 L128.008565,9.99063018 C128.008565,4.47295749 123.528031,0 118.017935,0 L9.99919566,0 Z M9.00856548,9 L9.00856548,119 L119.008565,119 L119.008565,9 L9.00856548,9 Z"></path>
<rect x="16.0098828" y="16" width="96.203165" height="57.9273639"></rect>
</g>
</svg>

View File

@@ -0,0 +1,9 @@
title: $:/core/images/tag-button
tags: $:/tags/Image
<svg class="tw-image-tag-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<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>

View File

@@ -0,0 +1,12 @@
title: $:/core/images/theme-button
tags: $:/tags/Image
<svg class="tw-image-theme-button tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 129">
<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>
<path d="M48.871084,61.6312522 C45.6348746,64.6233738 52.4243955,73.581882 57.1020034,69.8621716 C65.3329228,61.631253 108.502656,20.4006304 116.733576,12.169711 C124.964495,3.9387916 116.733576,-4.29212771 108.502656,3.9387916 C100.271737,12.1697108 57.4180113,53.7289683 48.871084,61.6312522 Z"></path>
</g>
<path d="M62.2824054,71.6211067 C57.93733,66.8541323 54.3123948,62.6301561 51.9937779,59.5814279 C41.5433616,45.8402704 36.2721798,53.0755512 30.307554,59.5814276 C24.3429282,66.0873041 31.8788571,71.3587209 26.2181932,75.9543964 C20.5575294,80.5500719 20.9070004,82.1430826 11.3532982,73.7355757 C1.79959591,65.3280689 1.13881905,63.0132479 5.52449152,58.2159872 C9.91016399,53.4187265 13.5756887,60.9722938 22.5346144,52.4469667 C31.4935401,43.9216395 23.9676854,36.3658236 23.9676854,36.3658236 C23.9676854,36.3658236 42.6210998,-1.76571499 67.5465342,1.05058165 C92.4719685,3.8668783 58.1171911,-2.5961653 49.5716499,27.3088291 C45.9128772,40.1126497 50.2525733,37.0956468 57.1903023,42.5036084 C59.4792141,44.2878157 67.5103988,50.0176866 77.2457031,57.2905766 C71.4143155,62.9019825 66.2337717,67.8661661 62.2824054,71.6211067 Z M73.4870997,83.4678852 C87.4278174,97.7290403 103.323635,112.360587 109.285731,114.539289 C119.139459,118.140092 123.820369,111.571999 123.820368,100.570289 C123.820367,94.7414103 107.064445,80.3074425 90.2759123,67.2185217 C83.6390655,73.6178 77.7700759,79.2918373 73.4870997,83.4678852 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,8 @@
title: $:/core/images/unlocked-padlock
tags: $:/tags/Image
<svg class="tw-image-unlocked-padlock tw-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z"></path>
</g>
</svg>

View File

@@ -0,0 +1,60 @@
title: $:/language/Buttons/
AdvancedSearch/Caption: advanced search
AdvancedSearch/Hint: Advanced search
Cancel/Caption: cancel
Cancel/Hint: Cancel editing this tiddler
Clone/Caption: clone
Clone/Hint: Clone this tiddler
Close/Caption: close
Close/Hint: Close this tiddler
CloseAll/Caption: close all
CloseAll/Hint: Close all tiddlers
CloseOthers/Caption: close others
CloseOthers/Hint: Close other tiddlers
ControlPanel/Caption: control panel
ControlPanel/Hint: Open control panel
Delete/Caption: delete
Delete/Hint: Delete this tiddler
Edit/Caption: edit
Edit/Hint: Edit this tiddler
Encryption/Caption: encryption
Encryption/Hint: Set or clear a password for saving this wiki
Encryption/ClearPassword/Caption: clear password
Encryption/ClearPassword/Hint: Clear the password and save this wiki without encryption
Encryption/SetPassword/Caption: set password
Encryption/SetPassword/Hint: Set a password for saving this wiki with encryption
FullScreen/Caption: full-screen
FullScreen/Hint: Enter or leave full-screen mode
Import/Caption: import
Import/Hint: Import files
Info/Caption: info
Info/Hint: Show information for this tiddler
Home/Caption: home
Home/Hint: Open the default tiddlers
Language/Caption: language
Language/Hint: Choose the user interface language
NewTiddler/Caption: new tiddler
NewTiddler/Hint: Create a new tiddler
More/Caption: more
More/Hint: More actions
Permalink/Caption: permalink
Permalink/Hint: Set browser address bar to a direct link to this tiddler
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
SaveWiki/Caption: save changes
SaveWiki/Hint: Save changes
StoryView/Caption: storyview
StoryView/Hint: Choose the story visualisation
HideSideBar/Caption: hide sidebar
HideSideBar/Hint: Hide sidebar
ShowSideBar/Caption: show sidebar
ShowSideBar/Hint: Show sidebar
TagManager/Caption: tag manager
TagManager/Hint: Open tag manager
Theme/Caption: theme
Theme/Hint: Choose the display theme

View File

@@ -1,9 +1,28 @@
title: $:/language/ControlPanel/
Advanced/Caption: Advanced
Advanced/EditorTypes/Caption: Editor Types
Advanced/EditorTypes/Editor/Caption: Editor
Advanced/EditorTypes/Hint: These tiddlers determine which editor is used to edit specific tiddler types.
Advanced/EditorTypes/Type/Caption: Type
Advanced/Hint: Internal information about this TiddlyWiki
Advanced/LoadedModules/Caption: Loaded Modules
Advanced/LoadedModules/Hint: These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process.
Advanced/Settings/Caption: Settings
Advanced/Settings/Hint: These advanced settings let you customise the behaviour of TiddlyWiki.
Advanced/Settings/NavigationAddressBar/Caption: Navigation Address Bar
Advanced/Settings/NavigationAddressBar/Hint: Behaviour of the browser address bar when navigating to a tiddler:
Advanced/Settings/NavigationAddressBar/No/Description: Do not update the address bar
Advanced/Settings/NavigationAddressBar/Permalink/Description: Include the target tiddler
Advanced/Settings/NavigationAddressBar/Permaview/Description: Include the target tiddler and the current story sequence
Advanced/Settings/NavigationHistory/Caption: Navigation History
Advanced/Settings/NavigationHistory/Hint: Update browser history when navigating to a tiddler:
Advanced/Settings/NavigationHistory/No/Description: Do not update history
Advanced/Settings/NavigationHistory/Yes/Description: Update history
Advanced/Settings/ToolbarButtons/Caption: Toolbar Buttons
Advanced/Settings/ToolbarButtons/Hint: Default toolbar button appearance:
Advanced/Settings/ToolbarButtons/Text/Description: Include text
Advanced/Settings/ToolbarButtons/Icons/Description: Include icon
Advanced/TiddlerFields/Caption: Tiddler Fields
Advanced/TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers).
Appearance/Caption: Appearance
@@ -21,6 +40,14 @@ Appearance/StoryView/Caption: Story View
Appearance/StoryView/Prompt: Current view:
Appearance/Theme/Caption: Theme
Appearance/Theme/Prompt: Current theme:
Appearance/Toolbars/Caption: Toolbars
Appearance/Toolbars/Hint: Select which toolbar buttons are displayed
Appearance/Toolbars/EditToolbar/Caption: Edit Toolbar
Appearance/Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode
Appearance/Toolbars/ViewToolbar/Caption: View Toolbar
Appearance/Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode
Appearance/Toolbars/PageControls/Caption: Page Toolbar
Appearance/Toolbars/PageControls/Hint: Choose which buttons are displayed on the main page toolbar
Basics/AnimDuration/Prompt: Animation duration:
Basics/Caption: Basics
Basics/DefaultTiddlers/BottomHint: Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">retain story ordering</$button>
@@ -37,9 +64,12 @@ Basics/Title/Prompt: Title of this ~TiddlyWiki:
Basics/Username/Prompt: Username for signing edits:
Basics/Version/Prompt: ~TiddlyWiki version:
Plugins/Caption: Plugins
Plugins/Fields/Description: Description
Plugins/Fields/Title: Title
Plugins/Fields/Version: Version
Plugins/Disable/Caption: disable
Plugins/Disable/Hint: Disable this plugin when reloading page
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

View File

@@ -1,7 +1,6 @@
title: $:/language/Docs/ModuleTypes/
animation: Animations that may be used with the RevealWidget.
browser-startup: Startup functions that are only executed in the browser.
command: Commands that can be executed under Node.js.
config: Data to be inserted into `$tw.config`.
filteroperator: Individual filter operator methods.

View File

@@ -6,6 +6,7 @@ alert-highlight: Alert highlight
alert-muted-foreground: Alert muted foreground
background: General background
blockquote-bar: Blockquote bar
dirty-indicator: Unsaved changes indicator
code-background: Code background
code-border: Code border
code-foreground: Code foreground

View File

@@ -1,5 +1,6 @@
title: $:/language/EditTemplate/
Body/External/Hint: This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself
Body/Hint: Use [[wiki text|http://tiddlywiki.com/static/WikiText.html]] to add formatting, images, and dynamic features
Body/Placeholder: Type the text for this tiddler
Body/Preview/Button/Hide: hide preview
@@ -8,6 +9,8 @@ Fields/Add/Button: add
Fields/Add/Name/Placeholder: field name
Fields/Add/Prompt: Add a new field:
Fields/Add/Value/Placeholder: field value
Shadow/Warning: This is a shadow tiddler. Any changes will override the default version
Shadow/OverriddenWarning: This is a modified shadow tiddler. You can revert to the default version by deleting this tiddler
Tags/Add/Button: add
Tags/Add/Placeholder: tag name
Type/Placeholder: content type

View File

@@ -1,5 +1,6 @@
title: $:/language/Docs/Fields/
_canonical_uri: The full URI of an external image tiddler
bag: The name of the bag from which a tiddler came
caption: The text to be displayed on a tab or button
color: The CSS color value associated with a tiddler

View File

@@ -0,0 +1,11 @@
title: $:/language/Help/build
description: Automatically run configured commands
Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.
```
--build <target> [<target> ...]
```
Build targets are defined in the `tiddlywiki.info` file of a wiki folder.

View File

@@ -0,0 +1,8 @@
title: $:/language/Help/clearpassword
description: Clear a password for subsequent crypto operations
Clear the password for subsequent crypto operations
```
--clearpassword
```

View File

@@ -0,0 +1,10 @@
title: $:/language/Help/output
description: Set the base output directory for subsequent commands
Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.
```
--output <pathname>
```
If the specified pathname is relative then it is resolved relative to the current working directory.

View File

@@ -6,3 +6,7 @@ Render an individual tiddler as a specified ContentType, defaults to `text/html`
```
--rendertiddler <title> <filename> [<type>]
```
By default, the filename 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 missing directories in the path to the filename are automatically created.

View File

@@ -12,3 +12,7 @@ For example:
```
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain
```
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.

View File

@@ -6,3 +6,7 @@ Saves an individual tiddler in its raw text or binary format to the specified fi
```
--savetiddler <title> <filename>
```
By default, the filename 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 missing directories in the path to the filename are automatically created.

View File

@@ -0,0 +1,12 @@
title: $:/language/Help/savetiddlers
description: Saves a group of raw tiddlers to a directory
Saves a group of tiddlers in their raw text or binary format to the specified directory.
```
--savetiddlers <filter> <pathname>
```
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 missing directories in the pathname are automatically created.

View File

@@ -6,7 +6,7 @@ The server built in to TiddlyWiki5 is very simple. Although compatible with Tidd
At the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.
```
--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host>
--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>
```
The parameters are:
@@ -18,6 +18,7 @@ The parameters are:
* ''username'' - the default username for signing edits
* ''password'' - optional password for basic authentication
* ''host'' - optional hostname to serve from (defaults to "127.0.0.1" aka "localhost")
* ''pathprefix'' - optional prefix for paths
If the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.

View File

@@ -0,0 +1,18 @@
title: $:/language/Help/setfield
description: Prepares external tiddlers for use
//Note that this command is experimental and may change or be replaced during the TiddlyWiki version 5 beta//
Sets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.
```
--setfield <filter> <fieldname> <templatetitle> <rendertype>
```
The parameters are:
* ''filter'' - filter identifying the tiddlers to be affected
* ''fieldname'' - the field to modify (defaults to "text")
* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted
* ''type'' - the text type to render (defaults to "text/plain"; "text/html" can be used to include HTML tags)

View File

@@ -0,0 +1,14 @@
title: $:/language/Import/
Listing/Cancel/Caption: Cancel
Listing/Hint: These tiddlers are ready to import:
Listing/Import/Caption: Import
Listing/Select/Caption: Select
Listing/Status/Caption: Status
Listing/Title/Caption: Title
Upgrader/Plugins/Suppressed/Incompatible: Blocked incompatible or obsolete plugin
Upgrader/Plugins/Suppressed/Version: Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)
Upgrader/Plugins/Upgraded: Upgraded plugin from <<incoming>> to <<upgraded>>
Upgrader/State/Suppressed: Blocked temporary state tiddler
Upgrader/System/Suppressed: Blocked system tiddler
Upgrader/ThemeTweaks/Created: Migrated theme tweak from <$text text=<<from>>/>

View File

@@ -1,12 +1,15 @@
title: $:/language/
BinaryWarning/Prompt: This tiddler contains binary data
ClassicWarning/Hint: This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details.
ClassicWarning/Upgrade/Caption: upgrade
CloseAll/Button: close all
ConfirmCancelTiddler: Do you wish to discard changes to the tiddler "<$text text=<<title>>/>"?
ConfirmDeleteTiddler: Do you wish to delete the tiddler "<$text text=<<title>>/>"?
ConfirmOverwriteTiddler: Do you wish to overwrite the tiddler "<$text text=<<title>>/>"?
InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters and the characters underscore (`_`), hyphen (`-`) and period (`.`)
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>>/>"?
DropMessage: Drop here (or click escape to cancel)
InvalidFieldName: Illegal characters in field name "<$text text=<<fieldName>>/>". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)
MissingTiddler/Hint: Missing tiddler "<$text text=<<currentTiddler>>/>" - click {{$:/core/images/edit-button}} to create
RecentChanges/DateFormat: DDth MMM YYYY
RelativeDate/Future/Days: <<period>> days from now
@@ -28,3 +31,4 @@ TagManager/Colour/Heading: Colour
TagManager/Count/Heading: Count
TagManager/Icon/Heading: Icon
TagManager/Tag/Heading: Tag
UnsavedChangesWarning: You have unsaved changes in TiddlyWiki

View File

@@ -1,10 +1,15 @@
title: $:/language/Search/
Advanced/Matches: //<small><$count filter={{$:/temp/advancedsearch}}/> matches</small>//
Filter/Caption: Filter
Filter/Hint: Search via a [[filter expression|http://tiddlywiki.com/static/TiddlerFilters.html]]
Filter/Matches: //<small><$count filter={{$:/temp/advancedsearch}}/> matches</small>//
Matches: //<small><$count filter="[!is[system]search{$:/temp/search}]"/> matches</small>//
Shadows/Caption: Shadows
Shadows/Hint: Search for shadow tiddlers
Shadows/Matches: //<small><$count filter="[all[shadows]search{$:/temp/advancedsearch}]"/> matches</small>//
Standard/Caption: Standard
Standard/Hint: Search for standard tiddlers
Standard/Matches: //<small><$count filter="[!is[system]search{$:/temp/advancedsearch}]"/> matches</small>//
System/Caption: System
System/Hint: Search for system tiddlers
System/Matches: //<small><$count filter="[is[system]search{$:/temp/advancedsearch}]"/> matches</small>//

View File

@@ -1,6 +1,7 @@
title: $:/language/SideBar/
All/Caption: All
Contents/Caption: Contents
Drafts/Caption: Drafts
Missing/Caption: Missing
More/Caption: More
@@ -10,8 +11,6 @@ Recent/Caption: Recent
Shadows/Caption: Shadows
System/Caption: System
Tags/Caption: Tags
Tags/TagManager/Caption: Tag Manager
Tags/Untagged/Caption: untagged
Tools/Caption: Tools
Types/Caption: Types

View File

@@ -18,3 +18,4 @@ References/Caption: References
References/Empty: No tiddlers link to this one
Tagging/Caption: Tagging
Tagging/Empty: No tiddlers are tagged with this one
Tools/Caption: Tools

View File

@@ -0,0 +1,4 @@
title: $:/language/Docs/Types/application/javascript
description: JavaScript code
name: application/javascript
group: Developer

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/application/json
description: JSON data
name: application/json
group: Developer

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/application/x-tiddler-dictionary
description: Data dictionary
name: application/x-tiddler-dictionary
group: Developer

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/image/gif
description: GIF image
name: image/gif
group: Image

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/image/jpeg
description: JPEG image
name: image/jpeg
group: Image

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/image/png
description: PNG image
name: image/png
group: Image

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/image/svg+xml
description: Structured Vector Graphics image
name: image/svg+xml
group: Image

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/image/x-icon
description: ICO format icon file
name: image/x-icon
group: Image

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/text/css
description: Static stylesheet
name: text/css
group: Developer

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/text/html
description: HTML markup
name: text/html
group: Text

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/text/plain
description: Plain text
name: text/plain
group: Text

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/text/vnd.tiddlywiki
description: TiddlyWiki version 5 wikitext
description: TiddlyWiki 5
name: text/vnd.tiddlywiki
group: Text

View File

@@ -1,3 +1,4 @@
title: $:/language/Docs/Types/text/x-tiddlywiki
description: TiddlyWiki Classic wikitext
description: TiddlyWiki Classic
name: text/x-tiddlywiki
group: Text

View File

@@ -0,0 +1,13 @@
title: $:/languages/en-GB/icon
type: image/svg+xml
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30" width="1200" height="600">
<clipPath id="t">
<path d="M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"/>
</clipPath>
<path d="M0,0 v30 h60 v-30 z" fill="#00247d"/>
<path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/>
<path d="M0,0 L60,30 M60,0 L0,30" clip-path="url(#t)" stroke="#cf142b" stroke-width="4"/>
<path d="M30,0 v30 M0,15 h60" stroke="#fff" stroke-width="10"/>
<path d="M30,0 v30 M0,15 h60" stroke="#cf142b" stroke-width="6"/>
</svg>

View File

@@ -20,11 +20,23 @@ Parse a sequence of commands
callback: a callback invoked as callback(err) where err is null if there was no error
*/
var Commander = function(commandTokens,callback,wiki,streams) {
var path = require("path");
this.commandTokens = commandTokens;
this.nextToken = 0;
this.callback = callback;
this.wiki = wiki;
this.streams = streams;
this.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);
};
/*
Add a string of tokens to the command queue
*/
Commander.prototype.addCommandTokens = function(commandTokens) {
var params = commandTokens.slice(0);
params.unshift(0);
params.unshift(this.nextToken);
Array.prototype.splice.apply(this.commandTokens,params);
};
/*

View File

@@ -0,0 +1,52 @@
/*\
title: $:/core/modules/commands/build.js
type: application/javascript
module-type: command
Command to build a build target
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
name: "build",
synchronous: true
};
var Command = function(params,commander) {
this.params = params;
this.commander = commander;
};
Command.prototype.execute = function() {
// Get the build targets defined in the wiki
var buildTargets = $tw.boot.wikiInfo.build;
if(!buildTargets) {
return "No build targets defined"
}
// Loop through each of the specified targets
var targets;
if(this.params.length > 0) {
targets = this.params;
} else {
targets = Object.keys(buildTargets);
}
for(var targetIndex=0; targetIndex<targets.length; targetIndex++) {
var target = targets[targetIndex],
commands = buildTargets[target];
if(!commands) {
return "Build target '" + target + "' not found";
}
// Add the commands to the queue
this.commander.addCommandTokens(commands);
}
return null;
};
exports.Command = Command;
})();

View File

@@ -0,0 +1,33 @@
/*\
title: $:/core/modules/commands/clearpassword.js
type: application/javascript
module-type: command
Clear password for crypto operations
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
name: "clearpassword",
synchronous: true
};
var Command = function(params,commander,callback) {
this.params = params;
this.commander = commander;
this.callback = callback;
};
Command.prototype.execute = function() {
$tw.crypto.setPassword(null);
return null;
};
exports.Command = Command;
})();

View File

@@ -34,7 +34,7 @@ Command.prototype.execute = function() {
for(var editionIndex=0; editionIndex<editions.length; editionIndex++) {
var editionName = editions[editionIndex];
// Check the edition exists
var editionPath = path.resolve($tw.boot.corePath,$tw.config.editionsPath) + path.sep + editionName;
var editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));
if(!$tw.utils.isDirectory(editionPath)) {
return "Edition '" + editionName + "' not found";
}

View File

@@ -0,0 +1,70 @@
/*\
title: $:/core/modules/commands/makelibrary.js
type: application/javascript
module-type: command
Command to pack all of the plugins in the library into a plugin tiddler of type "library"
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
name: "makelibrary",
synchronous: true
};
var UPGRADE_LIBRARY_TITLE = "$:/UpgradeLibrary";
var Command = function(params,commander,callback) {
this.params = params;
this.commander = commander;
this.callback = callback;
};
Command.prototype.execute = function() {
var wiki = this.commander.wiki,
fs = require("fs"),
path = require("path"),
upgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,
tiddlers = {};
// Collect up the library plugins
var collectPlugins = function(folder) {
var pluginFolders = fs.readdirSync(folder);
for(var p=0; p<pluginFolders.length; p++) {
if(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {
pluginFields = $tw.loadPluginFolder(path.resolve(folder,"./" + pluginFolders[p]));
if(pluginFields && pluginFields.title) {
tiddlers[pluginFields.title] = pluginFields;
}
}
}
},
collectPublisherPlugins = function(folder) {
var publisherFolders = fs.readdirSync(folder);
for(var t=0; t<publisherFolders.length; t++) {
if(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {
collectPlugins(path.resolve(folder,"./" + publisherFolders[t]));
}
}
};
collectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));
collectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));
collectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));
// Save the upgrade library tiddler
var pluginFields = {
title: upgradeLibraryTitle,
type: "application/json",
"plugin-type": "library",
"text": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)
};
wiki.addTiddler(new $tw.Tiddler(pluginFields));
return null;
};
exports.Command = Command;
})();

View File

@@ -0,0 +1,38 @@
/*\
title: $:/core/modules/commands/output.js
type: application/javascript
module-type: command
Command to set the default output location (defaults to current working directory)
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.info = {
name: "output",
synchronous: true
};
var Command = function(params,commander,callback) {
this.params = params;
this.commander = commander;
this.callback = callback;
};
Command.prototype.execute = function() {
var fs = require("fs"),
path = require("path");
if(this.params.length < 1) {
return "Missing output path";
}
this.commander.outputPath = path.resolve(process.cwd(),this.params[0]);
return null;
};
exports.Command = Command;
})();

View File

@@ -31,8 +31,9 @@ Command.prototype.execute = function() {
fs = require("fs"),
path = require("path"),
title = this.params[0],
filename = this.params[1],
filename = path.resolve(this.commander.outputPath,this.params[1]),
type = this.params[2] || "text/html";
$tw.utils.createFileDirectories(filename);
fs.writeFile(filename,this.commander.wiki.renderTiddler(type,title),"utf8",function(err) {
self.callback(err);
});

View File

@@ -35,10 +35,12 @@ Command.prototype.execute = function() {
wiki = this.commander.wiki,
filter = this.params[0],
template = this.params[1],
pathname = this.params[2],
pathname = path.resolve(this.commander.outputPath,this.params[2]),
type = this.params[3] || "text/html",
extension = this.params[4] || ".html",
tiddlers = wiki.filterTiddlers(filter);
$tw.utils.deleteDirectory(pathname);
$tw.utils.createDirectory(pathname);
$tw.utils.each(tiddlers,function(title) {
var parser = wiki.parseTiddler(template),
widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});

View File

@@ -31,10 +31,11 @@ Command.prototype.execute = function() {
fs = require("fs"),
path = require("path"),
title = this.params[0],
filename = this.params[1],
filename = path.resolve(this.commander.outputPath,this.params[1]),
tiddler = this.commander.wiki.getTiddler(title),
type = tiddler.fields.type || "text/vnd.tiddlywiki",
contentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: "utf8"};
$tw.utils.createFileDirectories(filename);
fs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {
self.callback(err);
});

View File

@@ -0,0 +1,53 @@
/*\
title: $:/core/modules/commands/savetiddlers.js
type: application/javascript
module-type: command
Command to save several tiddlers to a folder of files
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
exports.info = {
name: "savetiddlers",
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 < 1) {
return "Missing filename";
}
var self = this,
fs = require("fs"),
path = require("path"),
wiki = this.commander.wiki,
filter = this.params[0],
pathname = path.resolve(this.commander.outputPath,this.params[1]),
tiddlers = wiki.filterTiddlers(filter);
$tw.utils.deleteDirectory(pathname);
$tw.utils.createDirectory(pathname);
$tw.utils.each(tiddlers,function(title) {
var tiddler = self.commander.wiki.getTiddler(title),
type = tiddler.fields.type || "text/vnd.tiddlywiki",
contentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: "utf8"},
filename = path.resolve(pathname,encodeURIComponent(title));
fs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);
});
return null;
};
exports.Command = Command;
})();

View File

@@ -50,10 +50,22 @@ SimpleServer.prototype.addRoute = function(route) {
};
SimpleServer.prototype.findMatchingRoute = function(request,state) {
var pathprefix = this.get("pathprefix") || "";
for(var t=0; t<this.routes.length; t++) {
var potentialRoute = this.routes[t],
pathRegExp = potentialRoute.path,
match = potentialRoute.path.exec(state.urlInfo.pathname);
pathname = state.urlInfo.pathname,
match;
if(pathprefix) {
if(pathname.substr(0,pathprefix.length) === pathprefix) {
pathname = pathname.substr(pathprefix.length);
match = potentialRoute.path.exec(pathname);
} else {
match = false;
}
} else {
match = potentialRoute.path.exec(pathname);
}
if(match && request.method === potentialRoute.method) {
state.params = [];
for(var p=1; p<match.length; p++) {
@@ -161,7 +173,8 @@ var Command = function(params,commander,callback) {
state.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title}));
var changeCount = state.wiki.getChangeCount(title).toString();
response.writeHead(204, "OK",{
Etag: "\"default/" + encodeURIComponent(title) + "/" + changeCount + ":\""
Etag: "\"default/" + encodeURIComponent(title) + "/" + changeCount + ":\"",
"Content-Type": "text/plain"
});
response.end();
}
@@ -172,7 +185,9 @@ var Command = function(params,commander,callback) {
handler: function(request,response,state) {
var title = decodeURIComponent(state.params[0]);
state.wiki.deleteTiddler(title);
response.writeHead(204, "OK");
response.writeHead(204, "OK", {
"Content-Type": "text/plain"
});
response.end();
}
});
@@ -269,13 +284,15 @@ Command.prototype.execute = function() {
serveType = this.params[3] || "text/html",
username = this.params[4],
password = this.params[5],
host = this.params[6] || "127.0.0.1";
host = this.params[6] || "127.0.0.1",
pathprefix = this.params[7];
this.server.set({
rootTiddler: rootTiddler,
renderType: renderType,
serveType: serveType,
username: username,
password: password
password: password,
pathprefix: pathprefix
});
this.server.listen(port,host);
console.log("Serving on " + host + ":" + port);

View File

@@ -0,0 +1,58 @@
/*\
title: $:/core/modules/commands/setfield.js
type: application/javascript
module-type: command
Command to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
exports.info = {
name: "setfield",
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 < 4) {
return "Missing parameters";
}
var self = this,
wiki = this.commander.wiki,
filter = this.params[0],
fieldname = this.params[1] || "text",
templatetitle = this.params[2],
rendertype = this.params[3] || "text/plain",
tiddlers = wiki.filterTiddlers(filter);
$tw.utils.each(tiddlers,function(title) {
var parser = wiki.parseTiddler(templatetitle),
newFields = {},
tiddler = wiki.getTiddler(title);
if(parser) {
var widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});
var container = $tw.fakeDocument.createElement("div");
widgetNode.render(container,null);
newFields[fieldname] = rendertype === "text/html" ? container.innerHTML : container.textContent;
} else {
newFields[fieldname] = undefined;
}
wiki.addTiddler(new $tw.Tiddler(tiddler,newFields));
});
return null;
};
exports.Command = Command;
})();

View File

@@ -24,6 +24,8 @@ var Command = function(params,commander) {
Command.prototype.execute = function() {
this.commander.verbose = true;
// Output the boot message log
this.commander.streams.output.write("Boot log:\n " + $tw.boot.logMessages.join("\n ") + "\n");
return null; // No error
};

View File

@@ -51,13 +51,13 @@ var parseTiddlerDiv = function(text /* [,fields] */) {
// Extract the text
result.text = text.substring(match.index + match[0].length,endMatch.index);
// Process the attributes
var attrRegExp = /\s*([^=\s]+)\s*=\s*"([^"]*)"/gi,
var attrRegExp = /\s*([^=\s]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/gi,
attrMatch;
do {
attrMatch = attrRegExp.exec(match[1]);
if(attrMatch) {
var name = attrMatch[1];
var value = attrMatch[2];
var value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];
result[name] = value;
}
} while(attrMatch);

View File

@@ -33,7 +33,7 @@ function parseFilterOperation(operators,filterString,p) {
operator.prefix = filterString.charAt(p++);
}
// Get the operator name
var nextBracketPos = filterString.substring(p).search(/[\[\{\/]/);
var nextBracketPos = filterString.substring(p).search(/[\[\{<\/]/);
if(nextBracketPos === -1) {
throw "Missing [ in filter expression";
}
@@ -54,24 +54,28 @@ function parseFilterOperation(operators,filterString,p) {
p = nextBracketPos + 1;
switch (bracket) {
case '{': // Curly brackets
operator.indirect = true;
nextBracketPos = filterString.indexOf('}',p);
break;
case '[': // Square brackets
nextBracketPos = filterString.indexOf(']',p);
break;
case '/': // regexp brackets
var rex = /^((?:[^\\\/]*|\\.)*)\/(?:\(([mygi]+)\))?/g,
rexMatch = rex.exec(filterString.substring(p));
if(rexMatch) {
operator.regexp = new RegExp(rexMatch[1], rexMatch[2]);
nextBracketPos = p + rex.lastIndex - 1;
}
else {
throw "Unterminated regular expression in filter expression";
}
break;
case "{": // Curly brackets
operator.indirect = true;
nextBracketPos = filterString.indexOf("}",p);
break;
case "[": // Square brackets
nextBracketPos = filterString.indexOf("]",p);
break;
case "<": // Angle brackets
operator.variable = true;
nextBracketPos = filterString.indexOf(">",p);
break;
case "/": // regexp brackets
var rex = /^((?:[^\\\/]*|\\.)*)\/(?:\(([mygi]+)\))?/g,
rexMatch = rex.exec(filterString.substring(p));
if(rexMatch) {
operator.regexp = new RegExp(rexMatch[1], rexMatch[2]);
nextBracketPos = p + rex.lastIndex - 1;
}
else {
throw "Unterminated regular expression in filter expression";
}
break;
}
if(nextBracketPos === -1) {
@@ -149,22 +153,22 @@ exports.getFilterOperators = function() {
return this.filterOperators;
};
exports.filterTiddlers = function(filterString,currTiddlerTitle,source) {
exports.filterTiddlers = function(filterString,widget,source) {
var fn = this.compileFilter(filterString);
return fn.call(this,source,currTiddlerTitle);
return fn.call(this,source,widget);
};
/*
Compile a filter into a function with the signature fn(source,currTiddlerTitle) where:
Compile a filter into a function with the signature fn(source,widget) where:
source: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)
currTiddlerTitle: the optional name of the current tiddler
widget: an optional widget node for retrieving the current tiddler etc.
*/
exports.compileFilter = function(filterString) {
var filterParseTree;
try {
filterParseTree = this.parseFilter(filterString);
} catch(e) {
return function(source,currTiddlerTitle) {
return function(source,widget) {
return ["Filter error: " + e];
};
}
@@ -176,9 +180,10 @@ exports.compileFilter = function(filterString) {
var self = this;
$tw.utils.each(filterParseTree,function(operation) {
// Create a function for the chain of operators in the operation
var operationSubFunction = function(source,currTiddlerTitle) {
var operationSubFunction = function(source,widget) {
var accumulator = source,
results = [];
results = [],
currTiddlerTitle = widget && widget.getVariable("currentTiddler");
$tw.utils.each(operation.operators,function(operator) {
var operand = operator.operand,
operatorFunction;
@@ -192,6 +197,9 @@ exports.compileFilter = function(filterString) {
if(operator.indirect) {
operand = self.getTextReference(operator.operand,"",currTiddlerTitle);
}
if(operator.variable) {
operand = widget.getVariable(operator.operand,{defaultValue: ""});
}
results = operatorFunction(accumulator,{
operator: operator.operator,
operand: operand,
@@ -200,35 +208,47 @@ exports.compileFilter = function(filterString) {
regexp: operator.regexp
},{
wiki: self,
currTiddlerTitle: currTiddlerTitle
widget: widget
});
accumulator = self.makeTiddlerIterator(results);
if($tw.utils.isArray(results)) {
accumulator = self.makeTiddlerIterator(results);
} else {
accumulator = results;
}
});
return results;
if($tw.utils.isArray(results)) {
return results;
} else {
var resultArray = [];
results(function(tiddler,title) {
resultArray.push(title);
});
return resultArray;
}
};
// Wrap the operator functions in a wrapper function that depends on the prefix
operationFunctions.push((function() {
switch(operation.prefix || "") {
case "": // No prefix means that the operation is unioned into the result
return function(results,source,currTiddlerTitle) {
$tw.utils.pushTop(results,operationSubFunction(source,currTiddlerTitle));
return function(results,source,widget) {
$tw.utils.pushTop(results,operationSubFunction(source,widget));
};
case "-": // The results of this operation are removed from the main result
return function(results,source,currTiddlerTitle) {
$tw.utils.removeArrayEntries(results,operationSubFunction(source,currTiddlerTitle));
return function(results,source,widget) {
$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));
};
case "+": // This operation is applied to the main results so far
return function(results,source,currTiddlerTitle) {
return function(results,source,widget) {
// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved
source = self.makeTiddlerIterator(results);
results.splice(0,results.length);
$tw.utils.pushTop(results,operationSubFunction(source,currTiddlerTitle));
$tw.utils.pushTop(results,operationSubFunction(source,widget));
};
}
})());
});
// Return a function that applies the operations to a source iterator of tiddler titles
return $tw.perf.measure("filter",function filterFunction(source,currTiddlerTitle) {
return $tw.perf.measure("filter",function filterFunction(source,widget) {
if(!source) {
source = self.each;
} else if(typeof source === "object") { // Array or hashmap
@@ -236,7 +256,7 @@ exports.compileFilter = function(filterString) {
}
var results = [];
$tw.utils.each(operationFunctions,function(operationFunction) {
operationFunction(results,source,currTiddlerTitle);
operationFunction(results,source,widget);
});
return results;
});

View File

@@ -0,0 +1,31 @@
/*\
title: $:/core/modules/filters/after.js
type: application/javascript
module-type: filteroperator
Filter operator returning the tiddler from the current list that is after the tiddler named in the operand.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Export our filter function
*/
exports.after = function(source,operator,options) {
var results = [];
source(function(tiddler,title) {
results.push(title);
});
var index = results.indexOf(operator.operand);
if(index === -1 || index > (results.length - 2)) {
return [];
} else {
return [results[index + 1]];
}
};
})();

View File

@@ -5,7 +5,7 @@ module-type: filteroperator
Filter operator for selecting tiddlers
[all[tiddlers+shadows]]
[all[shadows+tiddlers]]
\*/
(function(){
@@ -33,6 +33,17 @@ exports.all = function(source,operator,options) {
// Cycle through the suboperators accumulating their results
var results = [],
subops = operator.operand.split("+");
// Check for common optimisations
if(subops.length === 1 && subops[0] === "tiddlers") {
return options.wiki.each;
} else if(subops.length === 1 && subops[0] === "shadows") {
return options.wiki.eachShadow;
} else if(subops.length === 2 && subops[0] === "tiddlers" && subops[1] === "shadows") {
return options.wiki.eachTiddlerPlusShadows;
} else if(subops.length === 2 && subops[0] === "shadows" && subops[1] === "tiddlers") {
return options.wiki.eachShadowPlusTiddlers;
}
// Do it the hard way
for(var t=0; t<subops.length; t++) {
var subop = allFilterOperators[subops[t]];
if(subop) {

View File

@@ -16,8 +16,9 @@ Filter function for [all[current]]
Export our filter function
*/
exports.current = function(source,prefix,options) {
if(options.currTiddlerTitle) {
return [options.currTiddlerTitle];
var currTiddlerTitle = options.widget && options.widget.getVariable("currentTiddler");
if(currTiddlerTitle) {
return [currTiddlerTitle];
} else {
return [];
}

View File

@@ -0,0 +1,31 @@
/*\
title: $:/core/modules/filters/before.js
type: application/javascript
module-type: filteroperator
Filter operator returning the tiddler from the current list that is before the tiddler named in the operand.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Export our filter function
*/
exports.before = function(source,operator,options) {
var results = [];
source(function(tiddler,title) {
results.push(title);
});
var index = results.indexOf(operator.operand);
if(index <= 0) {
return [];
} else {
return [results[index - 1]];
}
};
})();

View File

@@ -0,0 +1,31 @@
/*\
title: $:/core/modules/filters/get.js
type: application/javascript
module-type: filteroperator
Filter operator for replacing tiddler titles by the value of the field specified in the operand.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Export our filter function
*/
exports.get = function(source,operator,options) {
var results = [];
source(function(tiddler,title) {
if(tiddler) {
var value = tiddler.getFieldString(operator.operand);
if(value) {
results.push(value);
}
}
});
return results;
};
})();

View File

@@ -16,16 +16,17 @@ Filter function for [is[current]]
Export our filter function
*/
exports.current = function(source,prefix,options) {
var results = [];
var results = [],
currTiddlerTitle = options.widget && options.widget.getVariable("currentTiddler");
if(prefix === "!") {
source(function(tiddler,title) {
if(title !== options.currTiddlerTitle) {
if(title !== currTiddlerTitle) {
results.push(title);
}
});
} else {
source(function(tiddler,title) {
if(title === options.currTiddlerTitle) {
if(title === currTiddlerTitle) {
results.push(title);
}
});

View File

@@ -0,0 +1,37 @@
/*\
title: $:/core/modules/filters/is/tag.js
type: application/javascript
module-type: isfilteroperator
Filter function for [is[tag]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Export our filter function
*/
exports.tag = function(source,prefix,options) {
var results = [],
tagMap = options.wiki.getTagMap();
if(prefix === "!") {
source(function(tiddler,title) {
if(!$tw.utils.hop(tagMap,title)) {
results.push(title);
}
});
} else {
source(function(tiddler,title) {
if($tw.utils.hop(tagMap,title)) {
results.push(title);
}
});
}
return results;
};
})();

View File

@@ -18,7 +18,8 @@ Export our filter function
exports.list = function(source,operator,options) {
var results = [],
tr = $tw.utils.parseTextReference(operator.operand),
list = options.wiki.getTiddlerList(tr.title || options.currTiddlerTitle,tr.field,tr.index);
currTiddlerTitle = options.widget && options.widget.getVariable("currentTiddler"),
list = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);
if(operator.prefix === "!") {
source(function(tiddler,title) {
if(list.indexOf(title) === -1) {

View File

@@ -16,9 +16,10 @@ Filter operator returning all tiddlers that have the selected tiddlers in a list
Export our filter function
*/
exports.listed = function(source,operator,options) {
var results = [];
var field = operator.operand || "list",
results = [];
source(function(tiddler,title) {
$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title));
$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));
});
return results;
};

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