[Checkins] SVN: plone.z3cform/trunk/ copied the textlines widget from z3c.form trunk so that dexterity doesn't have to depend on yet another development package

David Glick davidglick at onenw.org
Sat Dec 13 02:35:24 EST 2008


Log message for revision 94012:
  copied the textlines widget from z3c.form trunk so that dexterity doesn't have to depend on yet another development package

Changed:
  U   plone.z3cform/trunk/docs/HISTORY.txt
  U   plone.z3cform/trunk/plone/z3cform/configure.zcml
  D   plone.z3cform/trunk/plone/z3cform/locales/de/LC_MESSAGES/plone.z3cform.mo
  A   plone.z3cform/trunk/plone/z3cform/textlines/
  A   plone.z3cform/trunk/plone/z3cform/textlines/__init__.py
  A   plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
  A   plone.z3cform/trunk/plone/z3cform/textlines/textlines.txt
  A   plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml
  A   plone.z3cform/trunk/plone/z3cform/textlines/textlines_display.pt
  A   plone.z3cform/trunk/plone/z3cform/textlines/textlines_input.pt

-=-
Modified: plone.z3cform/trunk/docs/HISTORY.txt
===================================================================
--- plone.z3cform/trunk/docs/HISTORY.txt	2008-12-13 02:20:01 UTC (rev 94011)
+++ plone.z3cform/trunk/docs/HISTORY.txt	2008-12-13 07:35:24 UTC (rev 94012)
@@ -4,7 +4,9 @@
 0.5.4 - unreleased
 ------------------
 
-* ...
+* Copied the basic textlines widget from z3c.form trunk for use until
+  it is released.
+  [davisagli]
 
 0.5.3 - 2008-12-09
 ------------------

Modified: plone.z3cform/trunk/plone/z3cform/configure.zcml
===================================================================
--- plone.z3cform/trunk/plone/z3cform/configure.zcml	2008-12-13 02:20:01 UTC (rev 94011)
+++ plone.z3cform/trunk/plone/z3cform/configure.zcml	2008-12-13 07:35:24 UTC (rev 94012)
@@ -1,5 +1,6 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
+    xmlns:zcml="http://namespaces.zope.org/zcml"
     xmlns:browser="http://namespaces.zope.org/browser"
     xmlns:i18n="http://namespaces.zope.org/i18n"
     i18n_domain="plone.z3cform">
@@ -7,6 +8,9 @@
   <include package="z3c.form" file="meta.zcml" />
   <include package="z3c.form" />
 
+  <include package=".textlines" file="textlines.zcml"
+    zcml:condition="not-installed z3c.form.browser.textlines"/>
+
   <includeOverrides file="overrides.zcml" />
   <include file="templates.zcml" />
 

Deleted: plone.z3cform/trunk/plone/z3cform/locales/de/LC_MESSAGES/plone.z3cform.mo
===================================================================
(Binary files differ)


Property changes on: plone.z3cform/trunk/plone/z3cform/textlines/__init__.py
___________________________________________________________________
Added: svn:eol-style
   + native

Added: plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines.py	                        (rev 0)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines.py	2008-12-13 07:35:24 UTC (rev 94012)
@@ -0,0 +1,67 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+__docformat__ = "reStructuredText"
+
+import zope.component
+import zope.interface
+import zope.schema.interfaces
+
+from z3c.form import interfaces
+from z3c.form import widget
+from z3c.form import converter
+from z3c.form.browser import textarea
+
+class ITextLinesWidget(interfaces.IWidget):
+    """Text lines widget."""
+
+class TextLinesWidget(textarea.TextAreaWidget):
+    """Input type sequence widget implementation."""
+    zope.interface.implementsOnly(ITextLinesWidget)
+
+
+def TextLinesFieldWidget(field, request):
+    """IFieldWidget factory for TextLinesWidget."""
+    return widget.FieldWidget(field, TextLinesWidget(request))
+
+
+ at zope.interface.implementer(interfaces.IFieldWidget)
+def TextLinesFieldWidgetFactory(field, value_type, request):
+    """IFieldWidget factory for TextLinesWidget."""
+    return TextLinesFieldWidget(field, request)
+
+class TextLinesConverter(converter.BaseDataConverter):
+    """Data converter for ITextLinesWidget."""
+
+    zope.component.adapts(
+        zope.schema.interfaces.ISequence, ITextLinesWidget)
+
+    def toWidgetValue(self, value):
+        """Convert from text lines to HTML representation."""
+        # if the value is the missing value, then an empty list is produced.
+        if value is self.field.missing_value:
+            return u''
+        return "\n".join(value)
+
+    def toFieldValue(self, value):
+        """See interfaces.IDataConverter"""
+        widget = self.widget
+        collectionType = self.field._type
+        if not len(value):
+            return self.field.missing_value
+        valueType = self.field.value_type._type
+        values = [valueType(v) for v in value.split()]
+        return collectionType(values)
\ No newline at end of file


