From 2f81356ce53d4696b8cfc7cfcd74cfc2605826f0 Mon Sep 17 00:00:00 2001 From: dingguodong Date: Fri, 16 Jun 2023 13:07:09 +0800 Subject: [PATCH] * Refactor the index view of backup. --- module/backup/config/action.php | 24 +++++++++ module/backup/config/table.php | 50 ++++++++++++++++++ module/backup/ui/index.html.php | 89 +++++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+) create mode 100644 module/backup/config/action.php create mode 100644 module/backup/config/table.php create mode 100644 module/backup/ui/index.html.php diff --git a/module/backup/config/action.php b/module/backup/config/action.php new file mode 100644 index 0000000000..ee2299f8fe --- /dev/null +++ b/module/backup/config/action.php @@ -0,0 +1,24 @@ +loadLang('backup'); + +$config->backup->menu = array('rmPHPHeader', 'restore', 'delete'); +$config->backup->actionList = array(); + +$config->backup->actionList['rmPHPHeader']['icon'] = 'folder-download'; +$config->backup->actionList['rmPHPHeader']['text'] = $lang->backup->rmPHPHeader; +$config->backup->actionList['rmPHPHeader']['hint'] = $lang->backup->rmPHPHeader; +$config->backup->actionList['rmPHPHeader']['url'] = helper::createLink('backup', 'rmPHPHeader', 'file={name}'); +$config->backup->actionList['rmPHPHeader']['data-toggle'] = 'modal'; + +$config->backup->actionList['restore']['icon'] = 'restart'; +$config->backup->actionList['restore']['text'] = $lang->backup->restore; +$config->backup->actionList['restore']['hint'] = $lang->backup->restore; +$config->backup->actionList['restore']['url'] = array('module' => 'backup', 'method' => 'restore', 'params' => 'file={name}'); +$config->backup->actionList['restore']['data-toggle'] = 'modal'; + +$config->backup->actionList['delete']['icon'] = 'trash'; +$config->backup->actionList['delete']['text'] = $lang->delete; +$config->backup->actionList['delete']['hint'] = $lang->delete; +$config->backup->actionList['delete']['url'] = helper::createLink('backup', 'delete', 'file={name}'); + diff --git a/module/backup/config/table.php b/module/backup/config/table.php new file mode 100644 index 0000000000..d8d8cfa274 --- /dev/null +++ b/module/backup/config/table.php @@ -0,0 +1,50 @@ +backup->dtable = new stdclass(); +$config->backup->dtable->fieldList['time']['title'] = $lang->backup->time; +$config->backup->dtable->fieldList['time']['name'] = 'time'; +$config->backup->dtable->fieldList['time']['type'] = 'datetime'; +$config->backup->dtable->fieldList['time']['fixed'] = 'left'; +$config->backup->dtable->fieldList['time']['show'] = true; +$config->backup->dtable->fieldList['time']['group'] = 1; + +$config->backup->dtable->fieldList['file']['title'] = $lang->backup->files; +$config->backup->dtable->fieldList['file']['name'] = 'file'; +$config->backup->dtable->fieldList['file']['type'] = 'title'; +$config->backup->dtable->fieldList['file']['fixed'] = 'left'; +$config->backup->dtable->fieldList['file']['show'] = true; +$config->backup->dtable->fieldList['file']['group'] = 1; + +$config->backup->dtable->fieldList['allCount']['title'] = $lang->backup->allCount; +$config->backup->dtable->fieldList['allCount']['name'] = 'allCount'; +$config->backup->dtable->fieldList['allCount']['type'] = 'text'; +$config->backup->dtable->fieldList['allCount']['show'] = true; +$config->backup->dtable->fieldList['allCount']['group'] = 2; + +$config->backup->dtable->fieldList['count']['title'] = $lang->backup->count; +$config->backup->dtable->fieldList['count']['name'] = 'count'; +$config->backup->dtable->fieldList['count']['type'] = 'text'; +$config->backup->dtable->fieldList['count']['show'] = true; +$config->backup->dtable->fieldList['count']['group'] = 3; + +$config->backup->dtable->fieldList['size']['title'] = $lang->backup->size; +$config->backup->dtable->fieldList['size']['name'] = 'size'; +$config->backup->dtable->fieldList['size']['type'] = 'text'; +$config->backup->dtable->fieldList['size']['show'] = true; +$config->backup->dtable->fieldList['size']['group'] = 4; + +$config->backup->dtable->fieldList['status']['title'] = $lang->backup->status; +$config->backup->dtable->fieldList['status']['name'] = 'status'; +$config->backup->dtable->fieldList['status']['type'] = 'text'; +$config->backup->dtable->fieldList['status']['show'] = true; +$config->backup->dtable->fieldList['status']['group'] = 5; + +$config->backup->dtable->fieldList['actions']['title'] = $lang->actions; +$config->backup->dtable->fieldList['actions']['name'] = 'actions'; +$config->backup->dtable->fieldList['actions']['type'] = 'actions'; +$config->backup->dtable->fieldList['actions']['width'] = 'auto'; +$config->backup->dtable->fieldList['actions']['fixed'] = 'right'; +$config->backup->dtable->fieldList['actions']['list'] = $config->backup->actionList; +$config->backup->dtable->fieldList['actions']['menu'] = $config->backup->menu ?? array_keys($config->backup->actionList); +$config->backup->dtable->fieldList['actions']['required'] = true; +$config->backup->dtable->fieldList['actions']['group'] = 6; diff --git a/module/backup/ui/index.html.php b/module/backup/ui/index.html.php new file mode 100644 index 0000000000..3c88bcdd1a --- /dev/null +++ b/module/backup/ui/index.html.php @@ -0,0 +1,89 @@ + + * @package backup + * @link https://www.zentao.net + */ +declare(strict_types=1); +namespace zin; + +featureBar +( + li + ( + set::class('nav-item'), + a + ( + set('data-app', $app->tab), + $lang->backup->history + ) + ), + set::current('all') +); + +/* Toolbar. */ +$settingLink = $this->createLink('backup', 'setting'); +$backupLink = $this->createLink('backup', 'backup', "reload=yes"); + +if(common::hasPriv('backup', 'setting') and common::hasPriv('backup', 'backup')) +{ + toolbar + ( + item(set + ([ + 'text' => $lang->backup->setting, + 'icon' => 'cog', + 'class'=> 'iframe btn primary', + 'url' => $settingLink + ])), + item(set + ([ + 'text' => $lang->backup->backup, + 'icon' => 'copy', + 'class'=> 'btn primary', + 'url' => $backupLink + ])), + ); +} + +/* DataTable. */ +$cols = $this->loadModel('datatable')->getSetting('backup'); +$data = initTableData($backups, $cols, $this->backup); + +foreach($data as $key => $row) +{ + $data[$key]->time = date(DT_DATETIME1, filemtime(array_keys($row->files)[0])); + $data[$key]->file = dirname(array_keys($row->files)[0]) . DS . '{' . implode(',', array_map('basename', array_keys($row->files))) . '}'; + $data[$key]->count = count($row->files); + $data[$key]->allCount = array_sum(array_column($row->files, 'allCount')); + $data[$key]->size = helper::formatKB(array_sum(array_column($row->files, 'size'))); + + $isOk = $data[$key]->isOK = true; + $data[$key]->isPHP = false; + foreach($row->files as $name => $file) + { + if(str_ends_with($name, '.php')) $data[$key]->isPHP = true; + if($file['allCount'] != $file['count']) + { + $isOk = $data[$key]->isOK = false; + break; + } + } + $data[$key]->status = $isOk ? $lang->backup->statusList['success'] : $lang->backup->statusList['fail']; + if(!$data[$key]->isPHP) $data[$key]->actions[0]['disabled'] = true; + if(!$data[$key]->isOK) $data[$key]->actions[1]['disabled'] = true; +} + +dtable +( + set::customCols(false), + set::cols($cols), + set::data($data), + set::footPager(usePager()) +); + +render(); +