2012-08-10 69 views
-2

我需要在tridion功能区中创建一个在另一个下方的按钮。如何启用使用自定义控件创建的按钮

我已经创建了一个usercontrol,它出现在功能区上但处于禁用模式。 在“http://tridiondeveloper.com/ribbon-item-group”;有人提到在配置中在我的扩展元素中包含<ext:issmallbutton>true</ext:issmallbutton>。我已经将它包含在extension.config文件中。但我面临的错误,如“加载扩展失败 - 具有无效的子元素'issmallbutton'。所以,目前我忽略了这一步,并且按钮处于禁用模式下。 (<ext:issmallbutton>true</ext:issmallbutton>),并使按钮启用

+0

很高兴看到有人在做这个类型的设置,但-1在这个问题上缺少*不*使用'对文章的观点<分机:issmallbutton>'并跳过'建立一个支持SDL Tridion 2011步骤在8个步骤中的GUI扩展,它显示了如何验证配置文件并获取按钮来显示。尽管你的其他问题和接受的答案显示了进展,祝你好运,并保持提问。 – 2012-08-13 14:54:02

回答

5

正如杰里米的答案所示,你不需要ext:issmallbutton来启用y我们的按钮(你在Tridion Developer上提到my article,我特别声明,当你想在彼此之上堆叠按钮时,不会使用ext:issmallbutton)。

您可能应该尝试调试您的JavaScript并查看您的_isAvailable(selection, pipeline)_isEnabled(selection, pipeline)方法中发生了什么。

isAvailable方法应指示命令是否适用于所选项目,isEnabled方法指示是否可执行该命令。我通常只是让isEnabled方法返回isAvailable的结果(因为当按钮可用时,它应该大部分时间也被启用)。当你选择了一个页面会是这个样子如何启用按钮的例子:现在

Example.PageBtn.prototype._isAvailable = function PageBtn$_isAvailable(selection, pipeline) { 
    if (pipeline) { 
     pipeline.stop = false; 
    } 

    if (selection.getCount() == 1) { 
     var itemType = $models.getItemType(selection.getItem(0)); 
     return itemType && (itemType == $const.ItemType.PAGE); 
    } 
    return false; 
}; 
Example.PageBtn.prototype._isEnabled = function PageBtn$_isEnabled(selection, pipeline) { 
    if (pipeline) { 
     pipeline.stop = false; 
    } 
    return this._isAvailable(selection); 
}; 

ext:issmallbutton元素无关这一切,但如果你想知道在哪里,应该是究竟使用,它应该去ext:extension元素中,像这样:

<ext:extension assignid="PageBtn" groupid="MyGroup" name="Example" pageid="HomePage"> 
    <ext:command>PageBtn</ext:command> 
    <ext:title>Example</ext:title> 
    <ext:issmallbutton>true</ext:issmallbutton> 
    <ext:dependencies> 
     <cfg:dependency>Example.Commands</cfg:dependency> 
    </ext:dependencies> 
    <ext:apply> 
     <ext:view name="DashboardView"> 
      <ext:control id="DashboardToolbar" /> 
     </ext:view> 
    </ext:apply> 
</ext:extension> 

可以在Setting up a SDL Tridion 2011 GUI extension in 8 steps找到更多信息。

+0

感谢Bart的解释。在按钮出现在禁用状态后,在Mozilla firebug的帮助下,我发现班正在按钮上应用:'class = tridion button custombtn ribbonitem smallbutton disabled'。我没有写过这个。 – pavan 2012-08-10 11:07:20

+0

如果该按钮被禁用,则您的_isEnabled方法不会触发,也不会返回true。通过查看提供的示例以及何时可以使用这些示例再次开始,然后继续下一步获取您的特定功能,而不是相反。 – 2012-08-10 11:08:53

+0

usercontrol创建,我只是放在一起extension.config,.js和引用到我的.js文件中的ascx。我是否需要将我的用户控件放在任何其他文件夹中? – pavan 2012-08-10 15:11:52

4

要启用按钮,您需要它的isEnabled方法返回true。issmallbutton只能确定工具栏中的按钮的大小有关如何创建按钮扩展的信息,请看看在这个相同的主题上的许多其他问题...

相关问题