Files
crm.clientright.ru/modules/Documents/views/NextcloudEdit.php

82 lines
3.1 KiB
PHP
Raw Normal View History

<?php
/**
* Nextcloud Editor View for Documents
* Представление для редактирования документов через Nextcloud
*/
class Documents_NextcloudEdit_View extends Vtiger_IndexAjax_View {
public function requiresPermission(Vtiger_Request $request) {
$permissions = parent::requiresPermission($request);
$permissions[] = array('module_parameter' => '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);
}
}