Move home entry point logic to the routes file
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
parent
a9df8a4dbb
commit
f29239d72f
@ -612,10 +612,9 @@ Functions.displayGitRevision = function () {
|
||||
$('#is_git_revision').remove();
|
||||
$('#li_pma_version_git').remove();
|
||||
$.get(
|
||||
'index.php?route=/',
|
||||
'index.php?route=/git-revision',
|
||||
{
|
||||
'server': CommonParams.get('server'),
|
||||
'git_revision': true,
|
||||
'ajax_request': true,
|
||||
'no_debug': true
|
||||
},
|
||||
|
||||
@ -61,11 +61,25 @@ class HomeController extends AbstractController
|
||||
|
||||
|
||||
/**
|
||||
* @param array $params Request parameters
|
||||
*
|
||||
* @return string HTML
|
||||
*/
|
||||
public function index(): string
|
||||
public function index(array $params): string
|
||||
{
|
||||
global $cfg, $server, $collation_connection, $message;
|
||||
global $cfg, $server, $collation_connection, $message, $show_query, $db, $table;
|
||||
|
||||
if ($this->response->isAjax() && ! empty($params['access_time'])) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$db = '';
|
||||
$table = '';
|
||||
$show_query = '1';
|
||||
|
||||
if ($server > 0) {
|
||||
include ROOT_PATH . 'libraries/server_common.inc.php';
|
||||
}
|
||||
|
||||
$languageManager = LanguageManager::getInstance();
|
||||
|
||||
@ -289,6 +303,8 @@ class HomeController extends AbstractController
|
||||
$preferences = $userPreferences->load();
|
||||
$preferences['config_data']['ThemeDefault'] = $params['set_theme'];
|
||||
$userPreferences->save($preferences['config_data']);
|
||||
|
||||
$this->response->header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -303,6 +319,8 @@ class HomeController extends AbstractController
|
||||
$params['collation_connection'],
|
||||
'utf8mb4_unicode_ci'
|
||||
);
|
||||
|
||||
$this->response->header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -310,6 +328,9 @@ class HomeController extends AbstractController
|
||||
*/
|
||||
public function reloadRecentTablesList(): array
|
||||
{
|
||||
if (! $this->response->isAjax()) {
|
||||
return [];
|
||||
}
|
||||
return [
|
||||
'list' => RecentFavoriteTable::getInstance('recent')->getHtmlList(),
|
||||
];
|
||||
@ -320,6 +341,13 @@ class HomeController extends AbstractController
|
||||
*/
|
||||
public function gitRevision(): string
|
||||
{
|
||||
global $PMA_Config;
|
||||
|
||||
/** @var Config $PMA_Config */
|
||||
if (! $this->response->isAjax() || ! $PMA_Config->isGitRevision()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return (new GitRevision(
|
||||
$this->response,
|
||||
$this->config,
|
||||
|
||||
@ -365,7 +365,7 @@ class RecentFavoriteTable
|
||||
public static function getHtmlUpdateRecentTables()
|
||||
{
|
||||
$retval = '<a class="hide" id="update_recent_tables" href="';
|
||||
$retval .= Url::getFromRoute('/', [
|
||||
$retval .= Url::getFromRoute('/recent-table', [
|
||||
'ajax_request' => true,
|
||||
'recent_table' => true,
|
||||
]);
|
||||
|
||||
@ -338,7 +338,7 @@ class ThemeManager
|
||||
|
||||
if ($form) {
|
||||
$select_box .= '<form name="setTheme" method="post"';
|
||||
$select_box .= ' action="index.php?route=/" class="disableAjax">';
|
||||
$select_box .= ' action="index.php?route=/set-theme" class="disableAjax">';
|
||||
$select_box .= Url::getHiddenInputs();
|
||||
}
|
||||
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Handles the home page
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use PhpMyAdmin\Controllers\HomeController;
|
||||
use PhpMyAdmin\DatabaseInterface;
|
||||
use PhpMyAdmin\Response;
|
||||
use PhpMyAdmin\Url;
|
||||
|
||||
if (! defined('PHPMYADMIN')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
global $containerBuilder, $server, $show_query, $db, $table;
|
||||
|
||||
/** @var Response $response */
|
||||
$response = $containerBuilder->get(Response::class);
|
||||
|
||||
/** @var DatabaseInterface $dbi */
|
||||
$dbi = $containerBuilder->get(DatabaseInterface::class);
|
||||
|
||||
/** @var HomeController $controller */
|
||||
$controller = $containerBuilder->get(HomeController::class);
|
||||
|
||||
if (isset($_REQUEST['ajax_request']) && ! empty($_REQUEST['access_time'])) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if (isset($_POST['set_theme'])) {
|
||||
$controller->setTheme([
|
||||
'set_theme' => $_POST['set_theme'],
|
||||
]);
|
||||
|
||||
header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
|
||||
} elseif (isset($_POST['collation_connection'])) {
|
||||
$controller->setCollationConnection([
|
||||
'collation_connection' => $_POST['collation_connection'],
|
||||
]);
|
||||
|
||||
header('Location: index.php?route=/' . Url::getCommonRaw([], '&'));
|
||||
} elseif ($response->isAjax() && ! empty($_REQUEST['recent_table'])) {
|
||||
$response->addJSON($controller->reloadRecentTablesList());
|
||||
} elseif ($GLOBALS['PMA_Config']->isGitRevision()
|
||||
&& isset($_REQUEST['git_revision'])
|
||||
&& $response->isAjax()
|
||||
) {
|
||||
$response->addHTML($controller->gitRevision());
|
||||
} else {
|
||||
// Handles some variables that may have been sent by the calling script
|
||||
$db = '';
|
||||
$table = '';
|
||||
$show_query = '1';
|
||||
|
||||
if ($server > 0) {
|
||||
include ROOT_PATH . 'libraries/server_common.inc.php';
|
||||
}
|
||||
|
||||
$response->addHTML($controller->index());
|
||||
}
|
||||
@ -9,6 +9,7 @@ use FastRoute\RouteCollector;
|
||||
use PhpMyAdmin\Controllers\Database\DataDictionaryController;
|
||||
use PhpMyAdmin\Controllers\Database\MultiTableQueryController;
|
||||
use PhpMyAdmin\Controllers\Database\StructureController;
|
||||
use PhpMyAdmin\Controllers\HomeController;
|
||||
use PhpMyAdmin\Controllers\Server\BinlogController;
|
||||
use PhpMyAdmin\Controllers\Server\CollationsController;
|
||||
use PhpMyAdmin\Controllers\Server\DatabasesController;
|
||||
@ -35,8 +36,24 @@ if (! defined('PHPMYADMIN')) {
|
||||
$response = $containerBuilder->get(Response::class);
|
||||
|
||||
return function (RouteCollector $routes) use ($containerBuilder, $response) {
|
||||
$routes->addRoute(['GET', 'POST'], '[/]', function () {
|
||||
require_once ROOT_PATH . 'libraries/entry_points/home.php';
|
||||
$routes->addGroup('', function (RouteCollector $routes) use ($containerBuilder, $response) {
|
||||
/** @var HomeController $controller */
|
||||
$controller = $containerBuilder->get(HomeController::class);
|
||||
$routes->addRoute(['GET', 'POST'], '[/]', function () use ($response, $controller) {
|
||||
$response->addHTML($controller->index(['access_time' => $_REQUEST['access_time'] ?? null]));
|
||||
});
|
||||
$routes->post('/set-theme', function () use ($controller) {
|
||||
$controller->setTheme(['set_theme' => $_POST['set_theme']]);
|
||||
});
|
||||
$routes->post('/collation-connection', function () use ($controller) {
|
||||
$controller->setCollationConnection(['collation_connection' => $_POST['collation_connection']]);
|
||||
});
|
||||
$routes->addRoute(['GET', 'POST'], '/recent-table', function () use ($response, $controller) {
|
||||
$response->addJSON($controller->reloadRecentTablesList());
|
||||
});
|
||||
$routes->addRoute(['GET', 'POST'], '/git-revision', function () use ($response, $controller) {
|
||||
$response->addHTML($controller->gitRevision());
|
||||
});
|
||||
});
|
||||
$routes->addRoute(['GET', 'POST'], '/ajax', function () {
|
||||
require_once ROOT_PATH . 'libraries/entry_points/ajax.php';
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
{{ change_password is not empty ? change_password|raw }}
|
||||
|
||||
<li id="li_select_mysql_collation" class="no_bullets">
|
||||
<form class="disableAjax" method="post" action="{{ url('/') }}">
|
||||
<form class="disableAjax" method="post" action="{{ url('/collation-connection') }}">
|
||||
{{ get_hidden_inputs(null, null, 4, 'collation_connection') }}
|
||||
<label for="select_collation_connection">
|
||||
{{ get_image('s_asci') }}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
{{ name }} ({{ version }})
|
||||
</h2>
|
||||
<p>
|
||||
<a class="take_theme" name="{{ id }}" href="{{ url('/', url_params) }}">
|
||||
<a class="take_theme" name="{{ id }}" href="{{ url('/set-theme', url_params) }}">
|
||||
{% if screen is not empty %}
|
||||
<img src="{{ screen }}" alt="{{ name }}" title="{{ name }}">
|
||||
<br>
|
||||
|
||||
@ -250,7 +250,7 @@ class ThemeTest extends PmaTestCase
|
||||
$this->object->getPrintPreview()
|
||||
);
|
||||
$this->assertStringContainsString(
|
||||
'name="" href="index.php?route=/&set_theme=&server=99&lang=en">',
|
||||
'name="" href="index.php?route=/set-theme&set_theme=&server=99&lang=en">',
|
||||
$this->object->getPrintPreview()
|
||||
);
|
||||
$this->assertStringContainsString(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user