Files
crm.clientright.ru/modules/Workflow2/js/Designer.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

81 lines
4.4 KiB
JavaScript

/**
* Created by PHPStorm
* User: Stefan Warnat <support@stefanwarnat.de>
* Date: 2013-09-17
* You must not use this file without permission.
*/
function addBlock(block, styleClass, duplicateId) {
if(duplicateId === undefined) duplicateId = 0;
jQuery.post("index.php?module=Workflow2&action=Workflow2Ajax&file=addblock", { workflow:workflow_id, duplicateId: duplicateId, blockid:block, left:350, top:80 }, function(response) {
if(response == false) {
return;
}
var styleClass = response.styleClass;
var element_id = response.element_id;
var topPos = response.topPos;
var leftPos = response.leftPos;
var styleExtra = response.styleExtra;
var typeText = response.typeText;
var blockText = (response["blockText"].length > 2 ?'<br><span style="font-weight:bold;">' + response["blockText"] + '</span>':'');
var html = '<div class="context-wfBlock wfBlock ' + styleClass + '" id="' + element_id+ '" style="display:none;top:' + topPos + 'px;left:' + leftPos + 'px;' + styleExtra + '"><span class="blockDescription">' + typeText + blockText + '</span><div data-color="" class="colorLayer">&nbsp;</div><img class="settingsIcon" src="modules/Workflow2/icons/settings.png"></div>';
jQuery("#workflowDesignContainer").append(html);
jQuery("#" + element_id).fadeIn("fast");
endpoints[element_id + "__input"] = jsPlumb.addEndpoint(element_id, inputPointOptions, jQuery.extend(getInput('modules/Workflow2/icons/input.png', "flowChart", false, true, false), {parameters:{ "in":element_id + '__input' }}));
for(var i = 0; i < response.personPoints.length; i++) {
var pointKey = response.personPoints[i][0];
endpoints[element_id + "__" + pointKey] = jsPlumb.addEndpoint(element_id, { anchor:topAnchor[response.personPoints.length][i], maxConnections:maxConnections, overlays:getOverlay(response.personPoints[i][1], 'personLabel') }, jQuery.extend(getInput('modules/Workflow2/icons/peopleInput.png', "person", false, true, true), {parameters:{ "in":element_id + '__' + pointKey }}));
_listeners(endpoints[element_id + "__" + pointKey]);
}
for(var i = 0; i < response.outputPoints.length; i++) {
var pointKey = response.outputPoints[i][0];
endpoints[element_id + "__" + pointKey] = jsPlumb.addEndpoint(element_id, { anchor:rightAnchor[response.outputPoints.length][i], maxConnections:maxConnections, overlays:getOverlay(response.outputPoints[i][1]) }, jQuery.extend(getInput('modules/Workflow2/icons/output.png', "flowChart", true, false, false), {parameters:{ out:element_id + '__' + pointKey }}));
_listeners(endpoints[element_id + "__" + pointKey]);
}
// jsPlumb.draggable(jsPlumb.getSelector("#" + element_id));
jQuery("#" + element_id).bind( "dblclick", onDblClickBlock);
jQuery("#" + element_id + ' .colorLayer').bind( "dblclick", function(event) { jQuery(event.target).parent().trigger("dblclick"); });
jQuery("#" + element_id).bind( "dragstop", onDragStopBlock);
}, 'json');
}
function addRecord(module_name) {
jQuery.post("index.php?module=Workflow2&action=Workflow2Ajax&file=addrecord", { workflow:workflow_id, module_name:module_name, left:400, top:110 }, function(response) {
var element_id = response.element_id;
var topPos = response.topPos;
var leftPos = response.leftPos;
var html = '<div class="wfBlock wfPerson" id="' + element_id + '" style="top:' + topPos + 'px;left:' + leftPos + 'px;">Not connected<img src="modules/Workflow2/icons/cross-button.png" class="removePersonIcon" onclick="removePerson(\'' + element_id + '\');"></div>';
jQuery("#workflowDesignContainer").append(html);
endpoints[element_id + "__person"] = jsPlumb.addEndpoint(element_id, { anchor:bottomAnchor, maxConnections:maxConnections }, jQuery.extend(getInput('modules/Workflow2/icons/peopleOutput.png', "person", true, false, true), {parameters:{ out:element_id + '__person' }}));
// jsPlumb.draggable(jsPlumb.getSelector("#" + element_id));
jQuery("#" + element_id).bind( "dblclick", onDblClickBlock);
jQuery("#" + element_id).bind( "dragstop", onDragStopBlock);
}, 'json');
}
function getOverlay(label, cls) {
if(cls === undefined) cls = "";
return [
[ "Label", { cssClass:"labelClass " + cls, label:label, id:"lbl" } ]
];
}