CUST-2 New Client Configuration & Extension Points in Share

51
New Client Configuration & Extension Points in Share Dave Draper – UI Engineer – @_DaveDraper

description

Video that accompanies this presentation at: http://www.youtube.com/watch?v=UNjn6bOJ308 Spring Surf has been updated to allow increased customization and extensibility. This session will demonstrate how these capabilities can and have been used in Alfresco Share to add, remove and modify its appearance without needing to copy and paste code.

Transcript of CUST-2 New Client Configuration & Extension Points in Share

Page 1: CUST-2 New Client Configuration & Extension Points in Share

New Client Configuration & Extension Points in Share!

Dave Draper – UI Engineer – @_DaveDraper!

Page 2: CUST-2 New Client Configuration & Extension Points in Share

Background & Goals!•  Alfresco Share was not originally intended as a platform •  Spring Surf did not provide any extension mechanism •  Difficult to identify use cases

Page 3: CUST-2 New Client Configuration & Extension Points in Share

Goals!•  Ensure that Spring Surf continues to be compatible with

previous Alfresco releases (i.e. Avoid branching) •  Minimize Share code changes •  Provide the ability to easily extend Share without copying

and pasting code •  Provide extensions through simple JAR deployment

Page 4: CUST-2 New Client Configuration & Extension Points in Share

Solution Overview!•  Two distinct approaches to extension o Customization by targeting existing files!o Customization through Component configuration!

•  Creation of in-memory output model o Provides opportunity to amend default output!o Each FreeMarker template gets an output model!o Models can are nested!

•  Introduction of Sub-Components o Solves 1-1 Region to Component mapping problem!

Page 5: CUST-2 New Client Configuration & Extension Points in Share

File Customization!•  Works with Templates or WebScripts •  Can extend i18n properties, JavaScript controllers &

FreeMarker templates •  FreeMarker extensions depend upon custom directives

• <@region> & <@markup>!• Entirely abstract framework – scope for adding new directives!

Page 6: CUST-2 New Client Configuration & Extension Points in Share

What Can You Do With This?!•  Modify Surf templates to add, remove, modify Component

bindings •  Change display labels •  Modify the content displayed by updating the model

Page 7: CUST-2 New Client Configuration & Extension Points in Share

Sub-Components!• A Sub-Component maps to a WebScript • Only AdvancedComponents support Sub-

Components o Only Share v4.0 uses AdvancedComponents by default!o Configurable through Surf configuration!

•  Legacy configuration conversion o Components become Sub-Components!

• Support for dynamic evaluation of parameters against request

Page 8: CUST-2 New Client Configuration & Extension Points in Share

Sub-Component Evaluations!• A Sub-Component can have zero or more

Evaluations • Each Evaluation can use zero or more Evaluators •  If all Evaluators are successful then Evaluation

overrides Sub-Component defaults • WebScript URL, properties and index can be

overridden

Page 9: CUST-2 New Client Configuration & Extension Points in Share

What Can You Do With This?!•  Add, remove and modify the content within a Component •  Have a Component display different content dynamically

based on request information (e.g. The Site being accessed, the current User)

•  Re-order Sub-Components

Page 10: CUST-2 New Client Configuration & Extension Points in Share

Extensions & Modules!•  An “Extension” can contain zero or more “Modules” •  An Extension can be configured within the application

(e.g. Portlet extension) or externally in a JAR (e.g. RM extension)

•  Two deployment modes “auto” and “manual” (manual is default)

•  Default module configuration can be overridden when deployed

•  Modules can be dynamically deployed and removed without server restart.

Page 11: CUST-2 New Client Configuration & Extension Points in Share

Benefits!•  Easy to add new coarse grained content to existing Share

pages •  Easy to override i18n properties for WebScripts •  Scope for future enhancements using in-memory output

model (i.e. new FreeMarker directives)

Page 12: CUST-2 New Client Configuration & Extension Points in Share

Restrictions!•  Still difficult to extend JavaScript widgets for fine grained

changes •  Limited use of <@markup> directive in Share •  Sub-Component extensions only work with WebScripts •  Limited control over module overrides at deployment

Page 13: CUST-2 New Client Configuration & Extension Points in Share

Additional Tooling!•  “SurfBug”: identifies the Spring Surf elements on each

page: o Sub-Components & Component bindings, properties & evaluation results!o Contributing file paths!o WebScript information!o Customization data (i.e. use of extensibility directives)!

