[Checkins] SVN: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/
got event attachment to fields working. It might be nice to
have a simple view for rendering them.
Paul Carduner
paulcarduner at gmail.com
Wed Jun 27 13:47:19 EDT 2007
Log message for revision 77152:
got event attachment to fields working. It might be nice to have a simple view for rendering them.
Changed:
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.txt
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py
-=-
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py 2007-06-27 17:32:41 UTC (rev 77151)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py 2007-06-27 17:47:18 UTC (rev 77152)
@@ -105,11 +105,22 @@
def render(self):
result = ''
+ #first render events attached to widgets
for widget in filter(interfaces.IJSEventsWidget.providedBy,
self.form.widgets.values()):
renderer = zope.component.getMultiAdapter((widget.jsEvents, self.request),
interfaces.IJSEventsRenderer)
result += renderer.render(widget, self.form)
+ #render events attached to fields
+ if hasattr(self.form, 'jshandlers'):
+ for field in self.form.fields.values():
+ handler = self.form.jshandlers.getHandler(field)
+ if handler is not None:
+ renderer = zope.component.getMultiAdapter((handler.event, self.request),
+ interfaces.IJSEventRenderer)
+ # XXX: is this a safe way to get ids?
+ id = self.form.widgets[field.__name__].id
+ result += renderer.render(handler, id, self.form) + '\n'
return result
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.txt
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.txt 2007-06-27 17:32:41 UTC (rev 77151)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.txt 2007-06-27 17:47:18 UTC (rev 77152)
@@ -124,7 +124,6 @@
Taking from the widget.txt file in z3c.form, we will set up a widget
with its own widget template, et cetera, to work with.
- >>> from z3c.form.testing import TestRequest
>>> from z3c.form import widget
>>> request = TestRequest()
>>> age = widget.Widget(request)
@@ -249,25 +248,24 @@
The above method is pretty ugly, and we would really prefer something
like what is done with buttons. So here is how it would work.
-# >>> class PersonEditForm(form.AddForm):
-# ...
-# ... fields = field.Fields(IPerson)
-# ...
-# ... @jsevent.handler(fields['age'])
-# ... def ageClickEvent(self, form, id):
-# ... return 'alert("The Age was Clicked!");'
-# ...
-# ... @jsevent.handler(fields['gender'], event=jsevent.CHANGE)
-# ... def genderChangeEvent(self, form, id):
-# ... return 'alert("The Gender was Changed!");'
-#
-#Now we can update this form and render the widget event handler.
-#
-# >>> request = TestRequest()
-# >>> edit = PersonEditForm(root, request)
-# >>> edit.update()
+ >>> class PersonEditForm(form.AddForm):
+ ...
+ ... fields = field.Fields(IPerson)
+ ...
+ ... @jsevent.handler(fields['age'])
+ ... def ageClickEvent(self, id):
+ ... return 'alert("The Age was Clicked!");'
+ ...
+ ... @jsevent.handler(fields['gender'], event=jsevent.CHANGE)
+ ... def genderChangeEvent(self, id):
+ ... return 'alert("The Gender was Changed!");'
-# >>> zope.component.provideAdapter(jsevent.JSFormEventsRenderer)
-# >>> print jsinterfaces.IJSFormEventsRenderer(edit).render()
-# $("#form-widgets-gender").bind("change", function(){alert("The Gender was Changed!");});
-# $("#form-widgets-age").bind("click", function(){alert("The Age was Clicked!");});
+Now we can update this form and render the widget event handler.
+
+ >>> request = TestRequest()
+ >>> edit = PersonEditForm(root, request)
+ >>> edit.update()
+ >>> zope.component.provideAdapter(jsevent.JSFormEventsRenderer)
+ >>> print jsinterfaces.IJSFormEventsRenderer(edit).render()
+ $("#form-widgets-gender").bind("change", function(){alert("The Gender was Changed!");});
+ $("#form-widgets-age").bind("click", function(){alert("The Age was Clicked!");});
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py 2007-06-27 17:32:41 UTC (rev 77151)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/testing.py 2007-06-27 17:47:18 UTC (rev 77152)
@@ -30,11 +30,12 @@
from z3c.formjs import jsbutton, jswidget, jsevent
from z3c.formjs import interfaces
-from z3c.form.interfaces import IWidget
+from z3c.form.interfaces import IWidget, IFormLayer
import browser
class TestRequest(TestRequest):
- zope.interface.implements(jquery.layer.IJQueryJavaScriptBrowserLayer)
+ zope.interface.implements(jquery.layer.IJQueryJavaScriptBrowserLayer,
+ IFormLayer)
def getPath(filename):
return os.path.join(os.path.dirname(browser.__file__), filename)
More information about the Checkins
mailing list