Files
LeafWeb/Web/Backload/Bundles/BackloadBundles.cs
T

328 lines
13 KiB
C#

using Backload.Configuration;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.Optimization;
namespace Backload.Bundles
{
/// <summary>
/// Registers bundles for client side scripts and styles. This is an optional feature.
/// </summary>
public class BackloadBundles
{
/// <summary>
/// Registers bundles for the client side scripts and styles
/// </summary>
/// <param name="bundles">A BundleCollection instance</param>
/// <remarks>This is optional. The Backload component does not need bundeling internally.</remarks>
public static void RegisterBundles(BundleCollection bundles)
{
// Default path to the client side files
string vendor = "blueimp";
string plugin = "fileupload";
string jsroot = "~/Backload/Client";
string cssroot = "~/Backload/Client";
string jsvendor = string.Empty;
string cssvendor = string.Empty;
string jsplugin = string.Empty;
string cssplugin = string.Empty;
// Note: Comment this section in, if you use backload with a different (not default) path to the client files
#region Get the path to the client side scripts and styles from the configuration file
try
{
Backload.Configuration.Bundles bundle = new Backload.Configuration.Bundles();
jsroot = Backload.Configuration.Bundles.ClientScripts;
cssroot = Backload.Configuration.Bundles.ClientStyles;
}
catch
{
}
#endregion
#region Bundles for the jQuery File Upload Plugin
// Bundle registration starts here
jsvendor = string.Format("{0}/{1}/", jsroot, vendor);
jsplugin = string.Format("{0}{1}/js/", jsvendor, plugin);
cssvendor = string.Format("{0}/{1}/", cssroot, vendor);
cssplugin = string.Format("{0}{1}/css/", cssvendor, plugin);
#region jQuery File Upload Plugin: Basic theme (Bootstrap)
string[] scripts = new string[] {
jsplugin + "vendor/jquery.ui.widget.js",
jsplugin + "jquery.iframe-transport.js",
jsplugin + "jquery.fileupload.js",
jsplugin + "themes/jquery.fileupload-themes.js" };
string[] styles = new string[] {
cssplugin + "jquery.fileupload.css" };
bundles.Add(new ScriptBundle("~/backload/blueimp/bootstrap/Basic").Include(scripts));
bundles.Add(new StyleBundle("~/backload/blueimp/bootstrap/Basic/css").Include(styles));
// The following virtual path is for backward compatibility only and can be removed
bundles.Add(new ScriptBundle("~/bundles/fileUpload/bootstrap/Basic/js").Include(scripts));
bundles.Add(new StyleBundle("~/bundles/fileUpload/bootstrap/Basic/css").Include(styles));
#endregion
#region jQuery File Upload Plugin: Basic Plus (Bootstrap)
scripts = new string[] {
jsvendor + "loadimage/js/load-image.all.min.js",
jsvendor + "blob/js/canvas-to-blob.min.js",
jsplugin + "vendor/jquery.ui.widget.js",
jsplugin + "jquery.iframe-transport.js",
jsplugin + "jquery.fileupload.js",
jsplugin + "jquery.fileupload-process.js",
jsplugin + "jquery.fileupload-image.js",
jsplugin + "jquery.fileupload-audio.js",
jsplugin + "jquery.fileupload-video.js",
jsplugin + "jquery.fileupload-validate.js",
jsplugin + "themes/jquery.fileupload-themes.js" };
styles = new string[] {
cssplugin + "jquery.fileupload.css" };
bundles.Add(new ScriptBundle("~/backload/blueimp/bootstrap/BasicPlus").Include(scripts));
bundles.Add(new StyleBundle("~/backload/blueimp/bootstrap/BasicPlus/css").Include(styles));
// The following virtual path is for backward compatibility only and can be removed
bundles.Add(new ScriptBundle("~/bundles/fileUpload/bootstrap/BasicPlus/js").Include(scripts));
bundles.Add(new StyleBundle("~/bundles/fileUpload/bootstrap/BasicPlus/css").Include(styles));
#endregion
#region jQuery File Upload Plugin: Basic Plus UI (Bootstrap)
scripts = new string[] {
jsvendor + "templates/js/tmpl.min.js",
jsvendor + "loadimage/js/load-image.all.min.js",
jsvendor + "blob/js/canvas-to-blob.min.js",
jsvendor + "gallery/js/jquery.blueimp-gallery.min.js",
jsplugin + "vendor/jquery.ui.widget.js",
jsplugin + "jquery.iframe-transport.js",
jsplugin + "jquery.fileupload.js",
jsplugin + "jquery.fileupload-process.js",
jsplugin + "jquery.fileupload-image.js",
jsplugin + "jquery.fileupload-audio.js",
jsplugin + "jquery.fileupload-video.js",
jsplugin + "jquery.fileupload-validate.js",
jsplugin + "jquery.fileupload-ui.js",
jsplugin + "themes/jquery.fileupload-themes.js" };
styles = new string[] {
cssvendor + "gallery/css/blueimp-gallery.min.css",
cssplugin + "jquery.fileupload.css",
cssplugin + "jquery.fileupload-ui.css" };
bundles.Add(new ScriptBundle("~/backload/blueimp/bootstrap/BasicPlusUI").Include(scripts));
bundles.Add(new StyleBundle("~/backload/blueimp/bootstrap/BasicPlusUI/css").Include(styles));
// The following virtual path is for backward compatibility only and can be removed
bundles.Add(new ScriptBundle("~/bundles/fileUpload/bootstrap/BasicPlusUI/js").Include(scripts));
bundles.Add(new StyleBundle("~/bundles/fileUpload/bootstrap/BasicPlusUI/css").Include(styles));
#endregion
#region jQuery File Upload Plugin: AngularJS theme
scripts = new string[] {
jsvendor + "loadimage/js/load-image.all.min.js",
jsvendor + "blob/js/canvas-to-blob.min.js",
jsvendor + "gallery/js/jquery.blueimp-gallery.min.js",
jsplugin + "vendor/jquery.ui.widget.js",
jsplugin + "jquery.iframe-transport.js",
jsplugin + "jquery.fileupload.js",
jsplugin + "jquery.fileupload-process.js",
jsplugin + "jquery.fileupload-image.js",
jsplugin + "jquery.fileupload-audio.js",
jsplugin + "jquery.fileupload-video.js",
jsplugin + "jquery.fileupload-validate.js",
jsplugin + "jquery.fileupload-angular.js" };
styles = new string[] {
cssvendor + "gallery/css/blueimp-gallery.min.css",
cssplugin + "jquery.fileupload.css",
cssplugin + "jquery.fileupload-ui.css" };
bundles.Add(new ScriptBundle("~/backload/blueimp/angularjs").Include(scripts));
bundles.Add(new StyleBundle("~/backload/blueimp/angularjs/css").Include(styles));
// The following virtual path is for backward compatibility only and can be removed
bundles.Add(new ScriptBundle("~/bundles/fileUpload/angularjs/js").Include(scripts));
bundles.Add(new StyleBundle("~/bundles/fileUpload/angularjs/css").Include(styles));
#endregion
#region jQuery File Upload Plugin: jQueryUI theme
scripts = new string[] {
jsvendor + "templates/js/tmpl.min.js",
jsvendor + "loadimage/js/load-image.all.min.js",
jsvendor + "blob/js/canvas-to-blob.min.js",
jsvendor + "gallery/js/jquery.blueimp-gallery.min.js",
jsplugin + "jquery.iframe-transport.js",
jsplugin + "jquery.fileupload.js",
jsplugin + "jquery.fileupload-process.js",
jsplugin + "jquery.fileupload-image.js",
jsplugin + "jquery.fileupload-audio.js",
jsplugin + "jquery.fileupload-video.js",
jsplugin + "jquery.fileupload-validate.js",
jsplugin + "jquery.fileupload-ui.js",
jsplugin + "jquery.fileupload-jquery-ui.js" };
styles = new string[] {
cssvendor + "gallery/css/blueimp-gallery.min.css",
cssplugin + "jquery.fileupload.css",
cssplugin + "jquery.fileupload-ui.css" };
bundles.Add(new ScriptBundle("~/backload/blueimp/jqueryui").Include(scripts));
bundles.Add(new StyleBundle("~/backload/blueimp/jqueryui/css").Include(styles));
// The following virtual path is for backward compatibility only and can be removed
bundles.Add(new ScriptBundle("~/bundles/fileupload/jqueryui/BasicPlusUI/js").Include(scripts));
bundles.Add(new StyleBundle("~/bundles/fileupload/jqueryui/BasicPlusUI/css").Include(styles));
#endregion
#endregion
#region Fine Uploader
vendor = "widen";
plugin = "fineuploader";
// Fine Uploader from Widen Enterprises
jsvendor = string.Format("{0}/{1}/", jsroot, vendor);
jsplugin = string.Format("{0}{1}/js/", jsvendor, plugin);
cssvendor = string.Format("{0}/{1}/", cssroot, vendor);
cssplugin = string.Format("{0}{1}/", cssvendor, plugin);
// Simple and default theme
scripts = new string[] {
jsplugin + "fine-uploader.min.js" };
styles = new string[] {
cssplugin + "fine-uploader-new.min.css" };
bundles.Add(new ScriptBundle("~/backload/widen/fineuploader/simple").Include(scripts));
bundles.Add(new StyleBundle("~/backload/widen/fineuploader/simple/css").Include(styles));
// Gallery theme
styles = new string[] {
cssplugin + "fine-uploader-gallery.min.css",
cssplugin + "fine-uploader-new.min.css" };
bundles.Add(new ScriptBundle("~/backload/widen/fineuploader/gallery").Include(scripts));
bundles.Add(new StyleBundle("~/backload/widen/fineuploader/gallery/css").Include(styles));
#endregion
#region PlUpload
vendor = "moxie";
plugin = "plupload";
// Fine Uploader from Widen Enterprises
jsvendor = string.Format("{0}/{1}/", jsroot, vendor);
jsplugin = string.Format("{0}{1}/js/", jsvendor, plugin);
cssplugin = jsplugin;
// Simple theme
scripts = new string[] {
jsplugin + "plupload.full.min.js" };
bundles.Add(new ScriptBundle("~/backload/moxie/plupload/simple").Include(scripts));
// UI theme. We need to order the files, otherwise System.Web.Optimization produces a false order
scripts = new string[] {
jsplugin + "plupload.full.min.js",
jsplugin + "jquery.ui.plupload/jquery.ui.plupload.min.js" };
ScriptBundle scriptBundle = (ScriptBundle)new ScriptBundle("~/backload/moxie/plupload/ui").Include(scripts);
BackloadBundleOrderer orderer = new BackloadBundleOrderer();
scriptBundle.Orderer = orderer;
styles = new string[] {
cssplugin + "jquery.ui.plupload/css/jquery.ui.plupload.css" };
bundles.Add(scriptBundle);
bundles.Add(new StyleBundle("~/backload/moxie/plupload/ui/css").Include(styles));
#endregion
}
#region BackloadBundleOrderer
/// <summary>
/// Orders the scripts in the scripts like we added them.
/// </summary>
private class BackloadBundleOrderer : IBundleOrderer
{
/// <summary>
/// Old IBundleOrderer interface
/// </summary>
/// <param name="context">BundleContext</param>
/// <param name="files">IEnumerable</param>
/// <returns>Ordered files</returns>
public IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
{
return files;
}
/// <summary>
/// New IBundleOrderer interface
/// </summary>
/// <param name="context">BundleContext</param>
/// <param name="files">IEnumerable</param>
/// <returns>Ordered files</returns>
public IEnumerable<BundleFile> OrderFiles(BundleContext context, IEnumerable<BundleFile> files)
{
return files;
}
}
#endregion
}
}