[Checkins] SVN: z3c.reference/trunk/src/z3c/reference/ use a
validation view to validate input
Juergen Kartnaller
juergen at kartnaller.at
Tue Sep 25 04:00:08 EDT 2007
Log message for revision 79992:
use a validation view to validate input
Changed:
U z3c.reference/trunk/src/z3c/reference/browser/configure.zcml
U z3c.reference/trunk/src/z3c/reference/browser/resources/reference.editor.js
U z3c.reference/trunk/src/z3c/reference/browser/views.py
U z3c.reference/trunk/src/z3c/reference/interfaces.py
-=-
Modified: z3c.reference/trunk/src/z3c/reference/browser/configure.zcml
===================================================================
--- z3c.reference/trunk/src/z3c/reference/browser/configure.zcml 2007-09-25 02:16:53 UTC (rev 79991)
+++ z3c.reference/trunk/src/z3c/reference/browser/configure.zcml 2007-09-25 08:00:06 UTC (rev 79992)
@@ -64,7 +64,6 @@
for="*"
class=".views.ViewReferenceEditorSearchDispatcher"
permission="zope.ManageContent"
- attribute="__call__"
/>
<browser:page
@@ -72,7 +71,13 @@
for="*"
class=".views.ViewReferenceEditorDispatcher"
permission="zope.ManageContent"
- attribute="__call__"
/>
+ <browser:page
+ name="viewReferenceValidator"
+ for="*"
+ class=".views.ViewReferenceValidatorDispatcher"
+ permission="zope.ManageContent"
+ />
+
</configure>
Modified: z3c.reference/trunk/src/z3c/reference/browser/resources/reference.editor.js
===================================================================
--- z3c.reference/trunk/src/z3c/reference/browser/resources/reference.editor.js 2007-09-25 02:16:53 UTC (rev 79991)
+++ z3c.reference/trunk/src/z3c/reference/browser/resources/reference.editor.js 2007-09-25 08:00:06 UTC (rev 79992)
@@ -7,10 +7,23 @@
var currentTargetUid = -1;
function saveAndClose(){
- query = $($("form")[0]).formSerialize();
- var title = $("input[@id=form.title]").val();
- window.opener.setReferenceInput(name, currentTargetUid, query, title);
- window.close();
+ // call the verify page
+
+ var url = "viewReferenceValidator";
+ url += "?settingName="+settingNameStr;
+ url += "&target=" + currentTargetUid;
+ var query = $($("form")[0]).formSerialize();
+ var data = $.ajax({url:url, data:query, async:false}).responseText;
+ if (data == 'Ok') {
+ // The input is verified and Ok :
+ var title = $("input[@id=form.title]").val();
+ window.opener.setReferenceInput(name, currentTargetUid, query, title);
+ window.close();
+ } else {
+ // The input has errors: inject the result with the errors
+ var submit_btn = "<input type='button' class='submit' value='save' onclick='saveAndClose()' />";
+ $("#editorEdit").empty().append($(data)).append(submit_btn);
+ }
}
function loadEditorSearch() {
@@ -36,19 +49,6 @@
var submit_btn = "<input type='button' class='submit' value='save' onclick='saveAndClose()' />";
$("#editorEdit").empty().append($(data)).append(submit_btn);
});
-
- /*
- settings = {'settingName': settingNameStr,
- 'target': targetStr,
- 'view': viewStr,
- 'title': titleStr,
- 'description': descriptionStr}
- $.get("viewReferenceEditorEdit", settings, function (data) {
- var submit_btn = "<input type='button' class='submit' value='save' onclick='saveAndClose()' />";
- $("#editorEdit").empty().append($(data)).append(submit_btn);
- });
-
- */
}
// initialize on dom ready
@@ -62,44 +62,7 @@
}
});
-
-
-//////// temp
/**
- javascript API for the z3cimage Flash Tool.
- functions to call methods inside the SWF via JavaScript
-*/
-/*
-function tellFlash(command){
-
- // a seperator which is not allowed to exist inside the command or any value
- // if you change the seperator, make shure you change him in actionscript too
- var sep = "[!!]";
-
- var cmd = command;
- for (var i=1; i<arguments.length; i++) cmd+=sep+arguments[i];
-
- // tells flash to start with browsing
- if(window.z3cimageflash) window.document["z3cimageflash"].SetVariable("jscommand", cmd);
- if(document.z3cimageflash) document.z3cimageflash.SetVariable("jscommand", cmd);
-
-}
-
-
-function zoom(dir){
- tellFlash("onZoomClicked", dir);
-}
-
-function rotate(dir){
- tellFlash("onRotateClicked", dir);
-}
-
-function save(){
- tellFlash("saveChanges");
-}
-*/
-
-/**
* SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
*
* SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
@@ -238,8 +201,3 @@
var FlashObject=deconcept.SWFObject;
var SWFObject=deconcept.SWFObject;
-/*
-function cropImage(crop_x, crop_y, crop_w, crop_h, size_w, size_h, rotation){
- alert(crop_x + "-" + crop_y + "-" + crop_w + "-" + crop_h + "-" + size_w + "-" + size_h + "-" + rotation);
-}
-*/
Modified: z3c.reference/trunk/src/z3c/reference/browser/views.py
===================================================================
--- z3c.reference/trunk/src/z3c/reference/browser/views.py 2007-09-25 02:16:53 UTC (rev 79991)
+++ z3c.reference/trunk/src/z3c/reference/browser/views.py 2007-09-25 08:00:06 UTC (rev 79992)
@@ -88,12 +88,6 @@
return u'Error: unable to load view for %s' % self.settingNameStr
-def getEditorView(target, request, settingName):
- return component.getMultiAdapter(
- (target, request),
- interfaces.IViewReferenceEditor, name=settingName)
-
-
def getOpenerView(ref, request, settingName):
def _adapter(o, name=u''):
@@ -148,33 +142,53 @@
return self.prefix + '.title'
+def getEditorView(target, request, settingName):
+ return component.getMultiAdapter(
+ (target, request),
+ interfaces.IViewReferenceEditor, name=settingName)
+
+
class ViewReferenceEditorDispatcher(object):
-
"""Return the edit IViewReferenceEditor for the target context
and setting"""
+ settingName = u''
+ targetId = u''
+
+ def __call__(self):
+ self.settingName = self.request.get('settingName', u'')
+ self.targetId = self.request.get('target', u'')
+ if not self.targetId:
+ return u''
+ intids = component.getUtility(IIntIds)
+ obj = intids.queryObject(int(self.targetId))
+ if obj is not None and self.settingName is not None:
+ view = getEditorView(obj, self.request, self.settingName)
+ return view()
+ return u''
+
+
+def getValidatorView(target, request, settingName):
+ return component.getMultiAdapter(
+ (target, request),
+ interfaces.IViewReferenceValidator, name=settingName)
+
+
+class ViewReferenceValidatorDispatcher(object):
+ """Dispatch the call to this view to an IViewReferenceValidator to
+ validate the input."""
+
settingNameStr = u''
- viewStr = u''
- targetStr = u''
- titleStr = u''
- descriptionStr = u''
- def __init__(self, context, request):
- self.context = context
- self.request = request
-
def __call__(self):
- self.settingNameStr = self.request.get('settingName', u'')
- self.targetStr = self.request.get('target', u'')
- self.viewStr = self.request.get('view', u'')
- self.titleStr = self.request.get('title', u'')
- self.descriptionStr = self.request.get('description', u'')
- if not self.targetStr:
+ self.settingName = self.request.get('settingName', u'')
+ self.targetId = self.request.get('target', u'')
+ if not self.targetId:
return u''
intids = component.getUtility(IIntIds)
- obj = intids.queryObject(int(self.targetStr))
- if obj is not None and self.settingNameStr is not None:
- view = getEditorView(obj, self.request, self.settingNameStr)
+ obj = intids.queryObject(int(self.targetId))
+ if obj is not None and self.settingName is not None:
+ view = getValidatorView(obj, self.request, self.settingName)
return view()
return u''
Modified: z3c.reference/trunk/src/z3c/reference/interfaces.py
===================================================================
--- z3c.reference/trunk/src/z3c/reference/interfaces.py 2007-09-25 02:16:53 UTC (rev 79991)
+++ z3c.reference/trunk/src/z3c/reference/interfaces.py 2007-09-25 08:00:06 UTC (rev 79992)
@@ -102,6 +102,11 @@
class IViewReferenceEditor(zope.interface.Interface):
"""Marker interface for view reference editor edit forms."""
+
+class IViewReferenceValidator(zope.interface.Interface):
+ """Marker interface for view reference validator forms."""
+
+
class IViewReferenceOpener(zope.interface.Interface):
"""Marker interface for view reference opener views. The one that
are displayed in the parent window"""
More information about the Checkins
mailing list