--- forms.js~ 2007-02-16 14:58:32.000000000 +0200 +++ forms.js 2007-02-22 15:43:11.000000000 +0200 @@ -32,6 +32,7 @@ kukit.fo.dictprefix = '' kukit.fo.dictseparator = '.' kukit.fo.dictpostfix = ':record' +kukit.fo.listpostfix = ':list' kukit.fo.FormQueryElem = function(name, value) { this.name = name; @@ -47,18 +48,23 @@ }; kukit.fo.FormQuery.prototype.appendElem = function(name, value) { + var retarr = new Array(); if (typeof(value) == 'object') { // Special marshalling of dicts for (var key in value) { + // Assume dictionary var qkey = kukit.fo.dictprefix + name + kukit.fo.dictseparator + key + kukit.fo.dictpostfix; var elem = new kukit.fo.FormQueryElem(qkey, value[key]); this.l.push(elem); + retarr.push(value[key]); } } else { // normal strings var elem = new kukit.fo.FormQueryElem(name, value); this.l.push(elem); + retarr.push(value); } + return retarr; }; kukit.fo.FormQuery.prototype.encode = function() { @@ -107,7 +113,7 @@ }); }; -kukit.fo.getValueOfFormElement = function(element) { +kukit.fo._getValueOfFormElement = function(element) { // Returns the value of the form element / or null // First: update the field in case an editor is lurking // in the background @@ -141,12 +147,153 @@ return value; }; +kukit.fo.getValueOfFormElement = function(form, element) { + if (!element) + return; + + if (element.name == undefined) + return; + + // Rudimentary de-marshaller + if ((element.name) && (element.name.substr(element.name.length-5, element.name.length-1) == ':list')) + { + var value = new Array(); + var elements = form.elements; + for (var y=0; y