[Edit] : Ajout du support de CKEditor pour le MediaHelper
Salut à tous,
je vous mets à disposition l'adaptation du plugin Media de Grafikart pour la version 3 de CakePHP que j'ai (presque) fini.
Grafikart, j'espère que tu n'y vois pas d'inconvenients pour ça ! Sinon, tu me le dis et je le retire de mon dépôt ;)
Vous pouvez le retrouver sur mon dépôt github à cette adresse.
Il me reste encore pas mal de choses à faire :
N'hésitez pas à le tester et à me faire des retours ici même ou sur github.
Bonne soirée !
Romain
Bonjour,
Je pense qu'il y a un bug dans la vue index avec cette ligne:
Router::url(['controller'=>'Medias','action'=>'upload',$ref,$ref_id,'?' => [ "id" => $id, 'editor'=>$editor, ]])
Il m'affiche cette erreur :
Notice (8): Undefined variable: ref_id [ROOT/vendor/romano83/cakephp3-media/src/Template/Medias/index.ctp, line 3]
J'ai trouver une solution temporaire :
$ref_id = $refId;
J'ai mit dans le controller MediasController
Merci de créer ce plugin pour la version CakePhp 3
Merci pour vos retours !
@Deroda normalement tinymce fonctionne. Pour ma part, je n'ai jamais eu de soucis avec même sous CakePHP 2. Le mieux c'est que tu le teste et que tu me dise si ça fonctionne ou pas.
@musicalitymaker : effectivement, il y avait ce petit bug que je n'avais pas vu avant de le mettre en ligne. C'est désormais corrigé !
Oui, un oubli de ma part de préciser qu'il faut charger le helper...
Par contre, peux tu me mettre le code que tu as mis car c'est difficile à dire comme ça ce qui ne va pas. Par ailleurs, tu as peut être fait un oubli d'un "s" quelque part car c'est MediasController qu'il devrait chercher... d'où l'erreur ;)
Non je n'y vois aucun inconvénient par contr dès que tu as qquechose de stable avec les tests dit le et je l'intégrerais au plugin original.
Bonjour,
Tu dit que le HelperMedia suport l'éditeur CKEditor. Est-ce que c"est normale que je voit pas la fonction dans le Helper du plugin?
@musicalitymaker : non c'est pas normal. J'ai juste oublié de rajouté ce fichier lors du précédent commit. Je fais ça ce soir. Désolé...
@Deroda : effectivement, tu as une erreur car j'ai mal renseigné le readme. Il faut que tu enlève les premiers crochets dans le addBehavior :
$this->addBehavior(
'Media.Media' => [
'path' => 'img/upload/%y/%m/%f', // default upload path relative to webroot folder (see below for path parameters)
'extensions' => ['jpg', 'png'], // array of authorized extensions (lowercase)
'limit' => 0, // limit number of upload file. Default: 0 (no limit)
'max_width' => 0, // maximum authorized width for uploaded pictures. Default: 0 (no limitation)
'max_height' => 0, // maximum authorized height for uploaded pictures. Default: 0 (no limitation)
'size' => 0 // maximum autorized size for uploaded pictures (in kb). Default: 0 (no limitation)
]
);
Comme ça, ça devrait fonctionner bien mieux ^^
Dis moi si tu as toujours un problème avec tinymce stp !
@Deroda : C'est bizarre, je ne comprends pas d'où vient cette erreur...
Peux-tu me mettre tout le code lié au plugin que tu as mis dans ton application stp ?
EDIT : je me demande si je n'aurais pas fait une erreur de frappe lors de la rédaction du readme.
Essaie de charger le behavior avec Media.Medias
... On sait jamais...
@musicalitymaker : peux-tu me confirmer que tu as toi aussi la même erreur quand tu utilise le MediaHelper et tinymce ?
Je ne peux pas tester avant ce soir car je suis au boulot et j'ai pas accès à mes fichiers sources...
Tout me semble correct (du moins de mémoire...). Je vérifierais quand même ce soir au cas où.
As tu essayé avec Media.Medias
dans le behavior ?
Sinon, oui, il faut toujours utiliser un système de brouillon comme dans le précédent plugin. Ce problème est malheureusement inhérant à tinymce...
OK. Je sais d'où vient le problème !!!
Il faut en fait charger le plugin comme ceci :
Plugin::load('Media', ['bootstrap' => false, 'routes' => true]);
Il ne trouvait pas le controller Medias car les routes nétaient pas chargées... Je pensais qu'en faisant un Plugin::loadAll()
ça suffisait mais non...
Désolé pour le désagrément !
Non, je n'ai pas de fonction pour le système de brouillon mais tu peux remplacer le $this->read()
(qui a effectivement disparu) par un find classique je pense...
@Romano83 : J'avais fait une mise à jour de ton plugin et plus rien ne fonctionnait. Je ne peut pas faire des teste avec l'autre editeur ckeditor. Car cakephp ne chargais pas les bonnes classe MediaHelper et le Media Behavior.
J'ai modifié le namespace général du plugin pour mieux réfléter le standard psr-4. C'est pour ça que depuis le composer update
, il ne fonctionne plus.
Il suffit de le supprimer, mettre à jour l'autoload et de refaire un composer require romano83\cakephp3-media
Désolé pour ce désagrément...
Désolé de répondre aussi tardivement mais j'ai eu pas mal de boulot ces derniers jours.
En principe, le problème est corrigé.
Pour être sûr que tout soit clair au niveau de votre application, faite un composer remove romano83/cakephp3-media
suivi d'un composer require romano83/cakephp3-media
.
Pour le reste, la configuration du plugin ne change pas !
Si vous rencontrez d'autres problèmes (je n'espère pas^^), faites le moi savoir ;)
Encore une fois, désolé pour les problèmes que vous rencontrez...
Désolé,
Mais le plugin ne charge pas le bon controller :
Quand je fait ceci :
<?= $this->Form->create('Pictures'); ?>
<?= $this->Media->tinymce('content', 'Pictures', $this->request->session()->read('Auth.User.id')); ?>
<?= $this->Form->end(); ?>
J'arrive pour ajouter une image CakePhp me retourne une erreur :
MediaController could not be found.
Il doit charger ce controller : MediasController
C'est un problème de routes...
As-tu chargé le plugin en faisant Plugin::load('Media', ['bootstrap' => false, 'routes' => true]);
?
Salut, tout d'abord merci pour ton travail. J'ai tout fait comme expliqué, mais j'ai un problème. j'ai l'erreur suivante dans la fenetre iframe:
Warning (2): Invalid argument supplied for foreach() [ROOT/vendor/romano83/cakephp3-media/src/Template/Medias/index.ctp, line 16]
Code Context
include - ROOT/vendor/romano83/cakephp3-media/src/Template/Medias/index.ctp, line 16
Cake\View\View::_evaluate() - CORE/src/View/View.php, line 834
Cake\View\View::_render() - CORE/src/View/View.php, line 794
Cake\View\View::render() - CORE/src/View/View.php, line 465
Cake\Controller\Controller::render() - CORE/src/Controller/Controller.php, line 582
Cake\Routing\Dispatcher::_invoke() - CORE/src/Routing/Dispatcher.php, line 120
Cake\Routing\Dispatcher::dispatch() - CORE/src/Routing/Dispatcher.php, line 87
[main] - ROOT/webroot/index.php, line 37
Sur l'onglet "Gallery" j'ai ce problème. Si j'upload une image, ca fonctionne mais l'erreur persiste.
Salut,
oui je sais qu'il y a cette erreur mais c'est rien de bien grave.
Si tu quittes ta page et que tu reviens dessus, l'erreur disparait !
Je vais faire en sorte qu'elle ne s'affiche plus pour la prochaine version ;)
Si tu n'as pas d'image dans la gallerie, tu auras toujours cette erreur.
Par contre à partir du moment où il y a une image, l'erreur devrait disparaître.
Haha, j'allais poster la même chose. Perso en attendant, j'ai fait:
<?php if($medias):?>
<?php foreach ($medias as $media):?>
<?php require('media.ctp'); ?>
<?php endforeach ?>
<?php endif;?>
<?php if (!empty($media)):
foreach ($medias as $media):
require('media.ctp');
endforeach
endif; ?>
? =P
Rebonjour,
J'ai un problème avec la fonction canUploadMedias();
Le problème viens de cette ligne :
$this->Auth->user('id')
return $this->Auth->user('role') == 'admin'; // Admins have all rights
Cakephp me retourne cette erreur :
Call to a member function user() on a non-object
J'ai bien démarré le composant Auth dans la fonction initialize(); de mon AppController.
C'est la première fois que je cette étrange erreur.
Est-ce que je suis le premier à avoir ce genre de problème
Aussi la fonction retourne cette erreur : Non-static method App\Controller\AppController::canUploadMedias() should not be called statically, assuming $this from incompatible context [ROOT/vendor/romano83/cakephp3-media/src/Controller/MediasController.php, line 23]
Bonjour.
Concernant l'erreur : Call to a member function user() on a non-object
, ça vient probablement de la première ligne que tu nous montre :
$this->Auth->user('id')
Il manque le ;
.
Cette ligne n'a d'ailleurs rien à faire là.
Pour la seconde erreur : Non-static method App\Controller\AppController::canUploadMedias() should not be called statically, assuming $this from incompatible context
, es-tu bien sur que tu as noté :
public function canUploadMedias($model, $id)
Montres nous toute ta fonction.
@Lartak : voici ma fonction :
public function canUploadMedias($model, $id)
{
if ($model === 'App\Model\Table\Users' && $id = $this->Auth->user('id')) {
return true;
}
return $this->Auth->user('role') == 'admin';
}
Bonjour,
L'erreur pour ta fonction canUploadMedias() ne signifie pas que tu as mal créé ta méthode, mais qu'elle est mal appelée. Elle est appelée sous forme statique (Controller::canUploadMedias()) alors qu'elle devrait être appelée comme ceci par l'instance de $this.
Comme c'est Cake qui se charge d'appeler totu seul cette fonction, il est fort probable que cette erreur soit liée à une autre erreur (comme la première dont tu nous parles avec les AuthComponent) et qu'en réglant cette autre erreur, tout devrait rentrer dans l'ordre.
Bonne chance,
Arkantos
Bonjour Arkantos,
Il y a cette fonction dans le MediasController :
/**
*
* @param Cake\ORM\Table $ref
* @param int $refId
*
* @return bool
*/
public function canUploadMedias($ref, $refId)
{
if (method_exists('App\Controller\AppController', 'canUploadMedias')) {
return \App\Controller\AppController::canUploadMedias($ref, $refId);
} else {
return false;
}
}
Je pense que la connection ce fait très bien entre le plugin et mon application.
Cette fonction retourne une instance de la fonction canUploadMedias si elle existe dans mon appController.
return \App\Controller\AppController::canUploadMedias($ref, $refId);
Bonsoir,
Je lance une bouteille à la mer !
Je ne sais pas si il y a un problème au niveau du dépot mais je n'arrive pas à charger le plugin Media avec composer.
Il me renvoit l'erreur :
[InvalidArgumentException]aroundCould not find package romano83/cakephp3-media at any version for your minimum-stability (beta). Check the package spelling or your minimum-stability
J'ai essayé de changer ma valeur de minimum-stability mais rien n'y fait.
Si quelqu'un a une idée je suis preneur.
Merci d'avance
Antoine