Bonjour amis de grafikart,
j'ai un probleme en suivant le tutoriel CMS jour 2 à la partie où on peut cliquer sur une image dans le textarea pour l'editer en redmodifiant son alignement etc...
Quand je clic sur le bouton je me mange une erreur : Error: The action log_show%20 is not defined in controller MediasController.
J'ai regardé de plus pret mon fichier editor_plugin.js et ce qui fait que mon url déconne c'est le "%20" collé à show.
Voic la partie du fichier :
var el = ed.selection.getNode();
var url = ed.settings.image_explorer;
if(el.nodeName == 'IMG'){
url = ed.settings.image_edit;
url += '?src='+ed.dom.getAttrib(el,'src')+'&alt='+ed.dom.getAttrib(el,'alt')+'&class='+ed.dom.getAttrib(el,'class');
}
J'ai déjà testé si le script reconnait bien quand c'est une image de selectionné c'est le cas, j'ai l'impression que ce qui déconne c'est la ligne qui commence par "url += '?src etc ..."
Je vois vraiment pas ce que viens faire ce %20 si quelqu'un aurait une idée ?
l'id 20 représente l'id d'une image que je cherche meme pas a inserer bizare
Merci d'avance
J'ai trouvé !
Pour une fois je suis content de moi lol, tout d abord merci de ton aide acharné ça m'a donné un peu espoir !
Maintenant la réponse pour tout ceux a qui ça pourrait arriver :
dans mon fichier édit où se trouve mon formulaire d'ajout d'article j'ai écrit :
image_edit : '<?php echo $this->Html->url(array('controller' => 'medias', 'action' => 'show')); ?> ',
et bien il ne faut pas d'espace entre la balise de fermeture php et le guillement simple sinon ca crée un espace quand c'est emboité avec ça :
url += "?src="+ed.dom.getAttrib(el,"src")+"&alt="+ed.dom.getAttrib(el,"alt")+"&class="
Les espaces en url sont des caractères spéciaux qui sont convertit en caractère hexadécimal voir ici et l'espace vous l'avez deviné ca donne en hexadécimal "%20" du coup url bugué !
C'était finalement simple mais pas facile a détecter quand on a le nez trop prés du code merci je marque résolu :)
Salut,
Regarde si le problème est similaire à ce topic là : cakephp jour 2 message d'erreur: current()
Tiens nous au courant.
A+
C'est la première chose que j'ai fait avant de poster ce topic, j'ai essayé de rajouter is_numeric mais c'est pas ça.
Je comprends pas déjà pourquoi il y a le signe "%" qui ce met alors qu'il n'a été codé nul part.
Non ça ne marche Pas mais mon problème vient quand je sélectionne une image que jai déjà inséré dans mon article donc sans &id cest plutôt la partie else &d = &this->request->query qui intervient si je me trompe pas
Si ça peut aider je met mes sources mais bon :
function log_show($id=null){
$d = array();
if($this->request->is('post')){
$this->set($this->request->data'Media']);
$this->layout = false;
$this->render('tinymce');
return;
}
if(is_numeric($id)){
$this->Media->id = $id;
$media = current($this->Media->read());
$d'src'] = Router::url('/img/'.$media'url']);
$d'alt'] = $media'name'];
$d'class'] = 'alignLeft';
}else{
$d = $this->request->query'src'];
}
$this->layout = "admin" ;
$this->set($d);
}
Mon formulaire pour ecrire un article :
echo $this->Html->script('tiny_mce/tiny_mce.js', array('inline' => false));
echo $this->Html->scriptStart(array('inline' => false)); ?>
tinyMCE.init({
mode : 'textareas',
theme : 'advanced',
plugins : 'inlinepopups, image',
theme_advanced_buttons1 : 'bold, italic, underline, |, bullist, numlist,|, justifyleft, justifycenter, justifyright,justifyfull, |, link, unlink, image,|, formatselect, code',
theme_advanced_buttons2 : '',
theme_advanced_buttons3 : '',
theme_advanced_buttons4 : '',
theme_advanced_toolbar_location: 'top',
theme_advanced_statusbar_location: 'bottom',
theme_advanced_resizing: false,
image_explorer : ' <?php echo $this->Html->url(array('controller' => 'medias', 'action' => 'index',
$this->request->data'Post']'id'])); ?> ',
image_edit : '<?php echo $this->Html->url(array('controller' => 'medias', 'action' => 'show')); ?> ',
relative_urls : false,
content_css : "<?php echo $this->Html->url('/theme/css/wysiwyg.css'); ?>"
})
function send_to_editor(content){
var ed = tinyMCE.activeEditor;
ed.execCommand('mceInsertContent',false,content);
}
et show.ctp
<div id="cadre1">
<h3>Inserer une image</h3>
<img src="<?php echo $src; ?>" style="max-width:200px;">
</div>
<?php
echo '<div id="cadre2">';
echo '<div id="part3">';
echo '<h3>Images manager</h3>';
echo $this->Form->create('Media');
echo $this->Form->input('alt', array('label' => "Description de l'image", 'class'=>'input_profil', 'value' => $alt));
echo $this->Form->input('url', array('label' => "Chemin de l'image", 'class'=>'input_profil', 'value' => $src));
echo $this->Form->input('class', array('legend' => "Alignement", 'class'=>'input_profil', 'options' =>array(
"alignLeft" => "Aligner à gauche",
"alignCenter" => "Centrer",
"alignRight" => "Aligner à droite"), 'type' => 'radio', 'value' => $class)).'<br/>';
echo $this->Form->submit('Inserer dans mon article', array('class' => 'button', 'div' => false));
echo $this->Form->end();
echo '</div>';
echo '</div>';
?>
Ca c'est le genre d'url que mon controller ne comprends pas normal, http://localhost/cake2/log/medias/show%20?src=/cake2/img/2012/02/twitter.png&alt=twitter&class=alignLeft
Le problème est que dans l'url qui se crée il s'insere un "%20" après l'action show et le début des paramètres que j'envoie à l'url grâce à ce script :
if(el.nodeName == 'IMG'){
url = ed.settings.image_edit;
url += "?src="+ed.dom.getAttrib(el,"src")+"&alt="+ed.dom.getAttrib(el,"alt")+"&class="
+ed.dom.getAttrib(el,"class");
}
J'ai déjà essayé en enlevant url += "?src ... etc .. " là ça marche l'url devient bien http://localhost/cake2/log/medias/show.
Des que je remet la ligne avec les paramètres il apparait ce sacré %20 entre show et le début des paramètres.
Ca peut venir de quoi ça ?
Salut,
Dans ta fonction log_show, après ton else, essaye de mettre ça :
$d = $this->request->query;
$d'src'] = urldecode($d'src']);
Bien joué !! j'étais loin de la solution ,et je crois que j'aurais galérer grave aussi avec cette erreur..
Enfin maintenant si cela m'arrive, je serais où chercher.