SlideShare una empresa de Scribd logo
1 de 32
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
AEM Rich Text Editor (RTE) Deep Dive
Hanish Bansal | Computer Scientist
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Agenda
RTE Overview
Use Cases and
Capabilities
Concepts
Configuring RTE
Best Practices
Limitations and
Troubleshooting
2
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Rich Text Editor Overview
- WYSIWIG editing for Authors
- Consistent authoring
experience for all authors
across browsers
3
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Rich Text Editor Overview
- Rich set of OOTB plugins
available for various
formatting
- Granular configurations
- Common Configuration for
both Classic UI and Touch UI
4
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Authoring Use Cases and RTE Capabilities
 Author content in various modes: Inline
 Use case : Quick WYSIWIG editing for authors with simple and commonly used features
5
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Authoring Use Cases and RTE Capabilities
 Author content in various modes: Dialog
 Use case: Rich Text property field for Component Dialog
6
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Authoring Use Cases and RTE Capabilities
 Author content in various modes:
 Fullscreen
 DialogFullscreen
 Use case: Text Editing using all available
features (simple or complex) in a
full width screen
7
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Authoring Use Cases and RTE Capabilities
 Available as AEM Core Text component
 Highly Recommended, available since 6.3
 Open Sourced
 RTE Plugins can be enabled/disabled using Design Dialog for Text Component via Template
Editor
 Shipped OOTB via Foundation Text, Text&Image components
 Deprecated in 6.5
 Can be leveraged in custom AEM components
 In any mode
8
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Using RTE for different modes in an AEM component
9
Editing mode Location for Touch UI Location for Classic UI How to include RTE in this
mode
Inline cq:editConfig
editorType = ‘text’
Full screen cq:editConfig Not applicable
Dialog cq:dialog dialog Touch UI :
sling:resourceType =
‘cq/gui/components/authoring/dialog/richtex
t’
useFixedInlineToolbar = true
Classic UI :
xtype = ‘richtext’
Full screen
dialog
cq:dialog Not applicable
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Authoring Use Cases and RTE Capabilities
 AEM Content Fragments leverage RTE
10
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Capabilities Demo
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Architecture
12
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Architecture
- Classic UI RTE, Touch UI RTE and Content Fragments share the RTE core
- Same plugin configurations work for both UI, offering seamless migration to Touch
UI
- Extensible to add new plugins
- Selection Handling wraps native browser functionality for consistent browser UX
(even old IE model)
- Dom Handling Utilities work consistently across browsers
- Command-Plugin Architecture allows to enable/disable any single feature or
whole of the plugin
13
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
CoralUI 2 vs CoralUI 3
 CoralUI3 RTE available since 6.3.
 Used by default and recommended.
 All related Clientlibs contain the substring : rte.coralui3
 CoralUI2 RTE is also being shipped till 6.5.
 Can be enabled with simple steps, if required. Not recommended
 All related Clientlibs contain the substring : rte.coralui2
 Seamless migration of configurations and customizations from Coral2 RTE to
Coral3 RTE
 As long as, no private css classes of RTE are used.
14
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
RTE clientlibs
Clientlib Path Purpose
rte.coralui3 /libs/clientlibs/granite/richtext RTE Core and Coral UI
cq.authoring.rte.coralui3 /libs/cq/gui/components/authoring/rte/coralui3 AEM Component
Authoring for RTE
(common to both inline-
editing and dialog)
cq.authoring.dialog.rte.coralui3 /libs/cq/gui/components/authoring/dialog/richtext/clientlibs/rte/coralui3 RTE in Authoring Dialog
specific code
cq.authoring.editor.core.inlineediting.rte.coral
ui3
/libs/cq/gui/components/authoring/editors/clientlibs/core/inlineediting/rte/coralu
i3
Text Inline-editing
cq.rte /libs/cq/ui/rte RTE Core and ExtJS UI
for UI
15
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
UI Config
To add a button/feature on a particular RTE toolbar–
 Enable the Plugin corresponding to that feature for the RTE toolbar
 Use Design Dialog for Core Text component via Template Editor
 Edit using crx/de for other component
 Add that button in an ordered list for that toolbar under uiSettings
