- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI - Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код) - Установлен PHPWord для красивого форматирования документов - Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале) - Замена пробелов на подчеркивания в именах папок - Создана документация для AI и разработчиков - Добавлены API для работы с шаблонами Nextcloud
77 lines
7.0 KiB
PHP
77 lines
7.0 KiB
PHP
<?php /* Smarty version Smarty-3.1.7, created on 2025-11-10 11:12:31
|
|
compiled from "/var/www/fastuser/data/www/crm.clientright.ru/includes/runtime/../../layouts/v7/modules/Documents/FilePreview.tpl" */ ?>
|
|
<?php /*%%SmartyHeaderCode:168615790869119e6f020a53-03381090%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
|
|
$_valid = $_smarty_tpl->decodeProperties(array (
|
|
'file_dependency' =>
|
|
array (
|
|
'020e281da584551c1ed3ab1842ab6852151c4ac3' =>
|
|
array (
|
|
0 => '/var/www/fastuser/data/www/crm.clientright.ru/includes/runtime/../../layouts/v7/modules/Documents/FilePreview.tpl',
|
|
1 => 1761324906,
|
|
2 => 'file',
|
|
),
|
|
),
|
|
'nocache_hash' => '168615790869119e6f020a53-03381090',
|
|
'function' =>
|
|
array (
|
|
),
|
|
'variables' =>
|
|
array (
|
|
'FILE_PREVIEW_NOT_SUPPORTED' => 0,
|
|
'FILE_NAME' => 0,
|
|
'DOWNLOAD_URL' => 0,
|
|
'MODULE_NAME' => 0,
|
|
'RECORD_ID' => 0,
|
|
'FULL_FILE_NAME' => 0,
|
|
'BASIC_FILE_TYPE' => 0,
|
|
'FILE_CONTENTS' => 0,
|
|
'OPENDOCUMENT_FILE_TYPE' => 0,
|
|
'PDF_FILE_TYPE' => 0,
|
|
'SITE_URL' => 0,
|
|
'IMAGE_FILE_TYPE' => 0,
|
|
'AUDIO_FILE_TYPE' => 0,
|
|
'FILE_TYPE' => 0,
|
|
'VIDEO_FILE_TYPE' => 0,
|
|
),
|
|
'has_nocache_code' => false,
|
|
'version' => 'Smarty-3.1.7',
|
|
'unifunc' => 'content_69119e6f03014',
|
|
),false); /*/%%SmartyHeaderCode%%*/?>
|
|
<?php if ($_valid && !is_callable('content_69119e6f03014')) {function content_69119e6f03014($_smarty_tpl) {?>
|
|
<div class="modal-dialog modal-lg"><div class="modal-content"><div class="filePreview container-fluid"><div class="modal-header row"><div class="filename <?php if ($_smarty_tpl->tpl_vars['FILE_PREVIEW_NOT_SUPPORTED']->value!='yes'){?> col-lg-7 <?php }else{ ?> col-lg-7 <?php }?>"><h3 style="margin-top:0px;"><b><?php echo $_smarty_tpl->tpl_vars['FILE_NAME']->value;?>
|
|
</b></h3></div><?php if ($_smarty_tpl->tpl_vars['FILE_PREVIEW_NOT_SUPPORTED']->value!='yes'){?><div class="col-lg-4"><a class="btn btn-default btn-small pull-right" href="<?php echo $_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value;?>
|
|
"><?php echo vtranslate('LBL_DOWNLOAD_FILE',$_smarty_tpl->tpl_vars['MODULE_NAME']->value);?>
|
|
</a></div><?php }?><div class="col-lg-1"><button data-dismiss="modal" class="close pull-right" title="close"><span aria-hidden="true" class='fa fa-close'></span></button><div class="col-lg-2"><button type="button" class="btn btn-success btn-small pull-right" onclick="console.log('🔍 DEBUG: RECORD_ID=<?php echo $_smarty_tpl->tpl_vars['RECORD_ID']->value;?>
|
|
, FULL_FILE_NAME=<?php echo strtr($_smarty_tpl->tpl_vars['FULL_FILE_NAME']->value, array("\\" => "\\\\", "'" => "\\'", "\"" => "\\\"", "\r" => "\\r", "\n" => "\\n", "</" => "<\/" ));?>
|
|
, FILE_NAME=<?php echo strtr($_smarty_tpl->tpl_vars['FILE_NAME']->value, array("\\" => "\\\\", "'" => "\\'", "\"" => "\\\"", "\r" => "\\r", "\n" => "\\n", "</" => "<\/" ));?>
|
|
'); console.log('🔍 DEBUG: FULL_FILE_NAME length:', '<?php echo strtr($_smarty_tpl->tpl_vars['FULL_FILE_NAME']->value, array("\\" => "\\\\", "'" => "\\'", "\"" => "\\\"", "\r" => "\\r", "\n" => "\\n", "</" => "<\/" ));?>
|
|
'.length); openNextcloudEditor('<?php echo $_smarty_tpl->tpl_vars['RECORD_ID']->value;?>
|
|
', '<?php echo strtr($_smarty_tpl->tpl_vars['FULL_FILE_NAME']->value, array("\\" => "\\\\", "'" => "\\'", "\"" => "\\\"", "\r" => "\\r", "\n" => "\\n", "</" => "<\/" ));?>
|
|
')" style="margin-right: 5px;" title="Редактировать в Nextcloud"><i class="fa fa-edit"></i> Редактировать</button></div></div></div><div class="modal-body row" style="height:550px;"><?php if ($_smarty_tpl->tpl_vars['FILE_PREVIEW_NOT_SUPPORTED']->value=='yes'){?><div class="well" style="height:100%;"><center><b><?php echo vtranslate('LBL_PREVIEW_NOT_AVAILABLE',$_smarty_tpl->tpl_vars['MODULE_NAME']->value);?>
|
|
</b><br><br><br><a class="btn btn-default btn-large" href="<?php echo $_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value;?>
|
|
"><?php echo vtranslate('LBL_DOWNLOAD_FILE',$_smarty_tpl->tpl_vars['MODULE_NAME']->value);?>
|
|
</a><br><br><br><br><div class='span11 offset1 alert-info' style="padding:10px"><span class='span offset1 alert-info'><i class="icon-info-sign"></i><?php echo vtranslate('LBL_PREVIEW_SUPPORTED_FILES',$_smarty_tpl->tpl_vars['MODULE_NAME']->value);?>
|
|
</span></div><br></center></div><?php }else{ ?><?php if ($_smarty_tpl->tpl_vars['BASIC_FILE_TYPE']->value=='yes'){?><div style="overflow:auto;height:100%;"><pre><?php echo htmlentities($_smarty_tpl->tpl_vars['FILE_CONTENTS']->value);?>
|
|
</pre></div><?php }elseif($_smarty_tpl->tpl_vars['OPENDOCUMENT_FILE_TYPE']->value=='yes'){?><iframe id="viewer" src="libraries/jquery/Viewer.js/#../../../<?php echo $_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value;?>
|
|
" width="100%" height="100%" allowfullscreen webkitallowfullscreen></iframe><?php }elseif($_smarty_tpl->tpl_vars['PDF_FILE_TYPE']->value=='yes'){?><iframe id='viewer' src="libraries/jquery/pdfjs/web/viewer.html?file=<?php echo urlencode($_smarty_tpl->tpl_vars['SITE_URL']->value);?>
|
|
/<?php echo urlencode($_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value);?>
|
|
" height="100%" width="100%"></iframe><?php }elseif($_smarty_tpl->tpl_vars['IMAGE_FILE_TYPE']->value=='yes'){?><div style="overflow:auto;height:100%;width:100%;float:left;background-image: url(<?php echo $_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value;?>
|
|
);background-color: #EEEEEE;background-position: center 25%;background-repeat: no-repeat;display: block; background-size: contain;"></div><?php }elseif($_smarty_tpl->tpl_vars['AUDIO_FILE_TYPE']->value=='yes'){?><div style="overflow:auto;height:100%;width:100%;float:left;background-color: #EEEEEE;background-position: center 25%;background-repeat: no-repeat;display: block;text-align: center;"><div style="display: inline-block;margin-top : 10%;"><audio controls><source src="<?php echo $_smarty_tpl->tpl_vars['SITE_URL']->value;?>
|
|
/<?php echo $_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value;?>
|
|
" type="<?php echo $_smarty_tpl->tpl_vars['FILE_TYPE']->value;?>
|
|
"></audio></div></div><?php }elseif($_smarty_tpl->tpl_vars['VIDEO_FILE_TYPE']->value=='yes'){?><div style="overflow:auto;height:100%;"><link href="libraries/jquery/video-js/video-js.css" rel="stylesheet"><script src="libraries/jquery/video-js/video.js"></script><video class="video-js vjs-default-skin" controls preload="auto" data-setup="{'techOrder': ['flash', 'html5']}" width="100%" height="100%"><source src="<?php echo $_smarty_tpl->tpl_vars['SITE_URL']->value;?>
|
|
/<?php echo $_smarty_tpl->tpl_vars['DOWNLOAD_URL']->value;?>
|
|
" type='<?php echo $_smarty_tpl->tpl_vars['FILE_TYPE']->value;?>
|
|
' /></video></div><?php }?><?php }?></div></div></div></div>
|
|
|
|
<script>
|
|
// Fallback функция если глобальная не загрузилась
|
|
if (typeof window.testEditButton !== 'function') {
|
|
window.testEditButton = function(recordId, fileName) {
|
|
console.log("🔥 ЛОКАЛЬНАЯ КНОПКА НАЖАТА!", recordId, fileName);
|
|
alert("🔥 ЛОКАЛЬНАЯ КНОПКА РАБОТАЕТ!\n\nRecord ID: " + recordId + "\nFile Name: " + fileName);
|
|
};
|
|
console.log("✅ Создана локальная версия testEditButton в FilePreview");
|
|
}
|
|
</script>
|
|
<?php }} ?>
|