[Checkins]
SVN: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/
added a client event handlers viewlet.
Paul Carduner
paulcarduner at gmail.com
Thu Jul 10 14:34:50 EDT 2008
Log message for revision 88197:
added a client event handlers viewlet.
Changed:
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/configure.zcml
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.py
U z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.txt
-=-
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/configure.zcml
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/configure.zcml 2008-07-10 18:05:10 UTC (rev 88196)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/configure.zcml 2008-07-10 18:33:53 UTC (rev 88197)
@@ -146,6 +146,15 @@
layer="z3c.form.interfaces.IFormLayer"
/>
+ <browser:viewlet
+ name="z3c.formjs.clientevents"
+ manager=".interfaces.IDynamicJavaScript"
+ view="z3c.formjs.interfaces.IHaveClientEvents"
+ class="z3c.formjs.jsclientevent.ClientEventsViewlet"
+ permission="zope.Public"
+ layer="z3c.form.interfaces.IFormLayer"
+ />
+
<!-- Specific Javascript-backend implementations -->
<include file="jqueryrenderer.zcml" />
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 18:05:10 UTC (rev 88196)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/interfaces.py 2008-07-10 18:33:53 UTC (rev 88197)
@@ -410,6 +410,23 @@
description=u"The event that took place.")
+class IHaveClientEvents(zope.interface.Interface):
+ """A view that has client events."""
+
+ jsClientListeners = zope.schema.Object(
+ schema=IClientEventHandlers,
+ title=u"JS Client Listeners",
+ description=u"Listeners associated with this view")
+
+ eventCalls = zope.schema.List(
+ title=u"Event Calls",
+ description=u"list of events notified during the interaction")
+
+ eventInjections = zope.schema.Text(
+ title=u"Event Injections",
+ description=u"The javascript code to be injected that handles events.")
+
+
class IEventRenderer(zope.interface.Interface):
"""A representation of an event for a client side framework.
Modified: z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.py
===================================================================
--- z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.py 2008-07-10 18:05:10 UTC (rev 88196)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.py 2008-07-10 18:33:53 UTC (rev 88197)
@@ -20,6 +20,7 @@
import zope.component
import zope.interface
from zope.interface import adapter
+from zope.viewlet import viewlet
from zope.security.management import getInteraction
from zope.publisher.interfaces.browser import IBrowserRequest
@@ -149,7 +150,7 @@
class ClientEventsForm(object):
"""Mixin class to support calling of client side events."""
-
+ zope.interface.implements(interfaces.IHaveClientEvents)
jsClientListeners = ClientEventHandlers()
@property
@@ -169,3 +170,16 @@
for h in self.jsClientListeners.getHandlers(event)]
results = '\n'.join(results)
return results
+
+
+class ClientEventsViewlet(viewlet.ViewletBase):
+ """A viewlet that renders client events."""
+ zope.component.adapts(
+ zope.interface.Interface,
+ IBrowserRequest,
+ interfaces.IHaveClientEvents,
+ zope.interface.Interface)
+
+ def render(self):
+ content = self.__parent__.eventInjections
+ return u'<script type="text/javascript">\n%s\n</script>' % content
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 18:05:10 UTC (rev 88196)
+++ z3c.formjs/branches/pcardune-client-notify-r87806/src/z3c/formjs/jsclientevent.txt 2008-07-10 18:33:53 UTC (rev 88197)
@@ -363,3 +363,18 @@
Lets not forget to end the interaction we created.
>>> management.endInteraction()
+
+
+ClientEventHandler Viewlet
+--------------------------
+
+We also have a viewlet that renders the javascript event injections.
+
+ >>> viewlet = jsclientevent.ClientEventsViewlet(
+ ... article, request, editform, object())
+ >>> viewlet.update()
+ >>> print viewlet.render()
+ <script type="text/javascript">
+ $() .trigger("zope.lifecycleevent.interfaces.IObjectModifiedEvent", {})
+ .trigger("zope.component.interfaces.IObjectEvent", {});
+ </script>
More information about the Checkins
mailing list