Changeset 4663 in subversion


Ignore:
Timestamp:
Apr 15, 2011 12:21:23 PM (2 years ago)
Author:
thomasb
Message:

Move folder name truncation to client (#1485412)

Location:
trunk/roundcubemail/skins/default
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/skins/default/functions.js

    r4566 r4663  
    498498    rcmail.gui_object('message_dragmenu', 'dragmessagemenu'); 
    499499 
     500    if (rcmail.gui_objects.mailboxlist) { 
     501      rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist); 
     502      rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist); 
     503      rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist); 
     504      rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist); 
     505      rcube_render_mailboxlist(); 
     506    } 
     507 
    500508    if (rcmail.env.action == 'compose') 
    501509      rcmail_ui.init_compose_form(); 
     
    514522} 
    515523 
     524// Abbreviate mailbox names to fit width of the container 
     525function rcube_render_mailboxlist() 
     526{ 
     527  if (bw.ie6)  // doesn't work well on IE6 
     528    return; 
     529 
     530  $('#mailboxlist > li a, #mailboxlist ul:visible > li a').each(function(){ 
     531    var elem = $(this); 
     532    var text = elem.data('text'); 
     533    if (!text) { 
     534      text = elem.text().replace(/\s+\(.+$/, ''); 
     535      elem.data('text', text); 
     536    } 
     537    if (text.length < 6) 
     538      return; 
     539 
     540    var abbrev = fit_string_to_size(text, elem, elem.width() - elem.children('span.unreadcount').width()); 
     541    if (abbrev != text) 
     542      elem.attr('title', text); 
     543    elem.contents().filter(function(){ return (this.nodeType == 3); }).get(0).data = abbrev; 
     544  }); 
     545} 
     546 
     547// inspired by https://gist.github.com/24261/7fdb113f1e26111bd78c0c6fe515f6c0bf418af5 
     548function fit_string_to_size(str, elem, len) 
     549{ 
     550    var result = str; 
     551    var ellip = '...'; 
     552    var span = $('<b>').css({ visibility:'hidden', padding:'0px' }).appendTo(elem).get(0); 
     553 
     554    // on first run, check if string fits into the length already. 
     555    span.innerHTML = result; 
     556    if (span.offsetWidth > len) { 
     557        var cut = Math.max(1, Math.floor(str.length * ((span.offsetWidth - len) / span.offsetWidth) / 2)), 
     558          mid = Math.floor(str.length / 2); 
     559        var offLeft = mid, offRight = mid; 
     560        while (true) { 
     561            offLeft = mid - cut; 
     562            offRight = mid + cut; 
     563            span.innerHTML = str.substring(0,offLeft) + ellip + str.substring(offRight); 
     564 
     565            // break loop if string fits size 
     566            if (span.offsetWidth <= len || offLeft < 3) 
     567              break; 
     568 
     569            cut++; 
     570        } 
     571 
     572        // build resulting string 
     573        result = str.substring(0,offLeft) + ellip + str.substring(offRight); 
     574    } 
     575     
     576    span.parentNode.removeChild(span); 
     577    return result; 
     578} 
  • trunk/roundcubemail/skins/default/splitter.js

    r4335 r4663  
    1616  this.relative = attrib.relative ? true : false; 
    1717  this.drag_active = false; 
     18  this.callback = attrib.callback; 
    1819 
    1920  this.init = function() 
     
    169170    this.set_cookie(); 
    170171 
     172    if (typeof this.callback == 'function') 
     173      this.callback(this); 
     174 
    171175    return bw.safari ? true : rcube_event.cancel(e); 
    172176  }; 
  • trunk/roundcubemail/skins/default/templates/mail.html

    r4617 r4663  
    2929<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div> 
    3030<div class="boxlistcontent"> 
    31 <roundcube:object name="mailboxlist" id="mailboxlist" maxlength="25" /> 
     31<roundcube:object name="mailboxlist" id="mailboxlist" /> 
    3232</div> 
    3333<div class="boxfooter"> 
     
    4444 
    4545<script type="text/javascript"> 
    46   var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailleftcontainer', p2: 'mailrightcontainer', orientation: 'v', relative: true, start: 165}); 
     46  var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailleftcontainer', p2: 'mailrightcontainer', orientation: 'v', relative: true, start: 165, callback: rcube_render_mailboxlist }); 
    4747  rcmail.add_onload('mailviewsplitv.init()'); 
    4848</script> 
Note: See TracChangeset for help on using the changeset viewer.