如何为视图子集配置SDL Tridion CME扩展?

Chr*_*ers 8 tridion tridion-2011

我为SDL Tridion创建了一个新的编辑器,它为功能区栏添加了一些新功能.通过将以下代码段添加到editor.config来启用此功能

    <!-- ItemCommenting PowerTool -->
    <ext:extension assignid="ItemCommenting" name="Save and&lt;br/&gt;Comment" pageid="HomePage" groupid="ManageGroup" insertbefore="SaveCloseBtn">
      <ext:command>PT_ItemCommenting</ext:command>
      <ext:title>Save and Comment</ext:title>
      <ext:issmallbutton>false</ext:issmallbutton>
      <ext:dependencies>
        <cfg:dependency>PowerTools.Commands</cfg:dependency>
      </ext:dependencies>
      <ext:apply>
        <ext:view name="*" />
      </ext:apply>
    </ext:extension>
Run Code Online (Sandbox Code Playgroud)

这通过在节点中使用通配符值应用于所有视图.这导致我的新按钮被添加到每个视图的功能区中,包括主仪表板.有没有办法将此添加到除仪表板之外的所有视图?或者我必须创建这样的东西?

    <ext:apply>
        <ext:view name="PageView" />
        <ext:view name="ComponentView" />
        <ext:view name="SchemaView" />
    </ext:apply>
Run Code Online (Sandbox Code Playgroud)

如果这是实现我需要的结果的唯一方法,是否有一个所有视图名称的列表?

Bor*_*nko 8

Jaime提供的解决方法将不会起作用,因为:

  • 如果isAvailable 相应命令的方法将返回false,则Ribbon工具栏将仅在"创建"选项卡上隐藏按钮.
  • RibbonToolbar中的大多数按钮都实现了特定的Tridion.Controls.RibbonButton界面.这意味着,当你试图Tridion.Controls.Button控制同一个元素时 - 你会得到完全不同的控制,基于相同的html元素.因此RibbonToolbar不会知道它,它将无法正常工作.
  • 如果要在RibbonToolbar中隐藏按钮,则应在RibbonToolbar和RibbonPage上使用公共方法.因此,RibbonToolbar将正确处理它.例:
var toolbar = $controls.getControl($("#ItemToolbar"), "Tridion.Controls.RibbonToolbar");
var page = toolbar.getPageById("HomePage");
page.hideItem(buttonId);
page.showItem(buttonId);
Run Code Online (Sandbox Code Playgroud)

至于原始问题,这里是非常简单和最简单的解决方案:

<ext:add>
    <ext:extension assignid="ItemCommenting" name="Save and&lt;br/&gt;Comment" pageid="HomePage" groupid="ManageGroup" insertbefore="SaveCloseBtn">
        <ext:command>PT_ItemCommenting</ext:command>
        <ext:title>Save and Comment</ext:title>
        <ext:issmallbutton>false</ext:issmallbutton>
        <ext:dependencies>
            <cfg:dependency>PowerTools.Commands</cfg:dependency>
        </ext:dependencies>
        <ext:apply>
            <ext:view name="*" />
        </ext:apply>
    </ext:extension>
</ext:add>
<ext:remove>
    <ext:extension id="ItemCommenting">
        <ext:apply>
            <ext:view name="DashboardView" />
        </ext:apply>
    </ext:extension>
</ext:remove>
Run Code Online (Sandbox Code Playgroud)