晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/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.
************************************************************************************/
window.app = (function () {
// Protected Globals
var _controller = null;
// Copy meta to avoid runtime tampering.
var _module = _META.module;
var _view = _META.view;
var _parentModule = _META.parent;
var _app = _META.app;
function Request() {
this._requestPjax = function (params) {
var aDeferred = jQuery.Deferred();
if (typeof params.url === 'undefined') {
params.url = 'index.php';
}
if (typeof params.container === 'undefined') {
params.container = '#pjaxContainer';
params.defaultContainer = true;
}
var pjaxContainer = jQuery('#pjaxContainer');
//Clear contents existing before
if (params.container === '#pjaxContainer') {
pjaxContainer.html('');
}
jQuery(document).on('pjax:success', function (event, data, status, jqXHR) {
if (typeof data == 'object') {
if (!data['success'] && data['error']['message']) {
aDeferred.resolve(new VtError(data['error']));
return;
} else if (data['result']) {
data = data['result'];
}
}
if (params.defaultContainer) {
//remove the data in default container since it will be having duplicate data which will be problem espcially with id selector
pjaxContainer.html('');
}
aDeferred.resolve(null, data);
});
jQuery(document).on('pjax:error', function (event, jqXHR, textStatus, errorThrown) {
aDeferred.resolve(new VtError(errorThrown));
});
jQuery.pjax(params);
return aDeferred.promise();
},
this._request = function (params) {
var aDeferred = jQuery.Deferred();
if (typeof params.url === 'undefined') {
params.url = 'index.php';
}
var ajaxParams = {
method: params.type,
url: params.url,
data: params.data,
success: function (response) {
if (typeof response == 'object') {
if (!response['success'] && response['error']['message']) {
aDeferred.resolve(new VtError(response['error']));
return;
} else if (response['result']) {
response = response['result'];
}
}
aDeferred.resolve(null, response);
},
error: function (xhr, ajaxOptions, err) {
aDeferred.resolve(new VtError(err));
}
};
if (typeof params.contentType != 'undefined') {
ajaxParams['contentType'] = params.contentType;
}
if (typeof params.processData != 'undefined') {
ajaxParams['processData'] = params.processData;
}
jQuery.ajax(ajaxParams);
return aDeferred.promise();
},
this.get = function (params) {
var aDeferred = jQuery.Deferred();
params.type = 'GET';
this._request(params).then(function (err, data) {
return aDeferred.resolve(err, data);
});
return aDeferred.promise();
},
this.post = function (params) {
var aDeferred = jQuery.Deferred();
params.type = 'POST';
//caller has send only url so we need to break it to data
if (typeof params.data == 'undefined') {
params.data = app.convertUrlToDataParams(params.url);
delete params.url;
}
this._request(params).then(function (err, data) {
return aDeferred.resolve(err, data);
});
return aDeferred.promise();
},
this.pjax = function (params) {
var aDeferred = jQuery.Deferred();
params.type = 'GET';
this._requestPjax(params).then(function (err, data) {
return aDeferred.resolve(err, data);
});
return aDeferred.promise();
}
}
function Event() {
this.el = jQuery({});
this.trigger = function (/* eventName, arg1, arg2... */) {
var args = Array.prototype.slice.call(arguments, 1);
this.el.trigger(arguments[0], args);
}
this.on = function (/* eventName, fn */) {
this.el.on.apply(this.el, arguments);
}
this.one = function (/* eventName, fn */) {
this.el.one.apply(this.el, arguments);
}
this.off = function (/* eventName, fn */) {
this.el.off.apply(this.el, arguments);
}
}
return {
storage: {
NSKey: function (key) {
return 'vtiger6.'+key; // retain the existing cached data
},
get: function (key, defvalue) {
key = this.NSKey(key);
return jQuery.jStorage.get(key, defvalue);
},
set: function (key, value) {
key = this.NSKey(key);
jQuery.jStorage.set(key, value);
},
delete: function (key) {
key = this.NSKey(key);
jQuery.jStorage.deleteKey(key);
},
flush: function () {
jQuery.jStorage.flush();
}
},
request: new Request(),
event: new Event(),
helper: new Vtiger_Helper_Js(),
/**
* Function to decode the encoded htmlentities values
*/
getDecodedValue: function (value) {
return jQuery('<div></div>').html(value).text();
},
/**
* To Convert give URL to POST params
* @param {type} url
* @returns {Array}
*/
convertUrlToDataParams: function (url) {
var params = {};
if (typeof url !== 'undefined' && url.indexOf('?') !== -1) {
var urlSplit = url.split('?');
url = urlSplit[1];
}
var queryParameters = url.split('&');
for (var index = 0; index < queryParameters.length; index++) {
var queryParam = queryParameters[index];
var queryParamComponents = queryParam.split('=');
params[queryParamComponents[0]] = queryParamComponents[1];
}
return params;
},
module: function () {
return _module;
},
view: function () {
return _view;
},
/**
* Function returns the current Module name
*/
getModuleName: function () {
return _module;
},
getExtensionModuleName: function () {
var extensionModuleName = '';
if (typeof _EXTENSIONMETA !== 'undefined' && _EXTENSIONMETA.hasOwnProperty('module')) {
extensionModuleName = _EXTENSIONMETA.module;
}
return extensionModuleName;
},
getAppName: function () {
return _app;
},
/**
* Function returns the application name
* @returns {META.parent}
*/
getParentModuleName: function () {
return _parentModule;
},
getDecimalSeparator: function () {
return jQuery('body').data('user-decimalseparator');
},
getGroupingSeparator: function () {
return jQuery('body').data('user-groupingseparator');
},
getNumberOfDecimals: function () {
return jQuery('body').data('user-numberofdecimals');
},
getDateFormat: function () {
return jQuery('body').data('user-dateformat');
},
getHourFormat: function () {
return jQuery('body').data('user-hourformat');
},
getActivityReminderInterval: function () {
return jQuery('body').data('userCalendarReminderInterval');
},
getUserId: function () {
if (_USERMETA)
return _USERMETA.id;
},
getMenuStatus: function () {
if (_USERMETA)
return _USERMETA.menustatus;
},
getRecordId: function () {
var record = jQuery('#recordId')
if (record.length) {
return record.val();
}
return false;
},
getModuleSpecificViewClass: function (view, module, parentModule) {
if (typeof module == 'undefined') {
module = _module;
}
if (typeof parentModule == 'undefined') {
parentModule = this.getParentModuleName();
}
if (view == '') {
view = 'Index';
}
var controllerClass = null;
var handlerClass = module+'_'+view+'_Js';
if (parentModule == 'Settings') {
handlerClass = parentModule+'_'+module+'_'+view+'_Js';
if (typeof window[handlerClass] == 'undefined') {
handlerClass = parentModule+'_Vtiger_'+view+'_Js';
}
}
if (typeof window[handlerClass] != 'undefined') {
controllerClass = handlerClass;
} else {
handlerClass = 'Vtiger_'+view+'_Js';
if (typeof window[handlerClass] != 'undefined') {
controllerClass = handlerClass;
}
}
return controllerClass;
},
controller: function () {
if (_controller == null) {
var controllerClass = this.getModuleSpecificViewClass(_view);
if (controllerClass) {
_controller = new window[controllerClass]();
_controller.intializeComponents();
_controller.registerEvents();
}
}
return _controller;
},
htmlEncode: function (value) {
if (value) {
return jQuery('<div />').text(value).html();
} else {
return '';
}
},
htmlDecode: function (value) {
if (value) {
return $('<div />').html(value).text();
} else {
return '';
}
},
changeURL : function(url){
if (typeof history.pushState !== "undefined") {
history.pushState({}, "", url);
} else {
console.log("Browser does not support HTML5.");
}
},
/**
* Function returns translated string
*/
languageString: [],
vtranslate: function (key) {
//convert arguments in to proper array
var params = [].slice.apply(arguments);
params.shift();
function __sprintf(translatedString, params) {
if (params.length > 0) {
var replaceRegex = new RegExp('(%s)', 'g');
var paramsPointer = 0;
translatedString = translatedString.replace(replaceRegex, function () {
var string = params[paramsPointer];
paramsPointer++;
return string;
});
}
return translatedString;
}
var translatedString = key;
if (app.languageString[key] !== undefined) {
translatedString = app.languageString[key];
} else {
var strings = jQuery('#js_strings').text();
if (strings != '') {
app.languageString = JSON.parse(strings);
if (key in app.languageString) {
translatedString = app.languageString[key];
}
}
}
if (translatedString !== null) {
return __sprintf(translatedString, params);
}
return key;
},
/**
* Function will return the current users layout+skin path
* @param <string> img - image name
* @return <string>
*/
vimage_path: function (img) {
return jQuery('body').data('skinpath')+'/images/'+img;
},
/**
* Function to get the select2 element from the raw select element
* @params: select element
* @return : select2Element - corresponding select2 element
*/
getSelect2ElementFromSelect: function (selectElement) {
var selectId = selectElement.attr('id');
//since select2 will add s2id_ to the id of select element
var select2EleId = 's2id_'+selectId;
return jQuery('#'+select2EleId);
},
getUserLanguage: function () {
return jQuery('body').data('language');
},
convertTojQueryDatePickerFormat: function (dateFormat) {
var i = 0;
var splitDateFormat = dateFormat.split('-');
/**PVTPATCHER-CCCED22A3E617E1A25FF7EAEAC32A21D-START-dateformat**/
/** Don't remove the Start and Finish Markup! Modified: 2020-07-14 11:37:04 **/
var dateFormatSeparator = '-';
if (dateFormat.indexOf('.') != -1)
dateFormatSeparator = '.';
else if (dateFormat.indexOf('/') != -1)
dateFormatSeparator = '/';
var splitDateFormat = dateFormat.split(dateFormatSeparator);
/**PVTPATCHER-CCCED22A3E617E1A25FF7EAEAC32A21D-FINISH**/
for (var i in splitDateFormat) {
var sectionDate = splitDateFormat[i];
var sectionCount = sectionDate.length;
if (sectionCount == 4) {
var strippedString = sectionDate.substring(0, 2);
splitDateFormat[i] = strippedString;
}
}
var joinedDateFormat = splitDateFormat.join('-');
/**PVTPATCHER-CFE7C1789E54B61957FB3D87DB12D3C1-START-dateformat**/
/** Don't remove the Start and Finish Markup! Modified: 2020-07-14 11:37:04 **/
var joinedDateFormat = splitDateFormat.join(dateFormatSeparator);
/**PVTPATCHER-CFE7C1789E54B61957FB3D87DB12D3C1-FINISH**/
return joinedDateFormat;
},
getDateInVtigerFormat: function (dateFormat, dateObject) {
var finalFormat = app.convertTojQueryDatePickerFormat(dateFormat);
var date = jQuery.datepicker.formatDate(finalFormat, dateObject);
return date;
},
getUserCurrencySymbol: function () {
return _USERMETA.currency;
},
getUserCurrencySymbolPlacement: function () {
return _USERMETA.currencySymbolPlacement;
},
appendUserCurrencySymbol: function (value) {
var userCurrencySymbol = app.getUserCurrencySymbol();
var userCurrencySymbolPlacement = app.getUserCurrencySymbolPlacement();
var appendedValue = value;
if (userCurrencySymbolPlacement === '1.0$') {
appendedValue = value+userCurrencySymbol;
} else {
appendedValue = userCurrencySymbol+value;
}
return appendedValue;
},
convertCurrencyToUserFormat: function (value, appendCurrencySymbol) {
var displayValue;
var isNegative = false;
value = value.toString();
if (parseFloat(value) < 0) {
isNegative = true;
value = value.replace('-', '');
}
var groupingPattern = _USERMETA.currencyGroupingPattern;
var numberOfDecimals = app.getNumberOfDecimals();
var decimalSeparator = app.getDecimalSeparator();
var groupingSeparator = app.getGroupingSeparator();
value = parseFloat(value).toFixed(parseInt(numberOfDecimals));
value = value.toString();
var valueParts = value.split('.');
var wholePart = valueParts[0];
var decimalPart = valueParts[1];
var truncateTrailingZeros = _USERMETA.truncateTrailingZeros;
var finalWholePart;
var ignoreDecimal = false;
if (truncateTrailingZeros == '1' && parseInt(decimalPart) === 0) {
ignoreDecimal = true;
}
if (groupingPattern == '123456789') {
finalWholePart = wholePart;
} else if (groupingPattern == '123456,789') {
if (wholePart.length > 3) {
var wholeFirstPart = wholePart.substr(0, (wholePart.length - 3));
}
var wholeLastPart = wholePart.substr(wholePart.length - 3);
if (wholeFirstPart) {
wholePart = wholeFirstPart+groupingSeparator+wholeLastPart;
}
finalWholePart = wholePart;
} else if (groupingPattern == '123,456,789') {
var wholeParts = wholePart.toString().split('').reverse().join('').match(/.{1,3}/g).reverse();
for (var i = 0; i < wholeParts.length; i++) {
wholeParts[i] = wholeParts[i].toString().split('').reverse().join('');
}
finalWholePart = wholeParts.join(groupingSeparator);
} else if (groupingPattern == '12,34,56,789') {
if (wholePart.length > 3) {
var wholeFirstPart = wholePart.substr(0, (wholePart.length - 3));
}
var wholeLastPart = wholePart.substr(wholePart.length - 3);
if (wholeFirstPart) {
wholeLastPart = groupingSeparator+wholeLastPart;
var wholeFirstParts = wholeFirstPart.toString().split('').reverse().join('').match(/.{1,2}/g).reverse();
for (var i = 0; i < wholeFirstParts.length; i++) {
wholeFirstParts[i] = wholeFirstParts[i].toString().split('').reverse().join('');
}
wholeFirstPart = wholeFirstParts.join(groupingSeparator);
finalWholePart = wholeFirstPart+wholeLastPart;
} else {
finalWholePart = wholeLastPart;
}
}
if (ignoreDecimal) {
displayValue = finalWholePart;
} else {
displayValue = finalWholePart+decimalSeparator+decimalPart;
}
if (isNegative) {
displayValue = '-'+displayValue;
}
if (appendCurrencySymbol) {
displayValue = app.appendUserCurrencySymbol(displayValue);
}
return displayValue;
}
}
})();
/* Turn-off jQuery Migrate warnings */
jQuery.migrateMute = true;
jQuery(function () {
vtUtils.applyFieldElementsView(jQuery('body'));
window.app.controller();
String.prototype.toCamelCase = function () {
var value = this.valueOf();
return value.charAt(0).toUpperCase()+value.slice(1).toLowerCase()
}
/* To push focus on CKEditor Popup when shown with Bootstrap modal */
/* ref https://stackoverflow.com/a/23667151 */
jQuery.fn.modal.Constructor.prototype.enforceFocus = function() {
modal_this = this
jQuery(document).on('focusin.modal', function (e) {
if (modal_this.$element[0] !== e.target && !modal_this.$element.has(e.target).length
&& !jQuery(e.target.parentNode).hasClass('cke_dialog_ui_input_select')
&& !jQuery(e.target.parentNode).hasClass('cke_dialog_ui_input_textarea')
&& !jQuery(e.target.parentNode).hasClass('cke_dialog_ui_input_text')) {
modal_this.$element.focus()
}
})};
});