晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/layouts/vlayout/modules/Google/resources/ |
Upload File : |
/*+***********************************************************************************
* 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('<img src='+imagePath+' style="margin-left:40px"/>');
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('<img src='+imagePath+' style="margin-left:40px"/>');
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 = '<select class="vtiger_field_name" style="width:200px" data-category="'+selectionType+'">';
if(!Object.keys(vtigerFields).length) {
alert(app.vtranslate('JS_SUITABLE_VTIGER_FIELD_NOT_AVAILABLE_FOR_MAPPING'));
return;
}
var customMapElements = jQuery('select.vtiger_field_name[data-category="'+selectionType+'"]');
var mappedCustomFields = [];
jQuery.each(customMapElements,function(i,elem) {
mappedCustomFields.push(jQuery(elem).val());
});
var numberOfOptions = 0;
jQuery.each(vtigerFields,function(fieldname,fieldLabel) {
if(jQuery.inArray(fieldname,mappedCustomFields) === -1) {
numberOfOptions++;
var option = '<option value="'+fieldname+'">'+fieldLabel+'</option>';
vtigerFieldSelectElement += option;
}
});
if(numberOfOptions == 0) {
alert(app.vtranslate('JS_SUITABLE_VTIGER_FIELD_NOT_AVAILABLE_FOR_MAPPING'));
return;
}
vtigerFieldSelectElement += '</select>';
var googleTypeSelectElement = '';
if(selectionType != 'custom') {
googleTypeSelectElement = '<input type="hidden" class="google_field_name" value="'+ googleFields[selectionType]['name'] +'" />\n\
<select class="google-type" style="width:200px;" data-category="'+selectionType+'">';
var allCategorizedSelects = jQuery('select.google-type[data-category="'+selectionType+'"]');
var selectedValues = [];
jQuery.each(allCategorizedSelects, function(i, selectElement){
if(jQuery(selectElement).val() !== 'custom') {
selectedValues.push(jQuery(selectElement).val());
}
});
jQuery.each(googleFields[selectionType]['types'],function(index,fieldtype) {
if(jQuery.inArray(fieldtype, selectedValues) === -1) {
var option = '<option value="'+fieldtype+'">'+app.vtranslate(selectionType)+' ('+app.vtranslate(fieldtype)+')'+'</option>';
googleTypeSelectElement += option;
}
});
googleTypeSelectElement += '</select>\n\
<input type="text" class="google-custom-label" style="visibility:hidden;width:190px;" data-validation-engine="validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" />';
} else {
googleTypeSelectElement = '<input type="hidden" class="google_field_name" value="'+ googleFields[selectionType]['name'] +'" />';
googleTypeSelectElement += '<input type="hidden" class="google-type" value="'+selectionType+'" />';
googleTypeSelectElement += '<input type="text" class="google-custom-label" style="width:190px;" data-validation-engine="validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" />';
}
var tabRow = '<tr>\n\
<td>' + vtigerFieldSelectElement + '</td>\n\
<td>' + googleTypeSelectElement + '<a class="deleteCustomMapping pull-right"><i title="Delete" class="icon-trash"></i></a></td>\n\
</tr>';
var tbodyElement = container.find('div#googlesyncfieldmapping > table > tbody');
tbodyElement.append(tabRow);
var lastRow = container.find('div#googlesyncfieldmapping > table > tbody > tr').filter(':last');
app.showSelect2ElementView(lastRow.find('select'));
thisInstance.registerDeleteCustomFieldMappingEvent(lastRow);
thisInstance.registerVtigerFieldSelectOnChangeEvent(container,lastRow.find('select.vtiger_field_name'));
thisInstance.registerGoogleTypeChangeEvent(container,lastRow.find('select.google-type'));
lastRow.find('select.vtiger_field_name').trigger('change');
lastRow.find('select.google-type').trigger('change');
app.showScrollBar(jQuery('div#googlesyncfieldmapping'),{'height': '350px','scroll':1000000,'railVisible': true});
});
},
registerDeleteCustomFieldMappingEvent : function(container) {
jQuery('.deleteCustomMapping',container).on('click',function() {
var currentRow = jQuery(this).closest('tr');
var currentCategory = currentRow.find('select.vtiger_field_name').data('category');
currentRow.remove();
jQuery('select.vtiger_field_name[data-category="'+currentCategory+'"]').trigger('change');
jQuery('select.google-type[data-category="'+currentCategory+'"]').trigger('change');
});
},
updateSelectElement : function(allValuesMap, selectedValues, element) {
var prevSelectedValues = element.val();
element.html('');
for(var value in allValuesMap) {
element.append(jQuery('<option></option>').attr('value', value).text(app.vtranslate(allValuesMap[value])));
}
for(var index in selectedValues) {
if (jQuery.inArray(selectedValues[index], [prevSelectedValues]) === -1) {
var strInputString = selectedValues[index].replace(/'/g, "\\'");
element.find("option[value='"+strInputString+"']").remove();
}
}
if(prevSelectedValues) {
element.select2("val", prevSelectedValues);
}
},
removeOptionFromSelectList : function(selectElement,optionValue,category) {
var sourceSelectElement = jQuery(selectElement);
var categorisedSelectElements = jQuery('select.vtiger_field_name[data-category="'+category+'"]');
jQuery.each(categorisedSelectElements,function(index,categorisedSelectElement) {
var currentSelectElement = jQuery(categorisedSelectElement);
if(!currentSelectElement.is(sourceSelectElement)) {
var optionElement = currentSelectElement.find('option[value="'+optionValue+'"]');
if(optionElement.length) {
optionElement.remove();
currentSelectElement.select2();
}
}
});
},
registerVtigerFieldSelectOnChangeEvent : function(container,selectElement) {
var thisInstance = this;
if(typeof selectElement === 'undefined') {
selectElement = jQuery('select.vtiger_field_name',container);
}
selectElement.on('change', function(e){
var element = jQuery(e.currentTarget);
var category = element.data('category');
var allCategorizedSelects = jQuery('select.vtiger_field_name[data-category="'+category+'"]');
var selectedValues = [];
jQuery.each(allCategorizedSelects, function(i, selectElement){
selectedValues.push($(selectElement).val());
});
jQuery.each(allCategorizedSelects, function(i, selectElement){
if(e.currentTarget !== selectElement || allCategorizedSelects.length == 1) {
var allCategoryFieldLabelValues = jQuery('li.addCustomFieldMapping[data-type="'+category+'"]').data('vtigerfields');
thisInstance.updateSelectElement(allCategoryFieldLabelValues, selectedValues, jQuery(selectElement));
}
});
});
},
registerGoogleTypeChangeEvent : function(container,selectElement) {
var thisInstance = this;
if(typeof selectElement === 'undefined') {
selectElement = jQuery('select.google-type',container);
}
selectElement.on('change',function(e) {
var element = jQuery(e.currentTarget);
var category = element.data('category');
var currentTarget = element;
var val = currentTarget.val();
if(val == 'custom') {
currentTarget.closest('td').find('input.google-custom-label').css('visibility','visible');
} else {
currentTarget.closest('td').find('input.google-custom-label').css('visibility','hidden');
}
var allCategorizedSelects = jQuery('select.google-type[data-category="'+category+'"]');
var selectedValues = [];
jQuery.each(allCategorizedSelects, function(i, selectElement){
if(jQuery(selectElement).val() !== 'custom') {
selectedValues.push(jQuery(selectElement).val());
}
});
var googleFields = JSON.parse(container.find('input#google_fields').val());
var allValues = {};
jQuery.each(googleFields[category]['types'],function(index,value) {
allValues[value] = app.vtranslate(category)+' ('+app.vtranslate(value)+')';
});
jQuery.each(allCategorizedSelects, function(i, selectElement){
var allCategoryFieldLabelValues = allValues;
thisInstance.updateSelectElement(allCategoryFieldLabelValues, selectedValues, jQuery(selectElement));
});
});
},
registerPostSettingRenderEvents : function(container) {
jQuery('form[name="contactsyncsettings"]',container).validationEngine(app.validationEngineOptions);
this.registerAddCustomFieldMappingEvent(container);
this.registerDeleteCustomFieldMappingEvent(container);
this.registerSaveSettingsEvent(container);
this.registerVtigerFieldSelectOnChangeEvent(container);
this.registerGoogleTypeChangeEvent(container);
jQuery('select.vtiger_field_name',container).trigger('change');
jQuery('select.google-type',container).trigger('change');
},
registerSyncSettingClickEvent : function() {
var thisInstance = this;
if(jQuery('a#syncSetting').length) {
jQuery('a#syncSetting').on('click',function() {
var progressIndicatorElement = jQuery.progressIndicator();
var params = {
module : 'Google',
view : 'Setting',
sourcemodule : app.getModuleName()
}
AppConnector.request(params).then(function(data) {
app.showModalWindow(data, function(container) {
app.showScrollBar(jQuery('div#googlesyncfieldmapping'),{'height': '350px'});
thisInstance.registerPostSettingRenderEvents(container);
progressIndicatorElement.progressIndicator({mode:'hide'});
});
});
});
}
},
registerEvents : function() {
this.registerSyncSettingClickEvent();
}
});
jQuery('document').ready(function(){
jQuery('#mappingTable').hide();
Contact._init();
var instance = new Contact;
instance.registerEvents();
});