如何为经过身份验证的用户组禁用 Plone 5 工具栏?
How to disable Plone 5 Toolbar for authenticated user group?
以下场景:
- 一个用户登录到我的 Plone 5 站点。
- 工具栏出现了,但是他们没有选项可以用它做任何事情,因为他们在 Authenticated Group 中。
他们只有经过身份验证的访问权限才能查看几个区域。我怎样才能抑制某些用户组的工具栏?或者最好的方法是什么?
最简单的方法是使用 CSS。您可以提供隐藏工具栏的条件 CSS:
#plone-toolbar-container {display: none}
本文介绍了一种非常简单的方法:http://datakurre.pandala.org/2015/05/plonecustom-for-plone-5.html
请注意:工具栏还包含个人喜好部分,因此删除它也会隐藏一些用户功能。
还有其他方法可以禁用工具栏:
- 将其从重氮主题中删除base
index.html
file and/or the rules.xml
file
- 将其从
Products.CMFPlone
main_template.pt
中删除
请注意,虽然其中任何一个都会删除工具栏,但 body
标记仍将包含 plone-toolbar-left-default
CSS class,这将导致页面被填充(即,将有一个工具栏大小的空白 space)。所以 CSS 必须被覆盖,或者
必须覆盖 bodyClass method of the plone_layout view 以便不再生成 CSS class。
现有的 Plone 文档有关于如何使主题规则有条件或有条件地覆盖模板的说明。
一个不错的方法是使用角色和权限。您可以仅针对 Member
角色(而不是编辑、审阅者和经理)隐藏工具栏,方法是覆盖工具栏并定义您自己的过滤 ModifyPortalContent
权限的条件。
这里是一个例子,当你开发你自己的插件依赖于z3c.jbot.
将 toolbar.pt
模板的副本放入插件的 overrides
目录中。这是模板的路径:plone/app/layout/viewlets/toolbar.pt
。将新文件重命名为 plone.app.layout.viewlets.toolbar.pt
以使其工作 (see plone docs)。
自定义模板中的主要条件。
<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">
添加一些 CSS 以仅针对成员角色删除正文中的填充。
userrole-member.plone-toolbar-left-default { padding-left:0 }
现在为用户提供一些指向 /@@personal-preferences
和 /logout
的新链接,您就完成了。
克隆 5.1(开发):
我使用 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)而不是工具栏
在 plone 5.1 中我们有权限 "Show Toolbar".
在您的通用设置配置文件中,添加一个文件 rolemap.xml
这里我只为具有编辑、站点管理员、管理员角色的用户显示工具栏(对成员隐藏)。添加成员以在没有成员角色的情况下隐藏它以进行身份验证。
<?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>
我想要工具栏而不是 contentview
图标和 plone-toolbar-main 中的 link,所以我编辑了我的 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">
以下场景:
- 一个用户登录到我的 Plone 5 站点。
- 工具栏出现了,但是他们没有选项可以用它做任何事情,因为他们在 Authenticated Group 中。
他们只有经过身份验证的访问权限才能查看几个区域。我怎样才能抑制某些用户组的工具栏?或者最好的方法是什么?
最简单的方法是使用 CSS。您可以提供隐藏工具栏的条件 CSS:
#plone-toolbar-container {display: none}
本文介绍了一种非常简单的方法:http://datakurre.pandala.org/2015/05/plonecustom-for-plone-5.html
请注意:工具栏还包含个人喜好部分,因此删除它也会隐藏一些用户功能。
还有其他方法可以禁用工具栏:
- 将其从重氮主题中删除base
index.html
file and/or therules.xml
file - 将其从
Products.CMFPlone
main_template.pt
中删除
请注意,虽然其中任何一个都会删除工具栏,但 body
标记仍将包含 plone-toolbar-left-default
CSS class,这将导致页面被填充(即,将有一个工具栏大小的空白 space)。所以 CSS 必须被覆盖,或者
必须覆盖 bodyClass method of the plone_layout view 以便不再生成 CSS class。
现有的 Plone 文档有关于如何使主题规则有条件或有条件地覆盖模板的说明。
一个不错的方法是使用角色和权限。您可以仅针对 Member
角色(而不是编辑、审阅者和经理)隐藏工具栏,方法是覆盖工具栏并定义您自己的过滤 ModifyPortalContent
权限的条件。
这里是一个例子,当你开发你自己的插件依赖于z3c.jbot.
将
toolbar.pt
模板的副本放入插件的overrides
目录中。这是模板的路径:plone/app/layout/viewlets/toolbar.pt
。将新文件重命名为plone.app.layout.viewlets.toolbar.pt
以使其工作 (see plone docs)。自定义模板中的主要条件。
<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">
添加一些 CSS 以仅针对成员角色删除正文中的填充。
userrole-member.plone-toolbar-left-default { padding-left:0 }
现在为用户提供一些指向 /@@personal-preferences
和 /logout
的新链接,您就完成了。
克隆 5.1(开发): 我使用 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)而不是工具栏
在 plone 5.1 中我们有权限 "Show Toolbar".
在您的通用设置配置文件中,添加一个文件 rolemap.xml
这里我只为具有编辑、站点管理员、管理员角色的用户显示工具栏(对成员隐藏)。添加成员以在没有成员角色的情况下隐藏它以进行身份验证。
<?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>
我想要工具栏而不是 contentview
图标和 plone-toolbar-main 中的 link,所以我编辑了我的 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">