Come abilitare l'editor di contenuti come target droppable con jQuery-ui?
Sto cercando di abilitare l'editor di contenuti di WordPress come area droppable utilizzando il drag and drop di jQuery UI. Tuttavia, non riesco a far funzionare il drag to drop né a far scattare l'evento di drop.
Mi sto perdendo qualcosa?
<ul id="keywords">
<li>trascina uno</li>
<li>trascina due</li>
<li>trascina tre</li>
</ul>
jQuery("#keywords").find("li").each(function(){jQuery(this).draggable(
{
helper:'clone',
start: function(event, ui){
jQuery(this).fadeTo('fast', 0.5);},
stop: function(event, ui) {
jQuery(this).fadeTo(0, 1);
}
});
});
jQuery('#content').droppable(
{
drop: function(event, ui)
{
alert('rilasciato nel contenuto'); //NON VIENE ESEGUITO!!!
jQuery(this).dropIt(ui.draggable.html());
}
});
if(typeof tinyMCE=='object')
{
alert('tinyMCE è attivo'); //NON VIENE ESEGUITO!!!
jQuery('#editorcontainer').droppable(
{
drop: function(event, ui)
{
alert('rilasciato nell\'editor tinyMCE'); //NON VIENE ESEGUITO!!!
//Aggiungi contenuto dinamicamente
tinyMCE.activeEditor.execCommand('mceInsertContent', false, 'Nuovo contenuto.');
}
});
}
Nell'esempio precedente la seguente riga:
jQuery(".myDiv").find("li").each(function(){
dovrebbe essere:
jQuery(".keywords").find("li").each(function(){
Questo dovrebbe abilitare il trascinamento e il rilascio degli elementi della lista.
Per consentire il rilascio degli elementi nell'area di testo TinyMCE, il seguente codice funziona.
$('#editorcontainer').droppable({
drop: function(event, ui) {
alert('rilasciato'); //ORA SI ATTIVA!
//Aggiungi contenuto dinamicamente
tinyMCE.activeEditor.execCommand('mceInsertContent', false, 'Nuovo contenuto.');
}
});

Quello era solo un errore di digitazione quando ho creato la domanda. L'ho modificato, ma non è quello il problema. L'evento drop non viene ancora attivato.

Prova a dichiarare sul tag body di TinyMCE in questo modo, funziona per me
Su tiny_mce_src.js
t.iframeHTML += '</head><body ondrop="parent.drop(event);" " id="' + bi + '" class="mceContentBody '+ t.id +'_cl' + bc +'" onload="window.parent.tinyMCE.get(\'' + t.id + '\').onLoad.dispatch();"><br></body></html>';
Sulla pagina dell'editor:
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
tinyMCE.execCommand('mceInsertContent',true,data);
}
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
var html = $('#'+ev.target.id).html();
ev.dataTransfer.setData("Text",html);
}
Sembra che usare jQuery con TinyMCE non funzioni...
