在 Sitecore 中,如何隐藏用户工作箱中的某些状态?
假设我在 Sitecore 中有一个具有以下状态的工作流程:
- 草稿
- 审核 由管理
- 审核 由 IT
- 审核 由公司
- 审核 已批准
我希望 IT 组中的用户在访问时只能看到处于“由 IT 审核”状态的项目到他们的工作箱。现在我通过拒绝所有其他状态的读取权限来做到这一点。这很好用。 IT 用户只能看到处于其状态的项目。
然而,这有一个有趣的副作用。由于 IT 用户在查看该项目的历史记录时没有对其他状态的读取访问权限,因此会显示以下内容:
移自?到 ? 2011 年 10 月 27 日 搬自?由 IT 于 2011 年 10 月 27 日审核
似乎用户无法看到其他州的名称,因为他没有读取权限。这是预期的行为吗?是否有其他方法可以将状态排除在用户的工作箱之外?
Let's say I have a Workflow in Sitecore that has the following states:
- Draft
- Review by Management
- Review by IT
- Review by Corporate
- Approved
I want a user in the IT group to only see items that are in the "Review by IT" state when they go to their Workbox. Right now I am doing this by denying the Read permission to all other states. This works fine. An IT user will only see items that are in their state.
However, this has an interesting side effect. Because the IT user does not have Read access to the other states when he views the history for that item it says the following:
Moved from ? to ? on 10/27/11
Moved from ? to Review by IT on 10/27/11
It seems like the user can not see the names of the other states because he does not have Read permissions. Is this expected behavior? Is there some other way to keep states out of a user's Workbox?
您可以尝试做的是覆盖 Sitecore.Shell.Applications.Workbox.WorkboxHistoryXmlControl 实现。
\sitecore\shell\Applications\Workbox
复制到\sitecore\shell\override
创建从
Sitecore.Shell.Applications 继承的类.Workbox.WorkboxHistoryXmlControl
并通过将其包装在安全禁用程序中来覆盖OnLoad
:受保护的覆盖 void OnLoad(EventArgs e) { using(new SecurityDisabler()) { base.OnLoad(e); }}
在
\sitecore\shell\override\WorkboxHistory.xml
中更改对新实现的引用:...inherits="Custom.Workbox.WorkboxHistoryXmlControl,Custom">
我还没有测试过它,但它应该可以工作。
What you can try doing is override Sitecore.Shell.Applications.Workbox.WorkboxHistoryXmlControl implementation.
\sitecore\shell\Applications\Workbox
to\sitecore\shell\override
Create a class inherited from
Sitecore.Shell.Applications.Workbox.WorkboxHistoryXmlControl
and overrideOnLoad
by wrapping it in a security disabler:protected override void OnLoad(EventArgs e) { using(new SecurityDisabler()) { base.OnLoad(e); }}
Change reference to your new implementation within
\sitecore\shell\override\WorkboxHistory.xml
:...inherits="Custom.Workbox.WorkboxHistoryXmlControl,Custom">
I have not tested it but it should work.