【发布时间】:2015-06-17 08:16:33
【问题描述】:
我正在运行带有 SIP 3.2 的 Sitecore 6.6,并且想要使用项目存储桶(在这种情况下,更新到 Sitecore 7 对我们不起作用)。所以我安装了 (the Module) 并让新的菜单图标显示在 Sitecore 中。问题是当我在内容树中选择一个项目时,桶按钮(将项目转换为桶)始终处于非活动状态。请看以下截图:
Google 搜索没有帮助。知道有什么问题吗?
编辑:
访问查看器:
安全编辑器:
【问题讨论】:
我正在运行带有 SIP 3.2 的 Sitecore 6.6,并且想要使用项目存储桶(在这种情况下,更新到 Sitecore 7 对我们不起作用)。所以我安装了 (the Module) 并让新的菜单图标显示在 Sitecore 中。问题是当我在内容树中选择一个项目时,桶按钮(将项目转换为桶)始终处于非活动状态。请看以下截图:
Google 搜索没有帮助。知道有什么问题吗?
编辑:
访问查看器:
安全编辑器:
【问题讨论】:
原来你想变成桶的项目必须被锁定(点击主页 -> 编辑)。然后 Bucket 按钮处于活动状态。无论如何感谢您的帮助!
【讨论】:
此按钮将被禁用的三种情况:
bucket:makebucket。从你写的和你的截图来看,我认为这是你的情况的第二或第三个场景。检查项目是否被锁定并尝试使用 Access viewer 和 Security Editor 来检查/分配适当的访问权限。
编辑:
您可以随时调试此命令并查看它被禁用的原因。
在您的项目中创建一个名为 MakeBucket 的类(将 My.Assembly.Namespace 更改为您的项目命名空间):
namespace My.Assembly.Namespace
{
using System.Collections.Specialized;
using Sitecore.Diagnostics;
using Sitecore.ItemBucket.Kernel.ItemExtensions.Axes;
using Sitecore.ItemBucket.Kernel.Kernel.Pipelines;
using Sitecore.ItemBucket.Kernel.Security;
using Sitecore.Shell.Framework.Commands;
internal class MakeBucket : Command
{
public override void Execute(CommandContext context)
{
Assert.ArgumentNotNull(context, "context");
var items = context.Items;
Assert.IsNotNull(items, "Context items list is null");
Context.ClientPage.Start("uiBucketItems", new BucketArgs(items[0], new NameValueCollection()));
}
public override CommandState QueryState(CommandContext context)
{
Error.AssertObject(context, "context");
var item = context.Items[0];
if (!new BucketSecurityManager(item).IsAllowedToCreateBucket)
{
return CommandState.Disabled;
}
if (!item.Locking.HasLock())
{
return CommandState.Disabled;
}
return item.IsBucketItemCheck() ? CommandState.Disabled : CommandState.Enabled;
}
}
}
并将其注册到App_Config/Include/Sitecore.ItemBuckets.config 而不是原来的item:bucket 命令:
<command name="item:bucket" type="My.Assembly.Namespace.MakeBucket,My.Assembly" />
使用调试器附加并在QueryState 方法中放置断点。
【讨论】: