Bonjour ,
Je me présente, The Devil, 20ans et étudiant en informatique.
Récemment, j'ai découvert le site grafikArt et ait commencé à visualiser les tutoriels. =)
J'ai regardé le tutoriel sur cakePHP jour 1. et maintenant, je suis au jour 2 et me retrouve confronté à un problème sans queue ni tête.
Le problème concrètement : Je cherche à inclure une image via tinymce en cliquant sur le bouton d'ajout d'image. => La popup s'ouvre
Mais lorsque je clique sur ajouter "insérer l'image à mon site" => Il ne se passe rien, la popup devient grise et ne se ferme pas.
Voici le code de la vue d'edition de page :
<div class="page-header">
<h1>Editer une page</h1>
</div>
<?php
//Ici on créer un formulaire qui va interagir sur le model Post
echo $this->Form->create('Post');
echo $this->Form->input('name',array('label'=>'Titre'));
echo $this->Form->input('slug',array('label'=>'URL'));
echo $this->Form->input('id');
echo $this->Form->input('type',array('value'=>'page', 'type'=>'hidden') );
echo $this->Form->input('content',array('label'=>'Contenu'));
echo $this->Form->input('online', array('label'=>" En ligne ?"));
echo $this->Form->end('Envoyer');
$this->Html->script('tiny_mce/tiny_mce.js', array('inline'=>false));
$this->Html->scriptStart(array('inline'=>false));
?>
tinyMCE.init({
mode: 'textareas',
theme: 'advanced',
plugins: 'inlinepopups,paste,image',
theme_advanced_buttons1: 'bold,italic,underline,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlik,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 : true,
paste_remove_styles : true,
paste_remove_spans : true,
paste_stip_class_attributes : "all",
image_explorer : '<?php echo $this->Html->url(array("controller"=>"medias",
"action"=>"index",$this->request->data"Post"]"id"]));?>'
});
<!-- ICI ON VA ENVOYER LE CONTENU VERS L'EDITEUR TINYMCE -->
function send_to_editor(content){
var ed = tinyMCE.activeEditor;
ed.execCommand('mceInsertContent',false,content);
}
<?php $this->Html->ScriptEnd(); ?>
Et ici le code la vue du dossier media->tinymce.ctp :
<?php echo $this->Html->script('tiny_mce/tiny_mce_popup.js'); ?>
<script type="texte/javascript">
var win = window.dialogArguments || opener || parent || top;
win.send_to_editor('<img src="<?php echo $src; ?>" alt="<?php echo $alt; ?>" class="<?php
echo $alt; ?>">');
tinyMCEPopup.close();
</script>
Si il y'a besoin que j'ajoute d'autre morceau de mon code n'hésitez pas à me le faire savoir.
Merci d'avance,
Cordialement,
The Devil
va pas plus loin, up ta version en 2.1 ou plus...
D'ailleurs je comprends pas pourquoi tu es arrivé à faire le tuto alors que le nommage n'est pas le même OO
Petit up : Je me demande si le chemin de l'importation du script ne serait pas faux...?
Voci la première ligne du fichier View/Medias/tinymce.ctp :
<?php echo $this->Html->script('tiny_mce/tiny_mce_popup.js'); ?>
Pourtant cela fonctionne bien pour Grafikart.. Please help---- I'm getting Crazyyyy !!!
tu peux aussi le mettre en dur si tu n'es pas sur de ton lien =)
<script type="text/javascript" src="etc...
N'est-ce pas ce que j'ai fait...?
Enfin bon je vais essayer de mettre le lien en absolue.
Edit: Le lien:
<?php echo $this->Html->script('localhost/SITE_CAKE_1/app/webroot/js/tiny_mce/tiny_mce.js'); ?>
Toujours le même problème.. =/
Voilà ce que ça m'affiche histoire que vous ayez une idée plus précise de la chose :
tu peux ouvrir ton code source et nous montrer la ligne généré ? (il est difficile d'aider quand on a pas accès au site :), je dis des trucs bateaux mais ça pourra peut-être t'aider)
Bien sur, et merci à toi pour ton aide :)
Alors avec le code de la ligne de mon dernier post, le code source générer est :
<script type="text/javascript" src="/SITE_CAKE_1/js/localhost/SITE_CAKE_1/app/webroot/js/tiny_mce/tiny_mce.js"></script>
<script type="texte/javascript">
var win = window.dialogArguments || opener || parent || top;
win.send_to_editor('<img src="/SITE_CAKE_1/img/2013/02/petit-logo-tengumi.png" alt="logo" class="logo">');
tinyMCEPopup.close();
</script>
Et la fenêtre tinyMCE est vide(grise).
En passant, comment fait on pour insérer une image dans les posts...? le lien image ne fonctionne pas ou...
quel est le lien qu'il y a sur ton navigateur ?
petit-logo-tengumi s'affiche ?
essayes :
<script type="text/javascript" src="localhost/SITE_CAKE_1/js/tiny_mce/tiny_mce.js"></script>
ou
<script type="text/javascript" src="/SITE_CAKE_1/js/tiny_mce/tiny_mce.js"></script>
tinyMCE s'occupera de l'insertion de tes images ^^' quand il sera activé =)
@Coloo : J'ai éssayé, ça ne change rien =/
Est-ce que tu saurais comment on fait (sur grafikart) pour insérer une image ? Comme ça, je peux te montrer des captures d'écrans.. ça peut peut-être aidé je pense..
Absent(pause)-->de retour à 13:30
thanks again !
arf mais j'avais rien compris :p (je pensais que c'était ton editeur de texte qui marchait pas... envois les captures avant que ça bloque et le bloc grisé.
ton controller media et un screen de ta table media. pour voir si l'enregistrement c'est bien fait.
Merci coloo !! Déso pour mon absences, j'ai eu quelques empêchement. BON alors voilà image par image le déroulement de mon problème: début-->je clique sur le bouton d'ajout d'image, une fenêtre tinyMCE s'ouvre me demandant de choisir l'image. [url=http://upload.stabland.fr/image-view-118-insert\_img\_png.png.html][img]http://upload.stabland.fr/images/img118/insert\_img\_png.png[/img][/url] Puis je choisis mon image en cliquant sur insérer, voilà ce qui apparaît: [url=http://upload.stabland.fr/image-view-118-insert-img2\_png.png.html][img]http://upload.stabland.fr/images/img118/insert-img2\_png.png[/img][/url] Et là je clique sur le bouton "Insérer dans ma page" et là bam page vide!! [url=http://upload.stabland.fr/image-view-118-insert-img3\_png802105.png.html][img]http://upload.stabland.fr/images/img118/insert-img3\_png802105.png[/img][/url] Je vais mettre le code du controller media sur le prochain post..
Ici le controller medias :
<?php
class MediasController extends AppController{
function admin_index($post_id){
//On test si une requête à été reçu
if($this->request->is('post')){
//On récupère les données de la requête dans $data
$data = $this->request->data;
//On créer le chemin d'un dossier qui va avoir pour nom l'année actuel(2013) dans $dir
//donc là $dir contient le chemin dossier "2013"
$dir = IMAGES.date('Y');
//Si le dossier (webroot/img/2013) n'existe pas, alors on le créer
if(!file_exists($dir)){
//On créer le dossier au nom de $dir(donc: 2013) et on met
//les droit sur le chmod pour pouvoir le faire
mkdir($dir,0777);
}
//On créer le dossier du mois actuel dans "2013" ce qui donne "webroot/img/2013/02
$dir.= DS.date('m');
//On test si le dossier "02" existe
if(!file_exists($dir)){
//S'il n'existe pas on le créer
mkdir($dir,0777);
}
//le séparateur étant le point, il n'y que 2 indexes dans le tableau
$f = explode('.', $data'Media']'file']'name']);
$ext= '.'.end($f);
//Le nom du fichier est enregistré dans filename
//en version latine. cette méthode(slug) attend un encodage UTF-8
//Les espaces et caractères inconnues deviendront des underscore "_"
$filename= Inflector::slug(implode('.', array_slice($f,0,-1)),'-');
$success = $this->Media->save(array(
'name' => $data'Media']'name'],
'url' => date('Y').'/'.date('m').'/'.$filename.$ext,
'post_id'=> $post_id
));
if ($success){
move_uploaded_file($data'Media']'file']'tmp_name'], $dir.DS.$filename.$ext);
}else{
$this->Session->setFlash("L'image n'est pas au bon format",
'notif', array('type' => 'error'));
}
}
//Je créer mon tableau $d
$d = array();
$d'medias']= $this->Media->find('all', array(
'conditions'=>array('post_id'=> $post_id)
));
$this->set($d);
}
function admin_show($id=null){
$d = array();
if($this->request->is('post')){
$this->set($this->request->data'Media']);
$this->layout = false;
$this->render('tinymce');
return ;
}
if($id){
$this->Media->id = $id;
$media = current($this->Media->read());
$d'src'] = Router::url('/img/'.$media'url']);
$d'alt'] = $media'name'];
}
$this->set($d);
}
function admin_delete($id){
$this->Media->id = $id;
$file = $this->Media->field('url');
unlink(IMAGES.DS.$file);
$this->Media->delete($id);
//On envoi un message pour informer que la suppression c'est bien exécuté
$this->Session->setFlash("L'image à bien été supprimer", 'notif');
//Et on redirige vers la page admin/medias
$this->redirect($this->referer());
}
}
?>
ma config : j'utilise la version 1.3 de CakePHP et la dernière version de PHP
Merci d'avance !!!