2009-10-19 6 views
0

J'utilise TinyMCE & jQuery et j'ai un problème pour déplacer la barre d'outils externe de TinyMCE vers un autre emplacement dans le DOM. Pour compliquer davantage les choses, il existe plusieurs instances de TinyMCE sur la page. Je veux seulement la barre d'outils pour celle qui est en cours d'édition.Comment puis-je déplacer la barre d'outils de TinyMCE dans une fenêtre contextuelle modale?

Voici quelques exemples de code:

$(textarea).tinymce({ 
    setup: function(ed) {setupMCEToolbar(ed, componentID, displaySettingsPane)} 
    ,script_url: '/clubs/data/shared/scripts/tiny_mce/tiny_mce.js' 
    ,theme : "advanced" 
    ,plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template" 
    ,theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect" 
    ,theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor" 
    ,theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen" 
    ,theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak" 
    ,theme_advanced_toolbar_location : "external" 
    ,theme_advanced_toolbar_align : "left" 
    ,theme_advanced_statusbar_location : "bottom" 
    ,theme_advanced_resizing : true 
}); 

var setupMCEToolbar = function (mce, componentID, displaySettingsPane) 
{ 
mce.onClick.add(function(ed,e){ 
    displaySettingsPane($('#' + componentID)); 
    $('#' + componentID).fetch('.mceExternalToolbar').eq(0).appendTo('#settingsPaneContent'); 
}); 
} 

En fait, il semble que la fonction setupMCEToolbar ne peut pas retrouver le mceExternalToolbar pour le déplacer.

Est-ce que quelqu'un a déjà eu du succès en essayant de faire quelque chose comme ça?

EDIT Il est un lundi bien ... il n'a pas pu trouver la barre d'outils externe parce que j'utilisais les enfants() au lieu de chercher().

Il y a toujours un problème: 1) Le déplacement est incroyablement lent et 2) Une fois qu'il bouge, TinyMCE se casse.

EDIT 2 Un peu plus de précisions: Le modal est draggable, rendant ainsi les solutions de contournement purement CSS un peu maladroit ...

Répondre

0

Je n'ai pas eu beaucoup de succès à déplacer l'élément, mais il devrait être assez simple à enlever et recréer la boîte TinyMCE dans votre barre d'outils.

je ferais quelque chose comme ce qui suit:

var content = tinyMCE.get('id_of_text_area').getContent(); 
tinyMCE.execCommand('mceFocus', false, 'id_of_text_area'); 
tinyMCE.execCommand('mceRemoveControl', false, 'id_of_text_area'); 

// pop up your new area 
popup('new_area'); 

// Add a new textarea with the content 
$('<textarea id="id_of_text_area" />') 
    .val(content) 
    .appendTo('#new_area') 
    // initialize a new editor on this textarea 
    .tinymce({..}); 
+0

On dirait que vous dites vraiment déplacer tout le bloc d'édition dans le popup? C'est peut-être ce que je dois faire, mais je veux vraiment que le contenu reste dans le flux de la page quand il est en cours d'édition. –

+0

Qu'en est-il juste de le repositionner avec css? Je dois avoir mal compris la question au départ. –

+0

Malheureusement, je dois être difficile ... Le popup modal est draggable. Repositionner la barre d'outils via CSS serait faisable, mais la mise à jour via JS pendant que le modal est déplacé serait bâclée. Je devrais clarifier cela dans mon affichage initial. –

0

lorsque vous avez textarea id = « opis » utiliser que:

#opis_external { 
     top:200px !important; 
     left:0px !important; 
     position:fixed !important; 

    } 
+0

D'où obtenez-vous "opis" ou "opis_external"? Ce certinaly n'est pas près de répondre à la question, 'Comment est-ce que je peux déplacer la barre d'outils de TinyMCE dans une fenêtre contextuelle modale?' Ceci, ne résout vraiment rien et n'a aucun sens. –

+0

si l'ID de la zone de texte d'origine était "opis", la barre d'outils externe sera dans une div avec l'identifiant "opis_external". Donc, pour votre exemple ci-dessus l'ID serait "id_of_text_area_external" –

Questions connexes