Jump to content

TinyMCE et création de module


Recommended Posts

Bonjour,

 

Actuellement sur le développement d'un module sous Prestashop 1.4.3, je rencontre un petit soucis avec TinyMCE.

 

Mon module, dans sa configuration, propose 1 textarea et TinyMCE vient se charger dessus. Bref c'est banal.

Lors de l'enregistrement des données de ce textarea en BDD (table "configuration"), le HTML est bien préservé.

Toutefois, lors de la restitution de ce HTML dans mon textarea, les retours à la ligne sont remplacés par des "rn". J'ai bien passé 2h a essayer tout ce que je pouvais et en cherchant sur la toile une solution pour les supprimer et garder un retour à la ligne correct mais rien n'y fait.

 

Exemple :

Texte dans mon textarea sous TinyMCE :

<p><strong>Modifier ici votre texte</strong></p>
<p>Merci</p>

Texte enregistré en BDD dans la table configuration :

<p><strong>Modifier ici votre texte</strong></p>
<p>Merci</p>

Restitution dans mon textarea après enregistrement :

<p><strong>Modifier ici votre texte</strong></p>
<p>rn</p>
<p>Merci</p>

 

Si une bonne âme pouvait m'aiguiller, j'en serai ravi :)

 

Ci dessous une partie de mon code :

Mon textarea (private function _displayForm()) :

$this->_html .= '
   <form action="'.$currentIndex.'&token='.$token.'&configure=cyotemplatesrte" method="post">
       <fieldset class="width3">
           <legend><img src="'.$this->_path.'logo.gif" />'.$this->l('Template : Product Description').'</legend>
           <label>'.$this->l('Template:').' </label>
           <div class="margin-form">
               <textarea class="rte" cols="100" rows="20" id="description_rte" name="description_rte">'.htmlentities(stripslashes($this->_rte_description), ENT_COMPAT, 'UTF-8').'</textarea>
           </div>
           <div class="margin-form">
               <input type="submit" value="'.$this->l('   Save   ').'" name="submitRTEDescription" class="button" />
           </div>
       </fieldset>
   </form>';

 

L'enregistrement (private function _postProcess()) :

if (Tools::isSubmit('submitRTEDescription'))
{
   if (!Configuration::updateValue('RTE_DESCRIPTION', Tools::getValue('description_rte'), true))
       $this->_html .= '<div class="alert error">'.$this->l('Cannot update settings for Description RTE').'</div>';
   else
       $this->_html .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="'.$this->l('Confirmation').'" />'.$this->l('Description RTE updated').'</div>';
}

$this->_refreshProperties();

 

Fonction _refreshProperties(); :

private function _refreshProperties()
{
   $this->_rte_description = Configuration::get('RTE_DESCRIPTION');
}

 

Appel de TinyMCE (dans le _displayForm()) :

// TinyMCE
global $cookie;
$iso = Language::getIsoById((int)($cookie->id_lang));
$isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en');
$ad = dirname($_SERVER["PHP_SELF"]);
echo '
   <script type="text/javascript">
       var iso = \''.$isoTinyMCE.'\' ;
       var pathCSS = \''._THEME_CSS_DIR_.'\' ;
       var ad = \''.$ad.'\' ;
   </script>
   <script type="text/javascript" src="'.__PS_BASE_URI__.'js/tiny_mce/tiny_mce.js"></script>
   <script type="text/javascript" src="'.__PS_BASE_URI__.'js/tinymce.inc.js"></script>
';

Link to comment
Share on other sites

Salut,

 

Semblerait que dans le Configuration::get ils utilisent un stripslashes donc dans la base de données tu as un \r\n et du coup le stripslashes t'enlève le \ ce qui fait rn :P

 

Il faudrait pour ton enregistrement remplacer les retours chariot par un caractère particulier genre un pipe et ensuite tu fait un str_replace du pipe par un <br />

 

Cela pourrait peut être fonctionner.

Link to comment
Share on other sites

Salut,

 

Semblerait que dans le Configuration::get ils utilisent un stripslashes donc dans la base de données tu as un \r\n et du coup le stripslashes t'enlève le \ ce qui fait rn :P

 

Il faudrait pour ton enregistrement remplacer les retours chariot par un caractère particulier genre un pipe et ensuite tu fait un str_replace du pipe par un <br />

 

Cela pourrait peut être fonctionner.

Effectivement...

Je m'y suis remis sérieusement depuis 30mn et pour l'enregistrement j'ai finalement fait :

str_replace(CHR(13).CHR(10),"",Tools::getValue('description_rte_rte'))

 

C'est bourrin, mais ça passe :)

Link to comment
Share on other sites

Salut,

 

Semblerait que dans le Configuration::get ils utilisent un stripslashes donc dans la base de données tu as un \r\n et du coup le stripslashes t'enlève le \ ce qui fait rn :P

 

Il faudrait pour ton enregistrement remplacer les retours chariot par un caractère particulier genre un pipe et ensuite tu fait un str_replace du pipe par un <br />

 

Cela pourrait peut être fonctionner.

Effectivement...

Je m'y suis remis sérieusement depuis 30mn et pour l'enregistrement j'ai finalement fait :

str_replace(CHR(13).CHR(10),"",Tools::getValue('description_rte_rte'))

 

C'est bourrin, mais ça passe :)

 

Yep faut être un peu bourrin avec prestashop en admin :P

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...