[Erp5-report] r11855 - /erp5/trunk/products/ERP5Form/FormulatorPatch.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jan 3 02:54:34 CET 2007


Author: jp
Date: Wed Jan  3 02:54:32 2007
New Revision: 11855

URL: http://svn.erp5.org?rev=11855&view=rev
Log:
Escape all strings. This will require some updates in svn related forms.

Modified:
    erp5/trunk/products/ERP5Form/FormulatorPatch.py

Modified: erp5/trunk/products/ERP5Form/FormulatorPatch.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormulatorPatch.py?rev=11855&r1=11854&r2=11855&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormulatorPatch.py (original)
+++ erp5/trunk/products/ERP5Form/FormulatorPatch.py Wed Jan  3 02:54:32 2007
@@ -24,6 +24,8 @@
 from Products.Formulator.Field import Field
 from Products.Formulator.Widget import Widget
 from AccessControl import ClassSecurityInfo
+from cgi import escape
+import types
 from zLOG import LOG
 
 def Field_generate_field_key(self, validation=0, key=None):
@@ -288,7 +290,7 @@
 from Products.Formulator.Widget import render_element
 from DocumentTemplate.DT_Util import html_quote
 
-def TextAreaWidget_render_view(self, field, value):
+def TextAreaWidget_render_view(self, field, value): # Probably useless
     width = field.get_value('width')
     height = field.get_value('height')
 
@@ -300,7 +302,8 @@
                           contents=html_quote(value),
                           extra='readonly')
 
-TextAreaWidget.render_view = TextAreaWidget_render_view
+# TextAreaWidget.render_view = TextAreaWidget_render_view
+# See bellow TextWidget_patched_render_view
 
 # Patch the render_view of LinkField so that it is clickable in read-only mode.
 from Products.Formulator.Widget import TextWidget
@@ -329,17 +332,30 @@
 # Patch the render_view of TextField to enclose the value within <span> html tags if css class defined
 def TextWidget_patched_render_view(self, field, value):
   """Render text as non-editable.
+     This renderer is designed to be type error resistant.
+     in we get a non string value. It does escape the result
+     and produces clean xhtml.
   """
   if value is None:
     return ''
+  if isinstance(value, types.ListType) or isinstance(value, types.TupleType):
+    old_value = value
+  else:
+    old_value = [str(value)]
+  value = []
+  for line in old_value:
+    value.append(escape(line))
+  value = '<br/>'.join(value)
   css_class = field.get_value('css_class')
   if css_class not in ('', None):
+    # All strings should be escaped before rendering in HTML
+    # except for editor field
     return "<span class='%s'>%s</span>" % (css_class, value)
   return value
 
 from Products.Formulator.Widget import TextWidget
 TextWidget.render_view = TextWidget_patched_render_view
-
+TextAreaWidget.render_view = TextWidget_patched_render_view # Use a standard span rendering
 
 class IntegerWidget(TextWidget) :
   def render(self, field, key, value, REQUEST) :




More information about the Erp5-report mailing list