Ich habe ein TinyMCE-Plugin, das ein Popin mit dem folgenden Code öffnet:
editor.windowManager.open({
id : 'popin-div-id',
width : 500,
height : "auto",
wpDialog : true,
title : 'Edit Options'
});
Seit ich auf WordPress 3.9 (das TinyMCE 4 einbettet) aktualisiert habe, erhalte ich die folgende Fehlermeldung in der Konsole:
tinymce.WPWindowManager is deprecated. Use the default editor.windowManager to open dialogs with inline HTML.
Wenn ich das “wpDialog : true
” Teil des obigen Codes, mein Popin erscheint nicht mehr (kein Fehler).
Was muss ich ändern, um den Standard-WindowManager in TinyMCE 4 zu verwenden? Ich habe ihre Website überprüft und konnte keine Dokumentation zum Öffnen eines Popins von einem div finden, sondern nur von einer externen HTML-Seite, siehe:
Ich hatte das gleiche Problem. Die TinyMCE-Dokumentation ist nicht hilfreich, ebenso die WordPress-Dokumentation. Ich musste ziemlich tief in den TinyMCE-Code eintauchen, um herauszufinden, wie ich mein einfaches benutzerdefiniertes Popup wieder zum Laufen bekomme.
Antworten
Verwenden Sie die html
Schlüssel, um Ihr HTML in dem Objekt zu definieren, an das Sie übergeben windowManager.open
. Unten verwende ich jQuery, um HTML auszuwählen, das ich auf der Seite platziert habe, indem ich mich in WordPress einklinke after_wp_tiny_mce
Aktion.
tinymce.activeEditor.windowManager.open({
title: ed.getLang('mm_tiny_mce.element_attributes'),
width : 300,
height : 300,
html :
'<div id="mm-attrs-pop" class="mm-tinymce-popup" tabindex="-1">' +
jQuery('#mm-attrs-pop-tpl').html() +
'</div>',
buttons: [
{
text: 'Cancel',
onclick: 'close'
},
{
text: 'Set Attributes',
onclick: function(){
//some code here that modifies the selected node in TinyMCE
tinymce.activeEditor.windowManager.close();
}
}
]
});
Der entsprechende TinyMCE-Code ist drin classes/ui/Window.js
insbesondere die renderHTML
Eigentum. https://github.com/tinymce/tinymce/blob/master/js/tinymce/classes/ui/Window.js
Ich hoffe, das hilft. Tschüss, Chris