Výchozí konfigurace
V Drupalu, lépe řečeno v konfiguraci CKEditor pro text formáty, je možné vybrat si nějaké možnosti pro vkládání, ale nic z toho pořádně nefunguje.
Nepomůžou ani nějaké existující moduly jako CKEditor Pastefromword https://www.drupal.org/project/ckeditor_pastefromword.
Pomůže opravdu až upravení konfigurace CKEditoru.
Úprava konfigurace CKEditoru
Pro CKEditor existují konfigurační volby, které nastavují všechno možné. V Drupalu 8 už ale není možné vkládat konfigurační volby přímo, naštěstí ale pro to existuje modul CKEditor custom config https://www.drupal.org/project/ckeditor_config
Po jeho instalaci (aktuálně verze 8.x-3.0) se ukáže pro text formát s povoleným CKEditorem nová volba CKEditor Custom Configuration:
Náš kód bude obsahovat tři řádky:
pasteFromWordPromptCleanup = false
forcePasteAsPlainText = true
basicEntities = false
První odstraňuje pop-up box s dotazem na vložení, druhý odstraňuje HTML tagy a třetí volba zabrání vkládání .
Ukážeme si to na příkladu. Ve Wordu jsem si vytvořil jednoduchý formátovaný text. Po standardním vložení do to vypadalo takhle:
Po aplikování výše uvedených 3 voleb se vloží pouhý text.
Vlastní modul
V mém případě – kdy mám definováno několik různých text formátů – by bylo výše uvedené třeba nastavit všude. A navíc přes contrib modul. Takže jsem si radši vytvořil vlastní modul, kde se nastavení aplikuje automaticky. Není to nic složitého, je to jen pár řádků při použití hook_editor_js_settings_alter(). kde se nastavuje proměnná editor['editorSettings'].
Závěr
Nakonec tedy CKeditor funguje přesně tak, já chci, a to bez zbytečného obtěžování uživatelů. A vkládání textů z Wordu generuje čistý neformátovaný kód.