Thomas Bruederli
2014-03-13 8d3b27b9e8aff077b15ff33c0e9abaec3cfd9cb2
Fix message import dialog (#1489685):
- Display alert if no file is chosen
- Unlock the UI if form is not submitted
- Avoid duplicate error messages
- Fix javascript error due to missing attachments list widget
3 files modified
27 ■■■■■ changed files
program/js/app.js 22 ●●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 3 ●●●● patch | view | raw | blame | history
program/steps/mail/import.inc 2 ●●●●● patch | view | raw | blame | history
program/js/app.js
@@ -1177,8 +1177,12 @@
      case 'import-messages':
        var form = props || this.gui_objects.importform;
        $('input[name="_unlock"]', form).val(this.set_busy(true, 'importwait'));
        this.upload_file(form, 'import');
        var importlock = this.set_busy(true, 'importwait');
        $('input[name="_unlock"]', form).val(importlock);
        if (!this.upload_file(form, 'import')) {
          this.set_busy(false, null, importlock);
          alert(this.get_label('selectimportfile'));
        }
        break;
      case 'import':
@@ -4015,11 +4019,13 @@
      if (this.env.upload_progress_time) {
        this.upload_progress_start('upload', ts);
      }
      // set reference to the form object
      this.gui_objects.attachmentform = form;
      return true;
    }
    // set reference to the form object
    this.gui_objects.attachmentform = form;
    return true;
    return false;
  };
  // add file name to attachment list
@@ -4061,8 +4067,10 @@
  this.remove_from_attachment_list = function(name)
  {
    delete this.env.attachments[name];
    $('#'+name).remove();
    if (this.env.attachments) {
      delete this.env.attachments[name];
      $('#'+name).remove();
    }
  };
  this.remove_attachment = function(name)
program/steps/mail/func.inc
@@ -124,7 +124,7 @@
    if (!$OUTPUT->ajax_call) {
        $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
            'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
            'copy', 'move', 'quota', 'replyall', 'replylist', 'importwait');
            'copy', 'move', 'quota', 'replyall', 'replylist');
    }
    $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true);
@@ -2070,6 +2070,7 @@
        $content);
    $RCMAIL->output->add_gui_object('importform', $attrib['id'].'Frm');
    $RCMAIL->output->add_label('selectimportfile','importwait');
    return html::div($attrib, $out);
}
program/steps/mail/import.inc
@@ -34,7 +34,6 @@
            list($mtype_primary,) = explode('/', rcube_mime::file_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i]));
            if (!in_array($mtype_primary, array('text','message'))) {
                $OUTPUT->show_message('importmessageerror', 'error');
                continue;
            }
@@ -46,7 +45,6 @@
            while ($line !== false && trim($line) == '');
            if (!preg_match('/^From\s+-/', $line) && !preg_match('/^[a-z-_]+:\s+.+/i', $line)) {
                $OUTPUT->show_message('importmessageerror', 'error');
                continue;
            }