Skip to content

Instantly share code, notes, and snippets.

@leekelleher
Created October 10, 2012 13:23
Show Gist options
  • Save leekelleher/3865621 to your computer and use it in GitHub Desktop.
Save leekelleher/3865621 to your computer and use it in GitHub Desktop.
Example of hooking into an Umbraco back-office page using UmbracoClientDependencyLoader.TryCreate
using System;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using ClientDependency.Core;
using umbraco.BusinessLogic;
using umbraco.IO;
using umbraco.presentation.masterpages;
using umbraco.uicontrols;
namespace Our.Umbraco.Whatever
{
public class Application : ApplicationBase
{
public Application()
{
umbracoPage.Init += new MasterPageLoadHandler(this.RegisterResource);
}
protected void RegisterResource(object sender, EventArgs e)
{
// make sure the page is an umbracoPage; otherwise exit
var page = sender as umbracoPage;
if (page == null)
return;
// specify the pages that the resource is allowed to be used on
var allowedPages = new[] { "editcontent.aspx", "editmedia.aspx", "editmember.aspx" };
var path = page.Page.Request.Path.ToLower();
// check thath the path is allowed
if (!allowedPages.Any(path.Contains))
return;
// make sure there is a body container; otherwise exit
var container = page.FindControl("body") as ContentPlaceHolder;
if (container == null)
return;
// attempt to find/create the ClientDependency loader for the page
bool created;
var loader = UmbracoClientDependencyLoader.TryCreate(page, out created);
if (loader != null)
{
// set the custom path for your plugin ... and load the resources
loader.AddPath("MyPlugin", IOHelper.ResolveUrl(string.Concat(SystemDirectories.Umbraco, "/plugins/whatever")));
loader.RegisterDependency(998, "style.css", "MyPlugin", ClientDependencyType.Css);
loader.RegisterDependency(999, "script.js", "MyPlugin", ClientDependencyType.Javascript);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment