Files
crm.clientright.ru/layouts/v7/modules/Calendar/QuickCreate.tpl
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

220 lines
11 KiB
Smarty

{*+**********************************************************************************
* 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.
************************************************************************************}
{strip}
{foreach key=index item=jsModel from=$SCRIPTS}
<script type="{$jsModel->getType()}" src="{$jsModel->getSrc()}"></script>
{/foreach}
<div class="modal-dialog modal-lg">
<div class="modal-content" style='width: 525px;left:23%;'>
<form class="form-horizontal recordEditView" id="QuickCreate" name="QuickCreate" method="post" action="index.php">
{* SalesPlatform.ru begin *}
{assign var=LABEL value={vtranslate('SINGLE_'|cat:$MODULE, $MODULE)}}
{if $MODULE == 'Calendar'}
{assign var=LABEL value={vtranslate('LBL_TASK', $MODULE)}}
{/if}
{* SalesPlatform.ru end *}
{if $MODE eq 'edit' && !empty($RECORD_ID)}
{* SalesPlatform.ru begin *}
{* {assign var=HEADER_TITLE value={vtranslate('LBL_EDITING', $MODULE)}|cat:" "|cat:{vtranslate('SINGLE_'|cat:$MODULE, $MODULE)}} *}
{assign var=HEADER_TITLE value={vtranslate('LBL_EDITING', $MODULE)}|cat:" "|cat:{$LABEL}}
{* SalesPlatform.ru end *}
{else}
{* SalesPlatform.ru begin *}
{* {assign var=HEADER_TITLE value={vtranslate('LBL_QUICK_CREATE', $MODULE)}|cat:" "|cat:{vtranslate('SINGLE_'|cat:$MODULE, $MODULE)}} *}
{assign var=HEADER_TITLE value={vtranslate('LBL_QUICK_CREATE', $MODULE)}|cat:" "|cat:{$LABEL}}
{* SalesPlatform.ru end *}
{/if}
{include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE}
{* SalesPlatform.ru begin *}
<div class="modal-body" style = 'float:left; width: 100%'>
{* <div class="modal-body"> *}
{* SalesPlatform.ru end *}
{if !empty($PICKIST_DEPENDENCY_DATASOURCE)}
<input type="hidden" name="picklistDependency" value='{Vtiger_Util_Helper::toSafeHTML($PICKIST_DEPENDENCY_DATASOURCE)}' />
{/if}
<input type="hidden" name="module" value="{$MODULE}">
<input type="hidden" name="action" value="SaveAjax">
<input type="hidden" name="calendarModule" value="{$MODULE}">
<input type="hidden" name="defaultCallDuration" value="{$USER_MODEL->get('callduration')}" />
<input type="hidden" name="defaultOtherEventDuration" value="{$USER_MODEL->get('othereventduration')}" />
{if $MODE eq 'edit' && !empty($RECORD_ID)}
<input type="hidden" name="record" value="{$RECORD_ID}" />
<input type="hidden" name="mode" value="{$MODE}" />
{else}
<input type="hidden" name="record" value="">
{/if}
{assign var="RECORD_STRUCTURE_MODEL" value=$QUICK_CREATE_CONTENTS[$MODULE]['recordStructureModel']}
{assign var="RECORD_STRUCTURE" value=$QUICK_CREATE_CONTENTS[$MODULE]['recordStructure']}
{assign var="MODULE_MODEL" value=$QUICK_CREATE_CONTENTS[$MODULE]['moduleModel']}
{* SalesPlatform,ru begin *}
{* <div class="quickCreateContent calendarQuickCreateContent" style="padding-top:2%;margin-top:5px;"> *}
<div class="quickCreateContent calendarQuickCreateContent" style="padding-top:2%;">
{* SalesPlatform.ru end *}
{if $MODULE eq 'Calendar'}
{if !empty($PICKIST_DEPENDENCY_DATASOURCE_TODO)}
<input type="hidden" name="picklistDependency" value='{Vtiger_Util_Helper::toSafeHTML($PICKIST_DEPENDENCY_DATASOURCE_TODO)}' />
{/if}
{else}
{if !empty($PICKIST_DEPENDENCY_DATASOURCE_EVENT)}
<input type="hidden" name="picklistDependency" value='{Vtiger_Util_Helper::toSafeHTML($PICKIST_DEPENDENCY_DATASOURCE_EVENT)}' />
{/if}
{/if}
<div>
{assign var="FIELD_MODEL" value=$RECORD_STRUCTURE['subject']}
<div style="margin-left: 14px;width: 95%;">
{assign var="FIELD_INFO" value=$FIELD_MODEL->getFieldInfo()}
{assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()}
<input id="{$MODULE}_editView_fieldName_{$FIELD_MODEL->get('name')}" type="text" class="inputElement {if $FIELD_MODEL->isNameField()}nameField{/if}" name="{$FIELD_MODEL->getFieldName()}" value="{$FIELD_MODEL->get('fieldvalue')}"
{if $FIELD_MODEL->get('uitype') eq '3' || $FIELD_MODEL->get('uitype') eq '4'|| $FIELD_MODEL->isReadOnly()} readonly {/if} {if !empty($SPECIAL_VALIDATOR)}data-validator="{Zend_Json::encode($SPECIAL_VALIDATOR)}"{/if}
{if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if}
{foreach item=VALIDATOR from=$FIELD_INFO["validator"]}
{assign var=VALIDATOR_NAME value=$VALIDATOR["name"]}
data-rule-{$VALIDATOR_NAME} = "true"
{/foreach}
placeholder="{vtranslate($FIELD_MODEL->get('label'), $MODULE)} *" style="width: 100%;"/>
</div>
</div>
<div class="row" style="padding-top: 2%;">
<div class="col-sm-12">
<div class="col-sm-5">
{assign var="FIELD_MODEL" value=$RECORD_STRUCTURE['date_start']}
{include file=vtemplate_path($FIELD_MODEL->getUITypeModel()->getTemplateName(),$MODULE)}
</div>
{* SalesPlatform.ru begin *}
{* <div class="muted col-sm-1" style="line-height: 67px;left: 20px; padding-right: 7%;"> *}
<div class="muted col-sm-1" style="line-height: 67px; margin-left: 4.5%; text-align: center;" >
{* SalesPlatform.ru end *}
{vtranslate('LBL_TO',$MODULE)}
</div>
{* SalesPlatform.ru begin *}
<div class="col-sm-5" {if $MODULE eq 'Calendar'}style="margin-top: 3%;"{/if}>
{* <div class="col-sm-5" {if $MODULE eq 'Calendar'}style="margin-top: 4%;"{/if}> *}
{* SalesPlatform.ru end *}
{assign var="FIELD_MODEL" value=$RECORD_STRUCTURE['due_date']}
{include file=vtemplate_path($FIELD_MODEL->getUITypeModel()->getTemplateName(),$MODULE)}
</div>
{* SalesPlatform.ru begin *}
{* </div> *}
{* SalesPlatform.ru end *}
<table class="massEditTable table no-border">
<tr>
{foreach key=FIELD_NAME item=FIELD_MODEL from=$RECORD_STRUCTURE name=blockfields}
{if $FIELD_NAME eq 'subject' || $FIELD_NAME eq 'date_start' || $FIELD_NAME eq 'due_date'}
</tr>{continue}
{/if}
{assign var="isReferenceField" value=$FIELD_MODEL->getFieldDataType()}
{assign var="referenceList" value=$FIELD_MODEL->getReferenceList()}
{assign var="referenceListCount" value=count($referenceList)}
{if $FIELD_MODEL->get('uitype') eq "19"}
{if $COUNTER eq '1'}
<td></td><td></td></tr><tr>
{assign var=COUNTER value=0}
{/if}
{/if}
</tr><tr>
<td class='fieldLabel col-lg-3'>
{if $isReferenceField neq "reference"}<label class="muted pull-right">{/if}
{if $isReferenceField eq "reference"}
{if $referenceListCount > 1}
{assign var="DISPLAYID" value=$FIELD_MODEL->get('fieldvalue')}
{assign var="REFERENCED_MODULE_STRUCT" value=$FIELD_MODEL->getUITypeModel()->getReferenceModule($DISPLAYID)}
{if !empty($REFERENCED_MODULE_STRUCT)}
{assign var="REFERENCED_MODULE_NAME" value=$REFERENCED_MODULE_STRUCT->get('name')}
{/if}
<span class="pull-right">
<select style="width: 150px;" class="select2 referenceModulesList">
{foreach key=index item=value from=$referenceList}
<option value="{$value}" {if $value eq $REFERENCED_MODULE_NAME} selected {/if} >{vtranslate($value, $value)}</option>
{/foreach}
</select>
</span>
{else}
<label class="muted pull-right">{vtranslate($FIELD_MODEL->get('label'), $MODULE)} &nbsp;{if $FIELD_MODEL->isMandatory() eq true} <span class="redColor">*</span> {/if}</label>
{/if}
{else}
{vtranslate($FIELD_MODEL->get('label'), $MODULE)}&nbsp;{if $FIELD_MODEL->isMandatory() eq true} <span class="redColor">*</span> {/if}
{/if}
{if $isReferenceField neq "reference"}</label>{/if}
</td>
<td class="fieldValue col-lg-9" {if $FIELD_MODEL->get('uitype') eq '19'} colspan="3" {assign var=COUNTER value=$COUNTER+1} {/if}>
{include file=vtemplate_path($FIELD_MODEL->getUITypeModel()->getTemplateName(),$MODULE)}
</td>
{/foreach}
</tr>
</table>
{* SalesPlatform.ru begin *}
</div>
{* SalesPlatform.ru end *}
</div>
</div>
</div>
{* SalesPlatform.ru begin *}
<div class="modal-footer" style = "overflow:hidden">
{*<div class="modal-footer">*}
{* SalesPlatform.ru end *}
<center>
{if $BUTTON_NAME neq null}
{assign var=BUTTON_LABEL value=$BUTTON_NAME}
{else}
{assign var=BUTTON_LABEL value={vtranslate('LBL_SAVE', $MODULE)}}
{/if}
{assign var="CALENDAR_MODULE_MODEL" value=$QUICK_CREATE_CONTENTS['Calendar']['moduleModel']}
{assign var="EDIT_VIEW_URL" value=$CALENDAR_MODULE_MODEL->getCreateTaskRecordUrl()}
{if $MODULE eq 'Events'}
{assign var="EDIT_VIEW_URL" value=$CALENDAR_MODULE_MODEL->getCreateEventRecordUrl()}
{/if}
<button class="btn btn-default" id="goToFullForm" data-edit-view-url="{$EDIT_VIEW_URL}" type="button"><strong>{vtranslate('LBL_GO_TO_FULL_FORM', $MODULE)}</strong></button>
<button {if $BUTTON_ID neq null} id="{$BUTTON_ID}" {/if} class="btn btn-success" type="submit" name="saveButton"><strong>{$BUTTON_LABEL}</strong></button>
<a href="#" class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a>
</center>
</div>
</form>
</div>
{if $FIELDS_INFO neq null}
<script type="text/javascript">
var quickcreate_uimeta = (function () {
var fieldInfo = {$FIELDS_INFO};
return {
field: {
get: function (name, property) {
if (name && property === undefined) {
return fieldInfo[name];
}
if (name && property) {
return fieldInfo[name][property]
}
},
isMandatory: function (name) {
if (fieldInfo[name]) {
return fieldInfo[name].mandatory;
}
return false;
},
getType: function (name) {
if (fieldInfo[name]) {
return fieldInfo[name].type;
}
return false;
}
},
};
})();
</script>
{/if}
</div>
{/strip}