equal
deleted
inserted
replaced
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): |