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'] = '
- '
diff --git a/js/tbl_find_replace.js b/js/tbl_find_replace.js
new file mode 100644
index 0000000000..1bcf57dcf7
--- /dev/null
+++ b/js/tbl_find_replace.js
@@ -0,0 +1,47 @@
+/**
+ * Unbind all event handlers before tearing down a page
+ */
+AJAX.registerTeardown('tbl_find_replace.js', function () {
+ $('#find_replace_form').unbind('submit');
+ $('#toggle_find').unbind('click');
+});
+
+/**
+ * Bind events
+ */
+AJAX.registerOnload('tbl_find_replace.js', function () {
+
+ $('')
+ .insertAfter('#find_replace_form')
+ .hide();
+
+ $('#toggle_find')
+ .html(PMA_messages.strHideFindNReplaceCriteria)
+ .click(function() {
+ var $link = $(this);
+ $('#find_replace_form').slideToggle();
+ if ($link.text() == PMA_messages.strHideFindNReplaceCriteria) {
+ $link.text(PMA_messages.strShowFindNReplaceCriteria);
+ } else {
+ $link.text(PMA_messages.strHideFindNReplaceCriteria);
+ }
+ return false
+ });
+
+ $('#find_replace_form').submit(function(e) {
+ e.preventDefault();
+ var findReplaceForm = $('#find_replace_form');
+ PMA_prepareForAjaxRequest(findReplaceForm);
+ var $msgbox = PMA_ajaxShowMessage();
+ $.post(findReplaceForm.attr('action'), findReplaceForm.serialize(), function (data) {
+ PMA_ajaxRemoveMessage($msgbox);
+ if (data.success === true) {
+ $('#toggle_find_div').show();
+ $('#toggle_find').click();
+ $("#sqlqueryresults").html(data.preview);
+ } else {
+ $("#sqlqueryresults").html(data.error);
+ }
+ });
+ });
+});
\ No newline at end of file
diff --git a/libraries/Menu.class.php b/libraries/Menu.class.php
index 093ec2779d..8e1f9bce55 100644
--- a/libraries/Menu.class.php
+++ b/libraries/Menu.class.php
@@ -281,7 +281,7 @@ class PMA_Menu
$tabs['search']['link'] = 'tbl_select.php';
$tabs['search']['active'] = in_array(
basename($GLOBALS['PMA_PHP_SELF']),
- array('tbl_select.php', 'tbl_zoom_select.php')
+ array('tbl_select.php', 'tbl_zoom_select.php', 'tbl_find_replace.php')
);
if (! $db_is_information_schema) {
diff --git a/libraries/TableSearch.class.php b/libraries/TableSearch.class.php
index 69e5393e1f..f952418410 100644
--- a/libraries/TableSearch.class.php
+++ b/libraries/TableSearch.class.php
@@ -210,6 +210,11 @@ class PMA_TableSearch
$subtabs['zoom']['text'] = __('Zoom Search');
$subtabs['zoom']['id'] = 'zoom_search_id';
+ $subtabs['replace']['icon'] = 'b_find_replace.png';
+ $subtabs['replace']['link'] = 'tbl_find_replace.php';
+ $subtabs['replace']['text'] = __('Find and Replace');
+ $subtabs['replace']['id'] = 'find_replace_id';
+
return $subtabs;
}
@@ -1070,8 +1075,22 @@ EOT;
private function _getFormTag($goto)
{
$html_output = '';
- $scriptName = ($this->_searchType == 'zoom' ? 'tbl_zoom_select.php' : 'tbl_select.php');
- $formId = ($this->_searchType == 'zoom' ? 'zoom_search_form' : 'tbl_search_form');
+ $scriptName = '';
+ $formId = '';
+ switch ($this->_searchType) {
+ case 'normal' :
+ $scriptName = 'tbl_select.php';
+ $formId = 'tbl_search_form';
+ break;
+ case 'zoom' :
+ $scriptName = 'tbl_zoom_select.php';
+ $formId = 'zoom_search_form';
+ break;
+ case 'replace' :
+ $scriptName = 'tbl_find_replace.php';
+ $formId = 'find_replace_form';
+ break;
+ }
$html_output .= '
';
$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 .= '';
+ $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 = '';
+ 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'
+ ),
);
}
?>