* Refactor the index view of backup.

This commit is contained in:
dingguodong
2023-06-16 13:07:41 +08:00
parent 5e5abfff12
commit 2f81356ce5
3 changed files with 163 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
<?php
global $app, $lang;
$app->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}');
+50
View File
@@ -0,0 +1,50 @@
<?php
global $lang;
$config->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;
+89
View File
@@ -0,0 +1,89 @@
<?php
/**
* The index view file of backup module of ZenTaoPMS.
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author dingguodong <dingguodong@easycorp.ltd>
* @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();