1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/spip_ynh.git synced 2024-09-03 20:25:59 +02:00
spip_ynh/sources/prive/javascript/jquery.autosave.js
2015-04-28 17:10:23 +02:00

57 lines
1.4 KiB
JavaScript

/**
* autosave plugin
*
* Copyright (c) 2009-2014 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=" + d.getTime();
$.post(opt.url, {
'action': 'session',
'var': 'autosave_' + $('input[name=autosave]', this).val(),
'val': contenu
});
}
}).removeClass('autosavechanged');
}
$(window)
.bind('unload',save_changed);
return this
.bind('keyup', function() {
$(this).addClass('autosavechanged');
})
.bind('change', function() {
$(this).addClass('autosavechanged');
save_changed();
})
.bind('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);