Konfiguration von Standard-Plugins in TinyMCE auf Connections 6 ändern

Konfiguration von Standard-Plugins in TinyMCE auf Connections 6 ändern

Aktiviert man TinyMCE in Connections 6, wird dieser mit einer Reihe von Plugins ausgeliefert. In der Browser-Konsole kann man sich diese wie folgt anzeigen lassen:

   > tinyMCE.editors[0].settings.plugins
     "a11ychecker accessiblecodeview advcode advlist autolink autoresize casechange charmap directionality emoticons formatpainter fullscreen help hr image link linkchecker lists media mediaembed mentions pageembed permanentpen powerpaste searchreplace table textpattern tinymcespellchecker wordcount powerpaste"

Zwar können neue Plugins über den externalPlugins Array in der config.js Datei eingebunden werden. Doch wie lässt sich die Konfiguration eines bereits geladenen Plugins verändern?

Beispiel: PowerPaste-Plugin konfigurieren

Ein Beispielszenario ist das PowerPaste-Plugin. Standardmäßig blendet es beim Einfügen von formattierten Texten aus Office-Programmen ein Modal-Dialogfenster ein. Der Nutzer muss auswählen, ob er die Formatierungen behalten oder entfernen möchte.

Verantwortlich dafür ist die powerpaste_word_import Eigenschaft, welche automatisch auf promt steht. Wird sie auf clean gesetzt, entfernt das Plugin automatisch sämtliche Formatierungen – etwa Farben. Die semantische Struktur des Dokumentes (z.B. Überschriften) bleibt jedoch erhalten. Somit kann der Nutzer nicht mehr versehentlich die möglicherweise ungewollten Formatierungen übernehmen.

Überschreiben der Konfiguration

Die Lösung ist recht simpel: Wir fügen das Plugin einfach ein zweites Mal in den externalPlugins Array hinzu. Laut HCL und TinyMCE-Support wird hierbei das Plugin nicht erneut geladen, sofern der Name identisch ist. Da hier im Regelfall der Pluginname genutzt wird, ist dieser einfach aus der Doku zu ermitteln. Darüber hinaus muss als URL die lokale Adresse zur Plugin-Datei angegeben werden. Durch die Installation des EAR-Archives liegen die TinyMCE-Plugins im /connections/resources/web/tiny.editors.connections/tinymce/plugins/ Ordner.

Das settings Property erlaubt es, die Eigenschaften des Plugins anzugeben. Dies ist äquivalent zum tinymce.init() Aufruf einer Vanilla-Instanz.

externalPlugins: [
  {
    name: "powerpaste",
    url: "/connections/resources/web/tiny.editors.connections/tinymce/plugins/powerpaste/plugin.min.js",
    settings: {
      powerpaste_word_import: 'clean'
    }
  }
]

Zur besseren Übersicht definiere ich den Plugin-Ordner meist in einer Variable, die hier zur einfacheren Darstellung entfällt. An der grundsätzlichen Funktion ändert sich nichts.

Nach dem Neustart der Common-Anwendung in der WebSphere Web-Konsole (ggf. noch Browser-Cache leeren), sollten formatierte Word-Inhalte nun bereinigt eingefügt werden:

Nicht überschreibbare Eigenschaften

Laut Support könnene auf diese Art alle Eigenschaften überschrieben werden, die nicht bereits von der Connections-Integration selbst spezifiziert wurden. Betroffen sind folgende Eigenschaften:

skin target height min_height autoresize_bottom_margin language directionality convert_urls relative_urls remove_script_host anchor_top anchor_bottom typeahead_urls content_css content_style branding statusbar menubar toolbar toolbar_drawer toolbar_sticky formats style_formats font_formats color_map textpattern_patterns plugins external_plugins theme spellchecker_rpc_url spellchecker_on_load spellchecker_language spellchecker_select_languages spellchecker_active linkchecker_service_url mediaembed_service_url mediaembed_max_width mediaembed_inline_styles paste_as_text powerpaste_allow_local_images powerpaste_block_drop images_upload_handler extended_valid_elements emoticons_append emoticons_database_url emoticons_database_id mentions_selector mentions_select mentions_fetch mentions_menu_hover mentions_menu_complete permanentpen_properties help_tabs setup

Diese lassen sich nicht überschreiben.

Auch auf andere Plugins anwendbar

Dieses Vorgehen kann für alle Plugins angewendet werden: Bei vorhandenen Plugins wird die Konfiguration zusammengeführt. Neue Plugins lädt der Editor. Beim Überschreiben ist zu beachten, dass sich hierdurch nur die Konfiguration überschreiben lässt – nicht aber das Plugin selbst!

Besitzt Connections beispielsweise eine ältere Version eines Plugins und man fügt über die URL-Eigenschaft die Adresse einer neueren Version ein, wird nicht automatisch die neuere Version geladen. Hierzu muss das gesamte TinyMCE-Paket (durch HCL) aktualisiert werden. Zum Anpassen der Standardkonfiguration eignet sich dies jedoch hervorragend: Der Browser muss kein Plugin unnötig mehrfach laden.

Leave a Reply