The branch, master has been updated
via 52820d2d7044d862bff9e22eb7acb7abc739ee5e (commit)
via 7bed3852899c1ddcb605103e9a0ebe20dd587a4f (commit)
via c5b0afd16eec37241ec34de24de329d684aec525 (commit)
via 81974e6d93d3a7ead5d9d20ccb66a06e80d76f8e (commit)
via 8e64a94360c47b33f7b05d5efc278a3d5a6011a2 (commit)
from 4c7aa9cfee0f6135501242fb5708cfed40cc6be0 (commit)
- Log -----------------------------------------------------------------
commit 52820d2d7044d862bff9e22eb7acb7abc739ee5e
Merge: 7bed3852899c1ddcb605103e9a0ebe20dd587a4f 4c7aa9cfee0f6135501242fb5708cfed40cc6be0
Author: Madhura Jayaratne <madhura.cj(a)gmail.com>
Date: Sun Feb 20 01:19:32 2011 +0530
Merge branch 'master' of
ssh://phpmyadmin.git.sourceforge.net/gitroot/phpmyadmin/phpmyadmin
commit 7bed3852899c1ddcb605103e9a0ebe20dd587a4f
Author: Madhura Jayaratne <madhura.cj(a)gmail.com>
Date: Sun Feb 20 01:05:37 2011 +0530
Uncheck 'null checkbox' when the editor area is changed.
commit c5b0afd16eec37241ec34de24de329d684aec525
Author: Madhura Jayaratne <madhura.cj(a)gmail.com>
Date: Sun Feb 20 01:03:07 2011 +0530
Tab and white space clean up.
commit 81974e6d93d3a7ead5d9d20ccb66a06e80d76f8e
Author: Madhura Jayaratne <madhura.cj(a)gmail.com>
Date: Sun Feb 20 00:46:29 2011 +0530
CSS styles for null checkbox and for NULL values in table cells.
commit 8e64a94360c47b33f7b05d5efc278a3d5a6011a2
Author: Madhura Jayaratne <madhura.cj(a)gmail.com>
Date: Sat Feb 19 22:50:43 2011 +0530
Bug #3185756 [AJAX] Inline edit and NULL columns
-----------------------------------------------------------------------
Summary of changes:
js/sql.js | 253 ++++++++++++++++++-------------
libraries/display_tbl.lib.php | 3 +-
themes/original/css/theme_right.css.php | 14 ++
3 files changed, 160 insertions(+), 110 deletions(-)
diff --git a/js/sql.js b/js/sql.js
index 219b28c..2e896ee 100644
--- a/js/sql.js
+++ b/js/sql.js
@@ -227,9 +227,9 @@ $(document).ready(function() {
$form = $(this);
PMA_ajaxShowMessage();
- if (! $form.find('input:hidden').is('#ajax_request_hidden')) {
- $form.append('<input type="hidden"
id="ajax_request_hidden" name="ajax_request" value="true"
/>');
- }
+ if (! $form.find('input:hidden').is('#ajax_request_hidden')) {
+ $form.append('<input type="hidden"
id="ajax_request_hidden" name="ajax_request" value="true"
/>');
+ }
$.post($(this).attr('action'), $(this).serialize() , function(data) {
if(data.success == true) {
@@ -429,14 +429,57 @@ $(document).ready(function() {
* @see getFieldName()
*/
var field_name = getFieldName($this_field, disp_mode);
+ /**
+ * @var relation_curr_value String current value of the field (for fields
that are foreign keyed).
+ */
+ var relation_curr_value = $this_field.find('a').text();
+ /**
+ * @var enum_curr_value String current value of the field (for fields that
are of type enum).
+ */
+ var enum_curr_value = $this_field.text();
+
+ if($this_field.is(':not(.not_null)')){
+ // add a checkbox to mark null for all the field that are nullable.
+ $this_field.html('<div class="null_div">Null
:<input type="checkbox" class="checkbox_null_'+ field_name
+'"></div>');
+ // check the 'checkbox_null_<field_name>' if the value is
null
+ if($this_field.is('.null')) {
+ $('.checkbox_null_' + field_name).attr('checked',
true);
+ }
+
+ // if the select/editor is changed un-check the
'checkbox_null_<field_name>'.
+ if ($this_field.is('.enum, .set')) {
+ var $editor = $this_field.find('select');
+ } else if ($this_field.is('.relation')) {
+ var $editor = $this_field.find('select');
+ } else {
+ var $editor = $this_field.find('textarea');
+ }
+ $editor.live('change', function(e) {
+ $('.checkbox_null_' + field_name).attr('checked',
false);
+ })
+
+ // if 'chechbox_null_<field_name>' is clicked empty the
select/editor.
+ $('.checkbox_null_' + field_name).bind('click',
function(e) {
+ if ($this_field.is('.enum, .set')) {
+ $this_field.find('select').selectedIndex = -1;
+ } else if ($this_field.is('.relation')) {
+ $this_field.find('select').attr('value',
'');
+ } else {
+ $this_field.find('textarea').empty();
+ }
+ })
+
+ } else {
+ $this_field.html('<div
class="null_div"></div>');
+ }
// In each input sibling, wrap the current value in a textarea
// and store the current value in a hidden span
if($this_field.is(':not(.truncated, .transformed, .relation, .enum,
.null)')) {
// handle non-truncated, non-transformed, non-relation values
// We don't need to get any more data, just wrap the value
-
$this_field.html('<textarea>'+data_value+'</textarea>')
- .append('<span
class="original_data">'+data_value+'</span>');
+
$this_field.append('<textarea>'+data_value+'</textarea>');
+ $this_field.append('<span
class="original_data">'+data_value+'</span>');
$(".original_data").hide();
}
else if($this_field.is('.truncated, .transformed')) {
@@ -457,8 +500,8 @@ $(document).ready(function() {
'inline_edit' : true
}, function(data) {
if(data.success == true) {
-
$this_field.html('<textarea>'+data.value+'</textarea>')
- .append('<span
class="original_data">'+data_value+'</span>');
+
$this_field.append('<textarea>'+data.value+'</textarea>');
+ $this_field.append('<span
class="original_data">'+data_value+'</span>');
$(".original_data").hide();
}
else {
@@ -471,11 +514,6 @@ $(document).ready(function() {
//handle relations
/**
- * @var curr_value String containing the current value of this
relational field
- */
- var curr_value = $this_field.find('a').text();
-
- /**
* @var post_params Object containing parameters for the POST request
*/
var post_params = {
@@ -485,22 +523,18 @@ $(document).ready(function() {
'table' : window.parent.table,
'column' : field_name,
'token' : window.parent.token,
- 'curr_value' : curr_value
+ 'curr_value' : relation_curr_value
}
$.post('sql.php', post_params, function(data) {
- $this_field.html(data.dropdown)
- .append('<span
class="original_data">'+data_value+'</span>');
+ $this_field.append(data.dropdown);
+ $this_field.append('<span
class="original_data">'+data_value+'</span>');
$(".original_data").hide();
}) // end $.post()
}
else if($this_field.is('.enum')) {
/** @lends jQuery */
//handle enum fields
- /**
- * @var curr_value String containing the current value of this
relational field
- */
- var curr_value = $this_field.text();
/**
* @var post_params Object containing parameters for the POST request
@@ -512,19 +546,19 @@ $(document).ready(function() {
'table' : window.parent.table,
'column' : field_name,
'token' : window.parent.token,
- 'curr_value' : curr_value
+ 'curr_value' : enum_curr_value
}
$.post('sql.php', post_params, function(data) {
- $this_field.html(data.dropdown)
- .append('<span
class="original_data">'+data_value+'</span>');
+ $this_field.append(data.dropdown);
+ $this_field.append('<span
class="original_data">'+data_value+'</span>');
$(".original_data").hide();
}) // end $.post()
}
else if($this_field.is('.null')) {
//handle null fields
- $this_field.html('<textarea></textarea>')
- .append('<span
class="original_data">NULL</span>');
+ $this_field.append('<textarea></textarea>');
+ $this_field.append('<span
class="original_data">NULL</span>');
$(".original_data").hide();
}
})
@@ -585,10 +619,6 @@ $(document).ready(function() {
// Collect values of all fields to submit, we don't know which changed
/**
- * @var params_to_submit Array containing the name/value pairs of all fields
- */
- var params_to_submit = {};
- /**
* @var relation_fields Array containing the name/value pairs of relational
fields
*/
var relation_fields = {};
@@ -601,6 +631,11 @@ $(document).ready(function() {
*/
var transformation_fields = false;
+ /**
+ * @var sql_query String containing the SQL query to update this row
+ */
+ var sql_query = 'UPDATE ' + window.parent.table + ' SET ';
+
$input_siblings.each(function() {
/** @lends jQuery */
/**
@@ -621,50 +656,43 @@ $(document).ready(function() {
if($this_field.is('.transformed')) {
transformation_fields = true;
}
+ /**
+ * @var is_null String capturing whether
'checkbox_null_<field_name>' is checked.
+ */
+ var is_null =
$this_field.find('input:checkbox').is(':checked');
+ var value;
- if($this_field.is(":not(.relation, .enum)")) {
- this_field_params[field_name] =
$this_field.find('textarea').val();
- if($this_field.is('.transformed')) {
- $.extend(transform_fields, this_field_params);
- }
- }
- else {
- // results from a drop-down
- $test_element = $this_field.find('select');
- if ($test_element.length != 0) {
- this_field_params[field_name] = $test_element.val();
+ if (is_null) {
+ sql_query += ' ' + field_name + "=NULL , ";
+ } else {
+ if($this_field.is(":not(.relation, .enum)")) {
+ this_field_params[field_name] =
$this_field.find('textarea').val();
+ if($this_field.is('.transformed')) {
+ $.extend(transform_fields, this_field_params);
+ }
}
+ else {
+ // results from a drop-down
+ $test_element = $this_field.find('select');
+ if ($test_element.length != 0) {
+ this_field_params[field_name] = $test_element.val();
+ }
- // results from Browse foreign value
- $test_element = $this_field.find('span.curr_value');
- if ($test_element.length != 0) {
- this_field_params[field_name] = $test_element.text();
- }
+ // results from Browse foreign value
+ $test_element = $this_field.find('span.curr_value');
+ if ($test_element.length != 0) {
+ this_field_params[field_name] = $test_element.text();
+ }
- if($this_field.is('.relation')) {
- $.extend(relation_fields, this_field_params);
+ if($this_field.is('.relation')) {
+ $.extend(relation_fields, this_field_params);
+ }
}
- }
- $.extend(params_to_submit, this_field_params);
+ sql_query += ' ' + field_name + "='" +
this_field_params[field_name].replace(/'/g, "''") + "' ,
";
+ }
})
- /**
- * @var sql_query String containing the SQL query to update this row
- */
- var sql_query = 'UPDATE ' + window.parent.table + ' SET ';
-
- // $.each() not used here since it cause problems when there is a column
- // in the table with the name 'length'. See bug #3184827
- var value;
- for (var key in params_to_submit) {
- value = params_to_submit[key];
- if (value.length == 0) {
- sql_query += ' ' + key + "=NULL, ";
- } else {
- sql_query += ' ' + key + "='" + value.replace(/'/g,
"''") + "' , ";
- }
- }
//Remove the last ',' appended in the above loop
sql_query = sql_query.replace(/,\s$/, '');
sql_query += ' WHERE ' + PMA_urldecode(where_clause);
@@ -706,57 +734,64 @@ $(document).ready(function() {
$input_siblings.each(function() {
// Inline edit post has been successful.
$this_sibling = $(this);
- if($this_sibling.is(':not(.relation, .enum)')) {
- /**
- * @var new_html String containing value of the data field
after edit
- */
- var new_html = $this_sibling.find('textarea').val();
-
- if($this_sibling.is('.transformed')) {
- var field_name = getFieldName($this_sibling, disp_mode);
- $.each(data.transformations, function(key, value) {
- if(key == field_name) {
- if($this_sibling.is('.text_plain,
.application_octetstream')) {
- new_html = value;
- return false;
+
+ var is_null =
$this_sibling.find('input:checkbox').is(':checked');
+ if (is_null) {
+ $this_sibling.html('NULL');
+ $this_sibling.addClass('null');
+ } else {
+ $this_sibling.removeClass('null');
+ if($this_sibling.is(':not(.relation, .enum)')) {
+ /**
+ * @var new_html String containing value of the data field
after edit
+ */
+ var new_html = $this_sibling.find('textarea').val();
+
+ if($this_sibling.is('.transformed')) {
+ var field_name = getFieldName($this_sibling, disp_mode);
+ $.each(data.transformations, function(key, value) {
+ if(key == field_name) {
+ if($this_sibling.is('.text_plain,
.application_octetstream')) {
+ new_html = value;
+ return false;
+ }
+ else {
+ var new_value =
$this_sibling.find('textarea').val();
+ new_html = $(value).append(new_value);
+ return false;
+ }
}
- else {
- var new_value =
$this_sibling.find('textarea').val();
+ })
+ }
+ }
+ else {
+ var new_html = '';
+ var new_value = '';
+ $test_element = $this_sibling.find('select');
+ if ($test_element.length != 0) {
+ new_value = $test_element.val();
+ }
+
+ $test_element =
$this_sibling.find('span.curr_value');
+ if ($test_element.length != 0) {
+ new_value = $test_element.text();
+ }
+
+ if($this_sibling.is('.relation')) {
+ var field_name = getFieldName($this_sibling, disp_mode);
+ $.each(data.relations, function(key, value) {
+ if(key == field_name) {
new_html = $(value).append(new_value);
return false;
}
- }
- })
- }
- }
- else {
- var new_html = '';
- var new_value = '';
- $test_element = $this_sibling.find('select');
- if ($test_element.length != 0) {
- new_value = $test_element.val();
- }
-
- $test_element = $this_sibling.find('span.curr_value');
- if ($test_element.length != 0) {
- new_value = $test_element.text();
- }
-
-
- if($this_sibling.is('.relation')) {
- var field_name = getFieldName($this_sibling, disp_mode);
- $.each(data.relations, function(key, value) {
- if(key == field_name) {
- new_html = $(value).append(new_value);
- return false;
- }
- })
- }
- if($this_sibling.is('.enum')) {
- new_html = new_value;
+ })
+ }
+ if($this_sibling.is('.enum')) {
+ new_html = new_value;
+ }
}
+ $this_sibling.html(new_html);
}
- $this_sibling.html(new_html);
})
}
else {
diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php
index a06ac63..6fa24cd 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -1234,11 +1234,12 @@ function PMA_displayTableBody(&$dt_result, &$is_display,
$map, $analyzed_sql) {
// 2. Displays the rows' values
for ($i = 0; $i < $fields_cnt; ++$i) {
$meta = $fields_meta[$i];
+ $not_null_class = $meta->not_null ? 'not_null' : '';
$pointer = $i;
$is_field_truncated = false;
//If the previous column had blob data, we need to reset the class
// to $inline_edit_class
- $class = 'data ' . $inline_edit_class . ' ' .
$alternating_color_class;
+ $class = 'data ' . $inline_edit_class . ' ' . $not_null_class
. ' ' . $alternating_color_class;
// See if this column should get highlight because it's used in the
// where-query.
diff --git a/themes/original/css/theme_right.css.php
b/themes/original/css/theme_right.css.php
index 272221d..b1bc753 100644
--- a/themes/original/css/theme_right.css.php
+++ b/themes/original/css/theme_right.css.php
@@ -159,6 +159,12 @@ fieldset.tblFooters {
clear: both;
}
+div.null_div {
+ height: 20px;
+ text-align: center;
+ font-style:normal;
+}
+
fieldset .formelement {
float: <?php echo $left; ?>;
margin-<?php echo $right; ?>: 0.5em;
@@ -235,6 +241,14 @@ th.condition {
border: 1px solid <?php echo
$GLOBALS['cfg']['BrowseMarkerBackground']; ?>;
}
+/**
+ * cells with the value NULL
+ */
+td.null {
+ font-style: italic;
+ text-align: <?php echo $right; ?>;
+}
+
table .value {
text-align: <?php echo $right; ?>;
white-space: normal;
hooks/post-receive
--
phpMyAdmin