К содержанию

Прикрутить 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
3 761
Поблагодарить автора Отправить деньги
Реклама

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

Здоров Александр
Здоров Александр Проверенный
30 сентября 2016, 07:24
а tv с текстовым редактор ни как не подходят для решения задачи?
    Николай Загумённов
    Николай Загумённов Проверенный
    30 сентября 2016, 07:29
    tv относятся к ресурсу(modResource), а у меня свой объект, своя страница редактирования этого объекта
    Павел Гвоздь
    Павел Гвоздь Эксперт
    30 сентября 2016, 08:34
    В консоли че?
      Николай Загумённов
      Николай Загумённов Проверенный
      30 сентября 2016, 08:49
      Пусто
        Павел Гвоздь
        Павел Гвоздь Эксперт
        30 сентября 2016, 08:52
        Эти твои поля где располагаются? Неужто в модальном окне?..
          Николай Загумённов
          Николай Загумённов Проверенный
          30 сентября 2016, 09:23
          Поля редактируются на отдельной странице.
          Нет)
      Сергей Шлоков
      Сергей Шлоков Эксперт
      30 сентября 2016, 09:01
      Я думаю, причина в том, что на момент подключения 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
        Так и есть. MODx.load() просто создает JS компонент. Его нужно отрисовать — show() или render(). Поэтому и не подключается, указанных полей в разметке ещё нет.
        Добавь в свой компонент этот код (после items)
        listeners: {
        	render: function () {
        		MODx.loadRTE("regulations"); // id поля 
        		MODx.loadRTE("info"); // id поля 
        	}
        }
        Думаю, всё заведётся.
          Николай Загумённов
          Николай Загумённов Проверенный
          30 сентября 2016, 15:20
          Круто! Спасибо за помощь!
          У меня только что-то не получилось в одно место вставить код этот. Сработало вот так:
          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