5

フォームとテキストフィールドを備えたタブGUI拡張機能があります。フォームフィールドの値をApplicatioDataに保存したいと思います。私はAnguillaメソッドを呼び出す「更新」ボタンを考えていました。

これを行うためのアンギラの方法はありますか?私はこれのためにアンギラでどんな方法も見ません。コードの開始:

var c = $display.getItem();
var uri = c.getId();
4

1 に答える 1

6

Anguillaは、ApplicationDataを一般的に変更するための(WebサービスまたはJavaScript)メソッドを公開していません。ApplicationDataを設定するには、独自のサーバー側コードを提供する必要があります。

したがって、これが最後に必要になったときに、アプリケーションデータを設定する単純なWCFWebサービスを作成しました。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceContract(Namespace= "ExtensionsModel.Services")]
public class ExtensionsService
{
    [OperationContract]
    [WebInvoke(Method = "POST",
                RequestFormat = WebMessageFormat.Json,
                ResponseFormat = WebMessageFormat.Json)]
    public void SetEnabled(string[] itemIDs, bool enabled)
    {
        using (var client = TridionCoreService.GetSessionAwareClient())
        {
            var appdata = new ApplicationData();
            appdata.ApplicationId = "ext:IsEnabled";
            appdata.Data = new ASCIIEncoding().GetBytes(enabled ? bool.TrueString : bool.FalseString);
            foreach (var itemID in itemIDs)
            {
                client.SaveApplicationData(itemID, new[] {appdata});
            }
        }
    }
}

私のモデルの構成ファイルにそれを配線しました:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration> <!-- namespaces removed for readability -->
  <resources cache="true">
    <cfg:filters/>
    <cfg:groups>
      <cfg:group name="Extensions.Models">
        <cfg:domainmodel name="Extensions.Models">
          <cfg:services>
            <cfg:service type="wcf">Services/ExtensionsService.svc</cfg:service>
          </cfg:services>
        </cfg:domainmodel>
      </cfg:group>
    </cfg:groups>
  ...

そして、このWebメソッドを私から呼び出しますcommand._execute

Extensions.Commands.DisableExtension.prototype._execute = function (selection) {
  ExtensionsModel.Services.ExtensionsService.SetEnabled(selection.getItems(), false);
};
于 2012-05-29T14:37:57.973 に答える