我希望使 Plone 中文件夹的内容仅可用于某些角色。这可以轻松完成吗?目前任何人只要点击文件夹内容中文件名的超链接即可轻松下载文件。我知道使用 ZMI 覆盖 at_download 代码的站点范围选项。
2 回答
做到这一点的无代码方式是利用 Plone 的工作流系统。
开箱即用,Plone 的文件和图像内容类型没有自己的工作流程。这意味着文件和图像将简单地继承其父文件夹的发布状态。这很容易和明智,但它不符合您所描述的需求。
要改变这种情况,您可以使用“类型”配置面板打开文件和图像的独立工作流程。然后,可以将它们的发布状态与其包含的文件夹分开设置。通常,您会选择用于文档的相同工作流程。然后,您可以发布一个文件夹并列出其内容,同时将其中的文件设为私有 - 因此需要登录才能查看。
如果您需要它在不同的地方以不同的方式工作,您可以打开“placeful”工作流程(通过在附加组件面板中添加它来打开它;它是预安装的,但不是活动的)。这允许在站点的不同部分使用不同的工作流程。它增加了复杂性,但通常是此类难题的理想解决方案。
这可能不是那么简单,您需要在一个小 Plone 产品中添加一些代码行(不可能 TTW)。下面的代码片段未经测试。
Plone 文件是使用 Archetypes 框架开发的(这可能会在 Plone 5 上改变)。您需要更改的是
read_permission
字段的file
(请参阅Archetypes 字段参考)。从 Products.Archetypes.content.file 导入 ATFile
ATFile.schema['file'].read_permission = '你的新权限'
您只需将新权限分配给角色。
这可能还不够(现在可能第 1 步没用)。您需要对以下内容执行相同的操作
[plone.app.blob extension][2]
:从 plone.app.blob.subtypes 导入 SchemaExtender
SchemaExtender.fields[0]..read_permission = '你的新权限'
最后一个:您可能需要自定义file_view模板,否则当没有权限的用户访问文件视图时会引发“未经授权”的错误。