Si vous avez un formulaire en bas de votre billet pour permettre à vos lecteurs de laisser un commentaire par exemple, vous ne voulez sans doute pas tout l'attirail de widgets que vous offre votre éditeur wysiwyg préfére tinyMCE, mais seulement quelques boutons. Nous allons ensemble plonger dans la config de sfExtraWidgetsPlugin pour voir comment obtenir exactement le nombre de boutons que nous souhaitons.
Première des choses, vous devez installer sfExtraWidgetsPlugin et suivre les indications d'utilisation de tinyMCE données sur cette page.
Ensuite, allez dans le répertoire du plugin installé et rendez-vous dans le sous-répertoire lib/widget. Cherchez le fichier sfExtraWidgetFormRichTextarea.class.php, copiez-le et renommez-le comme bon vous semble. Disons par exemple sfRichTextareaLite.class.php. Ouvrez-le et donnez à la classe qu'elle contient exactement le même nom que vous avez donné au fichier. Dans notre cas ca donne ceci.
devient
Code : Sélectionner tout - Visualiser dans une fenêtre à part class sfExtraWidgetFormRichTextarea extends sfWidgetFormTextareaAttention: Remarquez que nous n'avons pas modifié l'héritage. Le nom de la classe mère demeure inchangé. Ceci fait, désormais, pour appeler votre éditeur, au lieu de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part class sfRichTextareaLite extends sfWidgetFormTextareavous devrez faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'mytextarea' => new sfExtraWidgetFormRichTextearea()Bon, nous sommes à mi-chemin. Abordons maintenant les config proprement dites. Si vous avez suivi les instructions d'installations, vous avez dû mettre certains codes dans le fichier app.yml de votre application, en l'occurrence l'entrée tinymce: sous all:. Recopiez exactement ce code et collez le ailleurs dans le fichiers. Changez l'entrée tinymce que vous venez de coller en tinymcelite (ou en ce que vous voulez). Là-dessous, repérez les entrées suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 'mytextarea' => new sfRichTextareaLite()
Ce sont là celles qui nous intéressent. Ces lignes correspondent aux trois barres de l'éditeur original avec leurs boutons respectifs. Dans theme_advanced_buttons1, supprimez les noms de tous les boutons dont vous n'avez pas besoins, (supprimez aussi les caractères | avec la virgule suivante si vous ne voulez pas de séparateurs dans les boutons) puis couper/coller à partir de theme_advanced_buttons2 et theme_advanced_buttons3 ceux que vous souhaitez ajouter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 theme_advanced_buttons1: "save,bold,italic,underline,strikethrough,emotions,sub,sup,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,formatselect,styleselect" theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,|,search,replace,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,|,insertdate,inserttime,|,pagebreak" theme_advanced_buttons3: "tablecontrols,|,charmap,emotions,media,|,fullscreen,code,cleanup,|,visualaid"
On va revenir dans notre fichier sfRichTextareaLite.class.php. Dans la fonction configure, vous pouvez configurer la largeur et la hauteur de votre éditeur personnalisé.
Abordons la méthode suivante de la classe: public function render(...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function configure($options = array(), $attributes = array()) { $this->setAttribute('class', 'mceEditor'); $this->addOption('width', 460); $this->addOption('height', 180); parent::configure($options, $attributes); }
A l'intérieur vous voyez l'attribut $js qui contient beaucoup de configurations. C'est en fait le code js d'initialisation de votre éditeur, qui prend ses valeurs à partir de vos options dans le fichier app.yml. Donc remplacez dans toutes les occurrence de sfConfig::get('app_tinymce...') le morceau tinymce par la nouvelle entrée que vous avez spécifiée plus haut dans le fichier app.yml. Dans notre cas,devient
Code : Sélectionner tout - Visualiser dans une fenêtre à part sfConfig::get('app_tinymce_theme_advanced_buttons1'). On va désactiver les barres d'outils non voulues comme l'indique la docde tinyMCE. Supprimez donc les valeurs fournis pour theme_advance_buttons2 et theme_advance_button3. Vous devez obtenir quelque chose comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sfConfig::get('app_tinymcelite_theme_advanced_buttons1')Ensuite, il faut déclarer la désactivation des boutons dont nous ne voulons pas dans notre éditeur. Là encore, nous nous appuyons sur la doc de tinyMCE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Theme options theme_advanced_buttons1 : '" . sfConfig::get('app_tinymcelite_theme_advanced_buttons1') . "', theme_advanced_buttons2 : '', theme_advanced_buttons3 : '',
Ouvrez quelque part sous //Theme options une ligneet citez dans les simples quotes tous les boutons que vous ne voulez pas voir apparaître en les séparant d'une virgule. Vous en avez sans doute supprimé lors de l'édition du fichier app.yml. Reportez-vous à l'entrée tinymce d'où vous aviez fait la copie pour retrouver leurs noms. Si vous ne citez pas les noms des boutons à désactiver, ils s'afficheront quand même, même si vous les supprimez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part theme_advanced_disable :''
Ouf, on est à la fin. Vous voulez admirer votre zoooli éditeur ? Sauvegardez tous vos fichiers modifiés et dans votre form, faites 'mytextarea' => sfRichTextareaLite() si vous ne l'avez pas encore fait et contempler le résultat dans votre navigateur.![]()
Une dernière pour tenir la route, laissez aussi de simple quotes vides devant theme_advanced_statusbar_location : si vous ne voulez pas de la barre d'état qui s'affiche en dessous de l'éditeur.![]()
Partager