SlideShare a Scribd company logo
© 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

More Related Content

What's hot

HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
Prabhdeep Singh
 
Sling models by Justin Edelson
Sling models by Justin Edelson Sling models by Justin Edelson
Sling models by Justin Edelson
AEM HUB
 

What's hot (20)

AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101
 
HTL(Sightly) - All you need to know
HTL(Sightly) - All you need to knowHTL(Sightly) - All you need to know
HTL(Sightly) - All you need to know
 
Sling Models Overview
Sling Models OverviewSling Models Overview
Sling Models Overview
 
Understanding Sling Models in AEM
Understanding Sling Models in AEMUnderstanding Sling Models in AEM
Understanding Sling Models in AEM
 
Modernising AEM Sites Codebase (AEM Meetup 2019)
Modernising AEM Sites Codebase  (AEM Meetup 2019)Modernising AEM Sites Codebase  (AEM Meetup 2019)
Modernising AEM Sites Codebase (AEM Meetup 2019)
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Experience and Content Fragment
Experience and Content FragmentExperience and Content Fragment
Experience and Content Fragment
 
AEM - Client Libraries
AEM - Client LibrariesAEM - Client Libraries
AEM - Client Libraries
 
Osgi
OsgiOsgi
Osgi
 
Sling Models Using Sightly and JSP by Deepak Khetawat
Sling Models Using Sightly and JSP by Deepak KhetawatSling Models Using Sightly and JSP by Deepak Khetawat
Sling Models Using Sightly and JSP by Deepak Khetawat
 
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
 
SPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager SitesSPA Editor - Adobe Experience Manager Sites
SPA Editor - Adobe Experience Manager Sites
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
Sling models by Justin Edelson
Sling models by Justin Edelson Sling models by Justin Edelson
Sling models by Justin Edelson
 
Adobe Experience Manager Core Components
Adobe Experience Manager Core ComponentsAdobe Experience Manager Core Components
Adobe Experience Manager Core Components
 
slingmodels
slingmodelsslingmodels
slingmodels
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
Integration patterns in AEM 6
Integration patterns in AEM 6Integration patterns in AEM 6
Integration patterns in AEM 6
 
AEM Asset and Tag API
AEM Asset and Tag APIAEM Asset and Tag API
AEM Asset and Tag API
 
AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integration
 

Similar to AEM Rich Text Editor (RTE) Deep Dive

User interface customization for aem6 circuit
User interface customization for aem6 circuitUser interface customization for aem6 circuit
User interface customization for aem6 circuit
Damien Antipa
 
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
connectwebex
 

Similar to 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)
 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core components
 
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
 

Recently uploaded

JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
Max Lee
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
mbmh111980
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 

Recently uploaded (20)

JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with StrimziStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
Benefits of Employee Monitoring Software
Benefits of  Employee Monitoring SoftwareBenefits of  Employee Monitoring Software
Benefits of Employee Monitoring Software
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
How To Build a Successful SaaS Design.pdf
How To Build a Successful SaaS Design.pdfHow To Build a Successful SaaS Design.pdf
How To Build a Successful SaaS Design.pdf
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 

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

Editor's Notes

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