晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/v7/modules/Users/resources/ |
Upload File : |
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.1
* ("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.
*************************************************************************************/
Vtiger_Detail_Js("Users_Detail_Js",{
triggerChangePassword : function (url, module){
app.request.get({'url' :url}).then(
function(err, data) {
if(err === null) {
app.helper.showModal(data);
var form = jQuery('#changePassword');
form.on('submit',function(e){
e.preventDefault();
});
var params = {
submitHandler: function(form) {
form = jQuery(form);
var new_password = form.find('[name="new_password"]');
var confirm_password = form.find('[name="confirm_password"]');
var old_password = form.find('[name="old_password"]');
var userid = form.find('[name="userid"]').val();
if(new_password.val() === confirm_password.val()){
var params = {
'data' : {
'module': app.getModuleName(),
'action' : "SaveAjax",
'mode' : 'savePassword',
'old_password' : old_password.val(),
'new_password' : new_password.val(),
'userid' : userid
}
};
app.request.post(params).then(
function(err, data) {
if(err == null){
app.helper.hideModal();
var successMessage = app.vtranslate(data.message);
app.helper.showSuccessNotification({"message":successMessage});
}else{
app.helper.showErrorNotification({"message":err});
return false;
}
}
);
} else {
var errorMessage = app.vtranslate('JS_PASSWORD_MISMATCH_ERROR');
app.helper.showErrorNotification({"message":errorMessage});
return false;
}
}
};
form.vtValidate(params);
}else {
app.helper.showErrorNotification({'message': err.message});
}
}
);
},
triggerChangeAccessKey: function (url) {
var title = app.vtranslate('JS_NEW_ACCESS_KEY_REQUESTED');
var message = app.vtranslate('JS_CHANGE_ACCESS_KEY_CONFIRMATION');
app.helper.showConfirmationBox({'title': title,'message': message}).then(function (data) {
app.helper.showProgress(app.vtranslate('JS_PLEASE_WAIT'));
app.request.post({'url': url}).then(function (err, data) {
app.helper.hideProgress();
if (err === null) {
app.helper.showSuccessNotification({'message': data.message});
var accessKeyEle = jQuery('#Users_detailView_fieldValue_accesskey');
if (accessKeyEle.length) {
accessKeyEle.find('.value').html(data.accessKey);
}
} else {
app.helper.showErrorNotification({'message': err.message});
}
});
});
},
/*
* function to trigger delete record action
* @params: delete record url.
*/
triggerDeleteUser : function(deleteUserUrl) {
var message = app.vtranslate('LBL_DELETE_USER_CONFIRMATION');
app.helper.showConfirmationBox({'message' : message}).then(function(data) {
app.request.post({'url':deleteUserUrl}).then(
function(err, data){
if(err === null){
app.helper.showModal(data);
var form = jQuery("#deleteUser");
form.on('submit', function(e){
e.preventDefault();
Users_Detail_Js.deleteUser(form);
});
}else {
app.helper.showErrorNotification({'message': err.message});
}
});
}
);
},
deleteUser: function (form){
var userid = form.find('[name="userid"]').val();
var transferUserId = form.find('[name="tranfer_owner_id"]').val();
app.helper.showProgress();
var params = {
'data' : {
'module': app.getModuleName(),
'action' : "DeleteAjax",
'transfer_user_id' : transferUserId,
'userid' : userid,
'mode' : 'deleteUserFromDetailView',
'permanent' : jQuery('[name="deleteUserPermanent"]:checked', form).val()
}
};
app.request.post(params).then(
function(err, data) {
if(err === null){
app.helper.hideProgress();
app.helper.showSuccessNotification({'message': data.message});
app.helper.hideModal();
var url = data.listViewUrl;
window.location.href=url;
}else {
app.helper.showErrorNotification({'message': err.message});
}
}
);
},
triggerChangeUsername: function (url) {
app.helper.showProgress(app.vtranslate('JS_PLEASE_WAIT'));
app.request.post({'url' : url}).then(function (err, data) {
app.helper.hideProgress();
if(err === null) {
var callback = function (data) {
var form = data.find('#changeUsername');
var params = {
submitHandler : function(form) {
var form = jQuery(form);
var new_password = form.find('[name="new_password"]');
var confirm_password = form.find('[name="confirm_password"]');
if (new_password.val() !== confirm_password.val()) {
var params = {
position: {
my: 'bottom left',
at: 'top left',
container : form
},
};
vtUtils.showValidationMessage(new_password, app.vtranslate('JS_REENTER_PASSWORDS'), params);
vtUtils.showValidationMessage(confirm_password, app.vtranslate('JS_REENTER_PASSWORDS'), params);
return false;
}else {
vtUtils.hideValidationMessage(new_password);
vtUtils.hideValidationMessage(confirm_password);
}
Users_Detail_Js.changeUserName(form);
}
};
form.vtValidate(params);
};
var params = {
cb : callback
};
app.helper.showModal(data, params);
}
});
},
changeUserName: function (form) {
var newUsername = form.find('[name="new_username"]');
var new_password = form.find('[name="new_password"]');
var confirm_password = form.find('[name="confirm_password"]');
var userid = form.find('[name="userid"]');
app.helper.showProgress(app.vtranslate('JS_PLEASE_WAIT'));
var params = {
module: app.getModuleName(),
action: 'SaveAjax',
mode: 'changeUsername',
newUsername: newUsername.val(),
newPassword: new_password.val(),
confirmPassword: confirm_password.val(),
userid: userid.val()
};
vtUtils.hideValidationMessage(newUsername);
app.request.post({'data' : params}).then(function (err, data) {
app.helper.hideProgress();
if(err === null) {
app.helper.showSuccessNotification({'message' : app.vtranslate(data)});
app.helper.hideModal();
location.reload();
}else {
var params = {
position: {
my: 'bottom left',
at: 'top left',
container : form
},
};
vtUtils.showValidationMessage(newUsername, app.vtranslate(err.message), params);
return false;
}
});
},
},{
registerAjaxPreSaveEvent: function () {
var self = this;
app.event.on(Vtiger_Detail_Js.PreAjaxSaveEvent, function (e, params) {
self.validateDigitSeparators(e, params);
});
},
validateDigitSeparators: function (e, params) {
var fieldNamesToValidate = ['currency_decimal_separator', 'currency_grouping_separator'];
var fieldInfo = params.triggeredFieldInfo;
if (jQuery.inArray(fieldInfo.field, fieldNamesToValidate) === -1) {
return true;
}
var sourceField = fieldInfo.field;
var targetField = '';
if (sourceField === 'currency_decimal_separator') {
targetField = 'currency_grouping_separator';
} else if (sourceField === 'currency_grouping_separator') {
targetField = 'currency_decimal_separator';
}
var form = params.form;
var sourceFieldValue = fieldInfo.value;
var targetFieldValue = form.find('input[data-name="' + targetField + '"]').data('value');
//for decoding space( ) and single quote as they are coming as encoded values
sourceFieldValue = jQuery('<div/>').html(sourceFieldValue).text();
targetFieldValue = jQuery('<div/>').html(targetFieldValue).text();
if (targetFieldValue.length > 0 && (sourceFieldValue === targetFieldValue)) {
app.helper.showErrorNotification({message: app.vtranslate('JS_DECIMAL_SEPARATOR_AND_GROUPING_SEPARATOR_CANT_BE_SAME')});
e.preventDefault();
}
},
registerEvents: function () {
this._super();
this.registerAjaxPreSaveEvent();
}
});
// Actually, Users Module is in Settings. Controller in application.js will check for Settings_Users_Detail_Js
Users_Detail_Js("Settings_Users_Detail_Js");