Rozszerzam hostowaną chmurę LMS na javascript. Dlatego możemy dodać javascript do strony, ale nie możemy zmodyfikować javascript dostawcy dla różnych składników.Właściwy sposób modyfikowania paska narzędzi po inicjacji w TinyMCE
LMS często używa tinyMCE. Celem jest dodanie nowego przycisku do paska narzędzi każdego edytora tinyMCE.
Problem polega na tym, że ponieważ moduły tinyMCE są inicjowane w nietykalnym kodzie dostawcy, nie możemy zmodyfikować wywołania init(). Dlatego nie możemy dodać żadnego tekstu do właściwości "toolbar" obiektu init().
Więc dokonał tego w umiarkowanie hacky sposób:
tinyMCE.on('AddEditor', function(e){
e.editor.on('init', function(){
tinyMCE.ui.Factory.create({
type: 'button',
icon: 'icon'
}).on('click', function(){
// button pressing logic
})
.renderTo($(e.editor.editorContainer).find('.mce-container-body .mce-toolbar:last .mce-btn-group > div')[0])
});
});
Tak to działa, ale trzeba powiedzieć, że nie jestem całkowicie wygodne konieczności zaglądania do tego konkretnego miejsca w DOM tak, aby wstawić przycisk. Chociaż to działa, nie sądzę, że intencją twórcy było, aby był on używany w ten sposób.
Czy istnieje właściwy sposób dodania przycisku do paska narzędzi po inicjalizacji, jeśli nie można zmodyfikować kodu inicjującego?
Nie jestem pewien, na pewno o dodanie następnie, możesz odłączyć początkowy init i ponownie powiązać wszystko samemu. Będzie to tak, jakby uruchamiać init. Spowoduje to wydłużenie czasu ładowania, ale powinno dać ci to, czego chcesz. – Chris