using Disco.Services.Web.Bundles; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace Disco.Services.Plugins.Features.UIExtension.Results { public class PluginResourceScriptResult : UIExtensionResult { private string _resource; private HtmlString _resourceUrl; private bool _placeInPageHead; public PluginResourceScriptResult(PluginFeatureManifest Source, string Resource, bool PlaceInPageHead) : base(Source) { this._resource = Resource; this._resourceUrl = new HtmlString(Source.PluginManifest.WebResourceUrl(Resource)); this._placeInPageHead = PlaceInPageHead; if (this._placeInPageHead) { var deferredBundles = HttpContext.Current.Items[Bundle.UIExtensionScriptsKey] as List; if (deferredBundles == null) { deferredBundles = new List(); HttpContext.Current.Items[Bundle.UIExtensionScriptsKey] = deferredBundles; } if (!deferredBundles.Contains(this._resourceUrl)) deferredBundles.Add(this._resourceUrl); } } public override void ExecuteResult(System.Web.Mvc.WebViewPage page) { if (!this._placeInPageHead) { page.WriteLiteral(""); } } } }