Note: Each toolbar can be configured differently to have any buttons on it (via
uiSettings)
16
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
UI Config
d
17
Format plugin enabled
‘format#bold’ - first property on inline toolbar for dialog
Bold button visible as first button on RTE
toolbar
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Core Configs
- pasteRules
- pasteRules.table.ignoreMode
- pasteRules.list.allow
- …
- htmlRules
- htmlRules.links.protocol
- htmlRules.doctype. tagBlacklist
- htmlRules.blockHandling
- …
18
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Configurations Demo
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Latest improvements
 6.3
 dialogFullscreen toolbar mode introduced
 Support for “uneditable” tags like comments, iframes etc. adde
 Doc revamp and re-structuring
 6.4
 Better UI support for mandatory RTE field inside a dialog
 Improved support inside multifield – customStart, required field validation, UI fixes etc.
 6.5
 RTE plugin configuration via Design Dialog applies to both Dialog and Inline editing
 Justify Alignment support added
 Customize only required toolbars. Customization now applies on top of default settings
20
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Best Practices
 Use Inline and floating Dialog mode only for simple plugins with No or small
popovers. For other plugins, Use Fullscreen mode.
21
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Best Practices
 Avoid directly writing Html in source-edit mode as much as possible.
Use plugins to format your text.
22
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Best Practices
 Don’t refer to any private css classes of RTE in your custom plugins’ code
 Private classes start with ‘rte-’ e.g. rte-toolbar-item
 Don’t switch to Coral2 RTE. Fix custom plugin code to remove usage of private
classes
23
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Best Practices
 Don’t embed RTE in page properties console, scaffolding or foundation-forms.
Only works in Component Authoring Dialogs
 While pasting formatted text, use Paste-from-Word feature and only use text
copied from MS Word.
 After pasting text, fix formatting using RTE plugins, if needed
 For other sources, paste it first in MS Word and then copy from there.
 Use latest stable Browser versions
24
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Known Limitations (as of 6.5)
 No Table and Cell styles in Touch UI
 Link Plugin Path Picker doesn’t open with the last saved path selected
 Hybrid Devices are not supported
25
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Troubleshooting of Common scenarios
Q: UI Configurations for Plugins are reflected on RTE toolbars for administrators,
but not content-authors
A: Ensure that the configuration node for RTE is not named as ‘config’. Use ‘configPath’ property
26
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Troubleshooting of Common scenarios
Q: RTE not working correctly inside Multifield
A:
 Check that your multifield implementation code
and node structure are correct.
 Use Coral3 Multifield RTE.
 Don’t mix Coral2 and Coral3 RTs in your
component dialogs.
27
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Troubleshooting of Common scenarios
Q: The html I added in source-edit mode in RTE is lost, when I save and re-open
RTE for editing
A: Verify if you added a XSS prone HTML.
Step1 : Check content node in crx/de if it contains the same html that you saved
Step2 : If yes, Open your page in Preview mode and check Page Source.
If you don’t see expected html, it’s removed due to XSS Antisamy Rules in AEM, not by
RTE.
The XSS Config exists at : /libs/cq/xssprotection/config.xml
It is not recommended to modify this config for security concerns.
28
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Troubleshooting Demo
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Resources
 Configuring RTE UI :
 https://helpx.adobe.com/in/experience-manager/6-4/sites/administering/using/rich-text-editor.html
 Configurations for OOTB RTE Plugins
 https://helpx.adobe.com/in/experience-manager/6-3/sites/administering/using/configure-rich-text-editor-plug-
ins.html
 ExtJS Widget API Doc (provides Core RTE Config JSDoc)
 https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/reference-materials/widgets-
api/index.html
 Core Text Component
 https://docs.adobe.com/content/help/en/experience-manager-core-components/using/components/text.html
 Using RTE in Multifield
 https://helpx.adobe.com/experience-manager/6-5/sites/developing/using/reference-materials/granite-
ui/api/jcr_root/libs/granite/ui/components/coral/foundation/form/multifield/index.html
30
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Q&A
AEM Rich Text Editor (RTE) Deep Dive

Más contenido relacionado

La actualidad más candente

Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsGabriel Walt
 
