+ */
+class CSSToInlineStylesException extends Exception
+{
+}
+
+?>
Index: /trunk/expressoMail1_2/inc/class.imap_functions.inc.php
===================================================================
--- /trunk/expressoMail1_2/inc/class.imap_functions.inc.php (revision 5463)
+++ /trunk/expressoMail1_2/inc/class.imap_functions.inc.php (revision 5476)
@@ -1827,12 +1827,16 @@
function replace_special_characters($body)
- {
- // Suspected TAGS!
- // $tag_list = Array('blink','object','meta','html','link','frame','iframe','layer','ilayer','plaintext','script','style','img','applet','embed','head','frameset','xml','xmp');
- // remove MS Office's proprietary tag
- //$body = mb_ereg_replace('.*', '', $body);
- // Layout problem: Change html elements
- // with absolute position to relate position, CASE INSENSITIVE.
+ {
+ if(trim($body) === '') return;
+
$body = str_ireplace('POSITION: ABSOLUTE;','', $body);
+ $body = str_ireplace(' ','
', $body);//Qubra de linha do MSO
+ $body = preg_replace('/<(meta|base|link|html|\/html)[^>]*>/i', '', $body);
+
+ require_once('../library/CssToInlineStyles/css_to_inline_styles.php');
+ $cssToInlineStyles = new CSSToInlineStyles($body);
+ $cssToInlineStyles->setUseInlineStylesBlock(true);
+ $cssToInlineStyles->setCleanup(TRUE);
+ $body = $cssToInlineStyles->convert(); //Converte as tag style em inline styles
///--------------------------------//
@@ -1841,79 +1845,37 @@
'blink', 'object', 'frame', 'iframe',
'layer', 'ilayer', 'plaintext', 'script',
- 'applet', 'embed', 'frameset', 'xml', 'xmp'
+ 'applet', 'embed', 'frameset', 'xml', 'xmp','style','head'
);
foreach ($tag_list as $index => $tag)
$body = @mb_eregi_replace("<$tag\\b[^>]*>(.*?)$tag>", '', $body);
-
- $body = preg_replace('/<(meta|base|link)[^>]*>/i', '', $body);
-
- //try to wrap CSS code instead of remove STYLE tags
- require_once('../library/csstidy/class.csstidy.php');
- $css = new csstidy();
- $css->set_cfg('preserve_css', false);
-
- $regs_found = array();
- $tags_found = preg_match_all("@]*>@si", $body, $regs_found);
- $wrapper_class = 'ExpressoCssWrapper' . time();
-
- foreach ($regs_found as $k => &$v) {
- foreach ($v as $kk => $vv) {
- $n_start = strpos($vv, '>') + 1;
- $n_length = strrpos($vv, '<') - $n_start;
- $bf_innerHTML = substr($vv, $n_start, $n_length);
- $bf_innerHTML = mb_ereg_replace('', '', $bf_innerHTML);
-
- $css->parse($bf_innerHTML);
-
- $prefix = ".$wrapper_class ";
- if (isset($css->css[41]) && count($css->css[41] > 0))
- foreach ($css->css[41] as $key => $value) {
- //explode multiple selectors per block
- $selectors = explode(',', $key);
-
- foreach ($selectors as $selector) {
- if (ereg('\*', $key)) {
- //skip selecto '*'
- continue;
- }
-
- $selector = eregi_replace('[^#\.]*body.*', '', $selector);
- $css->css[41][$prefix . trim($selector)] = $value;
- }
- unset($css->css[41][$key]);
- }
-
- $body = str_replace($vv, '', $body);
- }
+
+ // Malicious Code Remove
+ $dirtyCodePattern = "/(<([\w]+[\w0-9]*)(.*)on(mouse(move|over|down|up)|load|blur|change|error|click|dblclick|focus|key(down|up|press)|select)([\n\ ]*)=([\n\ ]*)[\"'][^>\"']*[\"']([^>]*)>)(.*)(<\/\\2>)?/misU";
+ preg_match_all($dirtyCodePattern, $body, $rest, PREG_PATTERN_ORDER);
+ foreach ($rest[0] as $i => $val) {
+ if (!(preg_match("/javascript:window\.open\(\"([^'\"]*)\/index\.php\?menuaction=calendar\.uicalendar\.set_action\&cal_id=([^;'\"]+);?['\"]/i", $rest[1][$i]) && strtoupper($rest[4][$i]) == "CLICK" )) //Calendar events
+ $body = str_replace($rest[1][$i], "<" . $rest[2][$i] . $rest[3][$i] . $rest[7][$i] . ">", $body);
}
-
- // Malicious Code Remove
- $dirtyCodePattern = "/(<([\w]+[\w0-9]*)(.*)on(mouse(move|over|down|up)|load|blur|change|error|click|dblclick|focus|key(down|up|press)|select)([\n\ ]*)=([\n\ ]*)[\"'][^>\"']*[\"']([^>]*)>)(.*)(<\/\\2>)?/misU";
- preg_match_all($dirtyCodePattern, $body, $rest, PREG_PATTERN_ORDER);
- foreach ($rest[0] as $i => $val) {
- if (!(preg_match("/javascript:window\.open\(\"([^'\"]*)\/index\.php\?menuaction=calendar\.uicalendar\.set_action\&cal_id=([^;'\"]+);?['\"]/i", $rest[1][$i]) && strtoupper($rest[4][$i]) == "CLICK" )) //Calendar events
- $body = str_replace($rest[1][$i], "<" . $rest[2][$i] . $rest[3][$i] . $rest[7][$i] . ">", $body);
- }
-
- /*
- * Remove deslocamento a esquerda colocado pelo Outlook.
- * Este delocamento faz com que algumas palavras fiquem escondidas atras da barra lateral do expresso.
- */
- $body = mb_ereg_replace("(]*)(text-indent:[^>;]*-[^>;]*;)([^>]*>)", "\\1\\3", $body);
- $body = mb_ereg_replace("(
]*)(margin-right:[^>;]*-[^>;]*;)([^>]*>)", "\\1\\3", $body);
- $body = mb_ereg_replace("(
]*)(margin-left:[^>;]*-[^>;]*;)([^>]*>)", "\\1\\3", $body);
- //--------------------------------------------------------------------------------------------//
- //Remoção de tags para correção de erro no firefox
- //Comentado pois estes replaces geram erros no html da msg, não se pode garantir que o os sejam realmente os fechamentos dos .
- //Caso realmente haja a nescessidade de remover estes spans deve ser repensado a forma de como faze-lo.
- // $body = mb_eregi_replace("","",$body);
- // $body = mb_eregi_replace("","",$body);
- //Correção para compatibilização com Outlook, ao visualizar a mensagem
- $body = mb_ereg_replace('', $body);
-
- return "" . $body . '
';
+
+ /*
+ * Remove deslocamento a esquerda colocado pelo Outlook.
+ * Este delocamento faz com que algumas palavras fiquem escondidas atras da barra lateral do expresso.
+ */
+ $body = mb_ereg_replace("(]*)(text-indent:[^>;]*-[^>;]*;)([^>]*>)", "\\1\\3", $body);
+ $body = mb_ereg_replace("(
]*)(margin-right:[^>;]*-[^>;]*;)([^>]*>)", "\\1\\3", $body);
+ $body = mb_ereg_replace("(
]*)(margin-left:[^>;]*-[^>;]*;)([^>]*>)", "\\1\\3", $body);
+ //--------------------------------------------------------------------------------------------//
+ //Remoção de tags para correção de erro no firefox
+ //Comentado pois estes replaces geram erros no html da msg, não se pode garantir que o os
sejam realmente os fechamentos dos .
+ //Caso realmente haja a nescessidade de remover estes spans deve ser repensado a forma de como faze-lo.
+ // $body = mb_eregi_replace("","",$body);
+ // $body = mb_eregi_replace("","",$body);
+ //Correção para compatibilização com Outlook, ao visualizar a mensagem
+ $body = mb_ereg_replace('', $body);
+ $body = preg_replace("/]*>([\s]?)*<\/p[^>]*>/", '', $body); //Remove paragrafos vazios (evita duplo espaçamento em emails do MSO)
+
+ return $body ;
}
Index: /trunk/expressoMail1_2/js/draw_api.js
===================================================================
--- /trunk/expressoMail1_2/js/draw_api.js (revision 5469)
+++ /trunk/expressoMail1_2/js/draw_api.js (revision 5476)
@@ -2933,5 +2933,5 @@
_body.id = 'body_' + ID;
_body.innerHTML = newBody;
- //_body.style.fontSize = '16px';
+ _body.style.marginLeft = '5px';
var _elements = _body.getElementsByTagName( '*' );
@@ -3758,5 +3758,5 @@
save_msg(ID);
};
- $("#save_message_options_"+ID).button({ disabled: false });
+ $("#save_message_options_"+ID).button({disabled: false});
};
@@ -3918,5 +3918,5 @@
$(".rich-button").click(function(){
//TO-DO : Se o usuário clicar varias vezes no botão, a função de iniciar o ckeditor se perde e morre.
- $(this).button({ disabled: true });
+ $(this).button({disabled: true});
if($(this).find("span:first-child").html() == get_lang("Rich text")){
$(this).find("span:first-child").html(get_lang("Simple Text"));