Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tridion 如何在组件窗口上启用按钮_Tridion_Tridion 2011 - Fatal编程技术网

Tridion 如何在组件窗口上启用按钮

Tridion 如何在组件窗口上启用按钮,tridion,tridion-2011,Tridion,Tridion 2011,我创建了一个按钮,只有在打开组件时,该按钮才会在工具栏中显示。我已经编写了相同的config和js文件,但问题是这个按钮显示为禁用。按钮存在,但未启用。 请帮助我,我如何使其启用 已编辑 Type.registerNamespace(“Extensions.Commands”); Extensions.Commands.Button=函数Extensions.Commands$按钮(元素){ Type.enableInterface(这个“Extensions.Commands.Button”)

我创建了一个按钮,只有在打开组件时,该按钮才会在工具栏中显示。我已经编写了相同的config和js文件,但问题是这个按钮显示为禁用。按钮存在,但未启用。 请帮助我,我如何使其启用

已编辑

Type.registerNamespace(“Extensions.Commands”);
Extensions.Commands.Button=函数Extensions.Commands$按钮(元素){
Type.enableInterface(这个“Extensions.Commands.Button”);
这个.addInterface(“Tridion.Cme.Command”,[element]);
这个.addInterface(“Tridion.Cme.FaCommand”,[element]);
警报(“页面加载内部”);
}; 
Extensions.Commands.Button.prototype.\u isAvailable=功能按钮$\u isAvailable(目标){
警报(“在可用模式内”);
if(target.editor.getDisposed()){
返回false;
}
返回true;
};
Extensions.Commands.Button.prototype.\u isEnabled=功能按钮$\u isEnabled(目标){
警报(“在启用模式内”);
if(!Tridion.OO.implementsInterface(target.editor,“Tridion.FormatArea”)| | target.editor.getDisposed()){
警报(“不适如果循环”);
返回false;
}
返回true;
};
我的配置文件如下所示:


/弹出窗口/PopupReference.js
Tridion.Web.UI.Editors.CME
Tridion.Web.UI.Editors.CME.commands
/Commands/Button.js
Extensions.Button.CommandSet
Tridion.Web.UI.Editors.CME
Tridion.Web.UI.Editors.CME.commands
按钮
按钮
Extensions.Commands.Button
Extensions.Commands.Button
主题

正如弗兰克所说,我会检查是否有问题。当此方法返回true时,按钮将在SDL Tridion GUI中启用

我将通过以下方式进行调试(注意:我在JS调试方面有点老了:)

以以下方式:

  • 检查firebug中的任何JS错误
  • 在“启用”框中输入警报,查看是否正在输入
  • 在IF语句中添加一个警报,以查看是否始终输入此消息

一旦你让它工作起来,我很想知道出了什么问题,也许你可以在这里提供解决方案?

正如弗兰克所说的,我会检查“已启用”。当此方法返回true时,按钮将在SDL Tridion GUI中启用

我将通过以下方式进行调试(注意:我在JS调试方面有点老了:)

以以下方式:

  • 检查firebug中的任何JS错误
  • 在“启用”框中输入警报,查看是否正在输入
  • 在IF语句中添加一个警报,以查看是否始终输入此消息
一旦你让它工作起来,我想知道出了什么问题,也许你可以在这里提供解决方案?

资源组“Extensions.Commands.Button.Commands”从未在配置文件中引用过。 除此之外,在按钮扩展组中,您还依赖于配置文件中不存在的“Extensions.Commands.Button”组。 所以建议清理配置文件,删除不需要的依赖项等

另外,不需要同时从“Tridion.Cme.Command”和“Tridion.Cme.FaCommand”继承,因为最后一个已经继承了第一个。配置文件中从未引用资源组“Extensions.Commands.Button.Commands”。 除此之外,在按钮扩展组中,您还依赖于配置文件中不存在的“Extensions.Commands.Button”组。 所以建议清理配置文件,删除不需要的依赖项等


另外,不需要同时从“Tridion.Cme.Command”和“Tridion.Cme.FaCommand”继承,因为最后一个已继承第一个。

是否调用了您的“isEnabled”方法?如果没有,那么您注册依赖项的方式可能有问题,您应该对照一个工作示例仔细检查这些问题。@Frank van Puffelen:刚才我发现我的Js没有被触发:(不知道为什么。我也检查了依赖项。设置得很好。无法找到错误的位置。)(正在调用您的_isEnabled方法吗?如果没有,您注册依赖项的方式可能有问题,您应该根据一个工作示例仔细检查这些方法。@Frank van Puffelen:刚才我发现我的Js没有被触发。:(不知道为什么。我也检查了依赖项。设置得很好。无法找到错误的位置。)(我按照你的步骤,我知道我的js没有加载。我按照上面的步骤编辑了我的js。我按照你的步骤,我知道我的js没有加载。我按照上面的步骤编辑了我的js。谢谢你boris,我尝试了清理配置。现在可以工作了:)如果您对答案感到满意,请将其标记为正确答案,以便其他社区用户可以从中受益。谢谢boris,我尝试清理配置。它现在正在工作:)如果您对答案感到满意,请将其标记为正确答案,以便其他社区用户可以从中受益。
RTFExtensions.Commands.Button.prototype._isEnabled = function Customtags$_isEnabled(target) {
if (!Tridion.OO.implementsInterface(target.editor, "Tridion.FormatArea") ||  target.editor.getDisposed()) {
    return false;
}