[Checkins] SVN: z3c.reference/branches/flash/src/z3c/reference/ added some more views, changed view field to BytesLine, fix bug to get old reference in lists

Bernd Dorn bernd.dorn at lovelysystems.com
Sun Sep 9 12:17:25 EDT 2007


Log message for revision 79543:
  added some more views, changed view field to BytesLine, fix bug to get old reference in lists

Changed:
  U   z3c.reference/branches/flash/src/z3c/reference/README.txt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/README.txt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/views.py
  U   z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt
  U   z3c.reference/branches/flash/src/z3c/reference/browser/widget.py
  U   z3c.reference/branches/flash/src/z3c/reference/interfaces.py

-=-
Modified: z3c.reference/branches/flash/src/z3c/reference/README.txt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/README.txt	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/README.txt	2007-09-09 16:17:25 UTC (rev 79543)
@@ -25,7 +25,7 @@
   If we do not define a target the view is supposed to be absolute
   url. No further checks are done.
 
-  >>> ref = ViewReference(view=u'abc')
+  >>> ref = ViewReference(view='abc')
   >>> ref.target is None
   True
 

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/README.txt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/README.txt	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/README.txt	2007-09-09 16:17:25 UTC (rev 79543)
@@ -65,14 +65,13 @@
   ...     IViewReferenceOpener)
 
   >>> print widget()
-  <a class="popupwindow" href="http://127.0.0.1/Intro/viewReferenceEditor.html?target=&amp;settingName=introRefs&amp;name=field.intro" id="field.intro.tag" name="field.intro" onclick="" title="&#10;&lt;span&gt;Undefined&lt;/span&gt;&#10;" rel="window">
+  <a class="popupwindow" href="http://127.0.0.1/Intro/viewReferenceEditor.html?target=&amp;settingName=introRefs&amp;name=field.intro" id="field.intro.tag" name="field.intro" onclick="" rel="window">
   <span>Undefined</span>
   </a>
   <input class="hiddenType" id="field.intro.target" name="field.intro.target" type="hidden" value="" rel="window" />
   <input class="hiddenType" id="field.intro.formData" name="field.intro.formData" type="hidden" value="" rel="window" />
+  <input class="hiddenType" id="field.intro.refId" name="field.intro.refId" type="hidden" value="" rel="window" />
 
-
-
 If we store a empty request/form we will get the following error::
 
   >>> widget.applyChanges(page)
@@ -140,14 +139,16 @@
 
 We also need to register the widgets.
 
-  >>> from zope.schema.interfaces import ITextLine, IText
-  >>> from zope.app.form.browser import TextWidget, TextAreaWidget
+  >>> from zope.schema.interfaces import ITextLine, IText, IBytesLine
+  >>> from zope.app.form.browser import TextWidget, TextAreaWidget, BytesWidget
   >>> from zope.app.form.browser.interfaces import ISimpleInputWidget
   >>> from zope.app.form.browser.interfaces import ITextBrowserWidget
   >>> zope.component.provideAdapter(TextWidget,
   ...     (ITextLine, IBrowserRequest), ITextBrowserWidget)
   >>> zope.component.provideAdapter(TextAreaWidget,
   ...     (IText, IBrowserRequest), ISimpleInputWidget)
+  >>> zope.component.provideAdapter(BytesWidget,
+  ...     (IBytesLine, IBrowserRequest), ISimpleInputWidget)
 
 So there is no formData for now, because we have no data on the reference.
 
@@ -186,7 +187,7 @@
   u'New Description'
 
   >>> reference.view
-  u'resized'
+  'resized'
 
 Let's save the new reference:
 
@@ -194,16 +195,14 @@
 
 
 Let's register the reference in the intid util so we can compare after
