15 juillet 2010
Je souhaitais vous faire partager mon petit widget TinyMCE basé sur celui intégré au plugin sfFormExtraPlugin.
Pourquoi réécrire un widget existant ? Parce que celui-ci n’acceptait pas le paramètre de langue !
Quelque part, il s’agit plus d’un correctif du widget mais bon, il s’avère que j’en ai souvent besoin donc je le partage ici :
class sfWidgetFormTextareaTinyMCEWithLang extends sfWidgetFormTextarea
{
protected function configure($options = array(), $attributes = array())
{
$this->addOption('theme', 'advanced');
$this->addOption('language', 'en');
$this->addOption('width');
$this->addOption('height');
$this->addOption('config', '');
}
public function render($name, $value = null, $attributes = array(), $errors = array())
{
$textarea = parent::render($name, $value, $attributes, $errors);
$js = sprintf(<<<EOF
<script type="text/javascript">
tinyMCE.init({
mode: "exact",
elements: "%s",
language: "%s",
theme: "%s",
%s
%s
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
theme_advanced_statusbar_location: "bottom",
theme_advanced_resizing: true
%s
});
</script>
EOF
,
$this->generateId($name),
$this->getOption('language'),
$this->getOption('theme'),
$this->getOption('width') ? sprintf('width: "%spx",', $this->getOption('width')) : '',
$this->getOption('height') ? sprintf('height: "%spx",', $this->getOption('height')) : '',
$this->getOption('config') ? ",\n".$this->getOption('config') : ''
);
return $textarea.$js;
}
}
Et pour l’utiliser :
- dans votre classe de formulaire
$this->widgetSchema['widget'] = new sfWidgetFormTextareaTinyMCEWithLang(sfConfig::get('app_tinymce_config'));
- dans le fichier app.yml
all:
tinymce:
width: 550
height: 125
language: fr
config: |
plugins: "paste",
paste_auto_cleanup_on_paste : true,
theme_advanced_buttons1: "bullist,pasteword,bold,italic,underline,fontselect,fontsizeselect",
theme_advanced_buttons2: "",
theme_advanced_buttons3: "",
theme_advanced_buttons4: ""
theme: <?php echo sfConfig::get('app_tinymce_theme','advanced') ?>
Edit : un billet sur le même sujet existe en anglais (merci à Tomasz Ducin)

The same topic published before, in English:
http://symfony-world.blogspot.com/2010/03/using-tinymce-with-symfony.html
I didn’t see that even if I’ve already visited this blog.
My version is a little more customizable thanks to language option.
Thank you for the information !