[Checkins] SVN: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/
made javascript buttons work in a realistic setting. tests
and demo to come.
Paul Carduner
paulcarduner at gmail.com
Thu Jun 14 09:46:52 EDT 2007
Log message for revision 76695:
made javascript buttons work in a realistic setting. tests and demo to come.
Changed:
A Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/SETUP.cfg
A Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/browser/configure.zcml
A Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/configure.zcml
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsbutton.py
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
A Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/z3c.formjs-configure.zcml
-=-
Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/SETUP.cfg
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/SETUP.cfg (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/SETUP.cfg 2007-06-14 13:46:51 UTC (rev 76695)
@@ -0,0 +1,3 @@
+<data-files zopeskel/etc/package-includes>
+ z3c.formjs-*.zcml
+</data-files>
Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/SETUP.cfg
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/browser/configure.zcml
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/browser/configure.zcml (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/browser/configure.zcml 2007-06-14 13:46:51 UTC (rev 76695)
@@ -0,0 +1,17 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:z3c="http://namespaces.zope.org/z3c"
+ i18n_domain="z3c.formjs">
+
+ <adapter
+ factory=".jsbutton.ButtonFieldWidget"
+ />
+<!-- For some reason, this does not seem to be working.
+ <z3c:widgetTemplate
+ mode="input"
+ widget="z3c.formjs.interfaces.IButtonWidget"
+ layer="jquery.layer.IJqueryJavaScriptBrowserLayer"
+ template="button_input.pt"
+ />
+-->
+</configure>
Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/browser/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/configure.zcml
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/configure.zcml (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/configure.zcml 2007-06-14 13:46:51 UTC (rev 76695)
@@ -0,0 +1,15 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ i18n_domain="z3c.formjs">
+
+ <!-- Action Managers and Handlers -->
+ <adapter
+ factory=".jsbutton.JSButtonAction"
+ provides="z3c.form.interfaces.IFieldWidget"
+ />
+
+ <adapter
+ factory=".jsevent.JQueryEventRenderer"
+ />
+
+</configure>
Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py 2007-06-14 13:42:53 UTC (rev 76694)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/interfaces.py 2007-06-14 13:46:51 UTC (rev 76695)
@@ -42,7 +42,7 @@
schema=IJSEvent,
required=True)
- def render(handler, id):
+ def render(handler, id, form):
"""render javascript to link DOM element with given id to the
code produced by the given handler.
"""
@@ -59,7 +59,10 @@
class IJSButtonHandler(IButtonHandler):
"""A button handler for javascript buttons."""
+ def __call__(form, id):
+ """call the handler, passing it the form."""
+
class IJSAction(Interface):
"""Action"""
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsbutton.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsbutton.py 2007-06-14 13:42:53 UTC (rev 76694)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsbutton.py 2007-06-14 13:46:51 UTC (rev 76695)
@@ -23,11 +23,14 @@
import zope.interface
import zope.location
import zope.component
+from zope.app.pagetemplate import ViewPageTemplateFile
from z3c.form import button, util, action, widget
from z3c.form.interfaces import (IButton, IFieldWidget, IValue,
IButtonHandlers, IFormLayer, IButtonForm)
+from jquery.layer import IJQueryJavaScriptBrowserLayer
+
import interfaces, jsevent
@@ -37,13 +40,14 @@
css = u'buttonWidget'
accesskey = None
+ template = ViewPageTemplateFile("browser/button_input.pt")
- at zope.component.adapter(IButton, IFormLayer)
+ at zope.component.adapter(IButton, IJQueryJavaScriptBrowserLayer)
@zope.interface.implementer(IFieldWidget)
-def SubmitFieldWidget(field, request):
- submit = widget.FieldWidget(field, SubmitWidget(request))
- submit.value = field.title
- return submit
+def ButtonFieldWidget(field, request):
+ button = widget.FieldWidget(field, ButtonWidget(request))
+ button.value = field.title
+ return button
class JSButton(button.Button):
@@ -79,19 +83,19 @@
self.func = func
self.event = event
- def __call__(self):
+ def __call__(self, form, id):
## TODO: Passing None makes the tests work because the handler
## functions take self as the first arg. Instead of passing
- ## None, I should be passing the form the handler is defined
- ## in - but how do I get this from here?
- return self.func(None)
+ ## None, I should be passing the form that the handler is
+ ## defined in - but how do I get this from here?
+ return self.func(form, id)
def __repr__(self):
return '<%s for %r>' %(self.__class__.__name__, self.button)
def handler(button, **kwargs):
- """A decoratore for defining a javascript event handler."""
+ """A decorator for defining a javascript event handler."""
def createHandler(func):
handler = Handler(button, func, event=kwargs.get('event', jsevent.CLICK))
frame = sys._getframe(1)
@@ -104,6 +108,10 @@
class JSButtonAction(action.Action, ButtonWidget, zope.location.Location):
zope.interface.implements(IFieldWidget)
+ zope.component.adapts(
+ IJQueryJavaScriptBrowserLayer,
+ interfaces.IJSButton,
+ zope.interface.Interface)
def __init__(self, request, field, name):
action.Action.__init__(self, request, field.title, name)
@@ -129,48 +137,4 @@
return
renderer = zope.component.getMultiAdapter((handler.event, self.request),
interfaces.IJSEventRenderer)
- return renderer.render(handler, self.id)
-
-
-class JSButtonActions(util.Manager):
- """JS Button Action Manager class."""
- zope.interface.implementsOnly(interfaces.IJSActions)
-
- zope.component.adapts(
- IButtonForm,
- zope.interface.Interface,
- zope.interface.Interface)
-
- __name__ = __parent__ = None
-
- def __init__(self, form, request, content):
- super(JSButtonActions, self).__init__()
- self.form = form
- self.request = request
- self.content = content
-
- def update(self):
- """See z3c.form.interfaces.IActions."""
- # Create a unique prefix
- prefix = util.expandPrefix(self.form.prefix)
- prefix += util.expandPrefix(self.form.buttons.prefix)
- for name, button in self.form.buttons.items():
- # Only create an action for the button, if the condition is
- # fulfilled
- if button.condition is not None and not button.condition(self.form):
- continue
- fullName = prefix + name
- buttonAction = JSButtonAction(self.request, button, fullName)
- # Look up a potential custom title for the action.
- title = zope.component.queryMultiAdapter(
- (self.form, self.request, self.content, button, self),
- IValue, name='title')
- if title is not None:
- buttonAction.title = title.get()
- self._data_keys.append(name)
- self._data_values.append(buttonAction)
- self._data[name] = buttonAction
- zope.location.locate(buttonAction, self, name)
-
- def __repr__(self):
- return '<%s %r>' % (self.__class__.__name__, self.__name__)
+ return renderer.render(handler, self.id, self.__parent__.form)
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py 2007-06-14 13:42:53 UTC (rev 76694)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsevent.py 2007-06-14 13:46:51 UTC (rev 76695)
@@ -56,5 +56,5 @@
self.request = request
self.event = event
- def render(self, handler, id):
- return '$("#%s").bind("%s", function(){%s});' % (id, self.event.name, handler())
+ def render(self, handler, id, form):
+ return '$("#%s").bind("%s", function(){%s});' % (id, self.event.name, handler(form, id))
Added: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/z3c.formjs-configure.zcml
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/z3c.formjs-configure.zcml (rev 0)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/z3c.formjs-configure.zcml 2007-06-14 13:46:51 UTC (rev 76695)
@@ -0,0 +1 @@
+<include package="z3c.formjs" />
Property changes on: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/z3c.formjs-configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list