I was trying to create a multifield touch ui text component in AEM 6.2.
I created it by adding a field with the following resource type:
<test
jcr:primaryType="nt:unstructured"
sling:resourceType="cq/gui/components/authoring/dialog/richtext"
fieldLabel="Touch Ui Text"
name="./test"
renderReadOnly="{Boolean}true"/>
It worked.But I have to add styles as a plugin in my mutifield text component which I am unable to do.
How to add the plugins just like we add rte plugins in classic ui?
I need to provide various styles in the rich text editor as part of multifield.
Thanks for helping!
It appears the option to use custom styles in the Rich Text Editor was removed in Touch UI, as per the AEM 6.0 documentation.
The following plugin/feature combinations are not supported with the touch-optimized UI:
edit
image
sourceedit
styles
table
Thankfully, they're back in AEM 6.2. I'm not sure about 6.1, they're probably also supported.
The documentation for AEM 6.2 describes the steps necessary to enable the Styles RTE Plugin. It took me a lot of reading but I managed to get the Styles plugin working.
In way of a TL;DR I can only say that the styles configuration follows the same format as in case of Classic UI and that you also need to pay attention to the uiSettings for your component as they drive the visibility of buttons in Touch UI.
Here's an example field configuration (rest of the cq:dialog omitted for brevity:
<text jcr:primaryType="nt:unstructured"
name="./text"
sling:resourceType="cq/gui/components/authoring/dialog/richtext"
useFixedInlineToolbar="true">
<rtePlugins jcr:primaryType="nt:unstructured">
<format jcr:primaryType="nt:unstructured" features="*"/>
<justify jcr:primaryType="nt:unstructured" features="*"/>
<lists jcr:primaryType="nt:unstructured" features="*"/>
<links jcr:primaryType="nt:unstructured" features="*"/>
<styles jcr:primaryType="nt:unstructured" features="styles">
<styles jcr:primaryType="cq:WidgetCollection">
<warning jcr:primaryType="nt:unstructured" cssName="warning" text="Warning"/>
<note jcr:primaryType="nt:unstructured" cssName="note" text="Note"/>
<header jcr:primaryType="nt:unstructured" cssName="header" text="Header"/>
</styles>
</styles>
<paraformat jcr:primaryType="nt:unstructured" features="*">
<formats jcr:primaryType="cq:WidgetCollection">
<paragraph jcr:primaryType="nt:unstructured" description="Paragraph" tag="p"/>
<heading1 jcr:primaryType="nt:unstructured" description="Heading 1" tag="h1"/>
</formats>
</paraformat>
</rtePlugins>
<uiSettings jcr:primaryType="nt:unstructured">
<cui jcr:primaryType="nt:unstructured">
<inline jcr:primaryType="nt:unstructured">
<popovers jcr:primaryType="nt:unstructured">
<justify jcr:primaryType="nt:unstructured" ref="justify"/>
<lists jcr:primaryType="nt:unstructured" ref="lists"/>
<paraformat jcr:primaryType="nt:unstructured" items="paraformat:getFormats:paraformat-pulldown" ref="paraformat"/>
<styles jcr:primaryType="nt:unstructured" items="styles:getStyles:styles-pulldown" ref="styles"/>
</popovers>
</inline>
</cui>
</uiSettings>
</text>
Note the elements in text/rtePlugins/styles and text/uiSettings/cui/inline/popovers/styles.
Here's how it looks on the page:
Add this
<rtePlugins jcr:primaryType="nt:unstructured">
<styles
jcr:primaryType="nt:unstructured"
features="*">
<styles jcr:primaryType="cq:WidgetCollection">
<style1
jcr:primaryType="nt:unstructured"
cssName="style1"
text="style1"/>
<style2
jcr:primaryType="nt:unstructured"
cssName="style2"
text="style2"/>
<section--title>
</styles>
</styles>
</rtePlugins>
Related
I'd like to hide a property within a certain tab that is inherited from /libs/wcm/foundation/components/basicpage/v1/basicpage (e.g. hideInNav property in basic tab).
This change should only affect one page-rendering component, so I don't want to do an overlay of the Foundation page dialog in /apps/foundation/components/basicpage/v1/basicpage/tabs/basic. Therefore I tried using sling:hideChildren, but I did not manage to accomplish to make it work.
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured">
<content jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<tabs jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<basic jcr:primaryType="nt:unstructured">
<!-- that does not work either -->
<items jcr:primaryType="nt:unstructured" sling:hideChildren="*">
<column jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<title jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<!-- that does not work -->
<title jcr:primaryType="nt:unstructured" sling:hideProperties="*"/>
</items>
</title>
<!-- that does not work -->
<moretitles
cq:showOnCreate="{Boolean}false"
cq:hideOnEdit="{Boolean}true"
jcr:primaryType="nt:unstructured">
</moretitles>
</items>
</column>
</items>
</basic>
<!-- that works -->
<advanced jcr:primaryType="nt:unstructured" sling:hideResource="{Boolean}true"/>
</items>
</tabs>
</items>
</content>
</jcr:root>
Okay, figured out a solution (for AEM 6.4). You have to use the Resource Merger with an override:
The override is absolutely necessary to merge the properties from the inherited page with the properties of the super/parent page! And it requires an absolute path.
<basic jcr:primaryType="nt:unstructured" path="/mnt/override/apps/[...]/components/basepage/tabs/basic"/>
The XML file of the tabs works as you would expect it to work and you can use sling:hideChildren and all the other properties:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:granite="http://www.adobe.com/jcr/granite/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<column jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<title jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured" sling:hideChildren="[hideinnav]" />
</title>
<moretitles jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured" sling:hideChildren="[pagetitle,navigationtitle,subtitle]"/>
</moretitles>
</items>
</column>
</items>
</jcr:root>
Example from Adobe. This commit helped me understand the differences between 6.1 and 6.4:
https://github.com/Adobe-Marketing-Cloud/aem-authoring-extension-page-dialog/commit/aaa6035c8cdfcfaeb5e2157be436e1fccfbe22db
I am setting up a dialog that has the following fields -
1. A field to accept image as an input
2. A field to accept a title
3. A field that will accept richtext.
Please note that I do not want to enable inplace editing. I just want to add a richtext field (with all features enabled) in my dialog and use the data entered in this field in my component.
I am able to implement 1. and 2. but dont know how to go about 3.
Here is my code -
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured"
jcr:title="Section Container"
sling:resourceType="cq/gui/components/authoring/dialog">
<content
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<layout
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/layouts/tabs"
type="nav"/>
<items jcr:primaryType="nt:unstructured">
<Styling
jcr:primaryType="nt:unstructured"
jcr:title="Styling"
sling:resourceType="granite/ui/components/foundation/section">
<layout
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/>
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<items jcr:primaryType="nt:unstructured">
<question_single
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textfield"
fieldDescription="Please enter the Question"
fieldLabel="Question for Single"
name="./question_single"/>
<question_couple
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textfield"
fieldDescription="Please enter the Question"
fieldLabel="Question for Couple Applicants"
name="./question_couple"/>
<page_header
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textfield"
fieldDescription="Please enter page header"
fieldLabel="Page Header"
name="./page_header"/>
</items>
</column>
</items>
</Styling>
<image
jcr:primaryType="nt:unstructured"
jcr:title="Image Properties"
sling:resourceType="granite/ui/components/foundation/section">
<layout
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"
margin="{Boolean}false"/>
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<items jcr:primaryType="nt:unstructured">
<file
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/fileupload"
autoStart="{Boolean}false"
class="cq-droptarget"
fieldLabel="Image asset"
fileNameParameter="./image/fileName"
fileReferenceParameter="./image/fileReference"
mimeTypes="[image]"
multiple="{Boolean}false"
name="./image/file"
title="Upload Image Asset"
uploadUrl="${suffix.path}"
useHTML5="{Boolean}true"/>
<title
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textfield"
fieldLabel="Title"
name="./image/jcr:title"/>
</items>
</column>
</items>
</image>
</items>
</content>
</jcr:root>
Please ignore the fields in the first tab. richtext field needs to be added to the second tab.
Please help!
Thanks in Advance!
Adobe recommends to use the richtext field using the InPlaceEditing/Full Screen Editing instead of adding the fields in the dialog as the complete functionality is covered by In-place/Full-screen editing.
Click Here for the reference from Adobe Docs.
However, if you really wish to use the RTE field inside your dialog, you can make use of the sling:resourceType="cq/gui/components/authoring/dialog/richtext" property to do the same.
See sample code below (the code refers to a richtext field in the touch UI dialog, simply put this piece of code in your touch UI dialog xml at the relevant place to make the dialog work).
<description
jcr:primaryType="nt:unstructured"
sling:resourceType="cq/gui/components/authoring/dialog/richtext"
name="./rteTextPropertyName"
useFixedInlineToolbar="{Boolean}true">
<rtePlugins jcr:primaryType="nt:unstructured">
<subsuperscript
jcr:primaryType="nt:unstructured"
features="*"/>
<format
jcr:primaryType="nt:unstructured"
features="*"/>
<justify
jcr:primaryType="nt:unstructured"
features="*"/>
<spellcheck
jcr:primaryType="nt:unstructured"
features="*"/>
<misctools
jcr:primaryType="nt:unstructured"
features="[specialchars]">
<specialCharsConfig jcr:primaryType="nt:unstructured">
<chars jcr:primaryType="nt:unstructured">
<copyright
jcr:primaryType="nt:unstructured"
entity="©"/>
<trademark
jcr:primaryType="nt:unstructured"
entity="™"/>
<registered
jcr:primaryType="nt:unstructured"
entity="®"/>
<emDash
jcr:primaryType="nt:unstructured"
entity="—"/>
<pound
jcr:primaryType="nt:unstructured"
entity="£"/>
<nbsp
jcr:primaryType="nt:unstructured"
entity=" "/>
</chars>
</specialCharsConfig>
</misctools>
</rtePlugins>
<uiSettings jcr:primaryType="nt:unstructured">
<cui jcr:primaryType="nt:unstructured">
<inline
jcr:primaryType="nt:unstructured"
toolbar="[format#bold,format#italic,format#underline,#paraformat,image#imageProps,#justify,#lists,links#modifylink,links#unlink,findreplace#find,findreplace#replace,subsuperscript#subscript,subsuperscript#superscript,spellcheck#checktext,misctools#specialchars]">
<popovers jcr:primaryType="nt:unstructured">
<justify
jcr:primaryType="nt:unstructured"
items="[justify#justifyleft]"
ref="justify"/>
<lists
jcr:primaryType="nt:unstructured"
items="[lists#unordered,lists#ordered,lists#outdent,lists#indent]"
ref="lists"/>
<paraformat
jcr:primaryType="nt:unstructured"
items="paraformat:getFormats:paraformat-pulldown"
ref="paraformat"/>
</popovers>
</inline>
</cui>
</uiSettings>
</description>
P.S.: I have added only a few RTE plugins keeping the length of the sample code in mind. You can add other plugins as needed.
Make sure to provide the correct context if reading the property in sightly (in here html), see below:
${properties.rteTextPropertyName #context = 'html'}
If I´m building a dialog with only one input field the dialog will not show up in the author.
Here is my example code (headline_dialog.xml):
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured"
sling:resourceType="cq/gui/components/authoring/dialog">
<content
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<layout
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/>
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<items jcr:primaryType="nt:unstructured">
<text
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textarea"
fieldLabel="Überschrift Text"
name="./text"
fieldDescription="Bitte pflegen Sie hier den Textinhalt Ihrer Überschrift."/>
</items>
</column>
</items>
</content>
</jcr:root>
This is what we will see in the author:
If I´m adding now a second input field to the dialog. The Dialog will show up in the author:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured"
sling:resourceType="cq/gui/components/authoring/dialog">
<content
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<layout
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/>
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<items jcr:primaryType="nt:unstructured">
<text
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textarea"
fieldLabel="Überschrift Text"
name="./text"
fieldDescription="Bitte pflegen Sie hier den Textinhalt Ihrer Überschrift."/>
<example
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/textfield"
fieldLabel="Dummy"
name="./example"
value="exampletext"
disabled="true"
fieldDescription="Dummy Text"/>
</items>
</column>
</items>
</content>
</jcr:root>
Now we see the Dialog correctly:
Is that a bug in the new touch-UI? Or did I make a mistake in the first dialog XML file?
I am designing a dialog in which i want the radio buttons displayed horizontally and not vertically, so that appear in a single line. Any ideas how to achieve this.
Below is my dialog.xml.
<items
jcr:primaryType="cq:Widget"
xtype="tabpanel">
<items jcr:primaryType="cq:WidgetCollection">
<tab1
jcr:primaryType="cq:Panel"
title="Slider">
<items jcr:primaryType="cq:WidgetCollection">
<typeconfigs
jcr:primaryType="cq:Widget"
fieldLabel="Select Videos"
name="./options"
xtype="customconfigmultifield">
<fieldConfigs jcr:primaryType="cq:WidgetCollection">
<gridlayout
jcr:primaryType="cq:Widget"
itemId="dispotions"
name="selcttab"
type="radio"
xtype="selection">
<options jcr:primaryType="cq:WidgetCollection">
<grid1
jcr:primaryType="nt:unstructured"
text="grid1"
value="grid1"/>
<grid2
jcr:primaryType="nt:unstructured"
text="grid2"
value="grid2"/>
<grid3
jcr:primaryType="nt:unstructured"
text="grid3"
value="grid3"/>
<grid4
jcr:primaryType="nt:unstructured"
text="grid4"
value="grid4"/>
</options>
</gridlayout>
</fieldConfigs>
<limit
jcr:primaryType="nt:unstructured"
maxVal="{Long}6"/>
</typeconfigs>
</items>
</tab1>
</items>
Thanks
You can try using ExtJS Layouts for the same. There are various ways of configuring the same, one of which could be using an hbox layout as shown below.
Use the layout config available for Selection Widget and set its value to hbox. Then use the optionsConfig to set the width that applies to each radio box. Since the optionsConfig accepts an object, create it is a child node of your selection and then set the required styles.
Sample Dialog Structure shown below.
<gridlayout
jcr:primaryType="cq:Widget"
itemId="dispotions"
name="selcttab"
type="radio"
xtype="selection"
layout="hbox">
<options jcr:primaryType="cq:WidgetCollection">
<grid1
jcr:primaryType="nt:unstructured"
text="grid1"
value="grid1"/>
<grid2
jcr:primaryType="nt:unstructured"
text="grid2"
value="grid2"/>
<grid3
jcr:primaryType="nt:unstructured"
text="grid3"
value="grid3"/>
<grid4
jcr:primaryType="nt:unstructured"
text="grid4"
value="grid4"/>
</options>
<optionsConfig
jcr:primaryType="nt:unstructured"
width="60" />
</gridlayout>
This solution works in general, however, i notice that there is a custom widget customconfigmultifield defined under which you are configuring a selection field. So you might need to tweak your styles accordingly.
I am using 5.4. I'm attempting to add a style to the drop down style box on the rte. I followed the instructions found on http://docs.adobe.com/docs/en/cq/5-4/administering/configuring_rich_text_editor.html. After adding the node under text/rtePlugins/styles/styles, all of the options for the plugin are disabled. The buttons (such as the bold, italics, underline, etc...) are no longer clickable. While I can still select styles from the paraformat and style drop downs, they do not change the appearance of my text. Moreover, although I can change the text in the rte, the changes are not reflected in the page after I click ok.
I have attached a snapshot of my node hierarchy for the dialog node. Please let me know if I should include any other information.
Thanks!
Did you create this whole structure by yourself or copy it from somewhere?
What you need to be sure is to enable some features per type (or all by using *):
Here an example for the styles node:
<styles
jcr:primaryType="nt:unstructured"
features="*">
<styles jcr:primaryType="cq:WidgetCollection">
[...]
</styles>
</styles>
This has to be true for all the other nodes, but if you do not copy them at all you should have all features active again as well.
For having your custom style available in the RTE you also need to provide a CSS file on the text node with the following property.
externalStyleSheets="[{path_to_your_stylesheet}]"
I recommend to create one just for the RTE with just the styles you add in the styles list.
I followed the instructions here, and it worked for me:
http://docs.adobe.com/docs/en/cq/5-4/administering/configuring_rich_text_editor.html#Styles (Text)
The resulting dialog looked like this:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="cq:Dialog"
externalStyleSheets="[/etc/designs/myDesign/css/my_colors.css]"
height="500"
width="700"
xtype="dialog">
<items
jcr:primaryType="nt:unstructured"
helpPath="en/cq/current/wcm/default_components.html#Text"
title="Text"
xtype="tabpanel">
<items jcr:primaryType="cq:WidgetCollection">
<tab1
jcr:primaryType="cq:Widget"
anchor="100%"
height="350"
title="Text"
xtype="panel">
<items jcr:primaryType="cq:WidgetCollection">
<text
jcr:primaryType="cq:Widget"
allowBlank="false"
blankText=""
disabled="false"
emptyText=""
fieldDescription=""
fieldLabel=""
fieldSubLabel=""
grow="false"
height="{Long}350"
hideLabel="true"
hideMode=""
inputType=""
maxLength=""
maxLengthText=""
minLength=""
minLengthText=""
msgTarget=""
name="./text"
readOnly="false"
regex=""
regexText=""
selectOnFocus="false"
validateOnBlur="true"
validationDelay=""
validationEvent=""
validator=""
vtype=""
vtypeText=""
xtype="richtext">
<rtePlugins jcr:primaryType="nt:unstructured">
<links jcr:primaryType="nt:unstructured">
<linkDialogConfig
jcr:primaryType="nt:unstructured"
height="316">
<linkAttributes jcr:primaryType="cq:WidgetCollection">
<linkAdvanced
jcr:primaryType="cq:Widget"
collapsed="true"
collapsible="true"
inputValue="advanced"
name="./linkdialog/cq:adhocLinkTrackingTab"
title="Link tracking"
xtype="dialogfieldset">
<items jcr:primaryType="cq:WidgetCollection">
<enable
jcr:primaryType="nt:unstructured"
attribute="enabletracking"
fieldDescription="override analytics framework settings"
fieldLabel="Custom link tracking"
name="./linkdialog/cq:adhocLinkTrackingEnableTracking"
xtype="checkbox">
<listeners
jcr:primaryType="nt:unstructured"
check="function(component){var dlg=component.findParentByType('rtelinkdialog');dlg.enableSCFields(component.checked);}"/>
</enable>
<events
jcr:primaryType="nt:unstructured"
attribute="adhocevents"
fieldDescription="e.g.: event2, event7"
fieldLabel="Include SiteCatalyst events"
name="./linkdialog/cq:adhocLinkTrackingEvents"
xtype="textfield"/>
<evars
jcr:primaryType="nt:unstructured"
attribute="adhocevars"
fieldDescription="e.g.: eVar1: pagedata.url, prop4: 'const'"
fieldLabel="Include SiteCatalyst variables"
name="./linkdialog/cq:adhocLinkTrackingEvars"
xtype="textfield"/>
</items>
</linkAdvanced>
</linkAttributes>
</linkDialogConfig>
</links>
<misctools
jcr:primaryType="nt:unstructured"
features="*"/>
<edit
jcr:primaryType="nt:unstructured"
features="*"/>
<findreplace
jcr:primaryType="nt:unstructured"
features="*"/>
<format
jcr:primaryType="nt:unstructured"
features="*"/>
<image
jcr:primaryType="nt:unstructured"
features="*"/>
<keys
jcr:primaryType="nt:unstructured"
features="*"/>
<justify
jcr:primaryType="nt:unstructured"
features="*"/>
<lists
jcr:primaryType="nt:unstructured"
features="*"/>
<paraformat
jcr:primaryType="nt:unstructured"
features="*"/>
<spellcheck
jcr:primaryType="nt:unstructured"
features="*"/>
<styles
jcr:primaryType="nt:unstructured"
features="*">
<styles jcr:primaryType="cq:WidgetCollection">
<Aqua
jcr:primaryType="nt:unstructured"
cssName="Aqua"
text="Aqua"/>
</styles>
</styles>
<subsuperscript
jcr:primaryType="nt:unstructured"
features="*"/>
<table
jcr:primaryType="nt:unstructured"
features="*"/>
<undo
jcr:primaryType="nt:unstructured"
features="*"/>
</rtePlugins>
</text>
<isRichTextFlag
jcr:primaryType="cq:Widget"
ignoreData="true"
name="./textIsRich"
value="true"
xtype="hidden"/>
</items>
</tab1>
<tab2
jcr:primaryType="cq:Widget"
xtype="componentstyles"/>
</items>
</items>
</jcr:root>
The only items added to the original dialog, was the "externalStyleSheets" attribute on the "jcr:root" node (you should map this to your style sheet):
externalStyleSheets="[/etc/designs/myDesign/css/my_colors.css]"
And the node:
<styles
jcr:primaryType="nt:unstructured"
features="*">
<styles jcr:primaryType="cq:WidgetCollection">
<Aqua
jcr:primaryType="nt:unstructured"
cssName="Aqua"
text="Aqua"/>
</styles>
</styles>
The "cssName" attribute must match your css style name (and NOT be preceeded by a "."), the "text" attribute can be anything you want, it will be what appears in the drop-down.
my_colors.css looks like this:
.Aqua { color: Aqua; }
Hope this helps,
-- Joel.