public_html/js public_html/skins

Aleksander Machniak machniak at kolabsys.com
Fri Mar 16 19:58:05 CET 2012


 public_html/js/kolab_admin.js   |    9 ++++++++-
 public_html/skins/default/ui.js |   11 +++++------
 2 files changed, 13 insertions(+), 7 deletions(-)

New commits:
commit 64725457a91cac1db5303f20ba0c62e46ab19632
Author: Aleksander Machniak <alec at alec.pl>
Date:   Fri Mar 16 19:57:22 2012 +0100

    Fix listelement serialization (#637)

diff --git a/public_html/js/kolab_admin.js b/public_html/js/kolab_admin.js
index 5bddf5d..bdcf1e2 100644
--- a/public_html/js/kolab_admin.js
+++ b/public_html/js/kolab_admin.js
@@ -437,7 +437,7 @@ function kolab_admin()
     $('textarea[data-type="list"]', form).each(function() {
       var name = this.name;
       // maybe already converted by skin engine
-      if (json[name] && !$.isArray(json[name]))
+      if (!json[name] || !$.isArray(json[name]))
         json[name] = $(this).val().split("\n");
     });
 
@@ -618,3 +618,10 @@ function kolab_admin()
 };
 
 var kadm = new kolab_admin();
+
+// Add escape() method to RegExp object
+// http://dev.rubyonrails.org/changeset/7271
+RegExp.escape = function(str)
+{
+  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
+};
diff --git a/public_html/skins/default/ui.js b/public_html/skins/default/ui.js
index 5645f7e..850eb93 100644
--- a/public_html/skins/default/ui.js
+++ b/public_html/skins/default/ui.js
@@ -141,18 +141,17 @@ function form_serialize(data)
   var form = $(data.id);
 
   // replace some textarea fields with pretty/smart input lists
-  $('textarea[data-type="list"]', form).not('disabled')
-    .each(function() {
-    var i, value = [], re = RegExp('^' + this.name + '\[[0-9]+\]$');
+  $('textarea[data-type="list"]', form).not('disabled').each(function() {
+    var i, v, value = [],
+      re = RegExp('^' + RegExp.escape(this.name) + '\[[0-9]+\]$');
 
     for (i in data.json) {
       if (i.match(re)) {
-        if (i.value)
-          value.push(i.value);
+        if (v = $('input[name="'+i+'"]', form).val())
+          value.push(v);
         delete data.json[i];
       }
     }
-
     data.json[this.name] = value;
   });
 





More information about the commits mailing list