in src/main/resources/system/sling.js [305:370]
Sling._setFormValues = function(form, path, tree) {
var result = new Object();
/** TODO: deal with abolute paths?
* TODO: deal with @ValueFrom
*/
if (!path) return;
form.setAttribute("action", path);
if (!tree) {
tree=Sling.getContent(path,1);
}
var elems=form.elements;
var i=0;
formfieldprefix="";
while (elems.length > i) {
var elem=elems[i];
var a=elem.name;
if (a.indexOf("./")==0) {
formfieldprefix="./";
break;
}
i++;
}
var i=0;
while (elems.length > i) {
var elem=elems[i];
var a=elem.name;
if (a.indexOf("/")==0) {
var nodepath=a.substring(0,a.lastIndexOf("/"));
var propname=a.substring(a.lastIndexOf("/")+1);
var node=Sling.getContent(nodepath);
var propval=node[propname];
} else if (a.indexOf(formfieldprefix)==0) {
var propname=a.substring(formfieldprefix.length);
var propval=tree[propname];
}
if (propval) {
if (elem.type == "file") {
// cannot edit uplodaded files for now
} else if (elem.type == "checkbox") {
var vals;
if (typeof(propval)=="object") vals=propval;
else {
vals=new Array();
vals[0]=propval;
}
var j=0;
while (vals.length > j) {
if (vals[j] == elem.value) elem.checked=true;
j++;
}
} else {
elem.value=propval;
}
}
i++;
}
}