thomascube
2006-08-30 10c92bef09262b7d46e6c87893715bb5a2e5e4a1
New indentation for quoted message text; HTML validity

5 files modified
78 ■■■■ changed files
CHANGELOG 6 ●●●●● patch | view | raw | blame | history
index.php 2 ●●● patch | view | raw | blame | history
program/include/main.inc 2 ●●● patch | view | raw | blame | history
program/steps/mail/func.inc 41 ●●●●● patch | view | raw | blame | history
skins/default/mail.css 27 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,12 @@
CHANGELOG RoundCube Webmail
---------------------------
2006/08/30 (thomasb)
----------
- New indentation for quoted message text
- Improved HTML validity
2006/08/28 (estadtherr)
----------
- Fixed URL character set (Ticket #1445501)
index.php
@@ -116,7 +116,7 @@
// add framed parameter
if ($_framed)
  {
  $COMM_PATH .= '&_framed=1';
  $COMM_PATH .= '&_framed=1';
  $SESS_HIDDEN_FIELD .= "\n".'<input type="hidden" name="_framed" value="1" />';
  }
program/include/main.inc
@@ -921,7 +921,6 @@
      {
      $html_encode_arr = get_html_translation_table(HTML_SPECIALCHARS);        
      unset($html_encode_arr['?']);
      unset($html_encode_arr['&']);
      }
    $ltpos = strpos($str, '<');
@@ -933,6 +932,7 @@
      unset($encode_arr['"']);
      unset($encode_arr['<']);
      unset($encode_arr['>']);
      unset($encode_arr['&']);
      }
    else if ($mode=='remove')
      $str = strip_tags($str);
program/steps/mail/func.inc
@@ -214,7 +214,7 @@
    else if ($folder['id']==$CONFIG['junk_mbox'])
      $class_name = 'junk';
    $js_name = rep_specialchars_output($folder['id'], 'js');
    $js_name = htmlspecialchars(rep_specialchars_output($folder['id'], 'js'));
    $out .= sprintf('<li id="rcmbx%s" class="mailbox %s %s%s%s"><a href="%s&amp;_mbox=%s"'.
                    ' onclick="return %s.command(\'list\',\'%s\')"'.
                    ' onmouseover="return %s.focus_mailbox(\'%s\')"' .            
@@ -271,7 +271,7 @@
      }
    $out .= sprintf('<option value="%s">%s%s</option>'."\n",
                    $folder['id'],
                    htmlspecialchars($folder['id']),
                    str_repeat('&nbsp;', $nestLevel*4),
                    rep_specialchars_output($foldername, 'html', 'all'));
@@ -729,39 +729,44 @@
    
    $convert_patterns[] = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/ie';
    $convert_replaces[] = "rcmail_str_replacement('<a href=\"mailto:\\1\" onclick=\"return $JS_OBJECT_NAME.command(\'compose\',\'\\1\',this)\">\\1</a>', \$replace_strings)";
    if ($part->ctype_parameters['format'] != 'flowed')
      $body = wordwrap(trim($body), 80);
    $body = wordwrap(trim($body), 80);
    $body = preg_replace($convert_patterns, $convert_replaces, $body);
    // split body into single lines
    $a_lines = preg_split('/\r?\n/', $body);
    $quote_level = 0;
    // colorize quoted parts
    for($n=0; $n<sizeof($a_lines); $n++)
      {
      $line = $a_lines[$n];
      $quotation = '';
      $q = 0;
      if (preg_match('/^(>+\s*)/', $line, $regs))
        {
        $q = strlen(preg_replace('/\s/', '', $regs[1]));
        $line = substr($line, strlen($regs[1]));
      if ($line{2}=='>')
        $color = 'red';
      else if ($line{1}=='>')
        $color = 'green';
      else if ($line{0}=='>')
        $color = 'blue';
      else
        $color = FALSE;
        if ($q > $quote_level)
          $quotation = str_repeat('<blockquote>', $q - $quote_level);
        else if ($q < $quote_level)
          $quotation = str_repeat("</blockquote>", $quote_level - $q);
        }
      else if ($quote_level > 0)
        $quotation = str_repeat("</blockquote>", $quote_level);
      $line = rep_specialchars_output($line, 'html', 'replace', FALSE);
      if ($color)
        $a_lines[$n] = sprintf('<font color="%s">%s</font>', $color, $line);
      else
        $a_lines[$n] = $line;
      $quote_level = $q;
      $a_lines[$n] = $quotation . rep_specialchars_output($line, 'html', 'replace', FALSE);
      }
    // insert the links for urls and mailtos
    $body = preg_replace("/##string_replacement\{([0-9]+)\}##/e", "\$replace_strings[\\1]", join("\n", $a_lines));
    
    return "<pre>\n".$body."\n</pre>";
    return "<div class=\"pre\">\n".$body."\n</div>";
    }
  }
skins/default/mail.css
@@ -654,12 +654,37 @@
  color: #0000CC;
}
div.message-part pre
div.message-part div.pre
{
  margin: 0px;
  padding: 0px;
  white-space: pre;
  font-family: monospace;
}
div.message-part blockquote
{
  color: blue;
  border-left: 2px solid blue;
  border-right: 2px solid blue;
  background-color: #F6F6F6;
  margin: 2px 0px 2px 0px;
  padding: 1px 8px 1px 10px;
}
div.message-part blockquote blockquote
{
  color: green;
  border-left: 2px solid green;
  border-right: 2px solid green;
}
div.message-part blockquote blockquote blockquote
{
  color: #990000;
  border-left: 2px solid #bb0000;
  border-right: 2px solid #bb0000;
}
#remote-objects-message
{