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 Share and Surf UI Updates Simplify Alfresco Customization

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 Share and Surf UI Updates Simplify Alfresco Customization (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

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 

Recently uploaded (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 

Share and Surf UI Updates Simplify Alfresco Customization

  • 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