Sitecore工作流程快速操作栏权限

时间:2012-01-23 21:59:06

标签: sitecore sitecore6

我有一个工作流程和两个有权编辑和发布的用户。当user1编辑项目时,该项目将进入工作流程并显示在user1的工作箱中。

该项目未出现在user2的工作箱中,但在项目旁边的快速操作栏中显示工作流程中的状态,user2可以批准(在该状态下运行可用命令),即使该项目已被user1锁定。

工作箱似乎按预期运行,仅显示用户编辑的项目(在工作流程中)。但快速操作栏允许任何用户在项目所处的状态下运行可用的命令,即使项目被其他人锁定。

两个用户都属于同一个角色,作者。

有什么建议可以解决这个问题吗?

谢谢,

Ť

1 个答案:

答案 0 :(得分:0)

您可以通过继承Sitecore.Shell.Applications.ContentEditor.Gutters.WorkflowState来更改此图标的功能:

public class SecureWorkflowGutterIcon : Sitecore.Shell.Applications.ContentEditor.Gutters.WorkflowState
{
    protected override Sitecore.Shell.Applications.ContentEditor.Gutters.GutterIconDescriptor GetIconDescriptor(Sitecore.Data.Items.Item item)
    {
        if (Sitecore.Context.Item.Locking.IsLocked() == false || 
            Sitecore.Context.Item.Locking.GetOwner() == Sitecore.Context.GetUserName())
        {
            return base.GetIconDescriptor(item);
        }
        return null;
    }
  }

如果工作流图标未锁定或被当前用户锁定,则会显示这些图标。

接下来,转到核心数据库,并修改项目/ sitecore / content / Applications / Content Editor / Gutters / WorkflowState,字段类型,以引用您的新班级:YourNamspace.YourClass, YourAssembly