SlideShare a Scribd company logo
1 of 32
Share and Surf UI Updates
Tech Talk Live - Dave Draper
Contents
• Brief history
• Why change?
• Goals
• What’s Changed
• Examples
Brief History
• Alfresco Surf used in Share 3.0, 3.1 & 3.2
• Alfresco Surf becomes Spring Surf (first used in Share 3.4)
• Customization by copying and pasting WebScripts
• Initial extensibility features added in 4.0
• Introduced extension modules
• I18n properties, JavaScript controller and Freemarker template extensions
• Dynamic configuration added for 4.1
• WebScript refactor for Share 4.2
• Consistent boiler-plate with <@markup> directives
• Client-side widget instantiation logic moved from template to controller
• .head.ftl files deprecated
Why Change?
• YUI 2 is no longer being developed
• Creating pages in Share is too hard
• Accessibility
• Performance (reduce HTTP requests)
• Improve re-usability
• Improve extensibility
Goals
• Make it faster to create new pages
• Make it easier to customize pages
• Improve re-use of code
• Improve accessibility
Summary of Changes
• Simple page creation
• Dynamic dependency analysis in Surf
• New widget library
• New customization tools
• CSS token substitution by Themes
New Widget Library
• Over 100 new widgets
• Most widgets should be considered BETA (if not used in
default Share application)
• Consider them as guides or an indication of what is to come
• Strong inheritance
• Written with customisation in mind
• Documentation by JS Doc 3
JavaScript HTML
CSS i18n
What is a Widget?
Simple Page Creation
• Page creation by single WebScript
• Pages defined as a JSON model in JavaScript controller
• Freemarker templates just contain custom
<@processJsonModel> directive
• Use URI templates to load pages
Page templates
• Full page
• /share/page/dp/ws/{webscript URL}
• /share/page/site/{site}/dp/ws/{webscript URL}
• Hybrid page (content between header and footer)
• /share/page/site/{site}/hdp/ws/{webscript URL}
• /share/page/hdp/ws/{webscript URL}
• Hybrid remote page (definition loaded from Repository)
• /share/page/site/{site}/p/{page name}
• /share/page/hrp/p/{page name}
JSON Structure Example
The widget
to instantiate
The
instantiation
arguments
ID of the
definition in
the model
ID of the root
element in the
resulting DOM
Assigns to a
variable of the
enclosing widget
Used by the
enclosing
widget
Passed as an
argument
during
instantiation
Remote Pages
• Page definitions can be read from the Repository
• Currently targets hard-coded location that doesn’t exist
by default
• User permissions on API
• No executable code saved or run.
Demo
Why Dojo?
• AMD
• Accessibility
• Widget templating
• Unit testing
What is AMD?
“Asynchronous module definition (AMD) is a JavaScript API for defining modules such that the
module and its dependencies can be asynchronously loaded. It is useful in improving the
performance of websites by bypassing synchronous loading of modules along with the rest of
the site content.
In addition to loading multiple JavaScript files at runtime, AMD can be used during development
to keep JavaScript files encapsulated in many different files. This is similar to other
programming languages, for example java, which support keywords such as import, package,
and class for this purpose. It is then possible to concatenate and minify all the source JavaScript
into one small file used for production deployment.”
- Wikipedia
Dynamic Dependency Analysis
• Widgets become single atomic unit
• JavaScript (AMD and non-AMD)
• CSS
• HTML fragments
• Localization
• Configurable “analysis” beans in Surf
• Uses Regular Expressions to identify dependencies
• All dependencies pre-loaded into page
• http://blogs.alfresco.com/wp/developer/2013/03/05/under-the-hood-of-the-surf-updates/
Dependency Example
A B
C E
D
• Requesting A results in B, C, D & E being loaded
• C is only loaded once (despite being depended on twice)
Demo
NOT Just Dojo
• All widgets in the library start with the Dojo widget
template base
• Some widgets wrap existing Share YUI widgets
• Some new widgets use YUI resources
• Widgets exist that use other 3rd party libraries
NOT Just AMD
• Surf supports non-AMD dependencies
• It’s possible for a widget to declare a dependency on any
JavaScript resource
• Surf prevents duplicate resources being loaded multiple
times
Services and Widgets
• Services don’t (initially) contribute to the DOM but
respond to pub/sub events
• Navigation Service
• Action Service
• Logging Service
• Widgets contribute to the DOM but don’t (typically)
communicate with the server
Decoupled Communication
• Two methods of communication:
• Scoped pub/sub model (extends Dojo base)
• Custom event bubbling
• Separation of view and data
• Can extend services without extending widgets
• 3rd party widgets can use Alfresco services
Data Binding Registry
• Registry of data objects bound to callbacks
• A widget can register data for other widgets to bind to
• Allows automatic display updates
Where is this in Share 4.2 ?
• Currently just the new header bar
• New Document Library “parked” for the future
• Will potentially appear first in “Alfresco in the Cloud” before
Share 4.3
Customization Examples
• Three examples on the Alfresco Developer Blogs
• Convert “Admin” menu link to full drop-down
• Expand “Recent Sites” to access individual site pages
• Hiding “My Files” link
• http://blogs.alfresco.com/wp/developer/2013/09/04/customizing-the-share-header-menu-part-1/
• http://blogs.alfresco.com/wp/developer/2013/09/04/customizing-the-share-header-menu-part-2/
• http://blogs.alfresco.com/wp/developer/2013/09/16/customizing-the-share-header-part-3/
Demo
Screenshots
Example Pages
• Page definitions NOT in Share 4.2 (but widgets are)
• Kickstart Prototype
• Document Library
Demo
What Does This Mean For Me?
• Easier to build pages from existing Alfresco widget library
• Easier to create custom widgets by extending Alfresco
widgets
Future Possibilities
• Share will continue to be updated to use new widgets
• Easier to customise Share
• Easier integration of Community code
• Opens the door to new application creation
Questions?

