2012-08-11 56 views
0

我已经用两个带状条创建了usercontrol,但它们出现在禁用模式下。如何启用在tridion中通过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函数中获得警报。

请让我知道我需要什么使他们启用。

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

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

+0

我真的不明白你在说什么Firebug。只需检查一个与您想要的相似的现有按钮(在您的浏览器HTML检查器工具中),并检查该按钮应用了哪些样式。然后,您甚至可以在CSS文件中搜索这些类并找出它们如何应用以及在同一个上下文中还存在什么。 – 2012-08-11 11:52:10

+1

我不认为有一个JavaScript isEnabled调用工具栏按钮,因为(不同于菜单项),您很难看到基于上下文的工具栏按钮显示/消失。 – 2012-08-11 11:53:18

+0

可能重复的[如何启用使用自定义控件创建的按钮](http://stackoverflow.com/questions/11897324/how-to-enable-the-button-which-is-created-using-custom-控制) – 2012-08-12 14:01:26

回答

0

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

isAvailable函数仅针对特定选项卡(如Create)上的工具栏按钮调用。他们大多假设你的按钮应该始终可用,但可以禁用(所以他们只能调用isEnabled)。

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

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

他们不得不从下划线开始。在这里看到我的答案:http://stackoverflow.com/questions/11936363/whats-the-difference-between-isenabled-and-isenabled-in-anguilla#11938414 – 2012-08-17 11:25:10