[Checkins] SVN: z3c.formjs/branches/pcardune-client-notify-r87806/
beginnings of work on client side event notiication and handling.
Paul Carduner
paulcarduner at gmail.com
Thu Jul 10 11:52:50 EDT 2008
Log message for revision 88193:
beginnings of work on client side event notiication and handling.
Changed:
A z3c.formjs/branches/pcardune-client-notify-r87806/
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/jsclientevent.py
-=-
Copied: z3c.formjs/branches/pcardune-client-notify-r87806 (from rev 88143, z3c.formjs/trunk)
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/interfaces.py 2008-07-09 15:19:58 UTC (rev 88143)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py 2008-07-10 15:52:48 UTC (rev 88193)
@@ -397,5 +397,24 @@
class IClientEventHandler(zope.interface.Interface):
"""A handler managed by the client event handlers."""
- def __call__(self, form, event):
+ def __call__(form, event):
"""Execute the handler."""
+
+
+class IAutoEventHandler(IClientEventHandler):
+ """Marker interface to auto event handler can be rendered."""
+
+ event = zope.schema.Field(
+ title=u"The event that took place.")
+
+class IClientEvent(zope.interface.Interface):
+ """A representation of an event for a client side framework.
+
+ Could possibly be a JSON representation of the arguments passed to
+ the event."""
+
+ def update():
+ """Perform any necessary updates"""
+
+ def render():
+ """Return the javascript representation of the event."""
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.py
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/jqueryrenderer.py 2008-07-09 15:19:58 UTC (rev 88143)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jqueryrenderer.py 2008-07-10 15:52:48 UTC (rev 88193)
@@ -101,6 +101,28 @@
'\n '.join([r.render() for r in self.renderers]) )
+class JQueryAutoEventHandlerRenderer(object):
+ zope.interface.implements(interfaces.IRenderer)
+ zope.component.adapts(interfaces.IAutoEventHandler,
+ IJQueryJavaScriptBrowserLayer)
+
+ def __init__(self, handler, request):
+ self.handler = handler
+ self.request = request
+
+ def update(self):
+ 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
+
+
class JQueryMessageValidationScriptRenderer(object):
zope.component.adapts(
interfaces.IMessageValidationScript, IJQueryJavaScriptBrowserLayer)
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.py
===================================================================
--- z3c.formjs/trunk/src/z3c/formjs/jsclientevent.py 2008-07-09 15:19:58 UTC (rev 88143)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.py 2008-07-10 15:52:48 UTC (rev 88193)
@@ -98,6 +98,21 @@
return createListener
+class AutoEventHandler(object):
+ """An implementation of a client event handler that automatically
+ produces javascript that is meant to call client side event notifiers."""
+ zope.interface.implements(interfaces.IAutoEventHandler)
+
+ event = None
+
+ def __call__(self, form, event):
+ renderer = zope.component.getMultiAdapter(
+ (self, form.request), interfaces.IRenderer)
+ renderer.update()
+ self.event = event
+ return renderer.render()
+
+
@zope.component.adapter(zope.component.interfaces.IObjectEvent)
def serverToClientEventLoader(event):
"""Event handler that listens for server side events
More information about the Checkins
mailing list