Merge pull request #17764 from MauricioFauth/setup-basic-routing

Add basic routing system for setup pages
This commit is contained in:
Maurício Meneghini Fauth 2022-10-10 07:21:54 -03:00 committed by GitHub
commit 6785c97d22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 47 additions and 62 deletions

View File

@ -83,7 +83,7 @@ function ajaxValidate (parent, id, values) {
}
$parent.data('ajax', $.ajax({
url: 'validate.php',
url: '../setup/index.php?route=/setup/validate',
cache: false,
type: 'POST',
data: {
@ -235,7 +235,7 @@ $(function () {
e.preventDefault();
var $this = $(this);
$.post($this.attr('href'), $this.attr('data-post'), function () {
window.location.replace('index.php');
window.location.replace('../setup/index.php?route=/setup');
});
});
});

View File

@ -58,7 +58,7 @@ final class MainController
$controller->destroy([
'id' => $params['id'] ?? null,
]);
header('Location: index.php' . Url::getCommonRaw());
header('Location: ../setup/index.php' . Url::getCommonRaw(['route' => '/setup']));
return;
}

View File

@ -35,7 +35,7 @@ final class ShowConfigController
// Clear current config and return to main page
$GLOBALS['ConfigFile']->resetConfigData();
// drop post data
$response->generateHeader303('index.php' . Url::getCommonRaw());
$response->generateHeader303('../setup/index.php' . Url::getCommonRaw(['route' => '/setup']));
return;
}
@ -52,6 +52,8 @@ final class ShowConfigController
}
// Show generated config file in a <textarea>
$response->generateHeader303('index.php' . Url::getCommonRaw(['page' => 'config']));
$response->generateHeader303(
'../setup/index.php' . Url::getCommonRaw(['route' => '/setup', 'page' => 'config'])
);
}
}

View File

@ -33,7 +33,7 @@ class FormProcessing
$form_display->fixErrors();
$response = ResponseRenderer::getInstance();
$response->disable();
$response->generateHeader303('index.php' . Url::getCommonRaw());
$response->generateHeader303('../setup/index.php' . Url::getCommonRaw(['route' => '/setup']));
}
if (! $form_display->process(false)) {
@ -47,7 +47,7 @@ class FormProcessing
if (! $form_display->hasErrors()) {
$response = ResponseRenderer::getInstance();
$response->disable();
$response->generateHeader303('index.php' . Url::getCommonRaw());
$response->generateHeader303('../setup/index.php' . Url::getCommonRaw(['route' => '/setup']));
return;
}

View File

@ -1,20 +0,0 @@
<?php
declare(strict_types=1);
use PhpMyAdmin\Common;
use PhpMyAdmin\Controllers\Setup\ShowConfigController;
if (! defined('ROOT_PATH')) {
// phpcs:disable PSR1.Files.SideEffects
define('ROOT_PATH', dirname(__DIR__) . DIRECTORY_SEPARATOR);
// phpcs:enable
}
// phpcs:disable PSR1.Files.SideEffects
define('PHPMYADMIN', true);
// phpcs:enable
require ROOT_PATH . 'setup/lib/common.inc.php';
(new ShowConfigController())(Common::getRequest());

View File

@ -4,6 +4,9 @@ declare(strict_types=1);
use PhpMyAdmin\Common;
use PhpMyAdmin\Controllers\Setup\MainController;
use PhpMyAdmin\Controllers\Setup\ShowConfigController;
use PhpMyAdmin\Controllers\Setup\ValidateController;
use PhpMyAdmin\Core;
if (! defined('ROOT_PATH')) {
// phpcs:disable PSR1.Files.SideEffects
@ -17,4 +20,24 @@ define('PHPMYADMIN', true);
require ROOT_PATH . 'setup/lib/common.inc.php';
(new MainController())(Common::getRequest());
$request = Common::getRequest();
$route = $request->getRoute();
if ($route === '/setup' || $route === '/') {
(new MainController())($request);
exit;
}
if ($route === '/setup/show-config') {
(new ShowConfigController())($request);
exit;
}
if ($route === '/setup/validate') {
(new ValidateController())($request);
exit;
}
Core::fatalError(sprintf(
__('Error 404! The page %s was not found.'),
'[code]' . htmlspecialchars($route) . '[/code]'
));

View File

@ -1,20 +0,0 @@
<?php
declare(strict_types=1);
use PhpMyAdmin\Common;
use PhpMyAdmin\Controllers\Setup\ValidateController;
if (! defined('ROOT_PATH')) {
// phpcs:disable PSR1.Files.SideEffects
define('ROOT_PATH', dirname(__DIR__) . DIRECTORY_SEPARATOR);
// phpcs:enable
}
// phpcs:disable PSR1.Files.SideEffects
define('PHPMYADMIN', true);
// phpcs:enable
require ROOT_PATH . 'setup/lib/common.inc.php';
(new ValidateController())(Common::getRequest());

View File

@ -25,13 +25,13 @@
<div id="menu">
<ul>
<li>
<a href="index.php{{ get_common() }}"{{ formset is empty ? ' class="active"' }}>
<a href="../setup/{{ url('/setup') }}"{{ formset is empty ? ' class="active"' }}>
{% trans 'Overview' %}
</a>
</li>
{% for page in pages %}
<li>
<a href="index.php{{ get_common({
<a href="../setup/{{ url('/setup', {
'page': 'form',
'formset': page.formset
}) }}"{{ formset == page.formset ? ' class="active"' }}>

