Drupal 8 a CKeditor - jak zrušit vkládání formátovaného text z Wordu

Pokud vkládáte (CTRL+V )do políčka s CKeditorem text z Wordu, dost často se tam dostane nějaký nechtěný kód, jak spany … Chtít po uživatelích si pamatovat a používat zkratku CTRL+SHIFT+V je v praxi nereálné. Naštěstí samotný CKEditor to umí, teď jenom jak se to dělá v Drupalu.

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.

33ckeditor paste options

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:

33CKEditor 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:

33Word paste pop-up

33paste with formatting

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'].

33custom module

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.