Property changes on: plone.z3cform/trunk/plone/z3cform/textlines/textlines.py
___________________________________________________________________
Added: svn:eol-style
   + native

Added: plone.z3cform/trunk/plone/z3cform/textlines/textlines.txt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines.txt	                        (rev 0)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines.txt	2008-12-13 07:35:24 UTC (rev 94012)
@@ -0,0 +1,56 @@
+================
+TextLines Widget
+================
+
+The text lines widget allows you to store a sequence of textline. This sequence
+is stored as a list or tuple. This depends on what you are using as sequence
+type.
+
+As for all widgets, the text lines widget must provide the new ``IWidget``
+interface:
+
+  >>> from zope.interface.verify import verifyClass
+  >>> from z3c.form import interfaces
+  >>> from plone.z3cform.textlines import textlines
+
+  >>> verifyClass(interfaces.IWidget, textlines.TextLinesWidget)
+  True
+
+The widget can be instantiated only using the request:
+
+  >>> from z3c.form.testing import TestRequest
+  >>> request = TestRequest()
+
+  >>> widget = textlines.TextLinesWidget(request)
+
+Before rendering the widget, one has to set the name and id of the widget:
+
+  >>> widget.id = 'id'
+  >>> widget.name = 'name'
+
+We also need to register the template for at least the widget and request:
+
+  >>> import zope.component
+  >>> from zope.pagetemplate.interfaces import IPageTemplate
+  >>> from z3c.form.testing import getPath
+  >>> from z3c.form.widget import WidgetTemplateFactory
+
+  >>> zope.component.provideAdapter(
+  ...     WidgetTemplateFactory(getPath('textlines_input.pt'), 'text/html'),
+  ...     (None, None, None, None, textlines.ITextLinesWidget),
+  ...     IPageTemplate, name=interfaces.INPUT_MODE)
+
+If we render the widget we get an empty textarea widget:
+
+  >>> print widget.render()
+  <textarea id="id" name="name" class="textarea-widget"></textarea>
+
+Adding some more attributes to the widget will make it display more:
+
+  >>> widget.id = 'id'
+  >>> widget.name = 'name'
+  >>> widget.value = u'foo\nbar'
+
+  >>> print widget.render()
+  <textarea id="id" name="name" class="textarea-widget">foo
+  bar</textarea>


Property changes on: plone.z3cform/trunk/plone/z3cform/textlines/textlines.txt
___________________________________________________________________
Added: svn:eol-style
   + native

Added: plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml	                        (rev 0)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml	2008-12-13 07:35:24 UTC (rev 94012)
@@ -0,0 +1,33 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:z3c="http://namespaces.zope.org/z3c"
+    i18n_domain="z3c.form">
+
+  <class class=".textlines.TextLinesWidget">
+    <require
+        permission="zope.Public"
+        interface="plone.z3cform.textlines.textlines.ITextLinesWidget"
+        />
+  </class>
+
+  <!-- this widget is not configured for any field by default -->
+
+  <z3c:widgetTemplate
+      mode="display"
+      widget="plone.z3cform.textlines.textlines.ITextLinesWidget"
+      layer="z3c.form.interfaces.IFormLayer"
+      template="textlines_display.pt"
+      />
+
+  <z3c:widgetTemplate
+      mode="input"
+      widget="plone.z3cform.textlines.textlines.ITextLinesWidget"
+      layer="z3c.form.interfaces.IFormLayer"
+      template="textlines_input.pt"
+      />
+      
+  <adapter
+      factory=".textlines.TextLinesConverter"
+      />
+
+</configure>


Property changes on: plone.z3cform/trunk/plone/z3cform/textlines/textlines.zcml
___________________________________________________________________
Added: svn:eol-style
   + native

Added: plone.z3cform/trunk/plone/z3cform/textlines/textlines_display.pt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines_display.pt	                        (rev 0)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines_display.pt	2008-12-13 07:35:24 UTC (rev 94012)
@@ -0,0 +1,22 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      tal:omit-tag="">
+<span id="" class=""
+      tal:attributes="id view/id;
+                      class 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"><tal:block
+      condition="view/value" content="view/value"
+/></span>
+</html>

Added: plone.z3cform/trunk/plone/z3cform/textlines/textlines_input.pt
===================================================================
--- plone.z3cform/trunk/plone/z3cform/textlines/textlines_input.pt	                        (rev 0)
+++ plone.z3cform/trunk/plone/z3cform/textlines/textlines_input.pt	2008-12-13 07:35:24 UTC (rev 94012)
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      tal:omit-tag="">
+<textarea
+    id="" name="" class="" cols="" rows=""
+    tabindex="" disabled="" readonly="" accesskey=""
+    tal:attributes="id view/id;
+                    name view/name;
+                    class 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"
+    tal:content="structure view/value" />
+</html>



More information about the Checkins mailing list