From debb6af80f33544dd222b917b9fb69ea4decd239 Mon Sep 17 00:00:00 2001 From: Daniel Tiringer Date: Mon, 3 May 2021 22:51:55 +0200 Subject: [PATCH] Move html from server/select to template Signed-off-by: Daniel Tiringer Factor out logic from server listing Signed-off-by: Daniel Tiringer Create the base twig skeleton Signed-off-by: Daniel Tiringer Insert template and variables to form part Signed-off-by: Daniel Tiringer Insert list view template part Signed-off-by: Daniel Tiringer Insert just options fork Signed-off-by: Daniel Tiringer Factor out repeating code into server_options template Signed-off-by: Daniel Tiringer Render the template Signed-off-by: Daniel Tiringer Comment out test parts that don't work due to translate Signed-off-by: Daniel Tiringer Fix the typos in the translatable elements Signed-off-by: Daniel Tiringer Refactor the test into separate scenarios Signed-off-by: Daniel Tiringer Remove indentation spaces Signed-off-by: Daniel Tiringer Codesniffer cleanup Signed-off-by: Daniel Tiringer Add test for fieldset existence Signed-off-by: Daniel Tiringer Code style fixes Signed-off-by: Daniel Tiringer Reorder lines in test Signed-off-by: Daniel Tiringer Replace include function with tag Signed-off-by: Daniel Tiringer Removing the escape calls Signed-off-by: Daniel Tiringer --- libraries/classes/Server/Select.php | 76 ++++++-------- templates/server/select/index.twig | 37 +++++++ templates/server/select/server_options.twig | 8 ++ test/classes/Server/SelectTest.php | 108 ++++++++++---------- 4 files changed, 132 insertions(+), 97 deletions(-) create mode 100644 templates/server/select/index.twig create mode 100644 templates/server/select/server_options.twig 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:' %}
+
    +
  • + {% for server in servers.list %} + {% if server.selected %} + {{ server.label }} + {% else %} + + {{- server.label -}} + + {% endif %} + {% endfor %} +
  • +
+{% 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, + ], + ]; + } }