/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("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.
*************************************************************************************/
jQuery.Class("Contact",{
_init:function(){
if(jQuery('#sync_button')){
jQuery('#sync_button').on('click',function(){
jQuery('#sync_button b').text(app.vtranslate('LBL_SYNCRONIZING'));
jQuery('#sync_button').attr("disabled", "disabled")
jQuery('#synctime').remove();
var imagePath = app.vimage_path('Sync.gif')
jQuery('#sync_details').html('');
var url = jQuery('#sync_button').data('url');
if(jQuery('#firsttime').val() == 'yes'){
var win=window.open(url,'','height=600,width=600,channelmode=1');
//http://stackoverflow.com/questions/1777864/how-to-run-function-of-parent-window-when-child-window-closes
window.sync = function() {
jQuery('#sync_details').html('
');
AppConnector.request(url).then(
function(data) {
jQuery('#sync_button b').text(app.vtranslate('LBL_SYNC_BUTTON'));
jQuery('#sync_button').removeAttr("disabled");
jQuery('#sync_details').html(data);
if(jQuery('#norefresh').length == 0){
listInstance = Vtiger_List_Js.getInstance();
listInstance.getListViewRecords();
}
jQuery('#firsttime').val('no');
jQuery('#removeSyncBlock').show();
}
);
}
win.onunload = function(){
jQuery('#sync_button b').text(app.vtranslate('LBL_SYNC_BUTTON'));
jQuery('#sync_button').removeAttr("disabled");
jQuery('#sync_details').html(app.vtranslate('LBL_NOT_SYNCRONIZED'));
}
} else {
AppConnector.request(url).then(
function(data) {
var response;
try {
response = JSON.parse(data);
} catch (e) {
}
if(response && response.error.code == '401') {
jQuery('#firsttime').val('yes');
jQuery('#removeSyncBlock').hide();
jQuery('#sync_button').click();
} else {
jQuery('#sync_button b').text(app.vtranslate('LBL_SYNC_BUTTON'));
jQuery('#sync_button').removeAttr("disabled");
jQuery('#sync_details').html(data);
if(jQuery('#norefresh').length == 0){
listInstance = Vtiger_List_Js.getInstance();
listInstance.getListViewRecords()
}
}
});
}
});
jQuery('#remove_sync').on('click',function(){
var url = jQuery('#remove_sync').data('url');
AppConnector.request(url).then(
function(data) {
jQuery('#firsttime').val('yes');
jQuery('#removeSyncBlock').hide();
var params = {
title : app.vtranslate('JS_MESSAGE'),
text: app.vtranslate('SYNC_REMOVED_SUCCESSFULLY'),
animation: 'show',
type: 'info'
};
Vtiger_Helper_Js.showPnotify(params);
}
);
});
}
var data=jQuery('#mappingTable').html();
jQuery('#popid').popover({
'html':true,
'content': data,
'title':app.vtranslate('FIELD_MAPPING')
});
jQuery('#removePop').popover({
'html':true,
'content': app.vtranslate('REMOVE_SYNCHRONIZATION_MESSAGE'),
'title': app.vtranslate('REMOVE_SYNCHRONIZATION')
});
},
_showMessage : function(){
},
_exit:function(){
}
},{
packFieldmappingsForSubmit : function(container) {
var rows = container.find('div#googlesyncfieldmapping > table > tbody > tr');
var mapping = {};
jQuery.each(rows,function(index,row) {
var tr = jQuery(row);
var vtiger_field_name = tr.find('.vtiger_field_name').not('.select2-container').val();
var google_field_name = tr.find('.google_field_name').val();
var googleTypeElement = tr.find('.google-type').not('.select2-container');
var google_field_type = '';
var google_custom_label = '';
if(googleTypeElement.length) {
google_field_type = googleTypeElement.val();
var customLabelElement = tr.find('.google-custom-label');
if(google_field_type == 'custom' && customLabelElement.length) {
google_custom_label = customLabelElement.val();
}
}
var map = {};
map['vtiger_field_name'] = vtiger_field_name;
map['google_field_name'] = google_field_name;
map['google_field_type'] = google_field_type;
map['google_custom_label'] = google_custom_label;
mapping[index] = map;
});
return JSON.stringify(mapping);
},
validateFieldMappings : function(container) {
var aDeferred = jQuery.Deferred();
var customMapElements = jQuery('select.vtiger_field_name');
var mappedCustomFields = [];
jQuery.each(customMapElements,function(i,elem) {
mappedCustomFields.push(jQuery(elem).val());
});
var customFieldLabels = jQuery('input.google-custom-label',container).filter('input:text[value=""]').filter(function() {
return jQuery(this).css('visibility') == 'visible';
});
if(customFieldLabels.length) {
aDeferred.reject(customFieldLabels);
} else {
aDeferred.resolve();
}
return aDeferred.promise();
},
registerSaveSettingsEvent : function(container) {
var thisInstance = this;
container.find('button#save_syncsetting').on('click',function() {
thisInstance.validateFieldMappings(container).then(function() {
var progressIndicatorElement = jQuery.progressIndicator();
var form = container.find('form[name="contactsyncsettings"]');
var fieldMapping = thisInstance.packFieldmappingsForSubmit(container);
form.find('#user_field_mapping').val(fieldMapping);
var serializedFormData = form.serialize();
AppConnector.request(serializedFormData).then(function(data) {
progressIndicatorElement.progressIndicator({mode:'hide'});
app.hideModalWindow();
Vtiger_Helper_Js.showMessage({text: app.vtranslate('JS_SAVED_SUCCESSFULLY')});
});
}, function(inputs) {
inputs.focusin().focusout();
});
});
},
registerAddCustomFieldMappingEvent : function(container) {
var thisInstance = this;
jQuery('.addCustomFieldMapping',container).on('click',function(e) {
var currentSelectionElement = jQuery(this);
var googleFields = JSON.parse(container.find('input#google_fields').val());
var selectionType = currentSelectionElement.data('type');
var vtigerFields = currentSelectionElement.data('vtigerfields');
var vtigerFieldSelectElement = '';
var googleTypeSelectElement = '';
if(selectionType != 'custom') {
googleTypeSelectElement = '\n\
\n\
';
} else {
googleTypeSelectElement = '';
googleTypeSelectElement += '';
googleTypeSelectElement += '';
}
var tabRow = '