晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/vlayout/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.
*************************************************************************************/
jQuery.Class("Vtiger_List_Js",{
listInstance : false,
getRelatedModulesContainer : false,
massEditPreSave : 'Vtiger.MassEdit.PreSave',
getInstance: function(){
if(Vtiger_List_Js.listInstance == false){
var module = app.getModuleName();
var parentModule = app.getParentModuleName();
if(parentModule == 'Settings'){
var moduleClassName = parentModule+"_"+module+"_List_Js";
if(typeof window[moduleClassName] == 'undefined'){
moduleClassName = module+"_List_Js";
}
var fallbackClassName = parentModule+"_Vtiger_List_Js";
if(typeof window[fallbackClassName] == 'undefined') {
fallbackClassName = "Vtiger_List_Js";
}
} else {
moduleClassName = module+"_List_Js";
fallbackClassName = "Vtiger_List_Js";
}
if(typeof window[moduleClassName] != 'undefined'){
var instance = new window[moduleClassName]();
}else{
var instance = new window[fallbackClassName]();
}
Vtiger_List_Js.listInstance = instance;
return instance;
}
return Vtiger_List_Js.listInstance;
},
/*
* function to trigger send Email
* @params: send email url , module name.
*/
triggerSendEmail : function(massActionUrl, module, params){
var listInstance = Vtiger_List_Js.getInstance();
var validationResult = listInstance.checkListRecordSelected();
if(validationResult != true){
var selectedIds = listInstance.readSelectedIds(true);
var excludedIds = listInstance.readExcludedIds(true);
var cvId = listInstance.getCurrentCvId();
var postData = listInstance.getDefaultParams();
delete postData.module;
delete postData.view;
delete postData.parent;
postData.selected_ids = selectedIds;
postData.excluded_ids = excludedIds;
postData.viewname = cvId;
if(params){
jQuery.extend(postData,params);
}
var actionParams = {
"type":"POST",
"url":massActionUrl,
"dataType":"html",
"data" : postData
};
Vtiger_Index_Js.showComposeEmailPopup(actionParams);
} else {
listInstance.noRecordSelectedAlert();
}
},
/*
* function to trigger Send Sms
* @params: send email url , module name.
*/
triggerSendSms : function(massActionUrl, module){
var listInstance = Vtiger_List_Js.getInstance();
var validationResult = listInstance.checkListRecordSelected();
if(validationResult != true){
var progressIndicatorElement = jQuery.progressIndicator();
Vtiger_Helper_Js.checkServerConfig(module).then(function(data){
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
if(data == true){
Vtiger_List_Js.triggerMassAction(massActionUrl);
} else {
alert(app.vtranslate('JS_SMS_SERVER_CONFIGURATION'));
}
});
} else {
listInstance.noRecordSelectedAlert();
}
},
triggerTransferOwnership : function(massActionUrl){
var thisInstance = this;
var listInstance = Vtiger_List_Js.getInstance();
var validationResult = listInstance.checkListRecordSelected();
if(validationResult != true){
var progressIndicatorElement = jQuery.progressIndicator();
thisInstance.getRelatedModulesContainer = false;
var actionParams = {
"type":"POST",
"url":massActionUrl,
"dataType":"html",
"data" : {}
};
AppConnector.request(actionParams).then(
function(data) {
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
if(data) {
var callback = function(data) {
var params = app.validationEngineOptions;
params.onValidationComplete = function(form, valid){
if(valid){
thisInstance.transferOwnershipSave(form)
}
return false;
}
jQuery('#changeOwner').validationEngine(app.validationEngineOptions);
}
app.showModalWindow(data, function(data){
var selectElement = thisInstance.getRelatedModuleContainer();
app.changeSelectElementView(selectElement, 'select2');
if(typeof callback == 'function'){
callback(data);
}
});
}
}
);
} else {
listInstance.noRecordSelectedAlert();
}
},
transferOwnershipSave : function (form){
var listInstance = Vtiger_List_Js.getInstance();
var selectedIds = listInstance.readSelectedIds(true);
var excludedIds = listInstance.readExcludedIds(true);
var cvId = listInstance.getCurrentCvId();
var transferOwner = jQuery('#transferOwnerId').val();
var relatedModules = jQuery('#related_modules').val();
var params = {
'module': app.getModuleName(),
'action' : 'TransferOwnership',
"viewname" : cvId,
"selected_ids":selectedIds,
"excluded_ids" : excludedIds,
'transferOwnerId' : transferOwner,
'related_modules' : relatedModules
}
AppConnector.request(params).then(
function(data) {
if(data.success){
app.hideModalWindow();
var params = {
title : app.vtranslate('JS_MESSAGE'),
text: app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY'),
animation: 'show',
type: 'info'
};
Vtiger_Helper_Js.showPnotify(params);
listInstance.getListViewRecords();
Vtiger_List_Js.clearList();
}
}
);
},
/*
* Function to get the related module container
*/
getRelatedModuleContainer : function(){
if(this.getRelatedModulesContainer == false){
this.getRelatedModulesContainer = jQuery('#related_modules');
}
return this.getRelatedModulesContainer;
},
massDeleteRecords : function(url,instance) {
var listInstance = Vtiger_List_Js.getInstance();
if(typeof instance != "undefined"){
listInstance = instance;
}
var validationResult = listInstance.checkListRecordSelected();
if(validationResult != true){
// Compute selected ids, excluded ids values, along with cvid value and pass as url parameters
var selectedIds = listInstance.readSelectedIds(true);
var excludedIds = listInstance.readExcludedIds(true);
var cvId = listInstance.getCurrentCvId();
var message = app.vtranslate('LBL_MASS_DELETE_CONFIRMATION');
Vtiger_Helper_Js.showConfirmationBox({'message' : message}).then(
function(e) {
var deleteURL = url+'&viewname='+cvId+'&selected_ids='+selectedIds+'&excluded_ids='+excludedIds;
var listViewInstance = Vtiger_List_Js.getInstance();
var searchValue = listViewInstance.getAlphabetSearchValue();
if((typeof searchValue != "undefined") && (searchValue.length > 0)) {
deleteURL += '&search_key='+listViewInstance.getAlphabetSearchField();
deleteURL += '&search_value='+searchValue;
deleteURL += '&operator=s';
}
deleteURL += "&search_params="+JSON.stringify(listViewInstance.getListSearchParams());
var deleteMessage = app.vtranslate('JS_RECORDS_ARE_GETTING_DELETED');
var progressIndicatorElement = jQuery.progressIndicator({
'message' : deleteMessage,
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
AppConnector.request(deleteURL).then(
function(data){
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
});
listInstance.postMassDeleteRecords();
if(data.error){
var params = {
text : app.vtranslate(data.error.message),
title : app.vtranslate('JS_LBL_PERMISSION')
}
Vtiger_Helper_Js.showPnotify(params);
}
}
);
},
function(error, err){
Vtiger_List_Js.clearList();
})
} else {
listInstance.noRecordSelectedAlert();
}
},
deleteRecord : function(recordId) {
var listInstance = Vtiger_List_Js.getInstance();
var message = app.vtranslate('LBL_DELETE_CONFIRMATION');
Vtiger_Helper_Js.showConfirmationBox({'message' : message}).then(
function(e) {
var module = app.getModuleName();
var postData = {
"module": module,
"action": "DeleteAjax",
"record": recordId,
"parent": app.getParentModuleName()
}
var deleteMessage = app.vtranslate('JS_RECORD_GETTING_DELETED');
var progressIndicatorElement = jQuery.progressIndicator({
'message' : deleteMessage,
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
AppConnector.request(postData).then(
function(data){
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
})
if(data.success) {
var orderBy = jQuery('#orderBy').val();
var sortOrder = jQuery("#sortOrder").val();
var urlParams = {
"viewname": data.result.viewname,
"orderby": orderBy,
"sortorder": sortOrder
}
jQuery('#recordsCount').val('');
jQuery('#totalPageCount').text('');
listInstance.getListViewRecords(urlParams).then(function(){
listInstance.updatePagination();
});
} else {
var params = {
text : app.vtranslate(data.error.message),
title : app.vtranslate('JS_LBL_PERMISSION')
}
Vtiger_Helper_Js.showPnotify(params);
}
},
function(error,err){
}
);
},
function(error, err){
}
);
},
triggerMassAction : function(massActionUrl,callBackFunction,beforeShowCb, css) {
//TODO : Make the paramters as an object
if(typeof beforeShowCb == 'undefined') {
beforeShowCb = function(){return true;};
}
if(typeof beforeShowCb == 'object') {
css = beforeShowCb;
beforeShowCb = function(){return true;};
}
var listInstance = Vtiger_List_Js.getInstance();
var validationResult = listInstance.checkListRecordSelected();
if(validationResult != true){
var progressIndicatorElement = jQuery.progressIndicator();
// Compute selected ids, excluded ids values, along with cvid value and pass as url parameters
var selectedIds = listInstance.readSelectedIds(true);
var excludedIds = listInstance.readExcludedIds(true);
var cvId = listInstance.getCurrentCvId();
var postData = {
"viewname" : cvId,
"selected_ids":selectedIds,
"excluded_ids" : excludedIds
};
var listViewInstance = Vtiger_List_Js.getInstance();
var searchValue = listViewInstance.getAlphabetSearchValue();
if((typeof searchValue != "undefined") && (searchValue.length > 0)) {
postData['search_key'] = listViewInstance.getAlphabetSearchField();
postData['search_value'] = searchValue;
postData['operator'] = "s";
}
postData.search_params = JSON.stringify(listInstance.getListSearchParams());
var actionParams = {
"type":"POST",
"url":massActionUrl,
"dataType":"html",
"data" : postData
};
if(typeof css == 'undefined'){
css = {};
}
var css = jQuery.extend({'text-align' : 'left'},css);
AppConnector.request(actionParams).then(
function(data) {
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
if(data) {
var result = beforeShowCb(data);
if(!result) {
return;
}
app.showModalWindow(data,function(data){
if(typeof callBackFunction == 'function'){
callBackFunction(data);
//listInstance.triggerDisplayTypeEvent();
}
},css)
}
},
function(error,err){
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
}
);
} else {
listInstance.noRecordSelectedAlert();
}
},
triggerMassEdit : function(massEditUrl) {
var selectedCount = this.getSelectedRecordCount();
if(selectedCount > 500) {
var params = {
title : app.vtranslate('JS_MESSAGE'),
text: app.vtranslate('JS_MASS_EDIT_LIMIT'),
animation: 'show',
type: 'error'
};
Vtiger_Helper_Js.showPnotify(params);
return;
}
Vtiger_List_Js.triggerMassAction(massEditUrl, function(container){
var massEditForm = container.find('#massEdit');
massEditForm.validationEngine(app.validationEngineOptions);
var listInstance = Vtiger_List_Js.getInstance();
listInstance.inactiveFieldValidation(massEditForm);
listInstance.registerReferenceFieldsForValidation(massEditForm);
listInstance.registerFieldsForValidation(massEditForm);
listInstance.registerEventForTabClick(massEditForm);
listInstance.registerRecordAccessCheckEvent(massEditForm);
var editInstance = Vtiger_Edit_Js.getInstance();
editInstance.registerBasicEvents(massEditForm);
//To remove the change happended for select elements due to picklist dependency
container.find('select').trigger('change',{'forceDeSelect':true});
listInstance.postMassEdit(container);
listInstance.registerSlimScrollMassEdit();
},{'width':'65%'});
},
getSelectedRecordCount : function() {
var count;
var listInstance = Vtiger_List_Js.getInstance();
var cvId = listInstance.getCurrentCvId();
var selectedIdObj = jQuery('#selectedIds').data(cvId+'Selectedids');
if(selectedIdObj != undefined){
if(selectedIdObj != 'all') {
count = selectedIdObj.length;
} else {
var excludedIdsCount = jQuery('#excludedIds').data(cvId+'Excludedids').length;
var totalRecords = jQuery('#recordsCount').val();
count = totalRecords - excludedIdsCount;
}
}
return count;
},
/*
* function to trigger export action
* returns UI
*/
triggerExportAction :function(exportActionUrl){
var listInstance = Vtiger_List_Js.getInstance();
// Compute selected ids, excluded ids values, along with cvid value and pass as url parameters
var selectedIds = listInstance.readSelectedIds(true);
var excludedIds = listInstance.readExcludedIds(true);
var cvId = listInstance.getCurrentCvId();
var pageNumber = jQuery('#pageNumber').val();
exportActionUrl += '&selected_ids='+selectedIds+'&excluded_ids='+excludedIds+'&viewname='+cvId+'&page='+pageNumber;
var listViewInstance = Vtiger_List_Js.getInstance();
var searchValue = listViewInstance.getAlphabetSearchValue();
if((typeof searchValue != "undefined") && (searchValue.length > 0)) {
exportActionUrl += '&search_key='+listViewInstance.getAlphabetSearchField()+'&search_value='+searchValue+'&operator=s';
}
exportActionUrl += '&search_params='+JSON.stringify(listInstance.getListSearchParams());
window.location.href = exportActionUrl;
},
/**
* Function to reload list
*/
clearList : function() {
jQuery('#deSelectAllMsg').trigger('click');
jQuery("#selectAllMsgDiv").hide();
},
showDuplicateSearchForm : function(url) {
var progressIndicatorElement = jQuery.progressIndicator();
app.showModalWindow("", url, function() {
progressIndicatorElement.progressIndicator({'mode' : 'hide'});
Vtiger_List_Js.registerDuplicateSearchButtonEvent();
});
},
/**
* Function that will enable Duplicate Search Find button
*/
registerDuplicateSearchButtonEvent : function() {
jQuery('#fieldList').on('change', function(e) {
var value = jQuery(e.currentTarget).val();
var button = jQuery('#findDuplicate').find('button[type="submit"]');
if(value != null) {
button.attr('disabled', false);
} else {
button.attr('disabled', true);
}
})
}
},{
//contains the List View element.
listViewContainer : false,
//Contains list view top menu element
listViewTopMenuContainer : false,
//Contains list view content element
listViewContentContainer : false,
//Contains filter Block Element
filterBlock : false,
filterSelectElement : false,
getListViewContainer : function() {
if(this.listViewContainer == false){
this.listViewContainer = jQuery('div.listViewPageDiv');
}
return this.listViewContainer;
},
getListViewTopMenuContainer : function(){
if(this.listViewTopMenuContainer == false){
this.listViewTopMenuContainer = jQuery('.listViewTopMenuDiv');
}
return this.listViewTopMenuContainer;
},
getListViewContentContainer : function(){
if(this.listViewContentContainer == false){
this.listViewContentContainer = jQuery('.listViewContentDiv');
}
return this.listViewContentContainer;
},
getFilterBlock : function(){
if(this.filterBlock == false){
var filterSelectElement = this.getFilterSelectElement();
if(filterSelectElement.length <= 0) {
this.filterBlock = jQuery();
}else if(filterSelectElement.is('select')){
this.filterBlock = filterSelectElement.data('select2').dropdown;
}
}
return this.filterBlock;
},
getFilterSelectElement : function() {
if(this.filterSelectElement == false) {
this.filterSelectElement = jQuery('#customFilter');
}
return this.filterSelectElement;
},
getDefaultParams : function() {
var pageNumber = jQuery('#pageNumber').val();
var module = app.getModuleName();
var parent = app.getParentModuleName();
var cvId = this.getCurrentCvId();
var orderBy = jQuery('#orderBy').val();
var sortOrder = jQuery("#sortOrder").val();
var params = {
'module': module,
'parent' : parent,
'page' : pageNumber,
'view' : "List",
'viewname' : cvId,
'orderby' : orderBy,
'sortorder' : sortOrder
}
var searchValue = this.getAlphabetSearchValue();
if((typeof searchValue != "undefined") && (searchValue.length > 0)) {
params['search_key'] = this.getAlphabetSearchField();
params['search_value'] = searchValue;
params['operator'] = "s";
}
params.search_params = JSON.stringify(this.getListSearchParams());
return params;
},
/*
* Function which will give you all the list view params
*/
getListViewRecords : function(urlParams) {
var aDeferred = jQuery.Deferred();
if(typeof urlParams == 'undefined') {
urlParams = {};
}
var thisInstance = this;
var loadingMessage = jQuery('.listViewLoadingMsg').text();
var progressIndicatorElement = jQuery.progressIndicator({
'message' : loadingMessage,
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
var defaultParams = this.getDefaultParams();
var urlParams = jQuery.extend(defaultParams, urlParams);
AppConnector.requestPjax(urlParams).then(
function(data){
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
})
var listViewContentsContainer = jQuery('#listViewContents')
listViewContentsContainer.html(data);
app.showSelect2ElementView(listViewContentsContainer.find('select.select2'));
app.changeSelectElementView(listViewContentsContainer);
thisInstance.registerTimeListSearch(listViewContentsContainer);
thisInstance.registerDateListSearch(listViewContentsContainer);
thisInstance.calculatePages().then(function(data){
//thisInstance.triggerDisplayTypeEvent();
Vtiger_Helper_Js.showHorizontalTopScrollBar();
var selectedIds = thisInstance.readSelectedIds();
if(selectedIds != ''){
if(selectedIds == 'all'){
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
jQuery(this).attr('checked', true).closest('tr').addClass('highlightBackgroundColor');
});
jQuery('#deSelectAllMsgDiv').show();
var excludedIds = thisInstance.readExcludedIds();
if(excludedIds != ''){
jQuery('#listViewEntriesMainCheckBox').attr('checked',false);
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
if(jQuery.inArray(jQuery(element).val(),excludedIds) != -1){
jQuery(element).attr('checked', false).closest('tr').removeClass('highlightBackgroundColor');
}
});
}
} else {
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
if(jQuery.inArray(jQuery(element).val(),selectedIds) != -1){
jQuery(this).attr('checked', true).closest('tr').addClass('highlightBackgroundColor');
}
});
}
thisInstance.checkSelectAll();
}
aDeferred.resolve(data);
// Let listeners know about page state change.
app.notifyPostAjaxReady();
});
},
function(textStatus, errorThrown){
aDeferred.reject(textStatus, errorThrown);
}
);
return aDeferred.promise();
},
/**
* Function to calculate number of pages
*/
calculatePages : function() {
var aDeferred = jQuery.Deferred();
var element = jQuery('#totalPageCount');
var totalPageNumber = element.text();
if(totalPageNumber == ""){
var totalRecordCount = jQuery('#totalCount').val();
if(totalRecordCount != '') {
var pageLimit = jQuery('#pageLimit').val();
if(pageLimit == '0') pageLimit = 1;
pageCount = Math.ceil(totalRecordCount/pageLimit);
if(pageCount == 0){
pageCount = 1;
}
element.text(pageCount);
aDeferred.resolve();
return aDeferred.promise();
}
this.getPageCount().then(function(data){
var pageCount = data['result']['page'];
if(pageCount == 0){
pageCount = 1;
}
element.text(pageCount);
aDeferred.resolve();
});
} else {
aDeferred.resolve();
}
return aDeferred.promise();
},
/*
* Function to return alerts if no records selected.
*/
noRecordSelectedAlert : function(){
return alert(app.vtranslate('JS_PLEASE_SELECT_ONE_RECORD'));
},
massActionSave : function(form, isMassEdit){
if(typeof isMassEdit == 'undefined') {
isMassEdit = false;
}
var aDeferred = jQuery.Deferred();
var massActionUrl = form.serializeFormData();
if(isMassEdit) {
var fieldsChanged = false;
var massEditFieldList = jQuery('#massEditFieldsNameList').data('value');
for(var fieldName in massEditFieldList){
var fieldInfo = massEditFieldList[fieldName];
var fieldElement = form.find('[name="'+fieldInfo.name+'"]');
if(fieldInfo.type == "reference") {
//get the element which will be shown which has "_display" appended to actual field name
fieldElement = form.find('[name="'+fieldInfo.name+'_display"]');
}else if(fieldInfo.type == "multipicklist") {
fieldElement = form.find('[name="'+fieldInfo.name+'[]"]');
}
//Not all fields will be enabled for mass edit
if(fieldElement.length == 0) {
continue;
}
var validationElement = fieldElement.filter('[data-validation-engine]');
//check if you have element enabled has changed
if(validationElement.length == 0){
if(fieldInfo.type == "multipicklist") {
fieldName = fieldName+"[]";
}
delete massActionUrl[fieldName];
if(fieldsChanged != true){
fieldsChanged = false;
}
} else {
fieldsChanged = true;
}
}
if(fieldsChanged == false){
Vtiger_Helper_Js.showPnotify(app.vtranslate('NONE_OF_THE_FIELD_VALUES_ARE_CHANGED_IN_MASS_EDIT'));
form.find('[name="saveButton"]').removeAttr('disabled');
aDeferred.reject();
return aDeferred.promise();
}
//on submit form trigger the massEditPreSave event
var massEditPreSaveEvent = jQuery.Event(Vtiger_List_Js.massEditPreSave);
form.trigger(massEditPreSaveEvent);
if(massEditPreSaveEvent.isDefaultPrevented()) {
form.find('[name="saveButton"]').removeAttr('disabled');
aDeferred.reject();
return aDeferred.promise();
}
}
var progressIndicatorElement = jQuery.progressIndicator({
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
AppConnector.request(massActionUrl).then(
function(data) {
progressIndicatorElement.progressIndicator({
'mode' : 'hide'
});
app.hideModalWindow();
if (!(data.result))
{
var params = {
text: app.vtranslate('JS_MASS_EDIT_NOT_SUCCESSFULL'),
type: 'info'
};
Vtiger_Helper_Js.showPnotify(params);
}
aDeferred.resolve(data);
},
function(error,err){
app.hideModalWindow();
aDeferred.reject(error,err);
}
);
return aDeferred.promise();
},
/*
* Function to check the view permission of a record after save
*/
registerRecordAccessCheckEvent : function(form) {
form.on(Vtiger_List_Js.massEditPreSave, function(e) {
var assignedToSelectElement = form.find('[name="assigned_user_id"][data-validation-engine]');
if(assignedToSelectElement.length > 0){
if(assignedToSelectElement.data('recordaccessconfirmation') == true) {
return;
}else{
if(assignedToSelectElement.data('recordaccessconfirmationprogress') != true) {
var recordAccess = assignedToSelectElement.find('option:selected').data('recordaccess');
if(recordAccess == false) {
var message = app.vtranslate('JS_NO_VIEW_PERMISSION_AFTER_SAVE');
Vtiger_Helper_Js.showConfirmationBox({
'message' : message
}).then(
function(e) {
assignedToSelectElement.data('recordaccessconfirmation',true);
assignedToSelectElement.removeData('recordaccessconfirmationprogress');
form.submit();
},
function(error, err){
assignedToSelectElement.removeData('recordaccessconfirmationprogress');
e.preventDefault();
});
assignedToSelectElement.data('recordaccessconfirmationprogress',true);
} else {
return true;
}
}
}
} else{
return true;
}
e.preventDefault();
});
},
checkSelectAll : function(){
var state = true;
jQuery('.listViewEntriesCheckBox').each(function(index,element){
if(jQuery(element).is(':checked')){
state = true;
}else{
state = false;
return false;
}
});
if(state == true){
jQuery('#listViewEntriesMainCheckBox').attr('checked',true);
} else {
jQuery('#listViewEntriesMainCheckBox').attr('checked', false);
}
},
getRecordsCount : function(){
var aDeferred = jQuery.Deferred();
var recordCountVal = jQuery("#recordsCount").val();
if(recordCountVal != ''){
aDeferred.resolve(recordCountVal);
} else {
var count = '';
var cvId = this.getCurrentCvId();
var module = app.getModuleName();
var parent = app.getParentModuleName();
var postData = {
"module": module,
"parent": parent,
"view": "ListAjax",
"viewname": cvId,
"mode": "getRecordsCount"
}
var searchValue = this.getAlphabetSearchValue();
if((typeof searchValue != "undefined") && (searchValue.length > 0)) {
postData['search_key'] = this.getAlphabetSearchField();
postData['search_value'] = this.getAlphabetSearchValue();
postData['operator'] = "s";
}
postData.search_params = JSON.stringify(this.getListSearchParams());
AppConnector.request(postData).then(
function(data) {
var response = JSON.parse(data);
jQuery("#recordsCount").val(response['result']['count']);
count = response['result']['count'];
aDeferred.resolve(count);
},
function(error,err){
}
);
}
return aDeferred.promise();
},
getSelectOptionFromChosenOption : function(liElement){
var classNames = liElement.attr("class");
var classNamesArr = classNames.split(" ");
var currentOptionId = '';
jQuery.each(classNamesArr,function(index,element){
if(element.match("^filterOptionId")){
currentOptionId = element;
return false;
}
});
return jQuery('#'+currentOptionId);
},
readSelectedIds : function(decode){
var cvId = this.getCurrentCvId();
var selectedIdsElement = jQuery('#selectedIds');
var selectedIdsDataAttr = cvId+'Selectedids';
var selectedIdsElementDataAttributes = selectedIdsElement.data();
if (!(selectedIdsDataAttr in selectedIdsElementDataAttributes) ) {
var selectedIds = new Array();
this.writeSelectedIds(selectedIds);
} else {
selectedIds = selectedIdsElementDataAttributes[selectedIdsDataAttr];
}
if(decode == true){
if(typeof selectedIds == 'object'){
return JSON.stringify(selectedIds);
}
}
return selectedIds;
},
readExcludedIds : function(decode){
var cvId = this.getCurrentCvId();
var exlcudedIdsElement = jQuery('#excludedIds');
var excludedIdsDataAttr = cvId+'Excludedids';
var excludedIdsElementDataAttributes = exlcudedIdsElement.data();
if(!(excludedIdsDataAttr in excludedIdsElementDataAttributes)){
var excludedIds = new Array();
this.writeExcludedIds(excludedIds);
}else{
excludedIds = excludedIdsElementDataAttributes[excludedIdsDataAttr];
}
if(decode == true){
if(typeof excludedIds == 'object') {
return JSON.stringify(excludedIds);
}
}
return excludedIds;
},
writeSelectedIds : function(selectedIds){
var cvId = this.getCurrentCvId();
jQuery('#selectedIds').data(cvId+'Selectedids',selectedIds);
},
writeExcludedIds : function(excludedIds){
var cvId = this.getCurrentCvId();
jQuery('#excludedIds').data(cvId+'Excludedids',excludedIds);
},
getCurrentCvId : function(){
return jQuery('#customFilter').find('option:selected').data('id');
},
getAlphabetSearchField : function() {
return jQuery("#alphabetSearchKey").val();
},
getAlphabetSearchValue : function() {
return jQuery("#alphabetValue").val();
},
/*
* Function to check whether atleast one record is checked
*/
checkListRecordSelected : function(){
var selectedIds = this.readSelectedIds();
if(typeof selectedIds == 'object' && selectedIds.length <= 0) {
return true;
}
return false;
},
postMassEdit : function(massEditContainer) {
var thisInstance = this;
massEditContainer.find('form').on('submit', function(e){
e.preventDefault();
var form = jQuery(e.currentTarget);
var invalidFields = form.data('jqv').InvalidFields;
if(invalidFields.length == 0){
form.find('[name="saveButton"]').attr('disabled',"disabled");
}
var invalidFields = form.data('jqv').InvalidFields;
if(invalidFields.length > 0){
return;
}
thisInstance.massActionSave(form, true).then(
function(data) {
thisInstance.getListViewRecords();
Vtiger_List_Js.clearList();
},
function(error,err){
}
)
});
},
/*
* Function to register List view Page Navigation
*/
registerPageNavigationEvents : function(){
var aDeferred = jQuery.Deferred();
var thisInstance = this;
jQuery('#listViewNextPageButton').on('click',function(){
var pageLimit = jQuery('#pageLimit').val();
var noOfEntries = jQuery('#noOfEntries').val();
if(noOfEntries == pageLimit){
var orderBy = jQuery('#orderBy').val();
var sortOrder = jQuery("#sortOrder").val();
var cvId = thisInstance.getCurrentCvId();
var urlParams = {
"orderby": orderBy,
"sortorder": sortOrder,
"viewname": cvId
}
var pageNumber = jQuery('#pageNumber').val();
var nextPageNumber = parseInt(parseFloat(pageNumber)) + 1;
jQuery('#pageNumber').val(nextPageNumber);
jQuery('#pageToJump').val(nextPageNumber);
thisInstance.getListViewRecords(urlParams).then(
function(data){
thisInstance.updatePagination();
aDeferred.resolve();
},
function(textStatus, errorThrown){
aDeferred.reject(textStatus, errorThrown);
}
);
}
return aDeferred.promise();
});
jQuery('#listViewPreviousPageButton').on('click',function(){
var aDeferred = jQuery.Deferred();
var pageNumber = jQuery('#pageNumber').val();
if(pageNumber > 1){
var orderBy = jQuery('#orderBy').val();
var sortOrder = jQuery("#sortOrder").val();
var cvId = thisInstance.getCurrentCvId();
var urlParams = {
"orderby": orderBy,
"sortorder": sortOrder,
"viewname" : cvId
}
var previousPageNumber = parseInt(parseFloat(pageNumber)) - 1;
jQuery('#pageNumber').val(previousPageNumber);
jQuery('#pageToJump').val(previousPageNumber);
thisInstance.getListViewRecords(urlParams).then(
function(data){
thisInstance.updatePagination();
aDeferred.resolve();
},
function(textStatus, errorThrown){
aDeferred.reject(textStatus, errorThrown);
}
);
}
});
jQuery('#listViewPageJump').on('click',function(e){
if(typeof Vtiger_WholeNumberGreaterThanZero_Validator_Js.invokeValidation(jQuery('#pageToJump'))!= 'undefined') {
var pageNo = jQuery('#pageNumber').val();
jQuery("#pageToJump").val(pageNo);
}
jQuery('#pageToJump').validationEngine('hideAll');
var element = jQuery('#totalPageCount');
var totalPageNumber = element.text();
if(totalPageNumber == ""){
var totalCountElem = jQuery('#totalCount');
var totalRecordCount = totalCountElem.val();
if(totalRecordCount != '') {
var recordPerPage = jQuery('#pageLimit').val();
if(recordPerPage == '0') recordPerPage = 1;
pageCount = Math.ceil(totalRecordCount/recordPerPage);
if(pageCount == 0){
pageCount = 1;
}
element.text(pageCount);
return;
}
element.progressIndicator({});
thisInstance.getPageCount().then(function(data){
var pageCount = data['result']['page'];
totalCountElem.val(data['result']['numberOfRecords']);
if(pageCount == 0){
pageCount = 1;
}
element.text(pageCount);
element.progressIndicator({'mode': 'hide'});
});
}
})
jQuery('#listViewPageJumpDropDown').on('click','li',function(e){
e.stopImmediatePropagation();
}).on('keypress','#pageToJump',function(e){
if(e.which == 13){
e.stopImmediatePropagation();
var element = jQuery(e.currentTarget);
var response = Vtiger_WholeNumberGreaterThanZero_Validator_Js.invokeValidation(element);
if(typeof response != "undefined"){
element.validationEngine('showPrompt',response,'',"topLeft",true);
} else {
element.validationEngine('hideAll');
var currentPageElement = jQuery('#pageNumber');
var currentPageNumber = currentPageElement.val();
var newPageNumber = parseInt(jQuery(e.currentTarget).val());
var totalPages = parseInt(jQuery('#totalPageCount').text());
if(newPageNumber > totalPages){
var error = app.vtranslate('JS_PAGE_NOT_EXIST');
element.validationEngine('showPrompt',error,'',"topLeft",true);
return;
}
if(newPageNumber == currentPageNumber){
var message = app.vtranslate('JS_YOU_ARE_IN_PAGE_NUMBER')+" "+newPageNumber;
var params = {
text: message,
type: 'info'
};
Vtiger_Helper_Js.showMessage(params);
return;
}
currentPageElement.val(newPageNumber);
thisInstance.getListViewRecords().then(
function(data){
thisInstance.updatePagination();
element.closest('.btn-group ').removeClass('open');
},
function(textStatus, errorThrown){
}
);
}
return false;
}
});
},
/**
* Function to get page count and total number of records in list
*/
getPageCount : function(){
var aDeferred = jQuery.Deferred();
var pageCountParams = this.getPageJumpParams();
AppConnector.request(pageCountParams).then(
function(data) {
var response;
if(typeof data != "object"){
response = JSON.parse(data);
} else{
response = data;
}
aDeferred.resolve(response);
},
function(error,err){
}
);
return aDeferred.promise();
},
/**
* Function to get Page Jump Params
*/
getPageJumpParams : function(){
var params = this.getDefaultParams();
params['view'] = "ListAjax";
params['mode'] = "getPageCount";
return params;
},
/**
* Function to update Pagining status
*/
updatePagination : function(){
var previousPageExist = jQuery('#previousPageExist').val();
var nextPageExist = jQuery('#nextPageExist').val();
var previousPageButton = jQuery('#listViewPreviousPageButton');
var nextPageButton = jQuery('#listViewNextPageButton');
var pageJumpButton = jQuery('#listViewPageJump');
var listViewEntriesCount = parseInt(jQuery('#noOfEntries').val());
var pageStartRange = parseInt(jQuery('#pageStartRange').val());
var pageEndRange = parseInt(jQuery('#pageEndRange').val());
var pages = jQuery('#totalPageCount').text();
var totalNumberOfRecords = jQuery('.totalNumberOfRecords');
var pageNumbersTextElem = jQuery('.pageNumbersText');
if(pages > 1){
pageJumpButton.removeAttr('disabled');
}
if(previousPageExist != ""){
previousPageButton.removeAttr('disabled');
} else if(previousPageExist == "") {
previousPageButton.attr("disabled","disabled");
}
if((nextPageExist != "") && (pages >1)){
nextPageButton.removeAttr('disabled');
} else if((nextPageExist == "") || (pages == 1)) {
nextPageButton.attr("disabled","disabled");
}
if(listViewEntriesCount != 0){
var pageNumberText = pageStartRange+" "+app.vtranslate('to')+" "+pageEndRange;
pageNumbersTextElem.html(pageNumberText);
totalNumberOfRecords.removeClass('hide');
} else {
pageNumbersTextElem.html("<span> </span>");
if(!totalNumberOfRecords.hasClass('hide')){
totalNumberOfRecords.addClass('hide');
}
}
},
/*
* Function to register the event for changing the custom Filter
*/
registerChangeCustomFilterEvent : function(){
var thisInstance = this;
var filterSelectElement = this.getFilterSelectElement();
filterSelectElement.change(function(e){
jQuery('#pageNumber').val("1");
jQuery('#pageToJump').val('1');
jQuery('#orderBy').val('');
jQuery("#sortOrder").val('');
var cvId = thisInstance.getCurrentCvId();
selectedIds = new Array();
excludedIds = new Array();
var urlParams ={
"viewname" : cvId,
//to make alphabetic search empty
"search_key" : thisInstance.getAlphabetSearchField(),
"search_value" : "",
"search_params" : ""
}
//Make the select all count as empty
jQuery('#recordsCount').val('');
//Make total number of pages as empty
jQuery('#totalPageCount').text("");
thisInstance.getListViewRecords(urlParams).then (function(){
thisInstance.ListViewPostOperation();
thisInstance.updatePagination();
});
});
},
//Fix for empty Recycle bin
ListViewPostOperation : function(){
return true;
},
/*
* Function to register the click event for list view main check box.
*/
registerMainCheckBoxClickEvent : function(){
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.on('click','#listViewEntriesMainCheckBox',function(){
var selectedIds = thisInstance.readSelectedIds();
var excludedIds = thisInstance.readExcludedIds();
if(jQuery('#listViewEntriesMainCheckBox').is(":checked")){
var recordCountObj = thisInstance.getRecordsCount();
recordCountObj.then(function(data){
jQuery('#totalRecordsCount').text(data);
if(jQuery("#deSelectAllMsgDiv").css('display') == 'none'){
jQuery("#selectAllMsgDiv").show();
}
});
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
jQuery(this).attr('checked', true).closest('tr').addClass('highlightBackgroundColor');
if(selectedIds == 'all'){
if((jQuery.inArray(jQuery(element).val(), excludedIds))!= -1){
excludedIds.splice(jQuery.inArray(jQuery(element).val(),excludedIds),1);
}
} else if((jQuery.inArray(jQuery(element).val(), selectedIds)) == -1){
selectedIds.push(jQuery(element).val());
}
});
}else{
jQuery("#selectAllMsgDiv").hide();
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
jQuery(this).attr('checked', false).closest('tr').removeClass('highlightBackgroundColor');
if(selectedIds == 'all'){
excludedIds.push(jQuery(element).val());
selectedIds = 'all';
} else {
selectedIds.splice( jQuery.inArray(jQuery(element).val(), selectedIds), 1 );
}
});
}
thisInstance.writeSelectedIds(selectedIds);
thisInstance.writeExcludedIds(excludedIds);
});
},
/*
* Function to register click event for list view check box.
*/
registerCheckBoxClickEvent : function(){
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.delegate('.listViewEntriesCheckBox','click',function(e){
var selectedIds = thisInstance.readSelectedIds();
var excludedIds = thisInstance.readExcludedIds();
var elem = jQuery(e.currentTarget);
if(elem.is(':checked')){
elem.closest('tr').addClass('highlightBackgroundColor');
if(selectedIds== 'all'){
excludedIds.splice( jQuery.inArray(elem.val(), excludedIds), 1 );
} else if((jQuery.inArray(elem.val(), selectedIds)) == -1) {
selectedIds.push(elem.val());
}
} else {
elem.closest('tr').removeClass('highlightBackgroundColor');
if(selectedIds == 'all') {
excludedIds.push(elem.val());
selectedIds = 'all';
} else {
selectedIds.splice( jQuery.inArray(elem.val(), selectedIds), 1 );
}
}
thisInstance.checkSelectAll();
thisInstance.writeSelectedIds(selectedIds);
thisInstance.writeExcludedIds(excludedIds);
});
},
/*
* Function to register the click event for select all.
*/
registerSelectAllClickEvent : function(){
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.delegate('#selectAllMsg','click',function(){
jQuery('#selectAllMsgDiv').hide();
jQuery("#deSelectAllMsgDiv").show();
jQuery('#listViewEntriesMainCheckBox').attr('checked',true);
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
jQuery(this).attr('checked', true).closest('tr').addClass('highlightBackgroundColor');
});
thisInstance.writeSelectedIds('all');
});
},
/*
* Function to register the click event for deselect All.
*/
registerDeselectAllClickEvent : function(){
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.delegate('#deSelectAllMsg','click',function(){
jQuery('#deSelectAllMsgDiv').hide();
jQuery('#listViewEntriesMainCheckBox').attr('checked',false);
jQuery('.listViewEntriesCheckBox').each( function(index,element) {
jQuery(this).attr('checked', false).closest('tr').removeClass('highlightBackgroundColor');
});
var excludedIds = new Array();
var selectedIds = new Array();
thisInstance.writeSelectedIds(selectedIds);
thisInstance.writeExcludedIds(excludedIds);
});
},
/*
* Function to register the click event for listView headers
*/
registerHeadersClickEvent : function(){
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.on('click','.listViewHeaderValues',function(e){
var fieldName = jQuery(e.currentTarget).data('columnname');
var sortOrderVal = jQuery(e.currentTarget).data('nextsortorderval');
var cvId = thisInstance.getCurrentCvId();
var urlParams = {
"orderby": fieldName,
"sortorder": sortOrderVal,
"viewname" : cvId
}
thisInstance.getListViewRecords(urlParams);
});
},
/*
* function to register the click event event for create filter
*/
registerCreateFilterClickEvent : function(){
var thisInstance = this;
jQuery('#createFilter').on('click',function(event){
//to close the dropdown
thisInstance.getFilterSelectElement().data('select2').close();
var currentElement = jQuery(event.currentTarget);
var createUrl = currentElement.data('createurl');
Vtiger_CustomView_Js.loadFilterView(createUrl);
});
},
/*
* Function to register the click event for edit filter
*/
registerEditFilterClickEvent : function(){
var thisInstance = this;
var listViewFilterBlock = this.getFilterBlock();
if(listViewFilterBlock != false){
listViewFilterBlock.on('mouseup','li i.editFilter',function(event){
//to close the dropdown
thisInstance.getFilterSelectElement().data('select2').close();
var liElement = jQuery(event.currentTarget).closest('.select2-result-selectable');
var currentOptionElement = thisInstance.getSelectOptionFromChosenOption(liElement);
var editUrl = currentOptionElement.data('editurl');
Vtiger_CustomView_Js.loadFilterView(editUrl);
event.stopPropagation();
});
}
},
/*
* Function to register the click event for delete filter
*/
registerDeleteFilterClickEvent: function(){
var thisInstance = this;
var listViewFilterBlock = this.getFilterBlock();
if(listViewFilterBlock != false){
//used mouseup event to stop the propagation of customfilter select change event.
listViewFilterBlock.on('mouseup','li i.deleteFilter',function(event){
//to close the dropdown
thisInstance.getFilterSelectElement().data('select2').close();
var liElement = jQuery(event.currentTarget).closest('.select2-result-selectable');
var message = app.vtranslate('JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE');
Vtiger_Helper_Js.showConfirmationBox({'message' : message}).then(
function(e) {
var currentOptionElement = thisInstance.getSelectOptionFromChosenOption(liElement);
var deleteUrl = currentOptionElement.data('deleteurl');
var newEle = '<form action='+deleteUrl+' method="POST">'+
'<input type = "hidden" name ="'+csrfMagicName+'" value=\''+csrfMagicToken+'\'>'+
'</form>';
var formElement = jQuery(newEle);
formElement.appendTo('body').submit();
},
function(error, err){
}
);
event.stopPropagation();
});
}
},
/*
* Function to register the click event for approve filter
*/
registerApproveFilterClickEvent: function(){
var thisInstance = this;
var listViewFilterBlock = this.getFilterBlock();
if(listViewFilterBlock != false){
listViewFilterBlock.on('mouseup','li i.approveFilter',function(event){
//to close the dropdown
thisInstance.getFilterSelectElement().data('select2').close();
var liElement = jQuery(event.currentTarget).closest('.select2-result-selectable');
var currentOptionElement = thisInstance.getSelectOptionFromChosenOption(liElement);
var approveUrl = currentOptionElement.data('approveurl');
var newEle = '<form action='+approveUrl+' method="POST">'+
'<input type = "hidden" name ="'+csrfMagicName+'" value=\''+csrfMagicToken+'\'>'+
'</form>';
var formElement = jQuery(newEle);
formElement.appendTo('body').submit();
event.stopPropagation();
});
}
},
/*
* Function to register the click event for deny filter
*/
registerDenyFilterClickEvent: function(){
var thisInstance = this;
var listViewFilterBlock = this.getFilterBlock();
if(listViewFilterBlock != false){
listViewFilterBlock.on('mouseup','li i.denyFilter',function(event){
//to close the dropdown
thisInstance.getFilterSelectElement().data('select2').close();
var liElement = jQuery(event.currentTarget).closest('.select2-result-selectable');
var currentOptionElement = thisInstance.getSelectOptionFromChosenOption(liElement);
var denyUrl = currentOptionElement.data('denyurl');
var newEle = '<form action='+denyUrl+' method="POST">'+
'<input type = "hidden" name ="'+csrfMagicName+'" value=\''+csrfMagicToken+'\'>'+
'</form>';
var formElement = jQuery(newEle);
formElement.appendTo('body').submit();
event.stopPropagation();
});
}
},
/*
* Function to register the hover event for customview filter options
*/
registerCustomFilterOptionsHoverEvent : function(){
var thisInstance = this;
var listViewTopMenuDiv = this.getListViewTopMenuContainer();
var filterBlock = this.getFilterBlock()
if(filterBlock != false){
filterBlock.on('hover','li.select2-result-selectable',function(event){
var liElement = jQuery(event.currentTarget);
var liFilterImages = liElement.find('.filterActionImgs');
if (liElement.hasClass('group-result')){
return;
}
if( event.type === 'mouseenter' ) {
if(liFilterImages.length > 0){
liFilterImages.show();
}else{
thisInstance.performFilterImageActions(liElement);
}
} else {
liFilterImages.hide();
}
});
}
},
performFilterImageActions : function(liElement) {
jQuery('.filterActionImages').clone(true,true).removeClass('filterActionImages').addClass('filterActionImgs').appendTo(liElement.find('.select2-result-label')).show();
var currentOptionElement = this.getSelectOptionFromChosenOption(liElement);
var deletable = currentOptionElement.data('deletable');
if(deletable != '1'){
liElement.find('.deleteFilter').remove();
}
var editable = currentOptionElement.data('editable');
if(editable != '1'){
liElement.find('.editFilter').remove();
}
var pending = currentOptionElement.data('pending');
if(pending != '1'){
liElement.find('.approveFilter').remove();
}
var approve = currentOptionElement.data('public');
if(approve != '1'){
liElement.find('.denyFilter').remove();
}
},
/*
* Function to register the list view row click event
*/
registerRowClickEvent: function(){
var thisInstance = this;
var listViewContentDiv = this.getListViewContentContainer();
listViewContentDiv.on('click','.listViewEntries',function(e){
if(jQuery(e.target, jQuery(e.currentTarget)).is('td:first-child')) return;
if(jQuery(e.target).is('input[type="checkbox"]')) return;
var elem = jQuery(e.currentTarget);
var recordUrl = elem.data('recordurl');
if(typeof recordUrl == 'undefined') {
return;
}
window.location.href = recordUrl;
});
},
/*
* Function to register the list view delete record click event
*/
registerDeleteRecordClickEvent: function(){
var thisInstance = this;
var listViewContentDiv = this.getListViewContentContainer();
listViewContentDiv.on('click','.deleteRecordButton',function(e){
var elem = jQuery(e.currentTarget);
var recordId = elem.closest('tr').data('id');
Vtiger_List_Js.deleteRecord(recordId);
e.stopPropagation();
});
},
/*
* Function to register the click event of email field
*/
registerEmailFieldClickEvent : function(){
var listViewContentDiv = this.getListViewContentContainer();
listViewContentDiv.on('click','.emailField',function(e){
e.stopPropagation();
})
},
/*
* Function to register the click event of phone field
*/
registerPhoneFieldClickEvent : function(){
var listViewContentDiv = this.getListViewContentContainer();
listViewContentDiv.on('click','.phoneField',function(e){
e.stopPropagation();
})
},
/*
* Function to register the click event of url field
*/
registerUrlFieldClickEvent : function(){
var listViewContentDiv = this.getListViewContentContainer();
listViewContentDiv.on('click','.urlField',function(e){
e.stopPropagation();
})
},
/**
* Function to inactive field for validation in a form
* this will remove data-validation-engine attr of all the elements
* @param Accepts form as a parameter
*/
inactiveFieldValidation : function(form){
var massEditFieldList = jQuery('#massEditFieldsNameList').data('value');
for(var fieldName in massEditFieldList){
var fieldInfo = massEditFieldList[fieldName];
var fieldElement = form.find('[name="'+fieldInfo.name+'"]');
if(fieldInfo.type == "reference") {
//get the element which will be shown which has "_display" appended to actual field name
fieldElement = form.find('[name="'+fieldInfo.name+'_display"]');
}else if(fieldInfo.type == "multipicklist") {
fieldElement = form.find('[name="'+fieldInfo.name+'[]"]');
}
//Not all the fields will be enabled for mass edit
if(fieldElement.length == 0 ) {
continue;
}
var elemData = fieldElement.data();
//Blank validation by default
var validationVal = "validate[]"
if('validationEngine' in elemData) {
validationVal = elemData.validationEngine;
delete elemData.validationEngine;
}
fieldElement.data('invalidValidationEngine',validationVal);
fieldElement.removeAttr('data-validation-engine');
}
},
/**
* function to register field for validation
* this will add the data-validation-engine attr of all the elements
* make the field available for validation
* @param Accepts form as a parameter
*/
registerFieldsForValidation : function(form){
form.find('.fieldValue').on('change','input,select,textarea',function(e, params){
if(typeof params == 'undefined'){
params = {};
}
if(typeof params.forceDeSelect == 'undefined') {
params.forceDeSelect = false;
}
var element = jQuery(e.currentTarget);
var fieldValue = element.val();
var parentTd = element.closest('td');
if(((fieldValue == "" || fieldValue == null) && (typeof(element.attr('data-validation-engine')) != "undefined")) || params.forceDeSelect){
if(parentTd.hasClass('massEditActiveField')){
parentTd.removeClass('massEditActiveField');
}
element.removeAttr('data-validation-engine');
element.validationEngine('hide');
var invalidFields = form.data('jqv').InvalidFields;
var response = jQuery.inArray(element.get(0),invalidFields);
if(response != '-1'){
invalidFields.splice(response,1);
}
} else if((fieldValue != "") && (typeof(element.attr('data-validation-engine')) == "undefined")){
element.attr('data-validation-engine', element.data('invalidValidationEngine'));
parentTd.addClass('massEditActiveField');
}
})
},
registerEventForTabClick : function(form){
var ulContainer = form.find('.massEditTabs');
ulContainer.on('click','a[data-toggle="tab"]',function(e){
form.validationEngine('validate');
var invalidFields = form.data('jqv').InvalidFields;
if(invalidFields.length > 0){
e.stopPropagation();
}
});
},
registerReferenceFieldsForValidation : function(form){
var referenceField = form.find('.sourceField');
form.find('.sourceField').on(Vtiger_Edit_Js.referenceSelectionEvent,function(e,params){
var element = jQuery(e.currentTarget);
var elementName = element.attr('name');
var fieldDisplayName = elementName+"_display";
var fieldDisplayElement = form.find('input[name="'+fieldDisplayName+'"]');
if(params.selectedName == ""){
return;
}
fieldDisplayElement.attr('data-validation-engine', fieldDisplayElement.data('invalidValidationEngine'));
var parentTd = fieldDisplayElement.closest('td');
if(!parentTd.hasClass('massEditActiveField')){
parentTd.addClass('massEditActiveField');
}
})
form.find('.clearReferenceSelection').on(Vtiger_Edit_Js.referenceDeSelectionEvent,function(e){
var sourceField = form.find('.sourceField');
var sourceFieldName = sourceField.attr('name');
var fieldDisplayName = sourceFieldName+"_display";
var fieldDisplayElement = form.find('input[name="'+fieldDisplayName+'"]').removeAttr('data-validation-engine');
var parentTd = fieldDisplayElement.closest('td');
if(parentTd.hasClass('massEditActiveField')){
parentTd.removeClass('massEditActiveField');
}
})
},
registerSlimScrollMassEdit : function() {
app.showScrollBar(jQuery('div[name="massEditContent"]'), {'height':'400px'});
},
/*
* Function to register the submit event for mass Actions save
*/
registerMassActionSubmitEvent : function(){
var thisInstance = this;
jQuery('body').on('submit','#massSave',function(e){
var form = jQuery(e.currentTarget);
var commentContent = form.find('#commentcontent')
var commentContentValue = commentContent.val();
if(commentContentValue == "") {
var errorMsg = app.vtranslate('JS_LBL_COMMENT_VALUE_CANT_BE_EMPTY')
commentContent.validationEngine('showPrompt', errorMsg , 'error','bottomLeft',true);
e.preventDefault();
return;
}
commentContent.validationEngine('hide');
jQuery(form).find('[name=saveButton]').attr('disabled','disabled');
thisInstance.massActionSave(form).then(function(data){
Vtiger_List_Js.clearList();
});
e.preventDefault();
});
},
changeCustomFilterElementView : function() {
var filterSelectElement = this.getFilterSelectElement();
if(filterSelectElement.length > 0 && filterSelectElement.is("select")) {
app.showSelect2ElementView(filterSelectElement,{
formatSelection : function(data, contianer){
var resultContainer = jQuery('<span></span>');
resultContainer.append(jQuery(jQuery('.filterImage').clone().get(0)).show());
resultContainer.append(data.text);
return resultContainer;
},
customSortOptGroup : true
});
var select2Instance = filterSelectElement.data('select2');
jQuery('span.filterActionsDiv').appendTo(select2Instance.dropdown).removeClass('hide');
}
},
triggerDisplayTypeEvent : function() {
var widthType = app.cacheGet('widthType', 'narrowWidthType');
if(widthType) {
var elements = jQuery('.listViewEntriesTable').find('td,th');
elements.attr('class', widthType);
}
},
registerEventForAlphabetSearch : function() {
var thisInstance = this;
var listViewPageDiv = this.getListViewContentContainer();
listViewPageDiv.on('click','.alphabetSearch',function(e) {
var alphabet = jQuery(e.currentTarget).find('a').text();
var cvId = thisInstance.getCurrentCvId();
var AlphabetSearchKey = thisInstance.getAlphabetSearchField();
var urlParams = {
"viewname" : cvId,
"search_key" : AlphabetSearchKey,
"search_value" : alphabet,
"operator" : 's',
"page" : 1
}
jQuery('#recordsCount').val('');
//To Set the page number as first page
jQuery('#pageNumber').val('1');
jQuery('#pageToJump').val('1');
jQuery('#totalPageCount').text("");
thisInstance.getListViewRecords(urlParams).then(
function(data){
thisInstance.updatePagination();
//To unmark the all the selected ids
jQuery('#deSelectAllMsg').trigger('click');
},
function(textStatus, errorThrown){
}
);
});
},
/**
* Function to show total records count in listview on hover
* of pageNumber text
*/
registerEventForTotalRecordsCount : function(){
var thisInstance = this;
jQuery('.totalNumberOfRecords').on('click',function(e){
var element = jQuery(e.currentTarget);
var totalRecordsElement = jQuery('#totalCount');
var totalNumberOfRecords = totalRecordsElement.val();
element.addClass('hide');
element.parent().progressIndicator({});
if(totalNumberOfRecords == '') {
thisInstance.getPageCount().then(function(data){
totalNumberOfRecords = data['result']['numberOfRecords'];
totalRecordsElement.val(totalNumberOfRecords);
thisInstance.showPagingInfo();
});
}else{
thisInstance.showPagingInfo();
}
element.parent().progressIndicator({'mode':'hide'});
})
},
showPagingInfo : function(){
var totalNumberOfRecords = jQuery('#totalCount').val();
var pageNumberElement = jQuery('.pageNumbersText');
var pageRange = pageNumberElement.text();
var newPagingInfo = pageRange+" "+app.vtranslate('of')+" "+totalNumberOfRecords;
var listViewEntriesCount = parseInt(jQuery('#noOfEntries').val());
if(listViewEntriesCount != 0){
jQuery('.pageNumbersText').html(newPagingInfo);
} else {
jQuery('.pageNumbersText').html("");
}
},
registerEvents : function(){
this.registerRowClickEvent();
this.registerPageNavigationEvents();
this.registerMainCheckBoxClickEvent();
this.registerCheckBoxClickEvent();
this.registerSelectAllClickEvent();
this.registerDeselectAllClickEvent();
this.registerDeleteRecordClickEvent();
this.registerHeadersClickEvent();
this.registerMassActionSubmitEvent();
this.registerEventForAlphabetSearch();
this.changeCustomFilterElementView();
this.registerChangeCustomFilterEvent();
this.registerCreateFilterClickEvent();
this.registerEditFilterClickEvent();
this.registerDeleteFilterClickEvent();
this.registerApproveFilterClickEvent();
this.registerDenyFilterClickEvent();
this.registerCustomFilterOptionsHoverEvent();
this.registerEmailFieldClickEvent();
this.registerPhoneFieldClickEvent();
//this.triggerDisplayTypeEvent();
Vtiger_Helper_Js.showHorizontalTopScrollBar();
this.registerUrlFieldClickEvent();
this.registerEventForTotalRecordsCount();
//Just reset all the checkboxes on page load: added for chrome issue.
var listViewContainer = this.getListViewContentContainer();
listViewContainer.find('#listViewEntriesMainCheckBox,.listViewEntriesCheckBox').prop('checked', false);
this.registerListSearch();
this.registerDateListSearch(listViewContainer);
this.registerTimeListSearch(listViewContainer);
},
/**
* Function that executes after the mass delete action
*/
postMassDeleteRecords : function() {
var aDeferred = jQuery.Deferred();
var listInstance = Vtiger_List_Js.getInstance();
app.hideModalWindow();
var module = app.getModuleName();
listInstance.getListViewRecords().then(
function(data) {
jQuery('#recordsCount').val('');
jQuery('#totalPageCount').text('');
//listInstance.triggerDisplayTypeEvent();
jQuery('#deSelectAllMsg').trigger('click');
listInstance.calculatePages().then(function(){
listInstance.updatePagination();
});
aDeferred.resolve();
});
jQuery('#recordsCount').val('');
return aDeferred.promise();
},
getListSearchParams : function(){
var listViewPageDiv = this.getListViewContainer();
var listViewTable = listViewPageDiv.find('.listViewEntriesTable');
var searchParams = new Array();
listViewTable.find('.listSearchContributor').each(function(index,domElement){
var searchInfo = new Array();
var searchContributorElement = jQuery(domElement);
var fieldInfo = searchContributorElement.data('fieldinfo');
var fieldName = searchContributorElement.attr('name');
var searchValue = searchContributorElement.val();
if(typeof searchValue == "object") {
if(searchValue == null) {
searchValue = "";
}else{
searchValue = searchValue.join(',');
}
}
searchValue = searchValue.trim();
if(searchValue.length <=0 ) {
//continue
return true;
}
var searchOperator = 'c';
if(fieldInfo.type == "date" || fieldInfo.type == "datetime") {
searchOperator = 'bw';
}else if ( fieldInfo.type == "boolean" || fieldInfo.type == "picklist") {
searchOperator = 'e';
}else if( fieldInfo.type == 'currency' || fieldInfo.type == "double" ||
fieldInfo.type == 'percentage' || fieldInfo.type == "integer" ||
fieldInfo.type == "number"){
if(searchValue.substring(0,2) == '>=' ) {
searchOperator = 'h';
} else if ( searchValue.substring(0,2)== '<=') {
searchOperator = 'm';
} else if(searchValue.substring(0,1) == '>' ) {
searchOperator = 'g';
} else if ( searchValue.substring(0,1)== '<') {
searchOperator = 'l';
} else {
searchOperator = 'e';
}
}
searchInfo.push(fieldName);
searchInfo.push(searchOperator);
searchInfo.push(searchValue);
searchParams.push(searchInfo);
});
return new Array(searchParams);
},
registerListSearch : function() {
var listViewPageDiv = this.getListViewContainer();
var thisInstance = this;
listViewPageDiv.on('click','[data-trigger="listSearch"]',function(e){
thisInstance.getListViewRecords({'page': '1'}).then(
function(data){
//To unmark the all the selected ids
jQuery('#deSelectAllMsg').trigger('click');
jQuery('#recordsCount').val('');
//To Set the page number as first page
jQuery('#pageNumber').val('1');
jQuery('#pageToJump').val('1');
jQuery('#totalPageCount').text("");
thisInstance.calculatePages().then(function(){
thisInstance.updatePagination();
});
},
function(textStatus, errorThrown){
}
);
})
listViewPageDiv.on('keypress','input.listSearchContributor',function(e){
if(e.keyCode == 13){
var element = jQuery(e.currentTarget);
var parentElement = element.closest('tr');
var searchTriggerElement = parentElement.find('[data-trigger="listSearch"]');
searchTriggerElement.trigger('click');
}
});
},
registerDateListSearch : function(container) {
container.find('.dateField').each(function(index,element){
var dateElement = jQuery(element);
var customParams = {
calendars: 3,
mode: 'range',
className : 'rangeCalendar',
onChange: function(formated) {
dateElement.val(formated.join(','));
}
}
app.registerEventForDatePickerFields(dateElement,false,customParams);
});
},
registerTimeListSearch : function(container) {
app.registerEventForTimeFields(container,false);
}
});