[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / prive / javascript / jquery.autosave.js
diff --git a/www/prive/javascript/jquery.autosave.js b/www/prive/javascript/jquery.autosave.js
new file mode 100644 (file)
index 0000000..e9619a8
--- /dev/null
@@ -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);
+