Подключаем Ace к полям ресурса
На сайте сообщества задали вопрос о том, как подключить редактор кода к полям description и introtext. В своё время я для себя решал такую задачу для поля introtext. Вот делюсь немного доработанным решением как подключить Ace к любым текстовым полям формы ресурса.
Создаём плагин и вешаем его на событие OnDocFormPrerender.
<?php switch ($modx->event->name) { case 'OnDocFormPrerender': if (!$modx->controller->resourceArray) { return; } // Указываем поля, для которых будет подключаться Ace $fields = array('modx-resource-introtext','modx-resource-description'); $mimeType = $modx->getObject('modContentType', $modx->controller->resourceArray['content_type'])->get('mime_type'); if ($mimeType == 'text/html' && $modx->getOption('pdotools_fenom_parser')) { $mimeType = 'text/x-smarty'; } $modxTags = 1; $script = ''; foreach($fields as $field) { $script .= "MODx.ux.Ace.replaceComponent('$field', '$mimeType', $modxTags);"; } $script .= "MODx.ux.Ace.replaceTextAreas(Ext.query('.modx-richtext'));"; // Увеличиваем поле introtext $script .= "Ext.getCmp('modx-resource-introtext').setHeight(150);"; $modx->controller->addHtml('<script>Ext.onReady(function() {' . $script . '});</script>'); break; default: return; }
Данное решение пригодится и для элементов. Нужно лишь изменить событие плагина и mimeType элемента. Подсмотреть это можно в оригинальном плагине Ace.
Комментарии ()
Вы должны авторизоваться, чтобы оставлять комментарии.
Вот скриншот:
yadi.sk/i/vBSNSQB4q97Ftw
В плагине ничего не менял, кроме названия поля.
Надеюсь на помощь, т.к. заказчик уже мозг взрывает ;(
Uncaught TypeError: Cannot read property 'setHeight' of undefined
at ?a=resource/update&id=7333:272
at ext-all.js:21
at b (ext-all.js:21)
Это ругань на строку:
$script .= «Ext.getCmp('modx-resource-info_text').setHeight(150);»;
info_text — это моя твшка. Похоже, я неправильно пишу её в аргумент getCmp.
Но здесь: $fields = array('modx-resource-info_text'); проходит…
Попробовал закомментировать эту строку, ругань исчезла, но ничего не изменилось в админке.
После ctrl+F5 поле и заголовок к нему перестали залезать под табы, видимо, что-то не так закешировалось. Но текст в узкую колонку остался. Он расползается как надо еще и при открытии консоли браузера.