mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-25 09:30:28 +00:00
52f59a4eb4
Now event handlers are attached to element nodes, not to macro nodes.
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
/*\
|
|
title: $:/core/modules/macros/download.js
|
|
type: application/javascript
|
|
module-type: macro
|
|
|
|
Download macro
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
exports.info = {
|
|
name: "download",
|
|
params: {
|
|
title: {byName: "default", type: "text"},
|
|
type: {byName: true, type: "text"},
|
|
"filename": {byName: true, type: "text"},
|
|
"label": {byName: true, type: "text"}
|
|
}
|
|
};
|
|
|
|
exports.handleEvent = function(event) {
|
|
if(event.type === "click") {
|
|
var text = this.wiki.renderTiddler(this.downloadType,this.downloadTitle),
|
|
link = document.createElement("a");
|
|
link.setAttribute("download",this.downloadFilename);
|
|
link.setAttribute("href","data:" + this.downloadType + "," + encodeURIComponent(text));
|
|
link.click();
|
|
event.preventDefault();
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
|
|
exports.executeMacro = function() {
|
|
this.downloadTitle = this.params.title || "$:/core/templates/tiddlywiki5.template.html";
|
|
this.downloadType = this.params.type || "text/plain";
|
|
this.downloadFilename = this.params.filename || this.downloadTitle;
|
|
var attributes = {},
|
|
content = [];
|
|
if(this.hasParameter("label")) {
|
|
content.push($tw.Tree.Text(this.params.label));
|
|
} else {
|
|
content.push($tw.Tree.Text("Download \"" + this.downloadFilename + "\""));
|
|
}
|
|
if(this.classes) {
|
|
attributes["class"] = this.classes.slice(0);
|
|
}
|
|
return $tw.Tree.Element("button",attributes,content,{
|
|
events: ["click"],
|
|
eventHandler: this
|
|
});
|
|
};
|
|
|
|
})();
|