[Jifty-commit] r4112 - jifty/trunk/share/web/static/js

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Thu Sep 13 18:40:16 EDT 2007


Author: clkao
Date: Thu Sep 13 18:40:15 2007
New Revision: 4112

Modified:
   jifty/trunk/share/web/static/js/jifty.js

Log:
Patch by Alex to make sp_submit_form to be happier with J:V vars.

Modified: jifty/trunk/share/web/static/js/jifty.js
==============================================================================
--- jifty/trunk/share/web/static/js/jifty.js	(original)
+++ jifty/trunk/share/web/static/js/jifty.js	Thu Sep 13 18:40:15 2007
@@ -600,6 +600,9 @@
          && ((element.nodeName != 'A')     || (! element.getAttribute("name"))))
             return $H();
 
+        if (element.getAttribute("name").length == 0)
+            return $H();
+
         var extras = $H();
 
         // Split other arguments out, if we're on a button
@@ -1494,10 +1497,38 @@
     var form = Form.Element.getForm(elt);
     var elements = Form.getElements(form);
 
-    var args = {};
-    for (var i = 0; i < elements.length; i++)
-	args[elements[i].name] = $F(elements[i]);
+    // Three things need to get merged -- hidden defaults, defaults
+    // from buttons, and form values.  Hence, we build up three lists
+    // and then merge them.
+    var hiddens = $H();
+    var buttons = $H();
+    var inputs = $H()
+    for (var i = 0; i < elements.length; i++) {
+        var e = elements[i];
+        var parsed = e.getAttribute("name").match(/^J:V-region-__page\.(.*)/);
+        var extras = Form.Element.buttonArguments(e);
+        if (extras.keys().length > 0) {
+            // Button with values
+            for (var j = 0; j < extras.keys().length; j++) {
+                // Might also have J:V mappings on it
+                parsed = extras.keys()[j].match(/^J:V-region-__page\.(.*)/);
+                if ((parsed != null) && (parsed.length == 2)) {
+                    buttons[parsed[1]] = extras.values()[j];
+                } else if (extras.keys()[j].length > 0) {
+                    inputs[extras.keys()[j]] = extras.values()[j];
+                }
+                
+            }
+        } else if ((parsed != null) && (parsed.length == 2)) {
+            // Hidden default
+            hiddens[parsed[1]] = $F(e);
+        } else if (e.name.length > 0) {
+            // Straight up values
+            inputs[e.name] = $F(e);
+        }
+    }
 
+    var args = hiddens.merge(buttons.merge(inputs));
     if(event.ctrlKey||event.metaKey||event.altKey||event.shiftKey) return true;
     return update( {'continuation':{},'actions':null,'fragments':[{'mode':'Replace','args':args,'region':'__page','path': submit_to}]}, elt );
 }


More information about the Jifty-commit mailing list