/// <summary> /// Registers the files the specified path prefix. /// </summary> /// <param name="pathPrefix">The path prefix to be applied to all paths.</param> /// <param name="virtualPaths">The virtual path list.</param> public void Register(String pathPrefix, params string[] virtualPaths) { if (virtualPaths == null || virtualPaths.Length == 0) { virtualPaths = new[] { pathPrefix }; pathPrefix = ""; } if (External) { package.AddFiles(virtualPaths.Select(vpath => DextopUtil.CombinePaths(pathPrefix, vpath))); } else { if (package.Module.Application.PreprocessingEnabled && !package.Module.Application.PreprocessorMode && Concate) { return; } foreach (var vpath in virtualPaths) { package.AddFiles(package.SearchServer(DextopUtil.CombinePaths(pathPrefix, vpath), ".js", true)); } } }
/// <summary> /// Registers the CSS files with specified virtual paths. /// </summary> /// <param name="virtualPaths">The virtual paths.</param> public void Register(params string[] virtualPaths) { foreach (var vpath in virtualPaths) { package.AddFiles(package.SearchServer(vpath, ".css", true)); } }
/// <summary> /// Optimizes the JS files inside the package. /// </summary> /// <param name="context">The context.</param> public void Optimize(DextopResourceOptimizationContext context) { if (!Concate) { AppendCacheBusters(package.Files); if (package.Localizations != null) { foreach (var pl in package.Localizations) { AppendCacheBusters(pl.Value); } } return; } var pkg = new DextopResourcePackage(context.OptimizationOutputModule); var fileName = package.Module.ModuleName + "-" + PackageName + ".js"; var filePaths = package.Files.Select(a => package.Module.MapPath(a)).ToArray(); DateTime lastWrite; int cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths, out lastWrite); var outputFile = new FileInfo(context.OptimizationOutputModule.MapPath(fileName)); if (!SmartOverwrite || !outputFile.Exists || outputFile.LastWriteTime <= lastWrite) { var js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) { js = DextopFileUtil.MinifyJs(js, Obfuscate); } DextopFileUtil.WriteTextFile(outputFile.FullName, js); } pkg.AddFiles(new[] { fileName + "?cb=" + cacheBuster }); if (package.Localizations != null) { foreach (var loc in package.Localizations) { fileName = package.Module.ModuleName + "-" + PackageName + String.Format(".locale-{0}.js", loc.Key); filePaths = loc.Value.Select(a => package.Module.MapPath(a)).ToArray(); cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths, out lastWrite); outputFile = new FileInfo(context.OptimizationOutputModule.MapPath(fileName)); if (!SmartOverwrite || !outputFile.Exists || outputFile.LastWriteTime <= lastWrite) { var js = DextopFileUtil.ConcateFiles(filePaths); js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) { js = DextopFileUtil.MinifyJs(js, Obfuscate); } DextopFileUtil.WriteTextFile(outputFile.FullName, js); } pkg.AddLocalization(loc.Key, new[] { fileName + "?cb=" + cacheBuster }); } } package = pkg; }
/// <summary> /// Registers the files the specified path prefix. /// </summary> /// <param name="pathPrefix">The path prefix to be applied to all paths.</param> /// <param name="virtualPaths">The virtual path list.</param> public void Register(String pathPrefix, params string[] virtualPaths) { if (virtualPaths == null || virtualPaths.Length == 0) { virtualPaths = new[] { pathPrefix }; pathPrefix = ""; } if (External) { package.AddFiles(virtualPaths.Select(vpath => DextopUtil.CombinePaths(pathPrefix, vpath))); } else { foreach (var vpath in virtualPaths) { package.AddFiles(package.SearchServer(DextopUtil.CombinePaths(pathPrefix, vpath), ".js", true)); } } }
/// <summary> /// Optimizes the JS files inside the package. /// </summary> /// <param name="context">The context.</param> public void Optimize(DextopResourceOptimizationContext context) { if (External) return; if (Concate) { var pkg = new DextopResourcePackage(context.OptimizationOutputModule); var fileName = package.Module.ModuleName + "-" + PackageName + ".js"; if (!context.FakeOptimization) { var filePaths = package.Files.Select(a => package.Module.MapPath(a)).ToArray(); DateTime lastWrite; int cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths, out lastWrite); var outputFile = new FileInfo(context.OptimizationOutputModule.MapPath(fileName)); if (!SmartOverwrite || !outputFile.Exists || outputFile.LastWriteTime <= lastWrite) { var js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) js = DextopFileUtil.MinifyJs(js, Obfuscate); DextopFileUtil.WriteTextFile(outputFile.FullName, js); } } pkg.AddFiles(new[] { fileName }); if (package.Localizations != null) foreach (var loc in package.Localizations) { fileName = package.Module.ModuleName + "-" + PackageName + String.Format(".locale-{0}.js", loc.Key); if (!context.FakeOptimization) { var filePaths = loc.Value.Select(a => package.Module.MapPath(a)).ToArray(); DateTime lastWrite; var cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths, out lastWrite); var outputFile = new FileInfo(context.OptimizationOutputModule.MapPath(fileName)); if (!SmartOverwrite || !outputFile.Exists || outputFile.LastWriteTime <= lastWrite) { var js = DextopFileUtil.ConcateFiles(filePaths); js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) js = DextopFileUtil.MinifyJs(js, Obfuscate); DextopFileUtil.WriteTextFile(outputFile.FullName, js); } fileName += "?cb=" + cacheBuster; } pkg.AddLocalization(loc.Key, new[] { fileName }); } package = pkg; } AppendCacheBusters(package.Files); if (package.Localizations != null) foreach (var pl in package.Localizations) AppendCacheBusters(pl.Value); }
/// <summary> /// Optimizes the JS files inside the package. /// </summary> /// <param name="context">The context.</param> public void Optimize(DextopResourceOptimizationContext context) { if (!Concate) { AppendCacheBusters(package.Files); if (package.Localizations != null) foreach (var pl in package.Localizations) AppendCacheBusters(pl.Value); return; } var pkg = new DextopResourcePackage(context.OptimizationOutputModule); var fileName = package.Module.ModuleName + "-" + PackageName + ".js"; var filePaths = package.Files.Select(a => package.Module.MapPath(a)).ToArray(); int cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths); var js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) js = DextopFileUtil.MinifyJs(js, Obfuscate); DextopFileUtil.WriteTextFile(context.OptimizationOutputModule.MapPath(fileName), js); pkg.AddFiles(new[] { fileName + "?cb=" + cacheBuster }); if (package.Localizations!=null) foreach (var loc in package.Localizations) { fileName = package.Module.ModuleName + "-" + PackageName + String.Format(".locale-{0}.js", loc.Key); filePaths = loc.Value.Select(a => package.Module.MapPath(a)).ToArray(); cacheBuster = DextopFileUtil.CalculateCacheBuster(filePaths); js = DextopFileUtil.ConcateFiles(filePaths); if (Minify) js = DextopFileUtil.MinifyJs(js, Obfuscate); DextopFileUtil.WriteTextFile(context.OptimizationOutputModule.MapPath(fileName), js); pkg.AddLocalization(loc.Key, new[] { fileName + "?cb=" + cacheBuster }); } package = pkg; }