2012-09-13 120 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方法