1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-27 03:57:21 +00:00

Merge branch 'tiddlywiki-com'

This commit is contained in:
jeremy@jermolene.com 2021-07-27 19:30:44 +01:00
commit 53c247b9a1
29 changed files with 409 additions and 85 deletions

View File

@ -0,0 +1,35 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Drag and Drop Interoperability with TiddlyWiki Demo</title>
<style>
#draggable {
padding: 1em;
margin: 1em;
background: #ecc;
}
</style>
</head>
<body>
<div id="draggable" draggable="true">
Drag me to a TiddlyWiki window
</div>
</body>
<script>
var titleString = "This is the string that appears when the block is dragged to a text input";
var tiddlerData = [
{title: "Tiddler One", text: "This is one of the payload tiddlers"},
{title: "Tiddler Two", text: "This is another of the payload tiddlers", "custom-field": "A custom field value"}
];
document.getElementById("draggable").addEventListener("dragstart",function(event) {
event.dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(JSON.stringify(tiddlerData)));
event.dataTransfer.setData("Text",titleString);
event.stopPropagation();
return false;
});
</script>
</html>

View File

@ -14,6 +14,7 @@ Welcome to the developer documentation for TiddlyWiki (https://tiddlywiki.com/).
** HookMechanism ** HookMechanism
** [[Using ES2016 for Writing Plugins]] ** [[Using ES2016 for Writing Plugins]]
** [[Adding Babel Polyfill to TiddlyWiki]] ** [[Adding Babel Polyfill to TiddlyWiki]]
** [[TiddlyWiki Drag and Drop Interoperability]]
* The original developer documentation from https://tiddlywiki.com: * The original developer documentation from https://tiddlywiki.com:
** [[TiddlyWiki for Developers]] ** [[TiddlyWiki for Developers]]
** [[TiddlyWiki Coding Style Guidelines]] ** [[TiddlyWiki Coding Style Guidelines]]

View File

@ -0,0 +1,15 @@
title: TiddlyWiki Drag and Drop Interoperability
It is straightforward to allow any HTML file to interoperate with TiddlyWiki's drag and drop implementation.
This example shows how to attach draggable data to a DOM element. The data is provided in two different forms:
* the string data is used if the element is dragged onto a text editing area
* the tiddler data is used if the element is dragged into TiddlyWiki's import area
<$button>
<$action-sendmessage $message="tm-download-file" $param="$:/dev/save/dragndropinterop" filename="index.html"/>
Download this sample code
</$button>
<$codeblock code={{DragAndDropInterop}} language="text/html"/>

View File

@ -0,0 +1,35 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Drag and Drop Interoperability with TiddlyWiki Demo</title>
<style>
#draggable {
padding: 1em;
margin: 1em;
background: #ecc;
}
</style>
</head>
<body>
<div id="draggable" draggable="true">
Drag me to a TiddlyWiki window
</div>
</body>
<script>
var titleString = "This is the string that appears when the block is dragged to a text input";
var tiddlerData = [
{title: "Tiddler One", text: "This is one of the payload tiddlers"},
{title: "Tiddler Two", text: "This is another of the payload tiddlers", "custom-field": "A custom field value"}
];
document.getElementById("draggable").addEventListener("dragstart",function(event) {
event.dataTransfer.setData("URL","data:text/vnd.tiddler," + encodeURIComponent(JSON.stringify(tiddlerData)));
event.dataTransfer.setData("Text",titleString);
event.stopPropagation();
return false;
});
</script>
</html>

View File

@ -0,0 +1,3 @@
title: DragAndDropInterop
type: text/html

View File

@ -0,0 +1,3 @@
title: $:/dev/save/dragndropinterop
<$view tiddler="DragAndDropInterop" field="text"/>

View File

@ -0,0 +1,16 @@
created: 20210519110226889
modified: 20210519110226889
tags: [[Other Resources]]
title: "Grok TiddlyWiki" by Soren Bjornstad
type: text/vnd.tiddlywiki
url: https://groktiddlywiki.com/read/
This new textbook from Soren Bjornstad is highly recommended for learning ~TiddlyWiki. The presentation and design are also a first class example of using ~TiddlyWiki.
From the site:
> Grok ~TiddlyWiki is a textbook that helps you build a deep, lasting understanding of and proficiency with ~TiddlyWiki through a combination of detailed explanations, practical exercises, and spaced-repetition reviews of prompts called takeaways.
{{!!url}}

View File

@ -1,4 +1,4 @@
caption: ~TW5-firebase caption: TW5-firebase
color: #FFEB3B color: #FFEB3B
community-author: Peter Neumark community-author: Peter Neumark
created: 20210115121027582 created: 20210115121027582

View File

