diff --git a/config/alfresco/model/datalistModel.xml b/config/alfresco/model/datalistModel.xml index e432feac13..efd754fcd8 100644 --- a/config/alfresco/model/datalistModel.xml +++ b/config/alfresco/model/datalistModel.xml @@ -37,19 +37,11 @@ d:text - - - sys:temporary - Data List parent type cm:content - - - sys:temporary - diff --git a/source/java/org/alfresco/repo/forms/script/ScriptFormService.java b/source/java/org/alfresco/repo/forms/script/ScriptFormService.java index 6158635e34..5cd1c31d3b 100644 --- a/source/java/org/alfresco/repo/forms/script/ScriptFormService.java +++ b/source/java/org/alfresco/repo/forms/script/ScriptFormService.java @@ -124,8 +124,9 @@ public class ScriptFormService extends BaseScopableProcessorExtension * @param itemId The identifier of the item to retrieve a form for * @param postData The post data, this can be a Map of name value * pairs, a webscript FormData object or a JSONObject + * @return The persisted object */ - public void saveForm(String itemKind, String itemId, Object postData) + public Object saveForm(String itemKind, String itemId, Object postData) { // A note on data conversion as passed in to this method: // Each of the 3 submission methods (multipart/formdata, JSON Post and @@ -145,9 +146,9 @@ public class ScriptFormService extends BaseScopableProcessorExtension { logger.debug("ScriptFormService.saveForm: postData not instanceof FormData."); } - return; + return null; } - formService.saveForm(new Item(itemKind, itemId), dataForFormService); + return formService.saveForm(new Item(itemKind, itemId), dataForFormService); } } diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java index 4d2057eb28..35e1bb50b5 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptNode.java +++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java @@ -54,8 +54,10 @@ import org.alfresco.repo.workflow.jscript.JscriptWorkflowInstance; import org.alfresco.scripts.ScriptException; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.Action; +import org.alfresco.service.cmr.dictionary.ClassDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; +import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.cmr.lock.LockStatus; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; @@ -806,7 +808,25 @@ public class ScriptNode implements Serializable, Scopeable, NamespacePrefixResol return this.properties; } - + + /** + * Return all the property names defined for this node's type as an array. + * + * @param useShortQNames if true short-form qnames will be returned, else long-form. + * @return Array of property names for this node's type. + */ + public Scriptable getTypePropertyNames(boolean useShortQNames) + { + Set props = this.services.getDictionaryService().getClass(this.getQNameType()).getProperties().keySet(); + Object[] result = new Object[props.size()]; + int count = 0; + for (QName qname : props) + { + result[count++] = useShortQNames ? getShortQName(qname).toString() : qname.toString(); + } + return Context.getCurrentContext().newArray(this.scope, result); + } + /** * @return true if this Node is a container (i.e. a folder) */