Thomas Bruederli
2013-10-21 b461a2d72ea1fa2f7488710e5c5329848adf43fd
program/js/app.js
@@ -463,6 +463,7 @@
    // flag object as complete
    this.loaded = true;
    this.env.lastrefresh = new Date();
    // show message
    if (this.pending_message)
@@ -1713,7 +1714,7 @@
    // set eventhandler to status icon
    if (row.icon = document.getElementById(status_icon)) {
      row.icon._row = row.obj;
      row.icon.onmousedown = function(e) { self.command('toggle_status', this); rcube_event.cancel(e); };
      row.icon.onclick = function(e) { self.command('toggle_status', this); return rcube_event.cancel(e); };
    }
    // save message icon position too
@@ -1725,12 +1726,12 @@
    // set eventhandler to flag icon, if icon found
    if (this.env.flagged_col != null && (row.flagicon = document.getElementById('flagicn'+row.uid))) {
      row.flagicon._row = row.obj;
      row.flagicon.onmousedown = function(e) { self.command('toggle_flag', this); rcube_event.cancel(e); };
      row.flagicon.onclick = function(e) { self.command('toggle_flag', this); return rcube_event.cancel(e); };
    }
    if (!row.depth && row.has_children && (expando = document.getElementById('rcmexpando'+row.uid))) {
      row.expando = expando;
      expando.onmousedown = function(e) { return self.expand_message_row(e, uid); };
      expando.onclick = function(e) { return self.expand_message_row(e, uid); };
      if (bw.touch) {
        expando.addEventListener('touchend', function(e) {
          if (e.changedTouches.length == 1) {
@@ -3559,6 +3560,7 @@
    }
    this.env.identity = id;
    this.triggerEvent('change_identity');
    return true;
  };
@@ -3805,7 +3807,7 @@
        // refresh the folder where sent message was saved or replied message comes from
        if (folders && rc.env.task == 'mail' && rc.env.action == '' && $.inArray(rc.env.mailbox, folders) >= 0) {
          // @TODO: try with 'checkmail' here when #1485186 is fixed. See also #1489249.
          rc.command('list', rc.env.mailbox);
          rc.command('list');
        }
      }
      setTimeout(function(){ window.close() }, 1000);
@@ -6297,7 +6299,7 @@
      if (result === false)
        return false;
      else
        query = result;
        url = this.url(action, result);
    }
    url += '&_remote=1';
@@ -6534,7 +6536,7 @@
  // post the given form to a hidden iframe
  this.async_upload_form = function(form, action, onload)
  {
    var ts = new Date().getTime(),
    var frame, ts = new Date().getTime(),
      frame_name = 'rcmupload'+ts;
    // upload progress support
@@ -6553,21 +6555,19 @@
    // have to do it this way for IE
    // otherwise the form will be posted to a new window
    if (document.all) {
      var html = '<iframe name="'+frame_name+'" src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>';
      document.body.insertAdjacentHTML('BeforeEnd', html);
      document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="'+frame_name+'"'
        + ' src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>');
      frame = $('iframe[name="'+frame_name+'"]');
    }
    else { // for standards-compilant browsers
      var frame = document.createElement('iframe');
      frame.name = frame_name;
      frame.style.border = 'none';
      frame.style.width = 0;
      frame.style.height = 0;
      frame.style.visibility = 'hidden';
      document.body.appendChild(frame);
    // for standards-compliant browsers
    else {
      frame = $('<iframe>').attr('name', frame_name)
        .css({border: 'none', width: 0, height: 0, visibility: 'hidden'})
        .appendTo(document.body);
    }
    // handle upload errors, parsing iframe content in onload
    $(frame_name).bind('load', {ts:ts}, onload);
    frame.bind('load', {ts:ts}, onload);
    $(form).attr({
        target: frame_name,
@@ -6744,6 +6744,9 @@
    if (this.task == 'mail' && this.gui_objects.mailboxlist)
      params = this.check_recent_params();
    params._last = Math.floor(this.env.lastrefresh.getTime() / 1000);
    this.env.lastrefresh = new Date();
    // plugins should bind to 'requestrefresh' event to add own params
    this.http_request('refresh', params, lock);
  };