More Related Content

What's hot

Developing Search-driven application in SharePoint 2013
 Developing Search-driven application in SharePoint 2013  Developing Search-driven application in SharePoint 2013
Developing Search-driven application in SharePoint 2013 SPC Adriatics
 
Optimization of modern web applications
Optimization of modern web applicationsOptimization of modern web applications
Optimization of modern web applicationsEugene Lazutkin
 
HTML5 Local Storage
HTML5 Local StorageHTML5 Local Storage
HTML5 Local StorageLior Zamir
 
Access share point-2013-data-with-provider-hosted-apps
Access share point-2013-data-with-provider-hosted-appsAccess share point-2013-data-with-provider-hosted-apps
Access share point-2013-data-with-provider-hosted-appsAlexander Meijers
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1asim78
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularMark Leusink
 
The World Needs an Alternative to SharePoint
The World Needs an Alternative to SharePointThe World Needs an Alternative to SharePoint
The World Needs an Alternative to SharePointAlfresco Software
 
Browsers. Magic is inside.
Browsers. Magic is inside.Browsers. Magic is inside.
Browsers. Magic is inside.Devexperts
 
Single Page Apps
Single Page AppsSingle Page Apps
Single Page AppsGil Fink
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Herman Peeren
 
New Ways of (Web) Content Management
New Ways of (Web) Content ManagementNew Ways of (Web) Content Management
New Ways of (Web) Content ManagementSPC Adriatics
 
Boost the Performance of SharePoint Today!
Boost the Performance of SharePoint Today!Boost the Performance of SharePoint Today!
Boost the Performance of SharePoint Today!Brian Culver
 
Leveraging Open Source Library Guides: Integrating Koha and SubjectsPlus
Leveraging Open Source Library Guides: Integrating Koha and SubjectsPlusLeveraging Open Source Library Guides: Integrating Koha and SubjectsPlus
Leveraging Open Source Library Guides: Integrating Koha and SubjectsPlusMyka Kennedy Stephens
 
Adobe AEM for Business Heads
Adobe AEM for Business HeadsAdobe AEM for Business Heads
Adobe AEM for Business HeadsYash Mody
 
Static Site Generators - Developing Websites in Low-resource Condition
Static Site Generators - Developing Websites in Low-resource ConditionStatic Site Generators - Developing Websites in Low-resource Condition
Static Site Generators - Developing Websites in Low-resource ConditionIWMW
 

What's hot (20)

Developing Search-driven application in SharePoint 2013
 Developing Search-driven application in SharePoint 2013  Developing Search-driven application in SharePoint 2013
