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:
@@ -203,7 +203,7 @@ class NextcloudClient {
|
|||||||
if (substr($fileName, 0, 1) === '_') {
|
if (substr($fileName, 0, 1) === '_') {
|
||||||
$fileName = substr($fileName, 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 [
|
return [
|
||||||
'success' => true,
|
'success' => true,
|
||||||
|
|||||||
@@ -24,12 +24,12 @@ try {
|
|||||||
|
|
||||||
// Создаем различные варианты URL
|
// Создаем различные варианты URL
|
||||||
$urls = [
|
$urls = [
|
||||||
'direct_edit' => $baseUrl . '/apps/files/files/662?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/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName),
|
'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/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&edit=true',
|
'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/CRM_Active_Files/Documents/' . $recordId . '/' . urlencode($fileName),
|
'richdocuments' => $baseUrl . '/apps/richdocuments/open?path=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '/' . urlencode($fileName),
|
||||||
'onlyoffice' => $baseUrl . '/apps/onlyoffice/open?path=/crm/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/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&action=edit'
|
'files_app' => $baseUrl . '/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '&openfile=' . urlencode($fileName) . '&action=edit'
|
||||||
];
|
];
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ try {
|
|||||||
if (substr($actualFileName, 0, 1) === '_') {
|
if (substr($actualFileName, 0, 1) === '_') {
|
||||||
$actualFileName = substr($actualFileName, 1);
|
$actualFileName = substr($actualFileName, 1);
|
||||||
}
|
}
|
||||||
$nextcloudPath = '/crm/CRM_Active_Files/Documents/' . $recordId . '/' . $actualFileName;
|
$nextcloudPath = '/crm/crm2/CRM_Active_Files/Documents/' . $recordId . '/' . $actualFileName;
|
||||||
|
|
||||||
// Проверяем, существует ли файл в Nextcloud
|
// Проверяем, существует ли файл в Nextcloud
|
||||||
$fileExists = $nextcloudClient->fileExists($nextcloudPath);
|
$fileExists = $nextcloudClient->fileExists($nextcloudPath);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ return [
|
|||||||
'base_url' => EnvLoader::getRequired('NEXTCLOUD_URL'),
|
'base_url' => EnvLoader::getRequired('NEXTCLOUD_URL'),
|
||||||
'username' => EnvLoader::getRequired('NEXTCLOUD_USERNAME'),
|
'username' => EnvLoader::getRequired('NEXTCLOUD_USERNAME'),
|
||||||
'password' => EnvLoader::getRequired('NEXTCLOUD_PASSWORD'),
|
'password' => EnvLoader::getRequired('NEXTCLOUD_PASSWORD'),
|
||||||
'active_folder' => '/crm/CRM_Active_Files/',
|
'active_folder' => '/crm/crm2/CRM_Active_Files/',
|
||||||
'timeout' => 30,
|
'timeout' => 30,
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -78,17 +78,17 @@ function createEditUrls(baseEditUrl, recordId, fileName, fileId = 662) {
|
|||||||
// Извлекаем базовый URL из базовой ссылки
|
// Извлекаем базовый URL из базовой ссылки
|
||||||
const baseUrl = 'https://office.clientright.ru';
|
const baseUrl = 'https://office.clientright.ru';
|
||||||
const encodedFileName = encodeURIComponent(fileName);
|
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 = {
|
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}`,
|
'collabora_path': `${baseUrl}/apps/richdocuments/open?path=${filePath}`,
|
||||||
'onlyoffice_path': `${baseUrl}/apps/onlyoffice/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,
|
'collabora_id': fileId ? `${baseUrl}/apps/richdocuments/index?fileId=${fileId}` : null,
|
||||||
'onlyoffice_id': fileId ? `${baseUrl}/apps/onlyoffice?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`,
|
'files_app': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}&action=edit`,
|
||||||
'simple_files': `${baseUrl}/apps/files/?dir=/crm/CRM_Active_Files/Documents/${recordId}`
|
'simple_files': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}`
|
||||||
};
|
};
|
||||||
|
|
||||||
// Убираем null значения
|
// Убираем null значения
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class Documents_NcPrepareEdit_Action extends Vtiger_Action_Controller {
|
|||||||
* Получение пути к директории
|
* Получение пути к директории
|
||||||
*/
|
*/
|
||||||
private function getDirPath($recordId): string {
|
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
|
* Получение пути к файлу в Nextcloud
|
||||||
*/
|
*/
|
||||||
private function getNcPath(int $recordId, string $fileName): string {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user