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 <[email protected]>
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 <[email protected]>
Date:   Sun Feb 20 01:05:37 2011 +0530

    Uncheck 'null checkbox' when the editor area is changed.

commit c5b0afd16eec37241ec34de24de329d684aec525
Author: Madhura Jayaratne <[email protected]>
Date:   Sun Feb 20 01:03:07 2011 +0530

    Tab and white space clean up.

commit 81974e6d93d3a7ead5d9d20ccb66a06e80d76f8e
Author: Madhura Jayaratne <[email protected]>
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 <[email protected]>
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

------------------------------------------------------------------------------
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

Reply via email to