Sling models by Justin Edelson
Sling models by Justin Edelson Sling models by Justin Edelson
Sling models by Justin Edelson AEM HUB
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
 
SPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesSPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesGabriel Walt
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsStefano Celentano
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAshokkumar T A
 
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6DEEPAK KHETAWAT
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101Adobe
 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMBojana Popovska
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and SlingLo Ki
 
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011Alexander Klimetschek
 
Introduction to Sightly
Introduction to SightlyIntroduction to Sightly
Introduction to SightlyAnkit Gubrani
 
AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAdobeMarketingCloud
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAndrew Khoury
 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core componentsLokesh BS
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentGabriel Walt
 

La actualidad más candente (20)

Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 
Sling models by Justin Edelson
Sling models by Justin Edelson Sling models by Justin Edelson
Sling models by Justin Edelson
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
AEM - Client Libraries
AEM - Client LibrariesAEM - Client Libraries
AEM - Client Libraries
 
SPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesSPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager Sites
 
Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6Basics of Solr and Solr Integration with AEM6
Basics of Solr and Solr Integration with AEM6
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101
 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEM
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
 
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011CQ5 QueryBuilder - .adaptTo(Berlin) 2011
CQ5 QueryBuilder - .adaptTo(Berlin) 2011
 
Introduction to Sightly
Introduction to SightlyIntroduction to Sightly
Introduction to Sightly
 
AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene Indexes
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core components
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
 
slingmodels
slingmodelsslingmodels
slingmodels
 
Spring data
Spring dataSpring data
Spring data
 

Similar a AEM Rich Text Editor (RTE) Deep Dive

Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)Gabriel Walt
 
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)Gabriel Walt
 
UI Customization in AEM 6.0
UI Customization in AEM 6.0UI Customization in AEM 6.0
UI Customization in AEM 6.0Gilles Knobloch
 
User interface customization for aem6 circuit
User interface customization for aem6 circuitUser interface customization for aem6 circuit
User interface customization for aem6 circuitDamien Antipa
 
Max flash based code quality is there a canary in your coal mine-
Max  flash based code quality  is there a canary in your coal mine-Max  flash based code quality  is there a canary in your coal mine-
Max flash based code quality is there a canary in your coal mine-Xavier Agnetti
 
Adobe FrameMaker Workshop TC Camp 2015
Adobe FrameMaker Workshop TC Camp 2015Adobe FrameMaker Workshop TC Camp 2015
Adobe FrameMaker Workshop TC Camp 2015Maxwell Hoffmann
 
Rabix Benten: A language server for Common Workflow Language
Rabix Benten: A language server for Common Workflow LanguageRabix Benten: A language server for Common Workflow Language
Rabix Benten: A language server for Common Workflow LanguageKaushik (koh-shik) Ghose (gHo-sh)
 
User Interface customization for AEM 6
User Interface customization for AEM 6User Interface customization for AEM 6
User Interface customization for AEM 6Damien Antipa
 
Flex360 Milan 2008 - Flex & Webservices
Flex360 Milan 2008 - Flex & WebservicesFlex360 Milan 2008 - Flex & Webservices
Flex360 Milan 2008 - Flex & Webservicesivascucristian
 
comForte CSL: a messaging middleware framework for HP NonStop
comForte CSL: a messaging middleware framework for HP NonStopcomForte CSL: a messaging middleware framework for HP NonStop
comForte CSL: a messaging middleware framework for HP NonStopThomas Burg
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMconnectwebex
 
Magento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh PosyniakMagento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh PosyniakOleg Posyniak
 
Vue3: nuove funzionalità, differenze e come migrare
Vue3: nuove funzionalità, differenze e come migrareVue3: nuove funzionalità, differenze e come migrare
Vue3: nuove funzionalità, differenze e come migrareAndrea Campaci
 
Adobe Stock Integration community project
Adobe Stock Integration community projectAdobe Stock Integration community project
Adobe Stock Integration community projectMagecom UK Limited
 
BP207 - Easy as pie creating widgets for ibm connections
BP207 - Easy as pie   creating widgets for ibm connectionsBP207 - Easy as pie   creating widgets for ibm connections
BP207 - Easy as pie creating widgets for ibm connectionsMikkel Flindt Heisterberg
 
