2

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"/>

したがって、この2番目の構成フラグメントには、とのMyCommandExtension両方を拡張する同じものがTextUnderlineありTextStrikethroughます。

しかし、今私のJavaScriptでMyCommandExtension、どのコマンドが最初に起動されたかをどのように判断できますか?

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

このシナリオでは、this.properties.nameはあまり役に立たないが完全に正しいものとしてログに記録されます。

「DisabledCommand」

情報はpipelineパラメータのどこかで利用できると思いますが、まだ見つかりません。

どうすれば元のコマンドを見つけることができますMyCommandExtensionか?

4

2 に答える 2

3

簡単な答え:できませんでした。

同様のことをしなければならず、最終的にはさまざまなコマンドを拡張し、「_execute」呼び出しの一部として「current」コマンドを設定する必要がありました(したがって、今度_execute(selection, pipeline, originalCommand)はコマンドを呼び出します。

N

于 2012-09-13T16:41:01.700 に答える
1

元のコマンドが何であるかを知ることはできません。拡張コマンドはそれが拡張するコマンドに固有のものであり、どのコマンドが拡張されているかがわかるという前提があります。さまざまなコマンドで機能する一般的な拡張機能を作成する場合、構成がどうなるかを知ることがいかに役立つかがわかります。

これを機能強化リクエストとして追加できますか?

これを回避するには、ロジックを使用して基本コマンドを作成できます。これは、拡張するコマンドの名前をパラメーターとして受け取ります。次に、拡張するコマンドごとに特定のクラスを作成します。これは、基本コマンドを呼び出して名前を渡すだけです。

別の言い方をすれば、必要なすべてのメソッドを含む BaseExtendingCommand を作成します。次に、BaseExtendingCommand のメソッドを呼び出す TextUnderlineExtendingCommand と TextStrikethroughExtendingCommand の両方を作成します (そして、それぞれ「TextUnderline」と「TextStrikethrough」を引数として渡します)。

于 2012-09-24T10:15:15.143 に答える