diff --git a/check_nextcloud_apps.php b/check_nextcloud_apps.php new file mode 100644 index 00000000..4ec40856 --- /dev/null +++ b/check_nextcloud_apps.php @@ -0,0 +1,143 @@ + "$baseUrl/ocs/v2.php/cloud/apps?filter=enabled", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPAUTH => CURLAUTH_BASIC, + CURLOPT_USERPWD => "$username:$password", + CURLOPT_HTTPHEADER => ['OCS-APIRequest: true', 'Accept: application/json'], +]); +$response = curl_exec($ch); +$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); +curl_close($ch); + +echo "HTTP Status: $httpCode\n"; +if ($httpCode == 200) { + $data = json_decode($response, true); + if (isset($data['ocs']['data']['apps'])) { + $apps = $data['ocs']['data']['apps']; + echo "Найдено приложений: " . count($apps) . "\n\n"; + + // Ищем редакторы + $editors = []; + foreach ($apps as $app) { + if (stripos($app, 'office') !== false || + stripos($app, 'collabora') !== false || + stripos($app, 'richdocuments') !== false || + stripos($app, 'onlyoffice') !== false) { + $editors[] = $app; + } + } + + if (!empty($editors)) { + echo "📝 Найдены редакторы документов:\n"; + foreach ($editors as $editor) { + echo " - $editor\n"; + } + } else { + echo "⚠️ Редакторы документов не найдены!\n"; + } + + echo "\n📋 Все приложения:\n"; + foreach (array_slice($apps, 0, 20) as $app) { + echo " - $app\n"; + } + if (count($apps) > 20) { + echo " ... и ещё " . (count($apps) - 20) . " приложений\n"; + } + } +} else { + echo "Ошибка получения списка приложений\n"; + echo "Response: $response\n"; +} + +// 2. Проверяем конкретные редакторы +echo "\n\n2. Проверяем доступность конкретных редакторов...\n"; + +$editors_to_check = [ + 'richdocuments' => "$baseUrl/apps/richdocuments", + 'onlyoffice' => "$baseUrl/apps/onlyoffice", + 'files_texteditor' => "$baseUrl/apps/files_texteditor", +]; + +foreach ($editors_to_check as $name => $url) { + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_NOBODY => true, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTPAUTH => CURLAUTH_BASIC, + CURLOPT_USERPWD => "$username:$password", + ]); + curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + $status = $httpCode == 200 ? '✅ Доступен' : '❌ Недоступен'; + echo " $name: $status (HTTP $httpCode)\n"; +} + +// 3. Проверяем fileId для тестового документа +echo "\n\n3. Проверяем fileId для документа 395695...\n"; +$ncPath = '/crm/crm2/CRM_Active_Files/Documents/395695/zayavlenie_proekt.docx'; +$webdavUrl = "$baseUrl/remote.php/dav/files/admin" . $ncPath; + +$ch = curl_init(); +curl_setopt_array($ch, [ + CURLOPT_URL => $webdavUrl, + CURLOPT_CUSTOMREQUEST => 'PROPFIND', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + 'Depth: 0', + 'Content-Type: application/xml; charset=utf-8', + ], + CURLOPT_POSTFIELDS => ' + + + + + + +', + CURLOPT_HTTPAUTH => CURLAUTH_BASIC, + CURLOPT_USERPWD => "$username:$password", +]); +$response = curl_exec($ch); +$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); +curl_close($ch); + +echo "HTTP Status: $httpCode\n"; +if ($httpCode == 207) { + // Парсим XML + $xml = simplexml_load_string($response); + $namespaces = $xml->getNamespaces(true); + + foreach ($xml->xpath('//oc:fileid') as $fileid) { + echo "FileID: $fileid\n"; + } + foreach ($xml->xpath('//oc:size') as $size) { + echo "Size: $size bytes\n"; + } + foreach ($xml->xpath('//d:getcontenttype') as $type) { + echo "Content-Type: $type\n"; + } +} else { + echo "Ошибка получения fileId\n"; + echo "Response: " . substr($response, 0, 500) . "\n"; +} + +echo "\n=== Проверка завершена ===\n"; + diff --git a/crm_extensions/nextcloud_editor/js/nextcloud-editor.js b/crm_extensions/nextcloud_editor/js/nextcloud-editor.js index 8991abf8..8efe0444 100644 --- a/crm_extensions/nextcloud_editor/js/nextcloud-editor.js +++ b/crm_extensions/nextcloud_editor/js/nextcloud-editor.js @@ -81,14 +81,16 @@ function createEditUrls(baseEditUrl, recordId, fileName, fileId = 662) { const filePath = `/crm/crm2/CRM_Active_Files/Documents/${recordId}/${encodedFileName}`; const urls = { - '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}`, + 'correct_path': fileId ? `${baseUrl}/apps/files/files/${fileId}?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&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/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/crm2/CRM_Active_Files/Documents/${recordId}&openfile=${encodedFileName}&action=edit`, - 'simple_files': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}` + 'simple_files': `${baseUrl}/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}`, + 'download_direct': `${baseUrl}/remote.php/dav/files/admin${filePath}`, + 'view_only': `${baseUrl}/apps/files/files/${fileId}?dir=/crm/crm2/CRM_Active_Files/Documents/${recordId}&openfile=true&view=1` }; // Убираем null значения diff --git a/simple_test.html b/simple_test.html new file mode 100644 index 00000000..cb2ed552 --- /dev/null +++ b/simple_test.html @@ -0,0 +1,80 @@ + + + + + Простой тест Nextcloud + + + +

Простой тест открытия документа 395695

+ + + + + + + + + diff --git a/storage/2025/October/week3/395714_AgACAgIAAxkBAAEBaURo9lwhjNoiYM6gIm2VQX7_dXSmzgACHQABMhtTlblLKJ80rl59RsQBAAMCAAN5AAM2BA.pdf b/storage/2025/October/week3/395714_AgACAgIAAxkBAAEBaURo9lwhjNoiYM6gIm2VQX7_dXSmzgACHQABMhtTlblLKJ80rl59RsQBAAMCAAN5AAM2BA.pdf new file mode 100644 index 00000000..e514a73a Binary files /dev/null and b/storage/2025/October/week3/395714_AgACAgIAAxkBAAEBaURo9lwhjNoiYM6gIm2VQX7_dXSmzgACHQABMhtTlblLKJ80rl59RsQBAAMCAAN5AAM2BA.pdf differ diff --git a/test_nc_open.html b/test_nc_open.html new file mode 100644 index 00000000..6155488e --- /dev/null +++ b/test_nc_open.html @@ -0,0 +1,38 @@ + + + + + Тест открытия Nextcloud + + +

Тест открытия документа 395695

+ +

Вариант 1: Files App (текущий по умолчанию)

+ + Открыть через Files App + + +

Вариант 2: Прямая ссылка на редактор (если установлен Collabora)

+ + Открыть через Collabora (richdocuments) + + +

Вариант 3: OnlyOffice (если установлен)

+ + Открыть через OnlyOffice + + +
+ +

Инструкция:

+
    +
  1. Кликни на каждую ссылку
  2. +
  3. Засеки время открытия
  4. +
  5. Посмотри, какой редактор открывается
  6. +
  7. Сообщи, какой вариант работает быстрее
  8. +
+ +

Текущая настройка: используется "Files App", который сначала показывает файловый менеджер, а потом только предлагает открыть редактор. Варианты 2 и 3 должны открывать редактор сразу.

+ + + diff --git a/test_nextcloud_speed.html b/test_nextcloud_speed.html new file mode 100644 index 00000000..091d51df --- /dev/null +++ b/test_nextcloud_speed.html @@ -0,0 +1,129 @@ + + + + + Тест скорости Nextcloud + + + +

🧪 Тест скорости открытия Nextcloud для документа 395695

+ +
+

Вариант 1: Прямая ссылка на файл (Files App)

+ +
+
+ +
+

Вариант 2: Через Collabora/Richdocuments

+ +
+
+ +
+

Вариант 3: Через OnlyOffice

+ +
+
+ +
+

Вариант 4: Проверка существования файла

+ +
+
+ + + + + +