1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2026-01-26 21:03:42 +00:00

Compare commits

..

175 Commits

Author SHA1 Message Date
jeremy@jermolene.com
c79106fe5b Add docs 2022-02-21 15:23:38 +00:00
jeremy@jermolene.com
aac910ddf3 Merge branch 'master' into direct-style-attributes 2022-02-19 10:12:21 +00:00
jeremy@jermolene.com
1d16206188 Add support for tm-relink-tiddler message 2022-02-19 09:38:48 +00:00
jeremy@jermolene.com
1e30744d88 Merge branch 'master' into direct-style-attributes 2022-02-19 09:20:48 +00:00
jeremy@jermolene.com
37a6ff8521 Move tm-rename-tiddler handling from navigator widget into startup module
This reverses an August 2015 change in 68e15c10641e2eda1e64cf29954786a07326a920; the original rationale was wrong: there is nothing related to the navigator widget in the implementation of the tm-rename-tiddler message
2022-02-19 09:20:32 +00:00
jeremy@jermolene.com
d3ea98fcef Menubar plugin: fix class handling for dropdowns
Fixes  #6457
2022-02-14 10:44:42 +00:00
jeremy@jermolene.com
dac807f938 Merge branch 'master' into direct-style-attributes 2022-02-10 09:00:10 +00:00
Bram Chen
5022516c61 Update chinese language files (#6449)
* Update chinese field descriptions

* Revised chinese translations for `DropMessage`
2022-02-08 16:01:30 +00:00
jeremy@jermolene.com
965d8ee014 Update release note 2022-02-08 15:40:15 +00:00
Marxsal
8e50ad1243 Change 'Drop here' to 'Drop now' in import msg (#6435) 2022-02-07 17:32:06 +00:00
jeremy@jermolene.com
33f40c47c6 Use code-body: yes for more templates
Fixes #6444
2022-02-07 16:53:36 +00:00
Cameron Fischer
1b3c2557b8 Fixed issue: deprecated regexp could cause crash (#6438)
* Fixed issue: deprecated regexp could cause crash

* Different fix which will bother plugins less
2022-02-07 16:39:29 +00:00
jeremy@jermolene.com
1a4766c5a1 Merge branch 'tiddlywiki-com' 2022-02-05 16:39:35 +00:00
jeremy@jermolene.com
e49dda3b48 Fix search results cutoff on narrow screens
Fixes #6440
2022-02-01 09:36:30 +00:00
jeremy@jermolene.com
bd447f0716 Add talk.tiddlywiki.org as the official forum for the community 2022-01-31 17:05:55 +00:00
RJ Skerry-Ryan
13faeaa0bd Markdown: Let WikiText parsing handle the creation of LaTeX widgets. (#6428)
* Markdown: Let WikiText parsing handle the creation of LaTeX widgets.

When embedding LaTeX snippets in inline HTML nodes, such as TiddlyRemember
macros or HTML tables, the parsing of latex nodes breaks the WikiText by
splitting it into pieces around the latex node.

This commit fixes the issue by converting the Remarkable katex nodes back to
text, using a newline to indicate a block katex snippet. This is then re-parsed
by the WikiText KaTeX plugin.

TESTED:

Created a test wiki with:
```
$ node tiddlywiki.js test --init markdowndemo
$ node tiddlywiki.js test --listen
```

* Verified markdown + KaTeX support still works as expected.
* Verified that embedding LaTeX snippets in inline HTML works (e.g. `<a
href="https://example.com/">$x^2$</a>`).
* Verified the markdown + KaTeX support works as expected with renderWikiText
set to `false`.

* Style: Remove spaces between if and opening parentheses.
2022-01-30 11:23:00 +00:00
twMat
7f0fb2b610 [doc] Update Importing Tiddlers.tid - attempt 2 (#6432) 2022-01-30 11:17:39 +00:00
Rizwan
7d2994388b Remove 2 whitespaces (#6434)
These whitespaces were messing the list rendering
2022-01-30 11:07:32 +00:00
RJ Skerry-Ryan
edb5dc3fdc Add keyword-spacing rule to .eslintrc.yml to reflect the project code style. (#6431)
- Update .eslintignore to ignore "third party" code.
- Add a "lint" script to package.json so `npm run lint` runs eslint on the repo.
2022-01-29 17:41:09 +00:00
Marxsal
df1b1316c8 One word change to 'Images in WikiText' (#6430) 2022-01-29 15:39:29 +00:00
jeremy@jermolene.com
1a0c831216 Add sha256 operator 2022-01-29 11:02:47 +00:00
jeremy@jermolene.com
f4365e4bb4 Macro: remove confusing advice
See https://talk.tiddlywiki.org/t/wikitext-parsing-and-rendering-in-macros/2218
2022-01-28 11:24:06 +00:00
Saq Imtiaz
75d10a2dc3 Fix: bug with importvariables widget when importing block mode widgets. fixes #6424 (#6426) 2022-01-27 17:35:18 +00:00
Marxsal
da7cf7a4f3 QualifyWidget documentation (#6422) 2022-01-25 17:59:59 +00:00
Saq Imtiaz
6452eb56a9 fix: bug introduced with 88812092fd fixes #6419 (#6420) 2022-01-24 19:17:09 +00:00
Saq Imtiaz
9fce8153df Add support to tm-scroll message for scrolling without animating (#6410)
* feat: add support for animationDuration attribute of paramObject for tm-scroll message

* docs: added docs for animationDuration attribute of tm-scroll message

* fix: use .utils.hop instead of Object.hasOwnProperty()

* fix: do not check if object before calling utils.hop()

* fix: syntax
2022-01-24 09:44:04 +00:00
jeremy@jermolene.com
4cdfa4e3f9 Update tm-download-file docs to mention the filename parameter 2022-01-23 18:35:38 +00:00
btheado
d6384df6fc Add warnings about non-recursive nature of dynamic attribute values (#6417) 2022-01-23 18:24:25 +00:00
btheado
f0bd06b38d Add doc related to WikiText parser modes (#6415)
* Added macros for displaying wikitext examples in a table

* Added documentation for WikiText parsing

* Changed recognize to British spelling

* Add links to the new wikitext parser tiddlers
2022-01-23 09:44:01 +00:00
Saq Imtiaz
d823856082 feat: add support for renderEnd method for storyviews in widget's render() method (#6409) 2022-01-19 19:48:02 +00:00
twMat
b02a82ba0f Update list-links-draggabe Macro.tid (#6405)
The commented problem is, I presume, resolved now that we can directly edit fields in the current tiddler.
2022-01-19 11:13:08 +00:00
twMat
c43b013539 Paragraph on "anchor links" for Linking in WikiText.tid (#6404) 2022-01-18 19:27:54 +00:00
twMat
5548186c93 Update size attribute in EditTextWidget.tid (#6403)
ref: https://github.com/Jermolene/TiddlyWiki5/issues/6165
2022-01-17 10:11:20 +00:00
twMat
def9b553a8 typo in EventCatcherWidget.tid (#6399) 2022-01-15 12:57:51 +00:00
jeremy@jermolene.com
35f7a8ea06 Fix renaming a tiddler can result in duplicate tags
Fixes #6398
2022-01-14 16:57:30 +00:00
jeremy@jermolene.com
c88017b87f Merge branch 'master' into direct-style-attributes 2022-01-11 17:57:49 +00:00
jeremy@jermolene.com
54bfb28063 Merge branch 'tiddlywiki-com' 2022-01-11 17:51:32 +00:00
jeremy@jermolene.com
80c63b96cf Fix processing of $:/tags/RawMarkupWikified/TopHead tiddlers
Fixes #6395
2022-01-11 17:16:50 +00:00
Nils Lindemann
2ef9ecbc44 Signing the CLA (#6394)
* Using a different account now (Second try)

* Typo
2022-01-10 09:34:02 +00:00
jeremy@jermolene.com
88812092fd Fix crash with "wrap-lines" text editor operation if prefix or suffix is missing
Fixes #6376
2022-01-09 17:43:34 +00:00
jeremy@jermolene.com
4e01fc1838 Radio widget should use default if field/index is missing
Fixes #6389
2022-01-09 17:17:12 +00:00
Louis Davout
5cab75f4a7 In 'Filter Operators' add column to indicate those operators that construct an entirely new selection. (#6351) 2022-01-09 14:44:19 +00:00
btheado
1345384d39 Add section about dynamic links to 'Linking in WikiText' (#6361)
* Add discussion of dynamic links to 'Linking in WikiText'

* Added macro and styles for displaying a 'bad' example

* Use .bad-example macro in 'Linking in WikiText'

* Convert existing warnings to use .bad-example macro
2022-01-09 14:30:22 +00:00
Bram Chen
927013a57a Update chinese field descriptions (#6393) 2022-01-09 14:26:14 +00:00
jeremy@jermolene.com
0d11fccba2 Update release note 2022-01-09 10:18:19 +00:00
jeremy@jermolene.com
d78ad756db Docs missed off 54cfda76ee 2022-01-09 10:18:11 +00:00
jeremy@jermolene.com
373a3f2087 Ensure ordering isn't insertion dependent if orderedAttributes is missing 2022-01-06 22:14:15 +00:00
jeremy@jermolene.com
cf8b113e35 Fix tests
Not all parse tree nodes have an "orderedAttributes" member (eg. the error message generated at 5613bcc884/core/modules/widgets/transclude.js (L73-L75))
2022-01-06 21:23:25 +00:00
jeremy@jermolene.com
15877eef93 Support direct style attributes on the element widget 2022-01-06 20:56:56 +00:00
jeremy@jermolene.com
5613bcc884 It's 2022 2022-01-03 20:22:52 +00:00
jeremy@jermolene.com
0729d730f8 Merge branch 'tiddlywiki-com' 2022-01-03 20:22:05 +00:00
jeremy@jermolene.com
f2422efeb8 Fix issue with Alice in Wonderland demo
Thanks @pmario

See https://github.com/Jermolene/TiddlyWiki5/pull/6213#issuecomment-1003628637
2022-01-03 20:20:48 +00:00
Cameron Fischer
cbb002ec4b Added sourceURL tags to boot js (#6381) 2022-01-03 17:25:40 +00:00
jeremy@jermolene.com
c7e8c87f85 Refine criteria for displaying $:/core/ system tiddlers as code
Fixes #6369
2022-01-03 16:42:50 +00:00
jeremy@jermolene.com
66ae1d6930 Image widget: Add classes for loading/loaded/error 2022-01-02 17:28:54 +00:00
jeremy@jermolene.com
8e3885277f Update messagecatcher widget example to use newer syntax 2021-12-22 15:31:35 +00:00
jeremy@jermolene.com
9293dfa477 Add docs for "help" field of modals
Previously undocumented for no good reason
2021-12-21 10:26:58 +00:00
Louis Davout
8a80d89582 Signing the CLA (#6347) 2021-12-20 19:36:51 +00:00
btheado
10ebd93df3 Add ViewWidget cross references and examples (#6355)
* Link ViewWidget formats to similar filter operators

* Merge the ViewWidget columns and use the tip macro instead

* Reference the format filter operator in ViewWidget

* More accurate language in the ViewWidget docs
2021-12-20 10:07:34 +00:00
jc-ose
d414eef773 Clarify list location requirement (#6338) 2021-12-14 22:27:05 +00:00
jc-ose
7d1f0ea8f4 Signing the CLA (#6337) 2021-12-14 22:26:22 +00:00
twMat
f477e90192 Update Cascade Filter Run Prefix.tid (#6340) 2021-12-14 22:21:49 +00:00
Maurycy Zarzycki
b4dec78a72 add polish translations to cascades (#6335) 2021-12-13 17:28:35 +00:00
jeremy@jermolene.com
60187dc59e Fix importing/upgrading encrypted single file wikis
The problem was that v5.2.0 trimmed the whitespace from $:/core/templates/store.area.template.html which we'd previously been relying on during the import.

This change still allows v5.2.2 to import encrypted pre-v5.2.0 wikis

Fixes #6330
2021-12-11 19:46:20 +00:00
twMat
4453aefad8 Typo in Images in WikiText.tid (#6328)
Typo in link
2021-12-11 09:29:26 +00:00
jeremy@jermolene.com
54cfda76ee ViewTemplateBodyCascade: Add support for code-body field
Missed off #6168
2021-12-09 20:47:51 +00:00
Rizwan
1e8c2821d6 Acknowledgements for banner design 5.1.21-5.2.0 (#6326) 2021-12-09 17:40:12 +00:00
jeremy@jermolene.com
cbc030fbe2 Merge branch 'tiddlywiki-com' 2021-12-09 11:57:16 +00:00
jeremy@jermolene.com
b454116163 Add banner image credits for v5.2.1
See https://talk.tiddlywiki.org/t/the-banner-designer-should-be-acknowledged-in-the-whats-new-section/1787

cc @ibnishak
2021-12-09 11:56:31 +00:00
jeremy@jermolene.com
0186c6490f Edit type dropdown: Add whitespace between description and MIME type 2021-12-08 21:25:44 +00:00
jeremy@jermolene.com
853a899c77 Avoid wraping field names in field viewers
Also avoid wikifying field names
2021-12-08 19:29:02 +00:00
jeremy@jermolene.com
95a3d7fde2 Temporary new release banner for v5.2.2 2021-12-08 12:42:08 +00:00
jeremy@jermolene.com
d33e0a05e2 Preparing for v5.2.2-prerelease 2021-12-08 12:22:51 +00:00
jeremy@jermolene.com
cb833b3f65 build-site.sh: Update version number 2021-12-08 12:21:16 +00:00
jeremy@jermolene.com
b73c50adeb Version number update for 5.2.1 2021-12-08 12:17:32 +00:00
jeremy@jermolene.com
fdfa45329a Updating readme and contributing 2021-12-08 12:16:55 +00:00
jeremy@jermolene.com
7b1880404c Preparing for release of v5.2.1 2021-12-08 12:01:56 +00:00
jeremy@jermolene.com
2739b1bafe Merge branch 'tiddlywiki-com' 2021-12-08 11:56:50 +00:00
jeremy@jermolene.com
cc782ff518 Update release note 2021-12-08 11:55:40 +00:00
jeremy@jermolene.com
492bfbebe9 Sidebar plugin listing
Fix text colour in DarkPhotos and Muted palettes

Thanks @kookma

See https://github.com/Jermolene/TiddlyWiki5/discussions/6167#discussioncomment-1768298
2021-12-07 21:30:38 +00:00
jeremy@jermolene.com
c9fbff265a Update release note 2021-12-07 13:19:37 +00:00
jeremy@jermolene.com
b0f72d0690 Improve sidebar plugin listing
Fixes #6167
2021-12-07 13:17:15 +00:00
Marxsal
6070a2c921 Add two cloud services that support webdav (#6292) 2021-12-07 12:48:17 +00:00
jeremy@jermolene.com
cb43b91ab6 Add official v5.2.1 banner
See https://groups.google.com/g/tiddlywiki/c/GU0TPGNMPvw/m/y1SyQk_nAQAJ
2021-12-06 17:26:34 +00:00
jeremy@jermolene.com
804bc9e9c0 Merge branch 'tiddlywiki-com' 2021-12-06 17:05:43 +00:00
jeremy@jermolene.com
4514a67a1f Add user documentation for cascade mechanism 2021-12-06 16:59:13 +00:00
jeremy@jermolene.com
edcba4ee16 Docs Macros: Add new <<.tiddler-fields>> macro 2021-12-06 16:59:07 +00:00
jeremy@jermolene.com
9e28356047 Cascades: Ignore draft configuration tiddlers 2021-12-06 16:25:51 +00:00
btheado
44ad8c770f Added documentation tiddlers for intersection filter run prefix (#6307) 2021-12-05 17:27:35 +00:00
btheado
2dd4fa41a5 Add documentation tiddlers for filter filter run prefix (#6310)
* Added documentation tiddlers for filter filter run prefix

* Added examples to compare :filter filter run prefix to :and prefix
2021-12-04 20:44:04 +00:00
tw-FRed
f5389b3859 [FR_fr] Fix Latest Version image not displaying (#6308)
Image broken link on the welcome screen of French documentation edition.
See "Quoi de neuf dans la version 5.2.0" here: https://tiddlywiki.com/languages/fr-FR/index.html#HelloThere
2021-12-04 18:21:28 +00:00
tw-FRed
65c8d74218 Sign the CLA (#6306) 2021-12-04 17:34:57 +00:00
btheado
f88e3939e1 Add a cascade filter run example (#6302) 2021-12-04 10:25:43 +00:00
jeremy@jermolene.com
769778b05b Fix tag of control panel tab for edit template cascade
Missed off a350a76a00 (diff-902fbf6814c65f26a991299f17ef1698df82d1004af8d10d81a11a14660e805c)
2021-12-02 19:25:33 +00:00
jeremy@jermolene.com
f84ff0d778 Update release note 2021-12-02 19:21:07 +00:00
Boris Mann
ca1aabe21f Signing TW CLA (#6076)
Co-authored-by: Jeremy Ruston <jeremy@jermolene.com>
2021-12-01 14:57:46 +00:00
jeremy@jermolene.com
dd801d1571 Merge branch 'tiddlywiki-com' 2021-12-01 09:08:46 +00:00
Saq Imtiaz
485730483b Docs: reference documentation for :cascade filter run prefix (#6294)
* docs: formal documentation for :cascade filter run prefix

* fix: typos

* fix: typos
2021-11-30 15:07:10 +00:00
jeremy@jermolene.com
8b6733d792 Docs: Add a new overview of customisation techniques 2021-11-29 09:21:50 +00:00
Saq Imtiaz
75aabcce64 Fix for CodeMirror issues with drop events in Chrome 96 (#6278)
* fix: handle drag events ourselves in chrome when it adds pseudo file objects to the event

* fix: corrected typo in comment

* fix: coding style

* fix: formatting and remove comments
2021-11-28 14:46:27 +00:00
jeremy@jermolene.com
5dfa6b2bb4 Remove "Page and tiddler layout customisation" and most of the excised subtiddlers
These tiddlers are poor quality, and the titles are long and clumsy
2021-11-27 08:40:56 +00:00
btheado
3798a3c7d0 Add NavigatorWidget example (#6285)
* Add NavigatorWidget example

* Moved NavigatorWidget example into the 'Creating SubStories' tiddler

* Fixed link: NavigationMechanism => HistoryMechanism
2021-11-27 07:58:29 +00:00
Marxsal
1c4b2243a6 New tag 'KeyboardDrivenInput' on two tiddlers (#6271) 2021-11-26 17:51:39 +00:00
Mario Pietsch
c11493ec37 fix TiddlerColorFilters/default ... to return a color name or value (#6283) 2021-11-26 12:10:18 +00:00
jeremy@jermolene.com
b6c8cdae64 Merge branch 'tiddlywiki-com' 2021-11-26 11:19:28 +00:00
jeremy@jermolene.com
b80d079d71 Move docs tiddlers out of the root folder
Some of which I'd accidentally left from 1348607c8f, but I thought it was worth clearing them all up
2021-11-26 11:18:03 +00:00
btheado
6512b038c5 Added examples to compare :map filter run prefix to + prefix (#6282)
* Added examples to compare :map filter run prefix to + prefix

* Prefer ':and' over '+'
2021-11-25 18:03:30 +00:00
jeremy@jermolene.com
6d1d497a63 Tweak docs for #6268 2021-11-25 18:00:32 +00:00
Telumire
6ea7140e8f Add a snippet to visualise faulty stylesheets (#6268)
* Add a snippet to visualise faulty stylesheets

As discussed in https://github.com/Jermolene/TiddlyWiki5/issues/6176, a faulty stylesheet can propagate and break several other stylesheets. This can be tricky to debug in a wiki with a lot of custom stylesheets.

This wikitext snippet will display a list of the stylesheets created/modified by the user and will display a red cross next to the one causing a parsing error.

* Improve the css code and add a message

This commit add a short message that provide guidance on how to fix the CSS error(s).
2021-11-25 17:49:28 +00:00
btheado
7b311b0e4a Fix duplicate example id for map filter run prefix (#6281) 2021-11-25 15:20:30 +00:00
jeremy@jermolene.com
be3018fe3b Cascade: Improve demo custom story tiddler template
Now the buttons are part of the template, making it easier to manage new tiddlers given the tag $:/tags/TiddlerList

See #6280
2021-11-25 08:55:10 +00:00
jeremy@jermolene.com
68095eb392 Docs: Misc minor edits 2021-11-25 08:38:17 +00:00
jeremy@jermolene.com
4bb34e4801 Merge branch 'tiddlywiki-com' 2021-11-24 21:04:47 +00:00
jeremy@jermolene.com
1348607c8f Refactor some docs preparatory to adding the cascade docs on master branch 2021-11-24 21:04:22 +00:00
btheado
2f86779a27 Add doc tiddlers for reduce filter run prefix functionality (#6277)
* Added documentation tiddlers for reduce filter run prefix

* Make filter text box wider so long filters fit better

* removed some duplicate words

* Restored the :reduce filter run prefix tip
2021-11-24 20:02:40 +00:00
jeremy@jermolene.com
2af632a46d Don't use CodeMirror unless in the browser
Avoids crashes when rendering static tiddlers under Node.js that include edit widgets with CodeMirror.

The tiddler "SampleWindowTemplate" in 05606f72ad was triggering a build error in https://github.com/Jermolene/TiddlyWiki5/runs/4310561088?check_suite_focus=true#step:6:41
2021-11-24 10:41:38 +00:00
jeremy@jermolene.com
05606f72ad Merge branch 'tiddlywiki-com' 2021-11-24 10:07:17 +00:00
jeremy@jermolene.com
6d0701e0fa Update release note
I will add some more details about the filter cascade stuff
2021-11-23 17:31:59 +00:00
Saq Imtiaz
76cdc17f3b Support macro parameters in filter run prefixes (#6164)
* Support macro params in filter run prefixes and support substitution for variables set by filter run prefixes

* feat: add support macro parameters and variable substitution for all filter run prefixes

* fix: rename options argument to opts for disambiguation

* feat: add support for macro params to cascade filterrun prefix
2021-11-23 13:51:42 +00:00
Marxsal
7b076eadfa Tag Definition for tiddler node-webkit (#6255) 2021-11-21 22:20:13 +00:00
Marxsal
c5ce2a0a94 Tag Definition for tiddler ModuleType (#6256) 2021-11-21 22:19:54 +00:00
Saq Imtiaz
7fcc84156e Fix: issues with drag and drop in Chrome 96 (#6261)
* fix: issues with drag and drop (false positives in detection for files being dropped) introduced by Chrome 96

* fix: call dragEventContainsType method more consistently.

* fix: call dragEventContainsType method more consistently.
2021-11-21 20:48:16 +00:00
Marxsal
75bf12db7a Tags related to releases for file path (#6236)
* Tags related to releases for file path

* Tag Releases -> Release Template

Changing "Releases" tag to "Release Template"
2021-11-20 17:28:48 +00:00
Marxsal
07de96459e Tags for file paths (#6250) 2021-11-20 17:27:43 +00:00
Marxsal
be036aa9c8 Tag Demonstrations for Sample Wizard tiddlers (#6251) 2021-11-20 17:26:38 +00:00
Bram Chen
0664895670 Update chinese translations (#6249)
* Add chinese translations for `TiddlerColour/*` in ControlPanel.multids

* Fix typo
2021-11-20 16:16:54 +00:00
jeremy@jermolene.com
dde1e4bc0f Fixed missed icon and colour cascades 2021-11-20 08:55:00 +00:00
jeremy@jermolene.com
122de63b71 Add a cascade for choosing tiddler colour
Following on from #6168
2021-11-19 12:01:32 +00:00
jeremy@jermolene.com
e3ba880e18 Fix tag pill colouring
Fixes #6221
2021-11-19 10:52:13 +00:00
Marxsal
e3be15531f Adding tag 'Saving' to four IIS Examples (#6244) 2021-11-19 08:07:19 +00:00
Marxsal
5a3ff4e3dc Adding tag Definition for Osmosoft (#6247) 2021-11-19 07:55:16 +00:00
Marxsal
f7f32f00a3 Adding tag to ListopsData (#6248) 2021-11-19 07:54:43 +00:00
Marxsal
d7d694b14f tagging product badges as HelloThere Badge (#6243) 2021-11-18 18:43:23 +00:00
Cameron Fischer
a6feb6dd66 Changed vanilla/reset.tid to be a css file (#6242) 2021-11-18 18:01:13 +00:00
Marxsal
ecf10e41c3 Add tag 'Definitions' to 'BT' (#6231) 2021-11-18 09:02:05 +00:00
Marxsal
481edc1cfe Tag additions (#6233) 2021-11-18 08:58:41 +00:00
Marxsal
ff5817ab50 Tag additions - Widget Examples (#6234) 2021-11-18 08:56:36 +00:00
Marxsal
80235bf049 New tag - Message Examples (#6235) 2021-11-18 08:56:03 +00:00
Marxsal
ecddd5a7be Tags related to Mechanisms for file path (#6237) 2021-11-18 08:48:16 +00:00
Marxsal
f22fc788e5 Changing tags for NamedCommandParameters (#6238) 2021-11-18 08:47:52 +00:00
Marxsal
f828a582c3 Adding tags for file paths (#6240) 2021-11-18 08:45:20 +00:00
Cameron Fischer
a94f94f352 Trim whitespace is stylesheet viewer (#6241) 2021-11-18 08:43:15 +00:00
Marxsal
9f34a01577 Add tag 'Operator Examples' days of the week tiddler set (#6224) 2021-11-17 12:18:57 +00:00
Marxsal
9cd49ed485 Add tag 'Widget Examples' to 3 sample tiddlers (#6226) 2021-11-17 12:15:03 +00:00
Marxsal
4ea1a05af6 Add tag 'Variable Examples' to 3 tiddlers (#6227) 2021-11-17 12:14:42 +00:00
Marxsal
b6eb6d477b Message tm-open-window enhancements (#6188)
* Message tm-open-window enhancements

* Add Messages tiddler. Enhance its description.
2021-11-17 12:13:01 +00:00
jeremy@jermolene.com
cce18d8e2e Merge branch 'tiddlywiki-com' 2021-11-17 09:33:55 +00:00
Marxsal
45d469ca5c Fix tag 'Hidden Settings' on 'Hidden Setting: New-Image Type (#6225) 2021-11-16 22:41:24 +00:00
Marxsal
fbee714ffe Add tags to route to widgets file path (#6223) 2021-11-16 22:06:04 +00:00
Bram Chen
2429dcc2e2 Add chinese translations of control panel UI for inspecting template cascades (#6219) 2021-11-16 17:01:57 +00:00
Marxsal
4d84422f22 Add tag 'Macro Examples' to examples of macros (#6220) 2021-11-16 17:01:43 +00:00
jeremy@jermolene.com
d98bfbde58 Partial revert of "Add tag Demonstration to related tiddlers (#6213)"
See #6222

This reverts commit 7e32e2efcf.
2021-11-16 09:24:27 +00:00
Marxsal
983787a8f2 Tag changes to TW5 Magick and TiddlyMap Plugin (#6210) 2021-11-15 21:19:17 +00:00
Marxsal
7b83c22e78 Tag changes to Plugin Types (#6211) 2021-11-15 21:18:47 +00:00
Marxsal
c8c43b2811 Add new tag TaskManagementExample to related tiddlers (#6212) 2021-11-15 21:18:22 +00:00
Marxsal
7e32e2efcf Add tag Demonstration to related tiddlers (#6213) 2021-11-15 21:17:47 +00:00
eiro10
6f8e842105 tw5.com : Fix typo in ActionListopsWidget.tid (#6215)
* tw5.com : Fix typo in ActionListopsWidget.tid

* tw5.com : update modified field of ActionListopsWidget.tid

When editing a tiddler outside TW itself, this doesn't change automatically the modified field.
2021-11-15 21:17:10 +00:00
eiro10
ce99c0aa0f tw5.com : Fix typo in contributing.tid (#6216)
* tw5.com : Fix typo in contributing.tid

* tw5.com : update modified field of Contributing.tid

When editing a tiddler outside TW itself, this doesn't change automatically the modified field.
2021-11-15 21:16:36 +00:00
eiro10
3ff165402c tw5.com : Fix typo in list.tid (#6217)
* tw5.com : Fix typo in list.tid

* tw5.com : update modified field of list.tid

When editing a tiddler outside TW itself, this doesn't change automatically the modified field.
2021-11-15 21:15:59 +00:00
Jeremy Ruston
a350a76a00 Add "cascade" filter run prefix and use it to control view templates (#6168)
* Initial Commit

* Set currentTiddler and ..currentTiddler for filter evaulation

* Precompile the filters for performance

* Add explicit test for empty result when no filter passes

* Use the cascade filter run prefix to choose the view template body template

* Use the cascade mechanism to choose between the edit and view templates

* Simplify cascade filter

Thanks @saqimtiaz

* Add control panel UI for inspecting the template cascades

* Refactor import listing and plugin listing as alternate body templates

As suggested by @pmario

* Refer to $:/core/ui/{View|Edit}Template via their associated config tiddlers

* Fix typo in previous commit

* Add demo of custom story tiddler template

* Tweak control panel wording

* Standardise "Story Tiddler Template" nomenclature

* Add a cascade for the editor template body

* Add a cascade for the view template title

* Avoid unwanted whitespace

* Add a cascade for dynamically choosing tiddler icons
2021-11-15 21:06:47 +00:00
Marxsal
05b9dd1822 Add tag TaskManagementExample to ...Mordor... (#6218) 2021-11-15 18:40:08 +00:00
Saq Imtiaz
5207b1c127 Docs: add node.js related tag to relevant tiddlers (#6205) 2021-11-14 15:47:45 +00:00
Saq Imtiaz
267c351735 Docs: add "Widgets" tag to new docs tiddlers (#6195) 2021-11-14 15:47:19 +00:00
eiro10
f545418e55 Signing the CLA (#6206) 2021-11-14 15:45:10 +00:00
Marxsal
97dd832d2e More tag changes for file routing (#6199) 2021-11-14 09:12:19 +00:00
Marxsal
d7e7d87581 Add Filter tag to The Extended Listops Filters (#6201) 2021-11-14 08:47:53 +00:00
Marxsal
bd2efeaaa3 Add new tag 'Table-of-Contents Demonstrations' (#6202) 2021-11-14 08:47:07 +00:00
Marxsal
a206bf56b9 Add new tag 'GettingStarted' to Getting Started Tiddlers (#6204) 2021-11-14 08:42:43 +00:00
Marxsal
a33e94c4ee Correct tag names. Add missing tags (#6193)
* Correct tag names. Add missing tags

* Update _muritest_ by Simon Huber.tid

Auto PR didn't include this.

* Update _TiddlyServer_ by Matt Lauber.tid

Fixing tag
2021-11-13 08:48:52 +00:00
Saq Imtiaz
e9313b1c9d Update Hidden Setting_ Typin Refresh Delay.tid (#6187) 2021-11-09 19:44:15 +00:00
twMat
8096935d87 Update DateFormat.tid (#6186)
Ref [discussion](https://talk.tiddlywiki.org/t/help-me-improve-the-dateformat-doc)
2021-11-09 19:16:25 +00:00
Marxsal
dcb083abb0 Add example of actions attribute to SelectWidget documentation (#6181) 2021-11-08 16:59:17 +00:00
Telumire
6cc76fe6ab Update the tiddler "Simple ways to write protect tiddlers" to use data-tags (#6175) 2021-11-06 08:14:36 +00:00
Marxsal
4f8de1881c Increase specificity of doc-examples input (#6174) 2021-11-05 18:09:53 +00:00
Marxsal
746a8ca17f Restore some docs re EditTextWidget (#6170) 2021-11-04 20:39:53 +00:00
308 changed files with 2635 additions and 796 deletions

View File

@@ -1,15 +1,8 @@
# Known minified files
# Ignore "third party" code whose style we will not change.
/boot/sjcl.js
/core/modules/utils/base64-utf8/base64-utf8.module.js
/core/modules/utils/base64-utf8/base64-utf8.module.min.js
/core/modules/utils/diff-match-patch/diff_match_patch.js
/plugins/tiddlywiki/async/files/async.min.v1.5.0.js
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/anyword-hint.js
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/css-hint.js
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js
/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js
/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js
/plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js
/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js
/core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js
/core/modules/utils/dom/csscolorparser.js
/plugins/tiddlywiki/*/files/

View File

@@ -64,7 +64,23 @@ rules:
init-declarations: 'off'
jsx-quotes: error
key-spacing: 'off'
keyword-spacing: 'off'
keyword-spacing:
- error
- before: true
after: false
overrides:
'case':
after: true
'do':
'after': true
'else':
after: true
'return':
after: true
'throw':
after: true
'try':
after: true
line-comment-position: 'off'
linebreak-style: 'off'
lines-around-comment: 'off'

View File

@@ -5,7 +5,7 @@
# Default to the current version number for building the plugin library
if [ -z "$TW5_BUILD_VERSION" ]; then
TW5_BUILD_VERSION=v5.2.0
TW5_BUILD_VERSION=v5.2.2
fi
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"

View File

@@ -2649,3 +2649,4 @@ if(typeof(exports) !== "undefined") {
} else {
_boot(window.$tw);
}
//# sourceURL=$:/boot/boot.js

View File

@@ -117,3 +117,4 @@ if(typeof(exports) === "undefined") {
// Export functionality as a module
exports.bootprefix = _bootprefix;
}
//# sourceURL=$:/boot/bootprefix.js

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,7 @@ type: text/plain
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
Copyright (c) 2004-2007, Jeremy Ruston
Copyright (c) 2007-2021, UnaMesa Association
Copyright (c) 2007-2022, UnaMesa Association
All rights reserved.
Redistribution and use in source and binary forms, with or without

View File

@@ -208,6 +208,8 @@ Theme/Caption: Theme
Theme/Prompt: Current theme:
TiddlerFields/Caption: Tiddler Fields
TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers).
TiddlerColour/Caption: Tiddler Colour
TiddlerColour/Hint: This rules cascade is used to dynamically choose the colour for a tiddler (used for the icon and the associated tag pill).
TiddlerIcon/Caption: Tiddler Icon
TiddlerIcon/Hint: This rules cascade is used to dynamically choose the icon for a tiddler.
Toolbars/Caption: Toolbars

View File

@@ -3,6 +3,7 @@ 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
code-body: The view template will display the tiddler as code if set to ''yes''
color: The CSS color value associated with a tiddler
component: The name of the component responsible for an [[alert tiddler|AlertMechanism]]
current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]]
@@ -13,9 +14,9 @@ description: The descriptive text for a plugin, or a modal dialogue
draft.of: For draft tiddlers, contains the title of the tiddler of which this is a draft
draft.title: For draft tiddlers, contains the proposed new title of the tiddler
footer: The footer text for a wizard
hide-body: The view template will hide bodies of tiddlers if set to: ''yes''
hide-body: The view template will hide bodies of tiddlers if set to ''yes''
icon: The title of the tiddler containing the icon associated with a tiddler
library: Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''
library: Indicates that a tiddler should be saved as a JavaScript library if set to ''yes''
list: An ordered list of tiddler titles associated with a tiddler
list-before: If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty
list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty
@@ -32,7 +33,7 @@ tags: A list of tags associated with a tiddler
text: The body text of a tiddler
throttle.refresh: If present, throttles refreshes of this tiddler
title: The unique name of a tiddler
toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''
toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to ''no''
type: The content type of a tiddler
version: Version information for a plugin
_is_skinny: If present, indicates that the tiddler text field must be loaded from the server

View File

@@ -14,7 +14,7 @@ ConfirmAction: Do you wish to proceed?
Count: count
DefaultNewTiddlerTitle: New Tiddler
Diffs/CountMessage: <<diff-count>> differences
DropMessage: Drop here (or use the 'Escape' key to cancel)
DropMessage: Drop now (or use the 'Escape' key to cancel)
Encryption/Cancel: Cancel
Encryption/ConfirmClearPassword: Do you wish to clear the password? This will remove the encryption applied when saving this wiki
Encryption/PromptSetPassword: Set a new password for this TiddlyWiki

View File

@@ -324,7 +324,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
If there are no Files, let the browser handle it.
*/
EditTextWidget.prototype.handleDropEvent = function(event) {
if(event.dataTransfer.files.length) {
if($tw.utils.dragEventContainsFiles(event)) {
event.preventDefault();
event.stopPropagation();
this.dispatchDOMEvent(this.cloneEvent(event,["dataTransfer"]));

View File

@@ -13,15 +13,17 @@ Text editor operation to wrap the selected lines with a prefix and suffix
"use strict";
exports["wrap-lines"] = function(event,operation) {
var prefix = event.paramObject.prefix || "",
suffix = event.paramObject.suffix || "";
// Cut just past the preceding line break, or the start of the text
operation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);
// Cut to just past the following line break, or to the end of the text
operation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);
// Add the prefix and suffix
operation.replacement = event.paramObject.prefix + "\n" +
operation.replacement = prefix + "\n" +
operation.text.substring(operation.cutStart,operation.cutEnd) + "\n" +
event.paramObject.suffix + "\n";
operation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;
suffix + "\n";
operation.newSelStart = operation.cutStart + prefix.length + 1;
operation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);
};

View File

@@ -26,17 +26,19 @@ exports.cascade = function(operationSubFunction,options) {
filterFnList[index] = options.wiki.compileFilter(filter);
}
var output = filterFnList[index](options.wiki.makeTiddlerIterator([title]),{
getVariable: function(name) {
switch(name) {
case "currentTiddler":
return "" + title;
case "..currentTiddler":
return widget.getVariable("currentTiddler");
default:
return widget.getVariable(name);
}
getVariable: function(name,opts) {
opts = opts || {};
opts.variables = {
"currentTiddler": "" + title,
"..currentTiddler": widget.getVariable("currentTiddler")
};
if(name in opts.variables) {
return opts.variables[name];
} else {
return widget.getVariable(name,opts);
}
});
}
});
if(output.length !== 0) {
result = output[0];
return false;

View File

@@ -16,23 +16,30 @@ Export our filter function
exports.filter = function(operationSubFunction,options) {
return function(results,source,widget) {
if(results.length > 0) {
var resultsToRemove = [];
var resultsToRemove = [],
index = 0;
results.each(function(title) {
var filtered = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{
getVariable: function(name) {
switch(name) {
case "currentTiddler":
return "" + title;
case "..currentTiddler":
return widget.getVariable("currentTiddler");
default:
return widget.getVariable(name);
getVariable: function(name,opts) {
opts = opts || {};
opts.variables = {
"currentTiddler": "" + title,
"..currentTiddler": widget.getVariable("currentTiddler"),
"index": "" + index,
"revIndex": "" + (results.length - 1 - index),
"length": "" + results.length
};
if(name in opts.variables) {
return opts.variables[name];
} else {
return widget.getVariable(name,opts);
}
}
});
if(filtered.length === 0) {
resultsToRemove.push(title);
}
++index;
});
results.remove(resultsToRemove);
}

View File

@@ -20,20 +20,19 @@ exports.map = function(operationSubFunction,options) {
results.clear();
$tw.utils.each(inputTitles,function(title) {
var filtered = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{
getVariable: function(name) {
switch(name) {
case "currentTiddler":
return "" + title;
case "..currentTiddler":
return widget.getVariable("currentTiddler");
case "index":
return "" + index;
case "revIndex":
return "" + (inputTitles.length - 1 - index);
case "length":
return "" + inputTitles.length;
default:
return widget.getVariable(name);
getVariable: function(name,opts) {
opts = opts || {};
opts.variables = {
"currentTiddler": "" + title,
"..currentTiddler": widget.getVariable("currentTiddler"),
"index": "" + index,
"revIndex": "" + (inputTitles.length - 1 - index),
"length": "" + inputTitles.length
};
if(name in opts.variables) {
return opts.variables[name];
} else {
return widget.getVariable(name,opts);
}
}
});

View File

@@ -15,26 +15,24 @@ Export our filter prefix function
exports.reduce = function(operationSubFunction,options) {
return function(results,source,widget) {
if(results.length > 0) {
var accumulator = "";
var index = 0;
var accumulator = "",
index = 0;
results.each(function(title) {
var list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{
getVariable: function(name) {
switch(name) {
case "currentTiddler":
return "" + title;
case "..currentTiddler":
return widget.getVariable("currentTiddler");
case "accumulator":
return "" + accumulator;
case "index":
return "" + index;
case "revIndex":
return "" + (results.length - 1 - index);
case "length":
return "" + results.length;
default:
return widget.getVariable(name);
getVariable: function(name,opts) {
opts = opts || {};
opts.variables = {
"currentTiddler": "" + title,
"..currentTiddler": widget.getVariable("currentTiddler"),
"index": "" + index,
"revIndex": "" + (results.length - 1 - index),
"length": "" + results.length,
"accumulator": "" + accumulator
};
if(name in opts.variables) {
return opts.variables[name];
} else {
return widget.getVariable(name,opts);
}
}
});

View File

@@ -26,14 +26,16 @@ exports.sort = function(operationSubFunction,options) {
compareFn;
results.each(function(title) {
var key = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{
getVariable: function(name) {
switch(name) {
case "currentTiddler":
return "" + title;
case "..currentTiddler":
return widget.getVariable("currentTiddler");
default:
return widget.getVariable(name);
getVariable: function(name,opts) {
opts = opts || {};
opts.variables = {
"currentTiddler": "" + title,
"..currentTiddler": widget.getVariable("currentTiddler")
};
if(name in opts.variables) {
return opts.variables[name];
} else {
return widget.getVariable(name,opts);
}
}
});

View File

@@ -95,10 +95,12 @@ function parseFilterOperation(operators,filterString,p) {
if(nextBracketPos === -1) {
throw "Missing closing bracket in filter expression";
}
if(!operator.regexp) {
if(operator.regexp) {
operand.text = "";
} else {
operand.text = filterString.substring(p,nextBracketPos);
operator.operands.push(operand);
}
operator.operands.push(operand);
p = nextBracketPos + 1;
}

View File

@@ -0,0 +1,27 @@
/*\
title: $:/core/modules/filters/crypto.js
type: application/javascript
module-type: filteroperator
Filter operators for cryptography, using the Stanford JavaScript library
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.sha256 = function(source,operator,options) {
var results = [],
length = parseInt(operator.operand,10) || 20,
sha256 = function(text) {
return sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(text)).substr(0,length);
};
source(function(tiddler,title) {
results.push(sha256(title));
});
return results;
};
})();

View File

@@ -51,6 +51,20 @@ exports.startup = function() {
element.focus(event.paramObject);
}
});
// Install the tm-rename-tiddler and tm-relink-tiddler messages
var makeRenameHandler = function(method) {
return function(event) {
var options = {},
paramObject = event.paramObject || {},
from = paramObject.from || event.tiddlerTitle,
to = paramObject.to;
options.dontRenameInTags = (paramObject.renameInTags === "false" || paramObject.renameInTags === "no") ? true : false;
options.dontRenameInLists = (paramObject.renameInLists === "false" || paramObject.renameInLists === "no") ? true : false;
$tw.wiki[method](from,to,options);
};
};
$tw.rootWidget.addEventListener("tm-rename-tiddler",makeRenameHandler("renameTiddler"));
$tw.rootWidget.addEventListener("tm-relink-tiddler",makeRenameHandler("relinkTiddler"));
// Install the scroller
$tw.pageScroller = new $tw.utils.PageScroller();
$tw.rootWidget.addEventListener("tm-scroll",function(event) {

View File

@@ -24,13 +24,13 @@ exports.isDraft = function() {
return this.hasField("draft.of");
};
exports.getFieldString = function(field) {
exports.getFieldString = function(field,defaultValue) {
var value = this.fields[field];
// Check for a missing field
if(value === undefined || value === null) {
return "";
return defaultValue || "";
}
// Parse the field with the associated module (if any)
// Stringify the field with the associated tiddler field module (if any)
var fieldModule = $tw.Tiddler.fieldModules[field];
if(fieldModule && fieldModule.stringify) {
return fieldModule.stringify.call(this,value);

View File

@@ -21,7 +21,7 @@ exports.extractEncryptedStoreArea = function(text) {
if(encryptedStoreAreaStart !== -1) {
var encryptedStoreAreaEnd = text.indexOf("</pre>",encryptedStoreAreaStart);
if(encryptedStoreAreaEnd !== -1) {
return $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));
return $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd));
}
}
return null;

View File

@@ -208,10 +208,10 @@ function parseJSONTiddlers(json,fallbackTitle) {
return data;
};
exports.dragEventContainsFiles = function(event) {
function dragEventContainsType(event,targetType) {
if(event.dataTransfer.types) {
for(var i=0; i<event.dataTransfer.types.length; i++) {
if(event.dataTransfer.types[i] === "Files") {
if(event.dataTransfer.types[i] === targetType) {
return true;
break;
}
@@ -220,4 +220,10 @@ exports.dragEventContainsFiles = function(event) {
return false;
};
exports.dragEventContainsFiles = function(event) {
return (dragEventContainsType(event,"Files") && !dragEventContainsType(event,"text/plain"));
};
exports.dragEventContainsType = dragEventContainsType;
})();

View File

@@ -49,10 +49,14 @@ Handle an event
*/
PageScroller.prototype.handleEvent = function(event) {
if(event.type === "tm-scroll") {
var options = {};
if($tw.utils.hop(event.paramObject,"animationDuration")) {
options.animationDuration = event.paramObject.animationDuration;
}
if(event.paramObject && event.paramObject.selector) {
this.scrollSelectorIntoView(null,event.paramObject.selector);
this.scrollSelectorIntoView(null,event.paramObject.selector,null,options);
} else {
this.scrollIntoView(event.target);
this.scrollIntoView(event.target,null,options);
}
return false; // Event was handled
}
@@ -62,10 +66,10 @@ PageScroller.prototype.handleEvent = function(event) {
/*
Handle a scroll event hitting the page document
*/
PageScroller.prototype.scrollIntoView = function(element,callback) {
PageScroller.prototype.scrollIntoView = function(element,callback,options) {
var self = this,
duration = $tw.utils.getAnimationDuration(),
srcWindow = element ? element.ownerDocument.defaultView : window;
duration = $tw.utils.hop(options,"animationDuration") ? parseInt(options.animationDuration) : $tw.utils.getAnimationDuration(),
srcWindow = element ? element.ownerDocument.defaultView : window;
// Now get ready to scroll the body
this.cancelScroll(srcWindow);
this.startTime = Date.now();
@@ -122,11 +126,11 @@ PageScroller.prototype.scrollIntoView = function(element,callback) {
drawFrame();
};
PageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {
PageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback,options) {
baseElement = baseElement || document.body;
var element = baseElement.querySelector(selector);
if(element) {
this.scrollIntoView(element,callback);
this.scrollIntoView(element,callback,options);
}
};

View File

@@ -198,7 +198,8 @@ DropZoneWidget.prototype.handleDropEvent = function(event) {
this.resetState();
// Import any files in the drop
var numFiles = 0;
if(dataTransfer.files) {
// If we have type text/vnd.tiddlywiki then skip trying to import files
if(dataTransfer.files && !$tw.utils.dragEventContainsType(event,"text/vnd.tiddler")) {
numFiles = this.wiki.readFiles(dataTransfer.files,{
callback: readFileCallback,
deserializer: this.dropzoneDeserializer

View File

@@ -111,6 +111,16 @@ ImageWidget.prototype.render = function(parent,nextSibling) {
if(this.imageAlt) {
domNode.setAttribute("alt",this.imageAlt);
}
// Add classes when the image loads or fails
$tw.utils.addClass(domNode,"tc-image-loading");
domNode.addEventListener("load",function() {
$tw.utils.removeClass(domNode,"tc-image-loading");
$tw.utils.addClass(domNode,"tc-image-loaded");
},false);
domNode.addEventListener("error",function() {
$tw.utils.removeClass(domNode,"tc-image-loading");
$tw.utils.addClass(domNode,"tc-image-error");
},false);
// Insert element
parent.insertBefore(domNode,nextSibling);
this.domNodes.push(domNode);

View File

@@ -46,7 +46,7 @@ ImportVariablesWidget.prototype.execute = function(tiddlerList) {
this.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);
// Accumulate the <$set> widgets from each tiddler
$tw.utils.each(this.tiddlerList,function(title) {
var parser = widgetPointer.wiki.parseTiddler(title);
var parser = widgetPointer.wiki.parseTiddler(title,{parseAsInline:true});
if(parser) {
var parseTreeNode = parser.tree[0];
while(parseTreeNode && parseTreeNode.type === "set") {

View File

@@ -51,6 +51,9 @@ ListWidget.prototype.render = function(parent,nextSibling) {
} else {
this.storyview = null;
}
if(this.storyview && this.storyview.renderEnd) {
this.storyview.renderEnd();
}
};
/*

View File

@@ -44,8 +44,7 @@ NavigatorWidget.prototype.render = function(parent,nextSibling) {
{type: "tm-fold-tiddler", handler: "handleFoldTiddlerEvent"},
{type: "tm-fold-other-tiddlers", handler: "handleFoldOtherTiddlersEvent"},
{type: "tm-fold-all-tiddlers", handler: "handleFoldAllTiddlersEvent"},
{type: "tm-unfold-all-tiddlers", handler: "handleUnfoldAllTiddlersEvent"},
{type: "tm-rename-tiddler", handler: "handleRenameTiddlerEvent"}
{type: "tm-unfold-all-tiddlers", handler: "handleUnfoldAllTiddlersEvent"}
]);
this.parentDomNode = parent;
this.computeAttributes();
@@ -636,16 +635,6 @@ NavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {
});
};
NavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {
var options = {},
paramObject = event.paramObject || {},
from = paramObject.from || event.tiddlerTitle,
to = paramObject.to;
options.dontRenameInTags = (paramObject.renameInTags === "false" || paramObject.renameInTags === "no") ? true : false;
options.dontRenameInLists = (paramObject.renameInLists === "false" || paramObject.renameInLists === "no") ? true : false;
this.wiki.renameTiddler(from,to,options);
};
exports.navigator = NavigatorWidget;
})();

View File

@@ -64,9 +64,9 @@ RadioWidget.prototype.getValue = function() {
tiddler = this.wiki.getTiddler(this.radioTitle);
if(tiddler) {
if(this.radioIndex) {
value = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);
value = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex,this.radioDefault);
} else {
value = tiddler.getFieldString(this.radioField);
value = tiddler.getFieldString(this.radioField,this.radioDefault);
}
} else {
value = this.radioDefault;

View File

@@ -38,10 +38,14 @@ ScrollableWidget.prototype.handleScrollEvent = function(event) {
if(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === "yes") {
return true;
}
var options = {};
if($tw.utils.hop(event.paramObject,"animationDuration")) {
options.animationDuration = event.paramObject.animationDuration;
}
if(event.paramObject && event.paramObject.selector) {
this.scrollSelectorIntoView(null,event.paramObject.selector);
this.scrollSelectorIntoView(null,event.paramObject.selector,null,options);
} else {
this.scrollIntoView(event.target);
this.scrollIntoView(event.target,null,options);
}
return false; // Handled event
};
@@ -49,9 +53,9 @@ ScrollableWidget.prototype.handleScrollEvent = function(event) {
/*
Scroll an element into view
*/
ScrollableWidget.prototype.scrollIntoView = function(element) {
var duration = $tw.utils.getAnimationDuration(),
srcWindow = element ? element.ownerDocument.defaultView : window;
ScrollableWidget.prototype.scrollIntoView = function(element,callback,options) {
var duration = $tw.utils.hop(options,"animationDuration") ? parseInt(options.animationDuration) : $tw.utils.getAnimationDuration(),
srcWindow = element ? element.ownerDocument.defaultView : window;
this.cancelScroll();
this.startTime = Date.now();
var scrollPosition = {
@@ -114,11 +118,11 @@ ScrollableWidget.prototype.scrollIntoView = function(element) {
}
};
ScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {
ScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback,options) {
baseElement = baseElement || document.body;
var element = baseElement.querySelector(selector);
if(element) {
this.scrollIntoView(element,callback);
this.scrollIntoView(element,callback,options);
}
};
@@ -155,8 +159,6 @@ ScrollableWidget.prototype.render = function(parent,nextSibling) {
// Create elements
this.outerDomNode = this.document.createElement("div");
$tw.utils.setStyle(this.outerDomNode,[
{overflowY: "auto"},
{overflowX: "auto"},
{webkitOverflowScrolling: "touch"}
]);
this.innerDomNode = this.document.createElement("div");

View File

@@ -122,7 +122,7 @@ Widget.prototype.getVariableInfo = function(name,options) {
});
// Only substitute variable references if this variable was defined with the \define pragma
if(variable.isMacroDefinition) {
value = this.substituteVariableReferences(value);
value = this.substituteVariableReferences(value,options);
}
return {
text: value,
@@ -175,10 +175,10 @@ Widget.prototype.resolveVariableParameters = function(formalParams,actualParams)
return results;
};
Widget.prototype.substituteVariableReferences = function(text) {
Widget.prototype.substituteVariableReferences = function(text,options) {
var self = this;
return (text || "").replace(/\$\(([^\)\$]+)\)\$/g,function(match,p1,offset,string) {
return self.getVariable(p1,{defaultValue: ""});
return options.variables && options.variables[p1] || (self.getVariable(p1,{defaultValue: ""}));
});
};
@@ -314,24 +314,40 @@ excludeEventAttributes: ignores attributes whose name begins with "on"
Widget.prototype.assignAttributes = function(domNode,options) {
options = options || {};
var self = this;
$tw.utils.each(this.attributes,function(v,a) {
// Check exclusions
if(options.excludeEventAttributes && a.substr(0,2) === "on") {
v = undefined;
var assignAttribute = function(name,value) {
// Check for excluded attribute names
if(options.excludeEventAttributes && name.substr(0,2) === "on") {
value = undefined;
}
if(v !== undefined) {
var b = a.split(":");
// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)
try {
if (b.length == 2 && b[0] == "xlink"){
domNode.setAttributeNS("http://www.w3.org/1999/xlink",b[1],v);
} else {
domNode.setAttributeNS(null,a,v);
if(value !== undefined) {
// Handle the xlink: namespace
var namespace = null;
if(name.substr(0,6) === "xlink:" && name.length > 6) {
namespace = "http://www.w3.org/1999/xlink";
name = name.substr(6);
}
// Handle styles
if(name.substr(0,6) === "style." && name.length > 6) {
domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;
} else {
// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)
try {
domNode.setAttributeNS(namespace,name,value);
} catch(e) {
}
} catch(e) {
}
}
});
}
// Not all parse tree nodes have the orderedAttributes property
if(this.parseTreeNode.orderedAttributes) {
$tw.utils.each(this.parseTreeNode.orderedAttributes,function(attribute,index) {
assignAttribute(attribute.name,self.attributes[attribute.name]);
});
} else {
$tw.utils.each(Object.keys(self.attributes).sort(),function(name) {
assignAttribute(name,self.attributes[name]);
});
}
};
/*

View File

@@ -46,26 +46,31 @@ function relinkTiddler(fromTitle,toTitle,options) {
if(!tiddler.fields["plugin-type"] && type !== "application/javascript") {
var tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,
list = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,
isModified = false;
isModified = false,
processList = function(listField) {
if(listField && listField.indexOf(fromTitle) !== -1) {
// Remove any existing instances of the toTitle
var p = listField.indexOf(toTitle);
while(p !== -1) {
listField.splice(p,1);
p = listField.indexOf(toTitle);
}
// Replace the fromTitle with toTitle
$tw.utils.each(listField,function (title,index) {
if(title === fromTitle) {
listField[index] = toTitle;
isModified = true;
}
});
}
};
if(!options.dontRenameInTags) {
// Rename tags
$tw.utils.each(tags,function (title,index) {
if(title === fromTitle) {
console.log("Renaming tag '" + tags[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'");
tags[index] = toTitle;
isModified = true;
}
});
processList(tags);
}
if(!options.dontRenameInLists) {
// Rename lists
$tw.utils.each(list,function (title,index) {
if(title === fromTitle) {
console.log("Renaming list item '" + list[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'");
list[index] = toTitle;
isModified = true;
}
});
processList(list);
}
if(isModified) {
var newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())

View File

@@ -6,7 +6,7 @@ title: $:/core/templates/tiddlywiki5.html
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<!--~~ Raw markup for the top of the head section ~~-->
`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`
`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
<meta name="application-name" content="TiddlyWiki" />
<meta name="generator" content="TiddlyWiki" />

View File

@@ -1,7 +1,7 @@
title: $:/core/ui/Components/tag-link
<$link>
<$set name="backgroundColor" value={{!!color}}>
<$set name="backgroundColor" value={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}}>
<span style=<<tag-styles>> class="tc-tag-label">
<$view field="title" format="text"/>
</span>

View File

@@ -1,5 +1,5 @@
title: $:/core/ui/ControlPanel/EditTemplateBody
tags: $:/tags/ControlPanel/Cascade
tags: $:/tags/ControlPanel/Cascades
caption: {{$:/language/ControlPanel/EditTemplateBody/Caption}}
\define lingo-base() $:/language/ControlPanel/EditTemplateBody/

View File

@@ -0,0 +1,9 @@
title: $:/core/ui/ControlPanel/TiddlerColour
tags: $:/tags/ControlPanel/Cascades
caption: {{$:/language/ControlPanel/TiddlerColour/Caption}}
\define lingo-base() $:/language/ControlPanel/TiddlerColour/
<<lingo Hint>>
{{$:/tags/TiddlerColourFilter||$:/snippets/ListTaggedCascade}}

View File

@@ -1,4 +1,4 @@
title: $:/core/ui/EditTemplate/body
tags: $:/tags/EditTemplate
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/EditTemplateBodyFilter]get[text]] :and[!is[blank]else[$:/core/ui/EditTemplate/body/default]] }}} />
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/EditTemplateBodyFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/EditTemplate/body/default]] }}} />

View File

@@ -29,7 +29,7 @@ color:$(foregroundColor)$;
\whitespace trim
<div class="tc-edit-tags">
<$list filter="[list[!!$tagField$]sort[title]]" storyview="pop">
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>
<$macrocall $name="tag-body" colour={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} palette={{$:/palette}} icon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] }}} tagField=<<__tagField__>>/>
</$list>
<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups="yes">
<$macrocall $name="tag-picker" tagField=<<__tagField__>>/>

View File

@@ -23,7 +23,7 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d
<$text text={{!!group}}/>
</div>
<$set name="userInput" value={{{ [<typeInputTiddler>get[text]] }}}>
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
</$list>
</$set>
</$list>

View File

@@ -1,5 +1,15 @@
title: $:/core/ui/PluginListItemTemplate
<div class="tc-menu-list-item">
<$link to={{!!title}}><$view field="description"><$view field="title"/></$view></$link>
</div>
\whitespace trim
<$link to={{!!title}} class="tc-plugin-info">
<div class="tc-plugin-info-chunk tc-plugin-info-icon">
<$transclude tiddler=<<currentTiddler>> subtiddler={{{ [<currentTiddler>addsuffix[/icon]] }}}>
<$transclude tiddler={{{ [<currentTiddler>get[plugin-type]addprefix[$:/core/images/plugin-generic-]] }}}/>
</$transclude>
</div>
<div class="tc-plugin-info-chunk tc-plugin-info-description">
<h1>
''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'':&nbsp;<$view field="description"><$view field="title"/></$view>
</h1>
</div>
</$link>

View File

@@ -1,3 +1,3 @@
title: $:/core/ui/StoryTiddlerTemplate
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/StoryTiddlerTemplateFilter]get[text]] :and[!is[blank]else{$:/config/ui/ViewTemplate}] }}} />
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/StoryTiddlerTemplateFilter]!is[draft]get[text]] :and[!is[blank]else{$:/config/ui/ViewTemplate}] }}} />

View File

@@ -13,8 +13,8 @@ title: $:/core/ui/TagPickerTagTemplate
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
</$list>
<<actions>>
<$set name="backgroundColor" value={{!!color}}>
<$wikify name="foregroundColor" text="""<$macrocall $name="contrastcolour" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>""">
<$set name="backgroundColor" value={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}}>
<$wikify name="foregroundColor" text="""<$macrocall $name="contrastcolour" target=<<backgroundColor>> fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>""">
<span class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>>
{{||$:/core/ui/TiddlerIcon}}<$view field="title" format="text"/>
</span>

View File

@@ -3,7 +3,7 @@ title: $:/core/ui/TagTemplate
\whitespace trim
<span class="tc-tag-list-item" data-tag-title=<<currentTiddler>>>
<$set name="transclusion" value=<<currentTiddler>>>
<$macrocall $name="tag-pill-body" tag=<<currentTiddler>> colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">> dragFilter='[all[current]tagging[]]' tag='span'"""/>
<$macrocall $name="tag-pill-body" tag=<<currentTiddler>> icon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] }}} colour={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">> dragFilter='[all[current]tagging[]]' tag='span'"""/>
<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down">
<$set name="tv-show-missing-links" value="yes">
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>

View File

@@ -1,15 +1,8 @@
title: $:/core/ui/TiddlerIcon
\whitespace trim
\define title-styles()
fill:$(foregroundColor)$;
\end
<$let tiddlerIcon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]get[text]] }}}>
<$let tiddlerIcon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] }}}>
<$list filter="[<tiddlerIcon>!is[blank]]" variable="ignore">
<$let foregroundColor={{!!color}}>
<span class=<<iconSpanClass>> style=<<title-styles>>>
<$transclude tiddler=<<tiddlerIcon>>/>
</span>
</$let>
</$list>
</$let>

View File

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

View File

@@ -2,6 +2,9 @@ title: $:/core/ui/ViewTemplate/title
tags: $:/tags/ViewTemplate
\whitespace trim
\define title-styles()
fill:$(foregroundColor)$;
\end
<div class="tc-tiddler-title">
<div class="tc-titlebar">
<span class="tc-tiddler-controls">
@@ -9,10 +12,12 @@ tags: $:/tags/ViewTemplate
</span>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link>
<$let iconSpanClass="tc-tiddler-title-icon">
<$let foregroundColor={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}}>
<span class="tc-tiddler-title-icon" style=<<title-styles>>>
{{||$:/core/ui/TiddlerIcon}}
</span>
</$let>
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateTitleFilter]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/title/default]] }}} />
<$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateTitleFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/title/default]] }}} />
</$link>
</$set>
</div>

View File

@@ -1,7 +1,7 @@
title: $:/snippets/allfields
\define renderfield(title)
<tr class="tc-view-field"><td class="tc-view-field-name">''$title$'':</td><td class="tc-view-field-value">//{{$:/language/Docs/Fields/$title$}}//</td></tr>
<tr class="tc-view-field"><td class="tc-view-field-name">''<$text text=<<__title__>>/>'':</td><td class="tc-view-field-value">//{{$:/language/Docs/Fields/$title$}}//</td></tr>
\end
<table class="tc-view-field-table"><tbody><$list filter="[fields[]sort[title]]" variable="listItem"><$macrocall $name="renderfield" title=<<listItem>>/></$list>
</tbody></table>

View File

@@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/library/v5.2.0/index.html
url: https://tiddlywiki.com/library/v5.2.2/index.html
caption: {{$:/language/OfficialPluginLibrary}}
{{$:/language/OfficialPluginLibrary/Hint}}

View File

@@ -0,0 +1,5 @@
title: $:/config/TiddlerColourFilters/
tags: $:/tags/TiddlerColourFilter
color-field: [has[color]then{!!color}]
default: [[$:/config/DefaultTiddlerColour]has[text]get[text]trim[]]

View File

@@ -1,7 +1,8 @@
title: $:/config/ViewTemplateBodyFilters/
tags: $:/tags/ViewTemplateBodyFilter
system: [prefix[$:/boot/]] [prefix[$:/config/]] [prefix[$:/core/]!field:title[$:/core/readme]!field:title[$:/core/icon]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/info/]] [prefix[$:/temp/]] +[limit[1]then[$:/core/ui/ViewTemplate/body/code]]
system: [prefix[$:/boot/]] [prefix[$:/config/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/core/ui/]split[/]count[]compare:number:eq[4]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/info/]] [prefix[$:/temp/]] +[limit[1]then[$:/core/ui/ViewTemplate/body/code]]
code-body: [field:code-body[yes]then[$:/core/ui/ViewTemplate/body/code]]
import: [field:plugin-type[import]then[$:/core/ui/ViewTemplate/body/import]]
plugin: [has[plugin-type]then[$:/core/ui/ViewTemplate/body/plugin]]
hide-body: [field:hide-body[yes]then[$:/core/ui/ViewTemplate/body/blank]]

View File

@@ -0,0 +1,9 @@
title: $:/snippets/DebugStylesheets
<style>[test]{list-style:'❌'}</style>
<ul>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]has[modified]]" counter="n">
<style>{{!!text}}[test="<<n>>"]{list-style:disc;}</style>
<li test=<<n>>><$link/></li>
</$list>
</ul>

View File

@@ -10,18 +10,20 @@ color:$(foregroundColor)$;
\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
<$element-tag$ $element-attributes$ class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>>
$actions${{||$:/core/ui/TiddlerIcon}}<$view tiddler=<<__tag__>> field="title" format="text" />
$actions$<$transclude tiddler="""$icon$"""/><$view tiddler=<<__tag__>> field="title" format="text" />
</$element-tag$>
</$vars>
\end
\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)
<$macrocall $name="tag-pill-inner" tag=<<__tag__>> colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
<$macrocall $name="tag-pill-inner" tag=<<__tag__>> icon="""$icon$""" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
\end
\define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"")
<span class="tc-tag-list-item" data-tag-title=<<__tag__>>>
<$macrocall $name="tag-pill-body" tag=<<__tag__>> colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
<$let currentTiddler=<<__tag__>>>
<$macrocall $name="tag-pill-body" tag=<<__tag__>> icon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]!is[draft]get[text]] }}} colour={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerColourFilter]!is[draft]get[text]] }}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/>
</$let>
</span>
\end

View File

@@ -1,6 +1,7 @@
title: $:/snippets/peek-stylesheets
\define expandable-stylesheets-list()
\whitespace trim
<ol>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]">
<$vars state=<<qualify "$:/state/peek-stylesheets/open/">>>
@@ -38,6 +39,7 @@ title: $:/snippets/peek-stylesheets
\end
\define stylesheets-list()
\whitespace trim
<ol>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]">
<li>
@@ -57,6 +59,7 @@ title: $:/snippets/peek-stylesheets
</$list>
</ol>
\end
\whitespace trim
<$vars modeState=<<qualify "$:/state/peek-stylesheets/mode/">>>

View File

@@ -0,0 +1,3 @@
title: $:/tags/TiddlerColourFilter
list: $:/config/TiddlerColourFilters/color-field $:/config/TiddlerColourFilters/default

View File

@@ -1,3 +1,3 @@
title: $:/tags/ViewTemplateBodyFilter
list: $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/default
list: $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/code-body $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/default

View File

@@ -2,7 +2,7 @@ caption: Quoi de neuf dans <<version>>
color: #fff
created: 20160603124050989
fr-title: BonjourLaVignette - Dernière Version
image: New Release Banner.png
image: New Release Banner
link: Releases
modified: 20160603124131122
tags: HelloThumbnail

View File

@@ -1,82 +0,0 @@
caption: 5.2.1
created: 20211003152250369
modified: 20211003152250369
tags: ReleaseNotes
title: Release 5.2.1
type: text/vnd.tiddlywiki
\define contributor(username)
<a href="https://github.com/$username$" style="text-decoration:none;font-size:24px;" class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><img src="https://github.com/$username$.png?size=32" width="32" height="32"/> @<$text text=<<__username__>>/></a>
\end
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.0...master]]//
! Highlights
! Performance Improvements
*
! Usability Improvements
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6015">> image picker in theme tweaks to not dismiss when an image is selected
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/5998">> a [[new hidden setting|Hidden Setting: Show Edit Preview per Tiddler]] for controlling the visibility of the editor preview pane on a per-tiddler basis
! Widget Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6148">> new LetWidget, a more flexible alternative to the SetWidget and the VarsWidget
! Filter improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6150">> new [[zth Operator]] that works like [[nth Operator]] but counts from zero instead of one
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/6149">> [[Map Filter Run Prefix]] to provide additional variables to the filter
! Hackability Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6012/files">> new `focus-editor` operation to [[WidgetMessage: tm-edit-text-operation]]
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6130">> new ActionSetMultipleFieldsWidget, new SetMultipleVariablesWidget and extended ActionSendMessageWidget for working with multiple variables/fields/indexes/parameters in one operation
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6127">> new trigonometric operators: [[acos|acos Operator]], [[asin|asin Operator]], [[atan|atan Operator]], [[cos|cos Operator]], [[sin|sin Operator]] and [[tan|tan Operator]]
* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/6145">> EditTextWidget to provide a new ''actionValue'' variable to action strings that contains the value of the input
! Developer Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6132">> support for widgets to access the order in which attributes are defined
! Client-server Improvements
*
! Node.js Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/5275">> support for recursively loading subdirectories with [[tiddlywiki.files Files]]
! Plugin Improvements
! Developer Experience Improvements
*
! Translation improvements
* Polish
! Other Bug Fixes
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6013">> refreshing of LinkWidget attributes
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6107">> crash when using "source=basename-uri-decoded" in tiddlywiki.files
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/8ae4428332e03a1fdaee26f777a0c3a372fff401">> ''$timestamp'' attribute ignored when using ActionSetFieldWidget to set the value of an index
! Acknowledgements
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
* <<contributor btheado>>
* <<contributor BurningTreeC>>
* <<contributor EvidentlyCube>>
* <<contributor flibbles>>
* <<contributor joshuafontany>>
* <<contributor Marxsal>>
* <<contributor pmario>>
* <<contributor saqimtiaz>>
* <<contributor Telumire>>

View File

@@ -0,0 +1,72 @@
caption: 5.2.2
created: 20220208152620527
modified: 20220208152620527
tags: ReleaseNotes
title: Release 5.2.2
type: text/vnd.tiddlywiki
\define contributor(username)
<a href="https://github.com/$username$" style="text-decoration:none;font-size:24px;" class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><img src="https://github.com/$username$.png?size=32" width="32" height="32"/> @<$text text=<<__username__>>/></a>
\end
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.1...master]]//
! Highlights
*
! Bug Fixes
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/60187dc59e6546d9ca8e6a35418f782a9627cda0">> importing/upgrading encrypted single file wikis
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6389">> RadioWidget not using default value if the field or index is missing
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6376">> [[WidgetMessage: tm-edit-text-operation]] crash with ''wrap-lines'' operation if prefix or suffix is missing
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6395">> processing of $:/tags/RawMarkupWikified/TopHead tiddlers
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6398">> issue whereby renaming tags could result in duplicate tags
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6426">> issue with ImportVariablesWidget when importing block mode widgets
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6428">> issue with ~LaTeX content within Markdown tiddlers
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/issues/6440">> search results obscured on narrow screens
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/6438">> crash when using deprecated regexp operands for filter operators
! Usability Improvements
* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/6435">> wording of drag and drop banner (from "drop here" to "drop now")
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/853a899c77766e47eade1dfa5822640ef9915637">> wrapping and wikification of field names in field viewer
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/0186c6490fbd1d8fd4de7c3fa99ccf4d129fbd80">> missing whitespace between description and MIME type in edit template dropdown for the ''type'' field
* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/commit/c7e8c87f85b54f60302ff8e396a7569d996e3f67">> incorrect usage of code view for certain system tiddlers
! Widget Improvements
*
! Filter improvements
*
! Hackability Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/commit/54cfda76ee353190f1cf0210b9071894fb1a5690">> support for ''code-body'' field set to ''yes'' to trigger display of a tiddler in the code view
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/commit/66ae1d6930796a9eb062fdb64a755adab8f39294">> classes to the ImageWidget to indicate whether it is loading, loaded or has encountered an error
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6381">> sourceURL tags to $:/boot/boot.js and $:/boot/bootprefix.js, enabling them to be accessed in the browser debugger more easily
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6410">> support to [[WidgetMessage: tm-scroll]] for scrolling without animating
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/commit/1a0c831216c397c6fef8e5685e47857193411a1b">> [[sha256 Operator]]
! Developer Improvements
* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6409">> support for ''renderEnd()'' method for storyviews
! Node.js Improvements
*
! Translation improvements
* Polish
! Acknowledgements
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
* <<contributor Jermolene>>

View File

@@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/prerelease/library/v5.2.1/index.html
url: https://tiddlywiki.com/prerelease/library/v5.2.2/index.html
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.

View File

@@ -1,4 +1,5 @@
title: $:/editions/tw5.com/download-empty
code-body: yes
\define saveTiddlerFilter()
[[$:/core]] [[$:/isEncrypted]] [[$:/themes/tiddlywiki/snowwhite]] [[$:/themes/tiddlywiki/vanilla]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] [[$:/config/OfficialPluginLibrary]] +[sort[title]]

View File

@@ -256,6 +256,16 @@ Tests the filtering mechanism.
expect(wiki.filterTiddlers("[modifier/Jo/]").join(",")).toBe("TiddlerOne,$:/TiddlerTwo,Tiddler Three,a fourth tiddler,one");
expect(console.log).toHaveBeenCalledWith("WARNING: Filter", "modifier", "has a deprecated regexp operand", /Jo/);
});
it("should handle regular expression operands without crashing", function() {
spyOn(console, 'log');
// We don't really care about the results. Just don't get RSoD.
expect(() => wiki.filterTiddlers("[all/current/]")).not.toThrow();
expect(() => wiki.filterTiddlers("[prefix/anything/]")).not.toThrow();
expect(() => wiki.filterTiddlers("[title/anything/]")).not.toThrow();
expect(() => wiki.filterTiddlers("[/anything/]")).not.toThrow();
expect(() => wiki.filterTiddlers("[//]")).not.toThrow();
});
it("should handle the prefix operator", function() {
expect(wiki.filterTiddlers("[prefix[Tiddler]]").join(",")).toBe("TiddlerOne,Tiddler Three");

View File

@@ -419,6 +419,22 @@ describe("'reduce' and 'intersection' filter prefix tests", function() {
// Prepend the position in the list using the index and length variables
expect(wiki.filterTiddlers("[tag[shopping]] :map[get[title]addprefix[-]addprefix<length>addprefix[of]addprefix<index>]").join(",")).toBe("0of4-Brownies,1of4-Chick Peas,2of4-Milk,3of4-Rice Pudding");
});
it("should handle macro parameters for filter run prefixes",function() {
var widget = require("$:/core/modules/widgets/widget.js");
var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] },
{ wiki:wiki, document:$tw.document});
rootWidget.makeChildWidgets();
var anchorWidget = rootWidget.children[0];
rootWidget.setVariable("greet","Hello $name$",[{name:"name"}],true);
rootWidget.setVariable("echo","$text$",[{name:"text"}],true);
// :map prefix
expect(wiki.filterTiddlers("1 :map[subfilter<greet Tom>join[ ]]",anchorWidget).join(",")).toBe("Hello Tom");
expect(wiki.filterTiddlers('[tag[shopping]] :map[<echo "$(index)$ $(currentTiddler)$">]',anchorWidget).join(",")).toBe("0 Brownies,1 Chick Peas,2 Milk,3 Rice Pudding");
// :reduce prefix
expect(wiki.filterTiddlers("1 :reduce[subfilter<greet Tom>join[ ]]",anchorWidget).join(",")).toBe("Hello Tom");
expect(wiki.filterTiddlers('[tag[shopping]] :reduce[<echo "$(accumulator)$ $(index)$ $(currentTiddler)$,">]',anchorWidget).join(",")).toBe(" 0 Brownies, 1 Chick Peas, 2 Milk, 3 Rice Pudding,");
});
});
})();

View File

@@ -1,5 +1,5 @@
created: 20210322152203906
list: [[Documentation Macros]] HelloThere GettingStarted Community
modified: 20210322152237613
created: 20211126104006194
list: [[Page and tiddler layout customisation]] [[Creating new buttons for the ViewToolbar and page controls]] [[Structuring TiddlyWiki]] Tagging [[Introduction to Lists]] [[Icon Gallery]] [[How to widen tiddlers (aka storyriver)]] [[How to turn off camel case linking]] [[How to put the last modification date in a banner]] [[How to hide the author's and other fields with CSS]] [[How to export tiddlers]] [[How to Customize TiddlyDesktop]] [[Editing Tiddlers with Vim]] [[Concatenating text and variables using macro substitution]] [[Demonstration: keyboard-driven-input Macro]] HelloThere GettingStarted Community
modified: 20211126111221917
title: $:/StoryList
type: text/vnd.tiddlywiki

View File

@@ -1,6 +1,6 @@
created: 20180626122427188
modified: 20180626134639673
tags: [[Using TiddlyWiki on Node.js]]
modified: 20211117234223960
tags: [[TiddlyWiki on Node.js]]
title: NamedCommandParameters
type: text/vnd.tiddlywiki

View File

@@ -1,5 +1,5 @@
created: 20131101111400000
modified: 20210402095728684
modified: 20211115092001000
tags: Community
title: Contributing
type: text/vnd.tiddlywiki
@@ -45,7 +45,7 @@ PR titles may also include a short prefix to indicate the subsystem to which the
! Commenting on Pull Requests
One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. [[Conventional Comments|https://conventionalcomments.org]] has some techcniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:
One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. [[Conventional Comments|https://conventionalcomments.org]] has some techniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:
|praise |Praises highlight something positive. Try to leave at least one of these comments per review. Do not leave false praise (which can actually be damaging). Do look for something to sincerely praise |
|nitpick |Nitpicks are small, trivial, but necessary changes. Distinguishing nitpick comments significantly helps direct the reader's attention to comments requiring more involvement |

View File

@@ -1,28 +1,31 @@
created: 20140721121924384
modified: 20201222114755959
modified: 20220131165124489
tags: Community
title: Forums
type: text/vnd.tiddlywiki
! Users
! Official Forums
The ~TiddlyWiki discussion groups are mailing lists for talking about ~TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.
The new official forum for talking about ~TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.
* The main ~TiddlyWiki group: https://groups.google.com/group/TiddlyWiki
*> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywiki+subscribe@googlegroups.com.
** An enhanced group search facility is available on [[mail-archive.com|https://www.mail-archive.com/tiddlywiki@googlegroups.com/]]
* Watch recordings of our regular [[TiddlyWiki Hangouts]]
* Follow [[@TiddlyWiki on Twitter|http://twitter.com/TiddlyWiki]] for the latest news
* New: Join us on our live chat at https://gitter.im/TiddlyWiki/public !
* There is also a discord available at https://discord.gg/HFFZVQ8
https://talk.tiddlywiki.org/
Note that talk.tiddlywiki.org is a community run service that we host and maintain ourselves. The modest running costs are covered by community contributions.
! Developers
For the convenience of existing users, we also continue to operate the original ~TiddlyWiki group (hosted on Google Groups since 2005):
https://groups.google.com/group/TiddlyWiki
! Developer Forums
{{Developers}}
New releases of TiddlyWiki, TiddlyDesktop and TiddlyFox are announced via the discussion groups and [[Twitter|https://twitter.com/TiddlyWiki]] (you can also subscribe to an Atom/RSS feed of [[TiddlyWiki releases from GitHub|https://github.com/jermolene/tiddlywiki5/releases.atom]])
! Other Forums
! Documentation
* [[TiddlyWiki Subreddit|https://www.reddit.com/r/TiddlyWiki5/]]
* Chat with Gitter at https://gitter.im/TiddlyWiki/public !
* Chat on Discord at https://discord.gg/HFFZVQ8
!! Documentation
There is also a discussion group specifically for discussing TiddlyWiki documentation improvement initiatives: https://groups.google.com/group/tiddlywikidocs

View File

@@ -1,6 +1,6 @@
created: 20210204010508263
modified: 20210204010941713
tags: Images SVG Icons
modified: 20211113225941563
tags: Images SVG Icons [[Other Resources]]
title: "TW Icons" by morosanuae
type: text/vnd.tiddlywiki
url: https://morosanuae.github.io/tw-icons

View File

@@ -1,10 +1,10 @@
created: 20130823091700000
modified: 20140912150339263
modified: 20211124214214045
tags: Community Videos
title: TiddlyWiki Hangouts
type: text/vnd.tiddlywiki
The TiddlyWiki community holds regular Google Hangouts, usually every Tuesday from 4pm to 6pm (UK time). They are announced in the [[TiddlyWiki Google group|https://groups.google.com/d/forum/tiddlywiki]] and on the [[TiddlyWiki Twitter account|https://twitter.com/TiddlyWiki]].
The TiddlyWiki community has held many Google Hangouts over the years. They are announced in the [[TiddlyWiki Google group|https://groups.google.com/d/forum/tiddlywiki]] and on the [[TiddlyWiki Twitter account|https://twitter.com/TiddlyWiki]].
Past Hangouts are archived in this ~YouTube playlist:

View File

@@ -5,8 +5,8 @@ created: 20141122093837330
delivery: Web Service
description: Free online service that you can also host yourself
method: sync
modified: 20210106151027179
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP [[Other resources]] Safari Saving Windows iOS Edge [[Community Editions]]
modified: 20211113010826610
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge [[Community Editions]] [[Other Resources]]
title: "Noteself" by Danielo Rodríguez
type: text/vnd.tiddlywiki
url: https://noteself.github.io/

View File

@@ -1,6 +1,6 @@
created: 20200907161522189
modified: 20200907162234327
tags: Resources
modified: 20211113230558637
tags: Resources [[Other Resources]]
title: "Reveal.js" by Devin Weaver
type: text/vnd.tiddlywiki
url: https://sukima.github.io/tiddlywiki-reveal-js/

View File

@@ -1,6 +1,6 @@
created: 20150602084548184
modified: 20210106151027028
tags: [[Community Plugns]]
modified: 20211113010652022
tags: [[Community Plugins]]
title: "Encrypt single tiddler plugin" by Danielo Rodriguez
type: text/vnd.tiddlywiki
url: http://danielorodriguez.com/TW5-EncryptTiddlerPlugin/

View File

@@ -1,6 +1,6 @@
created: 20141122093837330
modified: 20210106151027589
tags: [[Community Resources]]
modified: 20211114205057710
tags: [[Community Plugins]] [[Other Resources]]
title: TiddlyMap Plugin by Felix Küppers
type: text/vnd.tiddlywiki
url: http://tiddlymap.org

View File

@@ -1,6 +1,6 @@
created: 20140315085406905
modified: 20210106151027357
tags: [[Other Resources]] Tutorials [[Community plugins]]
modified: 20211114205310834
tags: [[Other Resources]] Tutorials [[Community Plugins]]
title: "TW5 Magick" by Stephan Hradek
type: text/vnd.tiddlywiki
url: http://tw5magick.tiddlyspot.com/

View File

@@ -1,6 +1,6 @@
created: 20180309160958926
modified: 20210106151027021
tags: [[Other Resourches]]
modified: 20211113010607278
tags: [[Other Resources]]
title: "Dynamic Tables" by Jed Carty
type: text/vnd.tiddlywiki
url: http://ooktech.com/jed/ExampleWikis/DynamicTables/

View File

@@ -1,7 +1,7 @@
created: 20161226165024380
creator: Matt Lauber
modified: 20211008161027226
tags: [[Other resources]]
modified: 20211113230709926
tags: [[Other Resources]]
title: "TiddlyServer" by Matt Lauber
type: text/vnd.tiddlywiki
url: https://github.com/mklauber/TiddlyServer/releases/

View File

@@ -1,6 +1,6 @@
created: 20171219165418434
modified: 20210106151027169
tags: [[Other resources]]
modified: 20211113230637633
tags: [[Other Resources]]
title: "muritest" by Simon Huber
type: text/vnd.tiddlywiki
url: http://muritest.tiddlyspot.com

View File

@@ -0,0 +1,47 @@
created: 20211201100326006
modified: 20211206164704335
tags: Concepts
title: Cascades
type: text/vnd.tiddlywiki
!! Introduction
Cascades are a key mechanism used to construct and customise TiddlyWiki's user interface.
<<.tip "See [[Customising TiddlyWiki's user interface]] for an overview of all the customisation mechanisms">>
!! How cascades work
Cascades provide a means to select one of multiple values based on flexible, extensible criteria. They can be thought of as a list of conditions that are evaluated in turn until one of them matches.
Each cascade is defined by a special tag which identifies the tiddlers containing the conditions to be matched. The [[Order of Tagged Tiddlers]] determines the order in which the conditions are processed, and provides the means for arranging new rules at specific points in the cascade.
The conditions are defined by a [[Filter Expression]] in the text field. The filters are evaluated with the list of input titles set to the title of the tiddler to be considered. The `currentTiddler` variable is also set to the title of the tiddler to be considered.
If the filter returns no result then that result will be ignored and the cascade proceeds to test the next condition. If the filter expression does return at least one result then it serves as the result of the entire cascade.
The [[Cascade Filter Run Prefix]] provides the implementation of the underlying logic.
!! Example
The [[Story Tiddler Template Cascade]] contains the logic for determining a tiddler should be displayed as an editable draft or in view mode. By default, it consists of two tiddlers containing the following list of rules:
# `[is[draft]then{$:/config/ui/EditTemplate}]` if it is a draft tiddler, use the template title given in the tiddler $:/config/ui/EditTemplate
# `[{$:/config/ui/ViewTemplate}] `  otherwise, use the template title given in the tiddler $:/config/ui/ViewTemplate
!! Usage in the core
The TiddlyWiki core uses cascades to choose the following elements:
|[[Story Tiddler Template Cascade]] |The template used to display a particular tiddler in the story river. By default, the edit template is chosen for draft tiddlers, and the view template for others |
|[[Tiddler Icon Cascade]] |The optional icon associated with a particular tiddler (displayed alongside the title) |
|[[Tiddler Colour Cascade]] |The optional colour associated with a particular tiddler (used to colour the tiddler icon and if the tiddler is used as a tag also provides the colour for the tag pill) |
|[[View Template Title Cascade]] |The template used to display the title of a particular tiddler (used by the default view template to display the tiddler title) |
|[[View Template Body Cascade]] |The template used to display the view mode body of a particular tiddler (used by the default view template to display the tiddler body) |
|[[Edit Template Body Cascade]] |The template used to display the edit mode body of a particular tiddler (used by the default edit template to display the tiddler body editor) |
You can see the current settings for each cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' tab.
!! See Also
<<list-links "[tag[Cascades]]">>

View File

@@ -1,8 +1,10 @@
color: #FF8383
created: 201308251447
modified: 201308251447
title: Concepts
created: 20130825144700000
list: Cascades ColourPalettes Commands [[Current Tiddler]] DataTiddlers [[Date Fields]] DefaultTiddlers DictionaryTiddlers ExternalImages Filters [[Hard and Soft Links]] JSONTiddlers [[Keyboard Shortcut Tiddler]] Macros Messages Modules PermaLinks Plugins Pragma [[Railroad Diagrams]] ShadowTiddlers [[Story River]] SystemTags SystemTiddlers Tagging TemplateTiddlers TextReference TiddlerFields TiddlerLinks Tiddlers TiddlyWiki TiddlyWiki5 [[Title List]] [[Title Selection]] Transclusion Variables Widgets Wiki WikiText
modified: 20211201100624625
tags: Reference
title: Concepts
type: text/vnd.tiddlywiki
These are the concepts underlying TiddlyWiki. Understanding how these ideas fit together is the key to getting the most from TiddlyWiki.

View File

@@ -0,0 +1,16 @@
created: 20211206161652630
modified: 20211206161959460
tags: Cascades
title: Edit Template Body Cascade
type: text/vnd.tiddlywiki
The edit template body cascade is a [[cascade|Cascades]] used by the default edit template to choose the template for displaying the tiddler body.
The default edit template body cascade consists of:
# If the tiddler has the field ''_canonical_uri'' then use the template $:/core/ui/EditTemplate/body/canonical-uri to display the remote URL
# Otherwise, use the template $:/core/ui/EditTemplate/body/default which provides the default editing interface
You can see the current settings for the view template body cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''Edit Template Body'' tab.
<<list-links "[tag[Edit Template Body Cascade]]">>

View File

@@ -1,5 +1,5 @@
created: 20140211171341271
modified: 20200103092706002
modified: 20220128112317724
tags: Concepts Reference
title: Macros
type: text/vnd.tiddlywiki
@@ -14,8 +14,6 @@ They are created using the `\define` [[pragma|Pragma]]. (Behind the scenes, this
The snippet and its incoming parameter values are treated as simple strings of characters with no WikiText meaning, at least until the placeholders have been filled in and the macro call has returned. This means that a macro can assemble and return the complete syntax of a ~WikiText component, such as a [[link|Linking in WikiText]]. (See [[Transclusion and Substitution]] for further discussion of this.)
The string returned by a macro call is parsed separately from any surrounding ~WikiText components. So a safe way to insert a special character sequence (such as `[[` or `<`) without triggering its normal ~WikiText meaning is to wrap it in a macro.
Within a snippet itself, the only markup detected is `$name$` (a placeholder for a macro parameter) and `$(name)$` (a placeholder for a [[variable|Variables]]).
The <<.mlink dumpvariables>> macro lists all variables (including macros) that are available at that position in the widget tree.

View File

@@ -1,10 +1,10 @@
created: 20140226083311937
modified: 20140226090209479
modified: 20211117042057208
tags: Concepts Reference
title: Messages
type: text/vnd.tiddlywiki
Widget messages are generated by widgets in response to user actions. They flow up the widget tree until they are handled by an ancestor widget.
Widget ''messages'' are generated by [[Widgets]] in response to user actions. Messages have a <<.param name>>, an optional primary <<.param parameter>>, and one or more optional named parameters. These messages travel up the widget tree where they are handled by ancestor widgets or the core itself.
The following widget messages are implemented by the core:

View File

@@ -1,6 +1,6 @@
created: 20131129162847412
modified: 20150917193804197
tags: Modules
modified: 20211121031330912
tags: Modules Definitions
title: ModuleType
type: text/vnd.tiddlywiki

View File

@@ -1,5 +1,5 @@
created: 20150124125646000
modified: 20170328161702062
modified: 20211127140005352
tags: Tagging
title: Order of Tagged Tiddlers
type: text/vnd.tiddlywiki

View File

@@ -1,6 +1,6 @@
created: 20150219175930000
modified: 20180928145730028
tags: Concepts
modified: 20220122182842041
tags: Concepts [[WikiText Parser Modes]]
title: Pragma
type: text/vnd.tiddlywiki

View File

@@ -1,5 +1,6 @@
created: 20150105133800000
modified: 20150124181306000
modified: 20211117212441252
tags: Concepts
title: Railroad Diagrams
<<.def "Railroad diagrams">>, sometimes called <<.def "syntax diagrams">>, are a visual way of explaining the syntax rules of a computer language. Reading one is like reading a public transport map.

View File

@@ -0,0 +1,16 @@
created: 20211206132047986
modified: 20211206155818924
tags: Cascades
title: Story Tiddler Template Cascade
type: text/vnd.tiddlywiki
The story tiddler template cascade is a [[cascade|Cascades]] used to choose which [[Story Tiddler Template]] should be used for a particular tiddler.
The default story tiddler template cascade consists of:
# If the tiddler is a draft tiddler, use the template title given in the tiddler $:/config/ui/EditTemplate
# Otherwise, use the template title given in the tiddler $:/config/ui/ViewTemplate
You can see the current settings for the story tiddler template cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''Story Tiddler'' tab.
<<list-links "[tag[Story Tiddler Template Cascade]]">>

View File

@@ -0,0 +1,13 @@
created: 20211204122044198
modified: 20211206133756716
tags: Concepts
title: Story Tiddler Template
type: text/vnd.tiddlywiki
"Story tiddler template" refers to the template used to display a tiddler within the story river.
The [[Story Tiddler Template Cascade]] is used to choose the template to be used for a particular tiddler. By default, the edit template is used for tiddlers in draft mode, and the view template used otherwise.
See also:
<<list-links "[tag[Story Tiddler Template]]">>

View File

@@ -1,5 +1,5 @@
created: 20141228094500000
modified: 20150917193731240
modified: 20211127135914596
tags: Tagging
title: TagTiddlers
type: text/vnd.tiddlywiki

View File

@@ -0,0 +1,16 @@
created: 20211206160300525
modified: 20211206165301231
tags: Cascades
title: Tiddler Colour Cascade
type: text/vnd.tiddlywiki
The tiddler colour cascade is a [[cascade|Cascades]] used to choose which colour should be used for a particular tiddler.
The default tiddler colour cascade consists of:
# If the tiddler has a ''color'' field, use the value as the colour
# If the tiddler $:/config/DefaultTiddlerColour exists, use the value as the colour
You can see the current settings for the tiddler colour cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''Tiddler Colour'' tab.
<<list-links "[tag[Tiddler Colour Cascade]]">>

View File

@@ -0,0 +1,16 @@
created: 20211206154017669
modified: 20211206160003647
tags: Cascades
title: Tiddler Icon Cascade
type: text/vnd.tiddlywiki
The tiddler icon cascade is a [[cascade|Cascades]] used to choose which icon should be used for a particular tiddler.
The default tiddler icon cascade consists of:
# If the tiddler has an ''icon'' field, use the value as the title of the icon tiddler
# If the tiddler $:/config/DefaultTiddlerIcon exists, use the value as the title of the icon tiddler
You can see the current settings for the tiddler icon cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''Tiddler Icon'' tab.
<<list-links "[tag[Tiddler Icon Cascade]]">>

View File

@@ -1,5 +1,5 @@
created: 20130825213300000
modified: 20191206152031468
modified: 20220109101407050
tags: Concepts
title: TiddlerFields
type: text/vnd.tiddlywiki
@@ -25,6 +25,7 @@ Other fields used by the core are:
|!Field Name |!Description |
|`class` |<<lingo class>> |
|`code-body` |<<.from-version "5.2.1">> <<lingo code-body>> |
|`color` |<<lingo color>> |
|`description` |<<lingo description>> |
|`draft.of` |<<lingo draft.of>> |

View File

@@ -0,0 +1,19 @@
created: 20211206161124327
modified: 20211206161613268
tags: Cascades
title: View Template Body Cascade
type: text/vnd.tiddlywiki
The view template body cascade is a [[cascade|Cascades]] used by the default view template to choose the template for displaying the tiddler body.
The default view template body cascade consists of:
# If the tiddler title starts with any of a list of known system tiddler prefixes, use the template $:/core/ui/ViewTemplate/body/code to display the body as preformatted code
# If the tiddler has the field ''plugin-type'' set to ''import'' then use the template $:/core/ui/ViewTemplate/body/import which displays the custom import user interface
# If the tiddler has the field ''plugin-type'' then use the template $:/core/ui/ViewTemplate/body/plugin to display the plugin information badge
# If the tiddler has the field ''hide-body'' set to ''yes'' then use the template $:/core/ui/ViewTemplate/body/blank to hide the body
# Otherwise, use the default template $:/core/ui/ViewTemplate/body/default
You can see the current settings for the view template body cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''View Template Body'' tab.
<<list-links "[tag[View Template Body Cascade]]">>

View File

@@ -0,0 +1,16 @@
created: 20211206160703815
modified: 20211206161115837
tags: Cascades
title: View Template Title Cascade
type: text/vnd.tiddlywiki
The view template title cascade is a [[cascade|Cascades]] used by the default view template to choose the template for displaying the tiddler title.
The default view template title cascade consists of:
# If the tiddler title starts with `$:/` then use the template $:/core/ui/ViewTemplate/title/system which causes the `$:/` prefix to be displayed in pale text
# Otherwise, use the template $:/core/ui/ViewTemplate/title/default which displays the title in plain text
You can see the current settings for the view template title cascade in $:/ControlPanel under the ''Info'' -> ''Advanced'' -> ''Cascades'' -> ''View Template Title'' tab.
<<list-links "[tag[View Template Title Cascade]]">>

View File

@@ -1,5 +1,5 @@
created: 20201123172925848
modified: 20201123192845498
modified: 20211126120310891
tags: [[Customise TiddlyWiki]]
title: Alternative page layouts
type: text/vnd.tiddlywiki

View File

@@ -0,0 +1,35 @@
created: 20211124205415217
modified: 20211126162937536
tags: [[Customise TiddlyWiki]]
title: Creating new toolbar buttons
type: text/vnd.tiddlywiki
Let's say you have a skeleton tiddler called 'Recipe template', and you want to have a button available in the tiddler ViewToolbar to create new recipe tiddlers on demand. This will require the following steps:
# You will want an image for your button. If none of the core images (shadow tiddlers with the prefix $:/core/images/) work for you, then you will need to create or acquire an SVG image (for example, one of the images at http://flaticon.com), drag it into your file so that it becomes a tiddler, edit the tiddler and adjust the height and width to 22px
# You will want to create the tiddler that contains your tiddler. Create it, title it, and add the button code (see the code at the bottom of this tiddler for an example, with hints where you will need to adapt it). Tag it [[$:/tags/ViewToolbar]]
# You will need to create a tiddler that tells TiddlyWiki whether your button should be visible in the toolbar or hidden. Let's title it [[$:/config/ViewToolbarButtons/Visibility/Recipe]]. Type `show` into the text area, and save. If you want to hide it, type `hide` into the text area and save. The button will also be accessable from the ''ControlPanel : Appearance : Toolbars : ViewToolbar'' tab
# You will want to position the button properly. Open the tiddler $:/tags/ViewToolbar and insert your button tiddler's title in the appropriate place in the list field.
```
\define newHereButtonTags()
[[$(currentTiddler)$]]
\end
\define newHereButton()
<$button class=<<tv-config-toolbar-class>>>
<$action-sendmessage
$message="tm-new-tiddler"
$param="TITLE OF YOUR SKELETON BUTTON"
title="New tiddler"
tags=<<newHereButtonTags>> />
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{TITLE OF YOUR SVG IMAGE TIDDLER}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="CAPTION FOR YOUR BUTTON"/></span>
</$list>
</$button>
\end
<<newHereButton>>
```

View File

@@ -1,10 +1,10 @@
created: 20140904101600000
list: [[Adding a table of contents to the sidebar]] [[Configuring startup tiddlers]] [[Configuring the default TiddlerInfo tab]] [[Creating a custom export format]] [[Creating a splash screen]] [[Customising search results]] [[Hidden Settings]] [[How to add a new tab to the sidebar]] [[How to apply custom styles]] [[How to create keyboard shortcuts]] [[How to turn off camel case linking]] [[How to widen tiddlers (aka storyriver)]] [[Making a custom journal button]] [[Page and tiddler layout customisation]] [[Alternative page layouts]] [[Preserving open tiddlers at startup]] [[Setting a favicon]] [[Setting a page background image]] [[Using Stylesheets]]
modified: 20201123173044437
list: [[Adding a table of contents to the sidebar]] [[Alternative page layouts]] [[Configuring startup tiddlers]] [[Configuring the default TiddlerInfo tab]] [[Creating a custom export format]] [[Creating a splash screen]] [[Creating new toolbar buttons]] [[Customising search results]] [[Customising TiddlyWiki's user interface]] [[Hidden Settings]] [[How to add a new tab to the sidebar]] [[How to apply custom styles]] [[How to create a custom story tiddler template]] [[How to create a custom tiddler icon rule]] [[How to create a custom tiddler colour rule]] [[How to create keyboard shortcuts]] [[How to turn off camel case linking]] [[How to widen tiddlers (aka storyriver)]] [[Making a custom journal button]] [[Preserving open tiddlers at startup]] [[Setting a favicon]] [[Setting a page background image]] [[Using Stylesheets]]
modified: 20211206162235300
tags: TableOfContents
title: Customise TiddlyWiki
type: text/vnd.tiddlywiki
Information about customising TiddlyWiki
Information about customising TiddlyWiki. See [[Customising TiddlyWiki's user interface]] for an overview of the mechanisms employed.
<<list-links "[tag[Customise TiddlyWiki]]">>

View File

@@ -0,0 +1,75 @@
created: 20211127084727217
modified: 20211204120054422
tags: [[Customise TiddlyWiki]]
title: Customising TiddlyWiki's user interface
type: text/vnd.tiddlywiki
TiddlyWikis user interface is designed to be highly extensible. Every element can be augmented, removed, or rearranged.
Several different mechanisms are used to achieve this:
* special fields
* special titles
* special tags
* cascades
Here we provide an overview of those mechanisms and how they relate together.
!! Special Fields
Special fields are used to assign an appearance or behaviour to individual tiddlers. They can be thought of as flags or values that directly control the tiddler to which they are applied.
For example:
* Set the `icon` field to the title of an image tiddler to be used as the icon for this tiddler
* Set the `color` field to a CSS colour that is then used for icons and tag pills associated with this tiddler
* Set the `hide-body` field to `yes` to hide the view template body for this tiddler
See TiddlerFields for details of all the special fields.
!! Special Titles
Certain special titles identify configuration tiddlers that customise TiddlyWiki's appearance or behaviour. They can be thought of as global settings that affect an entire wiki.
For example:
* $:/DefaultTiddlers is a filter yielding the titles of the tiddlers that should be displayed at startup
* $:/SiteTitle specifies the text of the wiki title
* $:/config/Tags/MinLength controls the minimum number of characters to trigger tag autocompletion
Many of TiddlyWiki's configuration tiddlers are presented as options in [[$:/ControlPanel]]. Less commonly used configuration tiddlers do not have a user interface, but are documented in [[Hidden Settings]].
!! Special Tags
Special tags assign special behaviour or appearance to all of the tiddlers to which they are applied. They can be thought of as establishing ordered lists of tiddlers that are processed or displayed in a particular way.
For example:
* $:/tags/Macro causes the macros defined in a tiddler to be available globally
* $:/tags/Stylesheet causes the tiddler to be interpreted as a CSS stylesheet
* $:/tags/SideBar causes the tiddler to be displayed as a sidebar tab
See SystemTags for details of all the special tags.
The entire TiddlyWiki user interface is constructed from lists formed from special system tags.
The ordering of these lists is determined by the [[order of tagged tiddlers|Order of Tagged Tiddlers]] rules. Users can re-order tags using drag and drop within a tag dropdown.
!! Cascades
Cascades provide a means to select one of multiple values based on flexible, extensible criteria. They can be thought of as a list of conditions that are evaluated in turn until one of them matches.
For example, the core uses the template $:/core/ui/ViewTemplate to display tiddlers in view mode, and $:/core/ui/EditTemplate to display tiddlers in edit mode. A cascade is used to choose which template to use for a particular tiddler:
# If the tiddler is a draft, then use $:/core/ui/EditTemplate
# Otherwise, use $:/core/ui/EditTemplate
The list of conditions is defined via a special tag, making it possible to insert additional conditions anywhere in the list.
For example, a plugin might add a special template $:/plugins/example/map-template for tiddlers that have the tag [[$:/tags/Map]] by inserting an additional rule:
# If the tiddler is a draft, then use $:/core/ui/EditTemplate
# @@background: yellow; If the tiddler is tagged $:/tags/Map, then use $:/plugins/example/map-template@@
# Otherwise, use $:/core/ui/EditTemplate
See [[Cascades]] for more details.

View File

@@ -1,63 +0,0 @@
created: 20141120125300000
modified: 20201123173002935
tags: [[Customise TiddlyWiki]]
title: Page and tiddler layout customisation
type: text/vnd.tiddlywiki
One major feature of TiddlyWiki that many new users are unaware of is the degree to which TiddlyWiki can be customised, just by adding or removing SystemTags in key shadow tiddlers or in your own custom tiddlers.
* You can add and remove default features in tiddlers in either viewing or editing mode (let's say you find the tiddler subtitle distracting, or you want to add yourself a reminder that you will see when you edit tiddlers)
* You can also add and remove default features from the general page layout (maybe you want to add a clock to the sidebar, or replace one of the page control buttons with your own)
* You can also rearrange the order in which these features are displayed (perhaps you would like tags above tiddler titles, or the subtitle of your TiddlyWiki below the page control buttons)
Once you know what you are doing, all of these things are actually pretty easy to do.
<<.from-version "5.1.23">> You can also create [[alternative page layouts|Alternative page layouts]] and switch between them.
! Adding custom-made tiddlers to the user interface
You can also create any tiddler you want and tag it with the appropriate SystemTag, and it will appear in that place. For example, if you create a tiddler 'Reminder to self', add the text 'This is a reminder' and tag it `$:/tags/EditTemplate`, the words 'This is a reminder' will appear inside every tiddler when you edit it.
When you add new tiddlers to be displayed within tiddlers or within the page layout, you will also probably need to reposition it so that it appears precisely where you want it to appear. To do this, edit the appropriate shadow tiddler with the prefix `$:/tags/`, and insert the title of your tiddler in the proper place in the list field. For example, if you want the words 'This is a reminder' from the example above to appear above the tags editor in editing mode, edit the tiddler $:/tags/EditTemplate, go to the 'list' field, and insert `[[Reminder to self]]` right before `$:/core/ui/EditTemplate/tags`.
! Creating new buttons for the ViewToolbar and page controls
Let's say you have a skeleton tiddler called 'Recipe template', and you want to have a button available in the tiddler ViewToolbar to create new recipe tiddlers on demand. This will require the following steps:
# You will want an image for your button. If none of the core images (shadow tiddlers with the prefix $:/core/images/) work for you, then you will need to create or acquire an SVG image (for example, one of the images at http://flaticon.com), drag it into your file so that it becomes a tiddler, edit the tiddler and adjust the height and width to 22px
# You will want to create the tiddler that contains your tiddler. Create it, title it, and add the button code (see the code at the bottom of this tiddler for an example, with hints where you will need to adapt it). Tag it [[$:/tags/ViewToolbar]]
# You will need to create a tiddler that tells TiddlyWiki whether your button should be visible in the toolbar or hidden. Let's title it [[$:/config/ViewToolbarButtons/Visibility/Recipe]]. Type `show` into the text area, and save. If you want to hide it, type `hide` into the text area and save. The button will also be accessable from the ''ControlPanel : Appearance : Toolbars : ViewToolbar'' tab
# You will want to position the button properly. Open the tiddler $:/tags/ViewToolbar and insert your button tiddler's title in the appropriate place in the list field.
```
\define newHereButtonTags()
[[$(currentTiddler)$]]
\end
\define newHereButton()
<$button class=<<tv-config-toolbar-class>>>
<$action-sendmessage
$message="tm-new-tiddler"
$param="TITLE OF YOUR SKELETON BUTTON"
title="New tiddler"
tags=<<newHereButtonTags>> />
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{TITLE OF YOUR SVG IMAGE TIDDLER}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="CAPTION FOR YOUR BUTTON"/></span>
</$list>
</$button>
\end
<<newHereButton>>
```
! Removing shadow tiddlers from the user interface
In the More > Shadows tab you will find a list of all the shadow tiddlers. In this list you will find many tiddlers with the prefix `$:/core/ui/`. These are the core tiddlers that define the user interface. These tiddlers are tagged with SystemTags, and removing or adding these tags will adjust the tiddler and page layouts.
For example, $:/core/ui/SideBar/More is the tiddler for the More tab in the Sidebar, and it is tagged with the SystemTag `$:/tags/SideBar` so that it appears in the Sidebar. Removing the tag from that tiddler will remove the More tab from the Sidebar, and reinserting the Sidebar tag to that tiddler will make it reappear in the Sidebar.
You can use the same process for any of the core user interface tiddlers with the $:/core/ui/ prefix. For example, removing the SystemTag `$:/tags/ViewTemplate` from the tiddler `$:/core/ui/ViewTemplate/subtitle` will remove the subtitles from all tiddlers.
If you modify a shadow tiddler in this way you will overwrite the pre-installed value. If you want to revert, just delete the modified tiddler to restore the underlying shadow tiddler.

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