Skip to main content

Zaehlwerk Widgets

Some widgets for the z3c.form framework.

  • Color widget

  • Email widget

  • Lines widget

  • TinyMCE widget

ColorWidget

The widget can render an input field with color preview:

>>> from zope.interface.verify import verifyClass
>>> from z3c.form.interfaces import IWidget
>>> from zw.widget.color.widget import ColorWidget

The ColorWidget is a widget:

>>> verifyClass(IWidget, ColorWidget)
 True

The widget can render a input field only by adapting a request:

>>> from z3c.form.testing import TestRequest
>>> request = TestRequest()
>>> widget = ColorWidget(request)

Such a field provides IWidget:

>>> IWidget.providedBy(widget)
 True

We also need to register the template for at least the widget and request:

>>> import os.path
>>> import zope.interface
>>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer
>>> from zope.pagetemplate.interfaces import IPageTemplate
>>> import zw.widget.color
>>> import z3c.form.widget
>>> template = os.path.join(os.path.dirname(zw.widget.color.__file__),
...   'color_input.pt')
>>> factory = z3c.form.widget.WidgetTemplateFactory(template)
>>> zope.component.provideAdapter(factory,
...     (zope.interface.Interface, IDefaultBrowserLayer, None, None, None),
...     IPageTemplate, name='input')

If we render the widget we get the HTML:

>>> print widget.render()
<input type="text" class="color-widget" value="" />

Adding some more attributes to the widget will make it display more:

>>> widget.id = 'id'
>>> widget.name = 'name'
>>> widget.value = u'value'

>>> print widget.render()
<span id="" class="color-widget color-sample"
      style="background-color: #value;">
</span>
<input type="text" id="id" name="name" class="color-widget"
       value="value" />

EmailWidget

The widget can render an ordinary input field:

>>> from zope.interface.verify import verifyClass
>>> from z3c.form.interfaces import IWidget, INPUT_MODE, DISPLAY_MODE
>>> from zw.widget.email.widget import EmailWidget

The EmailWidget is a widget:

>>> verifyClass(IWidget, EmailWidget)
 True

The widget can render a input field only by adapting a request:

>>> from z3c.form.testing import TestRequest
>>> request = TestRequest()
>>> widget = EmailWidget(request)

Such a field provides IWidget:

>>> IWidget.providedBy(widget)
 True

We also need to register the template for at least the widget and request:

>>> import os.path
>>> import zope.interface
>>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer
>>> from zope.pagetemplate.interfaces import IPageTemplate
>>> import zw.widget.email
>>> import z3c.form.widget
>>> template = os.path.join(os.path.dirname(zw.widget.email.__file__),
...   'email_input.pt')
>>> factory = z3c.form.widget.WidgetTemplateFactory(template)
>>> zope.component.provideAdapter(factory,
...     (zope.interface.Interface, IDefaultBrowserLayer, None, None, None),
...     IPageTemplate, name='input')

If we render the widget we get the HTML:

>>> print widget.render()
<input type="text" class="email-widget" value="" />

Adding some more attributes to the widget will make it display more:

>>> widget.id = 'id'
>>> widget.name = 'name'
>>> widget.value = u'name@domain.tld'

>>> print widget.render()
<input type="text" id="id" name="name" class="email-widget"
       value="name@domain.tld" />

More interesting is to the display view:

>>> widget.mode = DISPLAY_MODE
>>> template = os.path.join(os.path.dirname(zw.widget.email.__file__),
...                         'email_display.pt')
>>> factory = z3c.form.widget.WidgetTemplateFactory(template)
>>> zope.component.provideAdapter(factory,
...     (zope.interface.Interface, IDefaultBrowserLayer, None, None, None),
...     IPageTemplate, name='display')
>>> print widget.render()
<span id="id" class="email-widget">
  <a href="mailto:name@domain.tld">
    name@domain.tld
  </a>
</span>

But if we are not authenticated it should be obscured:

>>> widget.obscured = True
>>> print widget.render()
<span id="id" class="email-widget">
    name@domain.tld
</span>

LinesWidget

The widget can render a HTML text input field, which collects list items by line.

>>> from zope.interface.verify import verifyClass
>>> from z3c.form.interfaces import IWidget
>>> from zw.widget.lines.widget import LinesWidget

The LinesWidget is a widget:

>>> verifyClass(IWidget, LinesWidget)
 True

The widget can render a textarea field only by adapteing a request:

