[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=&settingName=introRefs&name=field.intro" id="field.intro.tag" name="field.intro" onclick="" title=" <span>Undefined</span> " rel="window">
+ <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="" 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