0

2つのリボンアイテムを使用してユーザーコントロールを作成しましたが、それらは無効モードで表示されていました。

isAvailable関数とisEnabled関数のアラートをjsファイルに配置して確認しようとしました。

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関数でアラートを取得できます。

それらを有効にするために必要なものを教えてください。

これとは別に、firebugを使用したページソースを見てきました-これらの2つの作成されたボタンのユーザーコントロールボタンを選択すると、なぜそのクラスがデフォルトで適用されるのですか?削除してみると、ボタンが有効になっています。

現在のところ、これらはリボンのラベルとして表示されています。これらを他のボタンのように見せるためにCSSも必要ですか?提案してください。

4

2 に答える 2

8

前の質問に対する私の回答に示されているように、メソッドは呼び出され、その前にアンダースコアが付いているはず_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用ではなく、特定のボタン用であると想定されています。各コマンド(または必要に応じてボタン)には独自のビットがあります。それを可能にし、_executeメソッドを持っているJavaScriptの。詳細については、他の質問に対する私の回答を参照してください。

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);
}
于 2012-08-12T10:18:47.450 に答える
0

すでに行っているtrueを返す必要があります。そしてもちろん、コマンドは構成を通じてボタンに関連付ける必要があります。

isAvailable関数は、作成などの特定のタブのツールバーボタンに対してのみ呼び出されます。それらのほとんどは、ボタンが常に使用可能である必要があると想定していますが、無効にすることもできます(したがって、isEnabledのみを呼び出します)。

ただし、コンテキストメニューオプションの場合、右クリックするたびにisAvailableが呼び出されます。理想的には、コンテキストメニューオプションにツールバーと同じコマンドを使用します。

于 2012-08-17T11:28:00.223 に答える