Pulsante personalizzato sulla barra degli strumenti dell’Editor Rich Text

Scopri come aggiungere un pulsante personalizzato alla barra degli strumenti dell’Editor Rich Text (RTE) nell’Editor frammenti di contenuto AEM.

I pulsanti personalizzati possono essere aggiunti alla barra degli strumenti Editor Rich Text nell'Editor frammenti di contenuto utilizzando il punto di estensione rte. In questo esempio viene illustrato come aggiungere un pulsante personalizzato denominato Aggiungi suggerimento alla barra degli strumenti dell'editor Rich Text e modificare il contenuto dell'editor Rich Text.

Utilizzando il metodo getCustomButtons() del punto di estensione di rte è possibile aggiungere uno o più pulsanti personalizzati alla barra degli strumenti Editor Rich Text. È inoltre possibile aggiungere o rimuovere pulsanti standard dell'editor Rich Text come Copia, Incolla, Grassetto e Corsivo utilizzando i metodi getCoreButtons() e removeButtons) rispettivamente.

In questo esempio viene illustrato come inserire una nota o un suggerimento evidenziato utilizzando il pulsante personalizzato Aggiungi suggerimento della barra degli strumenti. Il contenuto della nota o del suggerimento evidenziato presenta una formattazione speciale applicata tramite elementi HTML e le classi CSS associate. Il contenuto segnaposto e il codice HTML vengono inseriti utilizzando il metodo di callback onClick() di getCustomButtons().

Punto di estensione

Questo esempio si estende al punto di estensione rte per aggiungere un pulsante personalizzato alla barra degli strumenti dell’editor Rich Text nell’Editor frammento di contenuto.

Interfaccia utente AEM estesa
Punto di estensione
Editor frammento di contenuto
Barra degli strumenti Editor Rich Text

Estensione di esempio

Nell'esempio seguente viene creato un pulsante personalizzato Aggiungi suggerimento nella barra degli strumenti dell'editor Rich Text. L’azione clic inserisce il testo segnaposto nella posizione corrente del punto di inserimento nell’editor Rich Text.

Il codice mostra come aggiungere il pulsante personalizzato con un’icona e registrare la funzione di gestione dei clic.

Registrazione dell’estensione

ExtensionRegistration.js, mappato alla route index.html, è il punto di ingresso per l'estensione AEM e definisce:

  • Definizione del pulsante della barra degli strumenti dell'editor Rich Text nella funzione getCustomButtons() con attributi id, tooltip and icon.
  • Gestore di clic per il pulsante, nella funzione onClick().
  • La funzione del gestore di clic riceve l'oggetto state come argomento per ottenere il contenuto dell'editor Rich Text in formato HTML o testo. Tuttavia, in questo esempio non viene utilizzato.
  • La funzione del gestore di clic restituisce un array di istruzioni. Questo array ha un oggetto con type e value attributi. Per inserire il contenuto, lo snippet di codice HTML degli attributi value, l'attributo type utilizza insertContent. Se esiste un caso d'uso per sostituire il contenuto, il caso d'uso è il tipo di istruzione replaceContent.

Il valore insertContent è una stringa HTML, <div class=\"cmp-contentfragment__element-tip\"><div>TIP</div><div>Add your tip text here...</div></div>. Le classi CSS cmp-contentfragment__element-tip utilizzate per visualizzare il valore non sono definite nel widget, ma implementate nell'esperienza Web in cui viene visualizzato il campo Frammento di contenuto.

src/aem-cf-editor-1/web-src/src/components/ExtensionRegistration.js

import React from "react";
import { Text } from "@adobe/react-spectrum";
import { register } from "@adobe/uix-guest";
import { extensionId } from "./Constants";

// This function is called when the extension is registered with the host and runs in an iframe in the Content Fragment Editor browser window.
function ExtensionRegistration() {
  const init = async () => {
    const guestConnection = await register({
      id: extensionId,
      methods: {
        rte: {
          // RTE Toolbar custom button
          getCustomButtons: () => [
            {
              id: "wknd-cf-tip", // Provide a unique ID for the custom button
              tooltip: "Add Tip", // Provide a label for the custom button
              icon: "Note", // Provide an icon for the button (see https://spectrum.adobe.com/page/icons/ for a list of available icons)
              onClick: (state) => {
                // Provide a click handler function that returns the instructions array with type and value. This example inserts the HTML snippet for TIP content.
                return [
                  {
                    type: "insertContent",
                    value:
                      '<div class="cmp-contentfragment__element-tip"><div>TIP</div><div>Add your tip text here...</div></div>',
                  },
                ];
              },
            },
          ],
        },
      },
    });
  };

  init().catch(console.error);

  return <Text>IFrame for integration with Host (AEM)...</Text>;
}

export default ExtensionRegistration;
recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69