mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-30 13:29:56 +00:00
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
|
/*\
|
||
|
title: $:/core/modules/savers/custom.js
|
||
|
type: application/javascript
|
||
|
module-type: saver
|
||
|
|
||
|
Looks for `window.$tw.customSaver` first on the current window, then
|
||
|
on the parent window (of an iframe). If present, the saver must define
|
||
|
save: function(text,method,callback) { ... }
|
||
|
and the saver may define
|
||
|
priority: number
|
||
|
\*/
|
||
|
(function(){
|
||
|
|
||
|
/*jslint node: true, browser: true */
|
||
|
/*global $tw: false */
|
||
|
"use strict";
|
||
|
|
||
|
var findSaver = function(window) {
|
||
|
try {
|
||
|
return window && window.$tw && window.$tw.customSaver;
|
||
|
} catch (err) {
|
||
|
// Catching the exception is the most reliable way to detect cross-origin iframe errors.
|
||
|
// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw
|
||
|
// Uncaught DOMException: Permission denied to access property "$tw" on cross-origin object
|
||
|
console.log({ msg: "custom saver is disabled", reason: err });
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
var saver = findSaver(window) || findSaver(window.parent) || {};
|
||
|
|
||
|
var CustomSaver = function(wiki) {
|
||
|
};
|
||
|
|
||
|
CustomSaver.prototype.save = function(text,method,callback) {
|
||
|
return saver.save(text, method, callback);
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
Information about this saver
|
||
|
*/
|
||
|
CustomSaver.prototype.info = {
|
||
|
name: "custom",
|
||
|
priority: saver.priority || 4000,
|
||
|
capabilities: ["save","autosave"]
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
Static method that returns true if this saver is capable of working
|
||
|
*/
|
||
|
exports.canSave = function(wiki) {
|
||
|
return !!(saver.save);
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
Create an instance of this saver
|
||
|
*/
|
||
|
exports.create = function(wiki) {
|
||
|
return new CustomSaver(wiki);
|
||
|
};
|
||
|
})();
|