在Sitecore管理门户中,我创建了一个具有以下角色的用户
当我打开Sitecore项目并尝试使用内容编辑器进行编辑时,它首先要求我在进行任何编辑之前锁定该项目。 当我选择“锁定并编辑”选项时,它会显示
If you publish now, the selected version will not be visible on the Web site because it has been replaced by an older version.
当我尝试使用Sitecore管理员帐户执行相同操作时,它不会要求我锁定它并且编辑工作正常。此用户的Sitecore角色是否存在问题?
除此之外还有其他事情,当我选择“锁定和编辑”选项时,它将创建一个新版本而不是编辑相同版本。对于未发生的管理员用户。所以我认为创建一个新版本是这个的主要原因。
答案 0 :(得分:2)
不,这是预期的行为。只有真正的管理员(在屏幕截图的“常规”选项卡中选中“用户是管理员”)才能绕过这些安全机制。
答案 1 :(得分:2)
使用Reflector我检查了scEditorWarningTitle
(scEditorWarningTitle是警告消息标题的类)的使用情况。我发现它位于Sitecore.Client.dll中,特别是在Sitecore.Shell.Applications.ContentMnaager.Editor.RenderWarning
中。该命名空间还有一个GetWarnings
方法,该方法可以阻止getContentEditorWarnings
管道:
using (new LongRunningOperationWatcher(Settings.Profiling.RenderFieldThreshold, "GetContentEditorWarningsArgs pipeline", new string[0]))
{
CorePipeline.Run("getContentEditorWarnings", args);
}
查看该管道,我们可以看到它执行以下操作(默认情况下,至少在Sitecore 6.5更新5中 - 在其他版本的Sitecore中可能会有所不同):
<getContentEditorWarnings>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.ItemNotFound, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanReadLanguage, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.HasNoVersions, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanWrite, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanWriteWorkflow, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.CanWriteLanguage, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.IsReadOnly, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.IsLocked, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.HasNoFields, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.NeverPublish, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.ItemPublishingRestricted, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.VersionPublishingRestricted, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.ShowingInputBoxes, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.FeedIsEmpty, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.RunRules, Sitecore.Kernel"/>
<processor type="Sitecore.Pipelines.GetContentEditorWarnings.Notifications, Sitecore.Kernel"/>
</getContentEditorWarnings>
再次在Sitecore 6.5更新5中,我看到的唯一VersionPublishingRestricted
警告是:
如果您现在发布,则所选版本将不会显示在 网站因为它不在最后的工作流程步骤中 如果您立即发布,则所选版本将不会显示在 网站,因为今天不属于其有效日期范围
如果 您现在发布,所选版本将不会在Web上显示 网站,因为它已被更新的版本替换
如果您发布 现在,所选版本将不会在网站上显示
有可能描述
将发布版本X
或
不会发布其他版本
我检查过的所有其他处理器都没有提到被旧版本替换。
如果旧的不是拼写错误,那么值得查看getContentEditorWarnings
管道或检查您的规则(位于/sitecore/system/Settings/Rules/Content Editor Warnings/Rules
)
修改强>
正如@horseman所说,在Sitecore 6.6中,这是VersionPublishingRestrictions
:
if ((validVersion != null) && (item.Version.Number < validVersion.Version.Number))
{
warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because it has been replaced by a newer version.");
}
else if ((validVersion != null) && (item.Version.Number > validVersion.Version.Number))
{
warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because it has been replaced by an older version.");
}
else if (IsInWorkflow(item))
{
warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because it is not in the final workflow step.");
}
else if ((item.Publishing.ValidFrom > now) || (item.Publishing.ValidTo <= now))
{
warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site because today does not fall within its valid date range.");
}
else
{
warning.Title = Translate.Text("If you publish now, the selected version will not be visible on the Web site.");
}
因此,如果有一个有效版本,并且有效版本号小于当前所选项目的版本号,您将收到消息:
If you publish now, the selected version will not be visible on the Web site because it has been replaced by an older version.