Plugin Media CakePHP et tinyMCE 4.x

Par Romano83, il y a 11 ans


Salut à tous,

j'espère que je poste dans la bonne section...

J'essaye en vain d'implementer tinyMCE 4 sur le plugin CakePHP-Media de Grafikart. Tout se passe bien jusqu'à ce que j'essaye d'insérer une image dans un contenu.
A ce moment là, je me retrouve avec cette erreur dans la console :

win.send_to_tinymce is not a function

Voici les différents codes que j'ai ajouté (au niveau de tinymce.js) :

jQuery(function($){ var buttons = "bold italic underline strikethrough blockquote bullist numlist alignleft aligncenter alignright alignjustify link unlink image"; if( $('#explorer').length == 0 ){ buttons = buttons.replace('image,',''); } $('textarea.tinymce').each(function(){ tinymce.init({ selector: 'textarea.tinymce', language: "fr_FR", relative_urls: false, skin: 'portfolio', height: 300, plugins: [ "autoresize autolink autosave link image imageinsert lists charmap print preview hr pagebreak spellchecker", "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking", "contextmenu directionality template textcolor paste textcolor" ], toolbar1: buttons, toolbar2: "formatselect outdent indent removeformat charmap undo redo code", toolbar3: "", menubar: false, toolbar_items_size: 'medium', paste_as_text: true, imageinsert_explorer: $('#explorer').val() + '/editor:tinymce?id=' + $(this).attr('id'), imageinsert_edit: $('#explorer').val() + '/editor:tinymce?id=' + $(this).attr('id'), }); }) function send_to_tinymce(content, win){ var ed = tinymce.activeEditor; ed.insertContent(content); ed.windowManager.close(win); } });

Au niveau du plugin imageinsert :

tinymce.PluginManager.add('imageinsert', function(ed, url){ ed.addButton('image', { title: 'Insérer/Editer une image', icon: 'image', onclick: function(){ var el = ed.selection.getNode(); var url = tinymce.activeEditor.settings.imageinsert_explorer; if(el.nodeName == 'IMG'){ url = tinymce.activeEditor.settings.imageinsert_edit; url += '?src='+ed.dom.getAttrib(el, 'src')+'&alt='+ed.dom.getAttrib(el, 'alt')+'&class='+ed.dom.getAttrib(el, 'class'); } ed.windowManager.open({ title: 'Insérer/Editer une image', url: url, width: 1000, height: 600 }); } }); });

Et la partie du code qui pose problème au niveau de la vue index.ctp du plugin Media (ligne 6) :

$('a.submit').on('click', function(){ var $this = $(this); var html = createHtmlElement($this); var editor = '<?php echo $editor; ?>'; var win = (!window.frameElement && window.dialogArguments) || opener || parent || top; win.send_to_<?php echo $editor; ?>(html, window, "<?php echo $id; ?>"); return false; });

Si vous avez une idée, je suis preneur...

5 réponses

Romano83, il y a 11 ans

Au final, je m'auto réponds, il fallait mettre la fonction send_to_tinymce au niveau du plugin...

The-Devil, il y a 10 ans

BOnjour,

Peux-tu m'expliquer ce que tu as fait pour que les images enreigstré dans ta db s'affiche sur tinymce ?
J'ai exactemenT le même problème, si ce n'est que je n'ai pas encore écrit de javascript...puisque je ne connais pas ce language..^^
Merci d'avance

Romano83, il y a 10 ans

Salut The-Devil,
je ne comprends pas trop ce que tu veux dire :

Peux-tu m'expliquer ce que tu as fait pour que les images enreigstré dans ta db s'affiche sur tinymce ?

Par contre, si tu ne connais pas le JS, tu risque de galérer...

The-Devil, il y a 10 ans

Ce que je voulais dire c'est: Que faut-il faire pour pouvoir afficher les images uploader dans webroot sur tinymce ?
Actuellement je développe un petit site d'information, et j'utilse tinymce pour permettre aux utilisateurs d'écrire des articles.
Mais à ce jour, impossible d'afficher correctement les images uploader depuis tinymce. Et impossible d'afficher les images dans la page détails d'un article.

Bien à toi,

The-Devil

Romano83, il y a 10 ans

Si tu développe sous CakePHP, tu peux utiliser le plugin Media que Grafikart a développé (pour la version 2.x de CakePHP). Il fonctionne très bien et est très simple d'utilisation.
Sinon, il me semble qu'il y a un tuto en PHP où il explique comment implementer un système comme tu veux faire.

Après, tu peux déjà poster le code que tu as écrit pour qu'on y jete un oeil et t'aider au mieux dans ton problème parce que là, c'est un peu difficile de répondre à tes questions sans avoir de code...