Developing Search-driven application in SharePoint 2013
 
72d5drupal
72d5drupal72d5drupal
72d5drupal
 
Optimization of modern web applications
Optimization of modern web applicationsOptimization of modern web applications
Optimization of modern web applications
 
HTML5 Local Storage
HTML5 Local StorageHTML5 Local Storage
HTML5 Local Storage
 
Access share point-2013-data-with-provider-hosted-apps
Access share point-2013-data-with-provider-hosted-appsAccess share point-2013-data-with-provider-hosted-apps
Access share point-2013-data-with-provider-hosted-apps
 
Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1Asp.Net 3 5 Part 1
Asp.Net 3 5 Part 1
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
 
The World Needs an Alternative to SharePoint
The World Needs an Alternative to SharePointThe World Needs an Alternative to SharePoint
The World Needs an Alternative to SharePoint
 
Browsers. Magic is inside.
Browsers. Magic is inside.Browsers. Magic is inside.
Browsers. Magic is inside.
 
Single Page Apps
Single Page AppsSingle Page Apps
Single Page Apps
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.
 
New Ways of (Web) Content Management
New Ways of (Web) Content ManagementNew Ways of (Web) Content Management
New Ways of (Web) Content Management
 
.Net Fundamentals
.Net Fundamentals.Net Fundamentals
.Net Fundamentals
 
RESTful Services
RESTful ServicesRESTful Services
RESTful Services
 
Boost the Performance of SharePoint Today!
Boost the Performance of SharePoint Today!Boost the Performance of SharePoint Today!
Boost the Performance of SharePoint Today!
 
Leveraging Open Source Library Guides: Integrating Koha and SubjectsPlus
Leveraging Open Source Library Guides: Integrating Koha and SubjectsPlusLeveraging Open Source Library Guides: Integrating Koha and SubjectsPlus
Leveraging Open Source Library Guides: Integrating Koha and SubjectsPlus
 
Spsmi13 charts
Spsmi13 chartsSpsmi13 charts
Spsmi13 charts
 
Adobe AEM for Business Heads
Adobe AEM for Business HeadsAdobe AEM for Business Heads
Adobe AEM for Business Heads
 
Static Site Generators - Developing Websites in Low-resource Condition
Static Site Generators - Developing Websites in Low-resource ConditionStatic Site Generators - Developing Websites in Low-resource Condition
Static Site Generators - Developing Websites in Low-resource Condition
 
The RDBMS You Should Be Using
The RDBMS You Should Be UsingThe RDBMS You Should Be Using
The RDBMS You Should Be Using
 

Viewers also liked

Alfresco 5.0 Technology Review
Alfresco 5.0 Technology ReviewAlfresco 5.0 Technology Review
Alfresco 5.0 Technology ReviewZia Consulting
 
BP-1 Performance and Scalability
BP-1 Performance and ScalabilityBP-1 Performance and Scalability
BP-1 Performance and ScalabilityAlfresco Software
 
Alfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco OneAlfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco OneNicole Szigeti
 
Alfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side LabsAlfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side LabsAlfresco Software
 
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objectsBacking Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objectsITD Systems
 
Webinar: Le novità di Alfresco 5.1
Webinar: Le novità di Alfresco 5.1 Webinar: Le novità di Alfresco 5.1
Webinar: Le novità di Alfresco 5.1 Alfresco Software
 
Using alfresco share as a corporate intranet
Using alfresco share as a corporate intranetUsing alfresco share as a corporate intranet
Using alfresco share as a corporate intranetAlfresco Software
 
Bee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installingBee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installingAngel Borroy López
 
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco Software
 
Digital Asset Management with Alfresco
Digital Asset Management with AlfrescoDigital Asset Management with Alfresco
Digital Asset Management with Alfrescorivetlogic
 

Viewers also liked (11)

Alfresco 5.0 Technology Review
Alfresco 5.0 Technology ReviewAlfresco 5.0 Technology Review
Alfresco 5.0 Technology Review
 
BP-1 Performance and Scalability
BP-1 Performance and ScalabilityBP-1 Performance and Scalability
BP-1 Performance and Scalability
 
Alfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco OneAlfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco One
 
Alfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side LabsAlfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side Labs
 
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objectsBacking Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
Backing Data Silo Atack: Alfresco sharding, SOLR for non-flat objects
 
Webinar: Le novità di Alfresco 5.1
Webinar: Le novità di Alfresco 5.1 Webinar: Le novità di Alfresco 5.1
Webinar: Le novità di Alfresco 5.1
 
Using alfresco share as a corporate intranet
Using alfresco share as a corporate intranetUsing alfresco share as a corporate intranet
Using alfresco share as a corporate intranet
 
Solr5
Solr5Solr5
Solr5
 
Bee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installingBee con2016 presentation_20160125004_installing
Bee con2016 presentation_20160125004_installing
 
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
 
Digital Asset Management with Alfresco
Digital Asset Management with AlfrescoDigital Asset Management with Alfresco
Digital Asset Management with Alfresco
 

Similar to Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2

Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Wen-Tien Chang
 
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Lucidworks
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksFITC
 
Drupal is not your Website
Drupal is not your Website Drupal is not your Website
Drupal is not your Website Phase2
 
CUST-3 Document Management with Share
CUST-3 Document Management with ShareCUST-3 Document Management with Share
CUST-3 Document Management with ShareAlfresco Software
 
OpenProdoc Overview
OpenProdoc OverviewOpenProdoc Overview
OpenProdoc Overviewjhierrot
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web ApplicationsMarkku Laine
 
Serverless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demoServerless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demoJan van Zoggel
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)TIMETOACT GROUP
 
Drupal Is Not Your Web Site
Drupal Is Not Your Web SiteDrupal Is Not Your Web Site
Drupal Is Not Your Web SitePhase2
 
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anyninesCloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anyninesanynines GmbH
 
IBM Social Business Toolkit
IBM Social Business ToolkitIBM Social Business Toolkit
IBM Social Business ToolkitVan Staub, MBA
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityAlfresco Software
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentNicole Szigeti
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFxThomas Daly
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 BucharestAndreas Jung
 

Similar to Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2 (20)

Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
 
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
Drupal is not your Website
Drupal is not your Website Drupal is not your Website
Drupal is not your Website
 
CUST-3 Document Management with Share
CUST-3 Document Management with ShareCUST-3 Document Management with Share
CUST-3 Document Management with Share
 
Prueba ppt
Prueba pptPrueba ppt
Prueba ppt
 
Html5v1
Html5v1Html5v1
Html5v1
 
OpenProdoc Overview
OpenProdoc OverviewOpenProdoc Overview
OpenProdoc Overview
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web Applications
 
Serverless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demoServerless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demo
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
Drupal Is Not Your Web Site
Drupal Is Not Your Web SiteDrupal Is Not Your Web Site
Drupal Is Not Your Web Site
 
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anyninesCloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
Cloud Infrastructures Slide Set 7 - Docker - Neo4j | anynines
 
IBM Social Business Toolkit
IBM Social Business ToolkitIBM Social Business Toolkit
IBM Social Business Toolkit
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share Extensibility
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
 
Performance tuning of Websites
Performance tuning of WebsitesPerformance tuning of Websites
Performance tuning of Websites
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Varnish intro
Varnish introVarnish intro
Varnish intro
 
Building bridges - Plone Conference 2015 Bucharest
Building bridges   - Plone Conference 2015 BucharestBuilding bridges   - Plone Conference 2015 Bucharest
Building bridges - Plone Conference 2015 Bucharest
 

More from Richard Esplin

The Impact of Emerging Technology on Digital Transformation
The Impact of Emerging Technology on Digital TransformationThe Impact of Emerging Technology on Digital Transformation
The Impact of Emerging Technology on Digital TransformationRichard Esplin
 
Alfresco DevCon 2018: Collaborating with Alfresco
Alfresco DevCon 2018: Collaborating with AlfrescoAlfresco DevCon 2018: Collaborating with Alfresco
Alfresco DevCon 2018: Collaborating with AlfrescoRichard Esplin
 
Alfresco DevCon 2018: Product Direction Keynote
Alfresco DevCon 2018: Product Direction KeynoteAlfresco DevCon 2018: Product Direction Keynote
Alfresco DevCon 2018: Product Direction KeynoteRichard Esplin
 
Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...
Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...
Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...Richard Esplin
 
