Skip to content

Commit

Permalink
TextAreaWidget and TextLinesWidget with new chameleon template
Browse files Browse the repository at this point in the history
  • Loading branch information
petschki committed Jul 21, 2023
1 parent 8fe80b7 commit fbd528e
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 84 deletions.
5 changes: 5 additions & 0 deletions plone/app/z3cform/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from z3c.form.interfaces import IRadioWidget as IBaseRadioWidget
from z3c.form.interfaces import ISelectWidget as IBaseSelectWidget
from z3c.form.interfaces import ISingleCheckBoxWidget
from z3c.form.interfaces import ITextAreaWidget as IBaseTextAreaWidget
from z3c.form.interfaces import ITextWidget as IBaseTextWidget
from zope.deferredimport import deprecated
from zope.interface import Interface
Expand Down Expand Up @@ -42,6 +43,10 @@ class ITextWidget(IBaseTextWidget):
"""Marker interface for base text input"""


class ITextAreaWidget(IBaseTextAreaWidget):
"""Marker interface for base text input"""


class IDateWidget(ITextWidget):
"""Marker interface for the DateWidget."""

Expand Down
36 changes: 2 additions & 34 deletions plone/app/z3cform/templates/textarea_input.pt
Original file line number Diff line number Diff line change
Expand Up @@ -2,42 +2,10 @@
xmlns:tal="http://xml.zope.org/namespaces/tal"
tal:omit-tag=""
>
<textarea class=""
id=""
accesskey=""
cols=""
name=""
rows=""
tabindex=""
<textarea name="${view/name}"
tal:content="view/value"
tal:attributes="
id view/id;
name view/name;
required python:view.required and 'required' or None;
class string:form-control ${view/klass};
style view/style;
title view/title;
lang view/lang;
onclick view/onclick;
ondblclick view/ondblclick;
onmousedown view/onmousedown;
onmouseup view/onmouseup;
onmouseover view/onmouseover;
onmousemove view/onmousemove;
onmouseout view/onmouseout;
onkeypress view/onkeypress;
onkeydown view/onkeydown;
onkeyup view/onkeyup;
disabled view/disabled;
tabindex view/tabindex;
onfocus view/onfocus;
onblur view/onblur;
onchange view/onchange;
cols view/cols;
rows view/rows;
readonly view/readonly;
accesskey view/accesskey;
onselect view/onselect;
view/attributes;
"
></textarea>
</html>
35 changes: 2 additions & 33 deletions plone/app/z3cform/templates/textlines_input.pt
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,10 @@
xmlns:tal="http://xml.zope.org/namespaces/tal"
tal:omit-tag=""
>
<textarea class=""
id=""
accesskey=""
cols=""
name=""
rows=""
tabindex=""
<textarea name="${view/name}"
tal:content="structure view/value"
tal:attributes="
id view/id;
name view/name;
class string:form-control ${view/klass};
style view/style;
title view/title;
lang view/lang;
onclick view/onclick;
ondblclick view/ondblclick;
onmousedown view/onmousedown;
onmouseup view/onmouseup;
onmouseover view/onmouseover;
onmousemove view/onmousemove;
onmouseout view/onmouseout;
onkeypress view/onkeypress;
onkeydown view/onkeydown;
onkeyup view/onkeyup;
disabled view/disabled;
tabindex view/tabindex;
onfocus view/onfocus;
onblur view/onblur;
onchange view/onchange;
cols view/cols;
rows view/rows;
readonly view/readonly;
accesskey view/accesskey;
onselect view/onselect;
view/attributes;
"
></textarea>
</html>
47 changes: 30 additions & 17 deletions plone/app/z3cform/widgets.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -68,57 +68,70 @@
mode="input"
/>

<!-- Make the default widget for sequence-of-text-lines a textlines
widget; the default is too confusing -->
<!-- textarea -->
<adapter
factory=".widgets.text.TextAreaFieldWidget"
for="zope.schema.interfaces.IText
plone.app.z3cform.interfaces.IPloneFormLayer"
/>

<adapter
factory=".widgets.text.TextAreaFieldWidget"
for="zope.schema.interfaces.IASCII
plone.app.z3cform.interfaces.IPloneFormLayer"
/>

<z3c:widgetTemplate
widget="plone.z3cform.textlines.textlines.ITextLinesWidget"
template="templates/textlines_input.pt"
widget=".interfaces.ITextAreaWidget"
template="templates/textarea_input.pt"
layer=".interfaces.IPloneFormLayer"
mode="input"
/>