@ -1,11 +1,19 @@
title: ShadowTiddlers \define actions()
tags: Concepts <$action-setfield $tiddler="$:/state/tab/moresidebar-1850697562" $field="text" $value="$:/core/ui/MoreSideBar/Shadows"/>
modified: 201308091623 <$action-setfield $tiddler="$:/state/tab/sidebar--595412856" $field="text" $value="$:/core/ui/SideBar/More"/>
\end
\define click(text)
<$button actions=<<actions>>>$text$</$button>
\end
ShadowTiddlers are tiddlers that are loaded from within [[Plugins]]. Unlike ordinary tiddlers, they don't appear in most lists. ShadowTiddlers are tiddlers that are loaded from within [[Plugins]]. Unlike ordinary tiddlers, they don't appear in most lists.
ShadowTiddlers can be overridden with an ordinary tiddler of the same name. If that tiddler is subsequently deleted then the original shadow tiddler is automatically restored. ShadowTiddlers can be overridden with an ordinary tiddler of the same name. If that tiddler is subsequently deleted then the original shadow tiddler is automatically restored.
The current shadow tiddlers are: !! Overridden Shadow Tiddlers
<$list filter="[all[shadows]sort[title]]"/> <<list-links "[is[tiddler]is[shadow]sort[title]]">>
!! Shadow Tiddlers
A full list of shadow tiddlers can be found in the sidebar in the "More" -> "Shadows" tab

View File

