Merge pull request #1193 from Tithugues/b4416

Fix #4416: new lines are removed when editing
This commit is contained in:
Marc Delisle 2014-05-25 08:17:16 -04:00
commit 6efaa9e166
4 changed files with 51 additions and 14 deletions

View File

@ -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 <br> before carriage return.
new_html = escapeHtml(new_html);
new_html = new_html.replace('\n', '<br>\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('<input class="edit_box" rows="1" ></input><div class="edit_area" />');
$(g.cEditStd).hide();
// adjust g.cEdit
g.cEdit.className = 'cEdit';
$(g.cEdit).html('<input class="edit_box" rows="1" ></input><div class="edit_area" />');
$(g.cEdit).hide();
g.cEditTextarea.className = 'cEdit';
$(g.cEditTextarea).html('<textarea class="edit_box" rows="1" ></textarea><div class="edit_area" />');
$(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) {

View File

@ -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 = '';
}

View File

@ -901,7 +901,7 @@ function PMA_mimeDefaultFunction($buffer)
' &nbsp;&nbsp;&nbsp;',
str_replace(' ', ' &nbsp;', $buffer)
);
$buffer = preg_replace("@((\015\012)|(\015)|(\012))@", '<br />', $buffer);
$buffer = preg_replace("@((\015\012)|(\015)|(\012))@", '<br />' . "\n", $buffer);
return $buffer;
}

View File

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