Turn Your Mobile Device Into a Workhorse
Turn Your Mobile Device Into a WorkhorseTurn Your Mobile Device Into a Workhorse
Turn Your Mobile Device Into a WorkhorseRichard Esplin
 
FISL: Content Management Primer
FISL: Content Management PrimerFISL: Content Management Primer
FISL: Content Management PrimerRichard Esplin
 
Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...
Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...
Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...Richard Esplin
 
Meet-ups in Brazil: Aprendendo sobre o Alfresco / Learning Alfresco
Meet-ups in Brazil: Aprendendo sobre o Alfresco / Learning AlfrescoMeet-ups in Brazil: Aprendendo sobre o Alfresco / Learning Alfresco
Meet-ups in Brazil: Aprendendo sobre o Alfresco / Learning AlfrescoRichard Esplin
 

More from Richard Esplin (9)

The Impact of Emerging Technology on Digital Transformation
The Impact of Emerging Technology on Digital TransformationThe Impact of Emerging Technology on Digital Transformation
The Impact of Emerging Technology on Digital Transformation
 
Alfresco DevCon 2018: Collaborating with Alfresco
Alfresco DevCon 2018: Collaborating with AlfrescoAlfresco DevCon 2018: Collaborating with Alfresco
Alfresco DevCon 2018: Collaborating with Alfresco
 
Alfresco DevCon 2018: Product Direction Keynote
Alfresco DevCon 2018: Product Direction KeynoteAlfresco DevCon 2018: Product Direction Keynote
Alfresco DevCon 2018: Product Direction Keynote
 
Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...
Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...
Alfresco DevCon 2018 Lighting Talk: Lessons on Open Source from the French Re...
 
Alfresco share pt
Alfresco share ptAlfresco share pt
Alfresco share pt
 
Turn Your Mobile Device Into a Workhorse
Turn Your Mobile Device Into a WorkhorseTurn Your Mobile Device Into a Workhorse
Turn Your Mobile Device Into a Workhorse
 
FISL: Content Management Primer
FISL: Content Management PrimerFISL: Content Management Primer
FISL: Content Management Primer
 
Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...
Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...
Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content M...
 
Meet-ups in Brazil: Aprendendo sobre o Alfresco / Learning Alfresco
Meet-ups in Brazil: Aprendendo sobre o Alfresco / Learning AlfrescoMeet-ups in Brazil: Aprendendo sobre o Alfresco / Learning Alfresco
Meet-ups in Brazil: Aprendendo sobre o Alfresco / Learning Alfresco
 