@ -0,0 +1,121 @@
created: 20210222140234737
modified: 20210520174049056
tags: Learning
title: Demonstration: keyboard-driven-input Macro
type: text/vnd.tiddlywiki
\define allshortcuts(descriptor)
<$wikify name=scutlist text=<<displayshortcuts (($descriptor$)) '' ' ' ''>> >
<$list filter="[<scutlist>split[ ]join[</kbd> or <kbd>]addprefix[<kbd>]addsuffix[</kbd>]]" variable=scts><<scts>></$list>
</$wikify>
\end
\define kdi-demo-textmacrocall()
```
<$macrocall $name=keyboard-driven-input
tiddler="$(tiddler)$"
storeTitle="$(storeTitle)$"
selectionStateTitle="$(selectionStateTitle)$"
configTiddlerFilter="$(configTiddlerFilter)$"
/>
```
\end
<$vars configTiddlerFilter="[[kdi-demo-configtid]]" tiddler="kdi-demo-tiddler" storeTitle="kdi-demo-storeTitle" selectionStateTitle="kdi-demo-selectionStateTitle" >
The [[keyboard-driven-input Macro]] is used to create filtered lists that update as the user types. It also allows navigating the lists, and invoking macros using list items, with the keyboard.
It consists of an ''[[edit-text widget|EditTextWidget]]'' wrapped in [[keyboard widgets|KeyboardWidget]]. There are <<.def keyboard>> widgets to listen for `((input-accept))`, `((input-accept-variant))`, and `((input-cancel))` keyboard shortcuts, but there is no default behaviour in response to these events; macros must be written to suit the use-case. There is also no default visualisation of the filtered options list.
!!Types of keyboard input handled by the <<.var keyboard-driven-input>> macro:
!!!Non-configurable:
The following keyboard events invoke macros defined alongside <<.var keyboard-driven-input>> in [[$:/core/macros/keyboard-driven-input]].
|Input |Purpose |Macro |h
|typing input |composing a string to be used within list filters |<<.var keyboard-input-actions>> |
|`((input-up))` (<<allshortcuts input-up>>) |temporarily selecting the previous item in the filtered list |<<.var input-next-actions>> with parameters <<.param afterOrBefore>>=`"before"`, <<.param reverse>>=`"reverse[]"` |
|`((input-down))` (<<allshortcuts input-down>>) |temporarily selecting the next item in the filtered list |<<.var input-next-actions>> with <<.param afterOrBefore>>=`"after"`, <<.param reverse>>=`""` |
All of the above actions generate or modify data which <<.var keyboard-driven-input>> keeps in tiddlers specified using the macro's parameters. The data can then be accessed not only by the macros invoked by keyboard shortcuts, but also outside of these, e.g. a macro to display the filtered list(s).
!!!Configurable through parameters:
The following keyboard events invoke macros whose names are specified in parameters to <<.var keyboard-driven-input>>. The intended purpose is suggested by the parameter name, but there are no default macros defined within [[$:/core/macros/keyboard-driven-input]].
|[[Keyboard shortcut descriptor |Keyboard Shortcut Descriptor]] |Key combination |Parameter |h
|`((input-accept))` |<<allshortcuts input-accept>> |<<.param inputAcceptActions>> |
|`((input-accept-variant))` |<<allshortcuts input-accept-variant>> |<<.param inputAcceptVariantActions>> |
|`((input-cancel))` |<<allshortcuts input-cancel>> |<<.param inputCancelActions>> |
<<.var keyboard-driven-input>> can be seen in action as part of various core features in TiddlyWiki, e.g.: the [[search feature|Searching in TiddlyWiki]], the [[tag-picker Macro]], and dropdown interfaces in the [[Editor toolbar]] such as [[Insert link]].
!!Minimal ingredients for a demonstration
Keeping in mind that the <<.var keyboard-driven-input>> macro does not, by itself, display list results, or do anything with a selected option, a minimal demonstration of the <<.var keyboard-driven-input>> macro requires:
# ''a tiddler, containing a filter'' whose results depend on the user's text input, to generate the options from which the user can select
# ''several parameters:''
#*''a filter'' to return the title of the tiddler where the filter described in step 1 can be found, and
#*''tiddler titles'' to use for storing state information in response to input events. These tiddlers do not need to exist already. If they do exist, the <<.var keyboard-driven-input>> macro will change their contents.
!!The search filter(s)
By default, <<.var keyboard-driven-input>> will look for filters in the <<.field first-search-filter>> and <<.field second-search-filter>> fields of a tiddler (whose title is specified by a parameter discussed below).
This filter can refer to a variable called <<.var userInput>>, which shows the contents of the <<.def edit-text>> widget, as stored in a state tiddler (discussed below), at the time of the latest <kbd><<displayshortcuts ((input-up))>></kbd> or <kbd><<displayshortcuts ((input-down))>></kbd> event.
''Note:'' If this filter is to be referred to in a context outside the <<.var keyboard-driven-input>> macro (such as in a popup showing the filtered options), the variable <<.var userInput>> has to be defined in those contexts as well (by reading it from a state tiddler).
!!Minimal parameters
|Parameter name |Notes |h
|<<.param configTiddlerFilter>> |This is a filter, rather than a tiddler title, allowing conditional behaviour (e.g. checking for an active tab, or preferring a filter that may not be present, with a fallback).<br>The title returned must belong to an existing tiddler, containing at least one filter with which <<.var keyboard-driven-input>> can generate its results list. |
|<<.param tiddler>> |This tiddler contains either the typed input, or the instantaneous result selection, depending upon the most recent event. It is updated with each keystroke in the ''edit-text'' widget, //and// when the user uses the <kbd><<displayshortcuts ((input-up))>></kbd> or <kbd><<displayshortcuts ((input-down))>></kbd> key to cycle through filtered results. |
|<<.param storeTitle>> |This tiddler always reflects the user input (transcluded from the tiddler <<.param tiddler>> after each keystroke into the ''edit-text'' widget). |
|<<.param selectionStateTitle>> |This tiddler is updated on <kbd><<displayshortcuts ((input-up))>></kbd> or <kbd><<displayshortcuts ((input-down))>></kbd> events and contains either the user input with the suffix `-userInput`, or the instantaneous selection with the suffix `-primaryList` or `-secondaryList`, depending on which of up to two filters generated the list it came from. |
!!Demonstration setup
I have created a tiddler called <$list filter=<<configTiddlerFilter>> /> and put the following filter into its <<.field first-search-filter>> field:
<code><$list filter=<<configTiddlerFilter>> ><$text text={{!!first-search-filter}}/></$list></code>.
This filters for non-system tiddlers whose titles contain the text the user has typed.
To use the above filter with <<.var keyboard-driven-input>>, the value of the parameter <<.param configTiddlerFilter>> should be a filter that returns <$list filter=<<configTiddlerFilter>> />.
I can select <<.param tiddler>>, <<.param storeTitle>>, and <<.param selectionStateTitle>> fairly arbitrarily (just making sure not to use titles of tiddlers that I do not want changed).
This demonstration can now be invoked with the following macro call:
<<kdi-demo-textmacrocall>>
!!Demo
Try typing in here: <$macrocall $name=keyboard-driven-input
tiddler=<<tiddler>>
storeTitle=<<storeTitle>>
selectionStateTitle=<<selectionStateTitle>>
configTiddlerFilter=<<configTiddlerFilter>>
/>
Observe the changes in the various state tiddlers in the below table. Use <kbd><<displayshortcuts ((input-up))>></kbd> and <kbd><<displayshortcuts ((input-down))>></kbd> keys to navigate among filter results. If nothing changes, try a shorter input to widen the filter. If the input has zero length, the list will contain all non-system tiddlers.
@@.tablestyle
|Parameter name |Tiddler title |Contents of <<.field text>> field of the tiddler |h
|<<.param tiddler>> |{{{[<tiddler>]}}} |<pre><$text text={{{[<tiddler>get[text]]}}}/></pre>|
|<<.param storeTitle>> |{{{[<storeTitle>]}}} |<pre><$text text= {{{[<storeTitle>get[text]]}}}/></pre>|
|<<.param selectionStateTitle>> |{{{[<selectionStateTitle>]}}} |<pre><$text text={{{[<selectionStateTitle>get[text]]}}}/></pre>|
@@
The <<.var keyboard-driven-input>> macro has many parameters available, including all the attributes of the enclosed ''edit-text'' widget, which make it very flexible in how it is used and how results can be displayed and interacted with.
See also: [[Customising search results]] and [[$:/core/ui/DefaultSearchResultList]]
<style>
.tablestyle {width:100%;}
.tablestyle td + td + td {width: 50%;}
</style>

