Files
crm.clientright.ru/layouts/vlayout/modules/Users/resources/Detail.js
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

268 lines
8.6 KiB
JavaScript

/*+***********************************************************************************
* 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.
*************************************************************************************/
Vtiger_Detail_Js("Users_Detail_Js",{
triggerChangePassword : function (CHPWActionUrl, module){
AppConnector.request(CHPWActionUrl).then(
function(data) {
if(data) {
var callback = function(data) {
var params = app.validationEngineOptions;
params.onValidationComplete = function(form, valid){
if(valid){
Users_Detail_Js.savePassword(form)
}
return false;
}
jQuery('#changePassword').validationEngine(app.validationEngineOptions);
}
app.showModalWindow(data, function(data){
if(typeof callback == 'function'){
callback(data);
}
});
}
}
);
},
savePassword : function(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 = {
'module': app.getModuleName(),
'action' : "SaveAjax",
'mode' : 'savePassword',
'old_password' : old_password.val(),
'new_password' : new_password.val(),
'userid' : userid
}
AppConnector.request(params).then(
function(data) {
if(data.success){
app.hideModalWindow();
Vtiger_Helper_Js.showPnotify(app.vtranslate(data.result.message));
}else{
old_password.validationEngine('showPrompt', app.vtranslate(data.error.message) , 'error','topLeft',true);
return false;
}
}
);
} else {
new_password.validationEngine('showPrompt', app.vtranslate('JS_REENTER_PASSWORDS') , 'error','topLeft',true);
return false;
}
},
/*
* function to trigger delete record action
* @params: delete record url.
*/
triggerDeleteUser : function(deleteUserUrl) {
var message = app.vtranslate('LBL_DELETE_USER_CONFIRMATION');
Vtiger_Helper_Js.showConfirmationBox({'message' : message}).then(function(data) {
AppConnector.request(deleteUserUrl).then(
function(data){
if(data){
var callback = function(data) {
var params = app.validationEngineOptions;
params.onValidationComplete = function(form, valid){
if(valid){
Users_Detail_Js.deleteUser(form)
}
return false;
}
jQuery('#deleteUser').validationEngine(app.validationEngineOptions);
}
app.showModalWindow(data, function(data){
if(typeof callback == 'function'){
callback(data);
}
});
}
});
},
function(error, err){
}
);
},
deleteUser: function (form){
var userid = form.find('[name="userid"]').val();
var transferUserId = form.find('[name="tranfer_owner_id"]').val();
var params = {
'module': app.getModuleName(),
'action' : "DeleteAjax",
'mode' : 'deleteUser',
'transfer_user_id' : transferUserId,
'userid' : userid
}
//SalesPlatform. ru begin fix delete user
var progressInstance = jQuery.progressIndicator({
'position' : 'html',
'blockInfo' : {
'enabled' : true
}
});
app.hideModalWindow();
//SalesPlatform.ru end
AppConnector.request(params).then(
function(data) {
//SalesPlatform. ru begin fix delete user
progressInstance.progressIndicator({
'mode' : 'hide'
});
//SalesPlatform.ru end
//SalesPlatform.ru begin fix delete user
if(data.success){
window.location.href = 'index.php?module='+app.getModuleName()+'&parent='+app.getParentModuleName() + '&view=List';
} else {
Vtiger_Helper_Js.showPnotify({
title : app.vtranslate('JS_ERROR'),
text : data.error.message,
type: 'error'
});
}
//if(data.success){
// app.hideModalWindow();
// Vtiger_Helper_Js.showPnotify(app.vtranslate(data.result.status.message));
// var url = data.result.listViewUrl;
// window.location.href=url;
//}
//SalesPlatform.ru end
}
);
},
triggerTransferOwner : function(transferOwnerUrl){
var message = app.vtranslate('LBL_TRANSFEROWNER_CONFIRMATION');
Vtiger_Helper_Js.showConfirmationBox({'message' : message}).then(function(data) {
AppConnector.request(transferOwnerUrl).then(
function(data){
if(data){
var callback = function(data) {
var params = app.validationEngineOptions;
params.onValidationComplete = function(form, valid){
if(valid){
Users_Detail_Js.transferOwner(form)
}
return false;
}
jQuery('#transferOwner').validationEngine(app.validationEngineOptions);
}
app.showModalWindow(data, function(data){
if(typeof callback == 'function'){
callback(data);
}
});
}
});
},
function(error, err){
}
);
},
transferOwner : function(form){
var userid = form.find('[name="userid"]').val();
var transferUserId = form.find('[name="tranfer_owner_id"]').val();
var params = {
'module': app.getModuleName(),
'action' : "SaveAjax",
'mode' : 'transferOwner',
'transfer_user_id' : transferUserId,
'userid' : userid
}
AppConnector.request(params).then(
function(data) {
if(data.success){
app.hideModalWindow();
Vtiger_Helper_Js.showPnotify(app.vtranslate(data.result.message));
var url = data.result.listViewUrl;
window.location.href=url;
}
}
);
},
triggerChangeAccessKey: function (url) {
var title = app.vtranslate('JS_NEW_ACCESS_KEY_REQUESTED');
var message = app.vtranslate('JS_CHANGE_ACCESS_KEY_CONFIRMATION');
Vtiger_Helper_Js.showConfirmationBox({'title': title,'message': message}).then(function (data) {
AppConnector.request(url).then(function(data) {
var params = {};
if(data['success']) {
data = data.result;
params['type'] = 'success';
message = app.vtranslate(data.message);
var accessKeyEle = jQuery('#Users_detailView_fieldValue_accesskey');
if (accessKeyEle.length) {
accessKeyEle.find('.value').html(data.accessKey);
}
} else {
message = app.vtranslate(data['error']['message']);
}
params['text'] = message;
Vtiger_Helper_Js.showPnotify(params);
});
});
},
},{
usersEditInstance : false,
updateStartHourElement : function(form) {
this.usersEditInstance.triggerHourFormatChangeEvent(form);
this.updateStartHourElementValue();
},
hourFormatUpdateEvent : function() {
var thisInstance = this;
this.getForm().on(this.fieldUpdatedEvent, '[name="hour_format"]', function(e, params){
thisInstance.updateStartHourElementValue();
});
},
updateStartHourElementValue : function() {
var form = this.getForm();
var startHourSelectElement = jQuery('select[name="start_hour"]',form);
var selectedElementValue = startHourSelectElement.find('option:selected').text();
startHourSelectElement.closest('td').find('span.value').text(selectedElementValue);
},
startHourUpdateEvent : function(form) {
var thisInstance = this;
form.on(this.fieldUpdatedEvent, '[name="start_hour"]', function(e, params){
thisInstance.updateStartHourElement(form);
});
},
registerEvents : function() {
this._super();
var form = this.getForm();
this.usersEditInstance = Vtiger_Edit_Js.getInstance();
this.updateStartHourElement(form);
this.hourFormatUpdateEvent();
this.startHourUpdateEvent(form);
//SalesPlatform.ru begin fix currency separators
Users_PreferenceEdit_Js.registerChangeEventForCurrencySeparator();
//SalesPlatform.end
}
});