spip_nursit/prive/javascript/jquery.autosave.js
2023-06-01 17:30:12 +02:00

56 lines
1.5 KiB
JavaScript

/**
* autosave plugin
*
* Copyright (c) 2009-2016 Fil (fil@rezo.net)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
/*
* Usage: $("form").autosave({options...});
* to use with SPIP's action/session.php
*/
(function($){
$.fn.autosave = function(opt) {
opt = $.extend({
url: window.location,
confirm: false,
confirmstring: 'Sauvegarder ?'
},opt);
var save_changed = function(){
$('form.autosavechanged')
.each(function(){
if (!opt.confirm || confirm(opt.confirmstring)) {
var contenu = $(this).serialize();
// ajoutons un timestamp
var d=new Date();
contenu = contenu + "&__timestamp=" + Math.round(d.getTime()/1000);
$.post(opt.url, {
'action': 'session',
'var': 'autosave_' + $('input[name=autosave]', this).val(),
'val': contenu
});
}
}).removeClass('autosavechanged');
}
$(window).on('unload', save_changed);
return this
.on('keyup', function() {
$(this).addClass('autosavechanged');
})
.on('change', function() {
$(this).addClass('autosavechanged');
save_changed();
})
.on('submit',function() {
save_changed();
/* trop agressif : exemple du submit previsu forum, ou des submit suivant/precedent d'un cvt multipage
on sauvegarde toujours, et le serveur videra quand il faudra */
/*$(this).removeClass('autosavechanged')*/;
});
}
})(jQuery);