diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/definition.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/definition.post.json.js index 09a70d2eec..22eb0f5371 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/definition.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/definition.post.json.js @@ -94,11 +94,13 @@ function main() var formModel = {}; formModel.data = {}; - // TODO: retrieve the item URL from the response? - formModel.data.item = '/api/formdefinitions'; - // TODO: look for overridden submission url - formModel.data.submissionUrl = '/api/' + itemKind + '/' + itemId + '/formprocessor'; - formModel.data.type = formScriptObj.type; + formModel.data.item = formScriptObj.itemUrl; + formModel.data.type = formScriptObj.itemType; + formModel.data.submissionUrl = formScriptObj.submissionUrl; + if (formScriptObj.submissionUrl === null) + { + formModel.data.submissionUrl = '/api/' + itemKind + '/' + itemId + '/formprocessor'; + } formModel.data.definition = {}; formModel.data.definition.fields = []; @@ -106,7 +108,7 @@ function main() // We're explicitly listing the object fields of FieldDefinition.java and its subclasses here. // I don't see a way to get these dynamically at runtime. var supportedBaseFieldNames = ['name', 'label', 'description', 'binding', - 'defaultValue', 'group', 'protectedField']; + 'defaultValue', 'dataKeyName', 'group', 'protectedField']; var supportedPropertyFieldNames = ['dataType', 'mandatory', 'repeats', 'constraints']; var supportedAssociationFieldNames = ['endpointType', 'endpointDirection', @@ -144,13 +146,13 @@ function main() if (value instanceof java.util.Date) { - formModel.data.formData[k.replace(/:/g, "_")] = utils.toISO8601(value); + formModel.data.formData[k] = utils.toISO8601(value); } // There is no need to handle java.util.List instances here as they are // returned from ScriptFormData.java as Strings else { - formModel.data.formData[k.replace(/:/g, "_")] = value; + formModel.data.formData[k] = value; } } diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.js b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.js index bce05d17b1..cceb1343fa 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.js @@ -15,10 +15,6 @@ function main() // persist the submitted data using the most appropriate data set if (typeof formdata !== "undefined") { - // The model.data is set here to allow the rendering of a simple result page. - // TODO This should be removed when the POST is working. - model.data = formdata; - // Note: This formdata is org/alfresco/web/scripts/servlet/FormData.java if (logger.isLoggingEnabled()) { @@ -29,9 +25,7 @@ function main() var repoFormData = new Packages.org.alfresco.repo.forms.FormData(); for (var i = 0; i < formdata.fields.length; i++) { - // Replace the first 2 underscores with colons. - var alteredName = formdata.fields[i].name.replaceFirst("_", ":").replaceFirst("_", ":"); - repoFormData.addData(alteredName, formdata.fields[i].value); + repoFormData.addData(formdata.fields[i].name, formdata.fields[i].value); } formService.saveForm(itemKind, itemId, repoFormData); diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.json.js b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.json.js index af9d0d142e..26f9f4fd6f 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.json.js +++ b/config/alfresco/templates/webscripts/org/alfresco/repository/forms/form.post.json.js @@ -31,10 +31,8 @@ function main() var jsonKeys = json.keys(); for ( ; jsonKeys.hasNext(); ) { - // Replace the first 2 underscores with colons. var nextKey = jsonKeys.next(); - var alteredKey = nextKey.replaceFirst("_", ":").replaceFirst("_", ":"); - repoFormData.addData(alteredKey, json.get(nextKey)); + repoFormData.addData(nextKey, json.get(nextKey)); } try diff --git a/source/java/org/alfresco/repo/web/scripts/forms/FormRestApiGet_Test.java b/source/java/org/alfresco/repo/web/scripts/forms/FormRestApiGet_Test.java index fd9809f0a5..ccd051441b 100644 --- a/source/java/org/alfresco/repo/web/scripts/forms/FormRestApiGet_Test.java +++ b/source/java/org/alfresco/repo/web/scripts/forms/FormRestApiGet_Test.java @@ -126,8 +126,7 @@ public class FormRestApiGet_Test extends AbstractTestFormRestApi Response rsp = sendRequest(new PostRequest(FORM_DEF_URL, jsonPostString, APPLICATION_JSON), 200); String jsonResponseString = rsp.getContentAsString(); - // At this point the formData names have underscores - + JSONObject jsonParsedObject = new JSONObject(new JSONTokener(jsonResponseString)); assertNotNull(jsonParsedObject); @@ -137,9 +136,7 @@ public class FormRestApiGet_Test extends AbstractTestFormRestApi List keys = new ArrayList(); for (Iterator iter = formDataObject.keys(); iter.hasNext(); ) { - // None of the formData keys should have a colon in them. We are - // replacing colons in field names with underscores. - String nextFieldName = (String)iter.next(); + String nextFieldName = (String)iter.next(); assertEquals("Did not expect to find a colon char in " + nextFieldName, -1, nextFieldName.indexOf(':')); keys.add(nextFieldName); @@ -213,10 +210,16 @@ public class FormRestApiGet_Test extends AbstractTestFormRestApi JSONArray fieldsArray = (JSONArray)definitionObject.get("fields"); assertEquals("Expected 2 fields", 2, fieldsArray.length()); + // get the name and title definitions + JSONObject nameField = (JSONObject)fieldsArray.get(0); + JSONObject titleField = (JSONObject)fieldsArray.get(1); + String nameFieldDataKey = nameField.getString("dataKeyName"); + String titleFieldDataKey = titleField.getString("dataKeyName"); + // get the data and check it JSONObject formDataObject = (JSONObject)rootDataObject.get("formData"); - assertNotNull("Expected to find cm:name data", formDataObject.get("prop_cm_name")); - assertNotNull("Expected to find cm:title data", formDataObject.get("prop_cm_title")); + assertNotNull("Expected to find cm:name data", formDataObject.get(nameFieldDataKey)); + assertNotNull("Expected to find cm:title data", formDataObject.get(titleFieldDataKey)); assertEquals(TEST_FORM_TITLE, formDataObject.get("prop_cm_title")); } @@ -250,10 +253,16 @@ public class FormRestApiGet_Test extends AbstractTestFormRestApi JSONArray fieldsArray = (JSONArray)definitionObject.get("fields"); assertEquals("Expected 3 fields", 3, fieldsArray.length()); + // get the name and title definitions + JSONObject nameField = (JSONObject)fieldsArray.get(0); + JSONObject titleField = (JSONObject)fieldsArray.get(1); + String nameFieldDataKey = nameField.getString("dataKeyName"); + String titleFieldDataKey = titleField.getString("dataKeyName"); + // get the data and check it JSONObject formDataObject = (JSONObject)rootDataObject.get("formData"); - assertNotNull("Expected to find cm:name data", formDataObject.get("prop_cm_name")); - assertNotNull("Expected to find cm:title data", formDataObject.get("prop_cm_title")); + assertNotNull("Expected to find cm:name data", formDataObject.get(nameFieldDataKey)); + assertNotNull("Expected to find cm:title data", formDataObject.get(titleFieldDataKey)); assertEquals(TEST_FORM_TITLE, formDataObject.get("prop_cm_title")); } }