簡體   English   中英

如何使用Anguilla JavaScript設置Tridion ApplicationData?

[英]How to set Tridion ApplicationData using Anguilla JavaScript?

我有一個帶有窗體和文本字段的Tab GUI擴展。 我想將表單字段的值保存到ApplicatioData。 我在想一個“更新”按鈕來調用安圭拉方法。

有安圭拉方法可以做到這一點嗎? 我在安圭拉(Anguilla)中看不到任何方法。 代碼開頭:

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

Anguilla不會公開任何方法(Web服務或JavaScript)來一般性地修改ApplicationData。 您將必須提供自己的服務器端代碼來設置ApplicationData。

因此,在我對此的最后需求中,我編寫了一個簡單的WCF Web服務來設置應用程序數據:

[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>
  ...

然后從我的command._execute調用此Web方法。

Extensions.Commands.DisableExtension.prototype._execute = function (selection) {
  ExtensionsModel.Services.ExtensionsService.SetEnabled(selection.getItems(), false);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM