diff options
author | Hugues Peccatte <hugues.peccatte@gmail.com> | 2014-04-20 18:04:53 +0400 |
---|---|---|
committer | Hugues Peccatte <hugues.peccatte@gmail.com> | 2014-04-22 00:14:31 +0400 |
commit | 6cb5756e7dbbbd40d2fb24a3974fd13eb5777f80 (patch) | |
tree | 051daedb187a0f1e0abd21f7f398288382cf0112 /libraries | |
parent | e0c64783a32a21cfc731e807744d32933278e0be (diff) |
Manage a config proporty to limit the number of items at first level in navigation panel.
Signed-off-by: Hugues Peccatte <hugues.peccatte@gmail.com>
Diffstat (limited to 'libraries')
-rw-r--r-- | libraries/config.default.php | 7 | ||||
-rw-r--r-- | libraries/config.values.php | 1 | ||||
-rw-r--r-- | libraries/config/messages.inc.php | 5 | ||||
-rw-r--r-- | libraries/config/setup.forms.php | 1 | ||||
-rw-r--r-- | libraries/config/user_preferences.forms.php | 1 | ||||
-rw-r--r-- | libraries/navigation/Nodes/Node.class.php | 42 |
6 files changed, 55 insertions, 2 deletions
diff --git a/libraries/config.default.php b/libraries/config.default.php index 1953cea6b6..31cd2151f5 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -848,6 +848,13 @@ $cfg['Error_Handler']['display'] = false; */ /** + * maximum number of items displayed on first level in navigation panel + * + * @global integer $cfg['FirstLevelNavigationItems'] + */ +$cfg['FirstLevelNavigationItems'] = 25; + +/** * maximum number of items displayed in navigation panel * * @global integer $cfg['MaxNavigationItems'] diff --git a/libraries/config.values.php b/libraries/config.values.php index d5b63ad45e..b8012291db 100644 --- a/libraries/config.values.php +++ b/libraries/config.values.php @@ -211,6 +211,7 @@ $cfg_db['_validators'] = array( 'CharTextareaRows' => 'validatePositiveNumber', 'ExecTimeLimit' => 'validateNonNegativeNumber', 'Export/sql_max_query_size' => 'validatePositiveNumber', + 'FirstLevelNavigationItems' => 'validatePositiveNumber', 'ForeignKeyMaxLimit' => 'validatePositiveNumber', 'Import/csv_enclosed' => array(array('validateByRegex', '/^.?$/')), 'Import/csv_escaped' => array(array('validateByRegex', '/^.$/')), diff --git a/libraries/config/messages.inc.php b/libraries/config/messages.inc.php index 2c2c5c9d4b..07f59b65ba 100644 --- a/libraries/config/messages.inc.php +++ b/libraries/config/messages.inc.php @@ -398,6 +398,11 @@ $strConfigMaxDbList_cmt = __('Users cannot set a higher value'); $strConfigMaxDbList_desc = __('Maximum number of databases displayed in database list.'); $strConfigMaxDbList_name = __('Maximum databases'); +$strConfigFirstLevelNavigationItems_desc = __( + 'The number of items that can be displayed on each page on first level of the ' + . 'navigation tree.' +); +$strConfigFirstLevelNavigationItems_name = __('Maximum items on first level'); $strConfigMaxNavigationItems_desc = __( 'The number of items that can be displayed on each page of the navigation tree.' ); diff --git a/libraries/config/setup.forms.php b/libraries/config/setup.forms.php index ddd01711af..1c612378e5 100644 --- a/libraries/config/setup.forms.php +++ b/libraries/config/setup.forms.php @@ -170,6 +170,7 @@ $forms['Navi_panel']['Navi_panel'] = array( 'NavigationLogoLink', 'NavigationLogoLinkWindow', 'NavigationTreePointerEnable', + 'FirstLevelNavigationItems', 'MaxNavigationItems', 'NavigationTreeEnableGrouping', 'NavigationTreeDisableDatabaseExpansion', diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php index 19601c119f..51b481fa76 100644 --- a/libraries/config/user_preferences.forms.php +++ b/libraries/config/user_preferences.forms.php @@ -83,6 +83,7 @@ $forms['Navi_panel']['Navi_panel'] = array( 'NavigationLogoLink', 'NavigationLogoLinkWindow', 'NavigationTreePointerEnable', + 'FirstLevelNavigationItems', 'MaxNavigationItems', 'NavigationTreeEnableGrouping', 'NavigationTreeDisableDatabaseExpansion', diff --git a/libraries/navigation/Nodes/Node.class.php b/libraries/navigation/Nodes/Node.class.php index 5354985de1..2cfe8bc90a 100644 --- a/libraries/navigation/Nodes/Node.class.php +++ b/libraries/navigation/Nodes/Node.class.php @@ -360,11 +360,49 @@ class Node */ public function getData($type, $pos, $searchClause = '') { - $query = "SELECT `SCHEMA_NAME` "; + /*$query = "SELECT `SCHEMA_NAME` "; $query .= "FROM `INFORMATION_SCHEMA`.`SCHEMATA` "; $query .= $this->_getWhereClause($searchClause); $query .= "ORDER BY `SCHEMA_NAME` ASC "; - $query .= "LIMIT $pos, {$GLOBALS['cfg']['MaxNavigationItems']}"; + $query .= "LIMIT $pos, {$GLOBALS['cfg']['MaxNavigationItems']}";*/ + + $query = "SELECT `SCHEMA_NAME` "; + $query .= "FROM `INFORMATION_SCHEMA`.`SCHEMATA`, "; + $query .= " ("; + $query .= " select DB_first_level "; + $query .= " from ( "; + $query .= " SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, "; + $query .= "'{$GLOBALS['cfg']['NavigationTreeDbSeparator']}', 1) "; + $query .= "DB_first_level "; + $query .= " FROM INFORMATION_SCHEMA.SCHEMATA "; + $query .= $this->_getWhereClause($searchClause); + $query .= " ) t "; + $query .= " ORDER BY DB_first_level ASC "; + $query .= " LIMIT $pos, {$GLOBALS['cfg']['FirstLevelNavigationItems']}"; + $query .= " ) t2 "; + $query .= "where 1 = locate(concat(DB_first_level, "; + $query .= "'{$GLOBALS['cfg']['NavigationTreeDbSeparator']}'), "; + $query .= "concat(SCHEMA_NAME, "; + $query .= "'{$GLOBALS['cfg']['NavigationTreeDbSeparator']}')) "; + $query .= "order by SCHEMA_NAME ASC"; + /*echo $query; + + SELECT `SCHEMA_NAME` + FROM `INFORMATION_SCHEMA`.`SCHEMATA`, + ( + select DB_first_level + from ( + SELECT distinct SUBSTRING_INDEX(SCHEMA_NAME, '_', 1) DB_first_level + FROM INFORMATION_SCHEMA.SCHEMATA + WHERE TRUE + ) t + ORDER BY DB_first_level ASC + LIMIT 0, 5 + ) t2 + where 1 = locate(concat(DB_first_level, '_'), concat(SCHEMA_NAME, '_')) + order by SCHEMA_NAME ASC + */ + return $GLOBALS['dbi']->fetchResult($query); } |