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);
|
|||
|
|
}
|
|||
|
|
}
|