public static IHtmlContent CssFiles(this IHtmlHelper html, IUrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null) { var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>(); return(new HtmlString(sayfaHeadOluşturucu.CssOluştur(urlHelper, konum, paketDosyaları))); }
public static MvcHtmlString Scripts(this HtmlHelper html, UrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null) { var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>(); return(MvcHtmlString.Create(sayfaHeadOluşturucu.ScriptsOluştur(urlHelper, konum, paketDosyaları))); }
public virtual void ScriptParçasıIlaveEt(KaynakKonumu konum, string parça, string debugSrc, bool pakettinDışında, bool isAsync) { if (!_scriptParçaları.ContainsKey(konum)) { _scriptParçaları.Add(konum, new List <ScriptReferenceMeta>()); } if (string.IsNullOrEmpty(parça)) { return; } if (string.IsNullOrEmpty(debugSrc)) { debugSrc = parça; } _scriptParçaları[konum].Insert(0, new ScriptReferenceMeta { pakettinDışında = pakettinDışında, IsAsync = isAsync, Parça = parça, DebugSrc = debugSrc }); }
public virtual void InlineScriptParçasıIlaveEt(KaynakKonumu konum, string script) { if (!_inlineScriptParçası.ContainsKey(konum)) { _inlineScriptParçası.Add(konum, new List <string>()); } if (string.IsNullOrEmpty(script)) { return; } _inlineScriptParçası[konum].Insert(0, script); }
public virtual void CssParçasıIlaveEt(KaynakKonumu konum, string parça, bool pakettinDışında = false) { if (!_cssParçaları.ContainsKey(konum)) { _cssParçaları.Add(konum, new List <CssReferenceMeta>()); } if (string.IsNullOrEmpty(parça)) { return; } _cssParçaları[konum].Insert(0, new CssReferenceMeta { pakettinDışında = pakettinDışında, Parça = parça }); }
public virtual void ScriptParçasıEkle(KaynakKonumu konum, string parça, bool pakettinDışında, bool isAsync) { if (!_scriptParçaları.ContainsKey(konum)) { _scriptParçaları.Add(konum, new List <ScriptReferenceMeta>()); } if (string.IsNullOrEmpty(parça)) { return; } _scriptParçaları[konum].Add(new ScriptReferenceMeta { pakettinDışında = pakettinDışında, IsAsync = isAsync, Parça = parça }); }
public virtual string InlineScriptsOluştur(IUrlHelper urlHelper, KaynakKonumu konum) { if (!_inlineScriptParçası.ContainsKey(konum) || _inlineScriptParçası[konum] == null) { return(""); } if (!_inlineScriptParçası.Any()) { return(""); } var sonuç = new StringBuilder(); foreach (var item in _inlineScriptParçası[konum]) { sonuç.Append(item); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); }
public virtual void CssParçasıEkle(KaynakKonumu konum, string parça, string debugSrc, bool pakettinDışında = false) { if (!_cssParçaları.ContainsKey(konum)) { _cssParçaları.Add(konum, new List <CssReferenceMeta>()); } if (string.IsNullOrEmpty(parça)) { return; } if (string.IsNullOrEmpty(debugSrc)) { debugSrc = parça; } _cssParçaları[konum].Add(new CssReferenceMeta { pakettinDışında = pakettinDışında, Parça = parça, DebugSrc = debugSrc }); }
public static void ScriptParçasıIlaveEt(this IHtmlHelper html, KaynakKonumu konum, string parça, string debugSrc = "", bool pakettenÇıkar = false, bool async = false) { var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>(); sayfaHeadOluşturucu.ScriptParçasıIlaveEt(konum, parça, debugSrc, pakettenÇıkar, async); }
public static void CssParçasıEkle(this IHtmlHelper html, KaynakKonumu konum, string parça, string debugSrc = "", bool pakettenÇıkar = false) { var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>(); sayfaHeadOluşturucu.CssParçasıEkle(konum, parça, debugSrc, pakettenÇıkar); }
public virtual string CssOluştur(UrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null) { if (!_cssParçaları.ContainsKey(konum) || _cssParçaları[konum] == null) { return(""); } if (!_cssParçaları.Any()) { return(""); } if (!paketDosyaları.HasValue) { //Herhangi bir değer belirtilmemişse ayarı kullanın paketDosyaları = _seoAyarları.CssPaketlemeyeIzinVer && BundleTable.EnableOptimizations; } if (paketDosyaları.Value) { var pakettenParçalar = _cssParçaları[konum] .Where(x => !x.pakettinDışında) .Select(x => x.Parça) .Distinct() .ToArray(); var paketinDışındakiParçalar = _cssParçaları[konum] .Where(x => x.pakettinDışında) .Select(x => x.Parça) .Distinct() .ToArray(); var sonuç = new StringBuilder(); if (pakettenParçalar.Length > 0) { // ÖNEMLİ: Sanal dizinlerdeki CSS paketlemeyi kullanma string paketSanalYolu = PaketSanalYolunuAl("~/bundles/styles/", ".css", pakettenParçalar); //paket oluştur lock (s_lock) { var paketIçin = BundleTable.Bundles.GetBundleFor(paketSanalYolu); if (paketIçin == null) { var paket = new StyleBundle(paketSanalYolu); //bundle.Transforms.Clear(); //sıralanmış olarak paket.Orderer = new PaketSıralayıcı(); //dosya uzantısı değiştirmelerini devre dışı bırak. Bir geliştirici tarafından belirtilen betikleri işle paket.EnableFileExtensionReplacements = false; foreach (var ptb in pakettenParçalar) { paket.Include(ptb, CssDönüşümüAl()); } BundleTable.Bundles.Add(paket); } } //paket parçaları sonuç.AppendLine(Styles.Render(paketSanalYolu).ToString()); } //paketin dışındaki parçalar foreach (var item in paketinDışındakiParçalar) { sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(item), MimeTipleri.TextCss); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); } else { //paketleme devredışı var sonuç = new StringBuilder(); foreach (var yol in _cssParçaları[konum].Select(x => x.Parça).Distinct()) { sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(yol), MimeTipleri.TextCss); sonuç.AppendLine(); } return(sonuç.ToString()); } }
public virtual string ScriptsOluştur(UrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null) { if (!_scriptParçaları.ContainsKey(konum) || _scriptParçaları[konum] == null) { return(""); } if (!_scriptParçaları.Any()) { return(""); } if (!paketDosyaları.HasValue) { //Herhangi bir değer belirtilmemişse ayarı kullanın paketDosyaları = _seoAyarları.JSPaketlemeyeIzinVer && BundleTable.EnableOptimizations; } if (paketDosyaları.Value) { var pakettenParçalar = _scriptParçaları[konum] .Where(x => !x.pakettinDışında) .Select(x => x.Parça) .Distinct() .ToArray(); var paketinDışındakiParçalar = _scriptParçaları[konum] .Where(x => x.pakettinDışında) .Select(x => new { x.Parça, x.IsAsync }) .Distinct() .ToArray(); var sonuç = new StringBuilder(); if (pakettenParçalar.Length > 0) { string paketSanalYolu = PaketSanalYolunuAl("~/bundles/scripts/", ".js", pakettenParçalar); //paket oluştur lock (s_lock) { var paketIçin = BundleTable.Bundles.GetBundleFor(paketSanalYolu); if (paketIçin == null) { var paket = new ScriptBundle(paketSanalYolu); //bundle.Transforms.Clear(); //sıralanmış olarak paket.Orderer = new PaketSıralayıcı(); //disable file extension replacements. renders scripts which were specified by a developer paket.EnableFileExtensionReplacements = false; paket.Include(pakettenParçalar); BundleTable.Bundles.Add(paket); } } //paket parçaları sonuç.AppendLine(Scripts.Render(paketSanalYolu).ToString()); } //paketten olmayan parçalar foreach (var item in paketinDışındakiParçalar) { sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(item.Parça), MimeTipleri.TextJavascript, item.IsAsync ? "async " : ""); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); } else { //bundling is disabled var sonuç = new StringBuilder(); foreach (var item in _scriptParçaları[konum].Select(x => new { x.Parça, x.IsAsync }).Distinct()) { sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(item.Parça), MimeTipleri.TextJavascript, item.IsAsync ? "async " : ""); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); } }
public static void CssParçasıIlaveEt(this HtmlHelper html, KaynakKonumu konum, string parça, bool pakettenÇıkar = false) { var sayfaHeadOluşturucu = EngineContext.Current.Resolve <ISayfaHeadOluşturucu>(); sayfaHeadOluşturucu.CssParçasıIlaveEt(konum, parça, pakettenÇıkar); }
public virtual string CssOluştur(IUrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null) { if (!_cssParçaları.ContainsKey(konum) || _cssParçaları[konum] == null) { return(""); } if (!_cssParçaları.Any()) { return(""); } var debugModel = _hostingEnvironment.IsDevelopment(); if (!paketDosyaları.HasValue) { //Herhangi bir değer belirtilmemişse ayarı kullanın paketDosyaları = _seoAyarları.CssPaketlemeyeIzinVer; } if (urlHelper.ActionContext.HttpContext.Request.PathBase.HasValue) { paketDosyaları = false; } if (paketDosyaları.Value) { var pakettenParçalar = _cssParçaları[konum] .Where(x => !x.pakettinDışında) .Distinct() .ToArray(); var paketinDışındakiParçalar = _cssParçaları[konum] .Where(x => x.pakettinDışında) .Distinct() .ToArray(); var sonuç = new StringBuilder(); if (pakettenParçalar.Length > 0) { // ÖNEMLİ: Sanal dizinlerdeki CSS paketlemeyi kullanma Directory.CreateDirectory(Path.Combine(_hostingEnvironment.WebRootPath, "bundles")); var bundle = new Bundle(); foreach (var item in pakettenParçalar) { var src = debugModel ? item.DebugSrc : item.Parça; src = urlHelper.Content(src); var srcPath = Path.Combine(_hostingEnvironment.ContentRootPath, src.Remove(0, 1).Replace("/", "\\")); if (File.Exists(srcPath)) { src = src.Remove(0, 1); } else { src = "wwwroot/" + src; } bundle.InputFiles.Add(src); } //output file var outputFileName = PaketSanalYolunuAl(pakettenParçalar.Select(x => { return(debugModel ? x.DebugSrc : x.Parça); }).ToArray()); bundle.OutputFileName = "wwwroot/bundles/" + outputFileName + ".css"; //save var configFilePath = _hostingEnvironment.ContentRootPath + "\\" + outputFileName + ".json"; bundle.FileName = configFilePath; //paket oluştur lock (s_lock) { var cacheKey = $"Rota.minification.shouldrebuild.css-{outputFileName}"; var shouldRebuild = _cacheManager.Al <bool>(cacheKey, RecheckBundledFilesPeriod, () => true); if (shouldRebuild) { //process _processor.Process(configFilePath, new List <Bundle> { bundle }); _cacheManager.Ayarla(cacheKey, false, RecheckBundledFilesPeriod); } } sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content("~/bundles/" + outputFileName + ".min.css"), MimeTipleri.TextCss); sonuç.Append(Environment.NewLine); } foreach (var item in pakettenParçalar) { var src = debugModel ? item.DebugSrc : item.Parça; sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(src), MimeTipleri.TextCss); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); } else { //paketleme devredışı var sonuç = new StringBuilder(); foreach (var item in _cssParçaları[konum].Distinct()) { var src = debugModel ? item.DebugSrc : item.Parça; sonuç.AppendFormat("<link href=\"{0}\" rel=\"stylesheet\" type=\"{1}\" />", urlHelper.Content(src), MimeTipleri.TextCss); sonuç.AppendLine(); } return(sonuç.ToString()); } }
public virtual string ScriptsOluştur(IUrlHelper urlHelper, KaynakKonumu konum, bool?paketDosyaları = null) { if (!_scriptParçaları.ContainsKey(konum) || _scriptParçaları[konum] == null) { return(""); } if (!_scriptParçaları.Any()) { return(""); } var debugModel = _hostingEnvironment.IsDevelopment(); if (!paketDosyaları.HasValue) { //Herhangi bir değer belirtilmemişse ayarı kullanın paketDosyaları = _seoAyarları.JSPaketlemeyeIzinVer; } if (paketDosyaları.Value) { var pakettenParçalar = _scriptParçaları[konum] .Where(x => !x.pakettinDışında) .Distinct() .ToArray(); var paketinDışındakiParçalar = _scriptParçaları[konum] .Where(x => x.pakettinDışında) .Distinct() .ToArray(); var sonuç = new StringBuilder(); if (pakettenParçalar.Length > 0) { //paket oluştur Directory.CreateDirectory(Path.Combine(_hostingEnvironment.WebRootPath, "bundles")); var bundle = new Bundle(); foreach (var item in pakettenParçalar) { new PathString(urlHelper.Content(debugModel ? item.DebugSrc : item.Parça)) .StartsWithSegments(urlHelper.ActionContext.HttpContext.Request.PathBase, out PathString path); var src = path.Value.TrimStart('/'); //check whether this file exists, if not it should be stored into /wwwroot directory if (!File.Exists(Path.Combine(_hostingEnvironment.ContentRootPath, src.Replace("/", "\\")))) { src = $"wwwroot/{src}"; } bundle.InputFiles.Add(src); } //output file var outputFileName = PaketSanalYolunuAl(pakettenParçalar.Select(x => { return(debugModel ? x.DebugSrc : x.Parça); }).ToArray()); bundle.OutputFileName = "wwwroot/bundles/" + outputFileName + ".js"; //save var configFilePath = _hostingEnvironment.ContentRootPath + "\\" + outputFileName + ".json"; bundle.FileName = configFilePath; lock (s_lock) { var cacheKey = $"Rota.minification.shouldrebuild.css-{outputFileName}"; var shouldRebuild = _cacheManager.Al <bool>(cacheKey, RecheckBundledFilesPeriod, () => true); if (shouldRebuild) { //store json file to see a generated config file (for debugging purposes) //BundleHandler.AddBundle(configFilePath, bundle); //process _processor.Process(configFilePath, new List <Bundle> { bundle }); _cacheManager.Ayarla(cacheKey, false, RecheckBundledFilesPeriod); } } sonuç.AppendFormat("<script src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content("~/bundles/" + outputFileName + ".min.js"), MimeTipleri.TextJavascript); sonuç.Append(Environment.NewLine); } //paketten olmayan parçalar foreach (var item in paketinDışındakiParçalar) { var src = debugModel ? item.DebugSrc : item.Parça; sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(src), MimeTipleri.TextJavascript, item.IsAsync ? "async " : ""); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); } else { //bundling is disabled var sonuç = new StringBuilder(); foreach (var item in _scriptParçaları[konum].Distinct()) { var src = debugModel ? item.DebugSrc : item.Parça; sonuç.AppendFormat("<script {2}src=\"{0}\" type=\"{1}\"></script>", urlHelper.Content(src), MimeTipleri.TextJavascript, item.IsAsync ? "async " : ""); sonuç.Append(Environment.NewLine); } return(sonuç.ToString()); } }