- 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.
81 lines
5.7 KiB
Smarty
81 lines
5.7 KiB
Smarty
{*<!--
|
|
/*********************************************************************************
|
|
** 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.
|
|
*
|
|
********************************************************************************/
|
|
-->*}
|
|
{strip}
|
|
<div class="paddingLeft5px">
|
|
<span class="col-sm-5">
|
|
<strong>{vtranslate('Title','Documents')}</strong>
|
|
</span>
|
|
<span class="col-sm-7">
|
|
<strong>{vtranslate('File Name', 'Documents')}</strong>
|
|
</span>
|
|
|
|
{foreach item=RELATED_RECORD from=$RELATED_RECORDS}
|
|
{assign var=DOWNLOAD_FILE_URL value=$RELATED_RECORD->getDownloadFileURL()}
|
|
{assign var=DOWNLOAD_STATUS value=$RELATED_RECORD->get('filestatus')}
|
|
{assign var=DOWNLOAD_LOCATION_TYPE value=$RELATED_RECORD->get('filelocationtype')}
|
|
<div class="recentActivitiesContainer row">
|
|
<ul class="" style="padding-left: 0px;list-style-type: none;">
|
|
<li>
|
|
<div class="" id="documentRelatedRecord pull-left">
|
|
<span class="col-sm-5 textOverflowEllipsis">
|
|
<a href="{$RELATED_RECORD->getDetailViewUrl()}" id="{$MODULE}_{$RELATED_MODULE}_Related_Record_{$RELATED_RECORD->get('id')}" title="{$RELATED_RECORD->getDisplayValue('notes_title')}">
|
|
{$RELATED_RECORD->getDisplayValue('notes_title')}
|
|
</a>
|
|
</span>
|
|
<span class="col-sm-4 textOverflowEllipsis" id="DownloadableLink">
|
|
{if $DOWNLOAD_STATUS eq 1}
|
|
{$RELATED_RECORD->getDisplayValue('filename', $RELATED_RECORD->getId(), $RELATED_RECORD)}
|
|
{else}
|
|
{$RELATED_RECORD->get('filename')}
|
|
{/if}
|
|
</span>
|
|
<span class="col-sm-3">
|
|
{* Documents list view special actions "view file" and "download file" *}
|
|
{assign var=RECORD_ID value=$RELATED_RECORD->getId()}
|
|
{if isPermitted('Documents', 'DetailView', $RECORD_ID) eq 'yes'}
|
|
{assign var="DOCUMENT_RECORD_MODEL" value=Vtiger_Record_Model::getInstanceById($RECORD_ID)}
|
|
{if $DOCUMENT_RECORD_MODEL->get('filename') && $DOCUMENT_RECORD_MODEL->get('filestatus')}
|
|
<a name="viewfile" href="javascript:void(0)" data-filelocationtype="{$DOCUMENT_RECORD_MODEL->get('filelocationtype')}" data-filename="{$DOCUMENT_RECORD_MODEL->get('filename')}" onclick="Vtiger_Header_Js.previewFile(event,{$RECORD_ID})"><i title="{vtranslate('LBL_VIEW_FILE', 'Documents')}" class="fa fa-picture-o alignMiddle"></i></a>
|
|
{/if}
|
|
{if $DOCUMENT_RECORD_MODEL->get('filename') && $DOCUMENT_RECORD_MODEL->get('filestatus') && $DOCUMENT_RECORD_MODEL->get('filelocationtype') eq 'I'}
|
|
<a name="downloadfile" href="{$DOCUMENT_RECORD_MODEL->getDownloadFileURL()}"><i title="{vtranslate('LBL_DOWNLOAD_FILE', 'Documents')}" class="fa fa-download alignMiddle"></i></a>
|
|
{/if}
|
|
{* Кнопка редактирования в Nextcloud *}
|
|
{if $DOCUMENT_RECORD_MODEL->get('filename') && $DOCUMENT_RECORD_MODEL->get('filestatus')}
|
|
<a name="editInNextcloud" href="javascript:void(0)" onclick="editInNextcloud({$RECORD_ID}, '{$DOCUMENT_RECORD_MODEL->get('filename')|escape:'javascript'}')">
|
|
<i title="Редактировать в Nextcloud" class="fa fa-edit alignMiddle" style="color: #28a745;"></i>
|
|
</a>
|
|
{/if}
|
|
<a name="deletefile"
|
|
class=""
|
|
href="#"
|
|
onclick="javascript:AppConnector.request({ module:'Documents',action:'DeleteAjax',record:{$RECORD_ID} });this.closest('li').remove()">
|
|
<i title="{vtranslate('LBL_DELETE_FILE', 'Documents')}" class="fa fa-trash alignMiddle"></i>
|
|
</a>
|
|
{/if}
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
{/foreach}
|
|
</div>
|
|
{assign var=NUMBER_OF_RECORDS value=count($RELATED_RECORDS)}
|
|
{if ($NUMBER_OF_RECORDS == -1)}
|
|
<div class="row np">
|
|
<div class="pull-right">
|
|
<a class="moreRecentDocuments cursorPointer">{vtranslate('LBL_MORE',$MODULE_NAME)}</a>
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
{/strip}
|