晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/v7/modules/CustomView/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("Vtiger_CustomView_Js",{
},{
contianer : false,
advanceFilterInstance : false,
columnListSelect2Element : false,
columnSelectElement : false,
reIntialize : function () {
this.contianer = false;
this.columnListSelect2Element = false;
this.advanceFilterInstance = false;
this.columnSelectElement = false;
},
getContainer : function() {
if(this.container == false) {
this.container = jQuery('#filterContainer');
}
return this.container
},
getColumnListSelect2Element : function() {
if(this.columnListSelect2Element == false){
this.columnListSelect2Element = jQuery('#s2id_viewColumnsSelect');
}
return this.columnListSelect2Element;
},
/**
* Function to get the view columns selection element
* @return : jQuery object of view columns selection element
*/
getColumnSelectElement : function() {
if(this.columnSelectElement == false) {
this.columnSelectElement = jQuery('#viewColumnsSelect');
}
return this.columnSelectElement;
},
/**
* Function to regiser the event to make the columns list sortable
*/
makeColumnListSortable : function() {
var select2Element = this.getColumnListSelect2Element();
//TODO : peform the selection operation in context this might break if you have multi select element in advance filter
//The sorting is only available when Select2 is attached to a hidden input field.
var chozenChoiceElement = select2Element.find('ul.select2-choices');
chozenChoiceElement.sortable({
'containment': chozenChoiceElement,
start: function() { },
update: function() {}
});
},
/**
* Function which will arrange the chosen element choices in order
*/
arrangeSelectChoicesInOrder : function() {
var contentsContainer = this.getContainer();
var chosenElement = this.getColumnListSelect2Element();
var choicesContainer = chosenElement.find('ul.select2-choices');
var choicesList = choicesContainer.find('li.select2-search-choice');
var columnListSelectElement = this.getColumnSelectElement();
var selectedOptions = columnListSelectElement.find('option:selected');
var selectedOrder = JSON.parse(jQuery('input[name="columnslist"]', contentsContainer).val());
for(var index=selectedOrder.length ; index > 0 ; index--) {
var selectedValue = selectedOrder[index-1];
var value = selectedValue.replace("'", "'");
var option = selectedOptions.filter('[value="'+value+'"]');
choicesList.each(function(choiceListIndex,element){
var liElement = jQuery(element);
if(liElement.find('div').html() == option.html()){
choicesContainer.prepend(liElement);
return false;
}
});
}
},
/**
* Function which will get the selected columns with order preserved
* @return : array of selected values in order
*/
getSelectedColumns : function() {
var columnListSelectElement = this.getColumnSelectElement();
var select2Element = this.getColumnListSelect2Element();
var selectedValuesByOrder = new Array();
var selectedOptions = columnListSelectElement.find('option:selected');
var orderedSelect2Options = select2Element.find('li.select2-search-choice').find('div');
orderedSelect2Options.each(function(index,element){
var chosenOption = jQuery(element);
selectedOptions.each(function(optionIndex, domOption){
var option = jQuery(domOption);
if(option.html() == chosenOption.html()) {
selectedValuesByOrder.push(option.val());
return false;
}
});
});
return selectedValuesByOrder;
},
doOperation : function (url) {
var aDeferred = new jQuery.Deferred();
app.helper.showProgress();
app.request.get({'url':url}).then(function(error,data){
app.helper.hideProgress();
aDeferred.resolve(data);
});
return aDeferred.promise();
},
showCreateFilter : function(data){
var self = this;
self.reIntialize();
app.helper.loadPageContentOverlay(data).then(function(data){
data.find('.data').css('height','100%');
var Options= {
autoExpandScrollbar: true,
scrollInertia: 200,
autoHideScrollbar: true,
mouseWheel: {
enable: true,
preventDefault: true,
scrollAmount: 50
}
};
app.helper.showVerticalScroll(jQuery('.customview-content '), Options);
self.advanceFilterInstance = new Vtiger_AdvanceFilter_Js(data.find('.filterConditionsDiv'));
self.registerFilterCreateEvents();
});
},
saveFilter : function() {
var aDeferred = jQuery.Deferred();
var formElement = jQuery("#CustomView");
var formData = formElement.serializeFormData();
app.helper.showProgress();
app.request.post({'data':formData}).then(
function(error,data){
if(error === null){
app.helper.hideProgress();
window.onbeforeunload = null;
aDeferred.resolve(data);
}
else{
app.helper.hideProgress();
aDeferred.reject();
app.helper.showErrorNotification({'message': app.vtranslate('JS_VIEW_ALREADY_EXISTS')});
}
}
);
return aDeferred.promise();
},
saveAndViewFilter : function(){
this.saveFilter().then(function (response) {
if (typeof response != "undefined") {
app.helper.showSuccessNotification({'message':app.vtranslate('JS_LIST_SAVED')});
var appName = app.getAppName();
var url = response['listviewurl']+'&app='+appName;
window.location.href = url;
} else {
app.helper.showErrorNotification({message: app.vtranslate('JS_FAILED_TO_SAVE')});
}
});
},
isAllUsersSelected : function() {
var memberList = jQuery('#memberList').val();
return (memberList != null && (memberList.indexOf('All::Users') != -1)) ? true : false
},
registerOnlyAllUsersInSharedList : function(){
var self = this;
jQuery('#memberList').on('change',function(e){
var element = jQuery(e.currentTarget);
if(self.isAllUsersSelected()){
element.find('option').not('[value="All::Users"]').prop('disabled',true);
element.select2('val',['All::Users']);
element.select2('close');
}else{
element.find('option').removeProp('disabled');
}
});
},
/**
* Function which will register the select2 elements for columns selection
*/
registerSelect2ElementForColumnsSelection : function() {
var selectElement = this.getColumnSelectElement();
vtUtils.showSelect2ElementView(selectElement,{maximumSelectionSize: 15});
},
registerFilterCreateEvents : function() {
var self = this;
self.registerSelect2ElementForColumnsSelection();
this.arrangeSelectChoicesInOrder();
this.makeColumnListSortable();
this.registerToogleShareList();
this.registerOnlyAllUsersInSharedList();
var customViewForm = jQuery('#CustomView');
if(customViewForm.length > 0) {
customViewForm.vtValidate({
submitHandler : function(form){
var form = jQuery(form);
var selectElement = form.find('#viewColumnsSelect');
var mandatoryFieldsList = JSON.parse(jQuery('#mandatoryFieldsList').val());
var selectedOptions = selectElement.val();
var mandatoryFieldsMissing = true;
for(var i=0; i<selectedOptions.length; i++) {
if(jQuery.inArray(selectedOptions[i], mandatoryFieldsList) >= 0) {
mandatoryFieldsMissing = false;
break;
}
}
if(mandatoryFieldsMissing){
app.helper.showErrorNotification({message:"Select atleast one mandatory value."});
return false;
}
//handled advanced filters saved values.
var advfilterlist = self.advanceFilterInstance.getValues();
jQuery('#advfilterlist').val(JSON.stringify(advfilterlist));
var selectValueElements = self.getColumnSelectElement().select2('data');
var selectedValues = [];
for(i=0; i<selectValueElements.length; i++) {
selectedValues.push(selectValueElements[i].id);
}
var selectValues = JSON.stringify(selectedValues);
jQuery('input[name="columnslist"]', self.getContainer()).val(selectValues);
var allUsersStatusEle = jQuery('#allUsersStatusValue');
if(self.isAllUsersSelected() && (jQuery('[data-toogle-members]').is(":checked"))){
allUsersStatusEle.val(allUsersStatusEle.data('public'));
}else{
allUsersStatusEle.val(allUsersStatusEle.data('private'));
}
self.saveAndViewFilter();
return false;
}
});
}
},
registerToogleShareList : function() {
jQuery('[data-toogle-members]').on('change',function(e){
var element = jQuery(e.currentTarget);
if(element.is(':checked')){
jQuery('#memberList').addClass('fadeInx').data('rule-required',true);
}
else {
jQuery('#memberList').removeClass('fadeInx').data('rule-required',false);
}
});
},
registerEvents : function() {
var self = this;
jQuery(document).on('post.CreateFilter.click',function(e,params){
self.doOperation(params.url).then(function(data){
self.showCreateFilter(data);
var form = jQuery('#CustomView');
app.helper.registerLeavePageWithoutSubmit(form);
app.helper.registerModalDismissWithoutSubmit(form);
})
});
jQuery(document).on('post.DeleteFilter.click',function(e,params){
var target = jQuery(e.target);
app.helper.showConfirmationBox({'message': app.vtranslate('LBL_LIST_DELETE_CONFIRMATION')}).then(
function(){
app.helper.showProgress();
app.request.post({'url':params.url}).then(function(){
app.helper.hideProgress();
target.trigger('post.DeletedFilter');
// moduleFiltersId is Default All Filter Id
var moduleFiltersId = jQuery('.module-filters input[name=allCvId]').val();
jQuery(".listViewFilter ").find('.filterName').each(function(key, ele){
var filterId = jQuery(ele).data('filter-id');
if(filterId == moduleFiltersId){
jQuery(ele).trigger('click');
return false;
}
});
});
},
function(){
}
);
});
jQuery(document).on('post.ToggleDefault.click',function(e,params){
var target = jQuery(e.target);
var url = target.data('url');
var currentValue = target.data('isDefault');
var params = {};
params.url = url;
params.data = {};
if(currentValue) {
params.data.setdefault = '0';
}else{
params.data.setdefault = '1';
}
app.request.post(params).then(function(error,data){
target.trigger('post.ToggleDefault.saved',data);
})
});
}
});