web/formwidgets.py
changeset 10411 4ee15441f2eb
parent 10222 75d6096216d7
parent 10404 797db633d60c
child 10522 1660a0fa4f43
equal deleted inserted replaced
10410:eb681a030699 10411:4ee15441f2eb
   398     type = 'button'
   398     type = 'button'
   399 
   399 
   400 
   400 
   401 class TextArea(FieldWidget):
   401 class TextArea(FieldWidget):
   402     """Simple <textarea>, will return a unicode string."""
   402     """Simple <textarea>, will return a unicode string."""
       
   403     _minrows = 2
       
   404     _maxrows = 15
       
   405     _columns = 80
   403 
   406 
   404     def _render(self, form, field, renderer):
   407     def _render(self, form, field, renderer):
   405         values, attrs = self.values_and_attributes(form, field)
   408         values, attrs = self.values_and_attributes(form, field)
   406         attrs.setdefault('onkeyup', 'autogrow(this)')
   409         attrs.setdefault('onkeyup', 'autogrow(this)')
   407         if not values:
   410         if not values:
   411         else:
   414         else:
   412             raise ValueError('a textarea is not supposed to be multivalued')
   415             raise ValueError('a textarea is not supposed to be multivalued')
   413         lines = value.splitlines()
   416         lines = value.splitlines()
   414         linecount = len(lines)
   417         linecount = len(lines)
   415         for line in lines:
   418         for line in lines:
   416             linecount += len(line) / 80
   419             linecount += len(line) / self._columns
   417         attrs.setdefault('cols', 80)
   420         attrs.setdefault('cols', self._columns)
   418         attrs.setdefault('rows', min(15, linecount + 2))
   421         attrs.setdefault('rows', min(self._maxrows, linecount + self._minrows))
   419         return tags.textarea(value, name=field.input_name(form, self.suffix),
   422         return tags.textarea(value, name=field.input_name(form, self.suffix),
   420                              **attrs)
   423                              **attrs)
   421 
   424 
   422 
   425 
   423 class FCKEditor(TextArea):
   426 class FCKEditor(TextArea):