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