fix: ПРАВИЛЬНАЯ миграция путей Nextcloud /crm2/ → /crm/crm2/

ИСПРАВЛЕНИЕ: На новом Nextcloud S3 примонтирован как /crm, но внутри папка crm2
Правильный путь: /crm/crm2/CRM_Active_Files/

Выполнено в БД (rollback_and_fix.sql):
- Откат предыдущей неправильной миграции из backup
- s3_key: crm2/ → crm/crm2/ (17386 записей)
- nc_path: /crm2/crm2/ → /crm/crm2/ (72 записи)
- nc_path: /crm2/ → /crm/crm2/ (все остальные)

Обновлены файлы кода:
- crm_extensions/file_storage/config.php: active_folder = /crm/crm2/CRM_Active_Files/
- crm_extensions/nextcloud_editor/js/nextcloud-editor.js (5 путей)
- crm_extensions/file_storage/api/get_edit_urls.php (6 путей)
- modules/Documents/actions/NcPrepareEdit.php (2 пути)
- crm_extensions/file_storage/api/prepare_edit.php (1 путь)
- crm_extensions/file_storage/NextcloudClient.php (1 путь)

Документ 395695:
- s3_key: crm/crm2/CRM_Active_Files/Documents/395695/zayavlenie_proekt.docx ✓
- nc_path: /crm/crm2/CRM_Active_Files/Documents/395695/zayavlenie_proekt.docx ✓
This commit is contained in:
Fedor
2025-10-20 18:54:33 +03:00
parent 749f849887
commit 76abcbc70b
6 changed files with 16 additions and 16 deletions

View File

@@ -203,7 +203,7 @@ class NextcloudClient {
if (substr($fileName, 0, 1) === '_') {
$fileName = substr($fileName, 1);
}
$editUrl = $this->baseUrl . '/apps/files/?dir=/crm/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName);
$editUrl = $this->baseUrl . '/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName);
return [
'success' => true,

View File

@@ -24,12 +24,12 @@ try {
// Создаем различные варианты URL
$urls = [
'direct_edit' => $baseUrl . '/apps/files/files/662?dir=/crm/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&action=edit',
'openfile_only' => $baseUrl . '/apps/files/files/662?dir=/crm/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName),
'edit_true' => $baseUrl . '/apps/files/files/662?dir=/crm/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&edit=true',
'richdocuments' => $baseUrl . '/apps/richdocuments/open?path=/crm/CRM_Active_Files/Documents/' . $recordId . '/' . urlencode($fileName),
'onlyoffice' => $baseUrl . '/apps/onlyoffice/open?path=/crm/CRM_Active_Files/Documents/' . $recordId . '/' . urlencode($fileName),
'files_app' => $baseUrl . '/apps/files/?dir=/crm/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&action=edit'
'direct_edit' => $baseUrl . '/apps/files/files/662?dir=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&action=edit',
'openfile_only' => $baseUrl . '/apps/files/files/662?dir=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName),
'edit_true' => $baseUrl . '/apps/files/files/662?dir=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&edit=true',
'richdocuments' => $baseUrl . '/apps/richdocuments/open?path=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '/' . urlencode($fileName),
'onlyoffice' => $baseUrl . '/apps/onlyoffice/open?path=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '/' . urlencode($fileName),
'files_app' => $baseUrl . '/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&action=edit'
];
echo json_encode([

View File

@@ -72,7 +72,7 @@ try {
if (substr($actualFileName, 0, 1) === '_') {
$actualFileName = substr($actualFileName, 1);
}
$nextcloudPath = '/crm/CRM_Active_Files/Documents/' . $recordId . '/' . $actualFileName;
$nextcloudPath = '/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '/' . $actualFileName;
// Проверяем, существует ли файл в Nextcloud
$fileExists = $nextcloudClient->fileExists($nextcloudPath);

View File

@@ -30,7 +30,7 @@ return [
'base_url' => EnvLoader::getRequired('NEXTCLOUD_URL'),
'username' => EnvLoader::getRequired('NEXTCLOUD_USERNAME'),
'password' => EnvLoader::getRequired('NEXTCLOUD_PASSWORD'),
'active_folder' => '/crm/CRM_Active_Files/',
'active_folder' => '/crm/crm2/CRM_Active_Files/',
'timeout' => 30,
],

View File

@@ -78,17 +78,17 @@ function createEditUrls(baseEditUrl, recordId, fileName, fileId = 662) {
// Извлекаем базовый URL из базовой ссылки
const baseUrl = 'https://office.clientright.ru';
const encodedFileName = encodeURIComponent(fileName);
const filePath = `/crm/CRM_Active_Files/Documents/${recordId}/${encodedFileName}`;
const filePath = `/crm/crm2/CRM_Active_Files/Documents/${recordId}/${encodedFileName}`;
const urls = {
'correct_path': fileId ? `${baseUrl}/apps/files/files/${fileId}?dir=/crm/CRM_Active_Files/Documents/${recordId}&editing=false&openfile=true` : `${baseUrl}/apps/files/?dir=/crm/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
'correct_path': fileId ? `${baseUrl}/apps/files/files/${fileId}?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&editing=false&openfile=true` : `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
'collabora_path': `${baseUrl}/apps/richdocuments/open?path=${filePath}`,
'onlyoffice_path': `${baseUrl}/apps/onlyoffice/open?path=${filePath}`,
'files_manager': `${baseUrl}/apps/files/?dir=/crm/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
'files_manager': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}`,
'collabora_id': fileId ? `${baseUrl}/apps/richdocuments/index?fileId=${fileId}` : null,
'onlyoffice_id': fileId ? `${baseUrl}/apps/onlyoffice?fileId=${fileId}` : null,
'files_app': `${baseUrl}/apps/files/?dir=/crm/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}&action=edit`,
'simple_files': `${baseUrl}/apps/files/?dir=/crm/CRM_Active_Files/Documents/${recordId}`
'files_app': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}&action=edit`,
'simple_files': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}`
};
// Убираем null значения

View File

@@ -81,7 +81,7 @@ class Documents_NcPrepareEdit_Action extends Vtiger_Action_Controller {
* Получение пути к директории
*/
private function getDirPath($recordId): string {
return '/crm/CRM_Active_Files/Documents/' . $recordId;
return '/crm/crm2/CRM_Active_Files/Documents/' . $recordId;
}
/**
@@ -131,7 +131,7 @@ class Documents_NcPrepareEdit_Action extends Vtiger_Action_Controller {
* Получение пути к файлу в Nextcloud
*/
private function getNcPath(int $recordId, string $fileName): string {
return "/crm/CRM_Active_Files/Documents/{$recordId}/" . rawurlencode($fileName);
return "/crm/crm2/CRM_Active_Files/Documents/{$recordId}/" . rawurlencode($fileName);
}
/**