Прикрутить RTE редактор НЕ к ресурсам в админке
Всем привет, сталкивался ли кто-нибудь с такой задачей, когда надо прикрутить html редактор к полю которое не является полем ресурса, в админке?
Есть компонент, у которого 2 поля должны быть с редаткором. Поля редактируются на отдельной странице. Редактор — TinyMCE Rich Text Editor.
Прописал вручную в контроллере update.class.php компонента:
Есть компонент, у которого 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'
}]
}]
Поблагодарить автора
Отправить деньги
Комментарии: 9
а tv с текстовым редактор ни как не подходят для решения задачи?
tv относятся к ресурсу(modResource), а у меня свой объект, своя страница редактирования этого объекта
В консоли че?
Пусто
Эти твои поля где располагаются? Неужто в модальном окне?..
Поля редактируются на отдельной странице.Нет)
Я думаю, причина в том, что на момент подключения MODx.loadRTE() нет ещё этих полей. Подключать не к чему. Нужно повесить подключение на событие render твоего компонента.
Для эксперимента попробуй подключить через setTimeout
Для эксперимента попробуй подключить через setTimeout
Ext.onReady(function() {
MODx.load({ xtype: "xtype-страницы компонента"});
setTimeout(function(){
MODx.loadRTE("regulations"); // id поля
MODx.loadRTE("info"); // id поля
},5000); // Сработает через 5 секунд
});
Так и есть. MODx.load() просто создает JS компонент. Его нужно отрисовать — show() или render(). Поэтому и не подключается, указанных полей в разметке ещё нет.
Добавь в свой компонент этот код (после items)
Добавь в свой компонент этот код (после items)
listeners: {
render: function () {
MODx.loadRTE("regulations"); // id поля
MODx.loadRTE("info"); // id поля
}
}
Думаю, всё заведётся.
Круто! Спасибо за помощь!
У меня только что-то не получилось в одно место вставить код этот. Сработало вот так:
У меня только что-то не получилось в одно место вставить код этот. Сработало вот так:
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 поля
}
}
}]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.