/// <summary> /// Combines the content of the CSS files. /// </summary> /// <param name="combiner">The combiner.</param> /// <returns></returns> private string CombineCssFileContent(CombinerConfig combiner) { var resolver = new CssRelativeUrlResolver(AppDomain.CurrentDomain.BaseDirectory, new Uri(EngineContext.ApplicationPath + "/", UriKind.Relative)); PostProcessScript postProcess = resolver.Resolve; return(CombineFileContent(combiner.CssFiles, postProcess)); }
/// <summary> /// Called by the framework so the component can /// render its content /// </summary> public override void Render() { var combiner = new CombinerConfig(AppDomain.CurrentDomain.BaseDirectory, EngineContext.ApplicationPath); PropertyBag["combiner"] = combiner; // Evaluate the component body, without output RenderBody(new StringWriter()); var key = (string) ComponentParams["key"]; var cssKey = key + "css"; if (!ScriptBuilder.Concatenate) { foreach (var file in combiner.CssFiles) RenderCSS(combiner.Relative(file)); foreach (var file in combiner.JavascriptFiles) RenderJavascript(combiner.Relative(file)); } else { var cssHash = CalculateChangeSetHash(combiner.CssFiles); var javascriptHash = CalculateChangeSetHash(combiner.JavascriptFiles); var resourceRegistry = EngineContext.Services.StaticResourceRegistry; if (!resourceRegistry.Exists(key, null, javascriptHash.ToString())) { RegisterJavascript(combiner, key, resourceRegistry, javascriptHash); } if (!resourceRegistry.Exists(cssKey, null, cssHash.ToString())) { RegisterCss(combiner, resourceRegistry, cssKey, cssHash); } var extension = String.Empty; if (EngineContext.Services.UrlBuilder.UseExtensions) { extension = "." + EngineContext.UrlInfo.Extension; } if (cssHash != 0) { var cssFullName = string.Format("{0}/MonoRail/Files/BuiltJS{1}?name={2}&version={3}", EngineContext.ApplicationPath, extension, cssKey, cssHash); RenderCSS(cssFullName); } if (javascriptHash != 0) { var javascriptFullName = string.Format("{0}/MonoRail/Files/BuiltJS{1}?name={2}&version={3}", EngineContext.ApplicationPath, extension, key, javascriptHash); RenderJavascript(javascriptFullName); } } }
private RouteComponent createCombiner(DataTypeBase source, bool rss) { if (source.attributes.length() <= 0) { throw new IllegalRouteOperationException(string.Format("Cannot apply \'{0}\' to null data", !rss ? "rms" : "rss")); } else if (source.eventConfig[0] == (byte)SENSOR_FUSION) { throw new IllegalRouteOperationException(string.Format("Cannot apply \'{0}\' to sensor fusion data", !rss ? "rms" : "rss")); } var config = new CombinerConfig(source.attributes, rss); var next = source.transform(config, state.bridge.GetModule <IDataProcessor>() as DataProcessor); return(postCreate(next.Item2, new NullEditor(config, next.Item1, state.bridge))); }
/// <summary> /// Registers the javascript. /// </summary> /// <param name="combiner">The combiner.</param> /// <param name="key">The key.</param> /// <param name="resourceRegistry">The resource registry.</param> /// <param name="javascriptHash">The javascript hash.</param> private void RegisterJavascript(CombinerConfig combiner, string key, IStaticResourceRegistry resourceRegistry, long javascriptHash) { if (combiner.JavascriptFiles.Count < 1) { return; } var script = CombineJSFileContent(combiner.JavascriptFiles); if (ScriptBuilder.Minify) { script = ScriptBuilder.CompressJavascript(script); } var staticContentResource = new StaticContentResource(script); resourceRegistry.RegisterCustomResource(key, null, javascriptHash.ToString(), staticContentResource, "application/x-javascript", DateTime.Now); }
/// <summary> /// Registers the CSS. /// </summary> /// <param name="combiner">The combiner.</param> /// <param name="resourceRegistry">The resource registry.</param> /// <param name="cssKey">The CSS key.</param> /// <param name="cssHash">The CSS hash.</param> private void RegisterCss(CombinerConfig combiner, IStaticResourceRegistry resourceRegistry, string cssKey, long cssHash) { if (combiner.CssFiles.Count < 1) { return; } var css = CombineCssFileContent(combiner); if (ScriptBuilder.Minify) { css = ScriptBuilder.CompressCSS(css); } var cssResource = new StaticContentResource(css); resourceRegistry.RegisterCustomResource(cssKey, null, cssHash.ToString(), cssResource, "text/css", DateTime.Now); }
/// <summary> /// Called by the framework so the component can /// render its content /// </summary> public override void Render() { var combiner = new CombinerConfig(AppDomain.CurrentDomain.BaseDirectory, EngineContext.ApplicationPath); PropertyBag["combiner"] = combiner; // Evaluate the component body, without output RenderBody(new StringWriter()); var key = (string)ComponentParams["key"]; var cssKey = key + "css"; if (!ScriptBuilder.Concatenate) { foreach (var file in combiner.CssFiles) { RenderCSS(combiner.Relative(file)); } foreach (var file in combiner.JavascriptFiles) { RenderJavascript(combiner.Relative(file)); } } else { var cssHash = CalculateChangeSetHash(combiner.CssFiles); var javascriptHash = CalculateChangeSetHash(combiner.JavascriptFiles); var resourceRegistry = EngineContext.Services.StaticResourceRegistry; if (!resourceRegistry.Exists(key, null, javascriptHash.ToString())) { RegisterJavascript(combiner, key, resourceRegistry, javascriptHash); } if (!resourceRegistry.Exists(cssKey, null, cssHash.ToString())) { RegisterCss(combiner, resourceRegistry, cssKey, cssHash); } var extension = String.Empty; if (EngineContext.Services.UrlBuilder.UseExtensions) { extension = "." + EngineContext.UrlInfo.Extension; } if (cssHash != 0) { var cssFullName = string.Format("{0}/MonoRail/Files/BuiltJS{1}?name={2}&version={3}", EngineContext.ApplicationPath, extension, cssKey, cssHash); RenderCSS(cssFullName); } if (javascriptHash != 0) { var javascriptFullName = string.Format("{0}/MonoRail/Files/BuiltJS{1}?name={2}&version={3}", EngineContext.ApplicationPath, extension, key, javascriptHash); RenderJavascript(javascriptFullName); } } }
/// <summary> /// Combines the content of the CSS files. /// </summary> /// <param name="combiner">The combiner.</param> /// <returns></returns> private string CombineCssFileContent(CombinerConfig combiner) { var resolver = new CssRelativeUrlResolver(AppDomain.CurrentDomain.BaseDirectory, new Uri(EngineContext.ApplicationPath + "/", UriKind.Relative)); PostProcessScript postProcess = resolver.Resolve; return CombineFileContent(combiner.CssFiles, postProcess); }
/// <summary> /// Registers the javascript. /// </summary> /// <param name="combiner">The combiner.</param> /// <param name="key">The key.</param> /// <param name="resourceRegistry">The resource registry.</param> /// <param name="javascriptHash">The javascript hash.</param> private void RegisterJavascript(CombinerConfig combiner, string key, IStaticResourceRegistry resourceRegistry, long javascriptHash) { if (combiner.JavascriptFiles.Count < 1) return; var script = CombineJSFileContent(combiner.JavascriptFiles); if (ScriptBuilder.Minify) script = ScriptBuilder.CompressJavascript(script); var staticContentResource = new StaticContentResource(script); resourceRegistry.RegisterCustomResource(key, null, javascriptHash.ToString(), staticContentResource, "application/x-javascript", DateTime.Now); }
/// <summary> /// Registers the CSS. /// </summary> /// <param name="combiner">The combiner.</param> /// <param name="resourceRegistry">The resource registry.</param> /// <param name="cssKey">The CSS key.</param> /// <param name="cssHash">The CSS hash.</param> private void RegisterCss(CombinerConfig combiner, IStaticResourceRegistry resourceRegistry, string cssKey, long cssHash) { if (combiner.CssFiles.Count < 1) return; var css = CombineCssFileContent(combiner); if (ScriptBuilder.Minify) css = ScriptBuilder.CompressCSS(css); var cssResource = new StaticContentResource(css); resourceRegistry.RegisterCustomResource(cssKey, null, cssHash.ToString(), cssResource, "text/css", DateTime.Now); }