public void OnResultExecuting(ResultExecutingContext filterContext) { // Only need to include scripts on normal view results and not in admin // TODO: We could set an option in the context if we want the possibility of admin-side delta if (!(filterContext.Result is ViewResult) || Orchard.UI.Admin.AdminFilter.IsApplied(filterContext.RequestContext)) return; var context = new DeltaInstanceConfiguration(); foreach (var p in _deltaInstanceProviders) { p.Configure(context); } dynamic stuff = new Stuff(); var defs = context.Instances.Select(i => { foreach (var req in i.Requires) { var settings = _resourceManager.Require(req.ResourceType, req.ResourceName); if (req.Delegate != null) req.Delegate(settings); } return new { Namespace = i.Namespace, Type = i.TypeName, Properties = i.Properties }; }); stuff.Instances = defs; string json = stuff.Json(); string jscript = "Delta.Ready(function(){Delta.Configure("+json+");});"; _resourceManager.RegisterFootScript("<script type=\"text/javascript\" >"+jscript+"</script>"); }
public DeltaInstanceNamespaceConfiguration(string name, string requireScriptName, DeltaInstanceConfiguration deltaInstanceConfiguration) { // TODO: Complete member initialization this.ScopedNamespace = name; this.requireScriptName = requireScriptName; this.config = deltaInstanceConfiguration; }
public void Configure(DeltaInstanceConfiguration context) { // TODO: What would be neat is a way to switch delta features on or off dynamically without having to enable/disable features. // This can already happen to a certain extent due to permissions. context.Instances.Add(new DeltaInstanceDescriptor() { Namespace = "Science.Impulses", TypeName = "ImpulseHijacker" }.Require("Science_Impulses")); }