Files
crm.clientright.ru/layouts/v7/modules/CustomView/EditView.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

162 lines
9.2 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}
{assign var=SELECTED_FIELDS value=$CUSTOMVIEW_MODEL->getSelectedFields()}
{assign var=MODULE_FIELDS value=$MODULE_MODEL->getFields()}
<div id="filterContainer" style="height:100%">
<form id="CustomView" style="height:100%">
<div class="modal-content" style="height:100%">
<div class="overlayHeader">
{if $RECORD_ID}
{assign var="TITLE" value={vtranslate('LBL_EDIT_CUSTOM',$MODULE)}}
{else}
{assign var="TITLE" value={vtranslate('LBL_CREATE_LIST',$MODULE)}}
{/if}
{include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$TITLE}
</div>
<div class="modal-body" style="height:100%">
<div class="customview-content row" style="height:90%">
<input type=hidden name="record" id="record" value="{$RECORD_ID}" />
<input type="hidden" name="module" value="{$MODULE}" />
<input type="hidden" name="action" value="Save" />
<input type="hidden" id="sourceModule" name="source_module" value="{$SOURCE_MODULE}"/>
<input type="hidden" id="stdfilterlist" name="stdfilterlist" value=""/>
<input type="hidden" id="advfilterlist" name="advfilterlist" value=""/>
<input type="hidden" name="status" value="{$CV_PRIVATE_VALUE}"/>
{if $RECORD_ID}
<input type="hidden" name="status" value="{$CUSTOMVIEW_MODEL->get('status')}" />
{/if}
<input type="hidden" name="date_filters" data-value='{Vtiger_Util_Helper::toSafeHTML(ZEND_JSON::encode($DATE_FILTERS))}' />
<div class="form-group">
<label>{vtranslate('LBL_VIEW_NAME',$MODULE)}&nbsp;<span class="redColor">*</span> </label>
<div class="row">
<div class="col-lg-5 col-md-5 col-sm-5">
<input class="form-control" type="text" data-record-id="{$RECORD_ID}" id="viewname" name="viewname" value="{$CUSTOMVIEW_MODEL->get('viewname')}" data-rule-required="true" data-rule-maxsize="100" data-rule-check-filter-duplicate='{Vtiger_Util_Helper::toSafeHTML(Zend_JSON::encode($CUSTOM_VIEWS_LIST))}'>
</div>
<div class="col-lg-5 col-md-5 col-sm-5">
<label class="checkbox-inline">
<input type="checkbox" name="setdefault" value="1" {if $CUSTOMVIEW_MODEL->isDefault()} checked="checked"{/if}> &nbsp;&nbsp;{vtranslate('LBL_SET_AS_DEFAULT',$MODULE)}
</label>
<label class="checkbox-inline">
<input id="setmetrics" name="setmetrics" type="checkbox" value="1" {if $CUSTOMVIEW_MODEL->get('setmetrics') eq '1'} checked="checked"{/if}> &nbsp;&nbsp;{vtranslate('LBL_LIST_IN_METRICS',$MODULE)}</label>
</label>
</div>
</div>
</div>
<div class="form-group">
<label>
{vtranslate('LBL_CHOOSE_COLUMNS',$MODULE)} ({vtranslate('LBL_MAX_NUMBER_FILTER_COLUMNS')})
</label>
<div class="columnsSelectDiv clearfix">
{assign var=MANDATORY_FIELDS value=array()}
{assign var=NUMBER_OF_COLUMNS_SELECTED value=0}
{assign var=MAX_ALLOWED_COLUMNS value=15}
<select name="selectColumns" data-rule-required="true" data-msg-required="{vtranslate('LBL_PLEASE_SELECT_ATLEAST_ONE_OPTION',$SOURCE_MODULE)}" data-placeholder="{vtranslate('LBL_ADD_MORE_COLUMNS',$MODULE)}" multiple class="select2 columnsSelect col-lg-10" id="viewColumnsSelect" >
{foreach key=BLOCK_LABEL item=BLOCK_FIELDS from=$RECORD_STRUCTURE}
<optgroup label='{vtranslate($BLOCK_LABEL, $SOURCE_MODULE)}'>
{foreach key=FIELD_NAME item=FIELD_MODEL from=$BLOCK_FIELDS}
{* To not show star field in filter select view*}
{if $FIELD_MODEL->getDisplayType() == '6'}
{continue}
{/if}
{if $FIELD_MODEL->isMandatory()}
{array_push($MANDATORY_FIELDS, $FIELD_MODEL->getCustomViewColumnName())}
{/if}
{assign var=FIELD_MODULE_NAME value=$FIELD_MODEL->getModule()->getName()}
<option value="{$FIELD_MODEL->getCustomViewColumnName()}" data-field-name="{$FIELD_NAME}"
{if in_array(decode_html($FIELD_MODEL->getCustomViewColumnName()), $SELECTED_FIELDS)}
selected
{elseif (!$RECORD_ID) && ($FIELD_MODEL->isSummaryField() || $FIELD_MODEL->isHeaderField()) && ($FIELD_MODULE_NAME eq $SOURCE_MODULE) && (!(preg_match("/\([A-Za-z_0-9]* \; \([A-Za-z_0-9]*\) [A-Za-z_0-9]*\)/", $FIELD_NAME))) && $NUMBER_OF_COLUMNS_SELECTED < $MAX_ALLOWED_COLUMNS}
selected
{assign var=NUMBER_OF_COLUMNS_SELECTED value=$NUMBER_OF_COLUMNS_SELECTED + 1}
{/if}
>{Vtiger_Util_Helper::toSafeHTML(vtranslate($FIELD_MODEL->get('label'), $SOURCE_MODULE))}
{if $FIELD_MODEL->isMandatory() eq true} <span>*</span> {/if}
</option>
{/foreach}
</optgroup>
{/foreach}
{*Required to include event fields for columns in calendar module advanced filter*}
{foreach key=BLOCK_LABEL item=BLOCK_FIELDS from=$EVENT_RECORD_STRUCTURE}
<optgroup label='{vtranslate($BLOCK_LABEL, 'Events')}'>
{foreach key=FIELD_NAME item=FIELD_MODEL from=$BLOCK_FIELDS}
{* To not show starred field in custom view select *}
{if $FIELD_MODEL->getDisplayType() == '6'}
{continue}
{/if}
{if $FIELD_MODEL->isMandatory()}
{array_push($MANDATORY_FIELDS, $FIELD_MODEL->getCustomViewColumnName())}
{/if}
<option value="{$FIELD_MODEL->getCustomViewColumnName()}" data-field-name="{$FIELD_NAME}"
{if in_array(decode_html($FIELD_MODEL->getCustomViewColumnName()), $SELECTED_FIELDS)}
selected
{/if}
>{Vtiger_Util_Helper::toSafeHTML(vtranslate($FIELD_MODEL->get('label'), $SOURCE_MODULE))}
{if $FIELD_MODEL->isMandatory() eq true} <span>*</span> {/if}
</option>
{/foreach}
</optgroup>
{/foreach}
</select>
<input type="hidden" name="columnslist" value='{Vtiger_Functions::jsonEncode($SELECTED_FIELDS)}' />
<input id="mandatoryFieldsList" type="hidden" value='{Vtiger_Util_Helper::toSafeHTML(ZEND_JSON::encode($MANDATORY_FIELDS))}' />
</div>
<div class="col-lg-2 col-md-2 col-sm-2"></div>
</div>
<div>
<label class="filterHeaders">{vtranslate('LBL_CHOOSE_FILTER_CONDITIONS', $MODULE)} :</label>
<div class="filterElements well filterConditionContainer filterConditionsDiv">
{include file='AdvanceFilter.tpl'|@vtemplate_path}
</div>
</div>
<div class="checkbox">
<label>
<input type="hidden" name="sharelist" value="0" />
<input type="checkbox" data-toogle-members="true" name="sharelist" value="1" {if $LIST_SHARED} checked="checked"{/if}> &nbsp;&nbsp;{vtranslate('LBL_SHARE_THIS_LIST',$MODULE)}
</label>
</div>
<select id="memberList" class="col-lg-7 col-md-7 col-sm-7 select2 members op0{if $LIST_SHARED} fadeInx{/if}" multiple="true" name="members[]" data-placeholder="{vtranslate('LBL_ADD_USERS_ROLES', $MODULE)}" style="margin-bottom: 10px;" data-rule-required="{if $LIST_SHARED}true{else}false{/if}">
<optgroup label="{vtranslate('LBL_ALL',$MODULE)}">
<option value="All::Users" data-member-type="{vtranslate('LBL_ALL',$MODULE)}"
{if ($CUSTOMVIEW_MODEL->get('status') == $CV_PUBLIC_VALUE)} selected="selected"{/if}>
{vtranslate('LBL_ALL_USERS',$MODULE)}
</option>
</optgroup>
{foreach from=$MEMBER_GROUPS key=GROUP_LABEL item=ALL_GROUP_MEMBERS}
{assign var=TRANS_GROUP_LABEL value=$GROUP_LABEL}
{if $GROUP_LABEL eq 'RoleAndSubordinates'}
{assign var=TRANS_GROUP_LABEL value='LBL_ROLEANDSUBORDINATE'}
{/if}
{assign var=TRANS_GROUP_LABEL value={vtranslate($TRANS_GROUP_LABEL)}}
<optgroup label="{$TRANS_GROUP_LABEL}">
{foreach from=$ALL_GROUP_MEMBERS item=MEMBER}
<option value="{$MEMBER->getId()}" data-member-type="{$GROUP_LABEL}" {if isset($SELECTED_MEMBERS_GROUP[$GROUP_LABEL][$MEMBER->getId()])}selected="true"{/if}>{$MEMBER->getName()}</option>
{/foreach}
</optgroup>
{/foreach}
</select>
<input type="hidden" name="status" id="allUsersStatusValue" value=""
data-public="{$CV_PUBLIC_VALUE}" data-private="{$CV_PRIVATE_VALUE}"/>
</div>
</div>
<div class='modal-overlay-footer clearfix border1px'>
<div class="row clearfix">
<div class=' textAlignCenter col-lg-12 col-md-12 col-sm-12 '>
<button type='submit' class='btn btn-success saveButton' id="customViewSubmit">{vtranslate('LBL_SAVE', $MODULE)}</button>&nbsp;&nbsp;
<a class='cancelLink' href="javascript:void(0);" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a>
</div>
</div>
</div>
</div>
</form>
</div>
{/strip}