Bonjour,
j'ai bien suivi, enfin je pense, le tutoriel jusqu'à 38 minutes. Mais la patatra!
lorsque je veux insérer une image ou un liens url, les modifications ne sont pas ajouté en bdd.
Si je ne modifie que le texte ou bien que j'insère le code html que je devrais obtenir via tinymce, cela marche bien.
Aidez moi svp, n'hésitez pas a demander plus d'infos(premier post dsl)

5 réponses


pech84
Auteur
Réponse acceptée

Donc la solution se trouvais dans le fichier medias/admin_index.php,
j'ai supprimer toutes les initialisations sauf la ligne d'appel a la fonction appélée du coup voici le code

<table class="table">
    <thead>
        <tr>
            <th></th>
            <th>Titre</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($images as $k => $v): ?>
            <tr>
                <td>
                    <a href="#" onclick="FileBrowserDialogue.sendURL('<?php echo Router::webroot('img/'.$v->file); ?>')">
                        <img src="<?php echo Router::webroot('img/'.$v->file); ?>" style=" height:100px"></img>
                    </a>
                </td>
                <td> <?php echo $v->name; ?> </td>
                <td>
                    <a onclick="return confirm('Voulez vous vraiment supprimer cette image')" href="<?php echo Router::url('admin/medias/delete/'.$v->id) ?>">Supprimer</a>
                </td>
                </tr>
        <?php endforeach ?>
    </tbody>
</table>
<div class="page-header">
    <h1>Ajouter une image</h1>
</div>
<form action="<?php echo Router::url('admin/medias/index/'.$post_id); ?>" method="post" enctype="multipart/form-data" >
    <?php echo $this->Form->input('file','Image',array('type'=>'file')); ?>
    <?php echo $this->Form->input('name','Titre'); ?>
    <div class="actions">
        <input type="submit" value="Envoyer" class="btn btn-primary">
    </div>
</form>
<script type="text/javascript" src="<?php echo Router::webroot('js/tinymce/tiny_mce_popup.js') ?>"></script>
<script type="text/javascript">
tinyMCE.init({
        // General options

        file_browser_callback : 'fileBrowser',  
    });

    var FileBrowserDialogue = {
    init : function () {
        // Here goes your code for setting your custom things onLoad.
    },
    sendURL : function (URL) {
        var win = tinyMCEPopup.getWindowArg("window");
        // insert information now
        win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;
        // are we an image browser
        if (typeof(win.ImageDialog) != "undefined") {
            // we are, so update image dimensions...
            if (win.ImageDialog.getImageData)
                win.ImageDialog.getImageData();
            // ... and preview if necessary
            if (win.ImageDialog.showPreviewImage)
                win.ImageDialog.showPreviewImage(URL);
        }
        // close popup window
        tinyMCEPopup.close();
    }
}
tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);
</script>

Est-ce que tu peux nous montrer ton code ?

pech84
Auteur

voici le code pour view/posts/adim_edit.php

<div class="page-header">
    <h1>Editer un article</h1>
</div>
<form action="<?php echo Router::url('admin/posts/edit/'.$id); ?>" class="form-horizontal" method="post">
    <?php echo $this->Form->input('name','Titre'); ?>
    <?php echo $this->Form->input('slug','Url'); ?>
    <?php echo $this->Form->input('id','hidden'); ?>
    <?php echo $this->Form->input('content','Contenu',array('type'=>'textarea','class'=>'input-xxlarge wysiwyg','rows'=>5)); ?>
    <?php echo $this->Form->input('online','En ligne',array('type'=>'checkbox')); ?>
    <div class="actions">
        <input type="submit" class="controls btn btn-primary" value ="Envoyer">
    </div>
</form>
 <script type="text/javascript" src="<?php echo Router::webroot('js/tinymce/tiny_mce.js') ?>"></script>
    <script type="text/javascript">
tinyMCE.init({
        // General options
        mode : "specific_textareas",
        editor_selector : "wysiwyg",
        theme : "advanced",
        relative_urls : false,
        plugins : "autolink,lists,spellchecker,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 options
        theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,image,code",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_buttons4 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,
        // Skin options
        skin : "o2k7",
        skin_variant : "silver",
        file_browser_callback : 'fileBrowser',
});

et pour view/medias/adim_edit.php

<table class="table">
    <thead>
        <tr>
            <th></th>
            <th>Titre</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($images as $k => $v): ?>
            <tr>
                <td>
                    <a href="#" onclick="FileBrowserDialogue.sendURL('<?php echo Router::webroot('img/'.$v->file); ?>')">
                        <img src="<?php echo Router::webroot('img/'.$v->file); ?>" style=" height:100px"></img>
                    </a>
                </td>
                <td> <?php echo $v->name; ?> </td>
                <td>
                    <a onclick="return confirm('Voulez vous vraiment supprimer cette image')" href="<?php echo Router::url('admin/medias/delete/'.$v->id) ?>">Supprimer</a>
                </td>
                </tr>
        <?php endforeach ?>
    </tbody>
