From f83596a2ffef0aea5665cdc4a278a1637ed92fe1 Mon Sep 17 00:00:00 2001 From: Jean-Paul Smets <jp@nexedi.com> Date: Thu, 24 Dec 2009 14:13:37 +0000 Subject: [PATCH] Make sure that the values entered by the user in the matrixbox are displayed in priority whenever the form has any error (even outside the matrixbox). git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@31460 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/MatrixBox.py | 37 +++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/product/ERP5Form/MatrixBox.py b/product/ERP5Form/MatrixBox.py index bfa6899425..68fd67fdf4 100644 --- a/product/ERP5Form/MatrixBox.py +++ b/product/ERP5Form/MatrixBox.py @@ -352,11 +352,16 @@ class MatrixBoxWidget(Widget.Widget): if render_format=='html': display_value = attribute_value - - if field_errors.has_key(key): - # Display previous value (in case of error) + if field_errors: + # Display previous value in case of any error + # in this form because we have no cell to get + # value from display_value = REQUEST.get('field_%s' % key, attribute_value) + else: + display_value = attribute_value + if field_errors.has_key(key): + # Display error message if this cell has an error has_error = 1 cell_body += '<span class="input">%s</span>%s' % ( my_field.render(value=display_value, @@ -366,7 +371,7 @@ class MatrixBoxWidget(Widget.Widget): else: cell_body += '<span class="input">%s</span>' %\ my_field.render( - value=attribute_value, + value=display_value, REQUEST=REQUEST, key=key) @@ -378,8 +383,28 @@ class MatrixBoxWidget(Widget.Widget): attribute_value = my_field.get_value('default', cell=None, cell_index=kw, cell_position=(i,j,k)) if render_format == 'html': - cell_body += str(my_field.render(value=attribute_value, - REQUEST=REQUEST, key=key)) + if field_errors: + # Display previous value in case of any error + # in this form because we have no cell to get + # value from + display_value = REQUEST.get('field_%s' % key, + attribute_value) + else: + display_value = attribute_value + if field_errors.has_key(key): + # Display error message if this cell has an error + has_error = 1 + cell_body += '<span class="input">%s</span>%s' % ( + my_field.render(value=display_value, + REQUEST=REQUEST, + key=key), + translateString(field_errors[key].error_text)) + else: + cell_body += '<span class="input">%s</span>' %\ + my_field.render( + value=display_value, + REQUEST=REQUEST, + key=key) elif render_format == 'list': list_result_lines.append(None) -- 2.30.9