197 lines
5.9 KiB
JavaScript
197 lines
5.9 KiB
JavaScript
/*+**********************************************************************************
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.1
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Original Code is: vtiger CRM Open Source
|
|
* The Initial Developer of the Original Code is vtiger.
|
|
* Portions created by vtiger are Copyright (C) vtiger.
|
|
* All Rights Reserved.
|
|
************************************************************************************/
|
|
|
|
//extend the file upload xhr class
|
|
qq.extend(qq.UploadHandlerXhr.prototype, {
|
|
_upload: function(id, params){
|
|
if(!MailManager.checkUploadCount()) {
|
|
return false;
|
|
}
|
|
var file = this._files[id],
|
|
name = this.getName(id),
|
|
size = this.getSize(id);
|
|
|
|
this._loaded[id] = 0;
|
|
|
|
var xhr = this._xhrs[id] = new XMLHttpRequest();
|
|
var self = this;
|
|
|
|
xhr.upload.onprogress = function(e){
|
|
if (e.lengthComputable){
|
|
self._loaded[id] = e.loaded;
|
|
self._options.onProgress(id, name, e.loaded, e.total);
|
|
}
|
|
};
|
|
|
|
xhr.onreadystatechange = function(){
|
|
if (xhr.readyState == 4){
|
|
self._onComplete(id, xhr);
|
|
}
|
|
};
|
|
|
|
params['emailid'] = params['currentid'] = jQuery('#emailid').val();
|
|
params['to'] = jQuery('#_mail_replyfrm_to_').val();
|
|
params['cc'] = jQuery('#_mail_replyfrm_cc_').val();
|
|
params['bcc'] = jQuery('#_mail_replyfrm_bcc_').val();
|
|
params['subject'] = jQuery('#_mail_replyfrm_subject_').val();
|
|
|
|
var body = CKEDITOR.instances['_mail_replyfrm_body_'];
|
|
if(body != undefined) {
|
|
params['body'] = body.getData();
|
|
}
|
|
|
|
// build query string
|
|
params = params || {};
|
|
params['qqfile'] = name;
|
|
var queryString = qq.obj2url(params, this._options.action);
|
|
xhr.open("POST", queryString, true);
|
|
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
|
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
|
|
xhr.setRequestHeader("Content-Type", "application/octet-stream");
|
|
xhr.send(file);
|
|
},
|
|
|
|
_onComplete: function(id, xhr){
|
|
// the request was aborted/cancelled
|
|
if (!this._files[id]) return;
|
|
|
|
var name = this.getName(id);
|
|
var size = this.getSize(id);
|
|
|
|
this._options.onProgress(id, name, size, size);
|
|
|
|
if (xhr.status == 200){
|
|
var response;
|
|
try {
|
|
response = eval("(" + xhr.responseText + ")");
|
|
this._postcompletActions(id, name, response);
|
|
} catch(err){
|
|
response = {};
|
|
}
|
|
this._options.onComplete(id, name, response);
|
|
|
|
} else {
|
|
this._options.onComplete(id, name, {});
|
|
}
|
|
|
|
this._files[id] = null;
|
|
this._xhrs[id] = null;
|
|
this._dequeue(id);
|
|
},
|
|
|
|
_postcompletActions : function(id, name, response) {
|
|
if(response.success == true) {
|
|
if(response.result.success == true) {
|
|
if(response.result.emailid != "") {
|
|
jQuery('#emailid').val(response.result.emailid);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// extending the file uploading class
|
|
qq.extend(qq.FileUploader.prototype, {
|
|
_onSubmit: function(id, fileName){
|
|
qq.FileUploaderBasic.prototype._onSubmit.apply(this, arguments);
|
|
this._addToList(id, fileName);
|
|
},
|
|
|
|
_onComplete: function(id, fileName, response){
|
|
qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments);
|
|
|
|
// mark completed
|
|
var item = this._getItemByFileId(id);
|
|
qq.remove(this._find(item, 'cancel'));
|
|
qq.remove(this._find(item, 'spinner'));
|
|
|
|
if (!response.result.error){
|
|
qq.addClass(item, this._classes.success);
|
|
|
|
var fileElementDelete = this._find(item, 'deleteupload');
|
|
fileElementDelete.style.display = 'inline';
|
|
jQuery(fileElementDelete).html("<img height='12' border='0' width='12' title="+MailManager.i18n('JSLBL_Delete')+" src='themes/images/no.gif'>")
|
|
this._attachDeleteHandler(response.result.emailid, response.result.docid, fileElementDelete);
|
|
MailManager.uploadCountUpdater();
|
|
} else {
|
|
qq.addClass(item, this._classes.fail);
|
|
if(response.result.emailid != "") jQuery("#emailid").val(response.result.emailid);
|
|
MailManager.show_error(response.result.error);
|
|
MailManager.hide_error();
|
|
}
|
|
},
|
|
|
|
_addToList: function(id, fileName){
|
|
if(!MailManager.checkUploadCount()) {
|
|
return false;
|
|
}
|
|
var item = qq.toElement(this._options.fileTemplate);
|
|
item.qqFileId = id;
|
|
var fileElement = this._find(item, 'file');
|
|
qq.setText(fileElement, this._formatFileName(fileName));
|
|
|
|
this._find(item, 'deleteupload').style.display = 'none';
|
|
this._listElement.appendChild(item);
|
|
},
|
|
|
|
_attachDeleteHandler: function(emailId, docId, element) {
|
|
jQuery(element).bind('click', function() {
|
|
MailManager.deleteAttachment(emailId, docId, element);
|
|
});
|
|
}
|
|
});
|
|
|
|
qq.extend(qq.UploadHandlerForm.prototype, {
|
|
_upload: function(id, params){
|
|
var input = this._inputs[id];
|
|
|
|
if (!input){
|
|
throw new Error('file with passed id was not added, or already uploaded or cancelled');
|
|
}
|
|
|
|
var fileName = this.getName(id);
|
|
|
|
var iframe = this._createIframe(id);
|
|
|
|
params['emailid'] = params['currentid'] = jQuery('#emailid').val();
|
|
params['to'] = jQuery('#_mail_replyfrm_to_').val();
|
|
params['cc'] = jQuery('#_mail_replyfrm_cc_').val();
|
|
params['bcc'] = jQuery('#_mail_replyfrm_bcc_').val();
|
|
params['subject'] = jQuery('#_mail_replyfrm_subject_').val();
|
|
|
|
var body = CKEDITOR.instances['_mail_replyfrm_body_'];
|
|
if(body != undefined) {
|
|
params['body'] = body.getData();
|
|
}
|
|
|
|
var form = this._createForm(iframe, params);
|
|
form.appendChild(input);
|
|
var self = this;
|
|
|
|
this._attachLoadEvent(iframe, function(){
|
|
var response = self._getIframeContentJSON(iframe);
|
|
|
|
if(response.result != "" && response.result.emailid != "") {
|
|
jQuery('#emailid').val(response.result.emailid);
|
|
}
|
|
|
|
self._options.onComplete(id, fileName, response);
|
|
self._dequeue(id);
|
|
|
|
delete self._inputs[id];
|
|
// timeout added to fix busy state in FF3.6
|
|
setTimeout(function(){
|
|
qq.remove(iframe);
|
|
}, 1);
|
|
});
|
|
form.submit();
|
|
qq.remove(form);
|
|
return id;
|
|
}
|
|
}); |