1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-04 17:16:18 +00:00
Commit Graph

2434 Commits

Author SHA1 Message Date
Bram Chen
958b3e7b7c Improve the base64 encode/decode utility functions (#4053)
Make good use of "$:/core/modules/utils/base64-utf8/base64-utf8.module.js"
* Add a new base64Encode()
* Both of base64Encode and base64Decode work for Nodejs and Browsers
2019-07-03 17:39:32 +01:00
jed
c202ef4201
include wiki in options sent to generateTiddlerFilePath
This adds options.wiki to the object sent to the generateTiddlerFilePath

The function generateTiddlerFilePath can take a wiki in the options object, but generateTiddlerFileInfo doesn't pass the wiki to it.
2019-07-03 12:11:10 +02:00
Bram Chen
de04755a0a Fix bug with not definded variable (#4049)
Using the variable "resolveCredentialsFilepath" to provide a good debug information.
2019-07-02 15:40:07 +01:00
Jeremy Ruston
ed67f4a88b Add new tm-focus-selector message 2019-06-28 17:27:36 +01:00
Simon Huber
14003b0e88 Make framed editor use tiddler-editor-background color (#3611)
so we can customise it better if we don't like what we see
2019-06-26 14:53:49 +01:00
Simon Huber
69d3a47073 Add escapecss filter (#3546)
* add escapecss filter

this filter would allow creating valid css classes from titles containing special characters

we assign a class to an element using `encodeuricomponent[]` so that the class name is encoded

in a stylesheet we create the classname by `<title>escapecss[]` which applies the uri encoding and escapes characters that need to be escaped

* Update encodings.js

* refactor tagToCssSelector, add escapeCssSelector

* use escapeCssSelector

* escape using CSS.escape if it's available

* Update encodings.js

* revert factoring out escapeCssSelector
2019-06-26 12:32:01 +01:00
Simon Huber
e313b0b7ca CSS.escape as startup module (#3574)
* don't know what I'm doing - apply polyfill methods

* don't know what I'm doing add CSS.escape polyfill

* execute polyfills in load-modules

* Delete cssescape.js

* add css-escape polyfill as startup module

* Update load-modules.js

* this was for testing :)

* Update css-escape-polyfill.js

* Update css-escape-polyfill.js
2019-06-26 12:31:22 +01:00
Simon Huber
dc9f4e2de7 Pop storyview: animation - don't x-overflow page (#3857)
... this makes the animation when inserting tiddlers / navigating to tiddlers in the pop storyview less jumpy

it simply sets `overflow-x` to `hidden` for the time of the insert-animation
2019-06-26 11:50:52 +01:00
Jeremy Ruston
6582b106ee Fixes to split operator, plus instructions for using it to do search and replace 2019-06-21 10:21:52 +01:00
Jeremy Ruston
90684f9f52 Add support for [is[blank]] to detect empty/blank strings 2019-06-21 10:20:37 +01:00
Robin Munn
9b27f82a80 Fix sentencecase operator, add titlecase operator (#4006) 2019-06-21 08:24:02 +01:00
Jeremy Ruston
2e2ed7902c Add sentencecase operator
Fixes #4000
2019-06-19 12:11:02 +01:00
Robin Munn
62829dc9d3 Add untrunc operator, the mirror of trunc (#3994) 2019-06-17 18:34:30 +01:00
Jeremy Ruston
73eb7fbd4e Maths operators: Remove concat (same as addsuffix) and add splitregexp 2019-06-13 16:52:19 +01:00
Jeremy Ruston
86387a9185 Add some error trapping to maths operators 2019-06-11 17:18:18 +01:00
Jeremy Ruston
dd7837d164 Fix issue with allafter operator
Fixes #3962
2019-06-11 09:38:14 +01:00
Jeremy Ruston
f02352f6a1 Use default link text when link widget has no content
Fixes #3974
2019-06-10 21:04:21 +01:00
Jeremy Ruston
18fe112da7 Extend the enlist operator to optionally not de-duplicate 2019-06-10 17:54:46 +01:00
Jeremy Ruston
37bb75f0cf Add support for = prefix for filter runs that doesn't remove duplicates 2019-06-10 17:54:20 +01:00
Jeremy Ruston
ac1d5b828d Fix regression in 7fcd2f132
Previously we saved tiddlers as .tid files using this template that explicitly excludes the "bag" field:

https://github.com/Jermolene/TiddlyWiki5/blob/master/core/templates/tid-tiddler.tid

Now we generate both .tid and .json files programmatically, and so we have to explicitly exclude the bag field
2019-06-10 17:52:26 +01:00
Jeremy Ruston
8012a3508f Ensure tiddlyspot saver works with local storage disabled
Fixes #3955
2019-06-08 16:38:13 +01:00
Jeremy Ruston
28c732d2be Improve action-createtiddler to return a draft title too 2019-06-04 12:33:01 +01:00
Jeremy Ruston
9c2726c530 Remove $tw.perf.log() banner under Node.js 2019-06-03 13:28:41 +01:00
Jeremy Ruston
5b09881679 Add new deletetiddlers command 2019-05-30 16:54:57 +01:00
Jeremy Ruston
a8f70b08a8
Add indexes to the wiki store to improve performance (#3951)
* First pass at modular wiki indexes

An exploratory experiment

* Fix tests

* Faster checking for existence of index methods

We don't really need to check the type

* Use the index for the has operator

* Fix typo

* Move iterator index methods into indexer modules

Now boot.js doesn't know the core indexers

* Fix up the other iterator index functions

* Fix crash with missing index branch

* Limit the field indexer to values less than 128 characters

* Fallback to the old manual scan if the index method returns null
* Sadly, we can no longe re-use the field indexer to accelerate the `has` operator, because the index now omits tiddlers that have field values longer than the limit

Still need to make the index configuration exposed somehow

* Rearrange tests so that we can test with and without indexers

We also need to expose the list of enabled indexers as a config option

* Test the field indexer with different length fields

So that we test the indexed and non-indexed codepaths
2019-05-24 21:07:37 +01:00
Jeremy Ruston
2f8053265e Performance: Add average filter execution time 2019-05-20 12:50:10 +01:00
Jeremy Ruston
ff85fcfe93 Fix typo from e8d1fbba6 2019-05-10 16:03:24 +01:00
Jeremy Ruston
e8d1fbba6c Performance Instrumentation: Track execution times for individual filters
Fixes #3941
2019-05-10 15:56:01 +01:00
Jeremy Ruston
7869546fef Speed up reveal widget
It turns out that the `localeCompare` function used by `compareStateText()` is very, very slow. Replacing it with a straightforward equality test makes one of my test rigs be 10x faster...

Note that this PR reverts the behaviour of match/nomatch to that before #3157. That change was not backwards compatible in that the switch to localeCompare meant that é === e, now it doesn't again.
2019-05-10 08:47:00 +01:00
Jeremy Ruston
5ae14a16ec Classic Storyview: Optimise for animation duration of zero (part 2)
See fddc5d4ee
2019-05-02 21:21:22 +01:00
Jeremy Ruston
fddc5d4ee6 Classic Storyview: Optimise for animation duration of zero (part 1)
Approximtely 50% speed improvement in tests opening a storyview with 8,000 entries.

(I've deferred the indentation adjustments until the next commit so that the git diffs are clearer)
2019-05-02 21:20:24 +01:00
Jeremy Ruston
091864ddaf Browser messaging: suppress logging
Commented out because it can be useful for debugging.
2019-05-02 20:21:58 +01:00
Jermolene
b7e0930122 savewikifolder: Fix custom plugin fields
We need to carry across all plugin fields into the tiddlywiki.info file
2019-04-16 11:59:34 +01:00
Jermolene
0a5c826816 GitHub Saver: Fix ServerURL name 2019-04-16 10:15:58 +01:00
Jermolene
25c0ebb523 GitHub Saver: Make server URL configurable 2019-04-15 21:30:59 +01:00
Jermolene
b32a5aa9af GitHub saver: Fix problem with saving to a non-existent directory 2019-04-15 21:08:04 +01:00
Jermolene
232eba2f7d Http utilities: add xhr object to callback 2019-04-15 21:07:23 +01:00
Jermolene
0513837228 Ensure tiddler.getFieldStringBlock uses a deterministic ordering
Makes diffs easier to track
2019-04-14 14:23:49 +01:00
Jermolene
373afd72c8 Add savewikifolder command
Makes it much easier to convert a TiddlyWiki HTML file into a full wiki folder.
2019-04-14 12:04:00 +01:00
Jermolene
7fcd2f132e Filesystemadaptor: Improve handling of JSON files
Fixes #3875

* Use .json files (instead of .tid) for any tiddler whose fields contain values that can't be stored as a .tid file
* Save application/json tiddlers as .json files
* Refactor most of the file handling as re-usable utilities
2019-04-13 14:59:44 +01:00
Bimba Laszlo
9b72eabd1a Fix crash in GitHub saver (#3905)
If the path was not specified, RSOD error occurred when we wanted to
download the wiki:

  Uncaught TypeError: Cannot read property 'substring' of undefined
2019-04-11 08:21:55 +01:00
Jermolene
73703da2e7 Minify base64-utif8 module
Minified with https://skalman.github.io/UglifyJS-online/
2019-04-08 21:37:32 +01:00
Jermolene
aa5eaa98fc Add a GitHub saver
Fixes #3890

I think it would be useful to have a simple tutorial for setting up saving via GitHub pages.
2019-04-08 21:08:58 +01:00
Simon Huber
662ae91067 Bugfix: reveal widget regression! (#3897) 2019-04-06 10:27:37 +01:00
Jermolene
37ea659bf0 Refactor the dumpvariables macro as wikitext
Making it easier to customise
2019-03-30 10:52:49 +00:00
Jermolene
754c1251a9 Add new "variables" and "getvariables" operators 2019-03-30 10:52:28 +00:00
jed
b1edcdb757 Add unusedtitle macro (#3880)
* Add uniquetitle macro

This macro is a wrapper on the $tw.wiki.generateNewTitle function to return a unique name, it has been requested multiple times in the forums.

* Add documentation tiddler for uniquetitle macro

* Add uniquetitle macro examples

* Change name from uniquetitle to unusedtitle for clarity

The title isn't unique, just not currently used in the wiki.

* Update uniquetitle to unusedtitle

* Change uniquetitle to unusedtitle

* Fix a typo
2019-03-26 21:57:58 +00:00
Jermolene
02ae8969b2 Reveal widget: faulty logic for default handling
@BurningTreeC I think this might have been a typo in your recent refactorings; if you look back at an old version such as c0c1b557eb/core/modules/widgets/reveal.js then there is no sign of this fallback.

Fixes #3874
2019-03-20 16:50:34 +00:00
Jermolene
e52a616891 Add support for widget subclassing
Fixes #3865
2019-03-17 12:25:15 +00:00
Simon Huber
784db30614 Fix removesuffix filter when title is undefined (#3827) 2019-03-11 09:37:49 +00:00
Simon Huber
c9b16d88f3 Fix: reveal widget prevent undefined state (#3848)
the state didn't fall back to the default when there was no data-item to extract for a stateIndex

see the google group for a bug report: https://groups.google.com/forum/#!topic/TiddlyWiki/3jiFpayAIRc
2019-03-11 09:04:17 +00:00
Simon Huber
441011885c Fix: tm-full-screen when event.event undefined (#3835) 2019-03-09 17:09:34 +00:00
Jermolene
12630d4a91 Provide an option for the load command to not error if no tiddlers are found 2019-03-08 16:43:04 +00:00
Jermolene
e61c71961b Fix default language
It is supposed to be the built-in core language, en-GB
2019-03-07 18:46:24 +00:00
Jermolene
2c2d03f7a7 Refactor startup action execution so that they can switch language/theme 2019-03-07 18:43:23 +00:00
Jermolene
c036c22826 Add $:/info/browser/language to the info mechanism 2019-03-07 18:42:49 +00:00
Jermolene
0c2689dd78 SaverHandler: Don't generate file if autosave disabled 2019-03-05 15:43:14 +00:00
Jermolene
348a0bc8bc Core: Allow startup navigation to be suppressed
Plugins can suppress it so that they can provide their own startup scroll handling
2019-03-04 16:59:15 +00:00
Jermolene
477c41f843 Add tooltip attribute to select widget 2019-03-04 12:24:16 +00:00
Simon Huber
b6e2985ac6 Fix typo in edit-shortcut widget refresh - missing focus attr (#3815)
* fix edit-shortcut widget refresh - missing focus attr

* + typo fix. NOW it works
2019-03-02 18:16:55 +01:00
Simon Huber
87eab62b7e Make the keyboard-shortcut input focus automatically (#3776)
* add focus capability to edit-shortcut widget

* focus the keyboard-shortcut inputs in the control panel

... there's no other reason why it could have been opened other than just pressing a shorcut ...

... saves the mouseclick
2019-03-02 17:25:49 +01:00
Simon Huber
16bb474fef Partial fix for the sticky dropzone on firefox (#3809)
in my tests listening for the dragend event and removing the tc-dragover class in that case removes the `tc-dragover` every time it should ...

without this, firefox often doesn't remove it and the green bar sticks at the top

investigating now if the droppable widget has a similar problem
2019-03-02 16:13:36 +01:00
Jermolene
655fc31cee Server: Avoid displaying "undefined" for missing path prefix 2019-03-01 18:28:51 +00:00
Jermolene
18c00c2ef0 Don't allow $:/Import tiddler to be imported 2019-03-01 17:39:42 +00:00
Jermolene
b862348b06 Fix !is[variable] operator
Fixes #3804
2019-02-28 11:54:04 +00:00
Jermolene
36e76429b1 Add is[variable] filter
See discussion here https://groups.google.com/d/topic/tiddlywiki/4rEuAWc4EpM/discussion
2019-02-25 13:08:22 +00:00
Jermolene
810033bd71 Server: include path-prefix in display URL 2019-02-12 18:32:00 +00:00
Jermolene
72f2a94251 Ensure things work when $:/config/AnimationDuration is blank or not a valid number
Thanks @jdjdjdjdjdjd
2019-02-12 12:14:55 +00:00
Simon Huber
f97d18bb6e Adding optional tabindex attr to simple, framed and cm engines (#3756)
* add optional tabindex attribute to factory.js

* add changedAttributes.tabindex to refresh mechanic

* add optional tabindex attribute to edit widget

* remove some extra whitespace

* remove some trailing whitespace

* add optional tabindex attribute to simple engine

* add optional tabindex attribute to framed engine

* add optional tabindex attribute to cm engine
2019-02-08 16:11:39 +00:00
Jermolene
9d7d3fefa0 Split operator: Remove empty strings when splitting
See the discussion on 9b2d527; thanks @kookma
2019-02-08 15:59:07 +00:00
Jermolene
6ff7a7d261 BrowserStorage: Make sure tiddlers loaded from local storage mark wiki as dirty
Thanks @xcazin
2019-02-08 15:38:23 +00:00
Jermolene
7df58a6813 Fixed bug with length operator
Thanks @BurningTreeC
2019-02-07 12:56:12 +00:00
Jermolene
dc29acd656 Fixed bug with split operator 2019-02-07 12:45:07 +00:00
Jermolene
9b2d52716a Add new string operators: length, join, split, concat etc. 2019-02-07 11:18:53 +00:00
Jermolene
64b665e706 More maths operators 2019-02-07 11:18:32 +00:00
Jermolene
0ea00b59b0 Add numeric maths filter operators
There are other ways we could add maths to TW5 (including @EvanBalster's awesome https://github.com/EvanBalster/TiddlyWikiFormula) but the approach here has the merit of simplicity because it reuses the existing filter evaluation mechanism. That means that it's not ordinary "2+2" maths, it's a unique list processing language...

Docs to come

Fixes #254
2019-02-06 14:19:55 +00:00
Simon Huber
5e9fc661a9 Tentative: Remove conditional from wrap-selection text-operation (#3749)
As per the discussion in #3749, the original purpose of the removed condition is unknown, and so we cannot be certain that removing it is safe, but doing so seems the best way of discovering more...
2019-02-05 17:18:20 +00:00
Jermolene
e5f3301c1c Merge branch 'pr/3634' 2019-02-05 16:21:06 +00:00
Jermolene
44c66b98a9 Add default prefix for tm-fold-all-tiddlers message 2019-02-05 16:01:24 +00:00
Jermolene
689e172e79 Move some utility functions into boot.js
So that they are available to code running earlier in the boot process
2019-02-03 12:01:38 +00:00
Simon Huber
4228c3f9cc Fix bug in reveal widget when stateTitle tiddler is missing (#3745)
in the group this bug was reported

when the stateTitle is missing it tries to get a field string of an undefined tiddler ...
2019-02-01 16:53:29 +00:00
Jermolene
b6d901f888 Innerwiki: Add support for SVG overlays 2019-01-28 18:21:24 +00:00
Moritz Ulrich
049244e8a8 WebServer: Enable deflate and gzip compression (#3677)
* get-index: Enable deflate and gzip compression

* Spaces -> Tabs

* listen: Add optional `gzip=yes` parameter (defaults to "no")

* get-index: Add comment explaining the usage of `zlib.*Sync` instead of async.
2019-01-27 16:23:24 +00:00
Simon Huber
95dbdff08a Fix bug with event.event.target being undefined (#3683) 2019-01-14 09:41:19 +00:00
Jermolene
e14e69bedc DynaView plugin: add optional scroll position preservation 2019-01-11 17:50:52 +00:00
Rob Hoelz
d8b291bc04 Fix search method for search tokens spread across fields (#3641)
* Fix search method for search tokens spread across fields

Addresses GH #3636, which reports that if you're searching for "test
body", and "test" only appears in the title field, and "body" only appears
in the text field, 5.1.18's search method won't yield that tiddler as a
result, which appears to be a regression from the 5.1.17 behavior

* Add test for searching for multiple tokens across fields

Verifies GH #3636:

> If I create a tiddler in the empty edition with the title "Test tiddler" and content "Body content", searching the wiki for "test body" yields no results under either "title matches" or "all matches". Searching for either word individually turns up "Test tiddler", and repeating this in an empty wiki I created from the 5.1.17 tag causes "Test tiddler" to show up under "all matches".
2018-12-17 11:19:48 +00:00
BurningTreeC
d5ac2ee49e Bugfix button widget: popupTitle refresh (#3650) 2018-12-17 10:52:20 +00:00
Jermolene
42cf077639 Fix basic authentication forced login
Fixes #3647
2018-12-16 18:20:33 +00:00
bimlas
18ed2faf82 Implement in $:/core/upgraders instead of navigator.js
The core module tiddlers are not blocked, they are only marked.
2018-12-10 23:05:41 +01:00
bimlas
38b088eabf Warn when importing core tiddlers
See https://groups.google.com/d/msg/tiddlywiki/YZlPGP0qX1o/3tUpyoHXDgAJ
2018-12-10 09:20:58 +01:00
BurningTreeC
ad799dbb61 Revert setting styles in framed.js (#3614)
this sets the framed-editor styles to 5.1.17 state
2018-12-03 08:55:16 +00:00
BurningTreeC
31e88dd2c6 Revert "remove unnecessary border-radius already set on the iframe" (#3613)
* Revert "v5.1.18 banner artwork"

This reverts commit 70500140b9.

* Revert "Revert #3607 and #3608"

This reverts commit 87b3e470c2.

* Revert "Fix default global keyboard shortcuts for Mac"

This reverts commit e466f62e7e.

* Revert "Comment plugin: Improve styles"

This reverts commit e17456e3bc.

* Revert "Style tweaks for framed editor + preview (#3608)"

This reverts commit c058378da0.

* Revert "Change to natural counting in range[N] operator (#3609)"

This reverts commit b9df224f99.

* Revert "Update release note contributors list"

This reverts commit 0f3912ba95.

* Revert "Make editor-preview not hide text-editor shadow (#3607)"

This reverts commit 11f02dc362.

* Revert "Editor needs to stand out a bit more (#3606)"

This reverts commit d711ef25ed.

* Revert "Tweak for keyboard-shortcuts how-to (#3605)"

This reverts commit 419ea9a243.

* Revert "Remove unnecessary border-radius already set on the iframe (#3604)"

This reverts commit 288d25e733.
2018-12-03 08:51:50 +00:00
Jermolene
87b3e470c2 Revert #3607 and #3608
Hi @BurningTreeC apologies I merged these without properly looking at them, but I think we should move them to 5.1.19 because:

* On Chrome, the new version hides the resize handle on textarea, which can be quite useful
* It's visually quite different, and I think might benefit from more discussion
* It's inconsistent with the CodeMirror editor

Would you mind perhaps starting another PR for edit template enhancements?
2018-12-02 20:57:13 +00:00
BurningTreeC
c058378da0 Style tweaks for framed editor + preview (#3608)
* remove border: none for iframe from framed.js

... inherits the iframe border 1px solid editor-border in vanilla base

* last style tweaks for editor-preview

same border-radius as framed editor

same additional space at the right as at the left

* Update base.tid

* Update base.tid

* looks actually better with this border
2018-12-02 08:40:11 +00:00
Evan Balster
b9df224f99 Change to natural counting in range[N] operator (#3609)
* Add range operator and documentation

* Use 1-based counting in range[N], update docs
2018-12-02 08:39:28 +00:00
BurningTreeC
288d25e733 Remove unnecessary border-radius already set on the iframe (#3604) 2018-12-01 15:31:34 +00:00
BurningTreeC
6e59d2597a Style the framed editor (#3596)
* style the framed editor

this makes the framed editor look a bit less ugly 😎

* Update framed.js

* Update base.tid

* Update base.tid
2018-12-01 14:21:43 +00:00
Andreas Hahn
2bf6203cf5 Improvements to the static single tiddler view as well as documentation. (#3386)
* Improvements to the static single tiddler view as well as documentation.

* Fixed tabs

* Fixed tabs

* Revert static view path

* Documentation updates
2018-12-01 13:30:00 +00:00
Arlen22
603c564872 Add the "tiddlywiki" argument to the server start hook (#3592)
* Update Hook__th-server-command-post-start.tid

* Update server.js

* Update listen.js
2018-11-29 09:51:11 +00:00
BurningTreeC
0396af849a Undo #3490 - error in popup-cancelling logic (#3586) 2018-11-29 09:49:11 +00:00
Mario Pietsch
42f7c03824 tm-open-external-window plus documentation. (#2721)
* first try - tm-open-external-window plus documentation.

* render examples and make help link a global variable
2018-11-27 18:43:25 +00:00
BurningTreeC
8542ebaecb Fix $tw.platform.isLinux on latest firefox (#3495) 2018-11-25 10:51:42 +00:00
Rob Hoelz
09ea59240a Cancel non-ancestor popups when showing a new popup (#3490)
Addresses GH #3484

As far as I can tell, the popup level checks in this module are
meant to handle nested popups.  It seems to me that the goal is
for at most a single hierarchy of popups to exist at any given time
- bearing that in mind, this change checks any popups currently tracked
by the module, canceling any that don't share an element hierarchy with
the new popup.
2018-11-25 10:42:21 +00:00
Jermolene
a83cd3f984 Change logic of tv-hide-missing-links to tv-show-missing-links
See https://github.com/Jermolene/TiddlyWiki5/pull/3530#issuecomment-441368922
2018-11-24 15:53:39 +00:00
BurningTreeC
3f91d5b3a1 Add tv-override-missing-links to fix links to missing tiddlers (#3530)
* add tv-override-missing-links variable

this lets us set `tv-override-missing-links` true so that we can fix edge cases like the `Filter` dropdown in the `Advanced Search` when `enable missing links` is unchecked in the `Settings` tab of the Control Panel

* add tv-override-missing-links to filter dropdown

* add tv-override-missing-links to type dropdown

* add tv-override-missing-links to fieldname dropd

* add tv-override-missing-links to TagManager(icons)

* undo tv-override-missing-links TagManager

not needed here

* Update link.js

* Update dropdown.tid

* Update fields.tid

* Update type.tid

* Update dropdown.tid

* Update link.js

* simplify all together

* add tv-hide-missing-links to pagetemplate

* do we need to refresh here...

... if the variable gets set on top of the pagetemplate?
2018-11-24 13:36:48 +00:00
BurningTreeC
2541b9b090 Pagescroller - get scroll pos in src window (#3561) 2018-11-21 11:32:22 +00:00
Jeremy Ruston
09330968cc
New "else" prefix for filters (#3558)
* Experimental "else" prefix for filters

See #3557

* Docs updates for "else" filter runs
2018-11-20 13:29:44 +00:00
BurningTreeC
7729649f0e Fix bad function declaration in wiki.js (#3559)
fix for #3555 - inner function declaration should be on top of its "host" function

error originally appeared on firefox v38.0.5
2018-11-20 11:50:12 +00:00
BurningTreeC
33ba69e852 Modals: Display in source-window (#3539)
* Make modals display in source Window

this makes modals display within the window where they got opened, with the parameter `rootwindow` that, if `yes` or `true`, shows the modal always in the root TW window (`<$action-sendmessage $message="tm-modal" $param="mymodal" rootwindow="yes|true"/>`)

* pass the full event to $tw.modal.display

we need the event there to find `srcDocument` and `srcWindow`

* pass event in options object

* update modal.js to use options.event

* add docs for rootwindow tm-modal attribute
2018-11-18 20:57:04 +00:00
Jermolene
3aae643e14 Reveal widget with lazily loaded state tiddlers
Fixes #3476
2018-11-18 19:31:53 +00:00
BurningTreeC
849844be12 Add stateTitle stateField stateIndex attributes (#3529)
* make triggerPopup optionally set state directly

* update button widget for new state attributes

* update reveal widget for new state attributes

* fix errors in button widget
2018-11-18 19:16:46 +00:00
Jeremy Ruston
33dd367a65
Introduce new subfilter operator (#3508) 2018-11-16 11:27:19 +00:00
BurningTreeC
9752531b61 FIX for keyboard widget keyInfoArray (#3544)
apologies
2018-11-15 21:40:27 +00:00
BurningTreeC
43c8a0f485 Keyboard Widget: refresh keyInfoArray (#3541)
this makes a keyboard widget update its keyInfoArray if its key has the `((descriptor))` format and one of the platform-specific configuration tiddlers with that descriptor-suffix changes
2018-11-15 16:50:23 +00:00
BurningTreeC
4f7297645d Fix action-navigate widget for undefined event (#3542)
we need to prevent the event from being undefined which happens when using `action-navigate` within a global keyboard shortcut
2018-11-15 16:49:41 +00:00
BurningTreeC
0ff96f9caf [pagescroller] add callback function option (#3473)
this allows using the pagescroller for scrolling elements into view where the rect gets calculated somewhere else

Example: CodeMirror has the `cm.cursorCoords()` function that returns the rect of the textselection (or cursor coordinates)

this scrolls the cursor or text selection into view using tiddlywikis pagescroller:

`$tw.pageScroller.scrollIntoView(undefined, function() { return self.cm.cursorCoords(true,"window"); });`
2018-11-15 14:58:32 +00:00
BurningTreeC
c82edbe6bc New window: add missing click listener for popups (#3538)
this adds a click listener to new windows which enables us to cancel popups by clicking
2018-11-13 18:08:54 +00:00
BurningTreeC
55b5b6dd56 PageScroller: scroll in new windows (#3537)
* make pageScroller work in new windows

* update getScrollPosition to work for new windows

* Update dom.js
2018-11-13 18:07:55 +00:00
Jermolene
4f8e32a647 Change qualify widget parameter name to match qualify macro 2018-11-06 16:41:18 +00:00
BurningTreeC
4d1127ed5b Fix tc-adjust-top-of-scroll (#3475)
* correct scrolling with tc-adjust-top-of-scroll

not multiplying `offset` with t causes jumps at the first animation steps, where the offset value is bigger than `endY - scrollPosition.y`

* correct scroll offset
2018-11-06 16:23:46 +00:00
Jermolene
d7914e3f3e Merge branch 'master' of https://github.com/Jermolene/TiddlyWiki5 2018-11-06 15:29:16 +00:00
Jermolene
698224556e Avoid wikify widget in TOC macro
Fixing the most egregious problem from #3517

@pmario can you kindly retest?
2018-11-06 15:29:13 +00:00
BurningTreeC
aeaf5ee5b6 FIX "Observe openLinkFromOutsideRiver ..." (#3516)
I assumed the attribute to be available but it's not
2018-11-06 14:33:41 +00:00
BurningTreeC
97b098b059 Observe openLinkFromOutsideRiver when creating new tiddlers (#3514) 2018-11-06 13:55:18 +00:00
BurningTreeC
457f03798c Fix error opening new windows with popup-blocker (#3515)
this prevents errors when a popup blocker blocks opening a new window from within a running TW
2018-11-06 13:54:00 +00:00
BurningTreeC
3592333cb8 Add support for global keyboard shortcuts (#3493)
* changes for global keyboardshortcuts

* add keyboard.js startup module

* remove not existing "th-opening-window" hook

* correct title

* use utils.addEventListeners

* define platform lookup-names on startup

* use the startup-lookup-names array

* use the platform-specific lookupNames only

* Update keyboard.js

* move initializations to the constructor

* move initializations to the constructor

* rename hasAnyTiddlerChanged

* don't explicitely create new RegExp

* use $tw.utils.hopArray

* match strings, no regex

* remove hopArray, move to boot.js

* add $tw.utils.hopArray to boot.js

* style update

* style updates

* move more to keyboardManager module

this could probably be moved to rootwidget.js

* move more to keyboardManager module

* add event listener for shortcuts in new windows

* prevent error when opening window is blocked

* add keydown listener on document in startup.js

* delete startup/keyboard.js

* add missing this.shortcutTiddlers

* Update keyboard.js

* Update boot.js

* add exports.hopArray to utils.js

* minor codingstyle tweak

* change how lookupnames get pushed to array

* Update windows.js

* re-add shortcuts-listener for new windows

I removed this before which I think was because I misunderstood what exactly should go to a separate PR
2018-11-06 13:34:51 +00:00
Jermolene
b584295831 Fix crash with search operator with blank field list 2018-11-01 12:56:56 +00:00
Jeremy Ruston
6dcdc2049a
Enhance search operator (#3502)
* Enhance search operator

* Add support for searching all fields

and also searching all fields except nominated fields.

* Docs tweaks

Thanks @pmario

* Error message improvements

* Improve error message formatting
2018-10-30 17:39:18 +00:00
Yurii Rashkovskii
c0c1b557eb Problem: revealed dropdown menu on mobiles (#3491)
On mobile phones, tiddler's dropdown menu stays partially off-screen.

Solution: ensure that the revealed coordinates are never negative

Closes #3486
2018-10-21 16:53:45 +01:00
Jermolene
6b03ba9876 Syncer: support configurable polling interval 2018-10-19 16:32:23 +01:00
Jermolene
d50e2df57b Syncer: fix problem with incoming tiddlers
The bug here is that incoming tiddlers (ie tiddlers that were updated on the server and synced back to the browser) will retain any fields that are currently present but deleted in the incoming tiddler
2018-10-14 15:35:26 +01:00
Jermolene
9c849eb10a WebServer - change /login-basic route to /login/basic
To avoid clashing with tiddlers called "login-basic" :)

We also need to revise the rout for /status for the same reason, but there are backward compatibility issues there
2018-10-13 17:22:21 +01:00
Cameron Fischer
d8007386cf Fix issues with ordering of tagged items (#3301)
* Added better handling for sortByList manual placements

If manual placement specifications show up in an inconvenient order,
sortByList, will go to the trouble of processing them in that order.

* Added tests to confirm solution to (#3296)

...That custom tag ordering will not choke when tiddlers get sorted after their dependencies have been placed around them

* Corrected list-after bug when referencing external titles

* Using more error-proof $tw.utils.hop in sortByList

* minor indentation correction in test-tags.js
2018-10-07 12:15:33 +01:00
BurningTreeC
5dcdff4b37 Fix scrolling with tc-adjust-top-of-scroll (#3467)
not multiplying `offset` with t causes jumps at the first animation steps, where the offset value is bigger than `endY - scrollPosition.y`
2018-10-07 10:23:41 +01:00
Jermolene
83a245ed21 Refactor utility for converting tiddlers to JSON 2018-10-01 11:27:45 +01:00
Jermolene
fe85845c3c Add new "\import" pragma 2018-09-28 16:01:32 +01:00
Jermolene
cfb2d7c9c8 Add support for splash screens during loading
Fixes #3417

Addresses some of the requirements discussed in #2254
2018-09-27 09:47:55 +01:00
Jermolene
7368cc74e1 Remove inadvertant usage of Object.assign
In order to retain compatibiltiy with IE11

See this discussion: https://groups.google.com/d/topic/tiddlywiki/RjA7_mee5oc/discussion
2018-09-21 10:56:01 +01:00
Jermolene
f98b4d5956 Add more logging for drop operations 2018-09-13 20:42:35 +01:00
Jermolene
874318091e Fix crash with illegal arguments to decodeuri(component)
Fixes #3428
2018-09-09 20:48:53 +01:00
Jermolene
e237d8fa97 Transliterate servername to safe ASCII
Fixes #3410
2018-08-24 14:33:31 +01:00
Jermolene
0f7ce7b67f Refactor navigator widget to use story utility to manipulate the storylist as well as the historylist 2018-08-23 18:31:48 +01:00
Jermolene
7dbe117bc5 Add username (if set) to the title of draft tiddlers
Makes things a bit easier to follow when working in multiuser environments.

@inmysocks, @danielo515, @arlen22, @pmario, @drakor does this make sense for your use cases?
2018-08-23 17:43:06 +01:00
Jermolene
7a6213dcbf Update code comment for $tw.utils.http 2018-08-23 13:13:49 +01:00
Jermolene
09112ed455 Add support for webp, heic, and heif image formats
https://en.wikipedia.org/wiki/WebP
https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format
2018-08-21 11:46:46 +01:00
Jermolene
fbaceaa8bd Don't steal "paste" events from contenteditable elements
Fixes pasting with a WYSIWYG editor
2018-08-20 15:26:41 +01:00
Andreas Hahn
fe527b7eaf Fixed type mismatch (#3403) 2018-08-19 18:22:52 +01:00
Jermolene
5a2e87eb09 Extend permalink/permaview to optionally copy URL to the clipboard
Fixes #3255
2018-08-16 19:39:18 +01:00
Jermolene
b55a3102be Fix typo from 8a38685 2018-08-16 16:08:33 +01:00
Jermolene
8a38685de9 Optionally adjust scroll targets to allow for a top menu bar
Fixes #3396
2018-08-16 12:07:50 +01:00
Jermolene
763f8afaf2 Add "contains" filter operator for searching list fields 2018-08-15 13:50:07 +01:00
Jermolene
3140ff9e49 Extent tm-full-screen message to support forcing the status
Now one can force "enter" or "exit", instead of just toggling the current status
2018-08-14 22:53:53 +01:00
Jermolene
7b9dc7557c Popup manager enhancements 2018-08-09 19:39:58 +01:00
Jermolene
c87c18be96 Fix tm-new-tiddler overwriting creation fields of existing tiddlers
Fixes #3371
2018-08-08 15:08:34 +01:00
Jermolene
2d231a2e07 Fix typo in reveal widget
Introduced in a3a4c28143
2018-07-31 13:30:00 +01:00
Jermolene
4b9bc1b766 Fix crash with malformed hexadecimal HTML entities
Fixes #3373
2018-07-28 16:22:38 +01:00
Jermolene
a3a4c28143 Fix bug with reveal widget not refreshing when state tiddler changes 2018-07-20 17:07:48 +01:00
Jermolene
8520c9d8fd Coding style tweaks for #3346 2018-07-19 21:48:40 +01:00
Evan Balster
be58de8409 Add range operator and documentation (#3346) 2018-07-19 21:42:09 +01:00
Jermolene
34e04b7ca6 Minor tweaks for #3362 2018-07-19 21:28:31 +01:00
Arlen22
aa8b2e11bb Allow all methods and add bodyFormat property to route definition (#3362)
* Allow all methods and add bodyFormat property to route definition

* Set string as the default bodyFormat

* Only set encoding on string routes
2018-07-19 21:24:57 +01:00
snlhnk
c05c0d3df6 Module-ize server routes, add static file support and other enhancements(#2679)
* Module-ize server routes and add static file support (#2510)

* Refactor server routes to modules

New module type: serverroute

Caveats: Loading order is not deterministic but this would only matter
if two route modules attempted to use the same path regexp (that would
be silly).

* Add static assets plugin

This plugin allows the node server to fetch static assets in the /assets
directory. I felt that this was a feature that goes above the core
functionality. That is why I added it as a plugin. with the modular
route extensions this was a breeze.

* Add serverroute description to ModuleTypes

* Coding standards tweaks

* Fix filename typo

* Move support for attachments from a plugin into the core

* Missing "else"

* Refactor server handling

* Introduce a new named parameter scheme for commands
* Move the SimpleServer class into it's own module
* Deprecate the --server command because of the unwieldy syntax
* Add a new --listen command using the new syntax

For example:

tiddlywiki mywiki --listen host:0.0.0.0 port:8090

* Add check for unknown parameters

* Add support for multiple basic authentication credentials in a CSV file

Beware: Passwords are stored in plain text. If that's a problem, use an authenticating proxy and the trusted header authentication approach.

* Refactor module locations

* Rename "serverroute" module type to "route"

* Remove support for verifying optional named command parameters

The idea was to be able to flag unknown parameter names, but requiring a command to pre-specify all the parameter names makes it harder for (say) the listen command to be extensible so that plugins can add new optional parameters that they handle. (This is particularly in the context of work in progress to encapsulate authenticators into their own modules).

* Refactor the two authenticators into separate modules and add support for authorization

* Correct mistaken path.join vs. path.resolve

See https://stackoverflow.com/a/39836259

* Docs for the named command parameters

I'd be grateful if anyone with sufficient Windows experience could confirm that the note about double quotes in "NamedCommandParameters" is correct.

* Be consistent about lower case parameter names

* Do the right thing when we have a username but no password

With a username parameter but no password parameter we'll attribute edits to that username, but not require authentication.

* Remove obsolete code

* Add support for requiring authentication without restricting the username

* Refactor authorization checks

* Return read_only status in /status response

* Fix two code typos

* Add basic support for detecting readonly status and avoiding write errors

We now have syncadaptors returning  readonly status and avoid attempting to write to the server if it's going to fail

* Add readonly-styles

We hide editing-related buttons in read only mode

I've made this part of the tiddlyweb plugin but I think a case could be made for putting it into the core.

* Add custom request header as CSRF mitigation

By default we require the header X-Requested-With to be set to TiddlyWiki. Can be overriden by setting csrfdisable to "yes"

See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Protecting_REST_Services:_Use_of_Custom_Request_Headers

* Add support for HTTPS

* First pass at a route for serving rendered tiddlers

cc @Drakor

* Tweaks to the single tiddler static view

Adding a simple sidebar

* Switch to "dash" separated parameter names

* Typo

* Docs: Update ServerCommand and ListenCommand

* First pass at docs for the new web server stuff

Writing the docs is turning out to be quite an undertaking, much harder than writing the code!

* Get rid of extraneous paragraphs in static renderings

* Rejig anonymous user handling

Now we can support wikis that are read-only for anonymous access, but allow a user to login for read/write access.

* More docs

Slowly getting there...

* Static tiddler rendering: Fix HTML content in page title

* Docs updates

* Fix server command parameter names

Missed off 30ce7ea

* Docs: Missing quotes

* Avoid inadvertent dependency on Node.js > v9.6.0

The listenOptions parameter of the plain HTTP version of CreateServer was only introduced in v9.6.0

cc @Drakor @pmario

* Typo
2018-07-18 16:54:43 +01:00
Jermolene
bef3242075 New text editor operation: save selection to a tiddler 2018-06-29 15:09:51 +01:00
Jermolene
1ce9973bed Add optional debug logging to the server command 2018-06-20 12:43:41 +01:00
Jermolene
c29f5a1b61 Server command: map missing path to "/"
Otherwise, the user gets a 404 if we use a path prefix and the user omits the trailing slash
2018-06-20 12:18:35 +01:00
BurningTreeC
2a3f1b4403 Make tm-full-screen work in all windows (#3334)
this makes tm-full-screen work in new windows, too
2018-06-16 10:03:38 +01:00
Jermolene
7557b8b5b7 Remove extraneous debugging code from 35cbb127a3 2018-06-15 11:34:06 +01:00
Jermolene
35cbb127a3 Restrict variable substitutions to macros defined with the define pragma
Fixes #3333
2018-06-15 08:31:02 +01:00
Jermolene
aba9c94f5a Fix coding standards for put.js
A few minor things, but the accidental use of "const" is serious: TW5 is intended to run on ES5.
2018-06-13 15:50:47 +01:00
Jermolene
bacf500d50 Avoid deprecated new Buffer() usage
See https://alexatnet.com/node-js-10-important-changes/#buffer-1

> Uses of new Buffer() and Buffer() outside of the node_modules directory will now emit a runtime deprecation warning.

More details: https://nodejs.org/api/buffer.html#buffer_buffer_from_buffer_alloc_and_buffer_allocunsafe
2018-06-13 11:22:17 +01:00
Jermolene
2e51f08bef Add support for rebasing headings at render time
Fixes #3330
2018-06-10 15:54:23 +01:00
Jermolene
6b14969cf6 Display a warning for binary tiddlers in view mode
The base64 data is currently parsed as wikitext, which is slow and unhelpful

We already display the same warning for binary tiddlers in edit mode.
2018-05-18 17:53:07 +01:00
Jermolene
6e2b4ebf3e Remove print-tiddler-window button for v5.1.17
We'll reconsider it for v5.1.18
2018-05-12 11:20:43 +01:00
Jermolene
737e9ae4cb Revert multiple suboperator functionality from the "is" operator
See the discussion here: https://github.com/Jermolene/TiddlyWiki5/pull/3240#issuecomment-388035466
2018-05-10 13:15:49 +01:00
Jermolene
523060e823 Add new "print tiddler" button for the view toolbar
It works by opening the tiddler in a new window and then triggering the browser print dialogue.
2018-05-10 11:33:23 +01:00
Matt Lauber
0ab9ec1ad3 Refactored the is operator for simplicity and efficiency. (#3240)
* Refactored the is operator for simplicity and efficiency.

* Improve `is` filter documentation.

* Update is.js

* extracted `subops.length` to `num_of_subops`
* renamed `subop` to `operator` for clarity/differentiation from `subops`
* refactored to avoid using a `Set` object.

* Update is.js
2018-05-09 18:07:08 +01:00
Devin Weaver
230c13129a Fix undefined xhr bug (#3262)
Closes #3261

Bug introduced in commit f9be41720 ("Minor tweak for RetrieveETag
(#3257)", 2018-05-05)
2018-05-09 18:04:52 +01:00
Daniel Rodríguez Rivero
4c89bbabbe Retain $:/status/UserName when logged out (#2893)
The user name tiddler should not be removed just because we are not logged in
2018-05-09 14:22:55 +01:00
Bram Chen
f9be417204 Minor tweak for RetrieveETag (#3257)
Need to check if the server responses a null value for ETag.
(In the case testing with build-in webdav server of CarotDAV on Windows 10)
2018-05-05 11:40:41 +01:00
Sebastian Silva
46e8e4343a Fix WebDAV by requesting new ETag. (#3230)
* Fix WebDAV by requesting new ETag conditionally

For me. this was saving only the first time and subsequently failing.
Having revised the requests, I noticed it didn't get a new ETag after saving.
Seems not all WebDAV implementations return a new ETag in PUT requests.

In my WebDAV service (WsgiDAV) - ETag is only served from a HEAD
request.

So if no ETag is found with PUT - we request one with HEAD.

This patch fixes error handling and should also work with servers that
provide ETag directly upon PUT.

* Add tweak from PMario
2018-05-04 11:48:38 +01:00
Jermolene
ab5e5795e8 Fix issue with lazy loading temporary tiddlers
Fixes #3235
2018-05-03 18:27:17 +01:00
Sebastian Silva
895447c40c Add write condition for DAT protocol (#3244)
In order to write to a DAT with Beaker Browser, it needs to have access to the file via `dat:` protocol.
2018-05-02 15:57:47 +01:00
BurningTreeC
5626148202 Fix for sidebar not showing #3223 (#3226)
* fix for sidebar not showing

I believe this fixes #3223

* add explaining comment

* ... and fix indentation.
2018-05-02 15:31:26 +01:00
Matt Lauber
c974858cf5 Add Range widget (#2988)
* Adds a range widget 

Adds a range widget that supports all the range attributes on a input[type=range] element.  These include min max and increment.

* Update range.js

* Fix spaces vs tabs.

* Added documentation.
2018-04-24 22:05:05 +01:00
Cameron Fischer
7e58866499 Added present-but-empty list-after functionality (#3219)
This places the list item at the end of the list when its 'list-item' field
is an empty string.
2018-04-24 16:58:09 +01:00
Matt Lauber
5ea6c9a273 Modify the is operator to allow multiple types to be specified. (#2982)
* Modify the is operator to allow multiple types to be specified.

* Fixed indentation.

* Fixed indentation.

* Rewritten to maintain input order when multiple filters provided.

* Updated documentation.

* Update is.tid
2018-04-12 13:21:49 +01:00
Arlen22
2163302190 Invoke hook when server starts (#3024)
* Invoke hook when server starts

Invokes the `th-server-command-start` hook when the server is started, with the server object as the parameter. This allows adding a WebSocket listener to the server.

* Return the HTTP server from the listen function

Returns the node HTTP server created in the listen function to allow extension

* Add node HTTP server to server-command-start hook

* Change hook to post start in case we add a pre-start hook

* Create Hook__th-server-command-post-start.tid
2018-04-10 21:55:54 +01:00
jed
3af0487f29 Add hooks for canceling editing a tiddler, new tiddler and renaming a tiddler (#3206)
These hooks are used by the multi-user plugin and are required to make the live two-way updating between the file system and the browser
2018-04-10 19:52:00 +01:00
BurningTreeC
afe14b47b5 draggable widget: actions on drag-start and drag-end (#3203)
* pass drag-start end drag-end actions to draggable

* Update dragndrop.js

* Update dragndrop.js

* Update dragndrop.js

* Update dragndrop.js

* Update dragndrop.js

* renaming dragstart/dragend -> start/end

* renaming dragstart/dragend -> start/end

* adding docs
2018-04-08 10:29:17 +01:00
Tobias Beer
f092d08358 sets checked class for radio widget wrapper / label (#2182)
* sets checked ckass for radio widget wrapper

* added tc-radio as standard class for radio widgets

* removed selectedClass again, as suggested

@pmario ;-)
2018-04-08 09:52:41 +01:00
Jermolene
df1f7e9798 Put saver: fix missing "else"
Thanks @arlen22
2018-04-08 09:37:49 +01:00
Jermolene
0080728d36 Improve diff count for diff-text widget 2018-04-03 17:50:17 +01:00
Jermolene
47cdf55133 Add new subtiddlerfields filter operator 2018-04-03 17:48:01 +01:00
Skeeve
6401b5c886 Now fixing bug mentioned in groups (#3188)
* fixed the "0 is not a number bug" in listops and x-listops

* Fixed one comment

* "default" is not a good name for a variable

* Following code styles.
Moving getInt to utils.

* Removing unwanted spaces introduced by me
2018-04-02 19:40:47 +01:00
Rizwan
501ad2798f Add ability to trigger actions on unchecking checkbox widget (#3182)
* Add uncheck-actions to checkbox widget

* Update checkbox.js

* Docs for "uncheckactions" param of checkbox widget
2018-04-02 19:39:59 +01:00
Jermolene
f4fd5e76f8 Server command: support environment variables for specifying port number 2018-03-28 11:58:46 +01:00
Mario Pietsch
019cb6a542 Fix #3078 (#3185) 2018-03-23 11:08:53 +00:00
Jermolene
1c6942402e Add support for startup actions 2018-03-23 09:35:39 +00:00
Jermolene
28e713caac Add screen width/height to platform information exposed at startup 2018-03-23 09:13:45 +00:00
Jermolene
8e9330e484 Minor tweaks for #3157 2018-03-22 20:37:06 +00:00