X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fprive%2Fjavascript%2Fjquery.autosave.js;fp=www%2Fprive%2Fjavascript%2Fjquery.autosave.js;h=e9619a8de08e9176ac304bf40323087f70a35c85;hb=a33c2ba9d919664b3bb0f565f8e9a8b9d8530cdb;hp=0000000000000000000000000000000000000000;hpb=8945248b3d948385798d9aa355c70e7089aca2b3;p=lhc%2Fweb%2Fclavette_www.git diff --git a/www/prive/javascript/jquery.autosave.js b/www/prive/javascript/jquery.autosave.js new file mode 100644 index 0000000..e9619a8 --- /dev/null +++ b/www/prive/javascript/jquery.autosave.js @@ -0,0 +1,57 @@ +/** + * 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); +