Sitecore工作箱 - 修改“打开”以在新的浏览器选项卡中打开内容编辑器项

时间:2013-02-22 09:29:28

标签: sitecore

在工作箱中,我们有“打开”和“预览”功能。 是否可以修改“打开”功能以在新的浏览器选项卡中打开内容编辑器项,而不是在弹出窗口中显示“内容编辑器”?

2 个答案:

答案 0 :(得分:3)

这是可能的:
首先,找出用于工作箱的代码。这可以通过打开Workbox.xml(位于webroot / sitecore / shell / Applications / Workbox)文件来完成。 你会看到像

这样的东西
<CodeBeside Type="Sitecore.Shell.Applications.Workbox.WorkboxForm,Sitecore.Client"/>

通过在WorkboxForm类上使用Reflector,我可以看到在工作区中单击“打开”时会发生以下情况:

webControl["Click"] = string.Concat(new object[] { "Open(\"", item.ID, "\", \"", item.Language, "\", \"", item.Version, "\")" });

因此,您需要创建自己的WorkboxForm版本,继承Sitecore的WorkboxForm类并覆盖Open方法,如下所示:

protected new void Open(string id, string language, string version)
{
// Your code goes here
}

在Workbox.xml中,将CodeBeside更改为指向新类。

有关工作箱中自定义功能的更多信息,我建议您阅读this文章,其中包含很多详细信息,以及工作箱中的其他方法。
StackOverflow上还有另一个有用的question。对已接受答案的评论指出,您可以将Workbox.xml文件放入/ sitecore / shell / override。

请注意,这是基于Sitecore 6.5更新5,在其他版本中可能略有不同。

答案 1 :(得分:0)

在Appconfig / Commands.config中,您可以找到与它们相关的命令和类。 我已经反映了一些命令,比如预览,打开并了解内部发生的事情。

e.g。名称=&#34;项目:开放&#34;类型=&#34; Sitecore.Shell.Framework.Commands.ContentEditor.OpenItem,Sitecore.Kernel&#34;

我已经超越了&#34; Open&#34; mwthod在工作箱中按如下方式打开新选项卡中的内容编辑器项

...
UrlString urlString = new UrlString("/sitecore/shell/Applications/Content%20Editor");

        urlString.Append("id", id);
        urlString.Append("vs", version);
        urlString.Append("ro", sectionId);
        urlString.Append("la", language);
        urlString.Append("fo", id);

        SheerResponse.Eval("window.open('" + (object)urlString + "', '_blank')");
...

它有效!!!!!