[Checkins]
SVN: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py
make MessageValidator implement slightly modified
IPluggableTraverser that traverses the form and not the context.
Paul Carduner
paulcarduner at gmail.com
Thu Jul 5 11:36:53 EDT 2007
Log message for revision 77468:
make MessageValidator implement slightly modified IPluggableTraverser that traverses the form and not the context.
Changed:
U Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py
-=-
Modified: Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py
===================================================================
--- Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py 2007-07-05 15:10:12 UTC (rev 77467)
+++ Sandbox/pcardune/z3cFormJS/trunk/src/z3c/formjs/jsvalidator.py 2007-07-05 15:36:52 UTC (rev 77468)
@@ -2,6 +2,7 @@
import zope.component
from z3c.traverser.traverser import SingleAttributeTraverserPlugin
+from z3c.traverser.interfaces import IPluggableTraverser, ITraverserPlugin
from z3c.form.interfaces import IWidget, IField
from jquery.layer import IJQueryJavaScriptBrowserLayer
@@ -25,10 +26,10 @@
def _ajaxURL(self):
# build js expression for extracting widget value
# XXX: Maybe we should adapt the widget to IJSValueExtractorRenderer?
- valueString = '$("#%s").val()' % (self.widgetID, )
+ valueString = '$("#%s").val()' % self.widgetID
# build a js expression that joins valueString expression
- queryString = '"?widget-id=%s&value=" + %s' % (self.widgetID, valueString)
+ queryString = '"?widget-id=%s&%s=" + %s' % (self.widgetID, self.widgetID.replace('-','.'), valueString)
# build a js expression that joins form url, validate path, and query string
ajaxURL = '"'+self.form.request.getURL() + '/validate" + ' + queryString
@@ -68,14 +69,14 @@
self.field = field
def render(self):
- import pdb; pdb.set_trace()
jsrenderer = zope.component.queryMultiAdapter(
(self.form, self.field, self.form.request), interfaces.IJSMessageValidationRenderer)
return jsrenderer.render()
class BaseValidator(object):
- zope.interface.implements(interfaces.IAJAXValidator)
+ zope.interface.implements(interfaces.IAJAXValidator,
+ IPluggableTraverser)
ValidationRenderer = None
@@ -86,7 +87,16 @@
self.updateWidgets()
return self.widgets.extract()
+ def publishTraverse(self, request, name):
+ # 1. Look at all the traverser plugins, whether they have an answer.
+ for traverser in zope.component.subscribers((self, request),
+ ITraverserPlugin):
+ try:
+ return traverser.publishTraverse(request, name)
+ except NotFound:
+ pass
+
class MessageValidator(BaseValidator):
'''Validator that sends error messages for widget in questiodn.'''
ValidationRenderer = MessageValidationRenderer
More information about the Checkins
mailing list