Top 10 IDEs for React.js Developers in 2021
Top 10 IDEs for React.js Developers in 2021Top 10 IDEs for React.js Developers in 2021
Top 10 IDEs for React.js Developers in 2021WrapPixel
 

Similar a AEM Rich Text Editor (RTE) Deep Dive (20)

Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)Modernizing Adobe Experience Manager (AEM)
Modernizing Adobe Experience Manager (AEM)
 
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
Managing Omnichannel Experiences with Adobe Experience Manager (AEM)
 
UI Customization in AEM 6.0
UI Customization in AEM 6.0UI Customization in AEM 6.0
UI Customization in AEM 6.0
 
User interface customization for aem6 circuit
User interface customization for aem6 circuitUser interface customization for aem6 circuit
User interface customization for aem6 circuit
 
Max flash based code quality is there a canary in your coal mine-
Max  flash based code quality  is there a canary in your coal mine-Max  flash based code quality  is there a canary in your coal mine-
Max flash based code quality is there a canary in your coal mine-
 
Adobe FrameMaker Workshop TC Camp 2015
Adobe FrameMaker Workshop TC Camp 2015Adobe FrameMaker Workshop TC Camp 2015
Adobe FrameMaker Workshop TC Camp 2015
 
Rabix Benten: A language server for Common Workflow Language
Rabix Benten: A language server for Common Workflow LanguageRabix Benten: A language server for Common Workflow Language
Rabix Benten: A language server for Common Workflow Language
 
User Interface customization for AEM 6
User Interface customization for AEM 6User Interface customization for AEM 6
User Interface customization for AEM 6
 
Benten: An experimental language server for CWL
Benten: An experimental language server for CWLBenten: An experimental language server for CWL
Benten: An experimental language server for CWL
 
Flex360 Milan 2008 - Flex & Webservices
Flex360 Milan 2008 - Flex & WebservicesFlex360 Milan 2008 - Flex & Webservices
Flex360 Milan 2008 - Flex & Webservices
 
comForte CSL: a messaging middleware framework for HP NonStop
comForte CSL: a messaging middleware framework for HP NonStopcomForte CSL: a messaging middleware framework for HP NonStop
comForte CSL: a messaging middleware framework for HP NonStop
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Magento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh PosyniakMagento Cloud Docker - Universal configuration with Oleh Posyniak
Magento Cloud Docker - Universal configuration with Oleh Posyniak
 
Vue3: nuove funzionalità, differenze e come migrare
Vue3: nuove funzionalità, differenze e come migrareVue3: nuove funzionalità, differenze e come migrare
Vue3: nuove funzionalità, differenze e come migrare
 
Adobe Stock Integration community project
Adobe Stock Integration community projectAdobe Stock Integration community project
Adobe Stock Integration community project
 
BP207 - Easy as pie creating widgets for ibm connections
BP207 - Easy as pie   creating widgets for ibm connectionsBP207 - Easy as pie   creating widgets for ibm connections
BP207 - Easy as pie creating widgets for ibm connections
 
Top 10 IDEs for React.js Developers in 2021
Top 10 IDEs for React.js Developers in 2021Top 10 IDEs for React.js Developers in 2021
Top 10 IDEs for React.js Developers in 2021
 
EVOLVE'15 | Enhance | Bob O'Conner & Kevin Nenning | Capturing Existing Cont...
EVOLVE'15 | Enhance |  Bob O'Conner & Kevin Nenning | Capturing Existing Cont...EVOLVE'15 | Enhance |  Bob O'Conner & Kevin Nenning | Capturing Existing Cont...
EVOLVE'15 | Enhance | Bob O'Conner & Kevin Nenning | Capturing Existing Cont...
 

Último

PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 

Último (20)

PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 