Recently uploaded

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Recently uploaded (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Alfresco Tech Talk Live (Episode 70): Customizing Alfresco Share 4.2

  • 1. Share and Surf UI Updates Tech Talk Live - Dave Draper
  • 2. Contents • Brief history • Why change? • Goals • What’s Changed • Examples
  • 3. Brief History • Alfresco Surf used in Share 3.0, 3.1 & 3.2 • Alfresco Surf becomes Spring Surf (first used in Share 3.4) • Customization by copying and pasting WebScripts • Initial extensibility features added in 4.0 • Introduced extension modules • I18n properties, JavaScript controller and Freemarker template extensions • Dynamic configuration added for 4.1 • WebScript refactor for Share 4.2 • Consistent boiler-plate with <@markup> directives • Client-side widget instantiation logic moved from template to controller • .head.ftl files deprecated
  • 4. Why Change? • YUI 2 is no longer being developed • Creating pages in Share is too hard • Accessibility • Performance (reduce HTTP requests) • Improve re-usability • Improve extensibility
  • 5. Goals • Make it faster to create new pages • Make it easier to customize pages • Improve re-use of code • Improve accessibility
  • 6. Summary of Changes • Simple page creation • Dynamic dependency analysis in Surf • New widget library • New customization tools • CSS token substitution by Themes
  • 7. New Widget Library • Over 100 new widgets • Most widgets should be considered BETA (if not used in default Share application) • Consider them as guides or an indication of what is to come • Strong inheritance • Written with customisation in mind • Documentation by JS Doc 3
  • 9. Simple Page Creation • Page creation by single WebScript • Pages defined as a JSON model in JavaScript controller • Freemarker templates just contain custom <@processJsonModel> directive • Use URI templates to load pages
  • 10. Page templates • Full page • /share/page/dp/ws/{webscript URL} • /share/page/site/{site}/dp/ws/{webscript URL} • Hybrid page (content between header and footer) • /share/page/site/{site}/hdp/ws/{webscript URL} • /share/page/hdp/ws/{webscript URL} • Hybrid remote page (definition loaded from Repository) • /share/page/site/{site}/p/{page name} • /share/page/hrp/p/{page name}
  • 11. JSON Structure Example The widget to instantiate The instantiation arguments ID of the definition in the model ID of the root element in the resulting DOM Assigns to a variable of the enclosing widget Used by the enclosing widget Passed as an argument during instantiation
  • 12. Remote Pages • Page definitions can be read from the Repository • Currently targets hard-coded location that doesn’t exist by default • User permissions on API • No executable code saved or run.
  • 13. Demo
  • 14. Why Dojo? • AMD • Accessibility • Widget templating • Unit testing
  • 15. What is AMD? “Asynchronous module definition (AMD) is a JavaScript API for defining modules such that the module and its dependencies can be asynchronously loaded. It is useful in improving the performance of websites by bypassing synchronous loading of modules along with the rest of the site content. In addition to loading multiple JavaScript files at runtime, AMD can be used during development to keep JavaScript files encapsulated in many different files. This is similar to other programming languages, for example java, which support keywords such as import, package, and class for this purpose. It is then possible to concatenate and minify all the source JavaScript into one small file used for production deployment.” - Wikipedia
  • 16. Dynamic Dependency Analysis • Widgets become single atomic unit • JavaScript (AMD and non-AMD) • CSS • HTML fragments • Localization • Configurable “analysis” beans in Surf • Uses Regular Expressions to identify dependencies • All dependencies pre-loaded into page • http://blogs.alfresco.com/wp/developer/2013/03/05/under-the-hood-of-the-surf-updates/
  • 17. Dependency Example A B C E D • Requesting A results in B, C, D & E being loaded • C is only loaded once (despite being depended on twice)
  • 18. Demo
  • 19. NOT Just Dojo • All widgets in the library start with the Dojo widget template base • Some widgets wrap existing Share YUI widgets • Some new widgets use YUI resources • Widgets exist that use other 3rd party libraries
  • 20. NOT Just AMD • Surf supports non-AMD dependencies • It’s possible for a widget to declare a dependency on any JavaScript resource • Surf prevents duplicate resources being loaded multiple times
  • 21. Services and Widgets • Services don’t (initially) contribute to the DOM but respond to pub/sub events • Navigation Service • Action Service • Logging Service • Widgets contribute to the DOM but don’t (typically) communicate with the server
  • 22. Decoupled Communication • Two methods of communication: • Scoped pub/sub model (extends Dojo base) • Custom event bubbling • Separation of view and data • Can extend services without extending widgets • 3rd party widgets can use Alfresco services
  • 23. Data Binding Registry • Registry of data objects bound to callbacks • A widget can register data for other widgets to bind to • Allows automatic display updates
  • 24. Where is this in Share 4.2 ? • Currently just the new header bar • New Document Library “parked” for the future • Will potentially appear first in “Alfresco in the Cloud” before Share 4.3
  • 25. Customization Examples • Three examples on the Alfresco Developer Blogs • Convert “Admin” menu link to full drop-down • Expand “Recent Sites” to access individual site pages • Hiding “My Files” link • http://blogs.alfresco.com/wp/developer/2013/09/04/customizing-the-share-header-menu-part-1/ • http://blogs.alfresco.com/wp/developer/2013/09/04/customizing-the-share-header-menu-part-2/ • http://blogs.alfresco.com/wp/developer/2013/09/16/customizing-the-share-header-part-3/
  • 26. Demo
  • 28. Example Pages • Page definitions NOT in Share 4.2 (but widgets are) • Kickstart Prototype • Document Library
  • 29. Demo
  • 30. What Does This Mean For Me? • Easier to build pages from existing Alfresco widget library • Easier to create custom widgets by extending Alfresco widgets
  • 31. Future Possibilities • Share will continue to be updated to use new widgets • Easier to customise Share • Easier integration of Community code • Opens the door to new application creation