View File

@ -0,0 +1,6 @@
created: 20210131043724146
first-search-filter: [!is[system]search:title<userInput>sort[]]
modified: 20210204012422020
tags:
title: kdi-demo-configtid
type: text/vnd.tiddlywiki

View File

@ -18,7 +18,7 @@ The information above should be interpreted as follows:
* mainRender is the time taken for the initial display of the page template * mainRender is the time taken for the initial display of the page template
* styleRefresh is the time taken to refresh the page stylesheet * styleRefresh is the time taken to refresh the page stylesheet
* mainRender is the time taken to refresh the main page template * mainRefresh is the time taken to refresh the main page template
As an example, try switching between the sidebar tabs to compare how long they take to render. As an example, try switching between the sidebar tabs to compare how long they take to render.

View File

@ -1,6 +1,6 @@
caption: enlist caption: enlist
created: 20170221144241063 created: 20170221144241063
modified: 20190610165246154 modified: 20210505100241872
op-input: ignored op-input: ignored
op-neg-input: a [[selection of titles|Title Selection]] op-neg-input: a [[selection of titles|Title Selection]]
op-neg-output: those input titles that are <<.em not>> listed in <<.place L>> op-neg-output: those input titles that are <<.em not>> listed in <<.place L>>
@ -14,7 +14,7 @@ tags: [[Filter Operators]] [[Field Operators]] [[Selection Constructors]] [[Nega
title: enlist Operator title: enlist Operator
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.tip " Literal filter operands cannot contain square brackets but you can work around the issue by using a variable:">> <<.tip """Literal filter operands cannot contain square brackets but you can work around the issue by using a variable. ''Learn more at:'' [[SetWidget]] documentation under the heading "Filtered List Variable Assignment" """>>
``` ```
<$set name="myList" value="first [[second with a space]] third"> <$set name="myList" value="first [[second with a space]] third">
@ -22,5 +22,4 @@ type: text/vnd.tiddlywiki
... ...
``` ```
<<.operator-examples "enlist">> <<.operator-examples "enlist">>

View File

@ -0,0 +1,8 @@
created: 20210216203925301
modified: 20210217003209935
tags: [[unique Operator]] [[Operator Examples]]
title: unique Operator (Examples)
To remove duplicate entries from a list where deduplication has been prevented using the [[filter run prefix|Filter Expression]] `=`:
<<.operator-example 1 """=[[E]] =[[A]] =[[B]] =[[C]] =[[C]] =[[D]] =[[C]] +[unique[]]""">>

View File

@ -0,0 +1,10 @@
caption: unique
op-input: a list of items
op-output: a list of unique items
op-parameter: ignored
op-purpose: remove all duplicate items from the current list
tags: [[Filter Operators]] [[Order Operators]] [[Listops Operators]]
title: unique Operator
type: text/vnd.tiddlywiki
<<.operator-examples "unique">>

View File

@ -1,5 +1,5 @@
created: 20150325170720682 created: 20150325170720682
modified: 20150926171049725 modified: 20210519110623819
tags: HelloThere tags: HelloThere
title: A Gentle Guide to TiddlyWiki title: A Gentle Guide to TiddlyWiki
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -16,4 +16,7 @@ How can you make ~TiddlyWiki work for you? We recommend you start with our intro
<<list-links "[tag[HelloThere]]">> <<list-links "[tag[HelloThere]]">>
Also see [[TiddlyWiki Video Tutorials by Francis Meetze]] Also see:
* [["Grok TiddlyWiki" by Soren Bjornstad]]
* [[TiddlyWiki Video Tutorials by Francis Meetze]]

View File

@ -1,5 +1,5 @@
created: 20150414070451144 created: 20150414070451144
list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Firefox Apocalypse]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - TiddlyMap]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Classic]] list: [[HelloThumbnail - Introduction Video]] [[HelloThumbnail - Gentle Guide]] [[HelloThumbnail - Grok TiddlyWiki]] [[HelloThumbnail - Firefox Apocalypse]] [[HelloThumbnail - Latest Version]] [[HelloThumbnail - TiddlyWikiLinks]] [[HelloThumbnail - TiddlyMap]] [[HelloThumbnail - HelpingTiddlyWiki]] [[HelloThumbnail - Developers]] [[HelloThumbnail - Classic]]
modified: 20150414070948246 modified: 20150414070948246
title: HelloThumbnail title: HelloThumbnail
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -0,0 +1,6 @@
title: HelloThumbnail - Grok TiddlyWiki
tags: HelloThumbnail
color: #D5B7EA
image: Grok TiddlyWiki Banner
caption: Grok ~TiddlyWiki
link: "Grok TiddlyWiki" by Soren Bjornstad

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,3 @@
title: Grok TiddlyWiki Banner
type: image/png
tags: picture

View File

@ -1,10 +1,9 @@
caption: tabs caption: tabs
created: 20131228162203521 created: 20131228162203521
modified: 20180408084453861 modified: 20210525204556911
tags: Macros [[Core Macros]] tags: Macros [[Core Macros]]
title: tabs Macro title: tabs Macro
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
The <<.def tabs>> [[macro|Macros]] presents a [[selection of tiddlers|Title Selection]] as a set of tabs that the user can switch between. The <<.def tabs>> [[macro|Macros]] presents a [[selection of tiddlers|Title Selection]] as a set of tabs that the user can switch between.
The tabs display the <<.field caption>> field of a tiddler if it has one, or the tiddler's title otherwise. If specified, the tabs display the <<.field tooltip>> field of a tiddler as the respective button tooltip. The tabs display the <<.field caption>> field of a tiddler if it has one, or the tiddler's title otherwise. If specified, the tabs display the <<.field tooltip>> field of a tiddler as the respective button tooltip.
@ -28,7 +27,7 @@ By default the tabs are arranged horizontally above the content. To get vertical
;retain ;retain
: Optionally, "yes" specifies that the content of the tabs should be retained when switching to another tab, avoiding re-rendering it (this can be useful to avoid video or audio sources unexpectedly resetting) : Optionally, "yes" specifies that the content of the tabs should be retained when switching to another tab, avoiding re-rendering it (this can be useful to avoid video or audio sources unexpectedly resetting)
;actions ;actions
: Optionally, actions can be specified that are triggered when changing a tab : Optionally, actions can be specified that are triggered when changing a tab. Within the actions, the title of the selected tab is available in the <<.var currentTab>> variable and the `currentTiddler` variable from outside the tabs macro is available in the <<.var save-currentTiddler>>
;explicitState ;explicitState
: Optionally, an explicit state title can be specified. It will be preferred over the internally computed (qualified) state title : Optionally, an explicit state title can be specified. It will be preferred over the internally computed (qualified) state title

View File

