diff --git a/ChangeLog b/ChangeLog index 3935ec69ca..915e38c2d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,9 @@ + Patch #3256122 [search] Show/hide db search results + Patch #3302354 Add gettext wrappers around a message + Remove deprecated function PMA_DBI_get_fields ++ rfe #2098927 Remember recent tables ++ rfe #3078542 Remember the last sort order for each table ++ AJAX for Create table in navigation panel 3.4.2.0 (not yet released) - bug #3301249 [interface] Iconic table operations does not remove inline edit label @@ -19,6 +22,7 @@ - [auth] Fixed error handling for signon auth method. - bug #3276001 [core] Avoid caching of index.php. - bug #3306958 [interface] Unnecessary Details slider +- bug #3308476 [interface] "Show all" not persistent after a sort 3.4.1.0 (2011-05-20) - bug #3301108 [interface] Synchronize and already configured host diff --git a/Documentation.html b/Documentation.html index 3bbb832dd4..2ff0881ba0 100644 --- a/Documentation.html +++ b/Documentation.html @@ -1077,6 +1077,25 @@ ALTER TABLE `pma_column_comments` +
+ $cfg['Servers'][$i]['table_uiprefs'] string +
+
+ Since release 3.5.0 phpMyAdmin can be configured to remember several things + (table sorting + $cfg['RememberSorting'] + , etc.) for browsing tables. + Without configuring the storage, these features still can be used, + but the values will disappear after you logout.

