Render external text files e.g. as restructured text
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1826 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
22b4b2b2f9
commit
d258c62bb7
2 changed files with 45 additions and 3 deletions
|
@ -529,6 +529,18 @@
|
||||||
permission="zope.ManageContent">
|
permission="zope.ManageContent">
|
||||||
</page>
|
</page>
|
||||||
|
|
||||||
|
<pages for="loops.interfaces.IResource"
|
||||||
|
class="loops.browser.resource.ExternalEditorView"
|
||||||
|
permission="zope.ManageContent">
|
||||||
|
|
||||||
|
<page name="external_edit" attribute="load" />
|
||||||
|
<!--
|
||||||
|
<page name="save" attribute="save" />
|
||||||
|
<page name="lock" attribute="lock" />
|
||||||
|
<page name="unlock" attribute="unlock" />-->
|
||||||
|
|
||||||
|
</pages>
|
||||||
|
|
||||||
<!-- forms (end-user view) -->
|
<!-- forms (end-user view) -->
|
||||||
|
|
||||||
<page
|
<page
|
||||||
|
|
|
@ -40,6 +40,7 @@ from zope.security.proxy import removeSecurityProxy
|
||||||
from zope.traversing.api import getName, getParent
|
from zope.traversing.api import getName, getParent
|
||||||
|
|
||||||
from cybertools.typology.interfaces import IType
|
from cybertools.typology.interfaces import IType
|
||||||
|
from cybertools.xedit.browser import ExternalEditorView, fromUnicode
|
||||||
from loops.browser.common import EditForm, BaseView, Action
|
from loops.browser.common import EditForm, BaseView, Action
|
||||||
from loops.browser.concept import ConceptRelationView, ConceptConfigureView
|
from loops.browser.concept import ConceptRelationView, ConceptConfigureView
|
||||||
from loops.browser.node import NodeView, node_macros
|
from loops.browser.node import NodeView, node_macros
|
||||||
|
@ -141,7 +142,8 @@ class ResourceView(BaseView):
|
||||||
ct = context.contentType
|
ct = context.contentType
|
||||||
#if ct.startswith('text/') and ct != 'text/rtf':
|
#if ct.startswith('text/') and ct != 'text/rtf':
|
||||||
ti = IType(context).typeInterface
|
ti = IType(context).typeInterface
|
||||||
if not ti or issubclass(ti, ITextDocument):
|
if (not ti or issubclass(ti, ITextDocument)
|
||||||
|
or (ct.startswith('text/') and ct != 'text/rtf')):
|
||||||
return DocumentView(context, self.request)
|
return DocumentView(context, self.request)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@ -272,8 +274,11 @@ class DocumentView(ResourceView):
|
||||||
def render(self):
|
def render(self):
|
||||||
""" Return the rendered content (data) of the context object.
|
""" Return the rendered content (data) of the context object.
|
||||||
"""
|
"""
|
||||||
text = self.context.data
|
#text = self.context.data
|
||||||
contentType = self.context.contentType
|
ctx = adapted(self.context)
|
||||||
|
text = ctx.data
|
||||||
|
#contentType = self.context.contentType
|
||||||
|
contentType = ctx.contentType
|
||||||
typeKey = renderingFactories.get(contentType, None)
|
typeKey = renderingFactories.get(contentType, None)
|
||||||
if typeKey is None:
|
if typeKey is None:
|
||||||
if contentType == u'text/html':
|
if contentType == u'text/html':
|
||||||
|
@ -290,6 +295,31 @@ class DocumentView(ResourceView):
|
||||||
and canWrite(self.context, 'data'))
|
and canWrite(self.context, 'data'))
|
||||||
|
|
||||||
|
|
||||||
|
class ExternalEditorView(ExternalEditorView):
|
||||||
|
|
||||||
|
def load(self, url=None):
|
||||||
|
context = removeSecurityProxy(self.context)
|
||||||
|
data = adapted(context).data
|
||||||
|
r = []
|
||||||
|
r.append('url:' + (url or zapi.absoluteURL(context, self.request)))
|
||||||
|
r.append('content_type:' + str(context.contentType))
|
||||||
|
r.append('meta_type:' + '.'.join((context.__module__, context.__class__.__name__)))
|
||||||
|
auth = self.request.get('_auth')
|
||||||
|
if auth:
|
||||||
|
print 'ExternalEditorView: auth = ', auth
|
||||||
|
if auth.endswith('\n'):
|
||||||
|
auth = auth[:-1]
|
||||||
|
r.append('auth:' + auth)
|
||||||
|
cookie = self.request.get('HTTP_COOKIE','')
|
||||||
|
if cookie:
|
||||||
|
r.append('cookie:' + cookie)
|
||||||
|
r.append('')
|
||||||
|
r.append(data)
|
||||||
|
result = '\n'.join(r)
|
||||||
|
self.setHeaders(len(result))
|
||||||
|
return fromUnicode(result)
|
||||||
|
|
||||||
|
|
||||||
class NoteView(DocumentView):
|
class NoteView(DocumentView):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Add table
Reference in a new issue