0

我用两个功能区项创建了用户控件,但它们出现在禁用模式下。

我试图通过在我的 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 的页面源——在选择这两个创建的按钮用户控件按钮时,我发现为什么默认应用该类?如果我尝试删除它,则按钮已启用。

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

4

2 回答 2

8

正如我对您上一个问题的回答中所指出的那样,这些方法应该被调用_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方法。有关更多详细信息,请参阅我对您其他问题的回答

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);
}
于 2012-08-12T10:18:47.450 回答
0

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

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

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

于 2012-08-17T11:28:00.223 回答