@ -15,6 +15,4 @@ eg="""<ul>
<li><code><<transclusion>></code></li> <li><code><<transclusion>></code></li>
</ul>"""/> </ul>"""/>
<blockquote>
{{$:/editions/tw5.com/macro-examples/qualify-transcluded}} {{$:/editions/tw5.com/macro-examples/qualify-transcluded}}
</blockquote>

View File

@ -20,3 +20,6 @@ The additional parameters are:
|secondSearchFilterField |the field of the configTiddler where the second search-filter is stored. Defaults to <<.field second-search-filter>> | |secondSearchFilterField |the field of the configTiddler where the second search-filter is stored. Defaults to <<.field second-search-filter>> |
|filterMinLength |the minimum length of the user input after which items are filtered | |filterMinLength |the minimum length of the user input after which items are filtered |
See [[Demonstration: keyboard-driven-input Macro]] for further guidance on using this macro.

View File

@ -0,0 +1,17 @@
caption: ~TiddlyHost
color: #29B6F6
community-author: Simon Baird
created: 20210422191232572
delivery: Service
description: Online service for creating and hosting TiddlyWikis
method: save
modified: 20210423003921468
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge
title: Saving on TiddlyHost
type: text/vnd.tiddlywiki
[img width=140 [https://github.com/simonbaird/tiddlyhost/raw/main/rails/app/assets/images/logo-800.png]]
[[TiddlyHost.com|https://tiddlyhost.com/]] is a hosting service for TiddlyWiki created by Simon Baird. Once you sign up and confirm your email you can create "sites", (i.e. ~TiddlyWikis), with support for online saving. Sites can be private or public, and you can optionally list them on the taggable and searchable [[TiddlyHost Hub|https://tiddlyhost.com/hub]] where they'll be discoverable by others.
Unlike [[TiddlySpot|Saving on TiddlySpot]], [[TiddlyHost|https://tiddlyhost.com]] is secure, open source, and has proper support for TiddlyWiki5. It also allows uploading existing ~TiddlyWiki files, supports TiddlyWikiClassic, and lets you claim ownership of your ~TiddlySpot sites. For more information see the [[FAQ|https://github.com/simonbaird/tiddlyhost/wiki/FAQ]] and the [[About|https://tiddlyhost.com/about]] page.

View File

@ -1,56 +1,46 @@
caption: ~TiddlySpot caption: ~TiddlySpot
color: #29B6F6 color: #29B6F6
community-author: Simon Baird and Daniel Baird community-author: Simon Baird & Daniel Baird
created: 20130825213500000 created: 20130825213500000
delivery: Service delivery: Service
description: Free online service for hosting TiddlyWiki files description: Online TiddlyWiki hosting. (Deprecated in favour of TiddlyHost)
method: save method: save
modified: 20200507202953380 modified: 20210423004027196
tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge tags: Android Chrome Firefox [[Internet Explorer]] Linux Mac Opera PHP Safari Saving Windows iOS Edge
title: Saving on TiddlySpot title: Saving on TiddlySpot
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
[[TiddlySpot|http://tiddlyspot.com]] is a free hosting service for TiddlyWiki documents from Simon Baird and Daniel Baird. ----
<<.warning "''Please note: ~TiddlySpot is in maintenance mode and no longer allows new sites to be created. Instead of ~TiddlySpot you can now use [[TiddlyHost|Saving on TiddlyHost]], a new service from the creator of ~TiddlySpot.''">>
----
[img[https://raw.githubusercontent.com/simonbaird/tiddlyhost/main/rails/app/assets/images/tiddlyspot-banner-logo.png]]
! Setting up a TiddlyWiki on ~TiddlySpot [[TiddlySpot.com|http://tiddlyspot.com]] is a hosting service for TiddlyWiki created in 2006 by Simon Baird and Daniel Baird.
To set up a [[TiddlyWiki Classic|TiddlyWikiClassic]], you merely create a new wiki at http://tiddlyspot.com
!!TiddlyWiki5 on ~TiddlySpot In early 2021 it was superseded by [[TiddlyHost|Saving on TiddlyHost]], a new, secure, modern reimagining of ~TiddlySpot. Creating new sites on ~TiddlySpot is no longer supported, (though sites created in 2020 or earlier are still functional).
~TiddlyWiki5 also functions well on ~TiddlySpot but this version is not offered directly in the ~TiddlySpot set-up.
The simplest way to create a new ~TiddlySpot with ~TiddlyWiki5 is probably through the community created site http://tiddlywiki5.tiddlyspot.com !! Security warning for ~TiddlySpot
Alternatively, you can upload an existing ~TiddlyWiki5 document from your local disc to ~TiddlySpot by following these steps: Note that your password is sent unencrypted when using ~TiddlySpot. From the [[FAQ|http://faq.tiddlyspot.com/]]:
# Sign up for a new wiki at http://tiddlyspot.com/, and remember the wiki name and password
# Open your locally stored TiddlyWiki document in your browser
# Fill in the ~TiddlySpot wikiname and password in ''Saving'' tab of the ''control panel'' <<.icon $:/core/images/options-button>>
# Click the <<.icon $:/core/images/save-button>> ''save changes'' button. You should get a confirmation notification at the top right saying ''Saved wiki''. Saving can take several seconds if you're on a slow connection or working with a large wiki.
# Navigate to your ~TiddlySpot URL at http://{wikiname}.tiddlyspot.com/
Note that your password is sent unencrypted when using ~TiddlySpot. From http://faq.tiddlyspot.com/:
<<< <<<
''Is Tiddlyspot secure?'' ''Is Tiddlyspot secure?''
No. Tiddlyspot does not use SSL/https. Your password is sent in clear text when uploading and when authenticating to access a private site. This means that your Tiddlyspot is vulnerable to packet sniffing and your password could be discovered by a malicious third party. Also your data is transmitted unencrypted when you view your site, even if it is a private site. For this reason please don't put sensitive information such as banking details in your Tiddlyspot and don't use a password that you use for other high security sites. No. Tiddlyspot does not use SSL/https, so all ~TiddlySpot web traffic is vulnerable to packet sniffing. This means your password and site data could be intercepted by a malicious third party. For this reason, please don't keep sensitive information in your ~TiddlySpot site, and don't use a password that you use for other web sites.
<<< <<<
! Problems with saving on ~TiddlySpot !! Problems with saving on ~TiddlySpot
In case you run into this error when uploading a new or freshly upgraded local TiddlyWiki to ~TiddlySpot : In case you run into this error when uploading a freshly upgraded local TiddlyWiki to ~TiddlySpot:
<<< <<<
Error while saving: Error: NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
<<< <<<
The upgrade operation falls foul of a security restriction in Firefox. Until this can be resolved, we suggest using Chrome. The upgrade operation falls foul of a security restriction in Firefox. Until this can be resolved, we suggest using Chrome.
*# Use Chrome to open the local TiddlyWiki document you want to upload to ~TiddlySpot and follow the steps 1 through 5 described above * Use Chrome to open the local TiddlyWiki document you want to upload to ~TiddlySpot and follow the steps 1 through 5 described at [[Upgrading]].
*# Once you've checked the ~TiddlySpot-hosted TiddlyWiki loads properly in Chrome, you should be able to access, edit and [[save using TiddlyFox|Saving with TiddlyFox]] again * Once you've checked the ~TiddlySpot-hosted TiddlyWiki loads properly in Chrome, you should be able to access, edit and [[save using TiddlyFox|Saving with TiddlyFox]] again.
* After you've uploaded your local document once, further editing and saving of the online version hosted on ~TiddlySpot should work with any modern browser of your choice. * After you've uploaded your local document once, further editing and saving of the online version hosted on ~TiddlySpot should work with any modern browser of your choice. (Don't forget to fill in the ~TiddlySpot password in your ~TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes.)
** Don't forget to fill in the ~TiddlySpot wikiname and password in your ~TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes
* //See also : [[Upgrading]]// //See also: [[Upgrading]]//

View File

@ -12,6 +12,6 @@ url: https://twcloud.github.io/tw5-dropbox/
Originally built by Jeremy Ruston and now maintained by Arlen Beiler, TiddlyWiki Cloud (formerly known as TiddlyWiki in the Sky for Dropbox) is an online service that lets you edit TiddlyWiki documents directly in your own Dropbox using just a browser. Originally built by Jeremy Ruston and now maintained by Arlen Beiler, TiddlyWiki Cloud (formerly known as TiddlyWiki in the Sky for Dropbox) is an online service that lets you edit TiddlyWiki documents directly in your own Dropbox using just a browser.
It works with TiddlyWiki 5 and Classic. It works with TiddlyWiki 5. As for TiddlyWiki Classic, the mainstream loader does not work, and a newer loader may work.
https://twcloud.github.io/ https://twcloud.github.io/

View File

@ -0,0 +1,8 @@
created: 20210505094244703
field: list
modified: 20210505094434740
tags:
title: $:/docs/anyField
type: text/vnd.tiddlywiki
This tiddler is needed for the last [[SetWidget]] example

View File

@ -1,6 +1,6 @@
caption: set caption: set
created: 20131115182700000 created: 20131115182700000
modified: 20180315165405442 modified: 20210505095640228
tags: Widgets tags: Widgets
title: SetWidget title: SetWidget
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -15,79 +15,106 @@ The content of the `<$set>` widget is the scope for the value assigned to the va
|!Attribute |!Description | |!Attribute |!Description |
|name |The name of the variable to assign (defaults to "currentTiddler") | |name |The name of the variable to assign (defaults to "currentTiddler") |
|value |The value to assign to the variable if the filter is missing or not empty | |value |The value to assign to the variable if the <<.attr filter>> attribute is missing or not empty |
|tiddler |<<.from-version "5.1.15">> Optional title of the tiddler from which to read the value | |tiddler |<<.from-version "5.1.15">> Optional title of the tiddler from which to read the value |
|subtiddler |<<.from-version "5.1.16">> Optionally specifies the title of a subtiddler within a plugin tiddler identified by the ''tiddler'' attribute | |subtiddler |<<.from-version "5.1.16">> Optionally specifies the title of a subtiddler within a plugin tiddler identified by the ''tiddler'' attribute |
|field |<<.from-version "5.1.15">> Optional field of the tiddler from which to read the value (only used if ''tiddler'' is used) | |field |<<.from-version "5.1.15">> Optional field of the tiddler from which to read the value (only used if ''tiddler'' is used) |
|index |<<.from-version "5.1.15">> Optional index of the tiddler from which to read the value (only used if ''tiddler'' is used) | |index |<<.from-version "5.1.15">> Optional index of the tiddler from which to read the value (only used if ''tiddler'' is used) |
|filter |An optional filter to be evaluated and assigned to the variable (see below) | |filter |An optional filter to be evaluated and assigned to the variable (see "Filtered List Variable Assignment" below). The variable can be used with the <<.olink enlist>> operator |
|select |<<.from-version "5.1.14">> An optional zero-based index of the item to return from the filter output (see below) | |select |<<.from-version "5.1.14">> An optional zero-based index of the item to return from the filter output (see below) |
|emptyValue |The value to assign to the variable if the specified value is missing or empty (see below) | |emptyValue |The value to assign to the variable if the specified value is missing or empty (see below) |
<<.tip """If the value of your variable is enclosed in double square brackets this might indicate that you are returning a list of values from the filter. To use a single title from the filter output without the double square brackets see ''Filtered Item Variable Assignment'' below.""">> <<.tip """If the value of your variable is enclosed in double square brackets this might indicate that you are returning a list of values from the filter. To use a single title from the filter output without the double square brackets see ''Filtered Item Variable Assignment'' below.""">>
! Examples
!! Simple Variable Assignment !! Simple Variable Assignment
The simplest way of using set variable widget assigns a string to a variable. The following example assigns a literal string The simplest way of using set variable widget assigns a string to a variable. The following example assigns a literal string
``` <<<
<$set name="myVariable" value="Some text">
<$macrocall $name='wikitext-example-without-html'
src='<$set name="myVariable" value="Some text">
<$text text=<<myVariable>>/> <$text text=<<myVariable>>/>
</$set> </$set>' />
```
<<<
Both the name and value attributes can be transcluded. For example: Both the name and value attributes can be transcluded. For example:
``` <<<
<$set name=<<anotherVariable>> value={{template!!text}}>
<$text text=<<myVariable>>/> <$macrocall $name='wikitext-example-without-html'
</$set> src='<$set name=anotherVariable value="myVariable">
``` <$set name=<<anotherVariable>> value={{$:/language/DefaultNewTiddlerTitle}}>
<$text text=<<myVariable>>/>
</$set>
</$set>' />
<<<
!! Conditional Variable Assignment !! Conditional Variable Assignment
This form of the set variable widget chooses one of two specified values according to whether a filter evaluates to an empty list. Here's an example that sets a variable according to whether the current tiddler is called "myMagicTitle": This form of the set variable widget chooses one of two specified values according to whether a filter evaluates to an empty list. Here's an example that sets a variable according to whether the current tiddler is called "myMagicTitle":
``` <<<
<$set name="myVariable" filter="[all[current]field:title[myMagicTitle]]" value="It's magic" emptyValue="It's not magic">
<$macrocall $name='wikitext-example-without-html'
src="""<$set name="myVariable" filter="[all[current]field:title[myMagicTitle]]" value="It's magic" emptyValue="It's not magic">
<$text text=<<myVariable>>/> <$text text=<<myVariable>>/>
</$set> </$set>""" />
```
<<<
!! Filtered List Variable Assignment !! Filtered List Variable Assignment
This form of the set variable widget evaluates the filter and assigns the result to the variable as a space-separated list (using double square brackets for titles containing spaces). This form of the set variable widget evaluates the filter and assigns the result to the variable as a space-separated list (using double square brackets for titles containing spaces).
``` <<<
<$set name="myVariable" filter="[tag[HelloThere]]">
<$text text=<<myVariable>>/>
</$set>
```
!! Filtered Item Variable Assignment <$macrocall $name='wikitext-example-without-html'
src='<$set name="myVariable" filter="[tag[HelloThere]]">
<$text text=<<myVariable>>/>
</$set>' />
<<<
!! Filtered Item Variable Assignment Single Element
<<.from-version "5.1.14">> This form of the set variable widget evaluates the filter and assigns the specified result to the variable as a single item (ie, not using double square brackets for titles containing spaces). <<.from-version "5.1.14">> This form of the set variable widget evaluates the filter and assigns the specified result to the variable as a single item (ie, not using double square brackets for titles containing spaces).
``` <<<
<$set name="myVariable" filter="[tag[HelloThere]]" select="0">
<$macrocall $name='wikitext-example-without-html'
src='<$set name="myVariable" filter="[tag[HelloThere]]" select="0">
<$text text=<<myVariable>>/> <$text text=<<myVariable>>/>
</$set> </$set>'/>
```
<<<
!! Transcluded Variable Assignment !! Transcluded Variable Assignment
<<.from-version "5.1.15">> This form of the set variable widget obtains the value to assign to the variable from a value in a tiddler field or index. For example: <<.from-version "5.1.15">> This form of the set variable widget obtains the value to assign to the variable from a value in a tiddler field or index. For example:
``` <<<
<$set name="myVariable" tiddler="HelloThere" field="text">
<$text text=<<myVariable>>/>
</$set>
```
The example above could also be written as `<$set name="myVariable" value={{HelloThere!!text}}>`. The advantage of using the ''tiddler'' attribute is that the tiddler title and field or index can themselves be computed. For example: <$macrocall $name='wikitext-example-without-html'
src='<$set name="myVariable" tiddler="HelloThere" field="list">
```
<$set name="myVariable" tiddler=<<myTiddler>> field={{$:/currentField}}>
<$text text=<<myVariable>>/> <$text text=<<myVariable>>/>
</$set> </$set>'/>
```
<<<
The example above could also be written as `<$set name="myVariable" value={{HelloThere!!list}}>`. The advantage of using the ''tiddler'' attribute is that the tiddler title and field or index can themselves be computed. For example:
<<<
<$macrocall $name='wikitext-example-without-html'
src='<$set name="myTiddler" value="HelloThere">
<$set name="myVariable" tiddler=<<myTiddler>> field={{$:/docs/anyField!!field}}>
<$text text=<<myVariable>>/>
</$set>
</$set>'/>
<<<

View File

@ -449,3 +449,13 @@ J. Wilhelm, @jeremyredhead, 2021/01/27
Quentin Minster, @laomaiweng, 2021/03/10 Quentin Minster, @laomaiweng, 2021/03/10
Cindy Ruan, @cdruan, 2021/03/18 Cindy Ruan, @cdruan, 2021/03/18
Urban Alič, @ualich, 2021/05/06
Joe Bordes, @joebordes, 2021/05/30
Frank Bruns-Ballhausen, @FBB-de, 2021/06/09
Álvaro González Rincón, @Alzacon, 2021/06/10
RJ Skerry-Ryan, @rryan, 2021/07/03