82 lines
3.1 KiB
PHP
82 lines
3.1 KiB
PHP
<?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);
|
||
}
|
||
}
|