Security greyout发布选项(如果用户同时是作者和发布者)-sitecore

Security greyout发布选项(如果用户同时是作者和发布者)-sitecore,security,sitecore,publish,sitecore7,email-notifications,Security,Sitecore,Publish,Sitecore7,Email Notifications,我有一个要求,如果一个用户同时是内容作者和发布者,并且如果这个用户创建了内容,他就不应该有机会发布。因此,在批准后,当我向发布者组发送电子邮件时,我将检查用户是否是提交者,如果是,我将不发送电子邮件。我觉得需要做的另一件事是将发布选项灰显。这可以通过代码实现吗?我认为设置访问权限在这种情况下不起作用。欢迎您的任何意见/想法 谢谢, TG.如果内容由发布者创建或修改,您是否试图取消审批流程?如果是这样,我将有两个处于草稿状态的命令,Submit(为非发布者显示)和Publish(仅向发布者显示),

我有一个要求,如果一个用户同时是内容作者和发布者,并且如果这个用户创建了内容,他就不应该有机会发布。因此,在批准后,当我向发布者组发送电子邮件时,我将检查用户是否是提交者,如果是,我将不发送电子邮件。我觉得需要做的另一件事是将发布选项灰显。这可以通过代码实现吗?我认为设置访问权限在这种情况下不起作用。欢迎您的任何意见/想法

谢谢,
TG.

如果内容由发布者创建或修改,您是否试图取消审批流程?如果是这样,我将有两个处于草稿状态的命令,Submit(为非发布者显示)和Publish(仅向发布者显示),并在执行时将其移动到最后阶段

public class ValidateUser
{
    public void Process(WorkflowPipelineArgs args)
    {
        Assert.ArgumentNotNull(args, "args");
        ProcessorItem processorItem = args.ProcessorItem;
        if (processorItem != null)
        {
            Item contextitem = args.DataItem;
            Item innerItem = processorItem.InnerItem;
            var contentWorkflow = contextitem.Database.WorkflowProvider.GetWorkflow(contextitem);
            var contentHistory = contentWorkflow.GetHistory(contextitem);
            if (contentHistory.Length > 0)
            {
                if (contentHistory[contentHistory.Length - 1].User == Sitecore.Context.User.DisplayName)
                {
                    args.AbortPipeline();
                }
            }
        }
    }
}

还有一个审批阶段,在该阶段中,其他用户将审批内容。同时也是发布者的内容作者不应能够发布。您可以创建一个审批状态操作,如果上下文用户是提交者,该操作将显示一条消息,并阻止其移动到下一个状态,如验证操作Thanku。我理解您的意思,但我不确定如何检查该用户是否是列表中的提交者行动我应该创建操作还是验证操作?有没有可以参考的样品?pleasepublic类ValidateUser{public void Process(WorkflowPipelineArgs args){Assert.ArgumentNotNull(args,“args”);ProcessorItem ProcessorItem=args.ProcessorItem;if(ProcessorItem!=null){Item contextitem=args.DataItem;Item innerItem=ProcessorItem.innerItem;var ContentWorkflowWorkflowProvider=contextitem.GetWorkflow(contextitem);var contentHistory=contentWorkflow.GetHistory(contextitem);if(contentHistory.Length>0){if(contentHistory[contentHistory.Length-1].User==Sitecore.Context.User.DisplayName){args.AbortPipeline();}}批准是工作流中的最后一步…当此用户单击功能区或sitecore->publish Site上的“发布”按钮时,弹出窗口应显示“无法发布”。我可以覆盖的功能是什么?