+ + To allow the usage of these functionality persistently: + + +
+
$cfg['Servers'][$i]['tracking'] string
@@ -1934,6 +1953,9 @@ $cfg['TrustedProxies'] = each row on a vertical lineup. +
$cfg['RememberSorting'] boolean
+
If enabled, when browsing tables, the sorting of each table is remembered.
+
$cfg['HeaderFlipType'] string
The HeaderFlipType can be set to 'auto', 'css' or 'fake'. When using diff --git a/config.sample.inc.php b/config.sample.inc.php index 95d3a1a911..edffd03345 100644 --- a/config.sample.inc.php +++ b/config.sample.inc.php @@ -53,6 +53,7 @@ $cfg['Servers'][$i]['AllowNoPassword'] = false; // $cfg['Servers'][$i]['column_info'] = 'pma_column_info'; // $cfg['Servers'][$i]['history'] = 'pma_history'; // $cfg['Servers'][$i]['recent'] = 'pma_recent'; +// $cfg['Servers'][$i]['table_uiprefs'] = 'pma_table_uiprefs'; // $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; // $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords'; // $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; diff --git a/db_datadict.php b/db_datadict.php index e9d18fdf1e..9941ef4440 100644 --- a/db_datadict.php +++ b/db_datadict.php @@ -135,7 +135,7 @@ while ($row = PMA_DBI_fetch_assoc($rowset)) { $analyzed_sql = PMA_SQP_analyze(PMA_SQP_parse($show_create_table)); } - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if (!empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/db_qbe.php b/db_qbe.php index a076798741..a5bd7a7e4e 100644 --- a/db_qbe.php +++ b/db_qbe.php @@ -686,7 +686,6 @@ if (!empty($qry_select)) { // 2. FROM // Create LEFT JOINS out of Relations -// Code originally by Mike Beck // If we can use Relations we could make some left joins. // First find out if relations are available in this database. diff --git a/js/functions.js b/js/functions.js index a075fdb3d4..3735397aab 100644 --- a/js/functions.js +++ b/js/functions.js @@ -1309,6 +1309,53 @@ function PMA_showNoticeForEnum(selectElement) { } } +/** + * Generates a dialog box to pop up the create_table form + */ +function PMA_createTableDialog( div, url , target){ + /** + * @var button_options Object that stores the options passed to jQueryUI + * dialog + */ + var button_options = {}; + // in the following function we need to use $(this) + button_options[PMA_messages['strCancel']] = function() {$(this).parent().dialog('close').remove();} + + var button_options_error = {}; + button_options_error[PMA_messages['strOK']] = function() {$(this).parent().dialog('close').remove();} + + var $msgbox = PMA_ajaxShowMessage(); + + $.get( target , url , function(data) { + //in the case of an error, show the error message returned. + if (data.success != undefined && data.success == false) { + div + .append(data.error) + .dialog({ + title: PMA_messages['strCreateTable'], + height: 230, + width: 900, + open: PMA_verifyTypeOfAllColumns, + buttons : button_options_error + })// end dialog options + //remove the redundant [Back] link in the error message. + .find('fieldset').remove(); + } else { + div + .append(data) + .dialog({ + title: PMA_messages['strCreateTable'], + height: 600, + width: 900, + open: PMA_verifyTypeOfAllColumns, + buttons : button_options + }); // end dialog options + } + PMA_ajaxRemoveMessage($msgbox); + }) // end $.get() + +} + /** * jQuery function that uses jQueryUI's dialogs to confirm with user. Does not * return a jQuery object yet and hence cannot be chained @@ -1403,7 +1450,7 @@ jQuery.fn.PMA_sort_table = function(text_selector) { */ $(document).ready(function() { - /** + /** * Attach event handler to the submit action of the create table minimal form * and retrieve the full table form and display it in a dialog * @@ -1412,50 +1459,15 @@ $(document).ready(function() { $("#create_table_form_minimal.ajax").live('submit', function(event) { event.preventDefault(); $form = $(this); - - /* @todo Validate this form! */ - - /** - * @var button_options Object that stores the options passed to jQueryUI - * dialog - */ - var button_options = {}; - // in the following function we need to use $(this) - button_options[PMA_messages['strCancel']] = function() {$(this).dialog('close').remove();} - - var button_options_error = {}; - button_options_error[PMA_messages['strOK']] = function() {$(this).dialog('close').remove();} - - var $msgbox = PMA_ajaxShowMessage(); PMA_prepareForAjaxRequest($form); - $.get($form.attr('action'), $form.serialize(), function(data) { - //in the case of an error, show the error message returned. - if (data.success != undefined && data.success == false) { - $('
') - .append(data.error) - .dialog({ - title: PMA_messages['strCreateTable'], - height: 230, - width: 900, - open: PMA_verifyTypeOfAllColumns, - buttons : button_options_error - })// end dialog options - //remove the redundant [Back] link in the error message. - .find('fieldset').remove(); - } else { - $('
') - .append(data) - .dialog({ - title: PMA_messages['strCreateTable'], - height: 600, - width: 900, - open: PMA_verifyTypeOfAllColumns, - buttons : button_options - }); // end dialog options - } - PMA_ajaxRemoveMessage($msgbox); - }) // end $.get() + /*variables which stores the common attributes*/ + var url = $form.serialize(); + var action = $form.attr('action'); + var div = $('
'); + + /*Calling to the createTableDialog function*/ + PMA_createTableDialog(div, url, action); // empty table name and number of columns from the minimal form $form.find('input[name=table],input[name=num_fields]').val(''); diff --git a/js/navigation.js b/js/navigation.js index 52d13cfd4d..7f9a013119 100644 --- a/js/navigation.js +++ b/js/navigation.js @@ -202,4 +202,22 @@ $(document).ready(function(){ window.parent.refreshMain($('#LeftDefaultTabTable')[0].value); } }); -}); + + /* Create table */ + $('#newtable a.ajax').click(function(event){ + event.preventDefault(); + /*Getting the url */ + var url = $('#newtable a').attr("href"); + if (url.substring(0, 15) == "tbl_create.php?") { + url = url.substring(15); + } + url = url +"&num_fields=&ajax_request=true"; + /*Creating a div on the frame_content frame */ + var div = parent.frame_content.$('
'); + var target = "tbl_create.php"; + + /*Calling to the createTableDialog function*/ + PMA_createTableDialog(div , url , target); + });//end of create new table +});//end of document get ready + diff --git a/js/server_privileges.js b/js/server_privileges.js index 8b9c5e99c3..314663f2e4 100644 --- a/js/server_privileges.js +++ b/js/server_privileges.js @@ -241,11 +241,11 @@ $(document).ready(function() { $("#reload_privileges_anchor.ajax").live("click", function(event) { event.preventDefault(); - PMA_ajaxShowMessage(PMA_messages['strReloadingPrivileges']); + var $msgbox = PMA_ajaxShowMessage(PMA_messages['strReloadingPrivileges']); $.get($(this).attr("href"), {'ajax_request': true}, function(data) { if(data.success == true) { - PMA_ajaxShowMessage(data.message); + PMA_ajaxRemoveMessage($msgbox); } else { PMA_ajaxShowMessage(data.error); diff --git a/libraries/Table.class.php b/libraries/Table.class.php index d41eadc8d9..c73eb31e5a 100644 --- a/libraries/Table.class.php +++ b/libraries/Table.class.php @@ -11,6 +11,10 @@ */ class PMA_Table { + /** + * UI preferences property: sorted column + */ + const PROP_SORTED_COLUMN = 'sorted_col'; static $cache = array(); @@ -39,6 +43,11 @@ class PMA_Table */ var $settings = array(); + /** + * @var array UI preferences + */ + var $uiprefs; + /** * @var array errors occured */ @@ -1185,5 +1194,142 @@ class PMA_Table return $return; } + + /** + * Return UI preferences for this table from phpMyAdmin database. + * + * @uses PMA_query_as_controluser() + * @uses PMA_DBI_fetch_array() + * @uses json_decode() + * + * @return array + */ + protected function getUiPrefsFromDb() + { + $pma_table = PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) .".". + PMA_backquote($GLOBALS['cfg']['Server']['table_uiprefs']); + + // Read from phpMyAdmin database + $sql_query = + " SELECT `prefs` FROM " . $pma_table . + " WHERE `username` = '" . $GLOBALS['cfg']['Server']['user'] . "'" . + " AND `db_name` = '" . $this->db_name . "'" . + " AND `table_name` = '" . $this->name . "'"; + + $row = PMA_DBI_fetch_array(PMA_query_as_controluser($sql_query)); + if (isset($row[0])) { + return json_decode($row[0], true); + } else { + return array(); + } + } + + /** + * Save this table's UI preferences into phpMyAdmin database. + * + * @uses PMA_DBI_try_query() + * @uses json_decode() + * @uses PMA_Message + * + * @return true|PMA_Message + */ + protected function saveUiPrefsToDb() + { + $pma_table = PMA_backquote($GLOBALS['cfg']['Server']['pmadb']) .".". + PMA_backquote($GLOBALS['cfg']['Server']['table_uiprefs']); + + $username = $GLOBALS['cfg']['Server']['user']; + $sql_query = + " REPLACE INTO " . $pma_table . + " VALUES ('" . $username . "', '" . $this->db_name . "', '" . + $this->name . "', '" . PMA_sqlAddslashes(json_encode($this->uiprefs)) . "')"; + + $success = PMA_DBI_try_query($sql_query, $GLOBALS['controllink']); + + if (!$success) { + $message = PMA_Message::error(__('Could not save table UI preferences')); + $message->addMessage('

'); + $message->addMessage(PMA_Message::rawError(PMA_DBI_getError($GLOBALS['controllink']))); + return $message; + } + return true; + } + + /** + * Loads the UI preferences for this table. + * If pmadb and table_uiprefs is set, it will load the UI preferences from + * phpMyAdmin database. + * + * @uses getUiPrefsFromDb() + */ + protected function loadUiPrefs() + { + // set session variable if it's still undefined + if (! isset($_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name])) { + $_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name] = + // check whether we can get from pmadb + (strlen($GLOBALS['cfg']['Server']['pmadb']) + && strlen($GLOBALS['cfg']['Server']['table_uiprefs'])) ? + $this->getUiPrefsFromDb() : array(); + } + $this->uiprefs =& $_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name]; + } + + /** + * Get UI preferences array for this table. + * If pmadb and table_uiprefs is set, it will get the UI preferences from + * phpMyAdmin database. + * + * @return array + */ + public function getUiPrefs() + { + if (! isset($this->uiprefs)) { + $this->loadUiPrefs(); + } + return $this->uiprefs; + } + + /** + * Get a property from UI preferences. + * Return false if the property is not found. + * Available property: + * - PROP_SORTED_COLUMN + * + * @uses loadUiPrefs() + * + * @param string $property + * @return mixed + */ + public function getUiProp($property) + { + if (! isset($this->uiprefs)) { + $this->loadUiPrefs(); + } + return isset($this->uiprefs[$property]) ? $this->uiprefs[$property] : false; + } + + /** + * Set a property from UI preferences. + * If pmadb and table_uiprefs is set, it will save the UI preferences to + * phpMyAdmin database. + * + * @param string $property + * @param mixed $value + * @return true|PMA_Message + */ + public function setUiProp($property, $value) + { + if (! isset($this->uiprefs)) { + $this->loadUiPrefs(); + } + $this->uiprefs[$property] = $value; + // check if pmadb is set + if (strlen($GLOBALS['cfg']['Server']['pmadb']) + && strlen($GLOBALS['cfg']['Server']['table_uiprefs'])) { + return $this->saveUiprefsToDb(); + } + return true; + } } ?> diff --git a/libraries/common.inc.php b/libraries/common.inc.php index d75084b3cf..70b70fe797 100644 --- a/libraries/common.inc.php +++ b/libraries/common.inc.php @@ -540,6 +540,7 @@ $_REQUEST['js_frame'] = PMA_ifSetOr($_REQUEST['js_frame'], ''); */ $GLOBALS['js_include'] = array(); $GLOBALS['js_include'][] = 'jquery/jquery-1.6.1.js'; +$GLOBALS['js_include'][] = 'jquery/jquery-ui-1.8.custom.js'; $GLOBALS['js_include'][] = 'update-location.js'; /** diff --git a/libraries/common.lib.php b/libraries/common.lib.php index 538d8ac9a4..39b78f9b32 100644 --- a/libraries/common.lib.php +++ b/libraries/common.lib.php @@ -812,9 +812,7 @@ function PMA_getTableList($db, $tables = null, $limit_offset = 0, $limit_count = * or array of it * @param boolean $do_it a flag to bypass this function (used by dump * functions) - * @return mixed the "backquoted" database, table or field name if the - * current MySQL release is >= 3.23.6, the original one - * else + * @return mixed the "backquoted" database, table or field name * @access public */ function PMA_backquote($a_name, $do_it = true) @@ -1090,10 +1088,11 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view $edit_link = 'server_sql.php'; } - // Want to have the query explained (Mike Beck 2002-05-22) + // Want to have the query explained // but only explain a SELECT (that has not been explained) /* SQL-Parser-Analyzer */ $explain_link = ''; + $is_select = false; if (! empty($cfg['SQLQuery']['Explain']) && ! $query_too_big) { $explain_params = $url_params; // Detect if we are validating as well @@ -1101,7 +1100,6 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view if (! empty($GLOBALS['validatequery'])) { $explain_params['validatequery'] = 1; } - $is_select = false; if (preg_match('@^SELECT[[:space:]]+@i', $sql_query)) { $explain_params['sql_query'] = 'EXPLAIN ' . $sql_query; $_message = __('Explain SQL'); @@ -1137,7 +1135,7 @@ function PMA_showMessage($message, $sql_query = null, $type = 'notice', $is_view $url_qpart = PMA_generate_common_url($url_params); // Also we would like to get the SQL formed in some nice - // php-code (Mike Beck 2002-05-22) + // php-code if (! empty($cfg['SQLQuery']['ShowAsPHP']) && ! $query_too_big) { $php_params = $url_params; diff --git a/libraries/config.default.php b/libraries/config.default.php index 5c0b1b2d14..aa883d2dc7 100644 --- a/libraries/config.default.php +++ b/libraries/config.default.php @@ -345,6 +345,13 @@ $cfg['Servers'][$i]['designer_coords'] = ''; */ $cfg['Servers'][$i]['recent'] = ''; +/** + * table to store UI preferences for tables + * - leave blank for no "persistent" UI preferences + * SUGGESTED: 'pma_table_uiprefs' + */ +$cfg['Servers'][$i]['table_uiprefs'] = ''; + /** * table to store SQL tracking * - leave blank for no SQL tracking @@ -2264,6 +2271,13 @@ $cfg['ModifyDeleteAtRight'] = false; */ $cfg['DefaultDisplay'] = 'horizontal'; +/** + * remember the last way a table sorted + * + * @global string $cfg['RememberSorting'] + */ +$cfg['RememberSorting'] = true; + /** * default display direction for altering/creating columns (tbl_properties) * (horizontal|vertical|) diff --git a/libraries/config/messages.inc.php b/libraries/config/messages.inc.php index e8ce0df96b..034214c4c2 100644 --- a/libraries/config/messages.inc.php +++ b/libraries/config/messages.inc.php @@ -346,6 +346,8 @@ $strConfigQueryWindowWidth_desc = __('Query window width (in pixels)'); $strConfigQueryWindowWidth_name = __('Query window width'); $strConfigRecodingEngine_desc = __('Select which functions will be used for character set conversion'); $strConfigRecodingEngine_name = __('Recoding engine'); +$strConfigRememberSorting_desc = __('When browsing tables, the sorting of each table is remembered'); +$strConfigRememberSorting_name = __('Remember table\'s sorting'); $strConfigRepeatCells_desc = __('Repeat the headers every X cells, [kbd]0[/kbd] deactivates this feature'); $strConfigRepeatCells_name = __('Repeat headers'); $strConfigReplaceHelpImg_desc = __('Show help button instead of Documentation text'); @@ -420,6 +422,8 @@ $strConfigServers_table_coords_desc = __('Leave blank for no PDF schema support, $strConfigServers_table_coords_name = __('PDF schema: table coordinates'); $strConfigServers_table_info_desc = __('Table to describe the display columns, leave blank for no support; suggested: [kbd]pma_table_info[/kbd]'); $strConfigServers_table_info_name = __('Display columns table'); +$strConfigServers_table_uiprefs_desc = __('Leave blank for no "persistent" tables\'UI preferences across sessions, suggested: [kbd]pma_table_uiprefs[/kbd]'); +$strConfigServers_table_uiprefs_name = __('UI preferences table'); $strConfigServers_tracking_add_drop_database_desc = __('Whether a DROP DATABASE IF EXISTS statement will be added as first line to the log when creating a database.'); $strConfigServers_tracking_add_drop_database_name = __('Add DROP DATABASE'); $strConfigServers_tracking_add_drop_table_desc = __('Whether a DROP TABLE IF EXISTS statement will be added as first line to the log when creating a table.'); diff --git a/libraries/config/setup.forms.php b/libraries/config/setup.forms.php index 7269823d2d..5cf5111ce2 100644 --- a/libraries/config/setup.forms.php +++ b/libraries/config/setup.forms.php @@ -74,6 +74,7 @@ $forms['Servers']['Server_pmadb'] = array('Servers' => array(1 => array( 'column_info' => 'pma_column_info', 'history' => 'pma_history', 'recent' => 'pma_recent', + 'table_uiprefs' => 'pma_table_uiprefs', 'tracking' => 'pma_tracking', 'table_coords' => 'pma_table_coords', 'pdf_pages' => 'pma_pdf_pages', @@ -200,7 +201,8 @@ $forms['Main_frame']['Browse'] = array( 'LimitChars', 'ModifyDeleteAtLeft', 'ModifyDeleteAtRight', - 'DefaultDisplay'); + 'DefaultDisplay', + 'RememberSorting'); $forms['Main_frame']['Edit'] = array( 'ProtectBinary', 'ShowFunctionFields', diff --git a/libraries/config/user_preferences.forms.php b/libraries/config/user_preferences.forms.php index ffe036632f..68619c9f43 100644 --- a/libraries/config/user_preferences.forms.php +++ b/libraries/config/user_preferences.forms.php @@ -111,7 +111,8 @@ $forms['Main_frame']['Browse'] = array( 'LimitChars', 'ModifyDeleteAtLeft', 'ModifyDeleteAtRight', - 'DefaultDisplay'); + 'DefaultDisplay', + 'RememberSorting'); $forms['Main_frame']['Edit'] = array( 'ProtectBinary', 'ShowFunctionFields', diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php index 33eae075f8..8b35e4e528 100644 --- a/libraries/display_tbl.lib.php +++ b/libraries/display_tbl.lib.php @@ -445,6 +445,11 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $ global $sql_query, $num_rows; global $vertical_display, $highlight_columns; + // required to generate sort links that will remember whether the + // "Show all" button has been clicked + $sql_md5 = md5($GLOBALS['sql_query']); + $session_max_rows = $_SESSION['tmp_user_values']['query'][$sql_md5]['max_rows']; + if ($analyzed_sql == '') { $analyzed_sql = array(); } @@ -829,9 +834,10 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $ $sorted_sql_query = $unsorted_sql_query . $sort_order; } $_url_params = array( - 'db' => $db, - 'table' => $table, - 'sql_query' => $sorted_sql_query, + 'db' => $db, + 'table' => $table, + 'sql_query' => $sorted_sql_query, + 'session_max_rows' => $session_max_rows ); $order_url = 'sql.php' . PMA_generate_common_url($_url_params); diff --git a/libraries/export/htmlword.php b/libraries/export/htmlword.php index f5425bc4e0..d23640a600 100644 --- a/libraries/export/htmlword.php +++ b/libraries/export/htmlword.php @@ -210,7 +210,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && ! empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/latex.php b/libraries/export/latex.php index 5ff1868910..2a434aed9e 100644 --- a/libraries/export/latex.php +++ b/libraries/export/latex.php @@ -330,7 +330,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && !empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/odt.php b/libraries/export/odt.php index b70388dd3c..d1324f0ecb 100644 --- a/libraries/export/odt.php +++ b/libraries/export/odt.php @@ -265,7 +265,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && !empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/sql.php b/libraries/export/sql.php index acfdf11f83..19f987364b 100644 --- a/libraries/export/sql.php +++ b/libraries/export/sql.php @@ -777,7 +777,7 @@ function PMA_getTableComments($db, $table, $crlf, $do_relation = false, $do_mim $schema_create = ''; - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && !empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/export/texytext.php b/libraries/export/texytext.php index 8ed6a742ac..1895bcf5ac 100644 --- a/libraries/export/texytext.php +++ b/libraries/export/texytext.php @@ -192,7 +192,7 @@ function PMA_exportStructure($db, $table, $crlf, $error_url, $do_relation = fals $result = PMA_DBI_query($local_query); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if ($do_relation && ! empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/relation.lib.php b/libraries/relation.lib.php index 87521a9131..20ddf97b7b 100644 --- a/libraries/relation.lib.php +++ b/libraries/relation.lib.php @@ -142,6 +142,10 @@ function PMA_printRelationsParamDiagnostic($cfgRelation) PMA_printDiagMessageForFeature(__('Persistent recently used tables'), 'recentwork', $messages); + PMA_printDiagMessageForParameter('table_uiprefs', isset($cfgRelation['table_uiprefs']), $messages, 'table_uiprefs'); + + PMA_printDiagMessageForFeature(__('Persistent tables\' UI preferences'), 'uiprefswork', $messages); + PMA_printDiagMessageForParameter('tracking', isset($cfgRelation['tracking']), $messages, 'tracking'); PMA_printDiagMessageForFeature(__('Tracking'), 'trackingwork', $messages); @@ -225,6 +229,7 @@ function PMA__getRelationsParam() $cfgRelation['mimework'] = false; $cfgRelation['historywork'] = false; $cfgRelation['recentwork'] = false; + $cfgRelation['uiprefswork'] = false; $cfgRelation['trackingwork'] = false; $cfgRelation['designerwork'] = false; $cfgRelation['userconfigwork'] = false; @@ -278,6 +283,8 @@ function PMA__getRelationsParam() $cfgRelation['history'] = $curr_table[0]; } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['recent']) { $cfgRelation['recent'] = $curr_table[0]; + } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['table_uiprefs']) { + $cfgRelation['table_uiprefs'] = $curr_table[0]; } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['tracking']) { $cfgRelation['tracking'] = $curr_table[0]; } elseif ($curr_table[0] == $GLOBALS['cfg']['Server']['userconfig']) { @@ -292,9 +299,11 @@ function PMA__getRelationsParam() $cfgRelation['displaywork'] = true; } } + if (isset($cfgRelation['table_coords']) && isset($cfgRelation['pdf_pages'])) { $cfgRelation['pdfwork'] = true; } + if (isset($cfgRelation['column_info'])) { $cfgRelation['commwork'] = true; @@ -336,6 +345,10 @@ function PMA__getRelationsParam() $cfgRelation['recentwork'] = true; } + if (isset($cfgRelation['table_uiprefs'])) { + $cfgRelation['uiprefswork'] = true; + } + if (isset($cfgRelation['tracking'])) { $cfgRelation['trackingwork'] = true; } @@ -357,9 +370,9 @@ function PMA__getRelationsParam() if ($cfgRelation['relwork'] && $cfgRelation['displaywork'] && $cfgRelation['pdfwork'] && $cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfgRelation['historywork'] - && $cfgRelation['recentwork'] && $cfgRelation['trackingwork'] - && $cfgRelation['userconfigwork'] && $cfgRelation['bookmarkwork'] - && $cfgRelation['designerwork']) { + && $cfgRelation['recentwork'] && $cfgRelation['uiprefswork'] + && $cfgRelation['trackingwork'] && $cfgRelation['userconfigwork'] + && $cfgRelation['bookmarkwork'] && $cfgRelation['designerwork']) { $cfgRelation['allworks'] = true; } diff --git a/libraries/schema/Pdf_Relation_Schema.class.php b/libraries/schema/Pdf_Relation_Schema.class.php index ef602641a6..39fa62bc1f 100644 --- a/libraries/schema/Pdf_Relation_Schema.class.php +++ b/libraries/schema/Pdf_Relation_Schema.class.php @@ -1064,7 +1064,7 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema $pdf->SetFontSize(14); $pdf->SetLineWidth(0.2); $pdf->SetDisplayMode('fullpage'); - // Get the name of this pdfpage to use as filename (Mike Beck) + // Get the name of this pdfpage to use as filename $_name_sql = 'SELECT page_descr FROM ' . PMA_backquote($GLOBALS['cfgRelation']['db']) . '.' . PMA_backquote($cfgRelation['pdf_pages']) . ' WHERE page_nr = ' . $pageNumber; $_name_rs = PMA_query_as_controluser($_name_sql); @@ -1189,7 +1189,7 @@ class PMA_Pdf_Relation_Schema extends PMA_Export_Relation_Schema */ $result = PMA_DBI_query('SHOW FIELDS FROM ' . PMA_backquote($table) . ';', null, PMA_DBI_QUERY_STORE); $fields_cnt = PMA_DBI_num_rows($result); - // Check if we can use Relations (Mike Beck) + // Check if we can use Relations if (!empty($cfgRelation['relation'])) { // Find which tables are related with the current one and write it in // an array diff --git a/libraries/tbl_properties.inc.php b/libraries/tbl_properties.inc.php index 395fa7be95..501e243bb6 100644 --- a/libraries/tbl_properties.inc.php +++ b/libraries/tbl_properties.inc.php @@ -613,14 +613,22 @@ unset($_form_params); if ($action == 'tbl_create.php') { ?> - - - - + + - + + +
+
-
+ + '); ?> + + +
- - - '); ?> - - onclick="return checkFormElementInRange(this.form, 'added_fields', '', 1)" - /> -
diff --git a/navigation.php b/navigation.php index ac128070d5..dc68489d01 100644 --- a/navigation.php +++ b/navigation.php @@ -137,8 +137,10 @@ require_once './libraries/header_http.inc.php'; + +