[Checkins]
SVN: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/
setup jquery renderers for client side event notification.
Paul Carduner
paulcarduner at gmail.com
Thu Jul 10 14:06:09 EDT 2008
Log message for revision 88196:
setup jquery renderers for client side event notification.
Changed:
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.py
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.txt
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.txt
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/testing.py
-=-
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py 2008-07-10 17:00:36 UTC (rev 88195)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py 2008-07-10 18:05:10 UTC (rev 88196)
@@ -410,7 +410,7 @@
description=u"The event that took place.")
-class IClientEvent(zope.interface.Interface):
+class IEventRenderer(zope.interface.Interface):
"""A representation of an event for a client side framework.
Could possibly be a JSON representation of the arguments passed to
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.py
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.py 2008-07-10 17:00:36 UTC (rev 88195)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.py 2008-07-10 18:05:10 UTC (rev 88196)
@@ -114,13 +114,20 @@
pass
def render(self):
- try:
- event = interfaces.IClientEvent(self.handler.event,
- self.request)
- event = event.render()
- except:
- event = '"%s"' % self.handler.event.__class__.__name__
- return '$().trigger(%s)' % event
+ renderer = zope.component.queryMultiAdapter(
+ (self.handler.event, self.request), interfaces.IEventRenderer)
+ if renderer is not None:
+ renderer.update()
+ event = renderer.render()
+ else:
+ event = '{}'
+ result = '$()'
+ for interface in zope.interface.providedBy(self.handler.event):
+ eventName = '"%s.%s"' % (interface.__module__,
+ interface.__name__)
+ result+='\n.trigger(%s, %s)' % (eventName, event)
+ result += ';'
+ return result
class JQueryMessageValidationScriptRenderer(object):
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.txt
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.txt 2008-07-10 17:00:36 UTC (rev 88195)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.txt 2008-07-10 18:05:10 UTC (rev 88196)
@@ -274,3 +274,33 @@
function(html){switchWidget("form-zip", "display", html)}
)}}
)
+
+
+``INotifyClientHandler`` Renderer
+---------------------------------
+
+This renderer defines how javascript notifies an event framework of an
+event that occurs on the server.
+
+Let's create a ``NotifyClientHandler`` instance.
+
+ >>> from z3c.formjs import jsclientevent
+ >>> notify = jsclientevent.NotifyClientHandler()
+
+ >>> from zope.lifecycleevent import ObjectModifiedEvent
+ >>> notify.event = ObjectModifiedEvent(object())
+
+Let's now register the renderer:
+
+ >>> zope.component.provideAdapter(
+ ... jqueryrenderer.JQueryNotifyClientHandlerRenderer)
+
+Now we can render the script:
+
+ >>> renderer = zope.component.getMultiAdapter(
+ ... (notify, request), interfaces.IRenderer)
+ >>> renderer.update()
+ >>> print renderer.render()
+ $() .trigger("zope.lifecycleevent.interfaces.IObjectModifiedEvent", {})
+ .trigger("zope.component.interfaces.IObjectEvent", {});
+
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.txt
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.txt 2008-07-10 17:00:36 UTC (rev 88195)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.txt 2008-07-10 18:05:10 UTC (rev 88196)
@@ -356,8 +356,10 @@
>>> editform.update()
>>> print editform.eventInjections
- $().trigger("ObjectModifiedEvent")
+ $() .trigger("zope.lifecycleevent.interfaces.IObjectModifiedEvent", {})
+ .trigger("zope.component.interfaces.IObjectEvent", {});
+
Lets not forget to end the interaction we created.
>>> management.endInteraction()
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/testing.py
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/testing.py 2008-07-10 17:00:36 UTC (rev 88195)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/testing.py 2008-07-10 18:05:10 UTC (rev 88196)
@@ -175,13 +175,20 @@
pass
def render(self):
- try:
- event = interfaces.IClientEvent(self.handler.event,
- self.request)
- event = event.render()
- except:
- event = '"%s"' % self.handler.event.__class__.__name__
- return '$().trigger(%s)' % event
+ renderer = zope.component.queryMultiAdapter(
+ (self.handler.event, self.request), interfaces.IEventRenderer)
+ if renderer is not None:
+ renderer.update()
+ event = renderer.render()
+ else:
+ event = '{}'
+ result = '$()'
+ for interface in zope.interface.providedBy(self.handler.event):
+ eventName = '"%s.%s"' % (interface.__module__,
+ interface.__name__)
+ result+='\n.trigger(%s, %s)' % (eventName, event)
+ result += ';'
+ return result
def setupRenderers():
More information about the Checkins
mailing list