[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