diff --git a/js/makegrid.js b/js/makegrid.js index 3c90a62c8a..21c3ec8852 100644 --- a/js/makegrid.js +++ b/js/makegrid.js @@ -573,6 +573,13 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi { if (!g.isCellEditActive) { var $cell = $(cell); + + if ($cell.is('.text')) { + g.cEdit = g.cEditTextarea; + } else { + g.cEdit = g.cEditStd; + } + // remove all edit area and hide it $(g.cEdit).find('.edit_area').empty().hide(); // reposition the cEdit element @@ -633,6 +640,10 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi ? data.truncatableFieldValue : $this_field.data('value'); + //Add
before carriage return. + new_html = escapeHtml(new_html); + new_html = new_html.replace('\n', '
\n'); + //remove decimal places if column type not supported if (($this_field.attr('data-decimals') === 0) && ( $this_field.attr('data-type').indexOf('time') != -1)) { new_html = new_html.substring(0, new_html.indexOf('.')); @@ -650,7 +661,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi if ($this_field.hasClass('hex') && $this_field.find('a').length) { selector = 'a'; } - $this_field.find(selector).text(new_html); + $this_field.find(selector).html(new_html); } if ($this_field.is('.bit')) { $this_field.find('span').text($this_field.data('value')); @@ -808,7 +819,7 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } //reset the position of the edit_area div after closing datetime picker - $('.edit_area').css({'top' :'0','position':''}); + $(g.cEdit).find('.edit_area').css({'top' :'0','position':''}); if ($td.is('.relation')) { //handle relations @@ -1012,10 +1023,10 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi $('.cEdit').append(datepicker_div); var edit_area_top = $('#ui-datepicker-div').height()+32; - $('.edit_area').css({'top' : edit_area_top+'px', 'position': 'absolute'}); + $(g.cEdit).find('.edit_area').css({'top' : edit_area_top+'px', 'position': 'absolute'}); if(is_null){ - $('.edit_area').hide(); + $(g.cEdit).find('.edit_area').hide(); } // cancel any click on the datepicker element @@ -1653,12 +1664,19 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } // create cell edit wrapper element - g.cEdit = document.createElement('div'); + g.cEditStd = document.createElement('div'); + g.cEdit = g.cEditStd; + g.cEditTextarea = document.createElement('div'); + + // adjust g.cEditStd + g.cEditStd.className = 'cEdit'; + $(g.cEditStd).html('
'); + $(g.cEditStd).hide(); // adjust g.cEdit - g.cEdit.className = 'cEdit'; - $(g.cEdit).html('
'); - $(g.cEdit).hide(); + g.cEditTextarea.className = 'cEdit'; + $(g.cEditTextarea).html('
'); + $(g.cEditTextarea).hide(); // assign cell editing hint g.cellEditHint = PMA_messages.strCellEditHint; @@ -1724,17 +1742,33 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi } }); - $(g.cEdit).find('.edit_box').focus(function (e) { + $(g.cEditStd).find('.edit_box').focus(function (e) { g.showEditArea(); }); - $(g.cEdit).find('.edit_box, select').live('keydown', function (e) { + $(g.cEditStd).find('.edit_box, select').live('keydown', function (e) { if (e.which == 13) { // post on pressing "Enter" e.preventDefault(); g.saveOrPostEditedCell(); } }); - $(g.cEdit).keydown(function (e) { + $(g.cEditStd).keydown(function (e) { + if (!g.isEditCellTextEditable) { + // prevent text editing + e.preventDefault(); + } + }); + $(g.cEditTextarea).find('.edit_box').focus(function (e) { + g.showEditArea(); + }); + $(g.cEditTextarea).find('.edit_box, select').live('keydown', function (e) { + if (e.which == 13) { + // post on pressing "Enter" + e.preventDefault(); + g.saveOrPostEditedCell(); + } + }); + $(g.cEditTextarea).keydown(function (e) { if (!g.isEditCellTextEditable) { // prevent text editing e.preventDefault(); @@ -1766,7 +1800,8 @@ function PMA_makegrid(t, enableResize, enableReorder, enableVisib, enableGridEdi }); // attach to global div - $(g.gDiv).append(g.cEdit); + $(g.gDiv).append(g.cEditStd); + $(g.gDiv).append(g.cEditTextarea); // add hint for grid editing feature when hovering "Edit" link in each table row if (PMA_messages.strGridEditFeatureHint !== undefined) { diff --git a/libraries/DisplayResults.class.php b/libraries/DisplayResults.class.php index bf425b3b0b..bc11845379 100644 --- a/libraries/DisplayResults.class.php +++ b/libraries/DisplayResults.class.php @@ -3637,6 +3637,8 @@ class PMA_DisplayResults $field_type_class = 'datefield'; } elseif ($type == self::TIME_FIELD) { $field_type_class = 'timefield'; + } elseif ($type == self::STRING_FIELD) { + $field_type_class = 'text'; } else { $field_type_class = ''; } diff --git a/libraries/core.lib.php b/libraries/core.lib.php index 78a1b220e7..2d223e534b 100644 --- a/libraries/core.lib.php +++ b/libraries/core.lib.php @@ -901,7 +901,7 @@ function PMA_mimeDefaultFunction($buffer) '    ', str_replace(' ', '  ', $buffer) ); - $buffer = preg_replace("@((\015\012)|(\015)|(\012))@", '
', $buffer); + $buffer = preg_replace("@((\015\012)|(\015)|(\012))@", '
' . "\n", $buffer); return $buffer; } diff --git a/test/classes/PMA_DisplayResults_test.php b/test/classes/PMA_DisplayResults_test.php index ca04f91af8..a09e28dee0 100644 --- a/test/classes/PMA_DisplayResults_test.php +++ b/test/classes/PMA_DisplayResults_test.php @@ -567,7 +567,7 @@ class PMA_DisplayResults_Test extends PHPUnit_Framework_TestCase public function testGetClassForDateTimeRelatedFieldsCase3() { $this->assertEquals( - '', + 'text', $this->_callPrivateFunction( '_getClassForDateTimeRelatedFields', array(PMA_DisplayResults::STRING_FIELD)