Anguilla no expone ningún método (JavaScript servicio web o) para modificar de forma genérica ApplicationData. Deberá proporcionar su propio código de servidor para configurar ApplicationData.
Así que en mi última necesidad de este Escribí un simple servicio web WCF que establece los datos de aplicación:
[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});
}
}
}
}
Wired que en el archivo de configuración de mi modelo:
<?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>
...
Y luego llame a este método web desde mi command._execute
Extensions.Commands.DisableExtension.prototype._execute = function (selection) {
ExtensionsModel.Services.ExtensionsService.SetEnabled(selection.getItems(), false);
};
Excelente ejemplo! Realmente me gusta el enfoque limpio de usar el Modelo; esto es algo que me ha dejado perplejo y ahora está claro. ¡Gracias! – robrtc
Pregunta: ¿Qué otros valores son posibles para el atributo cfg: tipo de servicio? – robrtc
No tengo ni idea y explorar el XSD no me ayuda a arrojar una luz. Pero seré sincero: dudo que esté destinado a funcionar con cualquier cosa que no sean los servicios de WCF. –