alecpl
2011-07-20 070bc8302e00f766076b4aaabfd2de4a0f2da66f
program/js/app.js
@@ -338,6 +338,10 @@
        this.enable_command('add', 'import', this.env.writable_source);
        this.enable_command('list', 'listgroup', 'advanced-search', true);
        // load contacts of selected source
        if (!this.env.action)
          this.command('list', this.env.source);
        break;
@@ -2900,9 +2904,9 @@
    this.auto_save_start();
  };
  this.init_address_input_events = function(obj)
  this.init_address_input_events = function(obj, action)
  {
    obj[bw.ie || bw.safari || bw.chrome ? 'keydown' : 'keypress'](function(e){ return ref.ksearch_keydown(e, this); })
    obj[bw.ie || bw.safari || bw.chrome ? 'keydown' : 'keypress'](function(e) { return ref.ksearch_keydown(e, this, action); })
      .attr('autocomplete', 'off');
  };
@@ -3437,14 +3441,14 @@
  /*********************************************************/
  // handler for keyboard events on address-fields
  this.ksearch_keydown = function(e, obj)
  this.ksearch_keydown = function(e, obj, action)
  {
    if (this.ksearch_timer)
      clearTimeout(this.ksearch_timer);
    var highlight;
    var key = rcube_event.get_keycode(e);
    var mod = rcube_event.get_modifier(e);
    var highlight,
      key = rcube_event.get_keycode(e),
      mod = rcube_event.get_modifier(e);
    switch (key) {
      case 38:  // key up
@@ -3468,7 +3472,7 @@
          break;
     case 13:  // enter
        if (this.ksearch_selected===null || !this.ksearch_input || !this.ksearch_value)
        if (this.ksearch_selected === null || !this.ksearch_input || !this.ksearch_value)
          break;
        // insert selected address and hide ksearch pane
@@ -3488,7 +3492,7 @@
    }
    // start timer
    this.ksearch_timer = window.setTimeout(function(){ ref.ksearch_get_results(); }, 200);
    this.ksearch_timer = window.setTimeout(function(){ ref.ksearch_get_results(action); }, 200);
    this.ksearch_input = obj;
    return true;
@@ -3556,7 +3560,7 @@
  };
  // address search processor
  this.ksearch_get_results = function()
  this.ksearch_get_results = function(action)
  {
    var inp_value = this.ksearch_input ? this.ksearch_input.value : null;
@@ -3602,7 +3606,7 @@
      return;
    var lock = this.display_message(this.get_label('searching'), 'loading');
    this.http_post('mail/autocomplete', '_search='+urlencode(q), lock);
    this.http_post(action ? action : 'mail/autocomplete', '_search='+urlencode(q), lock);
  };
  this.ksearch_query_results = function(results, search)
@@ -4456,6 +4460,10 @@
      row.obj.onmouseout = function() { p.unfocus_subscription(row.id); };
    };
    this.subscription_list.init();
    $('#mailboxroot')
      .mouseover(function(){ p.focus_subscription(this.id); })
      .mouseout(function(){ p.unfocus_subscription(this.id); })
      .mouseup(function(){ if (p.drag_active) p.subscription_move_folder(); });
  };
  this.focus_subscription = function(id)
@@ -4474,6 +4482,10 @@
          this.set_env('dstfolder', folder);
          $(row).addClass('droptarget');
        }
      }
      else if (id == 'mailboxroot') {
        this.set_env('dstfolder', '');
        $(row).addClass('droptarget');
      }
      else if (this.env.mailbox.match(new RegExp(delim))) {
        this.set_env('dstfolder', this.env.delimiter);
@@ -4519,11 +4531,13 @@
        (this.env.dstfolder != this.env.mailbox.replace(reg, ''))
    ) {
      reg = new RegExp('[^'+delim+']*['+delim+']', 'g');
      var lock = this.set_busy(true, 'foldermoving'),
        basename = this.env.mailbox.replace(reg, ''),
      var basename = this.env.mailbox.replace(reg, ''),
        newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename;
      this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), lock);
      if (newname != this.env.mailbox) {
        this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), this.set_busy(true, 'foldermoving'));
        this.subscription_list.draglayer.hide();
      }
    }
    this.drag_active = false;
    this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder));
@@ -4553,9 +4567,9 @@
    if (!this.gui_objects.subscriptionlist)
      return false;
    var row, n, i, tmp, folders, len, list = [], slist = [],
    var row, n, i, tmp, folders, rowid, list = [], slist = [],
      tbody = this.gui_objects.subscriptionlist.tBodies[0],
      refrow = $('tr', tbody).get(0),
      refrow = $('tr', tbody).get(1),
      id = 'rcmrow'+((new Date).getTime());
    if (!refrow) {
@@ -4582,7 +4596,10 @@
    this.env.subscriptionrows[id] = [name, display_name, 0];
    // sort folders, to find a place where to insert the row
    folders = this.env.subscriptionrows;
    folders = [];
    $.each(this.env.subscriptionrows, function(k,v){ folders.push(v) });
    folders.sort(function(a,b){ return a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0) });
    for (n in folders) {
      // protected folder
      if (folders[n][2]) {
@@ -4598,19 +4615,22 @@
        tmp = null;
      }
    }
    list.sort();
    // make sure protected folders (and their subs) are on top
    list = slist.concat(list);
    // check if subfolder of a protected folder
    for (n=0; n<slist.length; n++) {
      if (name.indexOf(slist[n]+this.env.delimiter) == 0)
        rowid = this.get_folder_row_id(slist[n]);
    }
    // find folder position after sorting
    for (n=0, len=list.length; n<len; n++) {
      if (list[n] == name)
        break;
    for (n=0; !rowid && n<list.length; n++) {
      if (n && list[n] == name)
        rowid = this.get_folder_row_id(list[n-1]);
    }
    // add row to the table
    if (n && n < len)
      $('#'+this.get_folder_row_id(list[n-1])).after(row);
    if (rowid)
      $('#'+rowid).after(row);
    else
      row.appendTo(tbody);
@@ -5843,11 +5863,10 @@
      if (elm.type == 'hidden')
        continue;
      // remember which elem was disabled before lock
      if (lock && elm.disabled)
        this.disabled_form_elements.push(elm);
      else if (lock || $.inArray(elm, this.disabled_form_elements)<0)
      else if (lock || (this.disabled_form_elements && $.inArray(elm, this.disabled_form_elements)<0))
        elm.disabled = lock;
    }
  };