diff --git a/apps/common/widgets.py b/apps/common/widgets.py index 3a3aa6c459..66826ba3e2 100644 --- a/apps/common/widgets.py +++ b/apps/common/widgets.py @@ -3,6 +3,9 @@ import os from django.utils.translation import ugettext_lazy as _ from django.utils.safestring import mark_safe from django import forms +from django.forms.util import flatatt +from django.utils.html import escape, conditional_escape +from django.utils.encoding import StrAndUnicode, force_unicode class PlainWidget(forms.widgets.Widget): @@ -63,3 +66,21 @@ def two_state_template(state, famfam_ok_icon=u'tick', famfam_fail_icon=u'cross') return mark_safe(u'' % famfam_ok_icon) else: return mark_safe(u'' % famfam_fail_icon) + + +class TextAreaDiv(forms.widgets.Widget): + def __init__(self, attrs=None): + # The 'rows' and 'cols' attributes are required for HTML correctness. + default_attrs = {'class': 'text_area_div'} + #'cols': '40', 'rows': '10'} + if attrs: + default_attrs.update(attrs) + super(TextAreaDiv, self).__init__(default_attrs) + + def render(self, name, value, attrs=None): + if value is None: value = '' + final_attrs = self.build_attrs(attrs, name=name) + result = mark_safe(u'%s' % (flatatt(final_attrs), + conditional_escape(force_unicode(value)))) + + return mark_safe(result.replace('\n', '
')) diff --git a/site_media/css/override.css b/site_media/css/override.css index 4d8797950e..8283bd0777 100644 --- a/site_media/css/override.css +++ b/site_media/css/override.css @@ -21,3 +21,14 @@ .choice_form { min-width: 200px; } + +.text_area_div { + border: 1px solid; + height: 200px; + overflow: auto; + border: 1px solid #E2E2E2; + width: 100%; + font-size: 1.2em; + margin: 0; + padding: 1px 0; +}