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)
*/