Files
crm.clientright.ru/kcfinder/js/browser/misc.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

240 lines
7.8 KiB
JavaScript

<?php
/** This file is part of KCFinder project
*
* @desc Miscellaneous methods
* @package KCFinder
* @version 2.21
* @author Pavel Tzonkov <pavelc@users.sourceforge.net>
* @copyright 2010 KCFinder Project
* @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2
* @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2
* @link http://kcfinder.sunhater.com
*/?>
browser.showDialog = function(e) {
this.shadow();
if (e) {
var left = e.pageX - parseInt($('#dialog').outerWidth() / 2);
var top = e.pageY - parseInt($('#dialog').outerHeight() / 2);
if (left < 15) left = 15;
if (top < 15) top = 15;
if (($('#dialog').outerWidth() + left) > $(window).width() - 30)
left = $(window).width() - $('#dialog').outerWidth() - 15;
if (($('#dialog').outerHeight() + top) > $(window).height() - 30)
top = $(window).height() - $('#dialog').outerHeight() - 15;
$('#dialog').css('left', left + "px");
$('#dialog').css('top', top + "px");
} else {
$('#dialog').css('left', parseInt(($(window).width() - $('#dialog').outerWidth()) / 2) + 'px');
$('#dialog').css('top', parseInt(($(window).height() - $('#dialog').outerHeight()) / 2) + 'px');
$('#dialog').css('display', 'block');
}
};
browser.hideDialog = function() {
this.unshadow();
if ($('#clipboard').hasClass('selected'))
$('#clipboard').removeClass('selected');
$('#dialog').css('display', 'none');
$('div.folder > a > span.folder').removeClass('context');
$('#dialog').html('');
};
browser.shadow = function() {
$('#shadow').css('display', 'block');
};
browser.unshadow = function() {
$('#shadow').css('display', 'none');
};
browser.showMenu = function(e) {
var left = e.pageX;
var top = e.pageY;
if (($('#dialog').outerWidth() + left) > $(window).width())
left = $(window).width() - $('#dialog').outerWidth();
if (($('#dialog').outerHeight() + top) > $(window).height())
top = $(window).height() - $('#dialog').outerHeight();
$('#dialog').css('left', left + "px");
$('#dialog').css('top', top + "px");
$('#dialog').css('display', 'none');
$('#dialog').fadeIn();
};
browser.fileNameDialog = function(e, post, inputName, inputValue, url, labels, callBack) {
var html = '<form method="post" action="javascript:;">' +
'<div class="box"><b>' + this.label(labels.title) + '</b><br />' +
'<input name="' + inputName + '" value="' + _.htmlValue(inputValue) + '" type="text" /><br />' +
'<div style="text-align:right">' +
'<input type="submit" value="' + _.htmlValue(this.label("OK")) + '" />' +
'<input type="button" value="' + _.htmlValue(this.label("Cancel")) + '" onclick="browser.hideDialog(); return false" />' +
'</div></div></form>';
$('#dialog').html(html);
$('#dialog').unbind();
$('#dialog').click(function() {
return false;
});
$('#dialog form').submit(function() {
var name = this.elements[0];
name.value = $.trim(name.value);
if (name.value == '') {
alert(browser.label(labels.errEmpty));
name.focus();
return;
} else if (/[\/\\]/g.test(name.value)) {
alert(browser.label(labels.errSlash))
name.focus();
return;
} else if (name.value.substr(0, 1) == ".") {
alert(browser.label(labels.errDot))
name.focus();
return;
}
eval('post.' + inputName + ' = name.value;');
$.ajax({
type: 'POST',
url: url,
data: post,
async: false,
success: function(xml) {
if (browser.errors(xml)) return;
if (callBack) callBack(xml);
browser.hideDialog();
},
error: function(request, error) {
alert(browser.label("Unknown error."));
}
});
return false;
});
browser.showDialog(e);
$('#dialog').css('display', 'block');
$('#dialog input[type="submit"]').click(function() {
return $('#dialog form').submit();
});
$('#dialog input[type="text"]').get(0).focus();
$('#dialog input[type="text"]').get(0).select();
$('#dialog input[type="text"]').keypress(function(e) {
if (e.keyCode == 27) browser.hideDialog();
});
};
browser.orderFiles = function(callBack, selected) {
var order = _.kuki.get('order');
var desc = (_.kuki.get('orderDesc') == 'on');
browser.files = browser.files.sort(function(a, b) {
var a1, b1, arr;
if (!order) order = 'name';
if (order == 'date') {
a1 = a.mtime;
b1 = b.mtime;
} else if (order == 'type') {
a1 = _.getFileExtension(a.name);
b1 = _.getFileExtension(b.name);
} else
eval('a1 = a.' + order + '.toLowerCase(); b1 = b.' + order + '.toLowerCase();');
if ((order == 'size') || (order == 'date')) {
a1 = parseInt(a1 ? a1 : '');
b1 = parseInt(b1 ? b1 : '');
if (a1 < b1) return desc ? 1 : -1;
if (a1 > b1) return desc ? -1 : 1;
}
if (a1 == b1) {
a1 = a.name.toLowerCase();
b1 = b.name.toLowerCase();
arr = [a1, b1];
arr = arr.sort();
return (arr[0] == a1) ? -1 : 1;
}
arr = [a1, b1];
arr = arr.sort();
if (arr[0] == a1) return desc ? 1 : -1;
return desc ? -1 : 1;
});
browser.showFiles(callBack, selected);
browser.initFiles();
};
browser.humanSize = function(size) {
if (size < 1024) {
size = size.toString() + ' B';
} else if (size < 1048576) {
size /= 1024;
size = parseInt(size).toString() + ' KB';
} else if (size < 1073741824) {
size /= 1048576;
size = parseInt(size).toString() + ' MB';
} else if (size < 1099511627776) {
size /= 1073741824;
size = parseInt(size).toString() + ' GB';
} else {
size /= 1099511627776;
size = parseInt(size).toString() + ' TB';
}
return size;
};
browser.baseGetData = function(act) {
var data = 'browse.php?type=' + encodeURIComponent(this.type) + '&lng=' + this.lang;
if (act)
data += "&act=" + act
return data;
};
browser.label = function(index, data) {
var label = this.labels[index] ? this.labels[index] : index;
if (data)
$.each(data, function(key, val) {
label = label.replace('{' + key + '}', val);
});
return label;
};
browser.errors = function(xml) {
if (!xml.getElementsByTagName('error').length)
return false;
var alertMsg = '';
$.each(xml.getElementsByTagName('error'), function(i, error) {
alertMsg += browser.xmlData(error.childNodes) + "\n";
});
alertMsg = alertMsg.substr(0, alertMsg.length - 1);
alert(alertMsg);
return true;
};
browser.post = function(url, data) {
var html = '<form id="postForm" method="POST" action="' + url + '">';
$.each(data, function(key, val) {
if ($.isArray(val))
$.each(val, function(i, aval) {
html += '<input type="hidden" name="' + _.htmlValue(key) + '[]" value="' + _.htmlValue(aval) + '" />';
});
else
html += '<input type="hidden" name="' + _.htmlValue(key) + '" value="' + _.htmlValue(val) + '" />';
});
html += '</form>';
$('#dialog').html(html);
$('#dialog').css('display', 'block');
$('#postForm').get(0).submit();
};
browser.fadeFiles = function() {
$('#files > div').css('opacity', '0.4');
$('#files > div').css('filter', 'alpha(opacity:40)');
};
browser.xmlData = function(nodes) {
var data = '';
$.each(nodes, function(i) {
data += nodes[i].nodeValue;
});
return data;
};