From 3160799df6946510329b5a4dd89d78add2bd5a88 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Fri, 10 Jul 2015 19:33:05 +0530 Subject: [PATCH] Use phpmyadmin's secondary tabs instead of jQuery tabs Signed-off-by: Madhura Jayaratne --- js/server_plugins.js | 18 +--- libraries/Menu.class.php | 7 ++ libraries/server_plugins.lib.php | 102 +++++++++++++++++---- server_modules.php | 31 +++++++ server_plugins.php | 28 +----- test/libraries/PMA_server_plugins_test.php | 35 ++----- 6 files changed, 137 insertions(+), 84 deletions(-) create mode 100644 server_modules.php diff --git a/js/server_plugins.js b/js/server_plugins.js index 4867bda938..dc63827fec 100644 --- a/js/server_plugins.js +++ b/js/server_plugins.js @@ -2,24 +2,8 @@ /** * Functions used in server plugins pages */ -var pma_theme_image; // filled in server_plugins.php - AJAX.registerOnload('server_plugins.js', function () { - // Add tabs - $('#pluginsTabs').tabs({ - // Tab persistence - cookie: { name: 'pma_serverStatusTabs', expires: 1 }, - show: function (event, ui) { - // Fixes line break in the menu bar when the page overflows and scrollbar appears - $('#topmenu').menuResizer('resize'); - // 'Plugins' tab is too high due to hiding of 'Modules' by negative left position, - // hide tabs by changing display to fix it - $(ui.panel).closest('.ui-tabs').find('> div').not(ui.panel).css('display', 'none'); - $(ui.panel).css('display', 'block'); - } - }); - - // Make columns sortable, but only for tables with more than 1 data row + // Make columns sortable, but only for tables with more than 1 data row var $tables = $('#plugins_plugins table:has(tbody tr + tr)'); $tables.tablesorter({ sortList: [[0, 0]], diff --git a/libraries/Menu.class.php b/libraries/Menu.class.php index 5472ce32b7..51ee5ee1bf 100644 --- a/libraries/Menu.class.php +++ b/libraries/Menu.class.php @@ -612,6 +612,13 @@ class PMA_Menu $tabs['plugins']['icon'] = 'b_engine.png'; $tabs['plugins']['link'] = 'server_plugins.php'; $tabs['plugins']['text'] = __('Plugins'); + $tabs['plugins']['active'] = in_array( + basename($GLOBALS['PMA_PHP_SELF']), + array( + 'server_plugins.php', + 'server_modules.php', + ) + ); } else { $tabs['engine']['icon'] = 'b_engine.png'; $tabs['engine']['link'] = 'server_engines.php'; diff --git a/libraries/server_plugins.lib.php b/libraries/server_plugins.lib.php index 7c978f6c3c..a09c2a7884 100644 --- a/libraries/server_plugins.lib.php +++ b/libraries/server_plugins.lib.php @@ -13,28 +13,94 @@ if (! defined('PHPMYADMIN')) { } /** - * Returns the html for plugin and module Info. + * Get the HTML for the sub tabs * - * @param Array $plugins Plugin list + * @param string $activeUrl url of the active sub tab * - * @param Array $modules Module list - * - * @return string + * @return string HTML for sub tabs */ -function PMA_getPluginAndModuleInfo($plugins, $modules) +function PMA_getHtmlForPluginsSubTabs($activeUrl) { - $html = ''; - $html .= '
'; - $html .= ''; - $html .= PMA_getPluginTab($plugins); - $html .= PMA_getModuleTab($modules); - $html .= '
'; - return $html; + $url_params = PMA_URL_getCommon(); + $items = array( + array( + 'name' => __('Plugins'), + 'url' => 'server_plugins.php' + ), + array( + 'name' => __('Modules'), + 'url' => 'server_modules.php' + ) + ); + + $retval = ''; + $retval .= '
'; + + return $retval; +} + +/** + * Returns the common SQL used to retrieve plugin and modules data + * + * @return string SQL + */ +function PMA_getServerPluginModuleSQL() +{ + return "SELECT p.plugin_name, p.plugin_type, p.is_active, m.module_name, + m.module_library, m.module_version, m.module_author, + m.module_description, m.module_license + FROM data_dictionary.plugins p + JOIN data_dictionary.modules m USING (module_name) + ORDER BY m.module_name, p.plugin_type, p.plugin_name"; +} + +/** + * Returns details about server plugins + * + * @return array server plugins data + */ +function PMA_getServerPlugins() +{ + $sql = PMA_getServerPluginModuleSQL(); + $res = $GLOBALS['dbi']->query($sql); + $plugins = array(); + while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { + $plugins[$row['plugin_type']][] = $row; + } + $GLOBALS['dbi']->freeResult($res); + ksort($plugins); + return $plugins; +} + +/** + * Returns details about server modules + * + * @return array server modules data + */ +function PMA_getServerModules() +{ + $sql = PMA_getServerPluginModuleSQL(); + $res = $GLOBALS['dbi']->query($sql); + $modules = array(); + while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { + $modules[$row['module_name']]['info'] = $row; + $modules[$row['module_name']]['plugins'][$row['plugin_type']][] = $row; + } + $GLOBALS['dbi']->freeResult($res); + return $modules; } /** diff --git a/server_modules.php b/server_modules.php new file mode 100644 index 0000000000..b167b9f133 --- /dev/null +++ b/server_modules.php @@ -0,0 +1,31 @@ +addHTML('
'); +$response->addHTML(PMA_getHtmlForPluginsSubTabs('server_modules.php')); +$response->addHTML(PMA_getModuleTab($modules)); +$response->addHTML('
'); + +exit; diff --git a/server_plugins.php b/server_plugins.php index 480ddeec2d..11654b8f8d 100644 --- a/server_plugins.php +++ b/server_plugins.php @@ -26,32 +26,14 @@ $scripts->addFile('server_plugins.js'); require 'libraries/server_common.inc.php'; require 'libraries/server_plugins.lib.php'; -/** - * Prepare plugin list - */ -$sql = "SELECT p.plugin_name, p.plugin_type, p.is_active, m.module_name, - m.module_library, m.module_version, m.module_author, - m.module_description, m.module_license - FROM data_dictionary.plugins p - JOIN data_dictionary.modules m USING (module_name) - ORDER BY m.module_name, p.plugin_type, p.plugin_name"; -$res = $GLOBALS['dbi']->query($sql); -$plugins = array(); -$modules = array(); -while ($row = $GLOBALS['dbi']->fetchAssoc($res)) { - $plugins[$row['plugin_type']][] = $row; - $modules[$row['module_name']]['info'] = $row; - $modules[$row['module_name']]['plugins'][$row['plugin_type']][] = $row; -} -$GLOBALS['dbi']->freeResult($res); - -// sort plugin list (modules are already sorted) -ksort($plugins); +$plugins = PMA_getServerPlugins(); /** * Displays the page */ -$response->addHTML(PMA_getHtmlForSubPageHeader('plugins')); -$response->addHTML(PMA_getPluginAndModuleInfo($plugins, $modules)); +$response->addHTML('
'); +$response->addHTML(PMA_getHtmlForPluginsSubTabs('server_plugins.php')); +$response->addHTML(PMA_getPluginTab($plugins)); +$response->addHTML('
'); exit; diff --git a/test/libraries/PMA_server_plugins_test.php b/test/libraries/PMA_server_plugins_test.php index 300dadfec0..38412bc92d 100644 --- a/test/libraries/PMA_server_plugins_test.php +++ b/test/libraries/PMA_server_plugins_test.php @@ -79,7 +79,6 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase */ $plugins = array(); - $modules = array(); $row = array(); $row["plugin_name"] = "plugin_name1"; @@ -92,22 +91,10 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase $row["module_description"] = "module_description1"; $row["is_active"] = true; $plugins[$row['plugin_type']][] = $row; - $modules[$row['module_name']]['info'] = $row; - $modules[$row['module_name']]['plugins'][$row['plugin_type']][] = $row; - $html = PMA_getPluginAndModuleInfo($plugins, $modules); + $html = PMA_getPluginTab($plugins); - //validate 1: PMA_getPluginTab - $this->assertContains( - 'Plugins', - $html - ); - //validate 2: PMA_getModuleTab - $this->assertContains( - 'Modules', - $html - ); - //validate 3:Items + //validate 1:Items $this->assertContains( 'Plugin', $html @@ -116,18 +103,10 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase 'Module', $html ); - $this->assertContains( - 'Plugin', - $html - ); $this->assertContains( 'Library', $html ); - $this->assertContains( - 'Plugin', - $html - ); $this->assertContains( 'Version', $html @@ -141,11 +120,15 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase $html ); - //validate 4: one Item HTML + //validate 2: one Item HTML $this->assertContains( 'plugin_name1', $html ); + $this->assertContains( + 'module_name1', + $html + ); $this->assertContains( 'module_library1', $html @@ -155,11 +138,11 @@ class PMA_ServerPlugins_Test extends PHPUnit_Framework_TestCase $html ); $this->assertContains( - 'module_description1', + 'module_author1', $html ); $this->assertContains( - 'module_author1', + 'module_license1', $html ); }