-update and check if we will get the same object wich is omportant.
+update and check if we will get the same object wich is important.
 
   >>> refid = intids.register(reference)
 
 Now do a update within the edit form:
 
   >>> form={'field.intro.target': oid,
-  ...       'field.intro.view': 'w=16,h=9',
-  ...       'field.intro.title': 'My same reference',
-  ...       'field.intro.description': 'This is the same reference'}
+  ...       'field.intro.refId': refid}
   >>> request = TestRequest(HTTP_ACCEPT_LANGUAGE='pl', form=form)
   >>> widget = ViewReferenceWidget(boundField, request)
   >>> same = widget._toFieldValue(form)

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt	2007-09-09 16:17:25 UTC (rev 79543)
@@ -1,5 +1,5 @@
-<span tal:condition="view/target | nothing">
+<tal:block tal:condition="view/target | nothing">
   <span tal:condition="view/target/@@zmi_icon | nothing"
         tal:content="structure view/target/@@zmi_icon"/>
-</span>
+</tal:block>
 <span tal:content="view/title"/>

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/views.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/views.py	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/views.py	2007-09-09 16:17:25 UTC (rev 79543)
@@ -43,7 +43,7 @@
 
     >>> from z3c.reference.reference import ViewReference
     >>> from zope.publisher.browser import TestRequest
-    >>> ref = ViewReference(view=u'http://www.zope.org/')
+    >>> ref = ViewReference(view='http://www.zope.org/')
     >>> request = TestRequest()
     >>> view = ViewReferenceAbsoluteURL(ref, request)
     >>> view
@@ -56,7 +56,7 @@
     >>> view()
     'http://127.0.0.1'
 
-    >>> ref = ViewReference(target=site, view=u'index.html?x=1&y=2')
+    >>> ref = ViewReference(target=site, view='index.html?x=1&y=2')
     >>> view = ViewReferenceAbsoluteURL(ref,request)
     >>> view()
     'http://127.0.0.1/index.html?x=1&y=2'
@@ -193,6 +193,7 @@
             target = self.context.target
         except NotYet:
             return None
+        return target
 
     @property
     def title(self):

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt	2007-09-09 16:17:25 UTC (rev 79543)
@@ -3,4 +3,6 @@
 <input type="hidden"
        tal:replace="structure options/intidInput" />
 <input type="hidden"
-       tal:replace="structure options/formDataInput" />
\ No newline at end of file
+       tal:replace="structure options/formDataInput" />
+<input type="hidden"
+       tal:replace="structure options/refIdInput" />
\ No newline at end of file

Modified: z3c.reference/branches/flash/src/z3c/reference/browser/widget.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/widget.py	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/widget.py	2007-09-09 16:17:25 UTC (rev 79543)
@@ -31,20 +31,22 @@
 from zope.app.form.browser.widget import renderElement
 from zope.app.form.browser.textwidgets import BytesWidget
 from zope.app.pagetemplate import ViewPageTemplateFile
-
+from zope.event import notify
+from zope.lifecycleevent import ObjectCreatedEvent
 from zc import resourcelibrary
 from z3c.reference import interfaces
 from z3c.reference.reference import ViewReference,ImageReference
 from views import getEditorView, getOpenerView
 from serialize import serializeForm
 from zope.formlib import form
+from zope.security.proxy import removeSecurityProxy
 
 untitled = u'No Link defined'
 undefined = u'Undefined'
 
 emptyViewReference = None
 emptyImageReference = ImageReference(
-    view=u'/@@/z3c.reference.resources/noimage.jpg')
+    view='/@@/z3c.reference.resources/noimage.jpg')
 
 def getText(nodelist):
     rc = ""
@@ -82,15 +84,15 @@
 
     @property
     def formDataValue(self):
-        vr = self._getCurrentValue()
-        if vr is None or vr.target is None:
+        ref = self._getCurrentValue()
+        if ref is None or ref.target is None:
             return ''
