Drupal 7 / TinyMCE 3.5.8: обратный вызов paste_preprocess не работает
Drupal 7 с TinyMCE включен через модуль Wysiwyg. "Вставить" включен на экране конфигурации Wysiwyg. Редактор в целом работает нормально, но сейчас я пытаюсь изменить функцию вставки TinyMCE, чтобы убрать все атрибуты из HTML-тегов. (Требование клиента, не спрашивайте.)
Добавили следующее в файл модуля:
function MYMODULE_wysiwyg_editor_settings_alter(&$settings, $context) {
if ($context['profile']->editor == 'tinymce') {
drupal_add_js(drupal_get_path('module', 'MYMODULE').'/js/tinymce_callbacks.js');
$settings['paste_preprocess'] = 'MYMODULE_tinymce_paste_preprocess_callback';
}
}
и создали tinymce_callbacks.js со следующим содержимым:
function MYMODULE_tinymce_paste_preprocess_callback(pl, o) {
alert(o.content);
o.content = "-: CLEANED :-\n" + o.content;
}
Фактическая кнопка вставки TinyMCE работает только с IE, но сочетание клавиш ctrl-V работает с каждым браузером. Однако обратный вызов не вызывается.
Я немного покопался. Параметр paste_preprocess определенно добавляется в правильный объект JavaScript, но единственный код, который ссылается на него - плагин TinyMCE Paste - не загружается. Похоже, проблема в Drupal, а не в TinyMCE.
Любая помощь, заставляющая Drupal правильно загружать плагины TinyMCE, была бы очень признательна.
1 ответ
Убедитесь, что плагин TinyMCE для вставки действительно загружается. По какой-то причине в Drupal есть запись под "Кнопки и плагины" под названием "Вставить". Это, однако, НЕ включает плагин "paste", необходимый для обратного вызова предварительной обработки вставки.
Вместо этого убедитесь, что включен параметр "Вставить текст" или "Вставить из Word". Это должно привести к загрузке плагина "paste" и обратному вызову предварительной обработки вставки.