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"));
 }
        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>");
        }