J'essaie d'activer l'éditeur de contenu WordPress comme une liste de dépôt en utilisant le glisser-déposer de l'interface utilisateur jQuery. Cependant, je ne parviens pas à faire glisser le glisser-déposer ni à déclencher l'événement drop.
Y a-t-il quelque chose qui me manque?
<ul id="keywords">
<li>drag one</li>
<li>drag two</li>
<li>drag three</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('dropped in content'); //DOES NOT FIRE!!!
jQuery(this).dropIt(ui.draggable.html());
}
});
if(typeof tinyMCE=='object')
{
alert('tinyMCE is active'); //DOES NOT FIRE!!!
jQuery('#editorcontainer').droppable(
{
drop: function(event, ui)
{
alert('dropped in tinyMCE editor'); //DOES NOT FIRE!!!
//Dynamically add content
tinyMCE.activeEditor.execCommand('mceInsertContent', false, 'New content.');
}
});
}
Dans l'exemple ci-dessus, la ligne suivante:
jQuery(".myDiv").find("li").each(function(){
devrait être:
jQuery(".keywords").find("li").each(function(){
Cela devrait permettre aux éléments de la liste d'être glissés et déposés.
Pour permettre aux éléments d'être déposés sur la zone de texte TinyMCE, le code suivant fonctionne.
$('#editorcontainer').droppable({
drop: function(event, ui) {
alert('dropped'); //NOW FIRES!
//Dynamically add content
tinyMCE.activeEditor.execCommand('mceInsertContent', false, 'New content.');
}
});
Essayez de déclarer sur l'étiquette du corps de TinyMCE comme ceci, cela fonctionne pour moi
Sur 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>';
Sur la page de l'éditeur:
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);
}
Il semble que l'utilisation de jQuery avec TinyMCE ne fonctionne pas ...