mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-12-07 17:28:05 +00:00
Switch the notifier and modal mechanisms to use the new widget mechanism
Note the use of the `$tw.rootWidget` to collect together the root event handlers
This commit is contained in:
@@ -12,6 +12,8 @@ Modal message mechanism
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var widget = require("$:/core/modules/new_widgets/widget.js");
|
||||
|
||||
var Modal = function(wiki) {
|
||||
this.wiki = wiki;
|
||||
this.modalCount = 0;
|
||||
@@ -71,20 +73,28 @@ Modal.prototype.display = function(title,options) {
|
||||
} else {
|
||||
titleText = title;
|
||||
}
|
||||
var headerParser = this.wiki.parseText("text/vnd.tiddlywiki",titleText,{parseAsInline: true}),
|
||||
headerRenderTree = new $tw.WikiRenderTree(headerParser,{wiki: $tw.wiki, context: {tiddlerTitle: title}, document: document});
|
||||
headerRenderTree.execute();
|
||||
headerRenderTree.renderInDom(headerTitle);
|
||||
var headerParser = this.wiki.new_parseText("text/vnd.tiddlywiki",titleText,{parseAsInline: true}),
|
||||
headerParseTreeNode = headerParser ? {type: "widget", children: headerParser.tree} : undefined,
|
||||
headerWidgetNode = new widget.widget(headerParseTreeNode,{
|
||||
wiki: this.wiki,
|
||||
parentWidget: $tw.rootWidget,
|
||||
document: document
|
||||
});
|
||||
headerWidgetNode.render(modalHeader,null);
|
||||
this.wiki.addEventListener("change",function(changes) {
|
||||
headerRenderTree.refreshInDom(changes);
|
||||
headerWidgetNode.refresh(changes,modalHeader,null);
|
||||
});
|
||||
// Render the body of the message
|
||||
var bodyParser = this.wiki.parseTiddler(title),
|
||||
bodyRenderTree = new $tw.WikiRenderTree(bodyParser,{wiki: $tw.wiki, context: {tiddlerTitle: title}, document: document});
|
||||
bodyRenderTree.execute();
|
||||
bodyRenderTree.renderInDom(modalBody);
|
||||
var bodyParser = this.wiki.new_parseTiddler(title),
|
||||
bodyParseTreeNode = bodyParser ? {type: "widget", children: bodyParser.tree} : undefined,
|
||||
bodyWidgetNode = new widget.widget(bodyParseTreeNode,{
|
||||
wiki: this.wiki,
|
||||
parentWidget: $tw.rootWidget,
|
||||
document: document
|
||||
});
|
||||
bodyWidgetNode.render(modalBody,null);
|
||||
this.wiki.addEventListener("change",function(changes) {
|
||||
bodyRenderTree.refreshInDom(changes);
|
||||
bodyWidgetNode.refresh(changes,modalBody,null);
|
||||
});
|
||||
// Setup the link if present
|
||||
if(options.downloadLink) {
|
||||
@@ -107,15 +117,19 @@ Modal.prototype.display = function(title,options) {
|
||||
} else {
|
||||
footerText = '<$button message="tw-close-tiddler" class="btn btn-primary">Close</$button>';
|
||||
}
|
||||
var footerParser = this.wiki.parseText("text/vnd.tiddlywiki",footerText,{parseAsInline: true}),
|
||||
footerRenderTree = new $tw.WikiRenderTree(footerParser,{wiki: $tw.wiki, context: {tiddlerTitle: title}, document: document});
|
||||
footerRenderTree.execute();
|
||||
footerRenderTree.renderInDom(modalFooterButtons);
|
||||
var footerParser = this.wiki.new_parseText("text/vnd.tiddlywiki",footerText,{parseAsInline: true}),
|
||||
footerParseTreeNode = footerParser ? {type: "widget", children: footerParser.tree} : undefined,
|
||||
footerWidgetNode = new widget.widget(footerParseTreeNode,{
|
||||
wiki: this.wiki,
|
||||
parentWidget: $tw.rootWidget,
|
||||
document: document
|
||||
});
|
||||
footerWidgetNode.render(modalFooterButtons,null);
|
||||
this.wiki.addEventListener("change",function(changes) {
|
||||
footerRenderTree.refreshInDom(changes);
|
||||
footerWidgetNode.refresh(changes,modalFooterButtons,null);
|
||||
});
|
||||
// Add the close event handler
|
||||
wrapper.addEventListener("tw-close-tiddler",function(event) {
|
||||
var closeHandler = function(event) {
|
||||
// Decrease the modal count and adjust the body class
|
||||
self.modalCount--;
|
||||
self.adjustPageClass();
|
||||
@@ -136,9 +150,11 @@ Modal.prototype.display = function(title,options) {
|
||||
}
|
||||
},duration);
|
||||
// Don't let anyone else handle the tw-close-tiddler message
|
||||
event.stopPropagation();
|
||||
return false;
|
||||
},false);
|
||||
};
|
||||
headerWidgetNode.addEventListener("tw-close-tiddler",closeHandler,false);
|
||||
bodyWidgetNode.addEventListener("tw-close-tiddler",closeHandler,false);
|
||||
footerWidgetNode.addEventListener("tw-close-tiddler",closeHandler,false);
|
||||
// Set the initial styles for the message
|
||||
$tw.utils.setStyle(modalBackdrop,[
|
||||
{opacity: "0"}
|
||||
|
||||
@@ -12,6 +12,8 @@ Notifier mechanism
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var widget = require("$:/core/modules/new_widgets/widget.js");
|
||||
|
||||
var Notifier = function(wiki) {
|
||||
this.wiki = wiki;
|
||||
};
|
||||
@@ -35,12 +37,16 @@ Notifier.prototype.display = function(title,options) {
|
||||
// Add classes
|
||||
$tw.utils.addClass(notification,"tw-notification");
|
||||
// Render the body of the notification
|
||||
var bodyParser = this.wiki.parseTiddler(title),
|
||||
bodyRenderTree = new $tw.WikiRenderTree(bodyParser,{wiki: $tw.wiki, context: {tiddlerTitle: title}, document: document});
|
||||
bodyRenderTree.execute();
|
||||
bodyRenderTree.renderInDom(notification);
|
||||
var parser = this.wiki.new_parseTiddler(title),
|
||||
parseTreeNode = parser ? {type: "widget", children: parser.tree} : undefined,
|
||||
widgetNode = new widget.widget(parseTreeNode,{
|
||||
wiki: this.wiki,
|
||||
parentWidget: $tw.rootWidget,
|
||||
document: document
|
||||
});
|
||||
widgetNode.render(notification,null);
|
||||
this.wiki.addEventListener("change",function(changes) {
|
||||
bodyRenderTree.refreshInDom(changes);
|
||||
widgetNode.refresh(changes,notification,null);
|
||||
});
|
||||
// Set the initial styles for the notification
|
||||
$tw.utils.setStyle(notification,[
|
||||
|
||||
Reference in New Issue
Block a user