mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-31 15:42:59 +00:00 
			
		
		
		
	 b5059c612a
			
		
	
	b5059c612a
	
	
	
		
			
			Also does some reorganisation of control panel to move “saving” related settings together, and expose a UI for savers to plug into. Fixes #2741
		
			
				
	
	
		
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*\
 | |
| title: $:/core/modules/savers/download.js
 | |
| type: application/javascript
 | |
| module-type: saver
 | |
| 
 | |
| Handles saving changes via HTML5's download APIs
 | |
| 
 | |
| \*/
 | |
| (function(){
 | |
| 
 | |
| /*jslint node: true, browser: true */
 | |
| /*global $tw: false */
 | |
| "use strict";
 | |
| 
 | |
| /*
 | |
| Select the appropriate saver module and set it up
 | |
| */
 | |
| var DownloadSaver = function(wiki) {
 | |
| };
 | |
| 
 | |
| DownloadSaver.prototype.save = function(text,method,callback,options) {
 | |
| 	options = options || {};
 | |
| 	// Get the current filename
 | |
| 	var filename = options.variables.filename;
 | |
| 	if(!filename) {
 | |
| 		var p = document.location.pathname.lastIndexOf("/");
 | |
| 		if(p !== -1) {
 | |
| 			filename = document.location.pathname.substr(p+1);
 | |
| 		}
 | |
| 	}
 | |
| 	if(!filename) {
 | |
| 		filename = "tiddlywiki.html";
 | |
| 	}
 | |
| 	// Set up the link
 | |
| 	var link = document.createElement("a");
 | |
| 	link.setAttribute("target","_blank");
 | |
| 	link.setAttribute("rel","noopener noreferrer");
 | |
| 	if(Blob !== undefined) {
 | |
| 		var blob = new Blob([text], {type: "text/html"});
 | |
| 		link.setAttribute("href", URL.createObjectURL(blob));
 | |
| 	} else {
 | |
| 		link.setAttribute("href","data:text/html," + encodeURIComponent(text));
 | |
| 	}
 | |
| 	link.setAttribute("download",filename);
 | |
| 	document.body.appendChild(link);
 | |
| 	link.click();
 | |
| 	document.body.removeChild(link);
 | |
| 	// Callback that we succeeded
 | |
| 	callback(null);
 | |
| 	return true;
 | |
| };
 | |
| 
 | |
| /*
 | |
| Information about this saver
 | |
| */
 | |
| DownloadSaver.prototype.info = {
 | |
| 	name: "download",
 | |
| 	priority: 100
 | |
| };
 | |
| 
 | |
| Object.defineProperty(DownloadSaver.prototype.info, "capabilities", {
 | |
| 	get: function() {
 | |
| 		var capabilities = ["save", "download"];
 | |
| 		if(($tw.wiki.getTextReference("$:/config/DownloadSaver/AutoSave") || "").toLowerCase() === "yes") {
 | |
| 			capabilities.push("autosave");
 | |
| 		}
 | |
| 		return capabilities;
 | |
| 	}
 | |
| });
 | |
| 
 | |
| /*
 | |
| Static method that returns true if this saver is capable of working
 | |
| */
 | |
| exports.canSave = function(wiki) {
 | |
| 	return document.createElement("a").download !== undefined;
 | |
| };
 | |
| 
 | |
| /*
 | |
| Create an instance of this saver
 | |
| */
 | |
| exports.create = function(wiki) {
 | |
| 	return new DownloadSaver(wiki);
 | |
| };
 | |
| 
 | |
| })();
 |