The branch, master has been updated
via a8afc24b425ef85b5deccc0b04163cc381a67947 (commit)
via 143b830a7df4c6b53cc990f8783d4d4fe1a54cac (commit)
via 92b179bf43c58c59deaad5342e6ca5bcb1239579 (commit)
via a63532c666bfb8d4bb16e679744ffbee86c64a4b (commit)
from f9ff30171adfb3637a2b135f178ffed5320535a2 (commit)
- Log -----------------------------------------------------------------
commit a8afc24b425ef85b5deccc0b04163cc381a67947
Author: Michal Čihař <[email protected]>
Date: Tue Feb 8 11:54:51 2011 +0100
Changelog entry
commit 143b830a7df4c6b53cc990f8783d4d4fe1a54cac
Author: Michal Čihař <[email protected]>
Date: Tue Feb 8 11:54:02 2011 +0100
Make copy separate column
commit 92b179bf43c58c59deaad5342e6ca5bcb1239579
Author: Michal Čihař <[email protected]>
Date: Tue Feb 8 11:53:28 2011 +0100
Whitespace cleanup
commit a63532c666bfb8d4bb16e679744ffbee86c64a4b
Author: Jan Prachař <[email protected]>
Date: Fri Feb 4 01:21:32 2011 +0100
Add direct link to copy row of the displayed table.
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 1 +
js/sql.js | 30 +++++++++++-----------
libraries/display_tbl.lib.php | 54 +++++++++++++++++++++++++++++++++-------
tbl_change.php | 16 ++++++++++++
4 files changed, 76 insertions(+), 25 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 10d1b73..a283d89 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -133,6 +133,7 @@
- [interface] Add link to documentation for status variables.
- [security] Redirect external links to avoid Referer leakage.
- [interface] Default to not count tables in database.
+- patch #3172172 [interface] Shortcut for copying table row.
3.3.10.0 (not yet released)
- patch #3147400 [structure] Aria table size printed as unknown,
diff --git a/js/sql.js b/js/sql.js
index 593cbe7..5593446 100644
--- a/js/sql.js
+++ b/js/sql.js
@@ -60,7 +60,7 @@ function appendInlineAnchor() {
if (disp_mode == 'vertical') {
// there can be one or two tr containing this class, depending
- // on the ModifyDeleteAtLeft and ModifyDeleteAtRight cfg parameters
+ // on the ModifyDeleteAtLeft and ModifyDeleteAtRight cfg parameters
$('#table_results tr')
.find('.edit_row_anchor')
.removeClass('.edit_row_anchor')
@@ -108,8 +108,8 @@ function appendInlineAnchor() {
$('#rowsDeleteForm').find('thead, tbody').find('th').each(function() {
var $this_th = $(this);
- if ($this_th.attr('colspan') == 3) {
- $this_th.attr('colspan', '4')
+ if ($this_th.attr('colspan') == 4) {
+ $this_th.attr('colspan', '5')
}
});
}
@@ -203,7 +203,7 @@ $(document).ready(function() {
return false;
})
}
-
+
/**
* Ajax Event handler for 'SQL Query Submit'
*
@@ -226,9 +226,9 @@ $(document).ready(function() {
$.post($(this).attr('action'), $(this).serialize() , function(data) {
if(data.success == true) {
- // fade out previous success message, if any
+ // fade out previous success message, if any
$('.success').fadeOut();
- // show a message that stays on screen
+ // show a message that stays on screen
$('#sqlqueryform').before(data.message);
$('#sqlqueryresults').show();
// this happens if a USE command was typed
@@ -243,7 +243,7 @@ $(document).ready(function() {
}
}
else if (data.success == false ) {
- // show an error message that stays on screen
+ // show an error message that stays on screen
$('#sqlqueryform').before(data.error);
$('#sqlqueryresults').hide();
}
@@ -276,7 +276,7 @@ $(document).ready(function() {
event.preventDefault();
PMA_ajaxShowMessage();
-
+
/**
* @var $the_form Object referring to the form element that
paginates the results table
*/
@@ -400,7 +400,7 @@ $(document).ready(function() {
// We need to retrieve the value from the server for
truncated/relation fields
// Find the field name
-
+
/**
* @var this_field Object referring to this field (<td>)
*/
@@ -524,8 +524,8 @@ $(document).ready(function() {
event.preventDefault();
/**
- * @var $this_td Object referring to the td containing the
- * "Inline Edit" link that was clicked to save the row that is
+ * @var $this_td Object referring to the td containing the
+ * "Inline Edit" link that was clicked to save the row that is
* being edited
*
*/
@@ -718,7 +718,7 @@ $(document).ready(function() {
new_value = $test_element.text();
}
-
+
if($this_sibling.is('.relation')) {
var field_name = getFieldName($this_sibling,
disp_mode);
$.each(data.relations, function(key, value) {
@@ -727,7 +727,7 @@ $(document).ready(function() {
return false;
}
})
- }
+ }
if($this_sibling.is('.enum')) {
new_html = new_value;
}
@@ -770,14 +770,14 @@ $(document).ready(function() {
* vertical column highlighting in horizontal mode when hovering over the
column header
*/
$('.column_heading').live('hover', function() {
- PMA_changeClassForColumn($(this), 'hover');
+ PMA_changeClassForColumn($(this), 'hover');
});
/**
* vertical column marking in horizontal mode when clicking the column
header
*/
$('.column_heading').live('click', function() {
- PMA_changeClassForColumn($(this), 'marked');
+ PMA_changeClassForColumn($(this), 'marked');
});
})
diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php
index 7d0299c..54d124e 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -641,11 +641,11 @@ function PMA_displayTableHeaders(&$is_display,
&$fields_meta, $fields_cnt = 0, $
if ($_SESSION['tmp_user_values']['disp_direction'] == 'horizontal'
|| $_SESSION['tmp_user_values']['disp_direction'] == 'horizontalflipped')
{
$colspan = ($is_display['edit_lnk'] != 'nn' && $is_display['del_lnk']
!= 'nn')
- ? ' colspan="3"'
+ ? ' colspan="4"'
: '';
} else {
$rowspan = ($is_display['edit_lnk'] != 'nn' && $is_display['del_lnk']
!= 'nn')
- ? ' rowspan="3"'
+ ? ' rowspan="4"'
: '';
}
@@ -1158,9 +1158,11 @@ function PMA_displayTableBody(&$dt_result, &$is_display,
$map, $analyzed_sql) {
'sql_query' => $url_sql_query,
'goto' => 'sql.php',
);
- $edit_url = 'tbl_change.php' .
PMA_generate_common_url($_url_params);
+ $edit_url = 'tbl_change.php' .
PMA_generate_common_url($_url_params + array('default_action' => 'update'));
+ $copy_url = 'tbl_change.php' .
PMA_generate_common_url($_url_params + array('default_action' => 'insert'));
$edit_str = PMA_getIcon('b_edit.png', __('Edit'), true);
+ $copy_str = PMA_getIcon('b_insrow.png', __('Copy'), true);
// Class definitions required for inline editing jQuery scripts
$edit_anchor_class = "edit_row_anchor";
@@ -1224,7 +1226,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display,
$map, $analyzed_sql) {
if (! isset($js_conf)) {
$js_conf = '';
}
- echo PMA_generateCheckboxAndLinks('left', $del_url,
$is_display, $row_no, $where_clause, $where_clause_html, $del_query, 'l',
$edit_url, $edit_anchor_class, $edit_str, $del_str, $js_conf);
+ echo PMA_generateCheckboxAndLinks('left', $del_url,
$is_display, $row_no, $where_clause, $where_clause_html, $del_query, 'l',
$edit_url, $copy_url, $edit_anchor_class, $edit_str, $copy_str, $del_str,
$js_conf);
} // end if (1.3)
} // end if (1)
@@ -1439,7 +1441,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display,
$map, $analyzed_sql) {
if (! isset($js_conf)) {
$js_conf = '';
}
- echo PMA_generateCheckboxAndLinks('right', $del_url,
$is_display, $row_no, $where_clause, $where_clause_html, $del_query, 'r',
$edit_url, $edit_anchor_class, $edit_str, $del_str, $js_conf);
+ echo PMA_generateCheckboxAndLinks('right', $del_url,
$is_display, $row_no, $where_clause, $where_clause_html, $del_query, 'r',
$edit_url, $copy_url, $edit_anchor_class, $edit_str, $copy_str, $del_str,
$js_conf);
} // end if (3)
if ($_SESSION['tmp_user_values']['disp_direction'] == 'horizontal'
@@ -1471,7 +1473,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display,
$map, $analyzed_sql) {
}
if (isset($edit_url)) {
- $vertical_display['edit'][$row_no] .=
PMA_generateEditLink($edit_url, $alternating_color_class . ' ' .
$edit_anchor_class . $vertical_class, $edit_str, $where_clause,
$where_clause_html);
+ $vertical_display['edit'][$row_no] .=
PMA_generateEditLink($edit_url, $copy_url, $alternating_color_class . ' ' .
$edit_anchor_class . $vertical_class, $edit_str, $where_clause,
$where_clause_html);
} else {
unset($vertical_display['edit'][$row_no]);
}
@@ -2490,7 +2492,7 @@ function PMA_generateCheckboxForMulti($del_url,
$is_display, $row_no, $where_cla
function PMA_generateEditLink($edit_url, $class, $edit_str, $where_clause,
$where_clause_html) {
$ret = '';
if (! empty($edit_url)) {
- $ret .= '<td class="' . $class . '" align="center" ' . ' >'
+ $ret .= '<td class="' . $class . '" align="center" ' . ' ><span
class="nowrap">'
. PMA_linkOrButton($edit_url, $edit_str, array(), FALSE);
/*
* Where clause for selecting this row uniquely is provided as
@@ -2499,7 +2501,34 @@ function PMA_generateEditLink($edit_url, $class,
$edit_str, $where_clause, $wher
if(! empty($where_clause)) {
$ret .= '<input type="hidden" class="where_clause" value ="' .
$where_clause_html . '" />';
}
- $ret .= '</td>';
+ $ret .= '</span></td>';
+ }
+ return $ret;
+}
+
+/**
+ * Generates an Copy link
+ *
+ * @uses PMA_linkOrButton()
+ * @param string $copy_url
+ * @param string $copy_str
+ * @param string $where_clause
+ * @param string $where_clause_html
+ * @return string the generated HTML
+ */
+function PMA_generateCopyLink($copy_url, $copy_str, $where_clause,
$where_clause_html) {
+ $ret = '';
+ if (! empty($copy_url)) {
+ $ret .= '<td align="center" ' . ' ><span class="nowrap">'
+ . PMA_linkOrButton($copy_url, $copy_str, array(), FALSE);
+ /*
+ * Where clause for selecting this row uniquely is provided as
+ * a hidden input. Used by jQuery scripts for handling inline editing
+ */
+ if(! empty($where_clause)) {
+ $ret .= '<input type="hidden" class="where_clause" value ="' .
$where_clause_html . '" />';
+ }
+ $ret .= '</span></td>';
}
return $ret;
}
@@ -2543,13 +2572,14 @@ function PMA_generateDeleteLink($del_url, $del_str,
$js_conf, $class) {
* @param string $del_query
* @param string $id_suffix
* @param string $edit_url
+ * @param string $copy_url
* @param string $class
* @param string $edit_str
* @param string $del_str
* @param string $js_conf
* @return string the generated HTML
*/
-function PMA_generateCheckboxAndLinks($position, $del_url, $is_display,
$row_no, $where_clause, $where_clause_html, $del_query, $id_suffix, $edit_url,
$class, $edit_str, $del_str, $js_conf) {
+function PMA_generateCheckboxAndLinks($position, $del_url, $is_display,
$row_no, $where_clause, $where_clause_html, $del_query, $id_suffix, $edit_url,
$copy_url, $class, $edit_str, $copy_str, $del_str, $js_conf) {
$ret = '';
if ($position == 'left') {
@@ -2557,12 +2587,16 @@ function PMA_generateCheckboxAndLinks($position,
$del_url, $is_display, $row_no,
$ret .= PMA_generateEditLink($edit_url, $class, $edit_str,
$where_clause, $where_clause_html, '');
+ $ret .= PMA_generateCopyLink($copy_url, $copy_str, $where_clause,
$where_clause_html, '');
+
$ret .= PMA_generateDeleteLink($del_url, $del_str, $js_conf, '', '');
} elseif ($position == 'right') {
$ret .= PMA_generateDeleteLink($del_url, $del_str, $js_conf, '', '');
- $ret .= PMA_generateEditLink($edit_url, $class, $edit_str,
$where_clause, $where_clause_html, '');
+ $ret .= PMA_generateCopyLink($copy_url, $copy_str, $where_clause,
$where_clause_html, '');
+
+ $ret .= PMA_generateEditLink($edit_url, $copy_url, $class, $edit_str,
$where_clause, $where_clause_html, '');
$ret .= PMA_generateCheckboxForMulti($del_url, $is_display, $row_no,
$where_clause_html, $del_query, $id_suffix='_right', '', '', '');
}
diff --git a/tbl_change.php b/tbl_change.php
index d77ae86..d18f59d 100644
--- a/tbl_change.php
+++ b/tbl_change.php
@@ -43,6 +43,9 @@ if (isset($_REQUEST['ShowFunctionFields'])) {
if (isset($_REQUEST['ShowFieldTypesInDataEditView'])) {
$cfg['ShowFieldTypesInDataEditView'] =
$_REQUEST['ShowFieldTypesInDataEditView'];
}
+if (isset($_REQUEST['default_action'])) {
+ $default_action = $_REQUEST['default_action'];
+}
/**
* file listing
@@ -184,6 +187,7 @@ if (isset($where_clause)) {
}
unset($unique_condition, $tmp_clause_is_unique);
}
+
}
} else {
// no primary key given, just load first row - but what happens if table
is empty?
@@ -192,6 +196,11 @@ if (isset($where_clause)) {
$rows = array_fill(0, $cfg['InsertRows'], false);
}
+// Copying a row - fetched data will be inserted as a new row, therefore the
where clause is needless.
+if (isset($default_action) && $default_action === 'insert') {
+ unset($where_clause, $where_clauses);
+}
+
// retrieve keys into foreign fields, if any
$foreigners = PMA_getForeigners($db, $table);
@@ -488,6 +497,13 @@ foreach ($rows as $row_id => $vrow) {
$data = $vrow[$field['Field']];
} // end if... else...
+
+ //when copying row, it is useful to empty auto-increment column to
prevent duplicate key error
+ if (isset($default_action) && $default_action === 'insert') {
+ if ($field['Key'] === 'PRI' && strpos($field['Extra'],
'auto_increment') !== FALSE) {
+ $data = $special_chars_encoded = $special_chars = NULL;
+ }
+ }
// If a timestamp field value is not included in an update
// statement MySQL auto-update it to the current timestamp;
// however, things have changed since MySQL 4.1, so
hooks/post-receive
--
phpMyAdmin
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Phpmyadmin-git mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/phpmyadmin-git