Page 14: CUST-2 New Client Configuration & Extension Points in Share

Demo!

Page 15: CUST-2 New Client Configuration & Extension Points in Share

Adding New Content (Method 1)

Page 16: CUST-2 New Client Configuration & Extension Points in Share

Create some content...

WebScript Template

WebScript Descriptor

Page 17: CUST-2 New Client Configuration & Extension Points in Share

Target Area Of Share...

Page 18: CUST-2 New Client Configuration & Extension Points in Share

Define new Sub-Component...

Page 19: CUST-2 New Client Configuration & Extension Points in Share

Deploy Module...

Page 20: CUST-2 New Client Configuration & Extension Points in Share

Result...

Page 21: CUST-2 New Client Configuration & Extension Points in Share

Hiding Existing Content (Method 1)

Page 22: CUST-2 New Client Configuration & Extension Points in Share

Target Sub-Component to hide...

Page 23: CUST-2 New Client Configuration & Extension Points in Share

Result...

Page 24: CUST-2 New Client Configuration & Extension Points in Share

Conditional Hide

Page 25: CUST-2 New Client Configuration & Extension Points in Share

Create an Evaluator...

Page 26: CUST-2 New Client Configuration & Extension Points in Share

Make the Evaluator a Spring Bean...

org.springframework.extensions.surf.spring-surf-extensibility-context.xml

Page 27: CUST-2 New Client Configuration & Extension Points in Share

Specify the Evaluator...

Page 28: CUST-2 New Client Configuration & Extension Points in Share

Result...

Page 29: CUST-2 New Client Configuration & Extension Points in Share

Adding New Content (Method 2)

Page 30: CUST-2 New Client Configuration & Extension Points in Share

Target a TemplateInstance...

Page 31: CUST-2 New Client Configuration & Extension Points in Share

Define a customization...

Page 32: CUST-2 New Client Configuration & Extension Points in Share

Create the customization file...

(in specified package)

Page 33: CUST-2 New Client Configuration & Extension Points in Share

Define a Component to bind to new Region...

(re-using the WebScript from the earlier example to provide content)

Page 34: CUST-2 New Client Configuration & Extension Points in Share

Result...

Page 35: CUST-2 New Client Configuration & Extension Points in Share

Hiding Existing Content (Method 2)

Page 36: CUST-2 New Client Configuration & Extension Points in Share

Remove the Region...

Other actions are available...  “after”  “modify”

Page 37: CUST-2 New Client Configuration & Extension Points in Share

Override i18n Properties

Page 38: CUST-2 New Client Configuration & Extension Points in Share

Find the property...

Page 39: CUST-2 New Client Configuration & Extension Points in Share

Define a customization...

Page 40: CUST-2 New Client Configuration & Extension Points in Share

Create the customization file...

Note that the location of a WebScript customization is at a different path root than for TemplateInstance

customizations!

Page 41: CUST-2 New Client Configuration & Extension Points in Share

Result...

Page 42: CUST-2 New Client Configuration & Extension Points in Share

Override JavaScript Controller

Page 43: CUST-2 New Client Configuration & Extension Points in Share

Identify JavaScript model properties...

Page 44: CUST-2 New Client Configuration & Extension Points in Share

Define a customization...

Page 45: CUST-2 New Client Configuration & Extension Points in Share

Create The Customization File...

Page 46: CUST-2 New Client Configuration & Extension Points in Share

Result...

Page 47: CUST-2 New Client Configuration & Extension Points in Share

•  Re-order entire pages (add + remove regions) •  Auto readme (see Blog post) •  PeerBind Chat Service (see David Webster’s blog) •  Resource Management module •  Portlet module •  ...

Other Customizations...

Page 48: CUST-2 New Client Configuration & Extension Points in Share

•  Dependency directives •  <@widget> directive •  Make JavaScript widgets easier to extend •  Auto-compress and collate JavaScript and CSS resources •  ...

Roadmap...

Page 49: CUST-2 New Client Configuration & Extension Points in Share

Additional Reading!•  Lots more in-depth information and tutorials available at:

http://blogs.alfresco.com/wp/ddraper •  Alfresco Surf Development Forum •  More blogs to come!

Page 50: CUST-2 New Client Configuration & Extension Points in Share

Questions?!

Page 51: CUST-2 New Client Configuration & Extension Points in Share