blob: 1d21426b0a2de8fc9625f0fb0cd603cb5b780e7a [file] [log] [blame]
function UnsavedChanges(editor) {
// Keep a copy of the editor to perform any necessary functions
var editor = editor;
// Private variable for storing the unmodified contents. This is necessary
// because whenDocReady needs a closure to reference this object.
var defaultValue;
// Variable to allow the protector to be bypassed in the case of submit.
var bypass = false;
var protector = function(event) {
if (bypass) {
return;
}
if (defaultValue != (editor.getEditorContent ? editor.getEditorContent() : editor.outwardHtml(editor.getHTML()))) {
// This needs to use _lc for multiple languages
var dirty_prompt = Xinha._lc('You have unsaved changes in the editor', 'UnsavedChanges');
event.returnValue = dirty_prompt;
return dirty_prompt;
}
}
this.onBeforeSubmit = function() {
bypass = true;
}
// Setup to be called when the plugin is loaded.
// We need a copy of the initial content for detection to work properly, so
// we will setup a callback for when the document is ready to store an
// unmodified copy of the content.
this.onGenerate = function() {
editor.whenDocReady(function () {
// Copy the original, unmodified contents to check for changes
defaultValue = defaultValue || (editor.getEditorContent ? editor.getEditorContent() : editor.outwardHtml(editor.getHTML()));
// Set up the blocker
Xinha._addEvent(window, 'beforeunload', protector);
});
}
}
// An object containing metadata for this plugin
UnsavedChanges._pluginInfo = {
name:'UnsavedChanges',
version:'3.7',
developer:'Douglas Mayle',
developer_url:'http://douglas.mayle.org',
c_owner:'Douglas Mayle',
sponsor:'The Open Planning Project',
sponsor_url:'http://topp.openplans.org',
license:'LGPL'
}