>>> from z3c.form.testing import TestRequest
>>> request = TestRequest()
>>> widget = LinesWidget(request)

Such a field provides IWidget:

>>> IWidget.providedBy(widget)
 True

We also need to register the template for at least the widget and request:

>>> import os.path
>>> import zope.interface
>>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer
>>> from zope.pagetemplate.interfaces import IPageTemplate
>>> import zw.widget.lines
>>> import z3c.form.widget
>>> template = os.path.join(os.path.dirname(zw.widget.lines.__file__),
...   'lines_input.pt')
>>> factory = z3c.form.widget.WidgetTemplateFactory(template)
>>> zope.component.provideAdapter(factory,
...     (zope.interface.Interface, IDefaultBrowserLayer, None, None, None),
...     IPageTemplate, name='input')

If we render the widget we get the HTML:

>>> print widget.render()
<textarea class="lines-widget"></textarea>

Adding some more attributes to the widget will make it display more:

>>> widget.id = 'id'
>>> widget.name = 'name'
>>> widget.value = u'value'
>>> print widget.render()
<textarea id="id" name="name" class="lines-widget">value</textarea>

TinyWidget

The widget can render a HTML text input field based on the TinyMCE JavaScript Content Editor from Moxicode Systems

..http://tinymce.moxiecode.com

>>> from zope.interface.verify import verifyClass
>>> from zope.app.form.interfaces import IInputWidget
>>> from z3c.form.interfaces import IWidget
>>> from zw.widget.tiny.widget import TinyWidget

The TinyWidget is a widget:

>>> verifyClass(IWidget, TinyWidget)
 True

The widget can render a textarea field only by adapteing a request:

>>> from z3c.form.testing import TestRequest
>>> request = TestRequest()
>>> widget = TinyWidget(request)

Such a field provides IWidget:

>>> IWidget.providedBy(widget)
 True

We also need to register the template for at least the widget and request:

>>> import os.path
>>> import zope.interface
>>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer
>>> from zope.pagetemplate.interfaces import IPageTemplate
>>> import zw.widget.tiny
>>> import z3c.form.widget
>>> template = os.path.join(os.path.dirname(zw.widget.tiny.__file__),
...   'tiny_input.pt')
>>> factory = z3c.form.widget.WidgetTemplateFactory(template)
>>> zope.component.provideAdapter(factory,
...     (zope.interface.Interface, IDefaultBrowserLayer, None, None, None),
...     IPageTemplate, name='input')

If we render the widget we get the HTML:

>>> print widget.render()
<textarea class="tiny-widget" cols="60" rows="10"></textarea>

Adding some more attributes to the widget will make it display more:

>>> widget.id = 'id'
>>> widget.name = 'name'
>>> widget.value = u'value'
>>> print widget.render()
<textarea id="id" name="name" class="tiny-widget" cols="60"
          rows="10">value</textarea>

TODO: Testing for ECMAScript code…

CHANGES

Version 0.1.6.2 (2009-01-09)

  • Lines: converter should work only on LinesWidget

Version 0.1.6.1 (2008-12-28)

  • packaging problem in setup.py

Version 0.1.6 (2008-12-28)

  • tinyMCE update (3.2.1.1)

  • tinyMCE is not included in the sources but downloaded.

  • z3c.autoinclude dependency removed

Version 0.1.5 (2008-11-18)

  • tinyMCE update (3.2.1)

Version 0.1.4 (2008-06-08)

  • tinyMCE update (3.0.9)

Version 0.1.3 (2008-06-08)

  • tinyMCE bug fix for gecko based browsers

Version 0.1.2 (2008-04-13)

  • email widget for z3c.schema.email added.

Version 0.1 (2008-02-17)

  • Initial release

Metadata

Release files for zw.widget 0.1.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zw.widget 0.1.6.2
File Size Uploaded
zw.widget-0.1.6.2.tar.gz 26.0 kB Details

Release files / zw.widget-0.1.6.2.tar.gz

Download URL zw.widget-0.1.6.2.tar.gz
Size 26.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3e549f1a6307953e7a60f2c2623240de46de14099907a2298d7f7f80d45f2c30
BLAKE2b-256 checksum
How to use checksums
ea93b4020b416d50e1b116f2c0f9ffa2fb97242023168c30eb8f3dac05c4be2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.6.2 This release

1 release file

0.1.6

1 release file

0.1.5

0.1.4

2 release files

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

0.1

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page