Studio Developer Manual / Version 2404
Table Of ContentsIn this example, you will learn, how to introduce a new configuration and use it for an extended editing feature for a given rich text property.
The example is based on Section 10.3.11, “Customizing ckeditorDefault.ts By Example”: Here, you want to apply the same plugin but only make it available to a dedicated content property.
Proceed as follows:
1. Copy And Adapt the Configuration
You start with copying ckeditorDefault.ts to
ckeditorCustom.ts. For consistency, it is recommended
to also adapt the name of the factory method
createDefaultCKEditor. Rename it to
createCustomCKEditor.
After that, you apply the same adaptations to the CKEditor 5 instance as described in Section 10.3.11, “Customizing ckeditorDefault.ts By Example”.
So, now you have a custom CKEditor 5 configuration with the Highlight plugin enabled.
2. Propagate the Configuration
At the same path as ckeditorDefault.ts you will find a file
ckeditor.ts. We expose the factory method in here
as shown in
Example 10.24, “Adapting ckeditor.ts”.
/* ... */
export { createDefaultCKEditor } from "./ckeditorDefault";
export { createCustomCKEditor } from "./ckeditorCustom";
/* ... */
Example 10.24. Adapting ckeditor.ts
Now, for referencing the new CKEditor 5 instance within Ext JS components
such as rich text property fields, you need to expose it in
init.ts of @coremedia-blueprint/studio-client.main.ckeditor5-plugin as
can be seen in
Example 10.25, “Adapting init.ts”.
import { createDefaultCKEditor, createCustomCKEditor, /* ... */ } from
"@coremedia-blueprint/studio-client.ckeditor5/";
/* ... */
richTextAreaRegistry.registerRichTextArea(
RichTextAreaConstants.CKE5_EDITOR,
Config(CKEditor5RichTextArea, {
editorTypeMap: new Map([
[
CKEditorTypes.DEFAULT_EDITOR_TYPE,
createDefaultCKEditor
],
[
"custom",
createCustomCKEditor
],
/* ... */
]),
})
);
Example 10.25. Adapting init.ts
3. Use the Configuration
You want to apply the Highlight
feature when editing the detailText of content-type
CMTeasable. Thus, you need to adapt
DetailsDocumentForm of package
@coremedia-blueprint/studio-client.main.blueprint-forms.
The change is as simple as the previous steps. In the
items of the DetailsDocumentForm
you will find a RichTextPropertyField. As this
does not explicitly set an editorType it uses the default
CKEditor 5 instance instead.
Now simply add a reference to your new editorType
as registered in init.ts mentioned above. Thus,
the result will be similar as shown in
Example 10.26, “Adapting DetailsDocumentForm”.
/* ... */
class DetailsDocumentForm extends PropertyFieldGroup {
/* ... */
constructor(config: Config<DetailsDocumentForm> = null) {
super(ConfigUtils.apply(Config(DetailsDocumentForm, {
/* ... */
items: [
/* ... */
Config(RichTextPropertyField, {
bindTo: config.bindTo,
itemId: "detailText",
propertyName: "detailText",
editorType: "custom", // Enable Highlight Plugin
initialHeight: 200,
}),
],
/* ... */
}), config));
}
}
/* ... */
Example 10.26. Adapting DetailsDocumentForm
Now you are ready applying highlights to your text.


