mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
MOB-1209: Add ability to pass optional context when generating a form. Also added a sample template to demonstrate a custom set layout.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@15802 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
package org.alfresco.repo.forms;
|
package org.alfresco.repo.forms;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,6 +46,17 @@ public interface FormService
|
|||||||
*/
|
*/
|
||||||
public Form getForm(Item item);
|
public Form getForm(Item item);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a form representation of the given item,
|
||||||
|
* all known fields for the item are included.
|
||||||
|
*
|
||||||
|
* @param item The item to get a form for
|
||||||
|
* @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
|
* @return The Form representation
|
||||||
|
*/
|
||||||
|
public Form getForm(Item item, Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a form representation of the given item consisting
|
* Returns a form representation of the given item consisting
|
||||||
* only of the given fields.
|
* only of the given fields.
|
||||||
@@ -57,6 +69,20 @@ public interface FormService
|
|||||||
*/
|
*/
|
||||||
public Form getForm(Item item, List<String> fields);
|
public Form getForm(Item item, List<String> fields);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a form representation of the given item consisting
|
||||||
|
* only of the given fields.
|
||||||
|
*
|
||||||
|
* @param item The item to get a form for
|
||||||
|
* @param fields Restricted list of fields to include, null
|
||||||
|
* indicates all possible fields for the item
|
||||||
|
* should be included
|
||||||
|
* @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
|
* @return The Form representation
|
||||||
|
*/
|
||||||
|
public Form getForm(Item item, List<String> fields, Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a form representation of the given item consisting
|
* Returns a form representation of the given item consisting
|
||||||
* only of the given fields.
|
* only of the given fields.
|
||||||
@@ -73,6 +99,24 @@ public interface FormService
|
|||||||
*/
|
*/
|
||||||
public Form getForm(Item item, List<String> fields, List<String> forcedFields);
|
public Form getForm(Item item, List<String> fields, List<String> forcedFields);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a form representation of the given item consisting
|
||||||
|
* only of the given fields.
|
||||||
|
*
|
||||||
|
* @param item The item to get a form for
|
||||||
|
* @param fields Restricted list of fields to include, null
|
||||||
|
* indicates all possible fields for the item
|
||||||
|
* should be included
|
||||||
|
* @param forcedFields List of field names from 'fields' list
|
||||||
|
* that should be forcibly included, it is
|
||||||
|
* up to the form processor implementation
|
||||||
|
* to determine how to enforce this
|
||||||
|
* @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
|
* @return The Form representation
|
||||||
|
*/
|
||||||
|
public Form getForm(Item item, List<String> fields, List<String> forcedFields, Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persists the given form representation for the given item.
|
* Persists the given form representation for the given item.
|
||||||
*
|
*
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
package org.alfresco.repo.forms;
|
package org.alfresco.repo.forms;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.repo.forms.processor.FormProcessor;
|
import org.alfresco.repo.forms.processor.FormProcessor;
|
||||||
import org.alfresco.repo.forms.processor.FormProcessorRegistry;
|
import org.alfresco.repo.forms.processor.FormProcessorRegistry;
|
||||||
@@ -59,7 +60,15 @@ public class FormServiceImpl implements FormService
|
|||||||
*/
|
*/
|
||||||
public Form getForm(Item item)
|
public Form getForm(Item item)
|
||||||
{
|
{
|
||||||
return getForm(item, null, null);
|
return getForm(item, null, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.alfresco.repo.forms.FormService#getForm(org.alfresco.repo.forms.Item, java.util.Map)
|
||||||
|
*/
|
||||||
|
public Form getForm(Item item, Map<String, Object> context)
|
||||||
|
{
|
||||||
|
return getForm(item, null, null, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -67,13 +76,29 @@ public class FormServiceImpl implements FormService
|
|||||||
*/
|
*/
|
||||||
public Form getForm(Item item, List<String> fields)
|
public Form getForm(Item item, List<String> fields)
|
||||||
{
|
{
|
||||||
return getForm(item, fields, null);
|
return getForm(item, fields, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.alfresco.repo.forms.FormService#getForm(org.alfresco.repo.forms.Item, java.util.List, java.util.Map)
|
||||||
|
*/
|
||||||
|
public Form getForm(Item item, List<String> fields, Map<String, Object> context)
|
||||||
|
{
|
||||||
|
return getForm(item, fields, null, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.alfresco.repo.forms.FormService#getForm(org.alfresco.repo.forms.Item, java.util.List, java.util.List)
|
* @see org.alfresco.repo.forms.FormService#getForm(org.alfresco.repo.forms.Item, java.util.List, java.util.List)
|
||||||
*/
|
*/
|
||||||
public Form getForm(Item item, List<String> fields, List<String> forcedFields)
|
public Form getForm(Item item, List<String> fields, List<String> forcedFields)
|
||||||
|
{
|
||||||
|
return getForm(item, fields, forcedFields, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.alfresco.repo.forms.FormService#getForm(org.alfresco.repo.forms.Item, java.util.List, java.util.List, java.util.Map)
|
||||||
|
*/
|
||||||
|
public Form getForm(Item item, List<String> fields, List<String> forcedFields, Map<String, Object> context)
|
||||||
{
|
{
|
||||||
if (this.processorRegistry == null)
|
if (this.processorRegistry == null)
|
||||||
{
|
{
|
||||||
@@ -91,7 +116,7 @@ public class FormServiceImpl implements FormService
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return processor.generate(item, fields, forcedFields);
|
return processor.generate(item, fields, forcedFields, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1034,6 +1034,16 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest
|
|||||||
assertEquals("Expecting 'overwritten' value to be 'three'", "three", value);
|
assertEquals("Expecting 'overwritten' value to be 'three'", "three", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testFormContext() throws Exception
|
||||||
|
{
|
||||||
|
Map<String, Object> context = new HashMap<String, Object>(2);
|
||||||
|
context.put("nodeRef", this.folder);
|
||||||
|
context.put("name", "Gavin Cornwell");
|
||||||
|
|
||||||
|
Form form = this.formService.getForm(new Item(NODE_FORM_ITEM_KIND, this.document.toString()), context);
|
||||||
|
assertNotNull(form);
|
||||||
|
}
|
||||||
|
|
||||||
public void testJavascriptAPI() throws Exception
|
public void testJavascriptAPI() throws Exception
|
||||||
{
|
{
|
||||||
Map<String, Object> model = new HashMap<String, Object>();
|
Map<String, Object> model = new HashMap<String, Object>();
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
package org.alfresco.repo.forms.processor;
|
package org.alfresco.repo.forms.processor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.repo.forms.Form;
|
import org.alfresco.repo.forms.Form;
|
||||||
import org.alfresco.repo.forms.FormData;
|
import org.alfresco.repo.forms.FormData;
|
||||||
@@ -57,8 +58,11 @@ public interface Filter
|
|||||||
* @param fields Restricted list of fields to include
|
* @param fields Restricted list of fields to include
|
||||||
* @param forcedFields List of fields to forcibly include
|
* @param forcedFields List of fields to forcibly include
|
||||||
* @param form The Form object
|
* @param form The Form object
|
||||||
|
* @param @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
*/
|
*/
|
||||||
public void beforeGenerate(Object item, List<String> fields, List<String> forcedFields, Form form);
|
public void beforeGenerate(Object item, List<String> fields, List<String> forcedFields,
|
||||||
|
Form form, Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback used to indicate that a form has just been generated for
|
* Callback used to indicate that a form has just been generated for
|
||||||
@@ -73,8 +77,11 @@ public interface Filter
|
|||||||
* @param fields Restricted list of fields to include
|
* @param fields Restricted list of fields to include
|
||||||
* @param forcedFields List of fields to forcibly include
|
* @param forcedFields List of fields to forcibly include
|
||||||
* @param form The Form object
|
* @param form The Form object
|
||||||
|
* @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
*/
|
*/
|
||||||
public void afterGenerate(Object item, List<String> fields, List<String> forcedFields, Form form);
|
public void afterGenerate(Object item, List<String> fields, List<String> forcedFields,
|
||||||
|
Form form, Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback used to indicate that the given form data is about to be
|
* Callback used to indicate that the given form data is about to be
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
package org.alfresco.repo.forms.processor;
|
package org.alfresco.repo.forms.processor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.repo.forms.Form;
|
import org.alfresco.repo.forms.Form;
|
||||||
import org.alfresco.repo.forms.FormData;
|
import org.alfresco.repo.forms.FormData;
|
||||||
@@ -56,17 +57,12 @@ public abstract class FilteredFormProcessor extends AbstractFormProcessor
|
|||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
logger.debug("Set filter registry: " + this.filterRegistry + " for processor: " + this);
|
logger.debug("Set filter registry: " + this.filterRegistry + " for processor: " + this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Generates a Form for the given item.
|
* @see org.alfresco.repo.forms.processor.FormProcessor#generate(org.alfresco.repo.forms.Item, java.util.List, java.util.List, java.util.Map)
|
||||||
*
|
|
||||||
* @see org.alfresco.repo.forms.processor.FormProcessor#generate(org.alfresco.repo.forms.Item, java.util.List, java.util.List)
|
|
||||||
* @param item The item to generate a form for
|
|
||||||
* @param fields Restricted list of fields to include
|
|
||||||
* @param forcedFields List of fields to forcibly include
|
|
||||||
* @return The generated Form
|
|
||||||
*/
|
*/
|
||||||
public Form generate(Item item, List<String> fields, List<String> forcedFields)
|
public Form generate(Item item, List<String> fields, List<String> forcedFields,
|
||||||
|
Map<String, Object> context)
|
||||||
{
|
{
|
||||||
// get the typed object representing the item
|
// get the typed object representing the item
|
||||||
Object typedItem = getTypedItem(item);
|
Object typedItem = getTypedItem(item);
|
||||||
@@ -79,19 +75,19 @@ public abstract class FilteredFormProcessor extends AbstractFormProcessor
|
|||||||
{
|
{
|
||||||
for (Filter filter: this.filterRegistry.getFilters())
|
for (Filter filter: this.filterRegistry.getFilters())
|
||||||
{
|
{
|
||||||
filter.beforeGenerate(typedItem, fields, forcedFields, form);
|
filter.beforeGenerate(typedItem, fields, forcedFields, form, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// perform the actual generation of the form
|
// perform the actual generation of the form
|
||||||
internalGenerate(typedItem, fields, forcedFields, form);
|
internalGenerate(typedItem, fields, forcedFields, form, context);
|
||||||
|
|
||||||
// inform all regsitered filters the form has been generated
|
// inform all regsitered filters the form has been generated
|
||||||
if (this.filterRegistry != null)
|
if (this.filterRegistry != null)
|
||||||
{
|
{
|
||||||
for (Filter filter: this.filterRegistry.getFilters())
|
for (Filter filter: this.filterRegistry.getFilters())
|
||||||
{
|
{
|
||||||
filter.afterGenerate(typedItem, fields, forcedFields, form);
|
filter.afterGenerate(typedItem, fields, forcedFields, form, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,8 +151,11 @@ public abstract class FilteredFormProcessor extends AbstractFormProcessor
|
|||||||
* @param fields Restricted list of fields to include
|
* @param fields Restricted list of fields to include
|
||||||
* @param forcedFields List of fields to forcibly include
|
* @param forcedFields List of fields to forcibly include
|
||||||
* @param form The form object being generated
|
* @param form The form object being generated
|
||||||
|
* @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
*/
|
*/
|
||||||
protected abstract void internalGenerate(Object item, List<String> fields, List<String> forcedFields, Form form);
|
protected abstract void internalGenerate(Object item, List<String> fields, List<String> forcedFields,
|
||||||
|
Form form, Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persists the form data.
|
* Persists the form data.
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
package org.alfresco.repo.forms.processor;
|
package org.alfresco.repo.forms.processor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.repo.forms.Form;
|
import org.alfresco.repo.forms.Form;
|
||||||
import org.alfresco.repo.forms.FormData;
|
import org.alfresco.repo.forms.FormData;
|
||||||
@@ -67,9 +68,12 @@ public interface FormProcessor
|
|||||||
* that should be forcibly included, it is
|
* that should be forcibly included, it is
|
||||||
* up to the form processor implementation
|
* up to the form processor implementation
|
||||||
* to determine how to enforce this
|
* to determine how to enforce this
|
||||||
|
* @param context Map representing optional context that
|
||||||
|
* can be used during retrieval of the form
|
||||||
* @return The Form representation
|
* @return The Form representation
|
||||||
*/
|
*/
|
||||||
public Form generate(Item item, List<String> fields, List<String> forcedFields);
|
public Form generate(Item item, List<String> fields, List<String> forcedFields,
|
||||||
|
Map<String, Object> context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persists the given object representing the form data
|
* Persists the given object representing the form data
|
||||||
|
@@ -115,12 +115,13 @@ public class NodeFormProcessor extends ContentModelFormProcessor
|
|||||||
return nodeRef;
|
return nodeRef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.alfresco.repo.forms.processor.FilteredFormProcessor#internalGenerate(java.lang.Object, java.util.List, java.util.List, org.alfresco.repo.forms.Form)
|
* @see org.alfresco.repo.forms.processor.FilteredFormProcessor#internalGenerate(java.lang.Object, java.util.List, java.util.List, org.alfresco.repo.forms.Form, java.util.Map)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void internalGenerate(Object item, List<String> fields, List<String> forcedFields, Form form)
|
protected void internalGenerate(Object item, List<String> fields, List<String> forcedFields,
|
||||||
|
Form form, Map<String, Object> context)
|
||||||
{
|
{
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
logger.debug("Generating form for: " + item);
|
logger.debug("Generating form for: " + item);
|
||||||
|
@@ -124,12 +124,13 @@ public class TypeFormProcessor extends ContentModelFormProcessor
|
|||||||
// return the type definition object for the requested type
|
// return the type definition object for the requested type
|
||||||
return typeDef;
|
return typeDef;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.alfresco.repo.forms.processor.node.NodeFormProcessor#internalGenerate(java.lang.Object, java.util.List, java.util.List, org.alfresco.repo.forms.Form)
|
* @see org.alfresco.repo.forms.processor.FilteredFormProcessor#internalGenerate(java.lang.Object, java.util.List, java.util.List, org.alfresco.repo.forms.Form, java.util.Map)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void internalGenerate(Object item, List<String> fields, List<String> forcedFields, Form form)
|
protected void internalGenerate(Object item, List<String> fields, List<String> forcedFields,
|
||||||
|
Form form, Map<String, Object> context)
|
||||||
{
|
{
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
logger.debug("Generating form for item: " + item);
|
logger.debug("Generating form for item: " + item);
|
||||||
|
Reference in New Issue
Block a user