tinymce: настроить панель инструментов программно?

На странице с несколькими экземплярами tinymce можно ли добавить логику к параметрам в object, переданным в функцию init? Я могу сделать это, если напишу функцию и вызову ее дважды, по одному разу для каждого экземпляра textarea, но мне интересно, доступна ли она в API.

Ниже мой селектор находит два экземпляра textarea, и я бы хотел, чтобы у каждого из них были разные панели инструментов. Я думал, что что-то вроде activeEditor.settings.toolbar может получить к нему доступ и изменить его, но это не работает. Можно ли настроить toolbar при инициализации?

tinymce.init({
     selector: 'textarea',
     plugins:'link image imagetools',  
     toolbar: 'undo redo | cut copy paste',                
     setup:function(ed){
          ed.on("init",function(e){
               if(e.target.id == "conclude"){
                    // NOT WORKING: alter the toolbar:
                    tinyMCE.activeEditor.settings.toolbar = "undo redo";
               }                        
          });
     }
});

EDIT: Это тоже не работает:

ed.on("BeforeRenderUI", function(e){
     e.target.settings.toolbar = "cut copy";
}

person itsmikem    schedule 04.01.2016    source источник


Ответы (2)


Есть некоторые параметры, которые используются только при инициализации, и их изменение ничего не даст. Вы можете попробовать сделать что-то вроде этого (я не уверен, что это сработает, но может):

 setup:function(ed){
      ed.on("beforeinit", function(e){
           if(e.target.id == "conclude"){
                ed.settings.toolbar = "undo redo";
           }                        
      });
 }

or

 setup:function(ed){
       if(ed.id == "conclude"){
            ed.settings.toolbar = "undo redo";
       }                        
 }
person Thariama    schedule 05.01.2016
comment
Спасибо, Тариама. Это кажутся отличными идеями, но они не сработали для меня. - person itsmikem; 05.01.2016
comment
я изменил второй вариант - какие-либо изменения? - person Thariama; 05.01.2016
comment
вы можете попробовать события «BeforeRenderUI» и «PreInit» - person Thariama; 05.01.2016
comment
Кажется, что эти события сделают это, но я не могу заставить это работать. Я также пытался добавить следующее в каждое из предложенных вами событий, но тоже безуспешно: var g = new tinyMCE.ui.Toolbar(); g.items = вырезать копию; tinyMCE.activeEditor.settings.toolbar = g; - person itsmikem; 05.01.2016
comment
очень плохо, но, возможно, вы могли бы изменить свой селектор с «textarea» на «textarea # your_textarea_id», если у вас фиксированный идентификатор. таким образом вы можете переключить панель инструментов параметров инициализации. - person Thariama; 06.01.2016
comment
Похоже, это то, что я должен сделать. Спасибо, Тариама, за продолжение. - person itsmikem; 06.01.2016

В конце концов, я создал два отдельных объекта, каждый со своим собственным набором параметров, для передачи в несколько вызовов метода tinymce.init. Я не смог найти способ динамически изменить параметр toolbar из передаваемого object.

person itsmikem    schedule 06.01.2016