晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/Settings/Picklist/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.
*************************************************************************************/
var Settings_Picklist_Js = {
getContainer : function() {
return jQuery('#listViewContent');
},
registerModuleChangeEvent : function() {
jQuery('#pickListModules').on('change',function(e){
var selectedModule = jQuery(e.currentTarget).val();
if(selectedModule.length <= 0) {
app.helper.showErrorNotification({message: app.vtranslate('JS_PLEASE_SELECT_MODULE')});
return;
}
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
source_module : selectedModule,
view : 'IndexAjax',
mode : 'getPickListDetailsForModule'
}
app.helper.showProgress();
app.request.post({data: params}).then(function(error, data){
jQuery('#modulePickListContainer').html(data);
app.helper.hideProgress();
vtUtils.showSelect2ElementView(jQuery('#modulePickListContainer').find('select.select2'));
Settings_Picklist_Js.registerModulePickListChangeEvent();
jQuery('#modulePickList').trigger('change');
});
});
},
registerModulePickListChangeEvent : function() {
jQuery('#modulePickList').on('change',function(e){
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
source_module : jQuery('#pickListModules').val(),
view : 'IndexAjax',
mode : 'getPickListValueForField',
pickListFieldId : jQuery(e.currentTarget).val()
}
app.helper.showProgress();
app.request.post({data: params}).then(function(error, data){
jQuery('#modulePickListValuesContainer').html(data);
vtUtils.showSelect2ElementView(jQuery('#rolesList'));
Settings_Picklist_Js.registerItemActions();
app.helper.hideProgress();
})
})
},
registerAddItemEvent : function() {
var popupShown = false;
jQuery('#addItem').on('click',function(e){
var data = jQuery('#createViewContents').find('.modalContents');
var clonedCreateView = data.clone(true,true).removeClass('basicCreateView').addClass('createView');
clonedCreateView.find('.rolesList').addClass('select2');
if(popupShown) {
return false;
}
var callBackFunction = function(data) {
popupShown = false;
var select2params = {tags : [], tokenSeparators: [","]};
vtUtils.showSelect2ElementView(data.find('[name=newValue]'), select2params);
Settings_Picklist_Js.registerColorPickerEvent(data);
Settings_Picklist_Js.registerAddItemSaveEvent(data);
Settings_Picklist_Js.regiserSelectRolesEvent(data);
}
popupShown = true;
app.helper.showModal(clonedCreateView.html(), {cb: callBackFunction});
});
},
registerenableOrDisableListSaveEvent : function() {
jQuery('#saveOrder').on('click',function(e) {
app.helper.showProgress();
var pickListValues = jQuery('#role2picklist option');
var selectedValues = jQuery('#role2picklist').val();
var disabledValues = [];
var enabledValues = [];
jQuery.each(pickListValues,function() {
var currentValue = jQuery(this);
if(selectedValues && jQuery.inArray(currentValue.val(), selectedValues) > -1){
enabledValues.push(currentValue.data('id'));
} else {
disabledValues.push(currentValue.data('id'));
}
});
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
action : 'SaveAjax',
mode : 'enableOrDisable',
enabled_values : enabledValues,
disabled_values : disabledValues,
picklistName : jQuery('[name="picklistName"]').val(),
rolesSelected : jQuery('#rolesList').val()
}
app.request.post({data: params}).then(function(error, data) {
if(data) {
app.helper.hideProgress();
app.helper.showSuccessNotification({message: app.vtranslate('JS_LIST_UPDATED_SUCCESSFULLY')});
}
});
});
},
regiserSelectRolesEvent : function(data) {
data.find('[name="rolesSelected[]"]').on('change',function(e) {
var rolesSelectElement = jQuery(e.currentTarget);
var selectedValue = rolesSelectElement.val();
if(jQuery.inArray('all', selectedValue) != -1){
rolesSelectElement.select2("val", "");
rolesSelectElement.select2("val","all");
rolesSelectElement.select2("close");
rolesSelectElement.find('option').not(':first').attr('disabled','disabled');
if(jQuery('.allRoleSelected').length < 1)
data.find(jQuery('.modal-body')).append('<div class="alert alert-info textAlignCenter allRoleSelected">'+app.vtranslate('JS_ALL_ROLES_SELECTED')+'</div>')
} else {
rolesSelectElement.find('option').removeAttr('disabled','disabled');
data.find('.modal-body').find('.alert').remove();
}
});
},
registerRenameItemEvent : function() {
var thisInstance = this;
var container = this.getContainer();
var popupShown = false;
container.on('click', '.renameItem', function(e){
if(popupShown) {
return false;
}
var selectedListItem = jQuery(e.currentTarget);
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
source_module : jQuery('#pickListModules').val(),
view : 'IndexAjax',
mode : 'showEditView',
pickListFieldId : jQuery('#modulePickList').val(),
fieldValue : selectedListItem.closest('tr').data('key'),
fieldValueId : selectedListItem.closest('tr').data('key-id')
}
popupShown = true;
app.request.post({data: params}).then(function(error, data){
app.helper.showModal(data, {cb: function(){
popupShown = false;
}});
var form = jQuery('#renameItemForm');
Settings_Picklist_Js.registerColorPickerEvent(form);
thisInstance.registerScrollForNonEditablePicklistValues(form);
Settings_Picklist_Js.registerRenameItemSaveEvent();
});
});
},
/**
* Function to register the scroll bar for modals in picklist editor
*/
registerScrollForModal : function(form) {
var formHeight = form.find('.modal-body').height();
var contentHeight = parseInt(formHeight);
if (contentHeight > 300) {
app.helper.showVerticalScroll(form.find('.modal-body'), {
'setHeight': '300px'
});
}
},
/**
* Function to register the scroll bar for NonEditable Picklist Values
*/
registerScrollForNonEditablePicklistValues : function(container) {
app.helper.showVerticalScroll(jQuery(container).find('.nonEditablePicklistValues'),{ setHeight: '70px'});
},
registerDeleteItemEvent : function() {
var thisInstance = this;
var container = this.getContainer();
deletePopupShown = false;
container.on('click', '.deleteItem', function(e){
if(deletePopupShown) {
return false;
}
var element = jQuery(e.currentTarget);
var selectedListItemsArray = new Array();
var pickListValuesTable = jQuery('#pickListValuesTable');
selectedListItemsArray.push(jQuery(element).closest('tr').data('key'));
var pickListValues = jQuery('.pickListValue',pickListValuesTable);
if(pickListValues.length == 1) {
app.helper.showErrorNotification({message: app.vtranslate('JS_YOU_CANNOT_DELETE_ALL_THE_VALUES')})
return;
}
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
source_module : jQuery('#pickListModules').val(),
view : 'IndexAjax',
mode : 'showDeleteView',
pickListFieldId : jQuery('#modulePickList').val(),
fieldValue : JSON.stringify(selectedListItemsArray)
}
deletePopupShown = true;
thisInstance.showDeleteItemForm(params);
});
},
registerDeleteOptionEvent : function() {
function result(value) {
var replaceValueElement = jQuery('#replaceValue');
if(typeof value.added != 'undefined'){
var id = value.added.id;
jQuery('#replaceValue option[value="'+id+'"]').remove();
replaceValueElement.trigger('change');
} else {
var id = value.removed.id;
var text = value.removed.text;
replaceValueElement.append('<option value="'+id+'">'+text+'</option>');
replaceValueElement.trigger('change');
}
}
jQuery('[name="delete_value[]"]').on("change", function(e) {
result({
val:e.val,
added:e.added,
removed:e.removed
});
})
},
duplicateItemNameCheck : function(container) {
var pickListValues = JSON.parse(jQuery('[name="pickListValues"]',container).val());
var pickListValuesArr = new Array();
jQuery.each(pickListValues,function(i,e){
var decodedValue = app.helper.getDecodedValue(e);
pickListValuesArr.push(jQuery.trim(decodedValue.toLowerCase()));
});
var mode = jQuery('[name="mode"]', container).val();
var newValues;
if(mode == 'edit') {
newValues = jQuery.trim(jQuery('[name="renamedValue"]', container).val());
} else {
newValues = jQuery.trim(jQuery('[name="newValue"]', container).val());
}
var newValuesArray = newValues.split(',');
var duplicateFlag = true;
for (i = 0; i < newValuesArray.length; i++) {
var newValue = newValuesArray[i];
var lowerCasedNewValue = newValue.toLowerCase();
//Checking the new picklist value is already exists
if (jQuery.inArray(lowerCasedNewValue, pickListValuesArr) != -1) {
//while renaming the picklist values
if (mode == 'edit') {
var oldValue = jQuery.trim(jQuery('[name="oldValue"]', container).val());
var lowerCasedOldValue = oldValue.toLowerCase();
if (lowerCasedOldValue == lowerCasedNewValue) {
return duplicateFlag = false;
}
}
//while adding or renaming with different existing value
return duplicateFlag = true;
} else {
duplicateFlag = false;
}
}
return duplicateFlag;
},
registerChangeRoleEvent : function() {
jQuery('#rolesList').on('change',function(e) {
app.helper.showProgress();
var rolesList = jQuery(e.currentTarget);
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
view : 'IndexAjax',
mode : 'getPickListValueByRole',
rolesSelected : rolesList.val(),
pickListFieldId : jQuery('#modulePickList').val()
}
app.request.post({data: params}).then(function(error, data) {
jQuery('#pickListValeByRoleContainer').html(data);
vtUtils.showSelect2ElementView(jQuery('#role2picklist'));
Settings_Picklist_Js.registerenableOrDisableListSaveEvent();
app.helper.hideProgress();
});
})
},
registerAddItemSaveEvent : function(container) {
var thisInstance = this;
var form = container.find('[name="addItemForm"]');
var params = {
submitHandler: function(form) {
var specialChars = /[<\>\"\,\[\]\{\}]/;
var newValueEle = jQuery('[name="newValue"]', container);
var newValues = newValueEle.val();
var newValueArray = newValues.split(',');
var showValidationParams = {
position: {
my: 'bottom left',
at: 'top left',
container : jQuery(form)
}};
for (var i = 0; i < newValueArray.length; i++) {
if (newValueArray[i].trim() == '') {
var errorMessage = app.vtranslate('JS_REQUIRED_FIELD');
vtUtils.showValidationMessage(newValueEle, errorMessage, showValidationParams);
return false;
}
if (specialChars.test(newValueArray[i])) {
var errorMessage = app.vtranslate('JS_SPECIAL_CHARACTERS') + " < > \" , [ ] { } " + app.vtranslate('JS_NOT_ALLOWED');
vtUtils.showValidationMessage(newValueEle, errorMessage, showValidationParams);
return false;
}
}
if(Settings_Picklist_Js.duplicateItemNameCheck(container)) {
var errorMessage = app.vtranslate('JS_DUPLICATE_ENTRIES_FOUND_FOR_THE_VALUE');
vtUtils.showValidationMessage(newValueEle, errorMessage, showValidationParams);
return false;
}
vtUtils.hideValidationMessage(newValueEle);
var params = jQuery(form).serializeFormData();
var newValue = params.newValue;
params.newValue = jQuery.trim(newValue);
app.helper.showProgress();
app.request.post({data: params}).then(function(error, data) {
var newValues = jQuery('[name="newValue"]',container).val();
var newValuesArray = newValues.split(',');
for (i = 0; i < newValuesArray.length; i++) {
newValue = jQuery.trim(newValuesArray[i]);
var newElement = thisInstance.getPickListTemplate(newValue, params.selectedColor);
var newPickListValueRow = jQuery(newElement).appendTo(jQuery('#pickListValuesTable').find('tbody'));
newPickListValueRow.attr('data-key', newValue);
newPickListValueRow.attr('data-key-id', data['id' + i]);
}
app.helper.hideModal();
app.helper.hideProgress();
app.helper.showSuccessNotification({message: app.vtranslate('JS_ITEM_ADDED_SUCCESSFULLY')});
//update the new item in the hidden picklist values array
var pickListValuesEle = jQuery('[name="pickListValues"]');
var pickListValuesArray = JSON.parse(pickListValuesEle.val());
for (i = 0; i < newValuesArray.length; i++) {
pickListValuesArray[data['id' + i]] = newValuesArray[i];
}
pickListValuesEle.val(JSON.stringify(pickListValuesArray));
});
}
};
form.vtValidate(params);
},
registerRenameItemSaveEvent : function() {
var thisInstance = this;
var form = jQuery('#renameItemForm');
var params = {
submitHandler: function(form) {
var form = jQuery(form);
var specialChars = /[<\>\"\,\[\]\{\}]/;
var newValueEle = jQuery('[name="renamedValue"]',form);
var newValue = jQuery.trim(newValueEle.val());
if(Settings_Picklist_Js.duplicateItemNameCheck(form)) {
var errorMessage = app.vtranslate('JS_DUPLICATE_ENTRIES_FOUND_FOR_THE_VALUE');
var params = {
position: {
'my' : 'bottom left',
'at' : 'top left',
'container' : form
}};
vtUtils.showValidationMessage(newValueEle, errorMessage, params);
return false;
}
var oldElem = jQuery('[name="oldValue"]',form);
var oldValue = oldElem.val();
var id = oldElem.find('option[value="'+oldValue+'"]').data('id');
var params = form.serializeFormData();
if (specialChars.test(newValue)) {
var showValidationParams = {
position: {
my: 'bottom left',
at: 'top left',
container : form
}};
var errorMessage = app.vtranslate('JS_SPECIAL_CHARACTERS') + " < > \" , [ ] { } " + app.vtranslate('JS_NOT_ALLOWED');
vtUtils.showValidationMessage(newValueEle, errorMessage, showValidationParams);
return false;
}
params.newValue = newValue;
params.id = id;
var rolesListArray = Settings_Picklist_Js.getRolesList();
if(Object.keys(rolesListArray).length > 0){
params['rolesList'] = rolesListArray;
}
app.request.post({data: params}).then(function(error, data) {
if(!error){
app.helper.hideModal();
var encodedOldValue = oldValue.replace(/"/g, '\\"');
var renamedElement = thisInstance.getPickListTemplate(newValue, params.selectedColor);
var renamedElement = jQuery(renamedElement).attr('data-key',newValue).attr('data-key-id',id);
var oldElement = jQuery('[data-key="'+encodedOldValue+'"]');
if(oldElement.data('deletable') == false) {
renamedElement.data('deletable', false);
renamedElement.find('.deleteItem').remove();
}
oldElement.replaceWith(renamedElement)
app.helper.showSuccessNotification({message: app.vtranslate('JS_STATUS_UPDATE_SUCCESS_MSG')});
//update the new item in the hidden picklist values array
var pickListValuesEle = jQuery('[name="pickListValues"]');
var pickListValuesArray = JSON.parse(pickListValuesEle.val());
pickListValuesArray[id] = newValueEle.val();
pickListValuesEle.val(JSON.stringify(pickListValuesArray));
}
});
}
};
form.vtValidate(params);
form.on('change', '[name="oldValue"]', function(e) {
var element = jQuery(e.currentTarget);
var value = element.val();
var renameElement = jQuery('[name=renamedValue]');
renameElement.val(value);
var id = element.find('option[value="'+value+'"]').data('id');
if(element.find('option[value="'+value+'"]').data('edit-disabled')) {
renameElement.attr('disabled', 'disabled');
} else {
renameElement.removeAttr('disabled');
}
var picklistColorMap = JSON.parse(form.find('[name="picklistColorMap"]').val());
var color = picklistColorMap[id];
var colorPickerDiv = form.find('.colorPicker');
var selectedColorElement = form.find('[name=selectedColor]');
if(!color) {
color = app.helper.getRandomColor();
selectedColorElement.val(color);
}
colorPickerDiv.ColorPickerSetColor(color);
});
},
showDeleteItemForm : function(params) {
var thisInstance = this;
app.request.post({data: params}).then(function(error, data){
app.helper.showModal(data, {cb: callBackFunction});
});
var callBackFunction = function(data) {
deletePopupShown = false;
var form = data.find('#deleteItemForm');
thisInstance.registerScrollForModal(form);
thisInstance.registerScrollForNonEditablePicklistValues(form);
var maximumSelectionSize = jQuery('#pickListValuesCount').val()-1;
vtUtils.showSelect2ElementView(jQuery('[name="delete_value[]"]'), {maximumSelectionSize: maximumSelectionSize, dropdownCss : {'z-index' : 100001}});
jQuery('[name="delete_value[]"]').on('change', function() {
thisInstance.registerScrollForModal(form);
});
Settings_Picklist_Js.registerDeleteOptionEvent();
var params = {
submitHandler: function(form) {
var deleteValues = jQuery('[name="delete_value[]"]').val();
var params = jQuery(form).serializeFormData();
app.request.post({data: params}).then(function(error, data) {
if(data){
app.helper.hideModal();
//delete the item in the hidden picklist values array
var pickListValuesEle = jQuery('[name="pickListValues"]');
var pickListValuesArray = JSON.parse(pickListValuesEle.val());
jQuery.each(deleteValues,function(i,e){
var encodedOldValue = e.replace(/"/g, '\\"');
jQuery('[data-key-id="'+encodedOldValue+'"]').remove();
delete pickListValuesArray[e];
});
pickListValuesEle.val(JSON.stringify(pickListValuesArray));
app.helper.showSuccessNotification({message: app.vtranslate('JS_ITEMS_DELETED_SUCCESSFULLY')});
}
});
}
};
form.vtValidate(params);
}
},
registerPickListValuesSortableEvent : function() {
var thisInstance = this;
var tbody = jQuery( "tbody",jQuery('#pickListValuesTable'));
tbody.sortable({
'helper' : function(e,ui){
//while dragging helper elements td element will take width as contents width
//so we are explicity saying that it has to be same width so that element will not
//look like distrubed
ui.children().each(function(index,element){
element = jQuery(element);
element.width(element.width());
})
return ui;
},
'containment' : tbody,
'revert' : true,
update: function(e, ui ) {
thisInstance.saveSequence();
}
});
},
saveSequence : function() {
app.helper.showProgress();
var pickListValuesSequenceArray = {}
var pickListValues = jQuery('#pickListValuesTable').find('.pickListValue');
jQuery.each(pickListValues,function(i,element) {
pickListValuesSequenceArray[jQuery(element).data('key-id')] = ++i;
});
var params = {
module : app.getModuleName(),
parent : app.getParentModuleName(),
action : 'SaveAjax',
mode : 'saveOrder',
picklistValues : pickListValuesSequenceArray,
picklistName : jQuery('[name="picklistName"]').val()
}
var rolesListArray = Settings_Picklist_Js.getRolesList();
if(Object.keys(rolesListArray).length > 0){
params['rolesList'] = rolesListArray;
}
app.request.post({data: params}).then(function(error, data) {
app.helper.hideProgress();
if(data) {
app.helper.showSuccessNotification({message: app.vtranslate('JS_SEQUENCE_UPDATED_SUCCESSFULLY')});
}
});
},
getRolesList : function(){
var rolesListArray = {};
var rolesList = jQuery('#rolesList option');
if(rolesList){
jQuery.each(rolesList, function(i,element){
rolesListArray[i] = element.getAttribute('value');
});
}
return rolesListArray;
},
registerAssingValueToRoleTabClickEvent : function() {
jQuery('#assignedToRoleTab').on('click',function(e) {
jQuery('#rolesList').trigger('change');
});
},
getPickListTemplate : function(value, color) {
var dragImagePath = jQuery('#dragImagePath').val();
var contrast = app.helper.getColorContrast(color);
var textColor = (contrast === 'dark') ? 'white' : 'black';
var actions = jQuery('.picklistActionsTemplate').html();
var actionsTemplate = '<span class="pull-right picklistActions" style="margin-top:0px;">' + actions + '</span>';
var template = '<tr class="pickListValue cursorPointer">'+
'<td class="textOverflowEllipsis fieldPropertyContainer">'+
'<span class="pull-left">' +
'<img class="alignMiddle" src="' + dragImagePath + '" /> ' +
'<span class="picklist-color" style="background-color: '+ color + ';color: '+ textColor +';">' + value + '</span>' +
'</span>' +
actionsTemplate +
'</td>'+
'</tr>';
return template;
},
registerColorPickerEvent : function(container) {
var colorPickerDiv = container.find('.colorPicker');
var selectedColorElement = container.find('[name=selectedColor]');
app.helper.initializeColorPicker(colorPickerDiv, {}, function(hsb, hex, rgb) {
var selectedColorCode = '#'+hex;
selectedColorElement.val(selectedColorCode);
});
var color = selectedColorElement.val();
if(!color) {
color = '#ffffff';
selectedColorElement.val(color);
}
colorPickerDiv.ColorPickerSetColor(color);
},
registerItemActions : function() {
Settings_Picklist_Js.registerAddItemEvent();
Settings_Picklist_Js.registerChangeRoleEvent();
Settings_Picklist_Js.registerAssingValueToRoleTabClickEvent();
Settings_Picklist_Js.registerPickListValuesSortableEvent();
},
registerEvents : function() {
Settings_Picklist_Js.registerModuleChangeEvent();
Settings_Picklist_Js.registerModulePickListChangeEvent();
Settings_Picklist_Js.registerItemActions();
Settings_Picklist_Js.registerRenameItemEvent();
Settings_Picklist_Js.registerDeleteItemEvent();
var instance = new Settings_Vtiger_Index_Js();
instance.registerBasicSettingsEvents();
}
}
jQuery(document).ready(function(){
Settings_Picklist_Js.registerEvents();
});