web-dev-qa-db-fra.com

Problèmes lors de la création d'un plug-in tinyMCE qui crée un lien personnalisé

Je travaille sur un plugin qui fonctionne comme le bouton "link" sur tinyMCE:

L'utilisateur met en surbrillance le texte -> appuie sur un bouton -> entre le texte dans une zone d'une boîte épaisse -> soumet le formulaire -> l'utilisateur est ensuite renvoyé dans l'éditeur avec le texte mis en surbrillance.

Le texte en surbrillance a une URL générée sous forme de lien et une classe ajoutée.

J'ai le bouton dans tinyMCE et quand on clique dessus, la fenêtre popup thickbox s'affiche avec mon formulaire. Cependant, une fois soumis, rien ne se passe. Le formulaire est envoyé mais la fenêtre ne ferme pas et le texte en surbrillance n'est pas intégré au lien.

Je regarde wplink.js situé dans le dossier "/wp-includes/js/wplink.js" comme base approximative, mais cela ne semble pas fonctionner.

Toute aide est appréciée. Voici ce que j'ai jusqu'à présent. Remarque: google.com est utilisé comme URL de test pour cet exemple.

jQuery(document).ready(function($){

    (function() {
        tinymce.create('tinymce.plugins.addTC', {

            init : function(ed, url){
                ed.addButton('addTC', {
                title : 'Insert Product Link',
                cmd: 'addTC_Link',
                image: "/wp-content/plugins/addtc/img/shopping_basket.png",
                onclick: function() {
                        tb_show( 'Insert Product Link', '/wp-content/plugins/addtc/addTC_link.php?&height=300&width=600&TB_iframe=true' );
                    }
                });
                $('#addTC_link-submit').click(function(e){
                    e.preventDefault();
                    var selected_text = ed.selection.getContent();
                    alert(selected_text);
                    var return_text = '';
                    var targetURL = "http://www.google.com";
                    return_text = '<a href="'+targetURL+'" class="targetURL">' + selected_text + '</span>';
                    ed.execCommand('mceInsertContent', 0, return_text);
                    tb_remove();
                });
            }
        });

        tinymce.PluginManager.add('addTC', tinymce.plugins.addTC);

    });

});
3
dcp3450

Change ça:

ed.execCommand('mceInsertContent', 0, return_text);

Pour ça:

ed.execCommand('mceInsertContent', false, return_text);

Le deuxième argument de la fonction tinyMCE.execCommand () est une valeur booléenne qui indique si une interface utilisateur doit être présentée à l'utilisateur.

Référence: http://www.tinymce.com/wiki.php/API3:method.tinymce.execCommand

1
Josh Lobe