0
0
mirror of https://github.com/salesagility/SuiteCRM.git synced 2024-11-22 07:52:36 +00:00
salesagility_SuiteCRM/modules/Emails/include/DetailView/ImportView.js
2018-09-19 13:44:21 +01:00

203 lines
6.6 KiB
JavaScript

/**
*
* SugarCRM Community Edition is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
*
* SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd.
* Copyright (C) 2011 - 2018 SalesAgility Ltd.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* SugarCRM" logo and "Supercharged by SuiteCRM" logo. If the display of the logos is not
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
(function ($) {
"use strict";
/**
*
* @param options
* @returns {jQuery|HTMLElement}
* @constructor
*/
$.fn.ImportView = function (options) {
var self = $(this);
var opts = $.extend({}, $.fn.ImportView.defaults, options);
/**
*
* @type {jQuery|HTMLElement}
*/
self.messageBox = undefined;
/**
*
* @type {{}}
*/
self.email = {};
/**
* @type {undefined|String}
*/
self.email.inboundEmailRecord = undefined;
/**
* @type {undefined|String}
*/
self.email.uid = undefined;
/**
* @type {undefined|String}
*/
self.email.msgno = undefined;
/**
* Where selects ok in messageBox
* @param {MouseEvent} e
*/
self.messageBoxOkHandler = function(e, caller) {
self.messageBox.hideFooter();
self.messageBox.setTitle(SUGAR.language.translate('', 'LBL_EMAIL_IMPORTING_EMAIL'));
var view = self.messageBox.controls.modal.content.find('[name="EditNonImported"]');
var action = 'index.php?module=Emails&action=ImportAndShowDetailView&folder=INBOXTestInbox&folder=inbound'+
'&inbound_email_record='+self.email.inboundEmailRecord +
'&uid='+ self.email.uid +
'&msgno=' + self.email.msgno;
$('<div class="in-progress"><img src="themes/'+SUGAR.themes.theme_name+'/images/loading.gif"></div>')
.prependTo(view.parent());
view.hide();
view.attr('action', action);
$.each(view.find('input[name]'), function (i, v) {
var name = 'SET_AFTER_IMPORT_'+$(v).attr('name');
$(v).attr('name', name);
});
$.each(view.find('select[name]'), function (i, v) {
var name = 'SET_AFTER_IMPORT_'+$(v).attr('name');
$(v).attr('name', name);
});
$.each(view.find('textarea[name]'), function (i, v) {
var name = 'SET_AFTER_IMPORT_'+$(v).attr('name');
$(v).attr('name', name);
});
view.submit();
};
/**
* Where selects ok in messageBox
* @param {MouseEvent} e
*/
self.messageBoxCancelHandler = function(e, caller) {
self.messageBox.remove();
};
self.showMessageBox = function(mouseEvent) {
var caller = $(mouseEvent.target);
self.email.inboundEmailRecord = caller.attr('data-inbound-email-record');
self.email.uid = caller.attr('data-email-uid');
self.email.msgno = caller.attr('data-email-msgno');
self.messageBox = messageBox({'size': 'lg'});
if (typeof opts.messageBoxOkHandler !== "undefined") {
self.messageBox.on('ok', function(e) {
opts.messageBoxOkHandler(e, [self]);
});
} else {
self.messageBox.on('ok', self.messageBoxOkHandler);
}
if (typeof opts.messageBoxCancelHandler !== "undefined") {
self.messageBox.on('cancel', function(e) {
opts.messageBoxCancelHandler(e, [self]);
});
} else {
self.messageBox.on('cancel', self.messageBoxCancelHandler);
}
self.messageBox.setTitle(SUGAR.language.translate('', 'LBL_EMAIL_IMPORT_EMAIL'));
self.messageBox.hideHeader();
self.messageBox.hideFooter();
self.messageBox.setBody('<div class="email-in-progress"><img src="themes/' + SUGAR.themes.theme_name + '/images/loading.gif"></div>');
self.messageBox.show();
// Get view
$.ajax({type: "GET", cache: false, url: 'index.php?module=Emails&action=ImportView'}).done(function (data) {
self.messageBox.showHeader();
self.messageBox.showFooter();
if (data.length === 0) {
console.error("Unable to display ImportView");
self.messageBox.setBody(SUGAR.language.translate('', 'ERR_AJAX_LOAD'));
return;
}
// Display view
self.messageBox.setBody(data);
}).fail(function (data) {
self.messageBox.showHeader();
self.messageBox.showFooter();
self.messageBox.controls.modal.content.html(SUGAR.language.translate('', 'LBL_EMAIL_ERROR_GENERAL_TITLE'));
});
};
/**
* Constructor
*/
self.construct = function () {
if(opts.callerSelector) {
$(opts.callerSelector).on('click', self.showMessageBox);
}
$(self).trigger("constructImportView", [self]);
};
/**
* @destructor
*/
self.destruct = function () {
$(self).trigger("deconstructImportView", [self]);
return true;
};
self.construct();
return $(self);
};
$.fn.ImportView.defaults = {
'callerSelector': '[data-action="emails-import-single"]',
'parentContainer': '#content',
'mode': 'single'
};
}(jQuery));