new "preview doc" field
This commit is contained in:
parent
e6d621cbf2
commit
b29d06061b
|
@ -29,6 +29,7 @@ from themis.fields.interfaces import IRelatedDoc
|
|||
from themis.fields.interfaces import IRelatedDocs
|
||||
from themis.fields.interfaces import IMailId
|
||||
from themis.fields.interfaces import IMailRefId
|
||||
from themis.fields.interfaces import IPreviewDoc
|
||||
|
||||
from themis.fields.interfaces import IDocHistoLine, IDocHistoLines
|
||||
|
||||
|
@ -395,3 +396,5 @@ class DocHistoLines(Field):
|
|||
if attr in kw: del kw[attr]
|
||||
super(DocHistoLines, self).__init__(**kw)
|
||||
|
||||
class PreviewDoc(Field):
|
||||
implements(IPreviewDoc, IFromUnicode)
|
||||
|
|
|
@ -17,6 +17,7 @@ from themis.fields import RelatedDocs
|
|||
from themis.fields import MailId
|
||||
from themis.fields import MailRefId
|
||||
from themis.fields import DocHistoLines
|
||||
from themis.fields import PreviewDoc
|
||||
from plone.schemaeditor.fields import FieldFactory
|
||||
|
||||
@interface.implementer(editor_ifaces.IFieldEditFormSchema)
|
||||
|
@ -56,3 +57,6 @@ MailRefIdFactory = FieldFactory(MailRefId, u'Mail Reference')
|
|||
MailIdFactory = FieldFactory(MailId, u'Mail Number')
|
||||
|
||||
DocHistoLinesFactory = FieldFactory(DocHistoLines, u'Historic Lines')
|
||||
|
||||
PreviewDocFactory = FieldFactory(PreviewDoc, u'Preview Doc')
|
||||
|
||||
|
|
|
@ -97,4 +97,9 @@
|
|||
component=".editors.DocHistoLinesFactory"
|
||||
/>
|
||||
|
||||
<utility
|
||||
name="themis.fields.PreviewDoc"
|
||||
component=".editors.PreviewDocFactory"
|
||||
/>
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -26,6 +26,7 @@ if HAVE_SUPERMODEL:
|
|||
from themis.fields import MailId
|
||||
from themis.fields import MailRefId
|
||||
from themis.fields import DocHistoLines
|
||||
from themis.fields import PreviewDoc
|
||||
|
||||
class CommissionHandler_(BaseHandler):
|
||||
pass
|
||||
|
@ -122,3 +123,7 @@ if HAVE_SUPERMODEL:
|
|||
|
||||
DocHistoLinesHandler = DocHistoLinesHandler_(DocHistoLines)
|
||||
|
||||
class PreviewDocHandler_(BaseHandler):
|
||||
pass
|
||||
|
||||
PreviewDocHandler = PreviewDocHandler_(PreviewDoc)
|
||||
|
|
|
@ -99,4 +99,9 @@
|
|||
name="themis.fields.DocHistoLines"
|
||||
/>
|
||||
|
||||
<utility
|
||||
component=".handlers.PreviewDocHandler"
|
||||
name="themis.fields.PreviewDoc"
|
||||
/>
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -152,3 +152,16 @@ class IDocHistoLines(IList):
|
|||
|
||||
class IDocHistoLineWidget(IWidget):
|
||||
pass
|
||||
|
||||
class IPreviewDoc(IField):
|
||||
default = schema.Text(
|
||||
description=IField['default'].description,
|
||||
required=False)
|
||||
|
||||
missing_value = schema.Text(
|
||||
title=IField['missing_value'].title,
|
||||
description=IField['missing_value'].description,
|
||||
required=False)
|
||||
|
||||
class IPreviewDocWidget(IWidget):
|
||||
pass
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:tal="http://xml.zope.org/namespaces/tal"
|
||||
tal:omit-tag="">
|
||||
<object tal:condition="view/href"
|
||||
tal:attributes="href view/href"
|
||||
type="application/pdf" width="200px" height="100px">
|
||||
<p>Pas de lecteur PDF intégré, vous pouvez ouvrir le fichier
|
||||
en suivant ce lien : <a tal:attributes="href view/href"
|
||||
tal:content="view/filename">plop.pdf</a>.</p>
|
||||
</object>
|
||||
</html>
|
|
@ -28,6 +28,7 @@ from themis.fields.interfaces import IRelatedDoc
|
|||
from themis.fields.interfaces import IRelatedDocs
|
||||
from themis.fields.interfaces import IMailId, IMailIdWidget
|
||||
from themis.fields.interfaces import IMailRefId, IMailRefIdWidget
|
||||
from themis.fields.interfaces import IPreviewDoc, IPreviewDocWidget
|
||||
from themis.fields.interfaces import IRelatedDocWidget, IRelatedDocsWidget
|
||||
from themis.fields.interfaces import IDocHistoLineWidget, IDocHistoLine
|
||||
|
||||
|
@ -339,3 +340,29 @@ class DocHistoLineConverter(BaseDataConverter):
|
|||
print 'XXX, to field value'
|
||||
return value
|
||||
|
||||
|
||||
@adapter(IPreviewDoc, IFormLayer)
|
||||
@implementer(IFieldWidget)
|
||||
def PreviewDocFieldWidget(field, request):
|
||||
"""IFieldWidget factory for PreviewDoc"""
|
||||
return FieldWidget(field, PreviewDocWidget(request))
|
||||
|
||||
class PreviewDocWidget(Widget):
|
||||
implements(IPreviewDocWidget)
|
||||
|
||||
def href(self):
|
||||
if not hasattr(self.context, 'fichier'):
|
||||
return None
|
||||
if self.context.fichier:
|
||||
return self.form.widgets['fichier'].download_url
|
||||
return None
|
||||
|
||||
def filename(self):
|
||||
if not hasattr(self.context, 'fichier'):
|
||||
return ''
|
||||
if self.context.fichier:
|
||||
if self.form.widgets['fichier'].filename_encoded:
|
||||
return self.form.widgets['fichier'].filename_encoded
|
||||
return 'unknown.pdf'
|
||||
return ''
|
||||
|
||||
|
|
|
@ -91,4 +91,18 @@
|
|||
layer="z3c.form.interfaces.IFormLayer"
|
||||
template="dochistoline_input.pt"/>
|
||||
|
||||
<adapter factory=".widgets.PreviewDocFieldWidget"/>
|
||||
|
||||
<z3c:widgetTemplate
|
||||
mode="display"
|
||||
widget=".widgets.IPreviewDocWidget"
|
||||
layer="z3c.form.interfaces.IFormLayer"
|
||||
template="previewdoc_display.pt"/>
|
||||
|
||||
<z3c:widgetTemplate
|
||||
mode="input"
|
||||
widget=".widgets.IPreviewDocWidget"
|
||||
layer="z3c.form.interfaces.IFormLayer"
|
||||
template="previewdoc_display.pt"/>
|
||||
|
||||
</configure>
|
||||
|
|
Reference in New Issue