<!-- Make the default widget for sequence-of-text-lines a textlines
widget; the default is too confusing -->

<adapter
factory="plone.z3cform.textlines.textlines.TextLinesFieldWidgetFactory"
factory="z3c.form.browser.textlines.TextLinesFieldWidgetFactory"
provides="z3c.form.interfaces.IFieldWidget"
for="zope.schema.interfaces.IList
zope.schema.interfaces.ITextLine
plone.app.z3cform.interfaces.IPloneFormLayer"
/>

<adapter
factory="plone.z3cform.textlines.textlines.TextLinesFieldWidgetFactory"
factory="z3c.form.browser.textlines.TextLinesFieldWidgetFactory"
provides="z3c.form.interfaces.IFieldWidget"
for="zope.schema.interfaces.ITuple
zope.schema.interfaces.ITextLine
plone.app.z3cform.interfaces.IPloneFormLayer"
/>

<adapter
factory="plone.z3cform.textlines.textlines.TextLinesFieldWidgetFactory"
factory="z3c.form.browser.textlines.TextLinesFieldWidgetFactory"
provides="z3c.form.interfaces.IFieldWidget"
for="zope.schema.interfaces.IAbstractSet
zope.schema.interfaces.ITextLine
plone.app.z3cform.interfaces.IPloneFormLayer"
/>

<adapter
factory="plone.z3cform.textlines.textlines.TextLinesFieldWidgetFactory"
factory="z3c.form.browser.textlines.TextLinesFieldWidgetFactory"
provides="z3c.form.interfaces.IFieldWidget"
for="zope.schema.interfaces.IList
zope.schema.interfaces.IASCIILine
plone.app.z3cform.interfaces.IPloneFormLayer"
/>

<adapter
factory="plone.z3cform.textlines.textlines.TextLinesFieldWidgetFactory"
factory="z3c.form.browser.textlines.TextLinesFieldWidgetFactory"
provides="z3c.form.interfaces.IFieldWidget"
for="zope.schema.interfaces.ITuple
zope.schema.interfaces.IASCIILine
plone.app.z3cform.interfaces.IPloneFormLayer"
/>
<adapter
factory="plone.z3cform.textlines.textlines.TextLinesFieldWidgetFactory"
factory="z3c.form.browser.textlines.TextLinesFieldWidgetFactory"
provides="z3c.form.interfaces.IFieldWidget"
for="zope.schema.interfaces.IAbstractSet
zope.schema.interfaces.IASCIILine
Expand Down Expand Up @@ -269,13 +282,6 @@

<!-- z3c.form overrides -->

<z3c:widgetTemplate
widget="z3c.form.interfaces.ITextAreaWidget"
template="templates/textarea_input.pt"
layer=".interfaces.IPloneFormLayer"
mode="input"
/>

<z3c:widgetTemplate
widget="z3c.form.interfaces.ISelectWidget"
template="templates/select_input.pt"
Expand Down Expand Up @@ -325,6 +331,13 @@
mode="input"
/>

<z3c:widgetTemplate
widget="z3c.form.interfaces.ITextLinesWidget"
template="templates/textlines_input.pt"
layer=".interfaces.IPloneFormLayer"
mode="input"
/>

<!-- plone.formwidget.namedfile -->
<z3c:widgetTemplate
widget="plone.formwidget.namedfile.interfaces.INamedFileWidget"
Expand Down
14 changes: 14 additions & 0 deletions plone/app/z3cform/widgets/text.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from plone.app.z3cform.interfaces import ITextAreaWidget
from plone.app.z3cform.interfaces import ITextWidget
from plone.app.z3cform.widgets.base import HTMLTextAreaWidget
from plone.app.z3cform.widgets.base import HTMLTextInputWidget
from z3c.form.interfaces import IFieldWidget
from z3c.form.widget import FieldWidget
Expand All @@ -17,3 +19,15 @@ class TextWidget(HTMLTextInputWidget, Widget):
@implementer(IFieldWidget)
def TextFieldWidget(field, request):
return FieldWidget(field, TextWidget(request))


@implementer_only(ITextAreaWidget)
class TextAreaWidget(HTMLTextAreaWidget, Widget):
"""enhanced textarea widget"""

klass = "form-control textarea-widget"


@implementer(IFieldWidget)
def TextAreaFieldWidget(field, request):
return FieldWidget(field, TextAreaWidget(request))

0 comments on commit fbd528e

Please sign in to comment.