TinyMCE dans l'admin generator (Symfony 1.2, Doctrine)

Comment mettre en place un « Rich Text Editor » dans un backend Symfony 1.2 doctrine ?
J’ai trouvé la solution dans un post du forum symfony, je vous donne la version originale :

http://forum.symfony-project.org/index.php/m/66906/?srch=tinymce+3+steps#msg_66906

En français et expliqué plus en détails, ça donne :

Intégrer Tiny MCE

Installer le plugin sfFormExtraPlugin:

symfony plugin:install sfFormExtraPlugin

Modifier le widget sfWidgetFormTextareaTinyMCE.class.php

Il faut modifier le plugin !

/plugins/sfFormExtraPlugin/lib/widget/sfWidgetFormTextareaTinyMCE.class.php

Fichier :

addOption('theme', 'advanced');
    $this->addOption('width');
    $this->addOption('height');
    $this->addOption('config', '');
  }
  public function render($name, $value = null, $attributes = array(), $errors = array())
  {
    $attributes = array_merge($this->attributes, $attributes); 
    ...

Utilisation

Modifier ce fichier :

/lib/form/doctrine/ContenuForm.class.php

widgetSchema['texte'] =  new sfWidgetFormTextareaTinyMCE(
      array(
        'width'=>550,
        'height'=>350,
        'config'=>'theme_advanced_disable: "anchor,image,cleanup,help"',
        'theme'   =>  sfConfig::get('app_tinymce_theme','advanced'),
      ),
      array(
        'class'   =>  'tiny_mce'
      )
    );
    $js_path = sfConfig::get('sf_rich_text_js_dir') ? '/'.sfConfig::get('sf_rich_text_js_dir').'/tiny_mce.js' : '/sf/tinymce/js/tiny_mce.js';
    sfContext::getInstance()->getResponse()->addJavascript($js_path);
  }
}


Sources:

Laisser un commentaire

Besoin d’un coup de main ?

Prenez rendez vous au tél avec nous pour discuter de votre projet.
C'est gratuit :)

Prenez RDV gratuitement (30 min)
Photo de Samuel Breton, Directeur Conseil chez agence Choosit à Montpellier

Aucun commentaire

  1. Bonjour,
    J’ai une question qui peut semble bête mais je suis débutant.
    J’ai essayé d’intégrer tinymce comme vous dites et tout fonctionne nikel par contre tout ce que j’ajoute s’affiche avec les balise html ( ouy é pour é) alors que tout ce qui est passé via les textarea s’affiche correctement.
    Pouvez vous me dire comment régler ce truc s’il vous plait?
    Merci

  2. Bonjour miky!
    lorsque tu affiches le texte tu dois faire quelque chose dans le style:
    echo $objet->getTexte();
    quand il y a du code html dans le champs il faut faire:
    echo $objet->getTexte(ESC_RAW);
    c’est une protection symfony pour ne pas interpréter le code html directement…
    par exemple si un utilisateur rentre du javascript dans un commentaire, il ne faut pas qu’il soit interprété.
    Est-ce que ceci réponds à ton problème?

  3. Bonjour Thomas,
    Merci de la réponse rapide.
    La tout de suite je ne peux pas te donner de réponse car mon formulaire est généré par l’admin générator et m’affiche directement les enregistrements sans que j’ai eu à intervenir au niveau du code.
    Je ne sais pas trop dans quel fichier regarder (même si je pense qu’il s’agit d’un fichier qui se trouve dans le répertoire lib/form).
    Je cherche et je te tiens au courant
    Merci

  4. Bonjour,

    En suivant ce post, j’ai réussi à installer l’éditeur mais je ne vois pas comment faire pour rajouter des boutons supplémentaires tels que (ajouter une image, couleur de la police, insertion d’un media…).
    Savez vous comment faire, s’il vous plait?
    Merci

  5. Tu peux faire plus simple avec le JS en utilisant la méthode getJavascript() des widgets, en créant ton propre widget.

    Ça t’évite de modifier des fichiers et tu continues à jouer avec les conventions.

  6. Bonjour,

    Problème:
    J\’ai appliqué cette méthode à la lettre et tout ce que ça a changé c\’est la taille de ma textearea qui passe à sa taille par défaut.

    Cause:
    J\’utilise jQuery dans mon frontend et j\’envisage d\’utiliser tinyMCE dans le frontend aussi. J\’ai donc téléchargé \"TinyMCE pour jQuery\".

    Solution:
    Penser à inclure jQuery dans le backend !

    Par exemple à l\’étape \"/lib/form/doctrine/ContenuForm.class.php\" juste avant \"$js_path = sfConfig::get(\’sf_rich_text_js_dir\’) ? \’/\’.sfConfig::get(\’sf_rich_text_js_dir\’).\’/tiny_mce.js\’ : \’/sf/tinymce/js/tiny_mce.js\’;\"
    mettez \"sfContext::getInstance()->getResponse()->addJavascript(\’/js/jquery-1.3.2.min.js\’);\"

    A adapter bien sur suivant la version de jQuery.
    Si vous n\’utilisez pas jQuery dans le backend prenez la vers \"standalone\" de TnyMCE.

    En espérant faire avancer le schmilblik,

    Cordialement,

    Tem

  7. Bonjour,

    Merci pour le tuto ca marche nikel mais j’ai 2 petites questions :

    1/ J’ai du modifier mon setting.yml : rich_text_js_dir: js/tinyMCE
    dans « lib/symfony/config/config » sinon le chemin du tinyMCE était incorrect. Est ce normal ?

    2/ Lorsque je veux ajouter une image je n’ai pas de bouton parcourir je dois mettre le chemin de l’image en dur. A partir de quel répertoire tinyMCE prend l’image ? Est il possible d’ajouter une image inexistante ?

    Encore merci pour cet article

    milk

  8. bjr.
    j’ai une question.
    lorsque j’ouvre l’editeur, la description monte et se cache sou la barre des bbcodes, impossible de retrouver la description.
    donc il faut que je referme, et que j’ouvre à nouveau pour voir apparaître la description.
    pouvez vous mettez.?
    merci. paul

  9. bjr,

    j\\\’ai un problème concernant le PEAR car il semble que sans le PEAR on ne pourra pas installer le plugin dans symfony, Que dois-je faire

  10. Bjr,

    Je n’arrive pas à installer le PEAR dans windows et j’ai installer mon plugin manuellement mais je sais pas si il marche vraiment car je n’ai aucune reponse. Que dois je faire

  11. Bjr,

    Comment parametrer le ibrowser de tinyMCE pour pouvoir uploader des images.

    Merci

Laisser un commentaire

Voir l’étude de cas
Lire l’article