2012-05-29 44 views
5

我有一個表格和文本字段的Tab GUI擴展。我想將表單字段的值保存到ApplicatioData。我正在考慮一個叫做安圭拉方法的「更新」按鈕。如何使用Anguilla JavaScript設置Tridion ApplicationData?

是否有安圭拉的方法來做到這一點?我在安圭拉看不到任何方法。開始代碼:

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

回答

6

安圭拉不公開任何(webservice或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

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

優秀的例子!我真的很喜歡使用模型的乾淨方法 - 這讓我感到困惑,現在很清楚。謝謝! – robrtc

+0

問題:cfg:service type屬性可能有其他值嗎? – robrtc

+0

我不知道XSD是否幫助我發現了燈光。但我會誠實的說:我懷疑它是否適用於除WCF服務之外的其他任何東西。 –

相關問題