View File

@ -6,7 +6,7 @@
<div class="card">
<h5 class="card-header">config.inc.php</h5>
<div class="card-body">
<form id="configFileForm" method="post" action="config.php">
<form id="configFileForm" method="post" action="../setup/{{ url('/setup/show-config') }}">
{% if has_check_page_refresh %}
<input type="hidden" name="check_page_refresh" id="check_page_refresh" value="">
{% endif %}

View File

@ -2,7 +2,7 @@
<h4>{% trans 'Warning' %}</h4>
<p>{% trans 'Submitted form contains errors' %}</p>
<p>
<a href="{{ get_common(url_params|merge({'mode': 'revert'})) }}">
<a href="../setup/{{ url('/setup', url_params|merge({'mode': 'revert'})) }}">
{% trans 'Try to revert erroneous fields to their default values' %}
</a>
</p>
@ -10,10 +10,10 @@
{{ errors|raw }}
<a class="btn" href="index.php{{ get_common() }}">
<a class="btn" href="../setup/{{ url('/setup') }}">
{% trans 'Ignore errors' %}
</a>
<a class="btn" href="{{ get_common(url_params|merge({'mode': 'edit'})) }}">
<a class="btn" href="../setup/{{ url('/setup', url_params|merge({'mode': 'edit'})) }}">
{% trans 'Show form' %}
</a>

View File

@ -1,7 +1,7 @@
{% extends 'setup/base.twig' %}
{% block content %}
<form id="select_lang" method="post">
<form id="select_lang" method="post" action="../setup/{{ url('/setup') }}">
{{ get_hidden_inputs() }}
<bdo lang="en" dir="ltr">
<label for="lang">
@ -33,7 +33,7 @@
<fieldset class="pma-fieldset simple">
<legend>{% trans 'Servers' %}</legend>
<form method="get" action="index.php" class="config-form disableAjax">
<form method="get" action="../setup/{{ url('/setup') }}" class="config-form disableAjax">
<input type="hidden" name="tab_hash" value="">
{% if has_check_page_refresh %}
<input type="hidden" name="check_page_refresh" id="check_page_refresh" value="">
@ -59,11 +59,11 @@
<td>{{ server.dsn }}</td>
<td class="text-nowrap">
<small>
<a href="{{ get_common(server.params.edit) }}">
<a href="../setup/{{ url('/setup', server.params.edit) }}">
{% trans 'Edit' %}
</a>
|
<a class="delete-server" href="{{ get_common(server.params.remove) }}" data-post="
<a class="delete-server" href="../setup/{{ url('/setup', server.params.remove) }}" data-post="
{{- get_common({ token: server.params.token }, '', false) }}">
{% trans 'Delete' %}
</a>
@ -97,7 +97,7 @@
<fieldset class="pma-fieldset simple">
<legend>{% trans 'Configuration file' %}</legend>
<form method="post" action="config.php" class="config-form disableAjax">
<form method="post" action="../setup/{{ url('/setup/show-config') }}" class="config-form disableAjax">
<input type="hidden" name="tab_hash" value="">
{% if has_check_page_refresh %}
<input type="hidden" name="check_page_refresh" id="check_page_refresh" value="">
@ -174,7 +174,7 @@
<div id="footer">
<a href="../{{ url('/url', {'url': 'https://www.phpmyadmin.net/'}) }}">{% trans 'phpMyAdmin homepage' %}</a>
<a href="../{{ url('/url', {'url': 'https://www.phpmyadmin.net/donate/'}) }}">{% trans 'Donate' %}</a>
<a href="{{ get_common({'version_check': '1'}) }}">{% trans 'Check for latest version' %}</a>
<a href="../setup/{{ url('/setup', {'version_check': true}) }}">{% trans 'Check for latest version' %}</a>
</div>
{% endblock %}

View File

@ -38,7 +38,7 @@ class FormProcessingTest extends AbstractNetworkTestCase
$this->mockResponse(
[
['status: 303 See Other'],
['Location: index.php?lang=en'],
['Location: ../setup/index.php?route=%2Fsetup&lang=en'],
303,
]
);
@ -85,7 +85,7 @@ class FormProcessingTest extends AbstractNetworkTestCase
$this->assertStringContainsString('mode=revert', $result);
$this->assertStringContainsString('<a class="btn" href="index.php?', $result);
$this->assertStringContainsString('<a class="btn" href="../setup/index.php?route=/setup&', $result);
$this->assertStringContainsString('mode=edit', $result);