[Checkins] SVN: z3c.reference/branches/flash/src/z3c/reference/ add
opener view
Bernd Dorn
bernd.dorn at lovelysystems.com
Sun Sep 9 09:49:46 EDT 2007
Log message for revision 79537:
add opener view
Changed:
U z3c.reference/branches/flash/src/z3c/reference/browser/README.txt
U z3c.reference/branches/flash/src/z3c/reference/browser/configure.zcml
A 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/browser/README.txt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/README.txt 2007-09-09 12:51:37 UTC (rev 79536)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/README.txt 2007-09-09 13:49:45 UTC (rev 79537)
@@ -7,6 +7,8 @@
>>> import zope.interface
>>> from z3c.reference.browser.widget import ViewReferenceWidget
>>> from z3c.reference.schema import ViewReferenceField
+ >>> from zope.publisher.interfaces.browser import IBrowserRequest
+ >>> from z3c.reference.interfaces import IViewReference
At first we need an interface for the context our widget used for. The
`ìntro`` filed defines a settingName which is used by the widget to
@@ -52,19 +54,25 @@
>>> boundField = field.bind(page)
>>> widget = ViewReferenceWidget(boundField, request)
-Now let's see how such a widget looks like if we render it with no value.
+Now let's see how such a widget looks like if we render it with no
+value. But first we need to define an opener view, there is a default
+opener view.
+ >>> from z3c.reference.interfaces import IViewReferenceOpener
+ >>> from z3c.reference.browser.views import DefaultViewReferenceOpener
+ >>> zope.component.provideAdapter(DefaultViewReferenceOpener,
+ ... (IViewReference, IBrowserRequest),
+ ... IViewReferenceOpener)
+
>>> print widget()
- <a class="popupwindow" href="http://127.0.0.1/Intro/viewReferenceEditor.html?target=&settingName=introRefs&name=field.intro"
- id="field.intro.tag" name="field.intro" onclick="" title="Undefined"
- rel="window">Undefined</a>
- <BLANKLINE>
- <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" />
- <BLANKLINE>
+ <a class="popupwindow" href="http://127.0.0.1/Intro/viewReferenceEditor.html?target=&settingName=introRefs&name=field.intro" id="field.intro.tag" name="field.intro" onclick="" title=" <span>Undefined</span> " 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" />
+
+
If we store a empty request/form we will get the following error::
>>> widget.applyChanges(page)
@@ -118,7 +126,6 @@
>>> from zope.formlib import form
>>> from zope.dublincore.interfaces import IZopeDublinCore
- >>> from z3c.reference.interfaces import IViewReference
>>> class IntroRefsEditForm(form.EditForm):
... form_fields = form.Fields(IZopeDublinCore,
... IViewReference).select('title', 'description', 'view')
@@ -126,7 +133,6 @@
And register it ...
>>> from z3c.reference.interfaces import IViewReferenceEditor
- >>> from zope.publisher.interfaces.browser import IBrowserRequest
>>> zope.component.provideAdapter(IntroRefsEditForm,
... (zope.interface.Interface, IBrowserRequest),
... IViewReferenceEditor,
Modified: z3c.reference/branches/flash/src/z3c/reference/browser/configure.zcml
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/configure.zcml 2007-09-09 12:51:37 UTC (rev 79536)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/configure.zcml 2007-09-09 13:49:45 UTC (rev 79537)
@@ -34,6 +34,12 @@
permission="zope.Public"
allowed_interface="zope.traversing.browser.interfaces.IAbsoluteURL"
/>
+ <view
+ for="..interfaces.IViewReference"
+ factory=".views.DefaultViewReferenceOpener"
+ type="zope.publisher.interfaces.http.IHTTPRequest"
+ permission="zope.Public"
+ provides="..interfaces.IViewReferenceOpener"/>
<view
for="..interfaces.IViewReference"
Added: z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt (rev 0)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt 2007-09-09 13:49:45 UTC (rev 79537)
@@ -0,0 +1,5 @@
+<span tal:condition="view/target |Â nothing">
+ <span tal:condition="view/target/@@zmi_icon | nothing"
+ tal:content="structure view/target/@@zmi_icon"/>
+</span>
+<span tal:content="view/title"/>
Property changes on: z3c.reference/branches/flash/src/z3c/reference/browser/opener.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: z3c.reference/branches/flash/src/z3c/reference/browser/views.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/views.py 2007-09-09 12:51:37 UTC (rev 79536)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/views.py 2007-09-09 13:49:45 UTC (rev 79537)
@@ -19,15 +19,20 @@
import urllib
from zope import component
+from zope import interface
from zope.traversing.browser import absoluteURL
from zope.traversing.interfaces import IContainmentRoot
from zope.traversing.browser.interfaces import IAbsoluteURL
from zope.traversing.browser.absoluteurl import AbsoluteURL
from zope.app.intid.interfaces import IIntIds
-
+from zope.app.form.browser.widget import renderElement
+from zope.app.pagetemplate import ViewPageTemplateFile
+from zope.dublincore.interfaces import IZopeDublinCore
+from zope.app.keyreference.interfaces import NotYet
from zc import resourcelibrary
from z3c.reference import interfaces
+from z3c.reference.reference import ViewReference
noImage = '/@@/z3c.reference.resources/noimage.jpg'
@@ -149,6 +154,54 @@
(target, request),
interfaces.IViewReferenceEditor, name=settingName)
+def getOpenerView(ref, request, settingName):
+
+ def _adapter(o, name=u''):
+ return component.queryMultiAdapter(
+ (o, request),
+ interfaces.IViewReferenceOpener, name=name)
+ view = None
+ if ref is None:
+ ref = ViewReference()
+ target = None
+ else:
+ target = ref.target
+
+ if target is not None:
+ view = _adapter(target, settingName)
+ if view is None:
+ view = _adapter(target)
+ if view is None:
+ view = _adapter(ref, settingName)
+ if view is None:
+ view = _adapter(ref)
+ return view
+
+class DefaultViewReferenceOpener(object):
+
+
+ interface.implements(interfaces.IViewReferenceOpener)
+ __call__ = ViewPageTemplateFile('opener.pt')
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ @property
+ def target(self):
+ try:
+ target = self.context.target
+ except NotYet:
+ return None
+
+ @property
+ def title(self):
+ if self.target is not None:
+ return IZopeDublinCore(self.context).title
+ return u'Undefined'
+
+
+
class ViewReferenceEditorDispatcher(object):
"""Return the edit IViewReferenceEditor for the target context
Modified: z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt 2007-09-09 12:51:37 UTC (rev 79536)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/widget.pt 2007-09-09 13:49:45 UTC (rev 79537)
@@ -1,11 +1,5 @@
<a href=""
tal:replace="structure options/linkTag">editor link</a>
-<a href=""
- tal:condition="options/imgLink"
- tal:attributes="href options/imgLink">
-<img src=""
- tal:attributes="src options/imgSrc" />
-</a>
<input type="hidden"
tal:replace="structure options/intidInput" />
<input type="hidden"
Modified: z3c.reference/branches/flash/src/z3c/reference/browser/widget.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/browser/widget.py 2007-09-09 12:51:37 UTC (rev 79536)
+++ z3c.reference/branches/flash/src/z3c/reference/browser/widget.py 2007-09-09 13:49:45 UTC (rev 79537)
@@ -35,7 +35,7 @@
from zc import resourcelibrary
from z3c.reference import interfaces
from z3c.reference.reference import ViewReference,ImageReference
-from views import getEditorView
+from views import getEditorView, getOpenerView
from serialize import serializeForm
from zope.formlib import form
@@ -137,17 +137,20 @@
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()
if ref is None:
- ref = self._emptyReference
- # 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
- contents = undefined
+ ref = ViewReference()
+
targetName = self.name + '.target'
formDataName = self.name + '.formData'
intidInput = renderElement(u'input',
@@ -174,7 +177,7 @@
extra=self.extra)
link = linkTag + intidInput + formDataInput
return self.template(linkTag=linkTag, intidInput=intidInput,
- formDataInput=formDataInput, imgSrc=imgSrc, imgLink=imgLink)
+ formDataInput=formDataInput)
def _getFormValue(self):
res = super(ViewReferenceWidget,self)._getFormValue()
Modified: z3c.reference/branches/flash/src/z3c/reference/interfaces.py
===================================================================
--- z3c.reference/branches/flash/src/z3c/reference/interfaces.py 2007-09-09 12:51:37 UTC (rev 79536)
+++ z3c.reference/branches/flash/src/z3c/reference/interfaces.py 2007-09-09 13:49:45 UTC (rev 79537)
@@ -101,3 +101,9 @@
class IViewReferenceEditor(zope.interface.Interface):
"""Marker interface for view reference editor edit 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