0

ボタンを作成しました。これは、コンポーネントを開いたときにのみツールバーに表示されます。同じ設定とjsファイルを書きましたが、問題はこのボタンが無効になっていることです。ボタンはありますが、有効になっていません。どうすれば有効にできますか。

編集済み

Type.registerNamespace("Extensions.Commands");

Extensions.Commands.Button = function Extensions.Commands$Button(element) {
Type.enableInterface(this, "Extensions.Commands.Button");
this.addInterface("Tridion.Cme.Command", [element]);
this.addInterface("Tridion.Cme.FaCommand", [element]);
alert('inside the pageload');
}; 

Extensions.Commands.Button.prototype._isAvailable = function Button$_isAvailable(target) {
alert('inside the available mode');
if (target.editor.getDisposed()) {
    return false;
}

return true;
};

Extensions.Commands.Button.prototype._isEnabled = function Button$_isEnabled(target) {
alert('inside the enable mode');
if (!Tridion.OO.implementsInterface(target.editor, "Tridion.FormatArea") ||     target.editor.getDisposed()) {
alert('indise if loop');
    return false;
}

return true;
};

私の設定ファイルは次のようなものです:

<resources cache="true">
<cfg:filters/>
<cfg:groups>
  <cfg:group name="Extensions.Commands" >
    <cfg:fileset>          
      <cfg:file type="script">/Popups/PopupReference.js</cfg:file>

    </cfg:fileset>

    <cfg:dependencies>
      <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
    </cfg:dependencies>
  </cfg:group>

   <cfg:group name="Extensions.Commands.Button.Commands"  merger="Tridion.Web.UI.Core.Configuration.Resources.CommandGroupProcessor"   include="byreference" merge="release">
    <cfg:fileset>
      <cfg:file type="script">/Commands/Button.js</cfg:file>

      <cfg:file type="reference">Extensions.Button.CommandSet</cfg:file>
    </cfg:fileset>

    <cfg:dependencies>
      <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
      <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
    </cfg:dependencies>
  </cfg:group> 

  </cfg:groups>
 </resources>
 <definitionfiles/>
 <extensions>
   <ext:editorextensions>
  <ext:editorextension target="CME">
    <ext:editurls/>
    <ext:listdefinitions/>
    <ext:taskbars/>
    <ext:commands/>
    <ext:commandextensions/>
    <ext:contextmenus/>
    <ext:lists/>
    <ext:tabpages/>
    <ext:toolbars/>
    <ext:ribbontoolbars>
      <ext:add>
        <!-- RIBBON TAB -->
 <!-- GROUPS -->
        <ext:extension assignid="ExtensionGroup" pageid="FormatPage" name="ExtensionsName">
          <ext:group/>
          <ext:apply>
            <ext:view name="ComponentView">
              <ext:control id="ItemToolbar"/>
            </ext:view>
          </ext:apply>
        </ext:extension>

        <!-- BUTTONS -->
        <ext:extension pageid="FormatPage" groupid="ExtensionGroup" name="Button" assignid="Button">
          <ext:command>Button</ext:command>
          <ext:title>Button</ext:title>
          <ext:dependencies>
            <cfg:dependency>Extensions.Commands.Button</cfg:dependency>
          </ext:dependencies>
          <ext:apply>
            <ext:view name="ComponentView">
              <ext:control id="ItemToolbar"/>
            </ext:view>
          </ext:apply>
        </ext:extension>
      </ext:add>
    </ext:ribbontoolbars>
  </ext:editorextension>
  </ext:editorextensions>
  <ext:dataextenders/>
</extensions>            
<commands>
 <cfg:commandset id="Extensions.Commands.Button.CommandSet">
  <cfg:command name="Button" implementation="Extensions.Commands.Button"/>
  <cfg:dependencies>
<cfg:dependency>Extensions.Commands.Button</cfg:dependency>
    <cfg:dependency />
  </cfg:dependencies>
 </cfg:commandset>
 </commands>
 <contextmenus/>
 <localization/>
 <settings>
<defaultpage/>
<navigatorurl/>
<editurls/>
<listdefinitions/>
<itemicons/>
<theme>
  <path>Themes</path>
</theme>
<customconfiguration/>
 </settings>

4

2 に答える 2

4

リソース グループ "Extensions.Commands.Button.Commands" は、構成ファイルで参照されることはありません。ボタン拡張グループに加えて、構成ファイルに存在しない「Extensions.Commands.Button」グループに依存しています。したがって、構成ファイルをクリーンアップし、不要な依存関係を削除することをお勧めします。

PS "Tridion.Cme.Command" と "Tridion.Cme.FaCommand" の両方から継承する必要はありません。最後のものが既に最初のものを継承しているためです。

于 2012-08-03T12:58:54.763 に答える
2

Frank が言うように、_IsEnabled をチェックします。このメソッドが true を返すと、SDL Tridion GUI 内でボタンが有効になります。

これを次のようにデバッグします (注: 私は JS のデバッグに関しては少し古いやり方です :))

RTFExtensions.Commands.Button.prototype._isEnabled = function Customtags$_isEnabled(target) {
if (!Tridion.OO.implementsInterface(target.editor, "Tridion.FormatArea") ||  target.editor.getDisposed()) {
    return false;
}

次の方法で:

  • Firebug で JS エラーを確認してください
  • _isEnabled にアラートを入れて、入力されているかどうかを確認します
  • IFステートメントにアラートを入れて、これが常に入力されているかどうかを確認します

あなたがそれを機能させたら、何がうまくいかないのか知りたいのですが、おそらくここで解決策を提供できますか?

于 2012-08-02T19:50:24.763 に答える