2012-09-13 122 views
3

Tridion的用户界面允许您扩展特定的命令,这是修改某些现有命令行为的好方法。Tridion命令扩展如何找到它扩展的命令?

<ext:commands> 
    <ext:command name="TextUnderline" extendingcommand="MyTextUnderline"/> 
    <ext:command name="TextStrikethrough" extendingcommand="MyTextStrikethrough"/> 

我就可以用来修改一些命令的行为的通用指令扩展类工作:

<ext:commands> 
    <ext:command name="TextUnderline" extendingcommand="MyCommandExtension"/> 
    <ext:command name="TextStrikethrough" extendingcommand="MyCommandExtension"/> 
在编辑器的配置文件,这是通过这样的一个专区

所以在这个第二个配置片段中,我们有相同的MyCommandExtension扩展TextUnderlineTextStrikethrough

但是现在在我的MyCommandExtension的JavaScript中,如何确定哪个命令最初被解雇?

MyCommandExtension.prototype.isAvailable = function (selection, pipeline) { 
    ... 
    console.log(this.properties.name); 
    ... 
}; 

在这种情况下的this.properties.name将被记录为低于有用的,但是,彻底纠正:

“DisabledCommand”

我怀疑信息pipeline参数中的某处可用,但尚未找到它。

如何从MyCommandExtension找到原始命令?

回答

3

简答:我不能。

我必须做同样的事情,并最终不得不延长各种命令和设置“当前”命令,我的“_execute”呼叫(所以我现在会叫_execute(selection, pipeline, originalCommand)我的命令。

N个部分

1

你不能找出原始命令是什么。假设是一个延长命令是特定于它的延伸,所以才会知道它延伸的一个。当创建一个不同的命令工作的通用扩展的命令,我可以看看怎样才能知道配置是什么。

也许你可以将此添加为增强请求?

现在要解决这个问题,您可以使用您的逻辑创建一个基本命令 - 将其作为参数扩展的命令的名称。然后为每个要扩展的命令创建特定的类,它们只是调用base命令并传入名称。

换一种说法,创建一个BaseExtendingCommand所有必需的方法 - 然后既是TextUnderlineExtendingCommand和TextStrikethroughExtendingCommand这(分别为,并通过在“TextUnderline”和“TextStrikethrough”,作为参数)呼吁BaseExtendingCommand方法