-        klass = getEditorView(vr.target, self.request,
+        klass = getEditorView(ref.target, self.request,
                               self.context.settingName).__class__
-
-
-        view = klass(vr, TestRequest())
-        view.resetForm()
+        r = TestRequest()
+        view = klass(ref, r)
+        view = ApplyForm(ref, r, view.form_fields)
+        view.update()
         html = ''
         for widget in view.widgets:
             v = widget()
@@ -118,6 +120,20 @@
         return target
 
     @property
+    def refIdName(self):
+        return self.name +  u'.refId'
+
+    @property
+    def refIdValue(self):
+        """Returns the target intid."""
+        refId = u''
+        current = self._getCurrentValue()
+        if current:
+            intIds = zope.component.getUtility(IIntIds)
+            refId = intIds.getId(current)
+        return refId
+
+    @property
     def titleValue(self):
         """Returns the reference title."""
         current = self._getCurrentValue()
@@ -126,7 +142,9 @@
         else:
             return u''
 
+
     def __call__(self):
+
         resourcelibrary.need('z3c.reference.parent')
         if self._renderedValueSet():
             ref = self._data
@@ -137,14 +155,6 @@
                 ref = self.context.get(self.context.context)
             except:
                 ref = None
-        # add img src if available
-#         if interfaces.IViewReference.providedBy(self._data) and \
-#             self._data.target is not None:
-#             imgLink = 'Preview image'
-#             imgSrc = absoluteURL(self._data.target, self.request)
-#         else:
-#             imgLink = None
-#             imgSrc = None
         openerView = getOpenerView(ref, self.request,
                                    self.context.settingName)
         contents = openerView()
@@ -159,6 +169,12 @@
                                    id=targetName,
                                    value=self.targetValue,
                                    extra=self.extra)
+        refIdInput = renderElement(u'input',
+                                   type='hidden',
+                                   name=self.refIdName,
+                                   id=self.refIdName,
+                                   value=self.refIdValue,
+                                   extra=self.extra)
         formDataInput = renderElement(u'input',
                                       type='hidden',
                                       name=formDataName,
@@ -166,18 +182,16 @@
                                       value=self.formDataValue,
                                       extra=self.extra)
         linkTag = renderElement(self.refTag,
-                            href = self.referenceEditorURL,
-                            name=self.name,
-                            id=self.name + '.tag',
-                            title=contents,
-                            onclick=self.refTagOnClick,
-                            cssClass = self.cssClass,
-                            contents=contents,
-                            style=self.style,
-                            extra=self.extra)
-        link = linkTag + intidInput + formDataInput
+                                href = self.referenceEditorURL,
+                                name=self.name,
+                                id=self.name + '.tag',
+                                onclick=self.refTagOnClick,
+                                cssClass = self.cssClass,
+                                contents=contents,
+                                style=self.style,
+                                extra=self.extra)
         return self.template(linkTag=linkTag, intidInput=intidInput, 
-            formDataInput=formDataInput)
+            formDataInput=formDataInput, refIdInput=refIdInput)
 
     def _getFormValue(self):
         res = super(ViewReferenceWidget,self)._getFormValue()
@@ -192,18 +206,25 @@
             return self._missing
         return url
 
+    def hasInput(self):
+        return not not self.request.form.get(self.name + '.target')
+
     def _toFieldValue(self, input):
+
         if input == self._missing:
             return self.context.missing_value
 
-        # get the existing reference
-        if hasattr(self.context.context, self.context.__name__):
-            ref = getattr(self.context.context, self.context.__name__)
-        # get a allready set reference
-        elif interfaces.IViewReference.providedBy(self._data):
-            ref = self._data
+        # XXX this does not work with lists
+        refId = self.request.form.get(self.refIdName)
+        intIds = zope.component.getUtility(IIntIds)
+        if refId:
+            ref = intIds.getObject(int(refId))
+
         else:
             ref = ViewReference()
+            ref.__parent__ = removeSecurityProxy(self.context.context)
+            #notify(ObjectCreatedEvent(ref))
+
         # form field ids
         formDataName = self.name + '.formData'
         targetName = self.name + '.target'
@@ -212,7 +233,7 @@
         intid = self.request.get(targetName)
         if intid is None:
             return self.context.missing_value
-        intIds = zope.component.getUtility(IIntIds)
+
         obj = intIds.queryObject(int(intid))
         if obj is None:
             return self.context.missing_value

Modified: z3c.reference/branches/flash/src/z3c/reference/interfaces.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/interfaces.py	2007-09-09 14:11:45 UTC (rev 79542)
+++ z3c.reference/branches/flash/src/z3c/reference/interfaces.py	2007-09-09 16:17:25 UTC (rev 79543)
@@ -33,7 +33,7 @@
         title=u'Target Object',
         required=True,)
 
-    view = zope.schema.TextLine(
+    view = zope.schema.BytesLine(
         title=u'View',
         required=False)
 



More information about the Checkins mailing list