1

我们有一个多站点、多语言的解决方案。我们有一个特定的站点(站点 A),我们希望将英语作为“主”语言,然后将其翻译成各种其他语言并发布。我们希望防止例如法语编辑能够以法语以外的任何其他语言进行编辑和发布。

但是,法语编辑将同时拥有英语和法语读/写权限,以便他们在解决方案的另一部分(站点 B)上工作,因此我们不能使用这些来直接指定他们在站点 A 上拥有哪些权限。我们也只使用删除继承来限制角色权限,并且从不显式拒绝,因此权限是累积的。

是否可以创建特定于语言的工作流,并为其分配相关角色,以防止该编辑器编辑或发布其他语言的项目?

注意:如果该编辑可以以所有语言发布,但仅限于已移至“可发布”状态的语言版本,并且自己无法使外语版本可发布(因此,如果他确实发布了例如一个德语版本,它只是一个完成的、可发布的版本,而不是一个正在进行的工作)。

编辑:澄清一下,我不介意我的编辑能够发布项目的所有可发布版本,只要他只能以他对该站点拥有所有权的一种语言进行编辑,并且不能使其他版本可发布。

如果没有,是否有针对此问题的标准/最佳实践解决方案?

4

3 回答 3

4

您可以通过更改 web.config 中的以下设置来强制 Sitecore 仅发布用户具有读/写访问权限的项目:

Publishing.CheckSecurity = true
Publishing.RequireTargetDeleteRightWhenCheckingSecurity = false

使用默认或自定义访问权限来控制用户是否可以发布项目

这确实意味着您需要将您的角色和权限分离得非常细化,即您需要为站点 1 英语编辑器、站点 1 法语编辑器、站点 2 英语编辑器等提供单独的角色。

编辑:感谢上面的澄清,我可以看到你的问题出在哪里。正如我在上面的评论中提到的,也许您可​​以隐藏/禁用“发布”对话框上的语言选项。刚刚看了看,Sitecore.Shell.Applications.Dialogs.Publish.PublishForm正如预期的那样,您必须复制一些私有方法,但是您可以添加自己的逻辑来BuildLanguages()获得所需的内容。只需复制sitecore\shell\Applications\Dialogs\Publish\Publish.xmlsitecore\shell\Override更改 codebeside 以指向您的自定义逻辑。

我讨厌通常向系统模板添加字段,但可能会添加另一个字段/sitecore/templates/System/Language来指定哪些角色/用户可以发布该语言。您可以为此使用帐户选择器字段

于 2013-02-25T19:26:37.187 回答
0

您可以对工作流操作设置安全性,从而防止某些用户执行操作。如果这不能解决问题(因为涉及相同的工作流程),您可以随时恢复自己实施工作流程操作,这很容易。

于 2013-02-25T22:18:12.170 回答
0

我过去通过为用户创建多个帐户来处理这个问题。在您的情况下,一个用于站点 A 的英语版本,一个用于站点 B 的英语和法语版本。它可能并不理想,但我认为创建额外的语言也不理想。祝你好运!

于 2014-05-20T14:57:53.997 回答