some adjustments on permissions for editing and showing certain portlets

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1621 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-03-07 14:53:46 +00:00
parent ee5586ce3f
commit 8a6a9a938d
6 changed files with 22 additions and 11 deletions

View file

@ -239,18 +239,19 @@ class BaseView(GenericView):
def openEditWindow(self, viewName='edit.html'):
if self.editable:
return "openEditWindow('%s/@@%s')" % (self.url, viewName)
#if self.request.principal.id == 'rootadmin'
return "openEditWindow('%s/@@%s')" % (self.url, viewName)
return ''
@Lazy
def xeditable(self):
return self.request.principal.id == 'rootadmin'
#return getattr(self.context, 'contentType', '').startswith('text/')
ct = getattr(self.context, 'contentType', '')
if ct.startswith('text/'):
return self.request.principal.id == 'rootadmin'
return canWrite(self.context, 'title')
@Lazy
def inlineEditingActive(self):
#return False
#return self.request.principal.id == 'rootadmin'
# this may depend on system and user settings...
return True

View file

@ -30,6 +30,7 @@ from zope.app.container.contained import ObjectRemovedEvent
from zope.app.form.browser.interfaces import ITerms
from zope.app.form.interfaces import IDisplayWidget
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.app.security.interfaces import IUnauthenticatedPrincipal
from zope.cachedescriptors.property import Lazy
from zope.dottedname.resolve import resolve
from zope.event import notify
@ -80,7 +81,8 @@ class ConceptView(BaseView):
def __init__(self, context, request):
super(ConceptView, self).__init__(context, request)
cont = self.controller
if cont is not None:
if (cont is not None and not IUnauthenticatedPrincipal.providedBy(
self.request.principal)):
cont.macros.register('portlet_right', 'parents', title='Parents',
subMacro=self.template.macros['parents'],
position=0, info=self)

View file

@ -76,7 +76,8 @@ class NodeView(BaseView):
cm.register('js', 'loops.js', resourceName='loops.js')
cm.register('portlet_left', 'navigation', title='Navigation',
subMacro=self.template.macros['menu'])
if not IUnauthenticatedPrincipal.providedBy(self.request.principal):
#if not IUnauthenticatedPrincipal.providedBy(self.request.principal):
if canWrite(self.context, 'title'):
#cm.register('portlet_right', 'clipboard', title='Clipboard',
# subMacro=self.template.macros['clipboard'])
# this belongs to loops.organize; how to register portlets

View file

@ -30,7 +30,7 @@
style="float: right; border: 1px solid #ccc;
margin-top: 1em">
<span id="xedit_icon"
tal:condition="item/xeditable | nothing">
tal:condition="target/xeditable | nothing">
<a href="#" title="Edit" style="padding: 5px"
tal:attributes="href string:${item/realTargetUrl}/external_edit;
title string:Edit '${target/title}' with External Editor"><img

View file

@ -32,10 +32,10 @@
<metal:block define-macro="image">
<div tal:attributes="ondblclick python: item.openEditWindow('edit.html')">
<h3 tal:content="item/title">Title</h3>
<p><i tal:content="item/description">Description</i></p>
<h3 tal:content="item/title">Title</h3><br />
<img src="#"
tal:attributes="src string:${view/url}/.target${view/targetId}/view" />
<p><i tal:content="item/description">Description</i></p>
</div>
</metal:block>

View file

@ -386,7 +386,14 @@ Now we are ready to set up a view on our page node:
The elements responsible for presentation are controlled by a controller
object; note that we have to provide a named template 'loops.node_macros' that
is used to retrieve a macro used by NodeView:
is used to retrieve a macro used by NodeView.
As the display of the standard macros is controlled by permissions we have
to install a checker first.
>>> from zope.security.checker import NamesChecker, defineChecker
>>> nodeChecker = NamesChecker(('body', 'title',))
>>> defineChecker(Node, nodeChecker)
>>> from cybertools.browser.controller import Controller
>>> from loops.browser.util import node_macros