mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-27 18:40:28 +00:00
Introduce post-render startup actions
This commit is contained in:
parent
1a91f81976
commit
5cc1600072
@ -106,6 +106,8 @@ exports.startup = function() {
|
||||
// Fix up the link between the root widget and the page container
|
||||
$tw.rootWidget.domNodes = [$tw.pageContainer];
|
||||
$tw.rootWidget.children = [$tw.pageWidgetNode];
|
||||
// Run any post-render startup actions
|
||||
$tw.rootWidget.executeStartupTiddlers("$:/tags/StartupAction/PostRender");
|
||||
};
|
||||
|
||||
})();
|
||||
|
@ -64,17 +64,12 @@ exports.startup = function() {
|
||||
document: $tw.browser ? document : $tw.fakeDocument
|
||||
});
|
||||
// Execute any startup actions
|
||||
var executeStartupTiddlers = function(tag) {
|
||||
$tw.utils.each($tw.wiki.filterTiddlers("[all[shadows+tiddlers]tag[" + tag + "]!has[draft.of]]"),function(title) {
|
||||
$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);
|
||||
});
|
||||
};
|
||||
executeStartupTiddlers("$:/tags/StartupAction");
|
||||
$tw.rootWidget.executeStartupTiddlers("$:/tags/StartupAction");
|
||||
if($tw.browser) {
|
||||
executeStartupTiddlers("$:/tags/StartupAction/Browser");
|
||||
$tw.rootWidget.executeStartupTiddlers("$:/tags/StartupAction/Browser");
|
||||
}
|
||||
if($tw.node) {
|
||||
executeStartupTiddlers("$:/tags/StartupAction/Node");
|
||||
$tw.rootWidget.executeStartupTiddlers("$:/tags/StartupAction/Node");
|
||||
}
|
||||
// Kick off the language manager and switcher
|
||||
$tw.language = new $tw.Language();
|
||||
|
@ -571,6 +571,16 @@ Widget.prototype.invokeActionString = function(actions,triggeringWidget,event,va
|
||||
return widgetNode.invokeActions(this,event);
|
||||
};
|
||||
|
||||
/*
|
||||
Execute action tiddlers by tag
|
||||
*/
|
||||
Widget.prototype.executeStartupTiddlers = function(tag) {
|
||||
var self = this;
|
||||
$tw.utils.each(self.wiki.filterTiddlers("[all[shadows+tiddlers]tag[" + tag + "]!has[draft.of]]"),function(title) {
|
||||
self.invokeActionString(self.wiki.getTiddlerText(title),self);
|
||||
});
|
||||
};
|
||||
|
||||
Widget.prototype.allowActionPropagation = function() {
|
||||
return true;
|
||||
};
|
||||
|
@ -1,16 +1,21 @@
|
||||
created: 20180323092308399
|
||||
modified: 20190307183936035
|
||||
modified: 20201025161723719
|
||||
tags: Features
|
||||
title: StartupActions
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
TiddlyWiki executes any ActionWidgets found in tiddlers with the following system tags during startup:
|
||||
|
||||
* <<tag "$:/tags/StartupAction">> (executed on all platforms)
|
||||
* <<tag "$:/tags/StartupAction/Browser">> (only executed when running in the browser)
|
||||
* <<tag "$:/tags/StartupAction/Node">> (only executed when running under Node.js)
|
||||
* Executed during initial startup:
|
||||
** <<tag "$:/tags/StartupAction">> (executed on all platforms)
|
||||
** <<tag "$:/tags/StartupAction/Browser">> (only executed when running in the browser)
|
||||
** <<tag "$:/tags/StartupAction/Node">> (only executed when running under Node.js)
|
||||
* Executed after startup rendering:
|
||||
** <<.from-version "5.1.23">> <<tag "$:/tags/StartupAction/PostRender">> (only executed when running in the browser)
|
||||
|
||||
Startup actions are useful for customising TiddlyWiki according to environmental factors such as the screen size. For example, the following action widgets when placed in a tiddler tagged `$:/tags/StartupAction/Browser` will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels:
|
||||
!! Initial Startup Actions
|
||||
|
||||
The initial startup actions are useful for customising TiddlyWiki according to environmental factors such as the screen size. For example, the following action widgets when placed in a tiddler tagged `$:/tags/StartupAction/Browser` will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels:
|
||||
|
||||
```
|
||||
<$reveal type="lt" state="$:/info/browser/screen/width" text="3000">
|
||||
@ -28,8 +33,12 @@ Startup actions are useful for customising TiddlyWiki according to environmental
|
||||
<$action-setfield $tiddler="$:/language" text={{{ [[$:/languages/en-GB]] [plugin-type[language]sort[description]removeprefix[$:/languages/]] +[prefix{$:/info/browser/language}] ~[[en-GB]] +[addprefix[$:/languages/]] }}}/>
|
||||
```
|
||||
|
||||
Note that global macros are not available within startup action tiddlers by default. If you need to access them then you'll need to explicitly include them with an ''import'' [[pragma|Pragma]] at the top of the tiddler:
|
||||
Note that global macros are not available within initial startup action tiddlers by default. If you need to access them then you'll need to explicitly include them with an ''import'' [[pragma|Pragma]] at the top of the tiddler:
|
||||
|
||||
```
|
||||
\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
|
||||
```
|
||||
|
||||
!! Post-Render Startup Actions
|
||||
|
||||
<<.from-version "5.1.23">> Post-render startup actions occur after the TiddlyWiki user interface has been rendered. This makes it possible to perform actions that depend on the rendered display (such as displaying modals).
|
||||
|
Loading…
Reference in New Issue
Block a user