Aleksander Machniak
2015-03-09 1e7c877a66c9e309b027e36feafbff9ebd419355
program/js/app.js
@@ -774,7 +774,7 @@
      case 'list':
        if (props && props != '') {
          this.reset_qsearch();
          this.reset_qsearch(true);
        }
        if (this.env.action == 'compose' && this.env.extwin) {
          window.close();
@@ -1224,7 +1224,7 @@
        var n, s = this.env.search_request || this.env.qsearch,
            ss = this.gui_objects.qsearchbox && this.gui_objects.qsearchbox.value != '';
        this.reset_qsearch();
        this.reset_qsearch(true);
        this.select_all_mode = false;
        if (s && this.env.action == 'compose') {
@@ -2378,6 +2378,9 @@
  // list messages of a specific mailbox using filter
  this.filter_mailbox = function(filter)
  {
    if (this.filter_disabled)
      return;
    var lock = this.set_busy(true, 'searching');
    this.clear_message_list();
@@ -2411,16 +2414,17 @@
    if (sort)
      url._sort = sort;
    // also send search request to get the right messages
    if (this.env.search_request)
      url._search = this.env.search_request;
    // set page=1 if changeing to another mailbox
    // folder change, reset page, search scope, etc.
    if (this.env.mailbox != mbox) {
      page = 1;
      this.env.current_page = page;
      this.env.search_scope = 'base';
      this.select_all_mode = false;
      this.reset_search_filter();
    }
    // also send search request to get the right messages
    else if (this.env.search_request)
      url._search = this.env.search_request;
    if (!update_only) {
      // unselect selected messages and clear the list and message data
@@ -4332,14 +4336,28 @@
    return url;
  };
  // reset search filter
  this.reset_search_filter = function()
  {
    this.filter_disabled = true;
    if (this.gui_objects.search_filter)
      $(this.gui_objects.search_filter).val('ALL').change();
    this.filter_disabled = false;
  };
  // reset quick-search form
  this.reset_qsearch = function()
  this.reset_qsearch = function(all)
  {
    if (this.gui_objects.qsearchbox)
      this.gui_objects.qsearchbox.value = '';
    if (this.env.qsearch)
      this.abort_request(this.env.qsearch);
    if (all) {
      this.env.search_scope = 'base';
      this.reset_search_filter();
    }
    this.env.qsearch = null;
    this.env.search_request = null;
@@ -7278,22 +7296,32 @@
  };
  // send a http request to the server
  this.http_request = function(action, query, lock)
  this.http_request = function(action, data, lock)
  {
    var url = this.url(action, query);
    if (typeof data !== 'object')
      data = rcube_parse_query(data);
    data._remote = 1;
    data._unlock = lock ? lock : 0;
    // trigger plugin hook
    var result = this.triggerEvent('request'+action, query);
    var result = this.triggerEvent('request' + action, data);
    if (result !== undefined) {
      // abort if one the handlers returned false
      if (result === false)
        return false;
      else
        url = this.url(action, result);
    // abort if one of the handlers returned false
    if (result === false) {
      if (data._unlock)
        this.set_busy(false, null, data._unlock);
      return false;
    }
    else if (result !== undefined) {
      data = result;
      if (data._action) {
        action = data._action;
        delete data._action;
      }
    }
    url += '&_remote=1';
    var url = this.url(action, data);
    // send request
    this.log('HTTP GET: ' + url);
@@ -7302,33 +7330,39 @@
    this.start_keepalive();
    return $.ajax({
      type: 'GET', url: url, data: { _unlock:(lock?lock:0) }, dataType: 'json',
      success: function(data){ ref.http_response(data); },
      type: 'GET', url: url, dataType: 'json',
      success: function(data) { ref.http_response(data); },
      error: function(o, status, err) { ref.http_error(o, status, err, lock, action); }
    });
  };
  // send a http POST request to the server
  this.http_post = function(action, postdata, lock)
  this.http_post = function(action, data, lock)
  {
    var url = this.url(action);
    if (typeof data !== 'object')
      data = rcube_parse_query(data);
    if (postdata && typeof postdata === 'object') {
      postdata._remote = 1;
      postdata._unlock = (lock ? lock : 0);
    }
    else
      postdata += (postdata ? '&' : '') + '_remote=1' + (lock ? '&_unlock='+lock : '');
    data._remote = 1;
    data._unlock = lock ? lock : 0;
    // trigger plugin hook
    var result = this.triggerEvent('request'+action, postdata);
    if (result !== undefined) {
      // abort if one of the handlers returned false
      if (result === false)
        return false;
      else
        postdata = result;
    var result = this.triggerEvent('request'+action, data);
    // abort if one of the handlers returned false
    if (result === false) {
      if (data._unlock)
        this.set_busy(false, null, data._unlock);
      return false;
    }
    else if (result !== undefined) {
      data = result;
      if (data._action) {
        action = data._action;
        delete data._action;
      }
    }
    var url = this.url(action);
    // send request
    this.log('HTTP POST: ' + url);
@@ -7337,7 +7371,7 @@
    this.start_keepalive();
    return $.ajax({
      type: 'POST', url: url, data: postdata, dataType: 'json',
      type: 'POST', url: url, data: data, dataType: 'json',
      success: function(data){ ref.http_response(data); },
      error: function(o, status, err) { ref.http_error(o, status, err, lock, action); }
    });