'module', 'action' => 'DetailView', 'record_parameter' => 'record'); return $permissions; } public function checkPermission(Vtiger_Request $request) { return parent::checkPermission($request); } public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $action = $request->get('action_type', 'prepare_edit'); try { // Подключаем наш файловый менеджер require_once dirname(dirname(dirname(__DIR__))) . '/crm_extensions/file_storage/FileStorageManager.php'; $fileManager = new FileStorageManager(); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); if (!$recordModel) { throw new Exception('Record not found'); } $fileName = $recordModel->get('filename'); switch ($action) { case 'prepare_edit': $result = $fileManager->prepareForEditing($recordId, $fileName); if ($result['success']) { // Обновляем запись в CRM с информацией о редактировании $recordModel->set('mode', 'edit'); $recordModel->set('editurl', $result['edit_url']); $recordModel->save(); } break; case 'sync_changes': $result = $fileManager->syncAfterEditing($recordId); if ($result['success']) { // Обновляем информацию о файле в CRM $recordModel->set('mode', 'edit'); $recordModel->set('modifiedtime', date('Y-m-d H:i:s')); $recordModel->save(); } break; default: throw new Exception('Unknown action: ' . $action); } $response = array( 'success' => true, 'result' => $result ); } catch (Exception $e) { $response = array( 'success' => false, 'error' => array( 'message' => $e->getMessage() ) ); } header('Content-Type: application/json'); echo json_encode($response); } }