0

2つのボタンを上下に配置するためのユーザーコントロールを作成しました

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ViewItemsGroup.ascx.cs" Inherits="SDL.Examples.UI.Controls.ViewItemsGroup" %>
<%@ Import Namespace="Tridion.Web.UI" %> 
<c:RibbonItemsGroup runat="server"  ID="RibbonItemsGroup">   
  <c:RibbonButton runat="server" CommandName="ViewStaging" Title="View in Staging" Label="View In Staging" IsSmallButton="true" ID="ViewStagingBtn" />   
  <c:RibbonButton runat="server" CommandName="ViewLive" Title="View in Live" Label="View in Live" IsSmallButton="true" ID="ViewLiveBtn" /> 
</c:RibbonItemsGroup> 

extension.config では、以下に示すように usercontrol を参照しています。

<ext:extension assignid="ViewItemsGroup" groupid="EditGroup" name="View" pageid="HomePage" insertbefore="PublishGroup">  
  <ext:group>~/Controls/ViewItemsGroup.ascx</ext:group> 
  <ext:dependencies>      
    <cfg:dependency>My.Theme</cfg:dependency>
  </ext:dependencies>  
  <ext:apply>    
    <ext:view name="DashboardView">   
      <ext:control id="DashboardToolbar" /> 
    </ext:view>   
    <ext:view name="PageView">   
      <ext:control id="ItemToolbar" />  
    </ext:view>  
  </ext:apply>
</ext:extension> 
  1. ボタンの詳細 (ID などのユーザー コントロールに記載) を extension.config にも含める必要がありますか? <ext:command> ---- </ext:command> または他の場所に追加する必要がありますか。

  2. 作成されたユーザーコントロールは、extension.config、.js と一緒に配置し、extension.config ファイルで ascx を参照しています。ユーザーコントロールを他のフォルダーに配置する必要がありますか?

4

1 に答える 1

5
  1. extension.config で、ノードの下の ItemsGroup の依存関係を指定しext:dependenciesます。これはcfg:group、JavaScript ファイルを指すコマンドセットを参照する場所を指す必要があります。これらの参照を正しく作成する必要があります。そうしないと、SDL Tridion UI フレームワークがコードの場所を認識できなくなります。このシステムは、私たちが魔法を実行できないのと同じであり、水晶玉も付属していません。

  2. ユーザー コントロールについても同様です。構成、JavaScript、CSS などの他の拡張ファイルと一緒に配置しない場合、UI フレームワークはどのようにそれを見つけることができるでしょうか。配置した場所は、ext:groupノードで指定します。たとえば、拡張機能のルートの~/Controls/MyItemsGroup.ascxサブディレクトリに配置したとします。Controls

構成は次のようになります。依存関係は、resourcesノードの下で指定したグループを指しています。

<ext:ribbontoolbars>
  <ext:add>
    <ext:extension assignid="MyGroup" ...>
      <ext:group>~/Controls/MyItemsGroup.ascx</ext:group>
      <ext:dependencies>
        <cfg:dependency>My.Commands</cfg:dependency>
      </ext:dependencies>
      ...
    </ext:extension>
  </ext:add>
</ext:ribbontoolbars>

次に、コントロールで、その属性でコマンドを直接参照します。これは、メソッド_isAvailable_isEnabledメソッドなどがある JavaScript コマンドです。コントロールには次のようなものがあります。

<c:RibbonItemsGroup runat="server" ID="MyItemsGroup">
  <c:RibbonButton runat="server" 
                  CommandName="MyBtn" 
                  Title="My Title" Label="My Label" 
                  IsSmallButton="true" ID="MyId" />
  ...
 </c:RibbonItemsGroup>

最後に、ボタン コマンドを実装する JavaScript は、その名前空間で CommandName を使用します。

Type.registerNamespace("Extensions");

Extensions.MyBtn = function Extensions$MyBtn() {
  Type.enableInterface(this, "Extensions.MyBtn");
  this.addInterface("Tridion.Cme.Command", ["MyBtn"]);
};

Extensions.MyBtn.prototype._isAvailable = function MyBtn$_isAvailable(selection) {
  return true;
};

Extensions.MyBtn.prototype._isEnabled = function MyBtn$_isEnabled(selection) {
  return this._isAvailable(selection);
};

Extensions.MyBtn.prototype._execute = function MyBtn$_execute(selection) {
  // this is where your code comes
};
于 2012-08-12T10:37:52.830 に答える