如何为经过身份验证的用户组禁用Plone 5工具栏?

时间:2015-09-28 13:59:47

标签: plone plone-5.x

下面的情景:

  • 用户登录我的Plone 5网站。
  • 工具栏显示但是他们没有选项可以对它进行任何操作,因为它们位于经过身份验证的组中。

他们只获得经过身份验证的访问权限才能查看一些区域。如何禁止某些用户组的工具栏?或者最好的方法是什么?

6 个答案:

答案 0 :(得分:5)

最简单的方法是使用CSS。您可以提供隐藏工具栏的条件CSS:

#plone-toolbar-container {display: none}

本文介绍了一种非常简单的方法:http://datakurre.pandala.org/2015/05/plonecustom-for-plone-5.html

请注意:工具栏还包含个人偏好的部分,因此删除它也会隐藏某些用户的功能。

答案 1 :(得分:4)

一种不错的方法是使用角色和权限。您可以通过覆盖工具栏并定义自己的条件来隐藏Member权限来隐藏ModifyPortalContent角色的工具栏(而不是编辑器,审阅者和管理员)。

下面是一个示例,当您开发自己的Add时,依赖于 z3c.jbot

  1. toolbar.pt模板的副本放入“添加”的overrides目录中。这是模板的路径:plone/app/layout/viewlets/toolbar.pt。将新文件重命名为plone.app.layout.viewlets.toolbar.pt以使其生效(see plone docs)。

  2. 自定义模板中的主要条件。

    <section id="edit-bar" role="toolbar"
     tal:define="portal_state view/portal_state;
                 personal_bar python: view.get_personal_bar()"
     tal:condition="not: portal_state/anonymous"
     i18n:domain="plone">
    

    变为

    <section id="edit-bar" role="toolbar"
     tal:define="portal_state view/portal_state;
                 personal_bar python: view.get_personal_bar();
                 checkPermission nocall: context/portal_membership/checkPermission"
     tal:condition="python:checkPermission('Modify portal content',context)"
     i18n:domain="plone">
    
  3. 添加一些CSS以仅删除成员角色的主体上的填充。

    userrole-member.plone-toolbar-left-default { padding-left:0 }
    
  4. 现在为用户/@@personal-preferences/logout提供一些新链接,您已完成。

答案 2 :(得分:2)

还有其他方法可以禁用工具栏:

请注意,虽然其中任何一个都会删除工具栏,但body标记仍然会包含一个plone-toolbar-left-default CSS类,这将导致页面被填充(即,将有一个工具栏大小空的空间)。因此必须覆盖CSS,或者 必须覆盖bodyClass method of the plone_layout view,以便不再生成CSS类。

现有的Plone文档包含有关如何使主题规则成为条件或有条件地覆盖模板的说明。

答案 3 :(得分:1)

Plone 5.1(dev): 我使用CSS的简单和工作方法:

body.userrole-member #edit-zone {  
  display:none;
}
body.userrole-editor #edit-zone,
body.userrole-contributor #edit-zone,
body.userrole-reviewer #edit-zone {
  display:inline-block;
}

另外做:

  • 修复工具栏隐藏时的边距(body.userrole-editor.plone-toolbar-top-expanded ....)
  • 显示下拉列表(登录用户名:useractions)而不是工具栏

答案 4 :(得分:1)

在plone 5.1中,我们拥有“显示工具栏”权限。

在通用设置配置文件中,添加文件rolemap.xml

这里我只为具有角色编辑器,站点管理员,管理员(将其隐藏在成员中)的用户显示工具栏。添加成员只是将其隐藏为Authenticated而没有成员角色。

<?xml version="1.0"?>
<rolemap>
  <permissions>
    <permission name="Show Toolbar" acquire="False">
      <role name="Manager"/>
      <role name="Site Administrator"/>
      <role name="Editor"/>
    </permission>
  </permissions>
</rolemap>

答案 5 :(得分:0)

我想要工具栏但没有contentview图标和plone-toolbar-main里面的链接,所以我编辑了toolbar.pt:

    <section id="edit-bar" role="toolbar"
     tal:define="portal_state view/portal_state;
                 personal_bar python: view.get_personal_bar();
                 checkPermission nocall: 
context/portal_membership/checkPermission"
     tal:condition="not: portal_state/anonymous"
     i18n:domain="plone">

...

<ul class="plone-toolbar-main">
      <div 
            tal:condition="python:checkPermission('Modify portal 
content',context)"
            tal:replace="structure view/base_render">