晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/www/crm/layouts/v7/modules/Vtiger/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.
*************************************************************************************/
Vtiger_List_Js("Vtiger_FindDuplicates_Js",{
massDeleteRecords : function(url) {
var listInstance = app.controller();
var fields = jQuery('#duplicateSearchFields').val();
var ignoreEmpty = jQuery('#ignoreEmpty').val();
url += '&mode=FindDuplicates&fields=' + fields + '&ignoreEmpty=' + ignoreEmpty;
listInstance.performMassDeleteRecords(url);
}
},{
/**
* Function to update selected checkboxes after pagination
*/
updateSelectedCheckboxes : function() {
var thisInstance = this;
var selectedIds = thisInstance.readMergeSelectedIds();
if(typeof selectedIds != 'undefined') {
jQuery('[name=mergeRecord]').each( function(index,element) {
var id = "id" + jQuery(element).data('id');
if(selectedIds[id]){
jQuery(this).attr('checked', true);
}
});
}
},
loadListViewRecords : function(params) {
var self = this;
var aDeferred = jQuery.Deferred();
var container = this.getListViewContainer();
if(typeof params == "undefined") {
params = {};
}
if(typeof params.page == "undefined"){
params.page = jQuery('#pageNumber').val();
}
var fields = jQuery('#duplicateSearchFields').val();
var moduleName = app.module();
var ignoreEmpty = jQuery('#ignoreEmpty').val();
var url = 'index.php?module='+moduleName+'&view=FindDuplicates&fields='+fields+'&ignoreEmpty='+ignoreEmpty+'&page='+params.page;
app.helper.showProgress();
app.request.pjax({'url':url}).then(function(error,data) {
app.helper.hideProgress();
var selectDeselectContainer = container.find('.select-deselect-container').html();
jQuery('#listViewContent').html(data);
container.find('.select-deselect-container').html(selectDeselectContainer);
self.markSelectedIdsCheckboxes();
self.updateSelectedCheckboxes();
aDeferred.resolve();
});
return aDeferred.promise();
},
loadFilter : function(cvid) {
window.location.href = 'index.php?module='+this.getModuleName()+'&view=List&viewname='+cvid;
return;
},
/**
* Function registers event for merge button
*/
registerMergeRecordEvent : function(cb) {
var thisInstance = this;
var container = this.getListViewContainer();
container.on('click','input[name="merge"]', function(e) {
var element = jQuery(e.currentTarget);
var groupName = element.data('group');
var mergeRecordsCheckBoxes = jQuery('input[name="mergeRecord"]:checked');
var mergeSelectedIds = thisInstance.readMergeSelectedIds();
var mergeSelectedIdsLength = Object.keys(mergeSelectedIds).length;
if(mergeRecordsCheckBoxes.length < 2 && mergeSelectedIdsLength < 2) {
app.helper.showErrorNotification({message : app.vtranslate('JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING')});
return false;
} else {
var count = 0;
var records = [];
var stop = false;
mergeRecordsCheckBoxes.each(function(key, obj) {
var ele = jQuery(obj);
if(ele.data('group') != groupName) {
app.helper.showErrorNotification({message: app.vtranslate('JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP')});
stop = true;
return false;
}
});
if(!stop){
if(!thisInstance.checkArrayValue(mergeSelectedIds)) {
app.helper.showErrorNotification({message: app.vtranslate('JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP')});
stop = true;
return false;
} else {
for (var x in mergeSelectedIds) {
var id = x.replace('id','');
records.push(id);
count++;
}
}
}
if(stop) return false;
if(count > 3) {
app.helper.showErrorNotification({message: app.vtranslate('JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS')});
return false;
}
app.event.trigger('Request.MergeRecords.show',{'records':records});
}
});
},
/**
* Function to check if all the values in array are same
* @param <array> array
* @retrun <boolean> true or false
*/
checkArrayValue : function(array) {
var first;
for(first in array) {
first = array[first];
break;
}
for(var x in array) {
if(array[x] != first)
return false;
}
return true;
},
/**
* Function to read the selected merge ids
*/
readMergeSelectedIds : function(decode){
var cvId = this.getCurrentCvId();
var selectedIdsElement = jQuery('#mergeSelectedIds');
var selectedIdsDataAttr = cvId+'Selectedids';
var selectedIdsElementDataAttributes = selectedIdsElement.data();
if (!(selectedIdsDataAttr in selectedIdsElementDataAttributes) ) {
var selectedIds = new Array();
this.writeMergeSelectedIds(selectedIds);
} else {
selectedIds = selectedIdsElementDataAttributes[selectedIdsDataAttr];
}
if(decode == true){
if(typeof selectedIds == 'object'){
return JSON.stringify(selectedIds);
}
}
return selectedIds;
},
writeMergeSelectedIds : function(selectedIds){
var cvId = this.getCurrentCvId();
jQuery('#mergeSelectedIds').data(cvId+'Selectedids',selectedIds);
},
removeMergeSelectedIds : function() {
var cvId = this.getCurrentCvId();
jQuery('#mergeSelectedIds').removeData(cvId+'Selectedids');
},
/**
* Function to register click event for merge check check box.
*/
registerMergeCheckBoxClickEvent : function(){
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.on('click','[name=mergeRecord]',function(e){
var selectedIds = thisInstance.readMergeSelectedIds();
if(typeof selectedIds == 'undefined') {
var selectedIds = [];
}
var elem = jQuery(e.currentTarget);
if(elem.is(':checked')){
var id = elem.data('id');
if(typeof selectedIds["id"+id] == 'undefined') {
var searchFields = JSON.parse(jQuery('#duplicateSearchFields').val());
var value = [];
for (var x in searchFields) {
var dataValue = elem.closest('.listViewEntries').find('[name='+searchFields[x]+']').data('value');
var dataValue = jQuery.trim(dataValue);
if(isNaN(dataValue)) {
value.push(dataValue.toLowerCase());
} else {
value.push(dataValue);
}
}
selectedIds["id"+id] = JSON.stringify(value); // added id to avoid extra undefined values
}
} else {
var id = elem.data('id')
delete selectedIds["id"+id];
}
thisInstance.writeMergeSelectedIds(selectedIds);
});
},
registerPostMergeListerEvent : function () {
var self = this;
app.event.on('post.MergeRecords',function(e,data){
self.removeMergeSelectedIds();
self.loadListViewRecords();
});
},
/**
* Function registers various events for duplicate search
*/
registerEvents : function() {
this.registerMergeRecordEvent();
this.registerListViewMainCheckBoxClickEvent();
var recordSelectTrackerObj = this.getRecordSelectTrackerInstance();
recordSelectTrackerObj.registerEvents();
this.registerCheckBoxClickEvent();
this.registerSelectAllClickEvent();
this.registerDeSelectAllClickEvent();
this.registerPostMergeListerEvent();
this.registerMergeCheckBoxClickEvent();
//To Register Pagination Events
this.initializePaginationEvents();
},
/**
* Function returns current view name for the module
*/
getCurrentCvId : function(){
return jQuery('#viewName').val();
},
/**
* Function gets the record count
*/
getRecordsCount : function(){
var aDeferred = jQuery.Deferred();
var module = app.getModuleName();
var parent = app.getParentModuleName();
var fields = jQuery('#duplicateSearchFields').val();
var ignoreEmpty = jQuery('#ignoreEmpty').val();
var postData = {
"module": module, "parent": parent,
"view": "FindDuplicatesAjax", "mode": "getRecordsCount",
"fields": fields, "ignoreEmpty":ignoreEmpty
}
app.request.get({'data':postData}).then(
function(error,data) {
aDeferred.resolve(data);
}
);
return aDeferred.promise();
}
});