diff --git a/ChangeLog b/ChangeLog index 57a0fe69e6..9f86b6c004 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,7 @@ phpMyAdmin - ChangeLog + rfe #1233 and rfe #1283 Improvements to Relation View interface + rfe #175 Allow cross-database relations - [core] Dropped support for PHP 5.2. ++ rfe #487 and rfe #1405 Find and Replacing column wise 4.0.5.0 (not yet released) - bug #3977 Not detected configuration storage diff --git a/js/messages.php b/js/messages.php index e64d9f9bea..fb103a1859 100644 --- a/js/messages.php +++ b/js/messages.php @@ -274,6 +274,10 @@ $js_messages['strSave'] = __('Save'); $js_messages['strHideSearchCriteria'] = __('Hide search criteria'); $js_messages['strShowSearchCriteria'] = __('Show search criteria'); +/* For tbl_find_replace.js */ +$js_messages['strHideFindNReplaceCriteria'] = __('Hide find and replace criteria'); +$js_messages['strShowFindNReplaceCriteria'] = __('Show find and replace criteria'); + /* For tbl_zoom_plot_jqplot.js */ $js_messages['strZoomSearch'] = __('Zoom Search'); $js_messages['strDisplayHelp'] = ''; $html_output .= '
'; + return $html_output; + } - $html_output .= $this->_getFormTag($goto); + /** + * Generates the table search form under table search tab + * + * @param string $goto Goto URL + * @param string $dataLabel Label for points in zoom plot + * + * @return string the generated HTML for table search form + */ + public function getSelectionForm($goto, $dataLabel = null) + { + $html_output = $this->_getFormTag($goto); if ($this->_searchType == 'zoom') { $html_output .= ''; $html_output .= ''; - } else { + } else if ($this->_searchType == 'normal') { $html_output .= ''; + } else if ($this->_searchType == 'replace') { + $html_output .= '
'; + $html_output .= '
'; + $html_output .= '' . __('Find and Replace') . ''; + $html_output .= $this->_getSearchAndReplaceHTML(); + $html_output .= '
'; + $html_output .= '
'; } /** @@ -1225,5 +1260,141 @@ EOT; $html_output .= ''; return $html_output; } + + /** + * Displays the 'Find and Replace' form + * + * @return HTML for 'Find and Replace' form + */ + function _getSearchAndReplaceHTML() + { + $htmlOutput = __('Find') + . ': '; + $htmlOutput .= __('Replace with') + . ': '; + + $htmlOutput .= __('Column') . ': '; + return $htmlOutput; + } + + /** + * Returns HTML for prviewing strings found and their replacements + * + * @param int $columnIndex index of the column + * @param string $find string to find in the column + * @param string $replaceWith string to replace with + * @param string $charSet character set of the connection + * + * @return HTML for prviewing strings found and their replacements + */ + function getReplacePreview($columnIndex, $find, $replaceWith, $charSet) + { + $column = $this->_columnNames[$columnIndex]; + $sql_query = "SELECT " + . PMA_Util::backquote($column) . "," + . " REPLACE(" + . PMA_Util::backquote($column) . ", '" . $find . "', '" . $replaceWith + . "')," + . " COUNT(*)" + . " FROM " . PMA_Util::backquote($this->_db) + . "." . PMA_Util::backquote($this->_table) + . " WHERE " . PMA_Util::backquote($column) + . " LIKE '%" . $find . "%' COLLATE " . $charSet . "_bin"; // here we + // change the collation of the 2nd operand to a case sensitive + // binary collation to make sure that the comparison is case sensitive + $sql_query .= " GROUP BY " . PMA_Util::backquote($column) + . " ORDER BY " . PMA_Util::backquote($column) . " ASC"; + + $rs = $GLOBALS['dbi']->query( + $sql_query, null, PMA_DatabaseInterface::QUERY_STORE + ); + + $htmlOutput = '
'; + $htmlOutput .= PMA_generate_common_hidden_inputs($this->_db, $this->_table); + $htmlOutput .= ''; + $htmlOutput .= ''; + $htmlOutput .= ''; + $htmlOutput .= ''; + + $htmlOutput .= '
'; + $htmlOutput .= '' . __('Find and replace - preview') . ''; + + $htmlOutput .= '' + . '' + . '' + . '' + . '' + . ''; + + $htmlOutput .= ''; + $odd = true; + while ($row = $GLOBALS['dbi']->fetchRow($rs)) { + $val = $row[0]; + $replaced = $row[1]; + $count = $row[2]; + $valMd5 = md5($val); + + $htmlOutput .= ''; + $htmlOutput .= ''; + $htmlOutput .= ''; + $htmlOutput .= ''; + $htmlOutput .= ''; + + $odd = ! $odd; + } + $htmlOutput .= ''; + $htmlOutput .= '
' . __('Count') . '' . __('Original string') . '' . __('Replaced string') . '
' . htmlspecialchars($count) . '' . htmlspecialchars($val) . '' . htmlspecialchars($replaced) . '
'; + $htmlOutput .= '
'; + + $htmlOutput .= '
'; + $htmlOutput .= ''; + $htmlOutput .= '
'; + + $htmlOutput .= '
'; + return $htmlOutput; + } + + /** + * Replaces a given string in a column with a give replacement + * + * @param int $columnIndex index of the column + * @param string $find string to find in the column + * @param string $replaceWith string to replace with + * @param string $charSet character set of the connection + * + * @return void + */ + function replace($columnIndex, $find, $replaceWith, $charSet) + { + $column = $this->_columnNames[$columnIndex]; + $sql_query = "UPDATE " . PMA_Util::backquote($this->_db) + . "." . PMA_Util::backquote($this->_table) + . " SET " . PMA_Util::backquote($column) . " =" + . " REPLACE(" + . PMA_Util::backquote($column) . ", '" . $find . "', '" . $replaceWith + . "')" + . " WHERE " . PMA_Util::backquote($column) + . " LIKE '%" . $find . "%' COLLATE " . $charSet . "_bin"; // here we + // change the collation of the 2nd operand to a case sensitive + // binary collation to make sure that the comparison is case sensitive + $GLOBALS['dbi']->query( + $sql_query, null, PMA_DatabaseInterface::QUERY_STORE + ); + $GLOBALS['sql_query'] = $sql_query; + } } ?> diff --git a/tbl_find_replace.php b/tbl_find_replace.php new file mode 100644 index 0000000000..7e7387aa39 --- /dev/null +++ b/tbl_find_replace.php @@ -0,0 +1,63 @@ +fetchValue( + "SHOW VARIABLES LIKE 'character_set_connection'", 0, 1 +); +if (isset($_POST['find'])) { + $preview = $table_search->getReplacePreview( + $_POST['columnIndex'], + $_POST['find'], + $_POST['replaceWith'], + $connectionCharSet + ); + $response->addJSON('preview', $preview); + exit; +} + +$header = $response->getHeader(); +$scripts = $header->getScripts(); +$scripts->addFile('tbl_find_replace.js'); + +// Show secondary level of tabs +$htmlOutput = $table_search->getSecondaryTabs(); + +if (isset($_POST['replace'])) { + $htmlOutput .= $table_search->replace( + $_POST['columnIndex'], + $_POST['findString'], + $_POST['replaceWith'], + $connectionCharSet + ); + $htmlOutput .= PMA_Util::getMessage( + __('Your SQL query has been executed successfully'), + null, 'success' + ); +} + +if (! isset($goto)) { + $goto = $GLOBALS['cfg']['DefaultTabTable']; +} +// Defines the url to return to in case of error in the next sql statement +$err_url = $goto . '?' . PMA_generate_common_url($db, $table); +// Displays the find and replace form +$htmlOutput .= $table_search->getSelectionForm($goto); +$response->addHTML($htmlOutput); + +?> diff --git a/tbl_select.php b/tbl_select.php index b8148b47da..995eaef85f 100644 --- a/tbl_select.php +++ b/tbl_select.php @@ -57,6 +57,7 @@ if (! isset($_POST['columnsToDisplay']) && ! isset($_POST['displayAllColumns'])) // Defines the url to return to in case of error in the next sql statement $err_url = $goto . '?' . PMA_generate_common_url($db, $table); // Displays the table search form + $response->addHTML($table_search->getSecondaryTabs()); $response->addHTML($table_search->getSelectionForm($goto)); } else { diff --git a/tbl_zoom_select.php b/tbl_zoom_select.php index 29d4546665..00c61f5249 100644 --- a/tbl_zoom_select.php +++ b/tbl_zoom_select.php @@ -112,6 +112,7 @@ if ( !isset($_POST['zoom_submit']) || $_POST['dataLabel'] == '') { } // Displays the zoom search form +$response->addHTML($table_search->getSecondaryTabs()); $response->addHTML($table_search->getSelectionForm($goto, $dataLabel)); /* diff --git a/themes/original/img/b_find_replace.png b/themes/original/img/b_find_replace.png new file mode 100644 index 0000000000..8346a0e443 Binary files /dev/null and b/themes/original/img/b_find_replace.png differ diff --git a/themes/original/img/sprites.png b/themes/original/img/sprites.png index d7c911dde3..1ea0cb85ab 100644 Binary files a/themes/original/img/sprites.png and b/themes/original/img/sprites.png differ diff --git a/themes/original/sprites.lib.php b/themes/original/sprites.lib.php index 91ba82af43..f6c8d8570b 100644 --- a/themes/original/sprites.lib.php +++ b/themes/original/sprites.lib.php @@ -165,458 +165,463 @@ function PMA_sprites() 'width' => '16', 'height' => '16' ), - 'b_ftext' => array( + 'b_find_replace' => array( 'position' => '33', 'width' => '16', 'height' => '16' ), - 'b_group' => array( + 'b_ftext' => array( 'position' => '34', 'width' => '16', 'height' => '16' ), - 'b_help' => array( + 'b_group' => array( 'position' => '35', + 'width' => '16', + 'height' => '16' + ), + 'b_help' => array( + 'position' => '36', 'width' => '11', 'height' => '11' ), 'b_home' => array( - 'position' => '36', - 'width' => '16', - 'height' => '16' - ), - 'b_import' => array( 'position' => '37', 'width' => '16', 'height' => '16' ), - 'b_index_add' => array( + 'b_import' => array( 'position' => '38', 'width' => '16', 'height' => '16' ), - 'b_index' => array( + 'b_index_add' => array( 'position' => '39', 'width' => '16', 'height' => '16' ), - 'b_info' => array( + 'b_index' => array( 'position' => '40', + 'width' => '16', + 'height' => '16' + ), + 'b_info' => array( + 'position' => '41', 'width' => '11', 'height' => '11' ), 'b_inline_edit' => array( - 'position' => '41', - 'width' => '16', - 'height' => '16' - ), - 'b_insrow' => array( 'position' => '42', 'width' => '16', 'height' => '16' ), - 'b_minus' => array( + 'b_insrow' => array( 'position' => '43', + 'width' => '16', + 'height' => '16' + ), + 'b_minus' => array( + 'position' => '44', 'width' => '9', 'height' => '9' ), 'b_more' => array( - 'position' => '44', - 'width' => '16', - 'height' => '16' - ), - 'b_move' => array( 'position' => '45', 'width' => '16', 'height' => '16' ), - 'b_newdb' => array( + 'b_move' => array( 'position' => '46', 'width' => '16', 'height' => '16' ), - 'b_newtbl' => array( + 'b_newdb' => array( 'position' => '47', 'width' => '16', 'height' => '16' ), - 'b_nextpage' => array( + 'b_newtbl' => array( 'position' => '48', 'width' => '16', 'height' => '16' ), - 'b_plus' => array( + 'b_nextpage' => array( 'position' => '49', + 'width' => '16', + 'height' => '16' + ), + 'b_plus' => array( + 'position' => '50', 'width' => '9', 'height' => '9' ), 'b_primary' => array( - 'position' => '50', - 'width' => '16', - 'height' => '16' - ), - 'b_print' => array( 'position' => '51', 'width' => '16', 'height' => '16' ), - 'b_props' => array( + 'b_print' => array( 'position' => '52', 'width' => '16', 'height' => '16' ), - 'b_relations' => array( + 'b_props' => array( 'position' => '53', 'width' => '16', 'height' => '16' ), - 'b_routine_add' => array( + 'b_relations' => array( 'position' => '54', 'width' => '16', 'height' => '16' ), - 'b_routines' => array( + 'b_routine_add' => array( 'position' => '55', 'width' => '16', 'height' => '16' ), - 'b_save' => array( + 'b_routines' => array( 'position' => '56', 'width' => '16', 'height' => '16' ), - 'b_sbrowse' => array( + 'b_save' => array( 'position' => '57', + 'width' => '16', + 'height' => '16' + ), + 'b_sbrowse' => array( + 'position' => '58', 'width' => '10', 'height' => '10' ), 'b_search' => array( - 'position' => '58', - 'width' => '16', - 'height' => '16' - ), - 'b_selboard' => array( 'position' => '59', 'width' => '16', 'height' => '16' ), - 'b_select' => array( + 'b_selboard' => array( 'position' => '60', 'width' => '16', 'height' => '16' ), - 'b_snewtbl' => array( + 'b_select' => array( 'position' => '61', + 'width' => '16', + 'height' => '16' + ), + 'b_snewtbl' => array( + 'position' => '62', 'width' => '10', 'height' => '10' ), 'b_spatial' => array( - 'position' => '62', - 'width' => '16', - 'height' => '16' - ), - 'b_sqlhelp' => array( 'position' => '63', 'width' => '16', 'height' => '16' ), - 'b_sql' => array( + 'b_sqlhelp' => array( 'position' => '64', 'width' => '16', 'height' => '16' ), - 'b_table_add' => array( + 'b_sql' => array( 'position' => '65', 'width' => '16', 'height' => '16' ), - 'b_tblanalyse' => array( + 'b_table_add' => array( 'position' => '66', 'width' => '16', 'height' => '16' ), - 'b_tblexport' => array( + 'b_tblanalyse' => array( 'position' => '67', 'width' => '16', 'height' => '16' ), - 'b_tblimport' => array( + 'b_tblexport' => array( 'position' => '68', 'width' => '16', 'height' => '16' ), - 'b_tblops' => array( + 'b_tblimport' => array( 'position' => '69', 'width' => '16', 'height' => '16' ), - 'b_tbloptimize' => array( + 'b_tblops' => array( 'position' => '70', 'width' => '16', 'height' => '16' ), - 'b_tipp' => array( + 'b_tbloptimize' => array( 'position' => '71', 'width' => '16', 'height' => '16' ), - 'b_trigger_add' => array( + 'b_tipp' => array( 'position' => '72', 'width' => '16', 'height' => '16' ), - 'b_triggers' => array( + 'b_trigger_add' => array( 'position' => '73', 'width' => '16', 'height' => '16' ), - 'b_unique' => array( + 'b_triggers' => array( 'position' => '74', 'width' => '16', 'height' => '16' ), - 'b_usradd' => array( + 'b_unique' => array( 'position' => '75', 'width' => '16', 'height' => '16' ), - 'b_usrcheck' => array( + 'b_usradd' => array( 'position' => '76', 'width' => '16', 'height' => '16' ), - 'b_usrdrop' => array( + 'b_usrcheck' => array( 'position' => '77', 'width' => '16', 'height' => '16' ), - 'b_usredit' => array( + 'b_usrdrop' => array( 'position' => '78', 'width' => '16', 'height' => '16' ), - 'b_usrlist' => array( + 'b_usredit' => array( 'position' => '79', 'width' => '16', 'height' => '16' ), - 'b_view_add' => array( + 'b_usrlist' => array( 'position' => '80', 'width' => '16', 'height' => '16' ), - 'b_view' => array( + 'b_view_add' => array( 'position' => '81', 'width' => '16', 'height' => '16' ), - 'b_views' => array( + 'b_view' => array( 'position' => '82', 'width' => '16', 'height' => '16' ), - 'col_drop' => array( + 'b_views' => array( 'position' => '83', 'width' => '16', 'height' => '16' ), - 'eye_grey' => array( + 'col_drop' => array( 'position' => '84', 'width' => '16', 'height' => '16' ), - 'eye' => array( + 'eye_grey' => array( 'position' => '85', 'width' => '16', 'height' => '16' ), - 'more' => array( + 'eye' => array( 'position' => '86', + 'width' => '16', + 'height' => '16' + ), + 'more' => array( + 'position' => '87', 'width' => '13', 'height' => '16' ), 'new_data_hovered' => array( - 'position' => '87', - 'width' => '16', - 'height' => '16' - ), - 'new_data' => array( 'position' => '88', 'width' => '16', 'height' => '16' ), - 'new_data_selected_hovered' => array( + 'new_data' => array( 'position' => '89', 'width' => '16', 'height' => '16' ), - 'new_data_selected' => array( + 'new_data_selected_hovered' => array( 'position' => '90', 'width' => '16', 'height' => '16' ), - 'new_struct_hovered' => array( + 'new_data_selected' => array( 'position' => '91', 'width' => '16', 'height' => '16' ), - 'new_struct' => array( + 'new_struct_hovered' => array( 'position' => '92', 'width' => '16', 'height' => '16' ), - 'new_struct_selected_hovered' => array( + 'new_struct' => array( 'position' => '93', 'width' => '16', 'height' => '16' ), - 'new_struct_selected' => array( + 'new_struct_selected_hovered' => array( 'position' => '94', 'width' => '16', 'height' => '16' ), - 'pause' => array( + 'new_struct_selected' => array( 'position' => '95', 'width' => '16', 'height' => '16' ), - 'play' => array( + 'pause' => array( 'position' => '96', 'width' => '16', 'height' => '16' ), - 's_asci' => array( + 'play' => array( 'position' => '97', 'width' => '16', 'height' => '16' ), - 's_asc' => array( + 's_asci' => array( 'position' => '98', + 'width' => '16', + 'height' => '16' + ), + 's_asc' => array( + 'position' => '99', 'width' => '11', 'height' => '9' ), 's_cancel' => array( - 'position' => '99', - 'width' => '16', - 'height' => '16' - ), - 's_cog' => array( 'position' => '100', 'width' => '16', 'height' => '16' ), - 's_db' => array( + 's_cog' => array( 'position' => '101', 'width' => '16', 'height' => '16' ), - 's_desc' => array( + 's_db' => array( 'position' => '102', + 'width' => '16', + 'height' => '16' + ), + 's_desc' => array( + 'position' => '103', 'width' => '11', 'height' => '9' ), 's_error2' => array( - 'position' => '103', + 'position' => '104', 'width' => '11', 'height' => '11' ), 's_error' => array( - 'position' => '104', - 'width' => '16', - 'height' => '16' - ), - 's_host' => array( 'position' => '105', 'width' => '16', 'height' => '16' ), - 's_lang' => array( + 's_host' => array( 'position' => '106', 'width' => '16', 'height' => '16' ), - 's_loggoff' => array( + 's_lang' => array( 'position' => '107', 'width' => '16', 'height' => '16' ), - 's_notice' => array( + 's_loggoff' => array( 'position' => '108', 'width' => '16', 'height' => '16' ), - 's_passwd' => array( + 's_notice' => array( 'position' => '109', 'width' => '16', 'height' => '16' ), - 's_really' => array( + 's_passwd' => array( 'position' => '110', + 'width' => '16', + 'height' => '16' + ), + 's_really' => array( + 'position' => '111', 'width' => '11', 'height' => '11' ), 's_reload' => array( - 'position' => '111', - 'width' => '16', - 'height' => '16' - ), - 's_replication' => array( 'position' => '112', 'width' => '16', 'height' => '16' ), - 's_rights' => array( + 's_replication' => array( 'position' => '113', 'width' => '16', 'height' => '16' ), - 's_sortable' => array( + 's_rights' => array( 'position' => '114', + 'width' => '16', + 'height' => '16' + ), + 's_sortable' => array( + 'position' => '115', 'width' => '11', 'height' => '15' ), 's_status' => array( - 'position' => '115', - 'width' => '16', - 'height' => '16' - ), - 's_success' => array( 'position' => '116', 'width' => '16', 'height' => '16' ), - 's_sync' => array( + 's_success' => array( 'position' => '117', 'width' => '16', 'height' => '16' ), - 's_tbl' => array( + 's_sync' => array( 'position' => '118', 'width' => '16', 'height' => '16' ), - 's_theme' => array( + 's_tbl' => array( 'position' => '119', 'width' => '16', 'height' => '16' ), - 's_top' => array( + 's_theme' => array( 'position' => '120', 'width' => '16', 'height' => '16' ), - 's_vars' => array( + 's_top' => array( 'position' => '121', 'width' => '16', 'height' => '16' ), - 's_views' => array( + 's_vars' => array( 'position' => '122', + 'width' => '16', + 'height' => '16' + ), + 's_views' => array( + 'position' => '123', 'width' => '10', 'height' => '10' ), 'window-new' => array( - 'position' => '123', + 'position' => '124', 'width' => '16', 'height' => '16' ), diff --git a/themes/pmahomme/img/b_find_replace.png b/themes/pmahomme/img/b_find_replace.png new file mode 100644 index 0000000000..6eaba80572 Binary files /dev/null and b/themes/pmahomme/img/b_find_replace.png differ diff --git a/themes/pmahomme/img/sprites.png b/themes/pmahomme/img/sprites.png index 318a435c1b..c370af4a52 100644 Binary files a/themes/pmahomme/img/sprites.png and b/themes/pmahomme/img/sprites.png differ diff --git a/themes/pmahomme/sprites.lib.php b/themes/pmahomme/sprites.lib.php index fdfd168053..b0913cd5bb 100644 --- a/themes/pmahomme/sprites.lib.php +++ b/themes/pmahomme/sprites.lib.php @@ -190,531 +190,536 @@ function PMA_sprites() 'width' => '16', 'height' => '16' ), - 'b_firstpage' => array( + 'b_find_replace' => array( 'position' => '38', 'width' => '16', 'height' => '16' ), - 'b_ftext' => array( + 'b_firstpage' => array( 'position' => '39', 'width' => '16', 'height' => '16' ), - 'b_group' => array( + 'b_ftext' => array( 'position' => '40', 'width' => '16', 'height' => '16' ), - 'b_help' => array( + 'b_group' => array( 'position' => '41', 'width' => '16', 'height' => '16' ), - 'b_home' => array( + 'b_help' => array( 'position' => '42', 'width' => '16', 'height' => '16' ), - 'b_import' => array( + 'b_home' => array( 'position' => '43', 'width' => '16', 'height' => '16' ), - 'b_index_add' => array( + 'b_import' => array( 'position' => '44', 'width' => '16', 'height' => '16' ), - 'b_index' => array( + 'b_index_add' => array( 'position' => '45', 'width' => '16', 'height' => '16' ), - 'b_info' => array( + 'b_index' => array( 'position' => '46', + 'width' => '16', + 'height' => '16' + ), + 'b_info' => array( + 'position' => '47', 'width' => '11', 'height' => '11' ), 'b_inline_edit' => array( - 'position' => '47', - 'width' => '16', - 'height' => '16' - ), - 'b_insrow' => array( 'position' => '48', 'width' => '16', 'height' => '16' ), - 'b_lastpage' => array( + 'b_insrow' => array( 'position' => '49', 'width' => '16', 'height' => '16' ), - 'b_minus' => array( + 'b_lastpage' => array( 'position' => '50', 'width' => '16', 'height' => '16' ), - 'b_more' => array( + 'b_minus' => array( 'position' => '51', 'width' => '16', 'height' => '16' ), - 'b_move' => array( + 'b_more' => array( 'position' => '52', 'width' => '16', 'height' => '16' ), - 'b_newdb' => array( + 'b_move' => array( 'position' => '53', 'width' => '16', 'height' => '16' ), - 'b_newtbl' => array( + 'b_newdb' => array( 'position' => '54', 'width' => '16', 'height' => '16' ), - 'b_nextpage' => array( + 'b_newtbl' => array( 'position' => '55', 'width' => '16', 'height' => '16' ), - 'b_pdfdoc' => array( + 'b_nextpage' => array( 'position' => '56', 'width' => '16', 'height' => '16' ), - 'b_plus' => array( + 'b_pdfdoc' => array( 'position' => '57', 'width' => '16', 'height' => '16' ), - 'b_prevpage' => array( + 'b_plus' => array( 'position' => '58', 'width' => '16', 'height' => '16' ), - 'b_primary' => array( + 'b_prevpage' => array( 'position' => '59', 'width' => '16', 'height' => '16' ), - 'b_print' => array( + 'b_primary' => array( 'position' => '60', 'width' => '16', 'height' => '16' ), - 'b_props' => array( + 'b_print' => array( 'position' => '61', 'width' => '16', 'height' => '16' ), - 'b_relations' => array( + 'b_props' => array( 'position' => '62', 'width' => '16', 'height' => '16' ), - 'b_routine_add' => array( + 'b_relations' => array( 'position' => '63', 'width' => '16', 'height' => '16' ), - 'b_routines' => array( + 'b_routine_add' => array( 'position' => '64', 'width' => '16', 'height' => '16' ), - 'b_save' => array( + 'b_routines' => array( 'position' => '65', 'width' => '16', 'height' => '16' ), - 'b_sbrowse' => array( + 'b_save' => array( 'position' => '66', 'width' => '16', 'height' => '16' ), - 'b_sdb' => array( + 'b_sbrowse' => array( 'position' => '67', + 'width' => '16', + 'height' => '16' + ), + 'b_sdb' => array( + 'position' => '68', 'width' => '10', 'height' => '10' ), 'b_search' => array( - 'position' => '68', - 'width' => '16', - 'height' => '16' - ), - 'b_selboard' => array( 'position' => '69', 'width' => '16', 'height' => '16' ), - 'b_select' => array( + 'b_selboard' => array( 'position' => '70', 'width' => '16', 'height' => '16' ), - 'b_snewtbl' => array( + 'b_select' => array( 'position' => '71', 'width' => '16', 'height' => '16' ), - 'b_spatial' => array( + 'b_snewtbl' => array( 'position' => '72', 'width' => '16', 'height' => '16' ), - 'b_sqldoc' => array( + 'b_spatial' => array( 'position' => '73', 'width' => '16', 'height' => '16' ), - 'b_sqlhelp' => array( + 'b_sqldoc' => array( 'position' => '74', 'width' => '16', 'height' => '16' ), - 'b_sql' => array( + 'b_sqlhelp' => array( 'position' => '75', 'width' => '16', 'height' => '16' ), - 'b_table_add' => array( + 'b_sql' => array( 'position' => '76', 'width' => '16', 'height' => '16' ), - 'b_tblanalyse' => array( + 'b_table_add' => array( 'position' => '77', 'width' => '16', 'height' => '16' ), - 'b_tblexport' => array( + 'b_tblanalyse' => array( 'position' => '78', 'width' => '16', 'height' => '16' ), - 'b_tblimport' => array( + 'b_tblexport' => array( 'position' => '79', 'width' => '16', 'height' => '16' ), - 'b_tblops' => array( + 'b_tblimport' => array( 'position' => '80', 'width' => '16', 'height' => '16' ), - 'b_tbloptimize' => array( + 'b_tblops' => array( 'position' => '81', 'width' => '16', 'height' => '16' ), - 'b_tipp' => array( + 'b_tbloptimize' => array( 'position' => '82', 'width' => '16', 'height' => '16' ), - 'b_trigger_add' => array( + 'b_tipp' => array( 'position' => '83', 'width' => '16', 'height' => '16' ), - 'b_triggers' => array( + 'b_trigger_add' => array( 'position' => '84', 'width' => '16', 'height' => '16' ), - 'b_unique' => array( + 'b_triggers' => array( 'position' => '85', 'width' => '16', 'height' => '16' ), - 'b_usradd' => array( + 'b_unique' => array( 'position' => '86', 'width' => '16', 'height' => '16' ), - 'b_usrcheck' => array( + 'b_usradd' => array( 'position' => '87', 'width' => '16', 'height' => '16' ), - 'b_usrdrop' => array( + 'b_usrcheck' => array( 'position' => '88', 'width' => '16', 'height' => '16' ), - 'b_usredit' => array( + 'b_usrdrop' => array( 'position' => '89', 'width' => '16', 'height' => '16' ), - 'b_usrlist' => array( + 'b_usredit' => array( 'position' => '90', 'width' => '16', 'height' => '16' ), - 'b_view_add' => array( + 'b_usrlist' => array( 'position' => '91', 'width' => '16', 'height' => '16' ), - 'b_view' => array( + 'b_view_add' => array( 'position' => '92', 'width' => '16', 'height' => '16' ), - 'b_views' => array( + 'b_view' => array( 'position' => '93', 'width' => '16', 'height' => '16' ), - 'col_drop' => array( + 'b_views' => array( 'position' => '94', 'width' => '16', 'height' => '16' ), - 'database' => array( + 'col_drop' => array( 'position' => '95', 'width' => '16', 'height' => '16' ), - 'eye_grey' => array( + 'database' => array( 'position' => '96', 'width' => '16', 'height' => '16' ), - 'eye' => array( + 'eye_grey' => array( 'position' => '97', 'width' => '16', 'height' => '16' ), - 'item' => array( + 'eye' => array( 'position' => '98', + 'width' => '16', + 'height' => '16' + ), + 'item' => array( + 'position' => '99', 'width' => '9', 'height' => '9' ), 'more' => array( - 'position' => '99', + 'position' => '100', 'width' => '13', 'height' => '16' ), 'new_data_hovered' => array( - 'position' => '100', - 'width' => '16', - 'height' => '16' - ), - 'new_data' => array( 'position' => '101', 'width' => '16', 'height' => '16' ), - 'new_data_selected_hovered' => array( + 'new_data' => array( 'position' => '102', 'width' => '16', 'height' => '16' ), - 'new_data_selected' => array( + 'new_data_selected_hovered' => array( 'position' => '103', 'width' => '16', 'height' => '16' ), - 'new_struct_hovered' => array( + 'new_data_selected' => array( 'position' => '104', 'width' => '16', 'height' => '16' ), - 'new_struct' => array( + 'new_struct_hovered' => array( 'position' => '105', 'width' => '16', 'height' => '16' ), - 'new_struct_selected_hovered' => array( + 'new_struct' => array( 'position' => '106', 'width' => '16', 'height' => '16' ), - 'new_struct_selected' => array( + 'new_struct_selected_hovered' => array( 'position' => '107', 'width' => '16', 'height' => '16' ), - 'pause' => array( + 'new_struct_selected' => array( 'position' => '108', 'width' => '16', 'height' => '16' ), - 'php_sym' => array( + 'pause' => array( 'position' => '109', 'width' => '16', 'height' => '16' ), - 'play' => array( + 'php_sym' => array( 'position' => '110', 'width' => '16', 'height' => '16' ), - 's_asci' => array( + 'play' => array( 'position' => '111', 'width' => '16', 'height' => '16' ), - 's_asc' => array( + 's_asci' => array( 'position' => '112', 'width' => '16', 'height' => '16' ), - 's_attention' => array( + 's_asc' => array( 'position' => '113', 'width' => '16', 'height' => '16' ), - 's_cancel2' => array( + 's_attention' => array( 'position' => '114', 'width' => '16', 'height' => '16' ), - 's_cancel' => array( + 's_cancel2' => array( 'position' => '115', 'width' => '16', 'height' => '16' ), - 's_cog' => array( + 's_cancel' => array( 'position' => '116', 'width' => '16', 'height' => '16' ), - 's_db' => array( + 's_cog' => array( 'position' => '117', 'width' => '16', 'height' => '16' ), - 's_desc' => array( + 's_db' => array( 'position' => '118', 'width' => '16', 'height' => '16' ), - 's_error2' => array( + 's_desc' => array( 'position' => '119', + 'width' => '16', + 'height' => '16' + ), + 's_error2' => array( + 'position' => '120', 'width' => '11', 'height' => '11' ), 's_error' => array( - 'position' => '120', - 'width' => '16', - 'height' => '16' - ), - 's_host' => array( 'position' => '121', 'width' => '16', 'height' => '16' ), - 's_info' => array( + 's_host' => array( 'position' => '122', 'width' => '16', 'height' => '16' ), - 's_lang' => array( + 's_info' => array( 'position' => '123', 'width' => '16', 'height' => '16' ), - 's_loggoff' => array( + 's_lang' => array( 'position' => '124', 'width' => '16', 'height' => '16' ), - 's_notice' => array( + 's_loggoff' => array( 'position' => '125', 'width' => '16', 'height' => '16' ), - 's_okay' => array( + 's_notice' => array( 'position' => '126', 'width' => '16', 'height' => '16' ), - 's_passwd' => array( + 's_okay' => array( 'position' => '127', 'width' => '16', 'height' => '16' ), - 's_process' => array( + 's_passwd' => array( 'position' => '128', 'width' => '16', 'height' => '16' ), - 's_really' => array( + 's_process' => array( 'position' => '129', + 'width' => '16', + 'height' => '16' + ), + 's_really' => array( + 'position' => '130', 'width' => '11', 'height' => '11' ), 's_reload' => array( - 'position' => '130', - 'width' => '16', - 'height' => '16' - ), - 's_replication' => array( 'position' => '131', 'width' => '16', 'height' => '16' ), - 's_rights' => array( + 's_replication' => array( 'position' => '132', 'width' => '16', 'height' => '16' ), - 's_sortable' => array( + 's_rights' => array( 'position' => '133', 'width' => '16', 'height' => '16' ), - 's_status' => array( + 's_sortable' => array( 'position' => '134', 'width' => '16', 'height' => '16' ), - 's_success' => array( + 's_status' => array( 'position' => '135', 'width' => '16', 'height' => '16' ), - 's_sync' => array( + 's_success' => array( 'position' => '136', 'width' => '16', 'height' => '16' ), - 's_tbl' => array( + 's_sync' => array( 'position' => '137', 'width' => '16', 'height' => '16' ), - 's_theme' => array( + 's_tbl' => array( 'position' => '138', 'width' => '16', 'height' => '16' ), - 's_top' => array( + 's_theme' => array( 'position' => '139', 'width' => '16', 'height' => '16' ), - 's_vars' => array( + 's_top' => array( 'position' => '140', 'width' => '16', 'height' => '16' ), - 's_views' => array( + 's_vars' => array( 'position' => '141', 'width' => '16', 'height' => '16' ), - 'window-new' => array( + 's_views' => array( 'position' => '142', 'width' => '16', 'height' => '16' ), + 'window-new' => array( + 'position' => '143', + 'width' => '16', + 'height' => '16' + ), ); } ?>