Forms config and customisation

Post on 22-Jan-2017

51 views 0 download

Transcript of Forms config and customisation

Forms Config, Customization, & Extension!

Gavin Cornwell, Development Manager, Services Team, Alfresco!

Agenda!

•  Where Forms Are Used •  Demo •  Configuration •  Customization •  Extension •  Q & A

Where Forms Are Used!

Metadata !

Advanced Search!

Workflow !

Datalists !

Actions (4.0)!

Admin Console (4.0)!

Demo!

•  Custom Type •  Custom Control •  Advanced Search •  FDK • startLocation!• Custom “foldername” NodeLocator!

• Built-in NodeLocators; ancestor, doclib, userhome!

• Unit Test Page!

Configuration!

Global Defaults – form-config.xml <config> <forms> <default-controls> ... </default-controls> <constraint-handlers> ... </constraint-handlers> <dependencies> ... </dependencies> </forms> </config>

Default Controls!<default-controls> <type name="text” template="/org.../textfield.ftl" />

<type name=”datetime” template="/org.../date.ftl”> <control-param name="showTime”> true </control-param> </type> ... </default-controls>

Default Constraint Handlers!<constraint-handlers> … <constraint type="MANDATORY” validation-handler="...mandatory” event="keyup" />

<constraint type="NUMBER” validation-handler=”...number” event="keyup" /> ... </constraint-handlers>

Dependencies!<dependencies> <css src=” /accordion/accordion.css" /> <js src=“/accordion/accordion-min.js" /> ... </dependencies>

Custom Type (dcforms:presentation)!

•  Name (d:text) inherited from cm:content •  Code (d:text) •  Abstract (d:text) •  Level (d:text with LIST constraint) •  Duration (d:int) •  When (d:datetime) •  Rating (d:int) •  Presenter (association to cm:person)

Node Form – Visibility !<config evaluator="node-type” condition="dcforms:presentation"> <forms> <form> <field-visibility> <show id="dcforms:code" /> <show id="cm:name" /> <show id="dcforms:abstract" /> <show id="dcforms:presenter" /> <show id="dcforms:duration" /> <show id="dcforms:when" /> <show id="dcforms:level" /> <show id="dcforms:rating" /> </field-visibility> <appearance>….</appearance> </form> </forms> </config>

Node Form – Appearance !<appearance> <set id="" label-id="form.set.general” appearance="title”/> <set id="time" label="Time” appearance="title”/> <set id="feedback" label="Feedback" appearance=”panel”/>

<field id="dcforms:abstract"> <control template="/org/…/controls/textarea.ftl" /> </field> <field id="dcforms:rating" set="feedback” /> <field id="dcforms:when" set="time" /> <field id="dcforms:duration" set="time" /> </appearance>

Node Form – Screenshot !

Node Form – Hiding the ʻAuthorʼ field!<config evaluator="node-type" condition="cm:content"> <forms> <form> <field-visibility> <hide id="cm:author" /> </field-visibility> </form> </forms> </config>

Node Form – Hiding the ʻAuthorʼ field!

Search Form!<config evaluator="model-type" condition="dcforms:presentation"> <forms> <form id="search"> <field-visibility> <show id="cm:name" /> <show id="dcforms:code" /> <show id="dcforms:level" /> <show id="dcforms:when" /> </field-visibility> <appearance> <field id="dcforms:when"> <control template="/org/alfresco/components/form/controls/daterange.ftl" /> </field> </appearance> </form> </forms> </config>

Search Form

Customization!

Custom Control – YUI Slider!

•  Root location for custom controls •  shared/classes/alfresco/web-extension/site-webscripts!

<field id="dcforms:rating" set="feedback"> <control template="/devcon/progress.ftl" /> </field>

Custom Form Template!<config evaluator="task-type" condition="inwf:activitiInvitePendingTask"> <forms> <form> <view-form template="/org/alfresco/components/form/invite-task-form.ftl”/> <edit-form template="/org/alfresco/components/form/invite-task-form.ftl”/> <field-visibility> <show id="inwf:resourceTitle" /> <show id="inwf:resourceDescription" /> <show id="inwf:inviteeRole" /> <show id="bpm:priority" /> <show id="bpm:comment" /> <show id="inwf:inviteOutcome" /> </field-visibility> </form> </forms> </config>!

Custom Form Template!

inwf:resourceTitle   bpm:priority  

inwf:inviteeRole   bpm:comment  

inwf:inviteOutcome  

Extension!

Form Processors!

•  Pluggable Form Processors •  Driven by “itemKind”!•  Provide implementation to generate and persist form!•  OOTB Form Processors!

• Node, Type, Workflow, Task, Action & JMX!

•  Form Filter •  Allows pre and post processing of fields!

NodeLocatorService (picker startLocation)!

•  Returns a NodeRef •  Implement NodeLocator Interface • NodeRef getNode(NodeRef, Map<String, Serializable>);!• Specify ID for “startLocation” param value!

•  REST API • /api/workspace/SpacesStore/…/nodelocator/ancestor?type=xyz !

•  https://wiki.alfresco.com/wiki/NodeLocatorService

Whatʼs New & Tips!

Whatʼs New in 4.0!

•  JMX Form Processor •  Action Form Processor •  Association Control • Customizable startLocation !• rootNode option (stops navigation beyond node)!

•  Category Control • Root node configurable!• Include sub categories option (for search)!

Tips!

• Log4J settings • org.alfresco.repo.forms=debug!• org.alfresco.web.config.forms=debug!• org.alfresco.web.scripts.forms=debug!

• Eclipse (breakpoints) • FormUIGet for UI!• FilteredFormProcessor for server!

Tips!

• Forms Development Kit (FDK) • Form Console (/<app>/page/form-console)!• Unit Test Page (/<app>/page/fdk-unit-tests)!• Debug control & template (dumps model)!

• Cntrl, Cntrl, Shift, Shift

Questions ?!

Learn More!

http://wiki.alfresco.com/wiki/Forms http://wiki.alfresco.com/wiki/Share_Advanced_Search