</table>
<div class="page-header">
    <h1>Ajouter une image</h1>
</div>
<form action="<?php echo Router::url('admin/medias/index/'.$post_id); ?>" method="post" enctype="multipart/form-data" >
    <?php echo $this->Form->input('file','Image',array('type'=>'file')); ?>
    <?php echo $this->Form->input('name','Titre'); ?>
    <div class="actions">
        <input type="submit" value="Envoyer" class="btn btn-primary">
    </div>
</form>
<script type="text/javascript" src="<?php echo Router::webroot('js/tinymce/tiny_mce_popup.js') ?>"></script>
<script type="text/javascript">
tinyMCE.init({
        // General options
        mode : "specific_textareas",//seulement certain textarea
        editor_selector : "wysiwyg", //cette classe de text area
        theme : "advanced",
        relative_urls : false,
        //remove_script_host : true,
        plugins : "autolink,lists,spellchecker,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 options
        theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,image",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_buttons4 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,
        // Skin options
        skin : "o2k7",
        skin_variant : "silver",
        file_browser_callback : 'fileBrowser',  
    });

    var FileBrowserDialogue = {
    init : function () {
        // Here goes your code for setting your custom things onLoad.
    },
    sendURL : function (URL) {
        var win = tinyMCEPopup.getWindowArg("window");
        // insert information now
        win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;
        // are we an image browser
        if (typeof(win.ImageDialog) != "undefined") {
            // we are, so update image dimensions...
            if (win.ImageDialog.getImageData)
                win.ImageDialog.getImageData();
            // ... and preview if necessary
            if (win.ImageDialog.showPreviewImage)
                win.ImageDialog.showPreviewImage(URL);
        }
        // close popup window
        tinyMCEPopup.close();
    }
}
tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);
</script>

A votre services pour plus d'infos.

Humm, il me semble que dans le tuto Grafikart avait nommé la page view/medias/admin_index.php et non pas view/medias/admin_edit . Après ca dépend comment tu l'a appelé dans le MediasController

Sinon dans ta page medias/admin_edit.php tu l'initialisation de tinyMCE que tu a déjà faites dans posts/admin_edit.php.
Supprime déjà ça dans medias/admin_edit.php

tinyMCE.init({
// General options
mode : "specific_textareas",//seulement certain textarea
editor_selector : "wysiwyg", //cette classe de text area
theme : "advanced",
relative_urls : false,
//remove_script_host : true,
plugins : "autolink,lists,spellchecker,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 options
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,link,unlink,image",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_buttons4 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Skin options
skin : "o2k7",
skin_variant : "silver",
file_browser_callback : 'fileBrowser',  
});

Si ca marche pas fait voir ton médiasController :)

pech84
Auteur

au temps pour moi, c'est bien la page medias/admin_index.php
j'ai supprimer l'initialisation de tiny_mce dans medias/admin_index, mais du coup je n'ai plus le retour de l'image dans tinymce quand je clique dessus.

Voici le code de mediasController

<?php 
class MediasController extends Controller{
        function admin_index($id){
            $this->loadModel('Media');      
            if($this->request->data && !empty($_FILES'file']'name'])){
                if(strpos($_FILES'file']'type'], 'image') !== false){
                    $dir = WEBROOT.DS.'img'.DS.date('Y-m');
                    if(!file_exists($dir)) mkdir($dir,0777);
                    move_uploaded_file($_FILES'file']'tmp_name'],$dir.DS.$_FILES'file']'name']);
                    $this->Media->save(array(
                        'name' => ($this->request->data->name),
                        'file' => date('Y-m').'/'.$_FILES'file']'name'],
                        'post_id' => $id,
                        'type' => 'img'
                    ));
                    $this->Session->setFlash("L'image a bien été uploadé");
                }else{
                    $this->Form->errors'file'] = "Le fichier n'est pas un image";
                }
            }
            $this->layout = 'modal';
            $d'images'] = $this->Media->find(array(
                    'conditions' => array('post_id' => $id
                )));
            $d'post_id'] = $id;
            $this->set($d);
        }
        function admin_delete($id){
            $this->loadModel('Media');
            $media = $this->Media->findFirst(array(
                    'conditions' => array('id'=>$id)
                ));
            unlink(WEBROOT.DS.'img'.DS.$media->file);
            $this->Media->delete($id);
            $this->Session->setFlash("Le media à été supprimé");
            $this->redirect('admin/medias/index/'.$media->post_id);
        }
}