From 35de5b434ab4a14d2426ebfc74d9ec4214f439ad Mon Sep 17 00:00:00 2001 From: helmutm Date: Wed, 29 Mar 2006 05:37:34 +0000 Subject: [PATCH] more on external editor for Documents; make Documents available via WebDAV git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1152 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/configure.zcml | 8 +++++++- browser/edit.pt | 4 ---- browser/node_macros.pt | 2 +- browser/node_target.pt | 6 ++++++ browser/resource.py | 7 +++++++ browser/resource_configure.pt | 7 ++++++- configure.zcml | 5 +++++ resource.py | 32 +++++++++++++++++++++++++++++--- 8 files changed, 61 insertions(+), 10 deletions(-) diff --git a/browser/configure.zcml b/browser/configure.zcml index ef06f15..357f88d 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -229,6 +229,13 @@ + + - Edit something - X

Document xy + External Editor
diff --git a/browser/resource.py b/browser/resource.py index 513ed53..31b5316 100644 --- a/browser/resource.py +++ b/browser/resource.py @@ -130,6 +130,13 @@ class DocumentView(ResourceView): view = zapi.getMultiAdapter((removeAllProxies(source), self.request)) return view.render() + def show(self): + data = self.context.data + response = self.request.response + response.setHeader('Content-Type', self.context.contentType) + response.setHeader('Content-Length', len(data)) + return data + class MediaAssetView(ResourceView): diff --git a/browser/resource_configure.pt b/browser/resource_configure.pt index c6383e3..a11d52d 100644 --- a/browser/resource_configure.pt +++ b/browser/resource_configure.pt @@ -5,7 +5,12 @@
-

Concept Title


+

+ Concept Title + X +


+ + @@ -240,6 +244,7 @@ + diff --git a/resource.py b/resource.py index f49036c..d5301ef 100644 --- a/resource.py +++ b/resource.py @@ -26,7 +26,9 @@ from zope.app import zapi from zope.app.container.btree import BTreeContainer from zope.app.container.contained import Contained from zope.app.file.image import Image as BaseMediaAsset -from zope.app.filerepresentation.interfaces import IWriteFile +from zope.app.file.interfaces import IFile +from zope.app.filerepresentation.interfaces import IReadFile, IWriteFile +from zope.app.size.interfaces import ISized from zope.component import adapts from zope.i18nmessageid import MessageFactory from zope.interface import implements @@ -100,7 +102,7 @@ class Resource(Contained, Persistent): class Document(Resource): - implements(IDocument) + implements(IDocument, ISized) proxyInterface = IDocumentView @@ -109,6 +111,15 @@ class Document(Resource): def getData(self): return self._data data = property(getData, setData) + def getSize(self): + return len(self.data) + + def sizeForSorting(self): + return 'byte', self.getSize() + + def sizeForDisplay(self): + return '%i Bytes' % self.getSize() + class MediaAsset(Resource, BaseMediaAsset): @@ -155,7 +166,22 @@ class DocumentWriteFileAdapter(object): self.context = context def write(self, data): - self.context.data = data.replace('\r', '') + self.context.data = unicode(data.replace('\r', ''), 'UTF-8') + + +class DocumentReadFileAdapter(object): + + implements(IReadFile) + adapts(IDocument) + + def __init__(self, context): + self.context = context + + def read(self): + return self.context.data.encode('UTF-8') + + def size(self): + return len(self.context.data) class IndexAttributes(object):