diff --git a/libraries/classes/Server/Select.php b/libraries/classes/Server/Select.php index 7f63896869..4853f6b065 100644 --- a/libraries/classes/Server/Select.php +++ b/libraries/classes/Server/Select.php @@ -7,11 +7,11 @@ declare(strict_types=1); namespace PhpMyAdmin\Server; +use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use function count; -use function htmlspecialchars; use function implode; use function is_array; use function strpos; @@ -31,8 +31,6 @@ class Select */ public static function render($not_only_options, $omit_fieldset) { - $retval = ''; - // Show as list? if ($not_only_options) { $list = $GLOBALS['cfg']['DisplayServersList']; @@ -41,29 +39,15 @@ class Select $list = false; } + $form_action = ''; if ($not_only_options) { - $retval .= '
'; - - if (! $omit_fieldset) { - $retval .= '
'; - } - - $retval .= Url::getHiddenFields([]); - $retval .= ' '; - - $retval .= ''; - if (! $omit_fieldset) { - $retval .= '
'; - } - - $retval .= '
'; - } elseif ($list) { - $retval .= ''; + $renderDetails['form_action'] = $form_action; } - return $retval; + $template = new Template(); + + return $template->render('server/select/index', $renderDetails); } } diff --git a/templates/server/select/index.twig b/templates/server/select/index.twig new file mode 100644 index 0000000000..dd456b5e48 --- /dev/null +++ b/templates/server/select/index.twig @@ -0,0 +1,37 @@ +{% if not_only_options %} +
+ {% if omit_fieldset == false %} +
+ {% endif %} + {{ get_hidden_fields([]) }} + + + {% if omit_fieldset == false %} +
+ {% endif %} +
+{% elseif servers.list %} + {% trans 'Current server:' %}
+ +{% else %} + {% include 'server/select/server_options.twig' with { + 'select': servers.select + } only %} +{% endif %} diff --git a/templates/server/select/server_options.twig b/templates/server/select/server_options.twig new file mode 100644 index 0000000000..661f3c0784 --- /dev/null +++ b/templates/server/select/server_options.twig @@ -0,0 +1,8 @@ +{% for server in select %} + +{% endfor %} diff --git a/test/classes/Server/SelectTest.php b/test/classes/Server/SelectTest.php index e2c001d8ca..646d40b269 100644 --- a/test/classes/Server/SelectTest.php +++ b/test/classes/Server/SelectTest.php @@ -38,17 +38,6 @@ class SelectTest extends AbstractTestCase $GLOBALS['table'] = 'table'; - //$_SESSION - } - - /** - * Test for Select::render - */ - public function testRender(): void - { - $not_only_options = false; - $omit_fieldset = false; - $GLOBALS['cfg']['DefaultTabServer'] = 'welcome'; $GLOBALS['cfg']['Servers'] = [ @@ -67,57 +56,50 @@ class SelectTest extends AbstractTestCase 'auth_type' => 'config', ], ]; + //$_SESSION + } + + /** + * Test for Select::render + * + * @dataProvider renderDataProvider + */ + public function testRender(bool $not_only_options, bool $omit_fieldset): void + { + if ($not_only_options) { + $GLOBALS['cfg']['DisplayServersList'] = null; + } - //$not_only_options=false & $omit_fieldset=false $html = Select::render($not_only_options, $omit_fieldset); $server = $GLOBALS['cfg']['Servers']['0']; - //server items - $this->assertStringContainsString( - $server['host'], - $html - ); - $this->assertStringContainsString( - $server['port'], - $html - ); - $this->assertStringContainsString( - $server['only_db'], - $html - ); - $this->assertStringContainsString( - $server['user'], - $html - ); + if ($not_only_options) { + if (! $omit_fieldset) { + $this->assertStringContainsString( + '', + $html + ); + } - $not_only_options = true; - $omit_fieldset = true; - $GLOBALS['cfg']['DisplayServersList'] = null; + $this->assertStringContainsString( + Util::getScriptNameForOption( + $GLOBALS['cfg']['DefaultTabServer'], + 'server' + ), + $html + ); - //$not_only_options=true & $omit_fieldset=true - $html = Select::render($not_only_options, $omit_fieldset); - - //$GLOBALS['cfg']['DefaultTabServer'] - $this->assertStringContainsString( - Util::getScriptNameForOption( - $GLOBALS['cfg']['DefaultTabServer'], - 'server' - ), - $html - ); - - //labels - $this->assertStringContainsString( - __('Current server:'), - $html - ); - $this->assertStringContainsString( - '(' . __('Servers') . ')', - $html - ); + $this->assertStringContainsString( + __('Current server:'), + $html + ); + $this->assertStringContainsString( + '(' . __('Servers') . ')', + $html + ); + } //server items - $server = $GLOBALS['cfg']['Servers']['0']; $this->assertStringContainsString( $server['host'], $html @@ -135,4 +117,22 @@ class SelectTest extends AbstractTestCase $html ); } + + public function renderDataProvider(): array + { + return [ + 'only options, don\'t omit fieldset' => [ + false, + false, + ], + 'not only options, omits fieldset' => [ + true, + true, + ], + 'not only options, don\'t omit fieldset' => [ + true, + false, + ], + ]; + } }