Files
Disco/Disco.Services/Plugins/Features/UIExtension/Results/PluginResourceScriptResult.cs
T
Gary Sharp 9784c5d282 Plugin Base WebViewPage #22 & Authorization #24
Plugins have a base WebViewPage to inherit, this offers integration with
various Disco services. Plugins can also add Authorization attributes to
their Web Handlers and Controller Methods.
2013-10-14 20:13:00 +11:00

48 lines
1.6 KiB
C#

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<HtmlString>;
if (deferredBundles == null)
{
deferredBundles = new List<HtmlString>();
HttpContext.Current.Items[Bundle.UIExtensionScriptsKey] = deferredBundles;
}
if (!deferredBundles.Contains(this._resourceUrl))
deferredBundles.Add(this._resourceUrl);
}
}
public override void ExecuteResult<T>(System.Web.Mvc.WebViewPage<T> page)
{
if (!this._placeInPageHead)
{
page.WriteLiteral("<script src=\"");
page.WriteLiteral(_resourceUrl);
page.WriteLiteral("\" type=\"text/javascript\"></script>");
}
}
}
}