alecpl
2008-06-13 712b30dd2de49763f68ee6c8f7b8b24bdadb19d9
- Added option to display images in messages from known senders (#1484601)


10 files modified
65 ■■■■■ changed files
CHANGELOG 4 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist 3 ●●●●● patch | view | raw | blame | history
program/include/rcube_message.php 10 ●●●●● patch | view | raw | blame | history
program/js/app.js 8 ●●●●● patch | view | raw | blame | history
program/localization/en_US/labels.inc 1 ●●●● patch | view | raw | blame | history
program/localization/nl_NL/labels.inc 1 ●●●● patch | view | raw | blame | history
program/localization/pl_PL/labels.inc 1 ●●●● patch | view | raw | blame | history
program/steps/mail/show.inc 18 ●●●●● patch | view | raw | blame | history
program/steps/settings/func.inc 18 ●●●● patch | view | raw | blame | history
program/steps/settings/save_prefs.inc 1 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,10 @@
CHANGELOG RoundCube Webmail
---------------------------
2008/06/13 (alec)
----------
- Added option to display images in messages from known senders (#1484601)
2008/06/12 (alec)
----------
- Fix corrupted MIME headers of messages in Sent folder (#1485111)
config/main.inc.php.dist
@@ -312,6 +312,9 @@
// prefer displaying HTML messages
$rcmail_config['prefer_html'] = TRUE;
// display images in mail from known senders
$rcmail_config['addrbook_show_images'] = FALSE;
// compose html formatted messages by default
$rcmail_config['htmleditor'] = FALSE;
program/include/rcube_message.php
@@ -86,6 +86,16 @@
    return $raw ? $value : $this->imap->decode_header($value);
  }
  
  /**
   * Set is_safe var and session data
   *
   * @param bool enable/disable
   */
  public function set_safe($safe = true)
  {
    $this->is_safe = $safe;
    $_SESSION['safe_messages'][$this->uid] = $this->is_safe;
  }
  
  /**
   * Compose a valid URL for getting a message part
program/js/app.js
@@ -3399,6 +3399,14 @@
    };
  this.toggle_prefer_html = function(checkbox)
    {
    var addrbook_show_images;
    if (addrbook_show_images = document.getElementById('rcmfd_addrbook_show_images'))
      addrbook_show_images.disabled = !checkbox.checked;
    }
  /********************************************************/
  /*********        remote request methods        *********/
program/localization/en_US/labels.inc
@@ -66,6 +66,7 @@
$labels['preferhtml'] = 'Display HTML';
$labels['htmlmessage'] = 'HTML Message';
$labels['showknownimages'] = 'Show images from known senders';
$labels['prettydate'] = 'Pretty dates';
$labels['addtoaddressbook'] = 'Add to address book';
program/localization/nl_NL/labels.inc
@@ -52,6 +52,7 @@
$labels['filesize'] = 'Bestandsgrootte';
$labels['preferhtml'] = 'Toon HTML';
$labels['htmlmessage'] = 'HTML Bericht';
$labels['showknownimages'] = 'Toon afbeeldingen van bekende afzenders';
$labels['prettydate'] = 'Opgemaakte datums';
$labels['addtoaddressbook'] = 'Toevoegen aan adresboek';
$labels['sun'] = 'Zo';
program/localization/pl_PL/labels.inc
@@ -57,6 +57,7 @@
$labels['filesize'] = 'Rozmiar pliku';
$labels['preferhtml'] = 'Domyślny HTML';
$labels['htmlmessage'] = 'Wiadomość HTML';
$labels['showknownimages'] = 'Wyświetlaj obrazki od znanych nadawców';
$labels['prettydate'] = 'Ładne daty';
$labels['addtoaddressbook'] = 'Dodaj do książki adresowej ';
$labels['sun'] = 'Nd';
program/steps/mail/show.inc
@@ -45,6 +45,24 @@
  // calculate Etag for this request
  $etag = md5($MESSAGE->uid.$mbox_name.session_id().intval($MESSAGE->headers->mdn_sent).intval($MESSAGE->is_safe).intval($PRINT_MODE));
  // check known senders to display images
  if (!$MESSAGE->is_safe
    && !$_SESSION['safe_messages'][$MESSAGE->uid]
    && !isset($_GET['_safe'])
    && $RCMAIL->config->get('addrbook_show_images')
    && $MESSAGE->has_html_part())
    {
      $CONTACTS = new rcube_contacts($DB, $_SESSION['user_id']);
      $senders = $IMAP->decode_address_list($MESSAGE->headers->from);
      foreach ($senders as $sender)
        if ($sender['mailto'] && $CONTACTS->search('email', $sender['mailto'], true, false)->count)
      {
      $MESSAGE->set_safe();
      break;
      }
    }
  // allow caching, unless remote images are present
  if ((bool)$MESSAGE->is_safe)
    send_nocacheing_headers();
program/steps/settings/func.inc
@@ -150,12 +150,26 @@
  if (!isset($no_override['prefer_html']))
    {
    $field_id = 'rcmfd_htmlmsg';
    $input_pagesize = new html_checkbox(array('name' => '_prefer_html', 'id' => $field_id, 'value' => 1));
    $input_preferhtml = new html_checkbox(array('name' => '_prefer_html', 'id' => $field_id, 'value' => 1,
    'onchange' => JS_OBJECT_NAME.'.toggle_prefer_html(this)'));
    $out .= sprintf("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n",
                    $field_id,
                    Q(rcube_label('preferhtml')),
                    $input_pagesize->show($config['prefer_html']?1:0));
                    $input_preferhtml->show($config['prefer_html']?1:0));
    }
  // show checkbox for displaying images from people in the addressbook
  if (!isset($no_override['addrbook_show_images']))
    {
    $field_id = 'rcmfd_addrbook_show_images';
    $input_addrbook_show_images = new html_checkbox(array('name' => '_addrbook_show_images', 'id' => $field_id,
    'value' => 1, 'disabled' => $config['prefer_html']?0:1));
    $out .= sprintf("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n",
                    $field_id,
                    Q(rcube_label('showknownimages')),
                    $input_addrbook_show_images->show($config['addrbook_show_images']?1:0));
    }
  // Show checkbox for HTML Editor
program/steps/settings/save_prefs.inc
@@ -25,6 +25,7 @@
  'pagesize'     => is_numeric($_POST['_pagesize']) ? max(2, intval($_POST['_pagesize'])) : $CONFIG['pagesize'],
  'prettydate'   => isset($_POST['_pretty_date']) ? TRUE : FALSE,
  'prefer_html'  => isset($_POST['_prefer_html']) ? TRUE : FALSE,
  'addrbook_show_images' => isset($_POST['_addrbook_show_images']) ? TRUE : FALSE,
  'htmleditor'   => isset($_POST['_htmleditor']) ? TRUE : FALSE,
  'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE,
  'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE,