Прикрутить RTE редактор НЕ к ресурсам в админке

Всем привет, сталкивался ли кто-нибудь с такой задачей, когда надо прикрутить html редактор к полю которое не является полем ресурса, в админке?

Есть компонент, у которого 2 поля должны быть с редаткором. Поля редактируются на отдельной странице. Редактор — TinyMCE Rich Text Editor.

Прописал вручную в контроллере update.class.php компонента:

$this->addJavascript('/assets/components/tinymcerte/js/vendor/tinymce/tinymce.min.js');
$this->addJavascript('/assets/components/tinymcerte/js/vendor/autocomplete.js');
$this->addJavascript('/assets/components/tinymcerte/js/mgr/tinymcerte.js');


// Конфиги добавил

TinyMCERTE.editorConfig = {"plugins":"advlist autolink lists modximage charmap print preview anchor visualblocks searchreplace code fullscreen insertdatetime media table contextmenu paste modxlink","toolbar1":"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image","toolbar2":"","toolbar3":"","modxlinkSearch":"\/assets\/components\/tinymcerte\/js\/vendor\/tinymce\/plugins\/modxlink\/search.php","language":"ru","directionality":"ltr","menubar":"file edit insert view format table tools","statusbar":true,"image_advtab":true,"paste_as_text":false,"style_formats_merge":false,"object_resizing":true,"link_class_list":"","browser_spellcheck":false,"content_css":[],"image_class_list":"","skin":"modx","style_formats":[{"title":"Headers","items":[{"title":"Header 1","format":"h1"},{"title":"Header 2","format":"h2"},{"title":"Header 3","format":"h3"},{"title":"Header 4","format":"h4"},{"title":"Header 5","format":"h5"},{"title":"Header 6","format":"h6"}]},{"title":"Inline","items":[{"title":"Bold","icon":"bold","format":"bold"},{"title":"Italic","icon":"italic","format":"italic"},{"title":"Underline","icon":"underline","format":"underline"},{"title":"Strikethrough","icon":"strikethrough","format":"strikethrough"},{"title":"Superscript","icon":"superscript","format":"superscript"},{"title":"Subscript","icon":"subscript","format":"subscript"},{"title":"Code","icon":"code","format":"code"}]},{"title":"Blocks","items":[{"title":"Paragraph","format":"p"},{"title":"Blockquote","format":"blockquote"},{"title":"Div","format":"div"},{"title":"Pre","format":"pre"}]},{"title":"Alignment","items":[{"title":"Left","icon":"alignleft","format":"alignleft"},{"title":"Center","icon":"aligncenter","format":"aligncenter"},{"title":"Right","icon":"alignright","format":"alignright"},{"title":"Justify","icon":"alignjustify","format":"alignjustify"}]}]};

Ext.onReady(function() {
      MODx.load({ xtype: "xtype-страницы компонента"});
      MODx.loadRTE("regulations"); // id поля 
      MODx.loadRTE("info"); // id поля 
});
Поля вызываются так
items: [{
    columnWidth: 1,
    border: false,
    defaults: {
        msgTarget: 'under'
    },
    items: [{
        xtype: 'textarea',
        fieldLabel: 'Общая информация',
        name: 'info',
        anchor: '100%',
        allowBlank: true,
        id: 'info'
    },{
        xtype: 'textarea',
        fieldLabel: 'Правила',
        name: 'regulations',
        anchor: '100%',
        allowBlank: true,
        id: 'regulations'
    }]
}]
Николай Загумённов
29 сентября 2016, 14:04
modx.pro
2
2 934
0
Поблагодарить автора Отправить деньги

Комментарии: 9

Здоров Александр
30 сентября 2016, 07:24
+1
а tv с текстовым редактор ни как не подходят для решения задачи?
    Николай Загумённов
    30 сентября 2016, 07:29
    0
    tv относятся к ресурсу(modResource), а у меня свой объект, своя страница редактирования этого объекта
    Павел Гвоздь
    30 сентября 2016, 08:34
    0
    В консоли че?
    Сергей Шлоков
    30 сентября 2016, 09:01
    1
    +1
    Я думаю, причина в том, что на момент подключения MODx.loadRTE() нет ещё этих полей. Подключать не к чему. Нужно повесить подключение на событие render твоего компонента.
    Для эксперимента попробуй подключить через setTimeout
    Ext.onReady(function() {
    	MODx.load({ xtype: "xtype-страницы компонента"});
    	setTimeout(function(){
    	      MODx.loadRTE("regulations"); // id поля 
    	      MODx.loadRTE("info"); // id поля 
    	},5000); // Сработает через 5 секунд
    });
      Сергей Шлоков
      30 сентября 2016, 09:14
      1
      +1
      Так и есть. MODx.load() просто создает JS компонент. Его нужно отрисовать — show() или render(). Поэтому и не подключается, указанных полей в разметке ещё нет.
      Добавь в свой компонент этот код (после items)
      listeners: {
      	render: function () {
      		MODx.loadRTE("regulations"); // id поля 
      		MODx.loadRTE("info"); // id поля 
      	}
      }
      Думаю, всё заведётся.
        Николай Загумённов
        30 сентября 2016, 15:20
        0
        Круто! Спасибо за помощь!
        У меня только что-то не получилось в одно место вставить код этот. Сработало вот так:
        items: [{
            xtype: 'textarea',
            fieldLabel: 'Общая информация',
            name: 'info',
            anchor: '100%',
            height: 400,
            allowBlank: true,
            id: 'info',
            listeners: {
                render: function () {
                    MODx.loadRTE("info"); // id поля
                }
            }
        },{
            xtype: 'textarea',
            fieldLabel: 'Правила',
            cls: 'modx-richtext',
            name: 'regulations',
            anchor: '100%',
            height: 400,
            allowBlank: true,
            id: 'regulations',
            listeners: {
                render: function () {
                    MODx.loadRTE("regulations"); // id поля
                }
            }
        }]
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9