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)
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>
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 :)
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);
}
}