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 :

<?php
class sfWidgetFormTextareaTinyMCE extends sfWidgetFormTextarea
{
  protected function configure($options = array(), $attributes = array())
  {
    $this->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

<?php
class ContenuForm extends BaseContenuForm
{
  public function configure()
  {
      $this->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:

    

10 Responses to “TinyMCE dans l’admin generator (Symfony 1.2, Doctrine)”

  1. miky dit :

    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. thomas dit :

    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. miky dit :

    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. Mike dit :

    Merci.
    C’est bon j’ai trouvé

  5. Yannick dit :

    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

  6. admin dit :

    Il faut que tu regarde la doc de l’éditeur ce n’est plus du symfony la :)

  7. Oncle Tom dit :

    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.

  8. temet dit :

    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

  9. milk dit :

    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

  10. jean dit :

    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

Laisser un commentaire

Security Code: