From 10daf60fccfdda24372d7d491fb2cb3f1d1b3dc4 Mon Sep 17 00:00:00 2001 From: zhaixiaojian Date: Wed, 20 Nov 2024 15:49:23 +0800 Subject: [PATCH] * [task#133126,doing,3h,1h] Add backup and deletion function. --- module/instance/config/dtable.php | 8 +++++++- module/instance/control.php | 20 ++++++++++++++++++++ module/instance/model.php | 13 +++++++++++++ module/instance/ui/backupsettings.html.php | 2 +- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/module/instance/config/dtable.php b/module/instance/config/dtable.php index ac793d7c71..fff4d9edac 100644 --- a/module/instance/config/dtable.php +++ b/module/instance/config/dtable.php @@ -50,10 +50,16 @@ if(!isset($config->backup)) $config->backup->dtable->fieldList['actions']['type'] = 'actions'; $config->backup->dtable->fieldList['actions']['width'] = '100'; - $config->backup->dtable->fieldList['actions']['menu'] = array('restore'); + $config->backup->dtable->fieldList['actions']['menu'] = array('restore', 'delete'); $config->backup->dtable->fieldList['actions']['list']['restore']['icon'] = 'icon-restart'; $config->backup->dtable->fieldList['actions']['list']['restore']['hint'] = $lang->instance->restore->common; $config->backup->dtable->fieldList['actions']['list']['restore']['url'] = array('module' => 'instance', 'method' => 'ajaxRestore', 'params' => 'instanceID={instanceId}&backupName={name}'); $config->backup->dtable->fieldList['actions']['list']['restore']['className'] = 'ajax-submit'; + + $config->backup->dtable->fieldList['actions']['list']['delete']['icon'] = 'icon-trash'; + $config->backup->dtable->fieldList['actions']['list']['delete']['hint'] = $lang->instance->backup->delete; + $config->backup->dtable->fieldList['actions']['list']['delete']['url'] = array('module' => 'instance', 'method' => 'ajaxDeleteBackup', 'params' => 'instanceID={instanceId}&backupName={name}'); + $config->backup->dtable->fieldList['actions']['list']['delete']['className'] = 'ajax-submit'; + $config->backup->dtable->fieldList['actions']['list']['delete']['data-confirm'] = array('message' => $lang->instance->backup->confirmDeleteTip, 'icon' => 'icon-exclamation-sign', 'iconClass' => 'warning-pale rounded-full icon-2x'); } diff --git a/module/instance/control.php b/module/instance/control.php index db51cbd2cc..4f698f65a0 100644 --- a/module/instance/control.php +++ b/module/instance/control.php @@ -652,4 +652,24 @@ class instance extends control } return $this->send(array('result' => 'success', 'message' => zget($this->lang->instance->notices, 'backupSuccess'))); } + + /** + * Delete backup by ajax. + * 删除备份。 + * @param int $backupID + * @access public + * @return void + */ + public function ajaxDeleteBackup(string $instanceID, string $backupName) + { + $instance = $this->instance->getByID((int)$instanceID); + if(empty($instance)) $this->send(array('result' => 'success', 'message' => $this->lang->instance->instanceNotExists)); + + $success = $this->instance->deleteBackup($instance, $backupName); + if(!$success) return $this->send(array('result' => 'fail', 'message' => zget($this->lang->instance->notices, 'deleteFail'))); + + $this->action->create('instance', $instance->id, 'manualdeletebackup', '', json_encode(array('result' => 'success'))); + $locate = $this->createLink('instance', 'view', 'id=' . $instanceID); + return $this->send(array('result' => 'success', 'load' => array('alert' => zget($this->lang->instance->notices, 'deleteSuccess'), 'locate' => $locate, 'closeModal' => true))); + } } diff --git a/module/instance/model.php b/module/instance/model.php index 2e583a843f..f6199d9d8e 100644 --- a/module/instance/model.php +++ b/module/instance/model.php @@ -1379,4 +1379,17 @@ class instanceModel extends model if(count($deleteData) > 0) $this->action->create('instance', $instance->id, 'deleteexpiredbackup', '', json_encode(array('result' => 'success', 'data' =>$deleteData))); return true; } + + /** + * Delete backup. + * 删除备份。 + * @param object $instance + * @param string $backupName + * @access public + * @return bool + */ + public function deleteBackup($instance, $backupName) + { + return $this->cne->deleteBackup($instance, $backupName); + } } diff --git a/module/instance/ui/backupsettings.html.php b/module/instance/ui/backupsettings.html.php index 50d5ab52e0..428aeb0dd5 100644 --- a/module/instance/ui/backupsettings.html.php +++ b/module/instance/ui/backupsettings.html.php @@ -28,7 +28,7 @@ formPanel set::label($this->lang->instance->backup->keepDays), set::control('input'), set::value((int)$instance->backupKeepDays), - span($this->lang->instance->backup->backupSettingsTips, set::className('text-warning inline-block mt-2')) + span($this->lang->instance->backup->backupSettingsTip, set::className('text-warning inline-block mt-2')) ), ), formRow