diff --git a/ChangeLog b/ChangeLog index 13ca5b45df..568cd831d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,7 @@ phpMyAdmin - ChangeLog - issue #14636 Move operation causes SELECT * FROM `undefined` - issue #14630 Enum '0' produces incorrect search SQL - issue #14223 Fix TypeError in database designer +- issue #13621 QBE selenium tests broken since merge of #13342 4.8.3 (2018-08-22) - issue #14314 Error when naming a database '0' diff --git a/db_qbe.php b/db_qbe.php index 3860d68b13..12403b6972 100644 --- a/db_qbe.php +++ b/db_qbe.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Relation; use PhpMyAdmin\Response; use PhpMyAdmin\SavedSearches; use PhpMyAdmin\Sql; +use PhpMyAdmin\Template; use PhpMyAdmin\Url; use PhpMyAdmin\Util; @@ -20,9 +21,9 @@ use PhpMyAdmin\Util; require_once 'libraries/common.inc.php'; $response = Response::getInstance(); +$relation = new Relation(); // Gets the relation settings -$relation = new Relation(); $cfgRelation = $relation->getRelationsParam(); $savedSearchList = array(); @@ -138,6 +139,23 @@ unset($message_to_display); // create new qbe search instance $db_qbe = new Qbe($GLOBALS['db'], $savedSearchList, $savedSearch); +$secondaryTabs = [ + 'multi' => [ + 'link' => 'db_multi_table_query.php', + 'text' => __('Multi-table query'), + ], + 'qbe' => [ + 'link' => 'db_qbe.php', + 'text' => __('Query by example'), + ], +]; +$response->addHTML( + Template::get('secondary_tabs')->render([ + 'url_params' => $url_params, + 'sub_tabs' => $secondaryTabs, + ]) +); + $url = 'db_designer.php' . Url::getCommon( array_merge( $url_params, diff --git a/libraries/classes/Core.php b/libraries/classes/Core.php index d574138e37..6615b19dd3 100644 --- a/libraries/classes/Core.php +++ b/libraries/classes/Core.php @@ -35,6 +35,7 @@ class Core 'db_export.php', 'db_importdocsql.php', 'db_multi_table_query.php', + 'db_qbe.php', 'db_structure.php', 'db_import.php', 'db_operations.php', diff --git a/libraries/classes/Database/Qbe.php b/libraries/classes/Database/Qbe.php index e2f326ce29..bf16a0cf0f 100644 --- a/libraries/classes/Database/Qbe.php +++ b/libraries/classes/Database/Qbe.php @@ -9,6 +9,7 @@ namespace PhpMyAdmin\Database; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Message; use PhpMyAdmin\Relation; use PhpMyAdmin\Table; use PhpMyAdmin\Template; diff --git a/libraries/classes/Menu.php b/libraries/classes/Menu.php index 4e34ac8f01..140b8fa508 100644 --- a/libraries/classes/Menu.php +++ b/libraries/classes/Menu.php @@ -474,11 +474,18 @@ class Menu $tabs['search']['warning'] = __('Database seems to be empty!'); } - $tabs['multi_table_query']['text'] = __('Query'); - $tabs['multi_table_query']['icon'] = 's_db'; - $tabs['multi_table_query']['link'] = 'db_multi_table_query.php'; + $tabs['query']['text'] = __('Query'); + $tabs['query']['icon'] = 's_db'; + $tabs['query']['link'] = 'db_multi_table_query.php'; + $tabs['query']['active'] = in_array( + basename($GLOBALS['PMA_PHP_SELF']), + array( + 'db_multi_table_query.php', + 'db_qbe.php', + ) + ); if ($num_tables == 0) { - $tabs['qbe']['warning'] = __('Database seems to be empty!'); + $tabs['query']['warning'] = __('Database seems to be empty!'); } $tabs['export']['text'] = __('Export'); diff --git a/libraries/classes/Util.php b/libraries/classes/Util.php index 4da643b562..af23753d99 100644 --- a/libraries/classes/Util.php +++ b/libraries/classes/Util.php @@ -3978,7 +3978,7 @@ class Util 'structure' => __('Structure'), 'sql' => __('SQL'), 'search' => __('Search'), - 'multi_table_query' => __('Query'), + 'query' => __('Query'), 'export' => __('Export'), 'import' => __('Import'), 'operation' => __('Operations'), diff --git a/templates/database/multi_table_query/form.twig b/templates/database/multi_table_query/form.twig index 2aff0ebfbb..f9ef6146bc 100644 --- a/templates/database/multi_table_query/form.twig +++ b/templates/database/multi_table_query/form.twig @@ -1,3 +1,18 @@ +{% include 'secondary_tabs.twig' with { + 'url_params': { + 'db': db + }, + 'sub_tabs': [ + { + 'link': 'db_multi_table_query.php', + 'text': 'Multi-table query'|trans + }, + { + 'link': 'db_qbe.php', + 'text': 'Query by example'|trans + } + ] +} only %} {{ Util_getDivForSliderEffect('query_div', 'Query window'|trans, 'open') }}
diff --git a/test/selenium/QueryByExampleTest.php b/test/selenium/QueryByExampleTest.php index e74b0b885c..c6579144a1 100644 --- a/test/selenium/QueryByExampleTest.php +++ b/test/selenium/QueryByExampleTest.php @@ -26,7 +26,6 @@ class QueryByExampleTest extends TestBase */ public function setUp() { - $this->markTestSkipped('Broken, see https://github.com/phpmyadmin/phpmyadmin/issues/13621'); parent::setUp(); $this->dbQuery( @@ -65,16 +64,19 @@ class QueryByExampleTest extends TestBase $this->waitForElement('byPartialLinkText', 'Query')->click(); $this->waitAjax(); + $this->waitForElement('byPartialLinkText', 'Query by example')->click(); + $this->waitAjax(); + /* Select Columns to be used in the query */ $select = $this->select( $this->waitForElement('byName', 'criteriaColumn[0]') ); - $select->selectOptionByLabel('`test_table`.`id`'); + $select->selectOptionByValue('`test_table`.`id`'); $select = $this->select( $this->waitForElement('byName', 'criteriaColumn[1]') ); - $select->selectOptionByLabel('`test_table`.`val`'); + $select->selectOptionByValue('`test_table`.`val`'); /* Set aliases for the columns */ $this->waitForElement('byName', 'criteriaAlias[0]')->value('ID'); @@ -95,12 +97,12 @@ class QueryByExampleTest extends TestBase $select = $this->select( $this->waitForElement('byName', 'criteriaSortOrder[0]') ); - $select->selectOptionByLabel('2'); + $select->selectOptionByValue('2'); $select = $this->select( $this->waitForElement('byName', 'criteriaSortOrder[1]') ); - $select->selectOptionByLabel('1'); + $select->selectOptionByValue('1'); /* Set criteria conditions */ $this->waitForElement('byName', 'criteria[0]')->value('> 1');