Aleksander Machniak
2013-09-15 7f1218caeacb5c3085047e61b9e3cf8e82198045
Display full attachment name using title attribute when name is too long to display (#1489320)

Conflicts:

CHANGELOG
program/steps/mail/show.inc
7 files modified
52 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/js/app.js 13 ●●●●● patch | view | raw | blame | history
program/steps/mail/attachments.inc 5 ●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 24 ●●●● patch | view | raw | blame | history
program/steps/mail/show.inc 5 ●●●●● patch | view | raw | blame | history
skins/classic/templates/message.html 2 ●●● patch | view | raw | blame | history
skins/classic/templates/messagepreview.html 2 ●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Display full attachment name using title attribute when name is too long to display (#1489320)
- Fix attachment icon issue when rare font/language is used (#1489326)
- Fix expanded thread root message styling after refreshing messages list (#1489327)
- Fix issue where From address was removed from Cc and Bcc fields when editing a draft (#1489319)
program/js/app.js
@@ -1887,7 +1887,7 @@
        html = expando;
      else if (c == 'subject') {
        if (bw.ie) {
          col.onmouseover = function() { rcube_webmail.long_subject_title_ie(this, message.depth+1); };
          col.onmouseover = function() { rcube_webmail.long_subject_title_ex(this, message.depth+1); };
          if (bw.ie8)
            tree = '<span></span>' + tree; // #1487821
        }
@@ -3604,7 +3604,12 @@
      att.html = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+name+'\', \''+att.frame+'\');" href="#cancelupload" class="cancelupload">'
        + (this.env.cancelicon ? '<img src="'+this.env.cancelicon+'" alt="" />' : this.get_label('cancel')) + '</a>' + att.html;
    var indicator, li = $('<li>').attr('id', name).addClass(att.classname).html(att.html);
    var indicator, li = $('<li>');
    li.attr('id', name)
      .addClass(att.classname)
      .html(att.html)
      .on('mouseover', function() { rcube_webmail.long_subject_title_ex(this, 0); });
    // replace indicator's li
    if (upload_id && (indicator = document.getElementById(upload_id))) {
@@ -6876,11 +6881,11 @@
  if (!elem.title) {
    var $elem = $(elem);
    if ($elem.width() + indent * 15 > $elem.parent().width())
      elem.title = $elem.html();
      elem.title = $elem.text();
  }
};
rcube_webmail.long_subject_title_ie = function(elem, indent)
rcube_webmail.long_subject_title_ex = function(elem, indent)
{
  if (!elem.title) {
    var $elem = $(elem),
program/steps/mail/attachments.inc
@@ -118,9 +118,12 @@
          'alt' => rcube_label('delete')
        ));
      }
      else {
      else if ($COMPOSE['textbuttons']) {
        $button = Q(rcube_label('delete'));
      }
      else {
        $button = '';
      }
      $content = html::a(array(
        'href' => "#delete",
program/steps/mail/compose.inc
@@ -1340,8 +1340,9 @@
  if (!$attrib['id'])
    $attrib['id'] = 'rcmAttachmentList';
  $out = "\n";
  $out    = "\n";
  $jslist = array();
  $button = '';
  if (is_array($COMPOSE['attachments'])) {
    if ($attrib['deleteicon']) {
@@ -1350,27 +1351,38 @@
        'alt' => rcube_label('delete')
      ));
    }
    else
    else if (rcube_utils::get_boolean($attrib['textbuttons'])) {
      $button = Q(rcube_label('delete'));
    }
    foreach ($COMPOSE['attachments'] as $id => $a_prop) {
      if (empty($a_prop))
        continue;
      $out .= html::tag('li', array('id' => 'rcmfile'.$id, 'class' => rcmail_filetype2classname($a_prop['mimetype'], $a_prop['name'])),
      $out .= html::tag('li',
        array(
          'id'          => 'rcmfile'.$id,
          'class'       => rcmail_filetype2classname($a_prop['mimetype'], $a_prop['name']),
          'onmouseover' => "rcube_webmail.long_subject_title_ex(this, 0)",
        ),
        html::a(array(
            'href' => "#delete",
            'title' => rcube_label('delete'),
            'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id),
            'class' => 'delete'),
          $button) . Q($a_prop['name']));
            'class' => 'delete'
          ),
          $button
        ) . Q($a_prop['name'])
      );
        $jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']);
      $jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']);
    }
  }
  if ($attrib['deleteicon'])
    $COMPOSE['deleteicon'] = $CONFIG['skin_path'] . $attrib['deleteicon'];
  else if (rcube_utils::get_boolean($attrib['textbuttons']))
    $COMPOSE['textbuttons'] = true;
  if ($attrib['cancelicon'])
    $OUTPUT->set_env('cancelicon', $CONFIG['skin_path'] . $attrib['cancelicon']);
  if ($attrib['loadingicon'])
program/steps/mail/show.inc
@@ -157,9 +157,9 @@
        $ol .= html::tag('li', null, Q(sprintf("%s (%s)", $filename, $size)));
      }
      else {
        if (mb_strlen($filename) > 50) {
        if ($attrib['maxlength'] && mb_strlen($filename) > $attrib['maxlength']) {
          $title    = $filename;
          $filename = abbreviate_string($filename, 50);
          $filename = abbreviate_string($filename, $attrib['maxlength']);
        }
        else {
          $title = '';
@@ -173,6 +173,7 @@
              JS_OBJECT_NAME,
              $attach_prop->mime_id,
              rcmail_fix_mimetype($attach_prop->mimetype)),
              'onmouseover' => $title ? '' : 'rcube_webmail.long_subject_title_ex(this, 0)',
              'title' => Q($title),
            ),
            Q($filename)));
skins/classic/templates/message.html
@@ -41,7 +41,7 @@
<div class="boxlistcontent" style="top:0; overflow-x:auto">
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
<roundcube:object name="messageFullHeaders" id="full-headers" />
<roundcube:object name="messageAttachments" id="attachment-list" />
<roundcube:object name="messageAttachments" id="attachment-list" maxlength="50" />
<roundcube:object name="messageObjects" id="message-objects" />
<roundcube:object name="messageBody" id="messagebody" />
</div>
skins/classic/templates/messagepreview.html
@@ -10,7 +10,7 @@
<roundcube:button command="extwin" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="openextwinlink" />
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
<roundcube:object name="messageFullHeaders" id="full-headers" />
<roundcube:object name="messageAttachments" id="attachment-list" />
<roundcube:object name="messageAttachments" id="attachment-list" maxlength="50" />
</div>
<roundcube:object name="messageObjects" id="message-objects" />