AEM Rich Text Editor (RTE) Deep Dive

  • 1. © 2019 Adobe. All Rights Reserved. Adobe Confidential. AEM Rich Text Editor (RTE) Deep Dive Hanish Bansal | Computer Scientist
  • 2. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Agenda RTE Overview Use Cases and Capabilities Concepts Configuring RTE Best Practices Limitations and Troubleshooting 2
  • 3. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Rich Text Editor Overview - WYSIWIG editing for Authors - Consistent authoring experience for all authors across browsers 3
  • 4. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Rich Text Editor Overview - Rich set of OOTB plugins available for various formatting - Granular configurations - Common Configuration for both Classic UI and Touch UI 4
  • 5. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Authoring Use Cases and RTE Capabilities  Author content in various modes: Inline  Use case : Quick WYSIWIG editing for authors with simple and commonly used features 5
  • 6. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Authoring Use Cases and RTE Capabilities  Author content in various modes: Dialog  Use case: Rich Text property field for Component Dialog 6
  • 7. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Authoring Use Cases and RTE Capabilities  Author content in various modes:  Fullscreen  DialogFullscreen  Use case: Text Editing using all available features (simple or complex) in a full width screen 7
  • 8. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Authoring Use Cases and RTE Capabilities  Available as AEM Core Text component  Highly Recommended, available since 6.3  Open Sourced  RTE Plugins can be enabled/disabled using Design Dialog for Text Component via Template Editor  Shipped OOTB via Foundation Text, Text&Image components  Deprecated in 6.5  Can be leveraged in custom AEM components  In any mode 8
  • 9. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Using RTE for different modes in an AEM component 9 Editing mode Location for Touch UI Location for Classic UI How to include RTE in this mode Inline cq:editConfig editorType = ‘text’ Full screen cq:editConfig Not applicable Dialog cq:dialog dialog Touch UI : sling:resourceType = ‘cq/gui/components/authoring/dialog/richtex t’ useFixedInlineToolbar = true Classic UI : xtype = ‘richtext’ Full screen dialog cq:dialog Not applicable
  • 10. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Authoring Use Cases and RTE Capabilities  AEM Content Fragments leverage RTE 10
  • 11. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Capabilities Demo
  • 12. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Architecture 12
  • 13. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Architecture - Classic UI RTE, Touch UI RTE and Content Fragments share the RTE core - Same plugin configurations work for both UI, offering seamless migration to Touch UI - Extensible to add new plugins - Selection Handling wraps native browser functionality for consistent browser UX (even old IE model) - Dom Handling Utilities work consistently across browsers - Command-Plugin Architecture allows to enable/disable any single feature or whole of the plugin 13
  • 14. © 2019 Adobe. All Rights Reserved. Adobe Confidential. CoralUI 2 vs CoralUI 3  CoralUI3 RTE available since 6.3.  Used by default and recommended.  All related Clientlibs contain the substring : rte.coralui3  CoralUI2 RTE is also being shipped till 6.5.  Can be enabled with simple steps, if required. Not recommended  All related Clientlibs contain the substring : rte.coralui2  Seamless migration of configurations and customizations from Coral2 RTE to Coral3 RTE  As long as, no private css classes of RTE are used. 14
  • 15. © 2019 Adobe. All Rights Reserved. Adobe Confidential. RTE clientlibs Clientlib Path Purpose rte.coralui3 /libs/clientlibs/granite/richtext RTE Core and Coral UI cq.authoring.rte.coralui3 /libs/cq/gui/components/authoring/rte/coralui3 AEM Component Authoring for RTE (common to both inline- editing and dialog) cq.authoring.dialog.rte.coralui3 /libs/cq/gui/components/authoring/dialog/richtext/clientlibs/rte/coralui3 RTE in Authoring Dialog specific code cq.authoring.editor.core.inlineediting.rte.coral ui3 /libs/cq/gui/components/authoring/editors/clientlibs/core/inlineediting/rte/coralu i3 Text Inline-editing cq.rte /libs/cq/ui/rte RTE Core and ExtJS UI for UI 15
  • 16. © 2019 Adobe. All Rights Reserved. Adobe Confidential. UI Config To add a button/feature on a particular RTE toolbar–  Enable the Plugin corresponding to that feature for the RTE toolbar  Use Design Dialog for Core Text component via Template Editor  Edit using crx/de for other component  Add that button in an ordered list for that toolbar under uiSettings Note: Each toolbar can be configured differently to have any buttons on it (via uiSettings) 16
  • 17. © 2019 Adobe. All Rights Reserved. Adobe Confidential. UI Config d 17 Format plugin enabled ‘format#bold’ - first property on inline toolbar for dialog Bold button visible as first button on RTE toolbar
  • 18. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Core Configs - pasteRules - pasteRules.table.ignoreMode - pasteRules.list.allow - … - htmlRules - htmlRules.links.protocol - htmlRules.doctype. tagBlacklist - htmlRules.blockHandling - … 18
  • 19. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Configurations Demo
  • 20. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Latest improvements  6.3  dialogFullscreen toolbar mode introduced  Support for “uneditable” tags like comments, iframes etc. adde  Doc revamp and re-structuring  6.4  Better UI support for mandatory RTE field inside a dialog  Improved support inside multifield – customStart, required field validation, UI fixes etc.  6.5  RTE plugin configuration via Design Dialog applies to both Dialog and Inline editing  Justify Alignment support added  Customize only required toolbars. Customization now applies on top of default settings 20
  • 21. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Best Practices  Use Inline and floating Dialog mode only for simple plugins with No or small popovers. For other plugins, Use Fullscreen mode. 21
  • 22. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Best Practices  Avoid directly writing Html in source-edit mode as much as possible. Use plugins to format your text. 22
  • 23. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Best Practices  Don’t refer to any private css classes of RTE in your custom plugins’ code  Private classes start with ‘rte-’ e.g. rte-toolbar-item  Don’t switch to Coral2 RTE. Fix custom plugin code to remove usage of private classes 23
  • 24. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Best Practices  Don’t embed RTE in page properties console, scaffolding or foundation-forms. Only works in Component Authoring Dialogs  While pasting formatted text, use Paste-from-Word feature and only use text copied from MS Word.  After pasting text, fix formatting using RTE plugins, if needed  For other sources, paste it first in MS Word and then copy from there.  Use latest stable Browser versions 24
  • 25. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Known Limitations (as of 6.5)  No Table and Cell styles in Touch UI  Link Plugin Path Picker doesn’t open with the last saved path selected  Hybrid Devices are not supported 25
  • 26. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Troubleshooting of Common scenarios Q: UI Configurations for Plugins are reflected on RTE toolbars for administrators, but not content-authors A: Ensure that the configuration node for RTE is not named as ‘config’. Use ‘configPath’ property 26
  • 27. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Troubleshooting of Common scenarios Q: RTE not working correctly inside Multifield A:  Check that your multifield implementation code and node structure are correct.  Use Coral3 Multifield RTE.  Don’t mix Coral2 and Coral3 RTs in your component dialogs. 27
  • 28. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Troubleshooting of Common scenarios Q: The html I added in source-edit mode in RTE is lost, when I save and re-open RTE for editing A: Verify if you added a XSS prone HTML. Step1 : Check content node in crx/de if it contains the same html that you saved Step2 : If yes, Open your page in Preview mode and check Page Source. If you don’t see expected html, it’s removed due to XSS Antisamy Rules in AEM, not by RTE. The XSS Config exists at : /libs/cq/xssprotection/config.xml It is not recommended to modify this config for security concerns. 28
  • 29. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Troubleshooting Demo
  • 30. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Resources  Configuring RTE UI :  https://helpx.adobe.com/in/experience-manager/6-4/sites/administering/using/rich-text-editor.html  Configurations for OOTB RTE Plugins  https://helpx.adobe.com/in/experience-manager/6-3/sites/administering/using/configure-rich-text-editor-plug- ins.html  ExtJS Widget API Doc (provides Core RTE Config JSDoc)  https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/reference-materials/widgets- api/index.html  Core Text Component  https://docs.adobe.com/content/help/en/experience-manager-core-components/using/components/text.html  Using RTE in Multifield  https://helpx.adobe.com/experience-manager/6-5/sites/developing/using/reference-materials/granite- ui/api/jcr_root/libs/granite/ui/components/coral/foundation/form/multifield/index.html 30
  • 31. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Q&A

Notas del editor

  1. Various Modes Configuration locations Design Dialog
  2. rtePlugins uiSettings htmlRules