* admin: refactor the table engine page, finish task #98719.
This commit is contained in:
@@ -476,7 +476,7 @@ class admin extends control
|
||||
{
|
||||
unset($_SESSION['errorTables']);
|
||||
$response['result'] = 'finished';
|
||||
return print(json_encode($response));
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
try
|
||||
@@ -489,7 +489,7 @@ class admin extends control
|
||||
if(!empty($dbProcess->Info) and strpos($dbProcess->Info, " {$thisTable} ") !== false)
|
||||
{
|
||||
$response['message'] = sprintf($this->lang->upgrade->changingTable, $thisTable);
|
||||
return print(json_encode($response));
|
||||
return $this->send($response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -512,7 +512,7 @@ class admin extends control
|
||||
$response['message'] = sprintf($this->lang->admin->changeFail, $thisTable, htmlspecialchars($e->getMessage()));
|
||||
}
|
||||
|
||||
return print(json_encode($response));
|
||||
return $this->send($response);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
var changeFails = 0;
|
||||
/**
|
||||
* Change all table engines.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function changeAllEngines()
|
||||
{
|
||||
$(event.target).hide();
|
||||
var $engineBox = $('#engineBox');
|
||||
$engineBox.empty();
|
||||
|
||||
changeTableEngine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax change table engine.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function changeTableEngine()
|
||||
{
|
||||
var $engineBox = $('#engineBox');
|
||||
var link = $.createLink('admin', 'ajaxChangeTableEngine');
|
||||
$.ajax(
|
||||
{
|
||||
type: "GET",
|
||||
url: link,
|
||||
success: function(response)
|
||||
{
|
||||
response = JSON.parse(response);
|
||||
if(response == null || response.result == 'finished')
|
||||
{
|
||||
$engineBox.append("<div class='flex items-center text-success my-1 pl-5 h-5'><div class='rounded-full success mr-2 w-1 h-1'></div>" + changeFinished + '</div>');
|
||||
$engineBox.append("<div class='flex items-center my-1 pl-8 h-5'><button class='btn mt-2' data-on='click' data-call='loadCurrentPage'>" + refresh + '</button></div>');
|
||||
if(changeFails == 0) $('#mainContent .table-engine').html(allInnoDB);
|
||||
if(changeFails != 0) $('#mainContent .table-engine').html(hasMyISAM.replace('%s', changeFails));
|
||||
$engineBox.children().last().scrollIntoView({block: 'end'});
|
||||
}
|
||||
else
|
||||
{
|
||||
table = response.thisTable;
|
||||
if($engineBox.find('[data-table=' + table + ']').length == 0) $engineBox.append("<div class='flex items-center my-1 pl-5 h-5' data-table='" + table + "'><div class='rounded-full black mr-2 w-1 h-1'></div>" + changingTable.replace('%s', table) + '</div>');
|
||||
$engineBox.find('[data-table=' + table + ']').html("<div class='rounded-full black mr-2 w-1 h-1'></div>" + response.message);
|
||||
if(response.result == 'success') $engineBox.find('[data-table=' + table + ']').addClass('text-success').find('.black').toggleClass('black success');
|
||||
if(response.result == 'fail') $engineBox.find('[data-table=' + table + ']').addClass('text-warning');
|
||||
|
||||
nextTable = response.nextTable;
|
||||
if(nextTable && $engineBox.find('[data-table=' + nextTable + ']').length == 0) $engineBox.append("<div class='flex items-center my-1 pl-5 h-5' data-table='" + nextTable + "'><div class='rounded-full black mr-2 w-1 h-1'></div>" + changingTable.replace('%s', nextTable) + "</div>");
|
||||
|
||||
if(response.result == 'fail') changeFails++;
|
||||
$engineBox.children().last().scrollIntoView({block: 'end'});
|
||||
|
||||
changeTableEngine();
|
||||
}
|
||||
},
|
||||
error: function()
|
||||
{
|
||||
changeTableEngine();
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The table engine view file of admin 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 Gang Liu <liugang@easycorp.ltd>
|
||||
* @package admin
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
namespace zin;
|
||||
|
||||
jsVar('refresh', $lang->refresh);
|
||||
jsVar('changingTable', $lang->admin->changingTable);
|
||||
jsVar('changeFinished', $lang->admin->changeFinished);
|
||||
jsVar('allInnoDB', $lang->admin->engineSummary['allInnoDB']);
|
||||
jsVar('hasMyISAM', $lang->admin->engineSummary['hasMyISAM']);
|
||||
|
||||
$MyISAMCount = 0;
|
||||
$engineList = array();
|
||||
foreach($tableEngines as $tableName => $engine)
|
||||
{
|
||||
if($engine != 'InnoDB') $MyISAMCount++;
|
||||
$engineList[] = div
|
||||
(
|
||||
setClass('flex items-center my-1 pl-5 h-5'),
|
||||
set(array('data-table' => $tableName)),
|
||||
div
|
||||
(
|
||||
setClass('rounded-full black mr-2 w-1 h-1')
|
||||
),
|
||||
html(sprintf($lang->admin->engineInfo, $tableName, $engine))
|
||||
);
|
||||
}
|
||||
|
||||
$title = $MyISAMCount > 0 ? sprintf($lang->admin->engineSummary['hasMyISAM'], $MyISAMCount) : $lang->admin->engineSummary['allInnoDB'];
|
||||
|
||||
panel
|
||||
(
|
||||
set::title($title),
|
||||
set::titleClass('table-engine'),
|
||||
set::headingClass('justify-start border-b'),
|
||||
$MyISAMCount > 0 ? to::headingActions
|
||||
(
|
||||
button
|
||||
(
|
||||
on::click('changeAllEngines'),
|
||||
setClass('btn primary'),
|
||||
$lang->admin->changeEngine
|
||||
)
|
||||
) : null,
|
||||
div
|
||||
(
|
||||
setID('engineBox'),
|
||||
$engineList
|
||||
)
|
||||
);
|
||||
|
||||
render();
|
||||
Reference in New Issue
Block a user