Afficher un RTE dans un module BackEnd
De Typo3 CMS / Documentation Typo3 / Support Typo3.
Sommaire |
Déclarations
Pour afficher un RTE dans un module BackEnd il vous faut inclure la classe TCEforms au début de votre classe comme ci-dessous et déclarer les variables nécessaires:
... require_once(PATH_t3lib.'class.t3lib_tceforms.php' ); ... class mon_module extends t3lib_SCbase { ... var $tceforms; // Classe pour le RTE var $RTEbo_JS_avant; // Javascript a placer au début de la page var $RTEbo_JS_action; // Javascript à placer dans le onSubmit du formulaire /** * Initializes the Module * @return void */ function init() ...
Préparation
Il vous faut également modifier le formulaire par défaut afin de changer le nom de celui-ci par "editform" (du même nom que le formulaire d'édition de champs BO) et inclure un marqueur pour le onSubmit.
$this->doc->form="<form action=' ' name='editform' id='editform' method='POST' enctype='multipart/form-data' onsubmit='###RTEbo_JS_action###'>";
Ensuite il faut placer avant le premier RTE ce marqueur:
$this->content .= '###RTEbo_JS_avant###';
La fonction RTEbo
Maintenant que les déclarations sont faites il faut appeler le RTE ce qui ce fait par cette fonction:
/** * Fonction permettant de générer un RTE dans un module BackEnd * * @param string La table dans laquelle on prend l'enregistrement * @param string Le champs que l'on veux * @param string L'id de la ligne souhaitée * @return string Retourne le code HTML du RTE * @see var RTEbo_JS_avant Variable dans laquelle est stockée le JS à mettre avant tout RTE */ function RTEbo($table,$field,$uid) { if(!$this->tceforms) $this->tceforms = t3lib_div::makeInstance('t3lib_TCEforms'); $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*',$table,'uid='.$uid); $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); $RTE = $this->tceforms->getSoloField($table,$row,$theFieldToReturn=$field); $this->RTEbo_JS_avant = $this->tceforms->JStop(); $this->RTEbo_JS_action = implode(';', $this->tceforms->additionalJS_submit); return $this->tceforms->additionalJS_initial .'<script type="text/javascript">'. implode(chr(10), $this->tceforms->additionalJS_pre).'</script>' .$RTE .'<script type="text/javascript">'.implode(chr(10), $this->tceforms->additionalJS_post).'</script>'; }
Le final
Enfin, il faut remplacer les marqueurs précédemment placer avant d'afficher le contenu:
$this->content = preg_replace('/###RTEbo_JS_avant###/',$this->RTEbo_JS_avant,$this->content); $this->content = preg_replace('/###RTEbo_JS_action###/',$this->RTEbo_JS_action,$this->content);
Conclusion
Et voilà ! Vous pouvez utiliser un RTE dans un module BackEnd ! A vous de debug() les $_POST pour voir de quelle manière sont retourner les informations du RTE!
