如何在tridion中启用通过usercontrol创建的按钮

如何在tridion中启用通过usercontrol创建的按钮,tridion,tridion-2011,Tridion,Tridion 2011,我用两个Ribbonitem创建了usercontrol,但它们以禁用模式出现 我试图通过在js文件中放置警报来检查isAvailable和ISenable函数 Extensions.DynamicControls.prototype.isAvailable= 函数DynamicControls$isAvailable(可选) { 警报(“内部动态控件可用”); 返回true; } 在这种情况下,我不会在isAvailable函数中获得任何警报 Extensions.DynamicCon

我用两个Ribbonitem创建了usercontrol,但它们以禁用模式出现

我试图通过在js文件中放置警报来检查isAvailable和ISenable函数

Extensions.DynamicControls.prototype.isAvailable=
函数DynamicControls$isAvailable(可选)
{
警报(“内部动态控件可用”);
返回true;
}   
在这种情况下,我不会在isAvailable函数中获得任何警报

Extensions.DynamicControls.prototype.isEnabled=
函数DynamicControls$isEnabled(选择)
{
警报(“内部动态控件已启用”);
返回true;
}  
我能够在isEnabled函数中获取警报

请让我知道我需要什么来启用它们

除此之外,我还看到了使用firebug的页面源代码——在选择这两个创建的按钮usercontrol按钮时,我发现 为什么默认应用该类?如果我尝试删除它,按钮将被启用

到目前为止,这些仅作为功能区中的标签可见。要使这些按钮看起来像其他按钮,是否还需要任何css? 请建议。

如我的中所述,这些方法应该被调用为
\u isAvailable
\u isavailed
,前面有一个下划线,这就是我猜测你的方法为什么没有被解雇的原因

因此,请尝试在JavaScript中使用以下代码:

Extensions.DynamicControls.prototype.\u可用=
函数DynamicControls$\可用(选择,管道)
{
警报(“内部动态控件可用”);
if(管道){
pipeline.stop=false;
}
返回true;
}   
Extensions.DynamicControl.prototype.\u isEnabled=
函数DynamicControls$\已启用(选择,管道)
{
警报(“内部动态控件已启用”);
if(管道){
pipeline.stop=false;
}
返回true;
}
顺便说一句,看看你的名称空间
扩展。DynamicControls
我想知道你是否进行了正确的引用,Javascript不是针对你的ItemsGroup的,它应该是针对特定的按钮,每个命令(或者按钮,如果你愿意的话)将有自己的JavaScript代码位来启用它,并有一个
\u execute
方法。有关这方面的更多详细信息,请参阅我的

CSS只是用于按钮的布局,实际上不会启用或禁用它们。虽然如果将禁用的映像指定给启用状态,那么外观可能是欺骗

按钮的CSS看起来像:

/*大功能区按钮图像*/
.tridion.ribbontoolbar.button.MyBtn.image,
.tridion.ribbontoolbar.button.MyBtn.ribbontim.image
{
背景图片:url({ThemePath}Images/my btn img.32x32.png);
}
.tridion.ribbontoolbar.button.MyBtn.ribbontim.disabled.image
{
背景图像:url({ThemePath}Images/my btn img.32x32.gray.png);
}
/*小功能区按钮图像*/
.tridion.contextmenu.item.MyBtn.image,
.tridion.ribbontoolbar.minimized.button.MyBtn.image,
.tridion.ribbontoolbar.minimized.button.MyBtn.ribbontim.image
{
背景图片:url({ThemePath}Images/my btn img.16x16.png);
}
.tridion.ribbontoolbar.minimized.button.MyBtn.ribbonitem.disabled.image
{
背景图像:url({ThemePath}Images/my btn img.16x16.gray.png);
}

您只需要返回true,这是您已经在执行的操作。当然,您的命令需要通过配置与按钮相关联

isAvailable函数仅对某些选项卡(如Create)上的工具栏按钮调用。它们中的大多数都假设按钮应该始终可用,但可以禁用(因此它们只调用isEnabled)


但是,对于上下文菜单选项,每次右键单击时都会调用isAvailable。理想情况下,您可以对上下文菜单选项使用与工具栏相同的命令。

我真的不明白您对Firebug的看法。只需检查一个看起来与您想要的类似的现有按钮(在您的浏览器HTML检查器工具中),并检查该按钮应用了什么样式。然后,您甚至可以在CSS文件中搜索这些类,并找出它们是如何应用的,以及在同一上下文中还存在什么您几乎看不到工具栏按钮根据上下文显示/消失。两个功能区按钮可能重复需要两组功能。巴特建议在他的报告中查看现有代码。具体查看
%TRIDION\u HOME%\web\WebUI\Editors\CME\Controls\DashboardToolbar.ascx
%TRIDION\u HOME%\web\WebUI\Editors\CME\Commands\clipboard.js
中的剪贴板设置,以及
%TRIDION\u HOME%\web\WebUI\Editors\CME\Configuration
。此外,
上Frank的点+1也已启用。与剪贴板相关的命令在仪表板中实现
\u可用
,但不实现
\u可启用
。如有疑问,请遵循Content Manager Explorer的方法。一些创造性的懒惰会得到与用户期望相匹配(或至少不会破坏)的用户界面的回报。它们必须以下划线开头并不完全正确。请看我的回答: