From b3027e619985632c5b668d02445a97ed5ac0aba9 Mon Sep 17 00:00:00 2001 From: buggyj Date: Fri, 26 Sep 2014 09:36:24 +0200 Subject: [PATCH] added backup facility --- content/inject.js | 3 ++- content/overlay.js | 30 ++++++++++++++++++++++++++---- tiddlyfox.xpi | Bin 12787 -> 21807 bytes 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/content/inject.js b/content/inject.js index 3c99e97..b6c9666 100644 --- a/content/inject.js +++ b/content/inject.js @@ -15,6 +15,7 @@ The JavaScript in this file is injected into each TiddlyWiki page that loads var message = document.createElement("div"); message.setAttribute("data-tiddlyfox-path",path); message.setAttribute("data-tiddlyfox-content",content); + message.setAttribute("data-tiddlyfox-tw2","true"); messageBox.appendChild(message); // Create and dispatch the custom event to the extension var event = document.createEvent("Events"); @@ -52,4 +53,4 @@ The JavaScript in this file is injected into each TiddlyWiki page that loads window.convertUriToUTF8 = injectedConvertUriToUTF8; window.convertUnicodeToFileFormat = injectedConvertUnicodeToFileFormat; -})(); \ No newline at end of file +})(); diff --git a/content/overlay.js b/content/overlay.js index 030213a..3631f13 100644 --- a/content/overlay.js +++ b/content/overlay.js @@ -80,8 +80,20 @@ var TiddlyFox = { // Attach the event handler to the message box messageBox.addEventListener("tiddlyfox-save-file",TiddlyFox.onSaveFile,false); }, + + moveFile: function(sourcefile,destdir,destfile) { + var file = Components.classes["@mozilla.org/file/local;1"] + .createInstance(Components.interfaces.nsILocalFile); + file.initWithPath(sourcefile); + + var dir = Components.classes["@mozilla.org/file/local;1"] + .createInstance(Components.interfaces.nsILocalFile); + dir.initWithPath(destdir); + + file.moveTo(dir,destfile); + }, - saveFile: function(filePath,content) { + saveFile: function(filePath,content,destdir,destfile) { // Attempt to convert the filepath to a proper UTF-8 string try { var converter = Components.classes["@mozilla.org/intl/utf8converterservice;1"].getService(Components.interfaces.nsIUTF8ConverterService); @@ -90,6 +102,9 @@ var TiddlyFox = { } // Save the file try { + if (destdir) { + TiddlyFox.moveFile(filePath,destdir,destfile); + } var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(filePath); if(!file.exists()) @@ -112,10 +127,17 @@ var TiddlyFox = { // Get the details from the message var message = event.target, path = message.getAttribute("data-tiddlyfox-path"), - content = message.getAttribute("data-tiddlyfox-content"); + content = message.getAttribute("data-tiddlyfox-content"), + backupdir = message.getAttribute("data-tiddlyfox-backupdir"), + backupfile = message.getAttribute("data-tiddlyfox-backupfile"), + tw2 = message.getAttribute("data-tiddlyfox-tw2"); // Save the file - TiddlyFox.saveFile(path,content); - // Remove the message element from the message box + if (tw2) { + TiddlyFox.saveFile(path,content); + } + else { + TiddlyFox.saveFile(path,content,backupdir,backupfile); + } message.parentNode.removeChild(message); // Send a confirmation message var event = document.createEvent("Events"); diff --git a/tiddlyfox.xpi b/tiddlyfox.xpi index 9d3952c95560c4fea099a69729154fc937631b92..896b6fa0d3ac543791f4d902fd4052c5309baad9 100644 GIT binary patch delta 13507 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 QcX3&OEouOml-T?BFQ7HOA^-pY