[Checkins] SVN: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/ intial work on implementing a piece of the doctest.

Paul Carduner paulcarduner at gmail.com
Wed Jun 6 10:34:46 EDT 2007


Log message for revision 76425:
  intial work on implementing a piece of the doctest.

Changed:
  U   Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/README.txt
  A   Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py
  A   Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
  A   Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py
  A   Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/tests.py

-=-
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/README.txt
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/README.txt	2007-06-06 14:33:28 UTC (rev 76424)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/README.txt	2007-06-06 14:34:46 UTC (rev 76425)
@@ -17,17 +17,18 @@
 There are all the javascript event types reproduced in python:
 
   >>> jsevent.CLICK
-  "click"
+  <JSEvent "click">
   >>> jsevent.DBLCLICK
-  "dblclick"
+  <JSEvent "dblclick">
   >>> jsevent.CHANGED
-  "changed"
+  <JSEvent "changed">
   >>> jsevent.LOAD
-  "load"
+  <JSEvent "load">
 
 These are actually objects that implement IJSEvent.
 
   >>> jsinterfaces.IJSEvent.providedBy(jsevent.CLICK)
+  True
 
 TODO: Find out what all the other javascript events are and stick them
 in here.
@@ -47,11 +48,20 @@
 Different javascript libraries handle events in different ways, so we
 have to specify which javascript library we want to use to handle the
 events so as to render the javascript correctly.  This is done using
-browser layers.  The formjs framework implements renderers for jquery.
+browser layers.  The formjs framework implements renderers for
+jquery.  The rendered are registered as adapters as follows.
 
+  >>> import zope.component
+  >>> zope.component.provideAdapter(jsevent.JQueryEventRenderer)
+
+  >>> from z3c.formjs.testing import TestRequest
   >>> from jquery.layer import IJQueryJavaScriptBrowserLayer
-  >>> renderer = jsinterfaces.IJSEventRenderer(jsevent.CLICK,
-  ...                                          IJQueryJavaScriptBrowserLayer)
+  >>> request = TestRequest()
+  >>> IJQueryJavaScriptBrowserLayer.providedBy(request)
+  True
+
+  >>> renderer = zope.component.getMultiAdapter((jsevent.CLICK,
+  ...                                            request), jsinterfaces.IJSEventRenderer)
   >>> renderer.render(simpleHandler, id)
   '$("#form-field-age").bind("click", function(){alert("Some event was called!");});'
 
@@ -106,7 +116,6 @@
 Let' now create an action manager for the button manager in the form. To do
 that we first need a request and a form instance:
 
-  >>> from z3c.formjs.testing import TestRequest
   >>> request = TestRequest()
   >>> form = Form()
 

Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py	                        (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py	2007-06-06 14:34:46 UTC (rev 76425)
@@ -0,0 +1,47 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+"""Javascript Form Framework Interfaces.
+
+$Id: $
+"""
+__docformat__ = "reStructuredText"
+
+
+from zope.interface import Interface
+from zope import schema
+
+
+class IJSEvent(Interface):
+    """A marker interface for javascript event objects."""
+
+    name = schema.TextLine(
+        title=u"Event Name",
+        description=u"The name of an event (i.e. click/dblclick/changed).",
+        required=True)
+
+
+class IJSEventRenderer(Interface):
+    """A renderer that produces javascript code for connecting DOM elements
+    to events.
+    """
+
+    event = schema.Object(
+        title=u"The type of event to be rendered.",
+        schema=IJSEvent,
+        required=True)
+
+    def render(handler, id):
+        """render javascript to link DOM element with given id to the
+        code produced by the given handler.
+        """


Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py	                        (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py	2007-06-06 14:34:46 UTC (rev 76425)
@@ -0,0 +1,60 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+"""Javascript Form Framework Event Framework.
+
+$Id: $
+"""
+__docformat__ = "reStructuredText"
+
+from zope.interface import implements
+from zope.component import adapts
+
+from jquery.layer import IJQueryJavaScriptBrowserLayer
+
+import interfaces
+
+class JSEvent(object):
+    """IJSEvent implementation.
+
+    See ``interfaces.IJSEvent``.
+    """
+    implements(interfaces.IJSEvent)
+
+    def __init__(self, name):
+        self.name = name
+
+    def __repr__(self):
+        return '<JSEvent "%s">' % self.name
+
+CLICK = JSEvent("click")
+DBLCLICK = JSEvent("dblclick")
+CHANGED = JSEvent("changed")
+LOAD = JSEvent("load")
+
+
+class JQueryEventRenderer(object):
+    """IJSEventRenderer implementation.
+
+    See ``interfaces.IJSEventRenderer``.
+    """
+    implements(interfaces.IJSEventRenderer)
+    adapts(interfaces.IJSEvent,
+           IJQueryJavaScriptBrowserLayer)
+
+    def __init__(self, event, request):
+        self.request = request
+        self.event = event
+
+    def render(self, handler, id):
+        return '$("#%s").bind("%s", function(){%s});' % (id, self.event.name, handler())


Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py	                        (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py	2007-06-06 14:34:46 UTC (rev 76425)
@@ -0,0 +1,25 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+"""Common z3c.formks test setups
+
+$Id: $
+"""
+__docformat__ = 'restructuredtext'
+import zope.interface
+from zope.publisher.browser import TestRequest
+
+import jquery.layer
+
+class TestRequest(TestRequest):
+    zope.interface.implements(jquery.layer.IJQueryJavaScriptBrowserLayer)


Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py
___________________________________________________________________
Name: svn:eol-style
   + native

Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/tests.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/tests.py	                        (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/tests.py	2007-06-06 14:34:46 UTC (rev 76425)
@@ -0,0 +1,9 @@
+import unittest
+import zope.testing.doctest
+
+def test_suite():
+    return unittest.TestSuite((
+        zope.testing.doctest.DocFileSuite('README.txt',
+            optionflags=zope.testing.doctest.NORMALIZE_WHITESPACE |
+                        zope.testing.doctest.ELLIPSIS),
+        ))


Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/tests.py
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list