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

时间:2012-08-11 07:14:03

标签: tridion tridion-2011

我创建了带有两个带状项的usercontrol,但它们出现在禁用模式下。

我尝试通过在我的js文件中为isAvailable和isEnabled函数发出警告进行检查。

 
Extensions.DynamicControls.prototype.isAvailable = 
            function DynamicControls$isAvailable(selection) 
{
  alert('Inside DynamicControls isAvailable');
  return true;
}   

在这种情况下,我没有在isAvailable函数中收到任何警报。

Extensions.DynamicControls.prototype.isEnabled = 
            function DynamicControls$isEnabled(selection) 
{
  alert('Inside DynamicControls isEnabled');
  return true;
}  

我能够在isEnabled函数中获取警报。

请让我知道我需要启用它们。

除此之外,我已经看过使用firebug的页面源 - 选择这两个创建的按钮usercontrol按钮,我发现 为什么默认应用该类?如果我尝试删除它,则启用按钮。

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

2 个答案:

答案 0 :(得分:8)

正如我answer to your previous question所示,这些方法应该被称为_isAvailable_isEnabled,前面有一个下划线,这就是我猜你为什么没有被解雇了。

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

Extensions.DynamicControls.prototype._isAvailable = 
                      function DynamicControls$_isAvailable(selection, pipeline) 
{
    alert('Inside DynamicControls isAvailable');
    if (pipeline) {
        pipeline.stop = false;
    }
    return true;
}   
Extensions.DynamicControls.prototype._isEnabled = 
                      function DynamicControls$_isEnabled(selection, pipeline) 
{
    alert('Inside DynamicControls isEnabled');
    if (pipeline) {
        pipeline.stop = false;
    }
    return true;
}

顺便说一句,查看你的命名空间Extensions.DynamicControls我想知道你是否正在制作正确的引用,Javascript不适合你的ItemsGroup,它应该是针对特定按钮,每个命令(或按钮,如果你将拥有自己的JavaScript,它启用它并具有_execute方法。有关详细信息,请参阅我的answer to your other question

CSS仅用于按钮的布局,这实际上不会启用或禁用它们。虽然如果将禁用的图像分配给启用状态,则外观可能是欺骗性的。

按钮的CSS看起来像:

/* large ribbon button image */
.tridion .ribbontoolbar .button.MyBtn .image, 
.tridion .ribbontoolbar .button.MyBtn.ribbonitem .image
{
    background-image: url({ThemePath}Images/my-btn-img.32x32.png);
}
.tridion .ribbontoolbar .button.MyBtn.ribbonitem.disabled .image
{
    background-image: url({ThemePath}Images/my-btn-img.32x32.gray.png);
}
/* small ribbon button image */
.tridion .contextmenu .item.MyBtn .image, 
.tridion .ribbontoolbar.minimized .button.MyBtn .image, 
.tridion .ribbontoolbar.minimized .button.MyBtn.ribbonitem .image
{
    background-image: url({ThemePath}Images/my-btn-img.16x16.png);
}
.tridion .ribbontoolbar.minimized .button.MyBtn.ribbonitem.disabled .image
{
    background-image: url({ThemePath}Images/my-btn-img.16x16.gray.png);
}

答案 1 :(得分:0)

你只需要返回true,你已经在做了。当然,您的命令需要通过配置与按钮相关联。

isAvailable函数仅在某些选项卡(如Create)上的工具栏按钮上调用。他们中的大多数人认为你的按钮应该始终可用,但可以被禁用(所以他们只调用isEnabled)。

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