FIX : bug #1840 Email template modules in HTML are not render correctly

This commit is contained in:
Florian HENRY 2015-02-11 11:44:49 +01:00
parent ddb95e5765
commit 7f5e4aa135
2 changed files with 20 additions and 6 deletions

View File

@ -43,6 +43,7 @@ class DolEditor
var $height; var $height;
var $width; var $width;
var $readonly; var $readonly;
var $allowed_content;
/** /**
@ -62,8 +63,9 @@ class DolEditor
* @param int $rows Size of rows for textarea tool * @param int $rows Size of rows for textarea tool
* @param int $cols Size of cols for textarea tool (textarea number of cols or %) * @param int $cols Size of cols for textarea tool (textarea number of cols or %)
* @param int $readonly 0=Read/Edit, 1=Read only * @param int $readonly 0=Read/Edit, 1=Read only
* @param int $allowed_content 0=filter input text, 1=render as it is
*/ */
function __construct($htmlname,$content,$width='',$height=200,$toolbarname='Basic',$toolbarlocation='In',$toolbarstartexpanded=false,$uselocalbrowser=true,$okforextendededitor=true,$rows=0,$cols=0,$readonly=0) function __construct($htmlname,$content,$width='',$height=200,$toolbarname='Basic',$toolbarlocation='In',$toolbarstartexpanded=false,$uselocalbrowser=true,$okforextendededitor=true,$rows=0,$cols=0,$readonly=0,$allowed_content=0)
{ {
global $conf,$langs; global $conf,$langs;
@ -132,6 +134,7 @@ class DolEditor
$this->cols = (preg_match('/%/',$cols)?$cols:max(40,$cols)); // If $cols is a percent, we keep it, otherwise, we take max $this->cols = (preg_match('/%/',$cols)?$cols:max(40,$cols)); // If $cols is a percent, we keep it, otherwise, we take max
$this->height = $height; $this->height = $height;
$this->width = $width; $this->width = $width;
$this->allowed_content = $allowed_content;
} }
} }
@ -163,7 +166,6 @@ class DolEditor
$out.= '<textarea id="'.$this->htmlname.'" name="'.$this->htmlname.'" rows="'.$this->rows.'"'.(preg_match('/%/',$this->cols)?' style="width: '.$this->cols.'"':' cols="'.$this->cols.'"').' class="flat">'; $out.= '<textarea id="'.$this->htmlname.'" name="'.$this->htmlname.'" rows="'.$this->rows.'"'.(preg_match('/%/',$this->cols)?' style="width: '.$this->cols.'"':' cols="'.$this->cols.'"').' class="flat">';
$out.= $this->content; $out.= $this->content;
$out.= '</textarea>'; $out.= '</textarea>';
if ($this->tool == 'ckeditor') if ($this->tool == 'ckeditor')
{ {
if (! defined('REQUIRE_CKEDITOR')) define('REQUIRE_CKEDITOR','1'); if (! defined('REQUIRE_CKEDITOR')) define('REQUIRE_CKEDITOR','1');
@ -172,7 +174,6 @@ class DolEditor
$skin='moono'; // default with cdeditor 4 $skin='moono'; // default with cdeditor 4
$htmlencode_force=preg_match('/_encoded$/',$this->toolbarname)?'true':'false'; $htmlencode_force=preg_match('/_encoded$/',$this->toolbarname)?'true':'false';
$out.= '<script type="text/javascript"> $out.= '<script type="text/javascript">
$(document).ready(function () { $(document).ready(function () {
/* if (CKEDITOR.loadFullCore) CKEDITOR.loadFullCore(); */ /* if (CKEDITOR.loadFullCore) CKEDITOR.loadFullCore(); */
@ -181,6 +182,7 @@ class DolEditor
{ {
/* property:xxx is same than CKEDITOR.config.property = xxx */ /* property:xxx is same than CKEDITOR.config.property = xxx */
customConfig : ckeditorConfig, customConfig : ckeditorConfig,
allowedContent :'.($this->allowed_content?'true':'false').',
readOnly : '.($this->readonly?'true':'false').', readOnly : '.($this->readonly?'true':'false').',
htmlEncodeOutput :'.$htmlencode_force.', htmlEncodeOutput :'.$htmlencode_force.',
toolbar: \''.$this->toolbarname.'\', toolbar: \''.$this->toolbarname.'\',

View File

@ -582,7 +582,12 @@ class FormMail
if (! empty($this->withbody)) if (! empty($this->withbody))
{ {
$defaultmessage=""; $defaultmessage="";
if (count($arraydefaultmessage) > 0 && $arraydefaultmessage['content']) $defaultmessage=$arraydefaultmessage['content']; $from_template=false;
if (count($arraydefaultmessage) > 0 && $arraydefaultmessage['content']) {
$defaultmessage=$arraydefaultmessage['content'];
$from_template=true;
}
elseif (! is_numeric($this->withbody)) $defaultmessage=$this->withbody; elseif (! is_numeric($this->withbody)) $defaultmessage=$this->withbody;
// Complete substitution array // Complete substitution array
@ -613,6 +618,13 @@ class FormMail
$defaultmessage = dol_nl2br($defaultmessage); $defaultmessage = dol_nl2br($defaultmessage);
} }
if (dol_textishtml($defaultmessage) && $from_template) {
$allow_content=1;
var_dump($allow_content);
} else {
$allow_content=0;
}
if (isset($_POST["message"])) $defaultmessage=$_POST["message"]; if (isset($_POST["message"])) $defaultmessage=$_POST["message"];
else else
@ -643,7 +655,7 @@ class FormMail
else $this->withfckeditor=0; else $this->withfckeditor=0;
} }
$doleditor=new DolEditor('message',$defaultmessage,'',280,$this->ckeditortoolbar,'In',true,true,$this->withfckeditor,8,72); $doleditor=new DolEditor('message',$defaultmessage,'',280,$this->ckeditortoolbar,'In',true,true,$this->withfckeditor,8,72,0,$allow_content);
$out.= $doleditor->Create(1); $out.= $doleditor->Create(1);
} }
$out.= "</td></tr>\n"; $out.= "</td></tr>\n";