Fr:Trucs et astuces:FCKeditor






Fr:Trucs et astuces:FCKeditor

Créer un formulaire FCKeditor :

$editor_dir="FCKeditor/";
include_once($editor_dir."fckeditor.php") ;

$sBasePath = $_SERVER['PHP_SELF'] ;
$sBasePath = substr( $sBasePath, 0, strpos( $sBasePath, "login.php" ) ) ;

$oFCKeditor = new FCKeditor('report_text') ;
$oFCKeditor->BasePath    = $sBasePath.$editor_dir;

$oFCKeditor->Value = stripslashes($report_text);

$report_text_editor= $oFCKeditor->CreateHtml();

$text.="
<FORM id=main_form action='javascript:void(null)' onsubmit='submit_form(this,Array(\"report_text\"))'>

$report_text_editor

<input type=submit value=' Save >> ' class=submit_button>

</FORM>
";

$objResponse->addScript("__FCKeditorNS = null;");
$objResponse->addScript("FCKeditorAPI = null;");

S'il n'y a pas d'éditeur dans la page : <FORM id=main_form action='javascript:void(null)' onsubmit='submit_form(this)'>.

S'il y a plusieurs éditeurs : <FORM id=main_form action='javascript:void(null)' onsubmit='submit_form(this,Array(\"report_text\",\"other_field_name\"))'>


Les fonctions javascript utilisées lors de la soumission des formulaires. "rt_editors" correspond au tableau contenant les noms des éditeurs de la page (il peut y avoir de 0 à n editeurs sur la même page)

<script type="text/javascript"><!--
function submit_form(frm,rt_editors)
{
     if (arguments.length > 1) {
          for (var i = 0; i < rt_editors.length; i++)
          {
               var val = get_ed_text(rt_editors[i]);
               frm.elements[rt_editors[i]].value = val;
          }
     }
     xajax_process_form(xajax.getFormValues(frm));
     return false;
}
// --></script>

"xajax_process_form" correspond à votre function xajax pour parser le formulaire.


La fonction javascript pour récupérer le contenu 'innerHTML' indiqué par le nom du champ

<script type="text/javascript"><!--
function get_ed_text(editor_name)
{
    var oEditor = FCKeditorAPI.GetInstance(editor_name) ;
    if (oEditor.EditorDocument.body.innerHTML) {
        // decommenter la ligne suivante pour un retour XHTML propre
        // return oEditor.GetXHTML();
        return oEditor.EditorDocument.body.innerHTML;
    }
    else return '';
}
// --></script>