🔧 Исправления: - Исправлены пути к папкам проектов: теперь /Documents/Project/{Name}_{Id} - Исправлена функция openProjectFolder() во всех JS файлах - Добавлены кнопки создания Word/Excel/PowerPoint из CRM (10 модулей) - Создание файлов напрямую в S3 с автоиндексацией через Redis - Исправлена ошибка 'Class Redis not found' (использован Predis) 📁 Изменённые файлы: - layouts/v7/lib/nextcloud-editor.js - crm_extensions/nextcloud_editor/js/nextcloud-editor.js - layouts/v7/lib/nextcloud-editor-v3.js - crm_extensions/file_storage/api/create_nextcloud_file.php - layouts/v7/modules/*/DetailViewHeaderTitle.tpl (10 модулей) - layouts/v7/modules/Documents/*.tpl (кнопки редактирования) 🎯 Результат: - Кнопка 'Папка в Nextcloud' открывает правильную папку - Создание файлов работает молниеносно (прямо в S3) - Redis события публикуются корректно - OnlyOffice открывается для редактирования Проект 391552 теперь открывается по правильному пути!
102 lines
7.3 KiB
Smarty
102 lines
7.3 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 *}
|
||
{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)}
|
||
|
||
{* Кнопка редактирования в CRM *}
|
||
<a name="relationEdit" href="{$RELATED_RECORD->getEditViewUrl()}" title="{vtranslate('LBL_EDIT', 'Documents')}">
|
||
<i class="fa fa-pencil alignMiddle"></i>
|
||
</a>
|
||
|
||
{* Кнопка отвязать *}
|
||
<a class="relationDelete" href="javascript:void(0)" onclick="unlinkDocumentFromWidget({$RECORD_ID}, this)" title="{vtranslate('LBL_UNLINK', 'Documents')}">
|
||
<i class="vicon-linkopen alignMiddle"></i>
|
||
</a>
|
||
|
||
{* Кнопка просмотра файла *}
|
||
{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')}
|
||
<a name="downloadfile" href="{$DOCUMENT_RECORD_MODEL->getDownloadFileURL()}" onclick="event.stopImmediatePropagation();">
|
||
<i title="{vtranslate('LBL_DOWNLOAD_FILE', 'Documents')}" class="fa fa-download alignMiddle"></i>
|
||
</a>
|
||
{/if}
|
||
|
||
{* Кнопки редактирования *}
|
||
{if $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="⚡ Редактировать (быстро, OnlyOffice напрямую)" class="fa fa-bolt alignMiddle" style="color: #ff6b35;"></i>
|
||
</a>
|
||
<a name="openViaNextcloud" href="javascript:void(0)" onclick="openViaNextcloud({$RECORD_ID}, '{$DOCUMENT_RECORD_MODEL->get('filename')|escape:'javascript'}')">
|
||
<i title="📚 Через Nextcloud (с версионированием)" class="fa fa-cloud alignMiddle" style="color: #007cba;"></i>
|
||
</a>
|
||
{/if}
|
||
|
||
{* Кнопка удаления *}
|
||
<a name="deletefile" href="javascript:void(0)" onclick="deleteDocumentFromWidget({$RECORD_ID}, this)">
|
||
<i title="{vtranslate('LBL_DELETE_FILE', 'Documents')}" class="fa fa-trash alignMiddle" style="color: red;"></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}
|