| 1 |
var autosaved_form;
|
| 2 |
|
| 3 |
if (Drupal.jsEnabled) {
|
| 4 |
$(document).ready(function() {
|
| 5 |
$('body').append('<div id="autosave-status"><span id="status"></span><span id="operations"> \
|
| 6 |
<span id="view"><a href="#">View</a></span> \
|
| 7 |
<span id="ignore"><a href="#" title="Ignore/Delete Saved Form">Ignore</a></span> \
|
| 8 |
<span id="keep"><a href="#" title="Keep Saved Form - Revert to Saved">Keep</a></span></span></div>');
|
| 9 |
autosaved = Drupal.settings.autosave;
|
| 10 |
autosaved_form_id = 'node-form';
|
| 11 |
|
| 12 |
if (autosaved.serialized) {
|
| 13 |
$('#autosave-status #keep').css('display', 'none').css('visibility', 'hidden');
|
| 14 |
$('#autosave-status #view a').click(function() {
|
| 15 |
if ($(this).html() == 'View') {
|
| 16 |
$('#' + autosaved_form_id).formHash(autosaved.serialized);
|
| 17 |
|
| 18 |
if (Drupal.settings.autosave.wysiwyg) {
|
| 19 |
// need to loop through any WYSIWYG editor fields and update the visible iframe fields with hidden field content
|
| 20 |
for (var instance in Drupal.wysiwyg.instances) {
|
| 21 |
Drupal.wysiwyg.instances[instance].setContent($('#' + instance).val());
|
| 22 |
}
|
| 23 |
}
|
| 24 |
$('#' + autosaved_form_id).focus();
|
| 25 |
$(this).html('Reset');
|
| 26 |
$('#autosave-status #keep').css('display', 'inline').css('visibility', 'visible');
|
| 27 |
$('#autosave-status #keep a').html('Keep');
|
| 28 |
}
|
| 29 |
else if ($(this).html() == 'Reset') {
|
| 30 |
form = document.getElementById(autosaved_form_id);
|
| 31 |
form.reset();
|
| 32 |
$('#autosave-status #keep').css('display', 'none').css('visibility', 'hidden');
|
| 33 |
$(this).html('View');
|
| 34 |
}
|
| 35 |
return false;
|
| 36 |
});
|
| 37 |
$('#autosave-status #ignore a').click(function() {
|
| 38 |
$('#autosave-status').fadeOut('slow');
|
| 39 |
form = document.getElementById(autosaved_form_id);
|
| 40 |
form.reset();
|
| 41 |
$('#autosave-status #operations').css('display', 'none').css('visibility', 'hidden');
|
| 42 |
Drupal.attachAutosave();
|
| 43 |
return false;
|
| 44 |
});
|
| 45 |
$('#autosave-status #keep a').click(function() {
|
| 46 |
$('#autosave-status').fadeOut('slow');
|
| 47 |
form = document.getElementById(autosaved_form_id);
|
| 48 |
$('#autosave-status #operations').css('display', 'none').css('visibility', 'hidden');
|
| 49 |
Drupal.attachAutosave();
|
| 50 |
return false;
|
| 51 |
});
|
| 52 |
$('#autosave-status #status').html('This form was autosaved on ' + autosaved.saved_date);
|
| 53 |
$('#autosave-status').slideDown();
|
| 54 |
}
|
| 55 |
// There are no autosaved forms, continue with autosave.
|
| 56 |
else {
|
| 57 |
Drupal.attachAutosave();
|
| 58 |
}
|
| 59 |
});
|
| 60 |
}
|
| 61 |
|
| 62 |
Drupal.saveForm = function() {
|
| 63 |
if (Drupal.settings.autosave.wysiwyg) {
|
| 64 |
// need to loop through any WYSIWYG editor fields and update the real (hidden) text fields before saving
|
| 65 |
for (var instance in Drupal.wysiwyg.instances) {
|
| 66 |
if (Drupal.wysiwyg.instances[instance].editor != 'none') {
|
| 67 |
var content = Drupal.wysiwyg.instances[instance].getContent();
|
| 68 |
$('#' + instance).val(content);
|
| 69 |
}
|
| 70 |
}
|
| 71 |
}
|
| 72 |
|
| 73 |
var serialized = $('#node-form').formHash();
|
| 74 |
serialized['q'] = Drupal.settings.autosave.q;
|
| 75 |
$.ajax({
|
| 76 |
url: Drupal.settings.basePath + "autosave/handler",
|
| 77 |
type: "POST",
|
| 78 |
dataType: "xml/html/script/json",
|
| 79 |
data: serialized,
|
| 80 |
complete: function(XMLHttpRequest, textStatus) {
|
| 81 |
Drupal.displaySaved();
|
| 82 |
Drupal.attachAutosave();
|
| 83 |
}
|
| 84 |
});
|
| 85 |
}
|
| 86 |
|
| 87 |
Drupal.attachAutosave = function() {
|
| 88 |
setTimeout('Drupal.saveForm()', Drupal.settings.autosave.period * 1000);
|
| 89 |
}
|
| 90 |
|
| 91 |
Drupal.displaySaved = function() {
|
| 92 |
$('#autosave-status #status').html('Form autosaved.');
|
| 93 |
$('#autosave-status #operations').css('display', 'none').css('visibility', 'hidden');
|
| 94 |
$('#autosave-status').slideDown();
|
| 95 |
setTimeout("$('#autosave-status').fadeOut('slow')", 3000);
|
| 96 |
}
|
| 97 |
|